✔️ Can Hide

✔️ Can Hide#

Snippet qui permet au personnage de se camoufler.
Toujours utilisable quelque soit l’allégeance du personnage.

IF
    ActionListEmpty()
    Global("BDAI_SKILL_MODE", "LOCALS", 2)
    !StateCheck(Myself, STATE_DISABLED | STATE_REALLY_DEAD)
    CheckStat(Myself, 0, CASTERHOLD)
    !StateCheck(Myself, STATE_INVISIBLE)
    CheckStat(Myself, 0, SANCTUARY)
    OR(2)
        !CheckSpellState(Myself, CANNOT_TURN_INVISIBLE)
        StateCheck(Myself, STATE_NONDETECTION)
    !ButtonDisabled(BUTTON_STEALTH)
    !ModalState(STEALTH)
    OR(2)
        CheckStatGT(Myself, 49, HIDEINSHADOWS)
        CheckStatGT(Myself, 49, STEALTH)
    OR(3)
        Allegiance(Myself, NOTEVIL)
        !See([GOODCUTOFF])
        Kit(Myself, SHADOWDANCER)
    OR(3)
        Allegiance(Myself, EVILCUTOFF)
        !See([EVILCUTOFF])
        Kit(Myself, SHADOWDANCER)
THEN
    RESPONSE #1
        Hide()
END

Tous les personnages peuvent se camoufler, il n’y a aucune restriction de classe à cela.
C’est le niveau de maîtrise qui limite fortement l’utilisation de cette action.

NearestEnemyOf fonctionne mal pour le cas des personnages NEUTRAL.
De plus, See([...]) permet de filtrer naturellement les personnages avec un STATE_SLEEPING et STATE_DEAD actif, c’est l’idéal car la présence de ces personnages ne bloque pas l’action.

IF
    ActionListEmpty()
    Global("BDAI_SKILL_MODE", "LOCALS", 2)
    !StateCheck(Myself, STATE_DISABLED | STATE_REALLY_DEAD)
    CheckStat(Myself, 0, CASTERHOLD)
    !StateCheck(Myself, STATE_INVISIBLE)
    CheckStat(Myself, 0, SANCTUARY)
    OR(2)
        !CheckSpellState(Myself, CANNOT_TURN_INVISIBLE)
        StateCheck(Myself, STATE_NONDETECTION)
    !ButtonDisabled(BUTTON_STEALTH)
    !ModalState(STEALTH)
    OR(2)
        CheckStatGT(Myself, 49, HIDEINSHADOWS)
        CheckStatGT(Myself, 49, STEALTH)
    OR(4)
        CheckStatGT(Myself, 99, HIDEINSHADOWS)
        CheckStatGT(Myself, 99, STEALTH)
        !TimeOfDay(DAY)
        !AreaType(OUTDOOR)
    OR(3)
        Allegiance(Myself, NOTEVIL)
        !See([GOODCUTOFF])
        Kit(Myself, SHADOWDANCER)
    OR(3)
        Allegiance(Myself, EVILCUTOFF)
        !See([EVILCUTOFF])
        Kit(Myself, SHADOWDANCER)
THEN
    RESPONSE #1
        Hide()
END

L’environnement extérieur influence la probabilité de réussite du camouflage.
Il est deux fois plus difficile de se camoufler de jour en extérieur.

IF
    ActionListEmpty()
    Global("BDAI_SKILL_MODE", "LOCALS", 2)
    !StateCheck(Myself, STATE_DISABLED | STATE_REALLY_DEAD)
    CheckStat(Myself, 0, CASTERHOLD)
    !StateCheck(Myself, STATE_INVISIBLE)
    CheckStat(Myself, 0, SANCTUARY)
    OR(2)
        !CheckSpellState(Myself, CANNOT_TURN_INVISIBLE)
        StateCheck(Myself, STATE_NONDETECTION)
    !ButtonDisabled(BUTTON_STEALTH)
    !ModalState(STEALTH)
    OR(2)
        CheckStatGT(Myself, 49, HIDEINSHADOWS)
        CheckStatGT(Myself, 49, STEALTH)
    OR(4)
        CheckStatGT(Myself, 99, HIDEINSHADOWS)
        CheckStatGT(Myself, 99, STEALTH)
        !TimeOfDay(DAY)
        !AreaType(OUTDOOR)
    Kit(Myself, SHADOWDANCER)
    Allegiance(Myself, NOTEVIL)
    OR(2)
        !See([EVILCUTOFF])
        CheckStat(LastSeenBy(Myself), 0, SEEINVISIBLE)
    OR(2)
        !See(SecondNearest([EVILCUTOFF]))
        CheckStat(LastSeenBy(Myself), 0, SEEINVISIBLE)
    OR(2)
        !See(ThirdNearest([EVILCUTOFF]))
        CheckStat(LastSeenBy(Myself), 0, SEEINVISIBLE)
THEN
    RESPONSE #1
        Hide()
END

Gérer spécifiquement le kit du Maître des ombres facilite les contraintes et permet donc d’aller un peu plus loin.
Car s’il peut se camoufler au beau milieu d’un champ de bataille.
Encore faut-il que les personnages ennemis puissent ne pas voir l’invisible.
Le fonctionnement est assez proche de celui d’une potion d’invisibilité.