✔️ Signaux génériques#
Un signal est une condition qui va permettre, s’il est capté, aux créatures d’activer un comportement spéficique.
Le jeu en possède plusieurs comme HitBy, Help, OnCreation…
Ils possèdent deux limites :
Ils sont pour la plupart spécifique à la créature
Si on rate le signal, c’est trop tard
On utilisant les variables GLOBAL, on a une alternative pour arriver à nos fins.
IF
//# Script quelqueconque
THEN
RESPONSE #1
SetGlobal("BCS_SIGNAL_IsActive", "GLOBAL", 1)
//# …
SetGlobal("BCS_SIGNAL_IsActive", "GLOBAL", 0)
END
//# Script du personnage
//# On active localement la réponse au signal global
IF
Global("BCS_SIGNAL_IsActive", "GLOBAL", 1)
Global("BCS_SIGNAL_IsActived", "LOCALS", 0)
THEN
RESPONSE #1
SetGlobal("BCS_SIGNAL_IsActived", "LOCALS", 1)
//# …
END
//# À la fin du signal on désactive la variable LOCALS
IF
Global("BCS_SIGNAL_IsActive", "GLOBAL", 0)
!Global("BCS_SIGNAL_IsActived", "LOCALS", 0)
THEN
RESPONSE #1
SetGlobal("BCS_SIGNAL_IsActived", "LOCALS", 0)
END
On active le script qu’une seule fois par créature.
L’activation et la désactivation de la variable GLOBAL doivent être gérées manuellement (pas nécessairement dans le même bloc).
IF
//# Script quelqueconque
THEN
RESPONSE #1
SetGlobalTimer("BCS_SIGNAL_Timer", "GLOBAL", ONE_ROUND)
END
//# Script du personnage
//# On active la réponse au signal
IF
!GlobalTimerExpired("BCS_SIGNAL_Timer", "GLOBAL")
Global("BCS_SIGNAL_IsActived", "LOCALS", 0)
THEN
RESPONSE #1
SetGlobal("BCS_SIGNAL_IsActived", "LOCALS", 1)
//# …
END
//# À la fin du signal on désactive la variable LOCALS
IF
!GlobalTimerNotExpired("BCS_SIGNAL_Timer", "GLOBAL", 0)
!Global("BCS_SIGNAL_IsActived", "LOCALS", 0)
THEN
RESPONSE #1
SetGlobal("BCS_SIGNAL_IsActived", "LOCALS", 0)
END
Il n’est pas toujours possible ou pas toujours adapté de terminer le signal, mais on peut le limiter dans le temps.
On active le script qu’une seule fois par créature.
Le signal est détectable par les créatures pendant une durée définie (ici 1 round).
Une fois le temps écoulé, le signal s’arrête de lui-même.
//# Script quelqueconque
THEN
RESPONSE #1
SetGlobal("BCS_SIGNAL_Counter", "GLOBAL", 5)
END
//# Script du personnage
//# On active la réponse au signal
IF
GlobalGT("BCS_SIGNAL_Counter", "GLOBAL", 0)
Global("BCS_SIGNAL_IsActived", "LOCALS", 0)
THEN
RESPONSE #1
IncrementGlobal("BCS_SIGNAL_Counter", "GLOBAL", -1)
SetGlobal("BCS_SIGNAL_IsActived", "LOCALS", 1)
//# …
END
//# À la fin du signal on désactive la variable LOCALS
IF
Global("BCS_SIGNAL_Counter", "GLOBAL", 0)
!Global("BCS_SIGNAL_IsActived", "LOCALS", 0)
THEN
RESPONSE #1
SetGlobal("BCS_SIGNAL_IsActived", "LOCALS", 0)
END
On active le script qu’une seule fois par créature.
Seules les X (ici 5) premières créatures pourront profiter de l’effet.
Une fois que X créatures différentes ont validées les conditions, le signal s’arrête de lui-même.
//# Script quelqueconque
THEN
RESPONSE #1
SetGlobal("BCS_SIGNAL_Counter", "GLOBAL", 5)
END
//# Script du personnage
//# On active la réponse au signal
IF
GlobalGT("BCS_SIGNAL_Counter", "GLOBAL", 0)
THEN
RESPONSE #1
IncrementGlobal("BCS_SIGNAL_Counter", "GLOBAL", -1)
//# …
END
Il n’y a plus de limite d’activation par créature.
L’effet pourra être distribué que X fois (ici 5).
Une fois que les X effets ont été donnés, le signal s’arrête de lui-même.
Ce principe est compatible avec les 3 snippets précédents.