Probleme mit einem seeeeehr einfachen Script
Hallo Leute, es ist total peinlich, aber ich habe gerade riesige Probleme mit einem eigentlich total einfachen Script.
Die Idee ist folgende: Der Spieler aktiviert einen Activator. Je nachdem, wie die Skills (GetAV, nicht GetBaseAV, das ist wichtig) des Spielercharakter sind, fügt das Spiel ihm eine neue Ability hinzu, welche selbst ebenfalls die Skills verändert.
Wenn der Spieler jetzt ein zweites Mal den Activator aktiviert, würde das Script ja auf Basis der durch seine eigens hinzugefügte Ability veränderten Skills seine Rechnungen durchführen, was in reinem Chaos enden würde - das heißt, die Ability muss vor der Rechnung auf jeden Fall entfernt werden. (Sollte ja kein Problem sein, danach wird sie ja wieder hinzugefügt.)
In der Theorie nicht schwer und sieht auch nicht schwer aus, nur gibt's ein Problem: Es funktioniert nicht. Wenn ich das Script das zweite Mal aktiviere, entfernt es die Ability vollständig, ohne sie am Ende wieder hinzuzufügen. Beim dritten Mal funktioniert es dann wieder. Immer abwechselnd.
Hier das Skript:
Code:
scn HFCTEST
short HFCStage
Begin OnActivate
If HFCStage == 0
If ( Player.HasSpell HFCAbility == 1 )
Player.RemoveSpell HFCAbility
EndIf
set HFCStage to 10
endif
if HFCStage == 10
PrintToConsole "We get to the second stage of the script."
; Here is a long calculation which needs to be based on the player's skill WITHOUT the Ability added by this script
set HFCStage to 20
endif
if HFCStage == 20
PrintToConsole "Adding the ability."
Player.AddSpell HFCAbility
set HFCStage to 0
endif
End
Die verschiedenen Stages sind *eigentlich* ja komplett unnötig, aber ich benutze sie momentan als eine Art Versicherung, dass die Zeilen wirklich nacheinander ablaufen. Was sie allem Anschein nach auch tun.
Der Check in Stage 0, ob der Spieler die Ability hat oder nicht, sollte ebenfalls unwichtig sein - wenn er sie nicht hat, entfernt das Script eben eine Ability, die gar nicht da ist. Der steht da allerdings drin, weil ich die Vermutung habe, dass das Script so lange wartet, bis es eine Ability zum Entfernen hat.
Die Vermutung sollte eigentlich durch diesen Check widerlegt sein, aber ich bin mir noch nicht ganz sicher... allerdings wüsste ich in dem Fall auch nicht, was ich tun kann.