Wie bei den
Nehrim Bugs bereits erwähnt, ist die Wahrscheinlichkeit, einen Gegner durch einen erneuten Eisangriff mit Einfrierungseffekt wieder aufzutauen sehr hoch.
Hier eines der Einfrierungsskripts:
- [+]
- scn SpellEinfrieren18Prozent
Short Wahrscheinlichkeit
Ref Target
begin ScriptEffectStart
;Initialisierung
Set Target to GetSelf
;Kontrolle
if (Target.isActor == 0) || (Target.getDead == 1) || (Target.isRidingHorse == 1)
Return
endif
;Start
Set Wahrscheinlichkeit to 1 + GetRandomPercent
If ( Wahrscheinlichkeit <= 18 )
; Target.Setghost 1
SetRestrained 1
Target.PlayMagicShaderVisuals effectGefrohren
endif
end
begin ScriptEffectFinish
SetRestrained 0
;Target.Setghost 0
Target.StopMagicShaderVisuals effectGefrohren
end
Das Problem ist, dass "ScriptEffectFinish" immer ausgeführt wird, wenn der Zauber erneut auf ein Ziel gesprochen wird.
Wenn man diesen Block allerdings abändert, besteht die Gefahr, dass das Ziel ewig eingefroren bleibt.
Mein Gedanke war eine Timer-Variable einzubauen.
Mein Kollege meinte zuerst es würde reichen, wenn man im StartBlock bei der Abfrage einfach "|| GetRestrained" einfügt, allerdings funktioniert das wie zu erwarten nicht.
Denn schließlich wird der Restrained-Zustand mit ScriptEffectFinish wieder aufgehoben und dieser Block wird bei jedem neuen Treffer durch diesen Zauber ausgeführt, sofern der Einfierungseffekt noch Wirkung zeigt.
Außerdem wird durch das Return-Statement der Finish-Block nicht ausgeführt was wiederum im ewig gefrorenen Zustand endet.
Das mit der Timer-Variable ist allerdings auch recht knifflig umzusetzen. Die bisherigen Versuche führten auch zu einem unendlich eingefrorenen Zustand des Gegners.
Der Timer wurde im neuen Block "ScriptEffectUpdate" berechnet, allerdings war diese Lösung eben keine Lösung
Wer Vorschläge hat, nur raus damit
Ansonsten wird dieses Skipt wohl so bleiben wie es ist.