Bonjour,
Personnellement j’opterais plutôt pour un « OnCombatStateChanged »
Mais par contre je passerait par une quête et non un magic effect :
1)je créerai une quête qui se lance automatiquement(start game enabled) ;
2)je créerai un alias pointant sur le player ;
3)je mettrai un script sur cet alias testant les changements de statut du combat.
4)Je créerai deux stages dans cette quête :
•Le premier stage serait appelé par le script de l’alias quand le player entre en combat et
ajouterait (via script dans le fragment)les bonus dont tu parlais (remontée de l'endurance + vigueur)
•Le second serait appelé par le script de l’alias quand le player sort de combat et enlèverait les bonus
Voila une ébauche du script que je placerais sur l’alias_Player :
Code : Tout sélectionner
Event OnCombatStateChanged(Actor akTarget, int aeCombatState)
if (akTarget == Game.GetPlayer())
if (aeCombatState == 0)
LaQuete.SetStage(10) ;stage 10 appelé quand le player n’est pas en combat
elseif (aeCombatState == 1)
LaQuete.SetStage(20) ;stage 20 appelé quand le player entre en combat
endIf
endIf
endEvent
Voila une ébauche du script que je placerais dans le fragment de stage
10 20:
Code : Tout sélectionner
Alias_Player.GetActorReference.AddSpell(Sort_ajoutant_endurance, false)
Alias_Player.GetActorReference.AddSpell(Sort_ajoutant_vigueur, false)
Voila une ébauche du script que je placerais dans le fragment de stage 10 :
Code : Tout sélectionner
Alias_Player.GetActorReference.RemoveSpell(Sort_ajoutant_endurance, false)
Alias_Player.GetActorReference.RemoveSpell(Sort_ajoutant_vigueur, false)
Pour tous ces scripts tu prendras soin de remplir les références.
J’espère que cela t’aidera,
Daan.
PS : j’ai fais tous ça de tête et je suis loin d’être un expert il se peux donc qu’il y est des erreurs. Donc n’hésite pas a revérifier tous ça et a le faire a ta sauce.
EDIT:j'ai corrigé une petite erreur plus haut , c'est stage 20 et pas 10.