Page 1 sur 1

[WeiDU] Modifier les sorts protégeant contre les projectiles

Posté : lun. 16 juin 2014, 20:21
par Freddy_Gwendo
Je viens de terminer ma première série de nouveaux projectiles pour des armes de lancer. Grâce aux nouvelles fonctions de WeiDU, je peux les ajouter à la liste des sorts protégeant contre les projectiles non-magiques.

Code : Tout sélectionner

// Prot. contre proj. non-magiques - Barrière de lames

ACTION_FOR_EACH file IN ~SPWI311~ ~SPIN546~ BEGIN
  ACTION_IF (FILE_EXISTS_IN_GAME ~%file%.SPL~) THEN BEGIN
  COPY_EXISTING ~%file%.SPL~ ~override~
  PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
	LPF ADD_SPELL_EFFECT INT_VAR opcode = 83 target = 2 timing = 0 parameter2 = (%GWDag51% - 1) power = 3 resist_dispel = 3 duration = 300 STR_VAR resource = "" END
	LPF ADD_SPELL_EFFECT INT_VAR opcode = 83 target = 2 timing = 0 parameter2 = (%GWDag52% - 1) power = 3 resist_dispel = 3 duration = 300 STR_VAR resource = "" END
  END
  BUT_ONLY_IF_IT_CHANGES
  END
END
Je vais faire la même chose avec ceux qui les renvoient.
Cependant, je me demande si certains mods (comme Spell Revision) ne modifient pas ces sorts (notamment en modifiant leur durée, voire en l'adaptant au niveau), ce qui m'obligerait à revoir ce code.
J'ai répertorié dans un premier temps Prot. contre proj. non-magiques (SPWI311 et SPRA303), Barrière de lames (SPIN546), Évasion (SPCL914) et Bouclier des tempêtes (SPCL721), sans oublier Wind Wall (RR#ECHWW).

Bref, avez-vous noté quelque part une modification de ces sorts dans vos installations ? Ça me ferait gagner du temps avant de tous les désarchiver.

Merci d'avance.

Posté : mer. 25 juin 2014, 20:55
par deratiseur
Sur ma mega install, au niveau des sorts qui protègent contre les projectiles il y a aussi DW#0W311 (venu de SCS v28), PXW6BOUC, PXW6BOUV, PXW6BOUX,PXW6BOUY, PXW8COUV, PXW8COVG, PXW8COVV, PXW8COVX, PXW8COVY (tous tiré du DUKP 0.9.8 RFT), SPPR322 et SPWI927. (cherché avec la fonction "find selected attribute" de near infinity)

Au niveau des modules qui modifient certains de ces sorts, il y a spell revision et one pixel production. Sword and fist copie également certains de ces sort pour en faire des capacités de ses kits. (trouvé avec la fonction "chercher dans les fichiers d'un dossier ->sur les tph et les tp2 avec Notepad++)

Posté : jeu. 26 juin 2014, 19:37
par Freddy_Gwendo
Merci pour les infos.

J'avais repéré les modfis de 1PP puisqu'il fait partie de mon clone de base. D'ailleurs, après vérif, son tph utilise la fonction d'une version précédente de WeiDU (déclaration des paramètres avant le lancement).

Mais comme je n'ai toujours pas désarchivé tous les mods et que je n'aime pas les méga installs (je préfère tester les mods un par un pour mieux appréhender leur contenu...), les tester tous peut me prendre du temps. Donc ton post est le bienvenu.

Du coup, je pense que je n'ai rien à perdre à modifier le patch en allant vérifier s'il y a plusieurs headers (un par niveau) et rajouter mes opcodes en fonction. Ça sera plus long à coder mais me fera gagner du temps au fur et à mesure que je trouverai de nouveaux sorts à modifier.

Posté : mer. 11 nov. 2015, 18:27
par Freddy_Gwendo
Après de longues galères, j'ai enfin réussi à pondre une fonction qui patche à la fois les effets des sorts et des objets, et leurs effets globaux (ainsi que ceux des créatures).

La difficulté venait des différentes structures des divers formats d'effets utilisés par les fichiers créatures, objets et sorts. Heureusement, Wisp m'a communiqué la manière dont il avait résolu le problème pour la fonction CLONE_EFFECT de WeiDU. Et du coup, il ne m'a fallu qu'une demi-heure pour l'adapter à ma fonction. ;)

Pour l'utiliser, c'est simple, il suffit de modifier les lignes 105 et pour 157 pour modifier les nouveaux projectiles à prendre en compte :

Code : Tout sélectionner

PATCH_FOR_EACH GW_projo IN ~%GWDag51%~ ~%GWDag52%~ BEGIN
Par ailleurs, vous pouvez modifier les paramètres de la ligne 179 :

Code : Tout sélectionner

PATCH_FOR_EACH op IN 83 197 BEGIN	// Protection: From Projectile [83] - Spell: Bounce Projectile [197]
    LPF ~GW_EFFECT_TO_CLONE~ INT_VAR GW_global_effects = 2 GW_opcode_to_check = EVAL %op% GW_param2_to_check = 4 END
END
GW_global_effects a pour valeur de base 0 (Pas de vérification des effets globaux), mais on peut lui attribuer la valeur 1 (uniquement les effets globaux) ou 2 (effets globaux et effets des extended headers).

Enfin, vous pouvez dé-commenter (ajouter // devant ) ou supprimer les lignes 82 à 84 et 160 à 162 :

Code : Tout sélectionner

PATCH_IF debug_variable > 0 BEGIN
	PATCH_PRINT "%SOURCE_FILE% MODIFIE POUR AJOUTER LES EFFETS GLOBAUX de PROTECTION CONTRE LES NOUVEAUX PROJECTILES."
END
qui permettent de lire dans le fichier DEBUG quels fichiers ont été modifiés.

Si vous comptez utiliser cette vérification, N'OUBLIEZ PAS d'attribuer une valeur à cette variable avant de lancer la fonction.

Code : Tout sélectionner

SET debug_variable = 1 (ou 2, ou 3, ou .... - toujours supérieure à 0)
En espérant que ça vous fera gagner autant de temps qu'à moi. :)