Recherche de scripteur de l'espace
Recherche de scripteur de l'espace
Il y a fort longtemps j'avais fait un script de combat généraliste expérimental mais plutôt sympa.
J'ai voulu voir un peu ce qui se faisait aujourd'hui.
J'ai regardé un peu le BDDEFAI de base et Enhanced powergaming scripts.
J'ai trouvé ça fade. Je ne vois qu'une liste de conditions vaguement exhaustive sans aucune originalité. Par exemple si le mage est empoisonné, il ne fait rien.
98% du travail tourne autour de l'incantation des sorts, même pas une ligne pour un rôdeur avec son arc (ok, j'ai pas tout regardé).
L'optimisation est faible et les erreurs sont flagrantes, j'ai du mal à croire que c'est ce qu'il se fait de mieux aujourd'hui.
Y'a-t-il des moddeurs qui font référence dans ce domaine ?
J'ai voulu voir un peu ce qui se faisait aujourd'hui.
J'ai regardé un peu le BDDEFAI de base et Enhanced powergaming scripts.
J'ai trouvé ça fade. Je ne vois qu'une liste de conditions vaguement exhaustive sans aucune originalité. Par exemple si le mage est empoisonné, il ne fait rien.
98% du travail tourne autour de l'incantation des sorts, même pas une ligne pour un rôdeur avec son arc (ok, j'ai pas tout regardé).
L'optimisation est faible et les erreurs sont flagrantes, j'ai du mal à croire que c'est ce qu'il se fait de mieux aujourd'hui.
Y'a-t-il des moddeurs qui font référence dans ce domaine ?
Vous êtes à la recherche d'un mod merveilleux ? Trouvez votre bonheur sur la liste.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
-
Selphira
- Adepte de Grondemarteau
- Ours des cavernes
- Messages : 1178
- Enregistré le : dim. 25 juil. 2004, 22:28
- Statut : Hors ligne
N'utilisant pas les scripts d'IA (je préfère tout manager), je ne sais pas quels sont les meilleurs, mais il n'existe pas que EPS, en voici d'autres
- https://github.com/RichMartel/uscript
- https://www.gibberlings3.net/mods/other/cirerrek/
- https://github.com/RichMartel/uscript
- https://www.gibberlings3.net/mods/other/cirerrek/
Merci Selphira,
je manage moi-même en continu.
Il y a quand même des choses à faire pour les personnes qui ne peuvent pas être micromanagées (notamment les méchants, les neutres et les familiers).
J'ai regardé le plus récent, c'est plus qualitatif, en effet.
J'y retrouve quelques bourdes vues chez morpheus, je vais creuser un peu pour savoir si le problème c'est moi ou s'ils se copient/collent entre eux.
Je constate que le script concerne aussi à 98% le lancement de capacités. Script généraliste oblige, je suppose.
Les blocs d'attaque se limitent à : Tu peux toucher ? Alors frappe ! Fin.
Le seul cas particulier est pour s'équiper de flèche de feu ou d'acide pour achever les trolls au sol.
Merci pour la référence, si vous avez d'autre source d'inspiration, si possible, un peu moins axée lanceur de sort, je suis preneur.
je manage moi-même en continu.
Il y a quand même des choses à faire pour les personnes qui ne peuvent pas être micromanagées (notamment les méchants, les neutres et les familiers).
J'ai regardé le plus récent, c'est plus qualitatif, en effet.
J'y retrouve quelques bourdes vues chez morpheus, je vais creuser un peu pour savoir si le problème c'est moi ou s'ils se copient/collent entre eux.
Je constate que le script concerne aussi à 98% le lancement de capacités. Script généraliste oblige, je suppose.
Les blocs d'attaque se limitent à : Tu peux toucher ? Alors frappe ! Fin.
Le seul cas particulier est pour s'équiper de flèche de feu ou d'acide pour achever les trolls au sol.
Merci pour la référence, si vous avez d'autre source d'inspiration, si possible, un peu moins axée lanceur de sort, je suis preneur.
Modifié en dernier par rivvers le lun. 23 déc. 2024, 20:22, modifié 1 fois.
Vous êtes à la recherche d'un mod merveilleux ? Trouvez votre bonheur sur la liste.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
J'ai regardé les vieux scripts de cirerrek. Ils sont davantage spécialisés.
Pour des scripts considérés comme obsolètes par la communauté il y a des choses intéressantes et c'est bien pensé, les erreurs susmentionnées plus haut ne sont pas présentes. Les choix effectués témoignent d'une compétence qui dépasse la simple bonne connaissance des triggers et des actions. Je ne retrouve pas ça dans les scripts généralistes des années 2020 (y compris chez le concepteur de ces vieux scripts).
Je vais continuer à chercher des mécaniques autre que l'entraide ou la détermination du niveau de menace.
N'hésitez pas à signaler des scripts qui pourraient être inhabituels.
Pour des scripts considérés comme obsolètes par la communauté il y a des choses intéressantes et c'est bien pensé, les erreurs susmentionnées plus haut ne sont pas présentes. Les choix effectués témoignent d'une compétence qui dépasse la simple bonne connaissance des triggers et des actions. Je ne retrouve pas ça dans les scripts généralistes des années 2020 (y compris chez le concepteur de ces vieux scripts).
Je vais continuer à chercher des mécaniques autre que l'entraide ou la détermination du niveau de menace.
N'hésitez pas à signaler des scripts qui pourraient être inhabituels.
Vous êtes à la recherche d'un mod merveilleux ? Trouvez votre bonheur sur la liste.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
- DrAzTiK
- Araignée éclipsante
- Messages : 1255
- Enregistré le : ven. 19 sept. 2003, 04:20
- Localisation : Bordeaux
- Statut : Hors ligne
perso voiçi une base de scripts que je trouve intéressante :
ActionListEmpty()
CombatCounter(0)
OR(3)
!See(NearestEnemyOf(Myself))
StateCheck(Myself,STATE_INVISIBLE)
StateCheck(Myself,STATE_IMPROVEDINVISIBILITY)
OR(2)
Class(Myself,THIEF_ALL)
Class(Myself,MONK)
!ModalState(DETECTTRAPS)
!ModalState(TURNUNDEAD)
!ModalState(STEALTH)
THEN
RESPONSE #100
FindTraps()
END
IF
ActionListEmpty()
!StateCheck(Myself,STATE_INVISIBLE)
!CheckStatGT(Myself,0,SANCTUARY)
!ModalState(TURNUNDEAD)
See(NearestEnemyOf(Myself))
THEN
RESPONSE #100
AttackReevaluate(NearestEnemyOf(Myself),60)
END
le premier bloc c'est pour que le voleur détecte les pièges.
Le 2e bloc c'est pour que le perso attaque de façon basique sauf si invisible/trunundead/sanctuary.
Le seul soucis que j'ai avec le 2e bloc c'est que mes persos on tendance à changer de cible une fois le combat engagé. par exemple si Korgan tape un ennemi mais qu'un autre ennemi lui porte un coup, alors Korgan va arrété de taper le 1er ennemi et va focus le 2e ennemi qui lui a porté un coup. Et ça c'est un peu chiant défois.
Une idée de comment je pourrai y remédier ?
sinon voici mon script complet, un mélange des anciens scripts SCS /Atweak/RR etc... qui comprends tout mon prebuff. Je prebuff uniquement les sorts qui ont une durée de minimum 5 tours.
ActionListEmpty()
CombatCounter(0)
OR(3)
!See(NearestEnemyOf(Myself))
StateCheck(Myself,STATE_INVISIBLE)
StateCheck(Myself,STATE_IMPROVEDINVISIBILITY)
OR(2)
Class(Myself,THIEF_ALL)
Class(Myself,MONK)
!ModalState(DETECTTRAPS)
!ModalState(TURNUNDEAD)
!ModalState(STEALTH)
THEN
RESPONSE #100
FindTraps()
END
IF
HotKey(U)
Global("DMWWBuff","LOCALS",0)
THEN
RESPONSE #100
SetGlobal("DMWWBuff","LOCALS",1)
DisplayStringHead(Myself,120541) // Quarrels or bolts are the ammunition fired by crossbows regardless of the weapon's size. However, this bolt is of unusually high-quality workmanship. STATISTICS: Damage: 1D8 +1 THAC0: +1 Damage type: missile (piercing) Weight: 0 Launcher: Crossbow
END
IF
HotKey(U)
Global("DMWWBuff","LOCALS",1)
THEN
RESPONSE #100
SetGlobal("DMWWBuff","LOCALS",0)
DisplayStringHead(Myself,120542) // Masterwork Dart
END
IF
ActionListEmpty()
!StateCheck(Myself,STATE_INVISIBLE)
!CheckStatGT(Myself,0,SANCTUARY)
!ModalState(TURNUNDEAD)
See(NearestEnemyOf(Myself))
THEN
RESPONSE #100
AttackReevaluate(NearestEnemyOf(Myself),60)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_SHIELD_OF_THE_ARCHONS) // SPPR701.SPL (Shield of the Archons)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_SHIELD_OF_THE_ARCHONS) // SPPR701.SPL (Shield of the Archons)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_PROTECTION_FROM_NORMAL_MISSILES) // SPWI311.SPL (Protection from Normal Missiles)
See(Myself)
!CheckStatGT(Myself,0,WIZARD_PROTECTION_FROM_NORMAL_MISSILES)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_PROTECTION_FROM_NORMAL_MISSILES) // SPWI311.SPL (Protection from Normal Missiles)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_PROTECTION_FROM_EVIL_10_FOOT) // SPPR408.SPL (Protection from Evil, 15' Radius)
See(Myself)
CheckStat(Myself,0,PROTECTION_FROM_EVIL)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_PROTECTION_FROM_EVIL_10_FOOT) // SPPR408.SPL (Protection from Evil, 15' Radius)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_PROTECT_FROM_EVIL) // SPPR107.SPL (Protection from Evil)
See(Myself)
CheckStat(Myself,0,PROTECTION_FROM_EVIL)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_PROTECT_FROM_EVIL) // SPPR107.SPL (Protection from Evil)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_BLESS) // SPPR101.SPL (Bless)
See(Myself)
!StateCheck(Myself,STATE_BLESS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_BLESS) // SPPR101.SPL (Bless)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SHIELD) // SPWI114.SPL (Shield)
See(Myself)
!CheckStatGT(Myself,1,SCRIPTINGSTATE5)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SHIELD) // SPWI114.SPL (Shield)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SPIRIT_ARMOR) // SPWI414.SPL (Spirit Armor)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SPIRIT_ARMOR) // SPWI414.SPL (Spirit Armor)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_EMOTION_HOPE) // spwi427.SPL (Émotion, espoir)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player3,WIZARD_EMOTION_HOPE) // spwi427.SPL (Émotion, espoir)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_EMOTION_COURAGE) // spwi426.SPL (Émotion, courage)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player3,WIZARD_EMOTION_COURAGE) // spwi426.SPL (Émotion, courage)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_GOOD_BERRIES) // SPPR207.SPL (Goodberry)
See(Myself)
!InventoryFull(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_GOOD_BERRIES) // SPPR207.SPL (Goodberry)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_STONE_SKIN) // SPWI408.SPL (Stoneskin)
See(Myself)
CheckStat(Myself,0,STONESKINS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_STONE_SKIN) // SPWI408.SPL (Stoneskin)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_IRONSKIN) // SPPR506.SPL (Iron Skins)
See(Myself)
CheckStat(Myself,0,STONESKINS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_IRONSKIN) // SPPR506.SPL (Iron Skins)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_ARMOR) // SPWI102.SPL (Armor)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_ARMOR) // SPWI102.SPL (Armor)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MELF_METEOR) // SPWI325.SPL (Melf's Minute Meteors)
See(Myself)
!HasItem("eneblade",Myself) // Lames d'énergie
!HasItem("melfmet",Myself) // Minuscules météores de Melf
!Class(Myself,FIGHTER_MAGE)
!Class(Myself,FIGHTER_MAGE_THIEF)
!Class(Myself,BARD)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_MELF_METEOR) // SPWI325.SPL (Melf's Minute Meteors)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_ENERGY_BLADES) // SPWI920.SPL (Energy Blades)
See(Myself)
!HasItem("eneblade",Myself) // Lames d'énergie
!HasItem("melfmet",Myself) // Minuscules météores de Melf
!Class(Myself,FIGHTER_MAGE)
!Class(Myself,FIGHTER_MAGE_THIEF)
!Class(Myself,BARD)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_ENERGY_BLADES) // SPWI920.SPL (Energy Blades)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MELF_METEOR) // SPWI325.SPL (Melf's Minute Meteors)
See(Myself)
!HasItem("eneblade",Myself) // Lames d'énergie
!HasItem("melfmet",Myself) // Minuscules météores de Melf
!Class(Myself,FIGHTER_MAGE)
!Class(Myself,FIGHTER_MAGE_THIEF)
!Class(Myself,BARD)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_ENERGY_BLADES) // SPPR721.SPL (Energy Blades)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_NON_DETECTION) // SPWI310.SPL (Non-Detection)
!StateCheck(Myself,STATE_NONDETECTION)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_NON_DETECTION) // SPWI310.SPL (Non-Detection)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MIND_BLANK) // spwi806.SPL (Esprit impénétrable)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_MIND_BLANK) // spwi806.SPL (Esprit impénétrable)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_IMPERVIOUS_SANCTITY_OF_MIND) // sppr735.SPL (Citadelle de l'âme)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_IMPERVIOUS_SANCTITY_OF_MIND) // sppr735.SPL (Citadelle de l'âme)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_BLUR) // SPWI201.SPL (Blur)
See(Myself)
!StateCheck(Myself,STATE_BLUR)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_BLUR) // SPWI201.SPL (Blur)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MINOR_SPELL_TURNING) // SPWI522.SPL (Minor Spell Turning)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_MINOR_SPELL_TURNING) // SPWI522.SPL (Minor Spell Turning)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SPELL_TURNING) // SPWI701.SPL (Spell Turning)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SPELL_TURNING) // SPWI701.SPL (Spell Turning)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MINOR_SPELL_DEFLECTION) // SPWI318.SPL (Minor Spell Deflection)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_MINOR_SPELL_DEFLECTION) // SPWI318.SPL (Minor Spell Deflection)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SPELL_DEFLECTION) // SPWI618.SPL (Spell Deflection)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SPELL_DEFLECTION) // SPWI618.SPL (Spell Deflection)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_PROTECTION_FROM_LIGHTNING) // SPPR407.SPL (Protection from Lightning)
See(Player1)
CheckStatLT(Player1,80,RESISTELECTRICITY)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,CLERIC_PROTECTION_FROM_LIGHTNING) // SPPR407.SPL (Protection from Lightning)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_PROTECTION_FROM_LIGHTNING) // SPPR407.SPL (Protection from Lightning)
See(Myself)
CheckStatLT(Myself,80,RESISTELECTRICITY)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_PROTECTION_FROM_LIGHTNING) // SPPR407.SPL (Protection from Lightning)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_DEATH_WARD) // SPPR409.SPL (Death Ward)
See(Player1)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,CLERIC_DEATH_WARD) // SPPR409.SPL (Death Ward)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_DEATH_WARD) // SPPR409.SPL (Death Ward)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_DEATH_WARD) // SPPR409.SPL (Death Ward)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_CHAOTIC_COMMANDS) // SPPR508.SPL (Chaotic Commands)
See(Player1)
!CheckStat(Player1,1,CLERIC_CHAOTIC_COMMANDS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,CLERIC_CHAOTIC_COMMANDS) // SPPR508.SPL (Chaotic Commands)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_CHAOTIC_COMMANDS) // SPPR508.SPL (Chaotic Commands)
See(Myself)
!CheckStat(Myself,1,CLERIC_CHAOTIC_COMMANDS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_CHAOTIC_COMMANDS) // SPPR508.SPL (Chaotic Commands)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(WIZARD_PROTECTION_FROM_FIRE) // SPWI319.SPL (Protection from Fire)
See(Player1)
CheckStatLT(Player1,80,RESISTFIRE)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,WIZARD_PROTECTION_FROM_FIRE) // SPWI319.SPL (Protection from Fire)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(WIZARD_PROTECTION_FROM_FIRE) // SPWI319.SPL (Protection from Fire)
See(Myself)
CheckStatLT(Myself,80,RESISTFIRE)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_PROTECTION_FROM_FIRE) // SPWI319.SPL (Protection from Fire)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(WIZARD_PROTECTION_FROM_MAGIC_ENERGY) // SPWI606.SPL (Protection from Magic Energy)
See(Myself)
CheckStatLT(Myself,80,RESISTMAGIC)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_PROTECTION_FROM_MAGIC_ENERGY) // SPWI606.SPL (Protection from Magic Energy)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(WIZARD_PROTECTION_FROM_MAGIC_ENERGY) // SPWI606.SPL (Protection from Magic Energy)
See(Player1)
CheckStatLT(Player1,80,RESISTMAGIC)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,WIZARD_PROTECTION_FROM_MAGIC_ENERGY) // SPWI606.SPL (Protection from Magic Energy)
Continue()
END
► Afficher le texte
IFActionListEmpty()
CombatCounter(0)
OR(3)
!See(NearestEnemyOf(Myself))
StateCheck(Myself,STATE_INVISIBLE)
StateCheck(Myself,STATE_IMPROVEDINVISIBILITY)
OR(2)
Class(Myself,THIEF_ALL)
Class(Myself,MONK)
!ModalState(DETECTTRAPS)
!ModalState(TURNUNDEAD)
!ModalState(STEALTH)
THEN
RESPONSE #100
FindTraps()
END
IF
ActionListEmpty()
!StateCheck(Myself,STATE_INVISIBLE)
!CheckStatGT(Myself,0,SANCTUARY)
!ModalState(TURNUNDEAD)
See(NearestEnemyOf(Myself))
THEN
RESPONSE #100
AttackReevaluate(NearestEnemyOf(Myself),60)
END
Le 2e bloc c'est pour que le perso attaque de façon basique sauf si invisible/trunundead/sanctuary.
Le seul soucis que j'ai avec le 2e bloc c'est que mes persos on tendance à changer de cible une fois le combat engagé. par exemple si Korgan tape un ennemi mais qu'un autre ennemi lui porte un coup, alors Korgan va arrété de taper le 1er ennemi et va focus le 2e ennemi qui lui a porté un coup. Et ça c'est un peu chiant défois.
Une idée de comment je pourrai y remédier ?
sinon voici mon script complet, un mélange des anciens scripts SCS /Atweak/RR etc... qui comprends tout mon prebuff. Je prebuff uniquement les sorts qui ont une durée de minimum 5 tours.
► Afficher le texte
IFActionListEmpty()
CombatCounter(0)
OR(3)
!See(NearestEnemyOf(Myself))
StateCheck(Myself,STATE_INVISIBLE)
StateCheck(Myself,STATE_IMPROVEDINVISIBILITY)
OR(2)
Class(Myself,THIEF_ALL)
Class(Myself,MONK)
!ModalState(DETECTTRAPS)
!ModalState(TURNUNDEAD)
!ModalState(STEALTH)
THEN
RESPONSE #100
FindTraps()
END
IF
HotKey(U)
Global("DMWWBuff","LOCALS",0)
THEN
RESPONSE #100
SetGlobal("DMWWBuff","LOCALS",1)
DisplayStringHead(Myself,120541) // Quarrels or bolts are the ammunition fired by crossbows regardless of the weapon's size. However, this bolt is of unusually high-quality workmanship. STATISTICS: Damage: 1D8 +1 THAC0: +1 Damage type: missile (piercing) Weight: 0 Launcher: Crossbow
END
IF
HotKey(U)
Global("DMWWBuff","LOCALS",1)
THEN
RESPONSE #100
SetGlobal("DMWWBuff","LOCALS",0)
DisplayStringHead(Myself,120542) // Masterwork Dart
END
IF
ActionListEmpty()
!StateCheck(Myself,STATE_INVISIBLE)
!CheckStatGT(Myself,0,SANCTUARY)
!ModalState(TURNUNDEAD)
See(NearestEnemyOf(Myself))
THEN
RESPONSE #100
AttackReevaluate(NearestEnemyOf(Myself),60)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_SHIELD_OF_THE_ARCHONS) // SPPR701.SPL (Shield of the Archons)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_SHIELD_OF_THE_ARCHONS) // SPPR701.SPL (Shield of the Archons)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_PROTECTION_FROM_NORMAL_MISSILES) // SPWI311.SPL (Protection from Normal Missiles)
See(Myself)
!CheckStatGT(Myself,0,WIZARD_PROTECTION_FROM_NORMAL_MISSILES)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_PROTECTION_FROM_NORMAL_MISSILES) // SPWI311.SPL (Protection from Normal Missiles)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_PROTECTION_FROM_EVIL_10_FOOT) // SPPR408.SPL (Protection from Evil, 15' Radius)
See(Myself)
CheckStat(Myself,0,PROTECTION_FROM_EVIL)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_PROTECTION_FROM_EVIL_10_FOOT) // SPPR408.SPL (Protection from Evil, 15' Radius)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_PROTECT_FROM_EVIL) // SPPR107.SPL (Protection from Evil)
See(Myself)
CheckStat(Myself,0,PROTECTION_FROM_EVIL)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_PROTECT_FROM_EVIL) // SPPR107.SPL (Protection from Evil)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_BLESS) // SPPR101.SPL (Bless)
See(Myself)
!StateCheck(Myself,STATE_BLESS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_BLESS) // SPPR101.SPL (Bless)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SHIELD) // SPWI114.SPL (Shield)
See(Myself)
!CheckStatGT(Myself,1,SCRIPTINGSTATE5)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SHIELD) // SPWI114.SPL (Shield)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SPIRIT_ARMOR) // SPWI414.SPL (Spirit Armor)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SPIRIT_ARMOR) // SPWI414.SPL (Spirit Armor)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_EMOTION_HOPE) // spwi427.SPL (Émotion, espoir)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player3,WIZARD_EMOTION_HOPE) // spwi427.SPL (Émotion, espoir)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_EMOTION_COURAGE) // spwi426.SPL (Émotion, courage)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player3,WIZARD_EMOTION_COURAGE) // spwi426.SPL (Émotion, courage)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_GOOD_BERRIES) // SPPR207.SPL (Goodberry)
See(Myself)
!InventoryFull(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_GOOD_BERRIES) // SPPR207.SPL (Goodberry)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_STONE_SKIN) // SPWI408.SPL (Stoneskin)
See(Myself)
CheckStat(Myself,0,STONESKINS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_STONE_SKIN) // SPWI408.SPL (Stoneskin)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_IRONSKIN) // SPPR506.SPL (Iron Skins)
See(Myself)
CheckStat(Myself,0,STONESKINS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_IRONSKIN) // SPPR506.SPL (Iron Skins)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_ARMOR) // SPWI102.SPL (Armor)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_ARMOR) // SPWI102.SPL (Armor)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MELF_METEOR) // SPWI325.SPL (Melf's Minute Meteors)
See(Myself)
!HasItem("eneblade",Myself) // Lames d'énergie
!HasItem("melfmet",Myself) // Minuscules météores de Melf
!Class(Myself,FIGHTER_MAGE)
!Class(Myself,FIGHTER_MAGE_THIEF)
!Class(Myself,BARD)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_MELF_METEOR) // SPWI325.SPL (Melf's Minute Meteors)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_ENERGY_BLADES) // SPWI920.SPL (Energy Blades)
See(Myself)
!HasItem("eneblade",Myself) // Lames d'énergie
!HasItem("melfmet",Myself) // Minuscules météores de Melf
!Class(Myself,FIGHTER_MAGE)
!Class(Myself,FIGHTER_MAGE_THIEF)
!Class(Myself,BARD)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_ENERGY_BLADES) // SPWI920.SPL (Energy Blades)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MELF_METEOR) // SPWI325.SPL (Melf's Minute Meteors)
See(Myself)
!HasItem("eneblade",Myself) // Lames d'énergie
!HasItem("melfmet",Myself) // Minuscules météores de Melf
!Class(Myself,FIGHTER_MAGE)
!Class(Myself,FIGHTER_MAGE_THIEF)
!Class(Myself,BARD)
!Class(Myself,SORCERER)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_ENERGY_BLADES) // SPPR721.SPL (Energy Blades)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_NON_DETECTION) // SPWI310.SPL (Non-Detection)
!StateCheck(Myself,STATE_NONDETECTION)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_NON_DETECTION) // SPWI310.SPL (Non-Detection)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MIND_BLANK) // spwi806.SPL (Esprit impénétrable)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_MIND_BLANK) // spwi806.SPL (Esprit impénétrable)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(CLERIC_IMPERVIOUS_SANCTITY_OF_MIND) // sppr735.SPL (Citadelle de l'âme)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_IMPERVIOUS_SANCTITY_OF_MIND) // sppr735.SPL (Citadelle de l'âme)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_BLUR) // SPWI201.SPL (Blur)
See(Myself)
!StateCheck(Myself,STATE_BLUR)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_BLUR) // SPWI201.SPL (Blur)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MINOR_SPELL_TURNING) // SPWI522.SPL (Minor Spell Turning)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_MINOR_SPELL_TURNING) // SPWI522.SPL (Minor Spell Turning)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SPELL_TURNING) // SPWI701.SPL (Spell Turning)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SPELL_TURNING) // SPWI701.SPL (Spell Turning)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_MINOR_SPELL_DEFLECTION) // SPWI318.SPL (Minor Spell Deflection)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_MINOR_SPELL_DEFLECTION) // SPWI318.SPL (Minor Spell Deflection)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREMAGE)
HaveSpell(WIZARD_SPELL_DEFLECTION) // SPWI618.SPL (Spell Deflection)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_SPELL_DEFLECTION) // SPWI618.SPL (Spell Deflection)
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_PROTECTION_FROM_LIGHTNING) // SPPR407.SPL (Protection from Lightning)
See(Player1)
CheckStatLT(Player1,80,RESISTELECTRICITY)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,CLERIC_PROTECTION_FROM_LIGHTNING) // SPPR407.SPL (Protection from Lightning)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_PROTECTION_FROM_LIGHTNING) // SPPR407.SPL (Protection from Lightning)
See(Myself)
CheckStatLT(Myself,80,RESISTELECTRICITY)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_PROTECTION_FROM_LIGHTNING) // SPPR407.SPL (Protection from Lightning)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_DEATH_WARD) // SPPR409.SPL (Death Ward)
See(Player1)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,CLERIC_DEATH_WARD) // SPPR409.SPL (Death Ward)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_DEATH_WARD) // SPPR409.SPL (Death Ward)
See(Myself)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_DEATH_WARD) // SPPR409.SPL (Death Ward)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_CHAOTIC_COMMANDS) // SPPR508.SPL (Chaotic Commands)
See(Player1)
!CheckStat(Player1,1,CLERIC_CHAOTIC_COMMANDS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,CLERIC_CHAOTIC_COMMANDS) // SPPR508.SPL (Chaotic Commands)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(CLERIC_CHAOTIC_COMMANDS) // SPPR508.SPL (Chaotic Commands)
See(Myself)
!CheckStat(Myself,1,CLERIC_CHAOTIC_COMMANDS)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,CLERIC_CHAOTIC_COMMANDS) // SPPR508.SPL (Chaotic Commands)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(WIZARD_PROTECTION_FROM_FIRE) // SPWI319.SPL (Protection from Fire)
See(Player1)
CheckStatLT(Player1,80,RESISTFIRE)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,WIZARD_PROTECTION_FROM_FIRE) // SPWI319.SPL (Protection from Fire)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(WIZARD_PROTECTION_FROM_FIRE) // SPWI319.SPL (Protection from Fire)
See(Myself)
CheckStatLT(Myself,80,RESISTFIRE)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_PROTECTION_FROM_FIRE) // SPWI319.SPL (Protection from Fire)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(WIZARD_PROTECTION_FROM_MAGIC_ENERGY) // SPWI606.SPL (Protection from Magic Energy)
See(Myself)
CheckStatLT(Myself,80,RESISTMAGIC)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Myself,WIZARD_PROTECTION_FROM_MAGIC_ENERGY) // SPWI606.SPL (Protection from Magic Energy)
Continue()
END
IF
ActionListEmpty()
CombatCounter(0)
!Global("DMWWBuff","LOCALS",0)
!Detect(NearestEnemyOf(Myself))
!CheckStatGT(Myself,0,SPELLFAILUREPRIEST)
HaveSpell(WIZARD_PROTECTION_FROM_MAGIC_ENERGY) // SPWI606.SPL (Protection from Magic Energy)
See(Player1)
CheckStatLT(Player1,80,RESISTMAGIC)
THEN
RESPONSE #100
SetGlobalTimer("SpellsBad","GLOBAL",3)
ApplySpellRES("dw#alac",Myself) // Enchaînement
Spell(Player1,WIZARD_PROTECTION_FROM_MAGIC_ENERGY) // SPWI606.SPL (Protection from Magic Energy)
Continue()
END
J'ai l'impression que la gestion des combattants n'a jamais vraiment été pensée.
En partie, parce qu'il n'y a pas de solution facile et efficace.
Trouver une cible c'est facile, garder le focus c'est beaucoup plus compliqué.
EEex propose quelques méthodes mais encore faut-il pouvoir l'utiliser/l'installer.
Un moyen de limiter la problèmatique c'est de prioriser les cibles.
Ici avec See(NearestEnemyOf(Myself)), on a le strict minimum : on vise l'ennemi le plus proche, évidemment si les personnages bougent, la cible change.
En faisant des
On limite la possibilité de switcher de cible.
J'ai une piste de réflexion cela dit, il faut que je la creuse.
Ça c'est filou : SetGlobalTimer("SpellsBad","GLOBAL",3)
Pour un prébuff, j'utiliserai ReallyForceSpell("TOTO", X) + RemoveSpell(X)
Ça bloque pas mal de problèmatiques, comme les hiatus entropiques.
À quoi sert le See(Myself) dans ton cas ?
En partie, parce qu'il n'y a pas de solution facile et efficace.
Trouver une cible c'est facile, garder le focus c'est beaucoup plus compliqué.
EEex propose quelques méthodes mais encore faut-il pouvoir l'utiliser/l'installer.
Un moyen de limiter la problèmatique c'est de prioriser les cibles.
Ici avec See(NearestEnemyOf(Myself)), on a le strict minimum : on vise l'ennemi le plus proche, évidemment si les personnages bougent, la cible change.
En faisant des
Code : Tout sélectionner
OR(3)
See(NearestEnemyOf(Myself))
See(NearestEnemyOfType([0.0.0.THIEF_ALL]))
See(NearestEnemyOfType([0.0.0.MAGE_ALL]))
J'ai une piste de réflexion cela dit, il faut que je la creuse.
Ça c'est filou : SetGlobalTimer("SpellsBad","GLOBAL",3)
Pour un prébuff, j'utiliserai ReallyForceSpell("TOTO", X) + RemoveSpell(X)
Ça bloque pas mal de problèmatiques, comme les hiatus entropiques.
À quoi sert le See(Myself) dans ton cas ?
Vous êtes à la recherche d'un mod merveilleux ? Trouvez votre bonheur sur la liste.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
- DrAzTiK
- Araignée éclipsante
- Messages : 1255
- Enregistré le : ven. 19 sept. 2003, 04:20
- Localisation : Bordeaux
- Statut : Hors ligne
j'ai déjà la ligne See(NearestEnemyOf(Myself)) mais à priori ça n'empêche pas mes persos de changer de cible. :/rivvers a écrit : mar. 14 janv. 2025, 22:43 J'ai l'impression que la gestion des combattants n'a jamais vraiment été pensée.
En partie, parce qu'il n'y a pas de solution facile et efficace.
Trouver une cible c'est facile, garder le focus c'est beaucoup plus compliqué.
EEex propose quelques méthodes mais encore faut-il pouvoir l'utiliser/l'installer.
Un moyen de limiter la problèmatique c'est de prioriser les cibles.
Ici avec See(NearestEnemyOf(Myself)), on a le strict minimum : on vise l'ennemi le plus proche, évidemment si les personnages bougent, la cible change.
En faisant desOn limite la possibilité de switcher de cible.Code : Tout sélectionner
OR(3) See(NearestEnemyOf(Myself)) See(NearestEnemyOfType([0.0.0.THIEF_ALL])) See(NearestEnemyOfType([0.0.0.MAGE_ALL]))
J'ai une piste de réflexion cela dit, il faut que je la creuse.
Ça c'est filou : SetGlobalTimer("SpellsBad","GLOBAL",3)
Pour un prébuff, j'utiliserai ReallyForceSpell("TOTO", X) + RemoveSpell(X)
Ça bloque pas mal de problèmatiques, comme les hiatus entropiques.
À quoi sert le See(Myself) dans ton cas ?
SetGlobalTimer("SpellsBad","GLOBAL",3)== aucune idée, il faudrait que j'essaye sans et voir si ça change qqchose.
À quoi sert le See(Myself) dans ton cas ?== idem
C'est le OR qui peut faire la différence ici.
Dans l'exenple puisqu'il va cibler en priorité les mages puis les voleurs, il devrait être moins tenté de cibler ceux qui l'attaquent.
SetGlobalTimer("SpellsBad","GLOBAL",3)
Va te permettre de pouvoir te prébuff malgré l'interdiction des mages cagoulés.
3 c'est possiblement insuffisant.
Et tu écrases un timer qui est utilisé par d'autres, ça peut créer des incompatibilités très mineures.
See(Myself) devrait te permettre de ne pas lancer le prébuff si tu es invisible. Mais c'est clairement pas une bonne façon de faire.
Dans l'exenple puisqu'il va cibler en priorité les mages puis les voleurs, il devrait être moins tenté de cibler ceux qui l'attaquent.
SetGlobalTimer("SpellsBad","GLOBAL",3)
Va te permettre de pouvoir te prébuff malgré l'interdiction des mages cagoulés.
3 c'est possiblement insuffisant.
Et tu écrases un timer qui est utilisé par d'autres, ça peut créer des incompatibilités très mineures.
See(Myself) devrait te permettre de ne pas lancer le prébuff si tu es invisible. Mais c'est clairement pas une bonne façon de faire.
Vous êtes à la recherche d'un mod merveilleux ? Trouvez votre bonheur sur la liste.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
J'ai testé ton deuxième bloc seul. J'ai pas de problème. Il attaque la cible jusqu'à ce que mort s'en suive. Même si elle s'enfuit.DrAzTiK a écrit : mar. 14 janv. 2025, 19:19 Le seul soucis que j'ai avec le 2e bloc c'est que mes persos on tendance à changer de cible une fois le combat engagé. par exemple si Korgan tape un ennemi mais qu'un autre ennemi lui porte un coup, alors Korgan va arrété de taper le 1er ennemi et va focus le 2e ennemi qui lui a porté un coup. Et ça c'est un peu chiant défois.
Il y a peut-être d'autres scripts qui interfèrent ?
Vous êtes à la recherche d'un mod merveilleux ? Trouvez votre bonheur sur la liste.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
Vous êtes un artisan moddeur et perfectionniste ? Découvrez une traduction corrigée et à jour de DLTCEP.
Vous êtes un explorateur insatiable des mécaniques de l'InfinityEngine ? Plongez dans les secrets du Codex.
Vous recherchez des scripts de qualité, génériques et réutilisables ? Arpentez les templates de script.
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités