Ohne es mir durchgerechnet zu haben:
Nimm einfach zwei Variablen. Die eine mit dem tatsächlichen Wert (bspw. 400), die andere mit dem, der angezeigt wird (255).
Wenn du jetzt bspw. ein Schwert mit 150 Angriff ablegst, rechnest du den tatsächlichen Wert -150 (wären hier dann ja 250), setzt den begrenzten Wert neu und gut ist.
Der Maker hat standardmäßig 5000 Variablen, die würde ich ausnutzen anstatt jetzt x Zeilen Code da reinzufriemeln.
Dem Spieler wird eben nur der begrenzte Wert angezeigt, und wenn du irgendwelchen Spökes hast á la "Dieser Machttrank steigert die Angriffskraft um 30%" rechnest du auch mit dem begrenzten Wert.
Ob du da jetzt noch Zusatzschwerter, Kraftarmreife oder Vitaminsirup dazuaddierst ist ja egal. Letztlich begrenzt der begrenzte Wert das Ganze wieder, ohne, dass du beim Zurückrechnen Probleme bekommst, da du dafür ja den tatsächlichen Wert nimmst.
Sind nur zwei Variablen und weitaus weniger Code. (:
Ich halte es für am wenigsten fehleranfällig den aktuellen Wert zu berechnen indem man die Werte der ausgerüsteten Gegenstände aufaddiert anstatt bei jedem Wechsel -alt+neu zu machen.
oder ein common event dafür verschwenden, ala ~GetCurStrength.
Darin eine temporäre variable auf den Wert der Strength vari schalten, und bei bedarf limitieren. Bin grade nicht mehr so maker confirm, sollte aber in etwa so gehen.
Dann im Code einfach die berechnungs vari auf den wert von TempVari setzen, und gut ist. So hast du wenigstens nur eine Stelle zu ändern, falls du das möchtest, und keine 2 Variablen, die dich dauerhaft blocken, sondern nur eine.
mfg
EDIT:
falls du jetzt nicht weißt, welchen vorteil das mit sich bringt:
ich weiß nciht, wie du scriptest, letztendlich solltest du aber vermeiden, mit einer variable zu rechnen, die überall verändert wird. Das ist für die fehlersuche ziemlich wichtig, das du weißt, wo du welche variable änderst. Deswegen würde ich am anfang eines großen code abschnitts immer mit temp variablen arbeiten, die die werte der richtigen variabeln enthalten, und diese über diese Getter common events bestücken. So hast du 1. nur einen code, den du im notfall überarbeiten musst (weil bei events die auf jeder karte vorkommen, die limitierung seperat zu ändern ist ehrlich gesagt ziemlich scheiße...) und 2. eine gewisse sicherheit dabei, das du dir deine wirkliche Variabel mit dem richtigen wert nicht verhaust. Ich kenn das nur zu gut, bei viel code ist die Reihenfolge der Variable schnell mal verändert, dann ist Vari[1] = Vari[2] auch gerne mal Vari[2] = Vari[1], und das ist uncool. Ist zumindest meine methode, und wirklich viele zusätzliche varis wasted man damit auch nicht, zumal es notfalls immer noch solche patches ~ala GibMir15kVaris gibt. zumal kannst du solche temp varis auch immer wieder verwenden (ist also nicht auf ein script limitiert, außer es looped ohne neu gesetzt zu werden).
Hoffe es war halbwegs verständlich was ich sagen möchte :P