A partir du moment où tu ajoutes une expression règulière à la fin de chaque ligne pour englober le saut de ligne et les espaces de début de ligne, il faut que tu élimines tous ces caractères de ce que tu donnes comme chaine à rechercher.
Tel que tu l'as fait, tu as laissé les sauts de ligne et des espaces en début de ligne, alors que l'expression régulière était supposée les passer tous. Comme il n'y a pas deux sauts de lignes entre chaque ligne, la chaine demandée n'est pas trouvée. La séquence présente dans le fichier que tu veux patcher est : saut de ligne (unique), espace(s), commandes. Hors l'expression régulière couvre 1 ou plusieurs [saut de ligne et/ou espace et/ou tabulation] et le fait de laisser un saut de ligne après l'expression régulière fait que tu veux en trouver encore un autre après. Cette séquence n'existe pas dans le fichier à patcher, donc forcément ça ne fait rien.
Il faut sans doute écrire l'expression comme ceci, avec tout sur la même ligne et aucun espace :
Code : Tout sélectionner
COPY_EXISTING ~OBSDEM01.BCS~ ~override~
DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY EXACT_MATCH ~IF[%tab% %lnl%%mnl%%wnl%]+Detect([PC])[%tab% %lnl%%mnl%%wnl%]+Global("summon","LOCALS",0)[%tab% %lnl%%mnl%%wnl%]+THEN[%tab% %lnl%%mnl%%wnl%]+RESPONSE #100[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLAST2",[1972.1287])[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLSRIN",[1972.1287])[%tab% %lnl%%mnl%%wnl%]+CreateCreature("OBSDEM04",[1972.1287],0) // Maurezhi[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLAST2",[1889.1461])[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLSRIN",[1889.1461])[%tab% %lnl%%mnl%%wnl%]+CreateCreature("OBSDEM04",[1889.1461],0) // Maurezhi[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLAST2",[2244.1403])[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLSRIN",[2244.1403])[%tab% %lnl%%mnl%%wnl%]+CreateCreature("OBSDEM04",[2244.1403],0) // Maurezhi[%tab% %lnl%%mnl%%wnl%]+SetGlobal("summon","LOCALS",1)[%tab% %lnl%%mnl%%wnl%]+END~
~IF
Detect([PC])
Global("summon","LOCALS",0)
THEN
RESPONSE #100
CreateVisualEffect("SPFLAST2",[1995.1320])
CreateVisualEffect("SPFLSRIN",[1995.1320])
CreateCreature("QQILABY",[1995.1320],0) // Illithid avec cerveau
CreateVisualEffect("SPFLAST2",[1972.1287])
CreateVisualEffect("SPFLSRIN",[1972.1287])
CreateCreature("OBSDEM04",[1972.1287],0) // Maurezhi
CreateVisualEffect("SPFLAST2",[1889.1461])
CreateVisualEffect("SPFLSRIN",[1889.1461])
CreateCreature("OBSDEM04",[1889.1461],0) // Maurezhi
CreateVisualEffect("SPFLAST2",[2244.1403])
CreateVisualEffect("SPFLSRIN",[2244.1403])
CreateCreature("OBSDEM04",[2244.1403],0) // Maurezhi
SetGlobal("summon","LOCALS",1)
END~
COMPILE_BAF_TO_BCS
BUT_ONLY_IF_IT_CHANGES
BG2 Fixpack regorge de patchs de ce genre, plus ciblés en général (il s'agit plutôt de modifier des conditions, pas de changer tout un bloc) et ils sont tous bien écrits sur une seule ligne.
BG2 Fixpack fait un usage encore plus poussé des expressions régulières, qui permettent aussi de récupérer un bloc de la chaine recherchée pour le reprendre dans la chaine de remplacement. Mais c'est une autre histoire, même si tu pourrais aussi en profiter ici puisque tu recopies une grosse partie.
En fait tu pourrais même fortement alléger le tout puisqu'il semble que tu veuilles ajouter trois lignes au début du bloc RESPONSE (même si elles pourraient tout aussi bien être à la fin).
A priori, tu pourrais l'écrire :
Code : Tout sélectionner
COPY_EXISTING ~OBSDEM01.BCS~ ~override~
DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY EXACT_MATCH ~\(IF[%tab% %lnl%%mnl%%wnl%]+Detect([PC])[%tab% %lnl%%mnl%%wnl%]+Global("summon","LOCALS",0)[%tab% %lnl%%mnl%%wnl%]+THEN[%tab% %lnl%%mnl%%wnl%]+RESPONSE #100[%tab% %lnl%%mnl%%wnl%]+\)\(CreateVisualEffect("SPFLAST2",[1972.1287])[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLSRIN",[1972.1287])[%tab% %lnl%%mnl%%wnl%]+CreateCreature("OBSDEM04",[1972.1287],0) // Maurezhi[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLAST2",[1889.1461])[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLSRIN",[1889.1461])[%tab% %lnl%%mnl%%wnl%]+CreateCreature("OBSDEM04",[1889.1461],0) // Maurezhi[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLAST2",[2244.1403])[%tab% %lnl%%mnl%%wnl%]+CreateVisualEffect("SPFLSRIN",[2244.1403])[%tab% %lnl%%mnl%%wnl%]+CreateCreature("OBSDEM04",[2244.1403],0) // Maurezhi[%tab% %lnl%%mnl%%wnl%]+SetGlobal("summon","LOCALS",1)[%tab% %lnl%%mnl%%wnl%]+END\)~
~\1
CreateVisualEffect("SPFLAST2",[1995.1320])
CreateVisualEffect("SPFLSRIN",[1995.1320])
CreateCreature("QQILABY",[1995.1320],0) // Illithid avec cerveau
\2~
COMPILE_BAF_TO_BCS
BUT_ONLY_IF_IT_CHANGES
Le fait de mettre toute une partie entre \( et \) fait qu'on peut la récupérer dans la chaine de substitution en utilisant la forme \nnn, où nnn est le numéro d'ordre de la partie entre \( et \) dans la chaine de recherche.
En principe, tu pourrais même fortement alléger la deuxième partie car, à moins d'une énorme subtilité qui m'échappe, il n'y a qu'un seul bloc de script qui peut correspondre vu que ce bloc change la seule variable qu'il teste, ce qui fait qu'aucun autre bloc ne devrait avoir le même déclencheur.