Voici le code qui dérive un sort à 1 habilité en sorts à plusieurs habilités :
Code : Tout sélectionner
//Dérive un sort composé d'une seul niveau en plusieurs niveaux. (fourni par le génialissime Zranoff de Legends)
DEFINE_PATCH_FUNCTION MULTI_LEVELS
BEGIN
READ_LONG 0x64 ZF_abilities_off
READ_SHORT 0x68 ZF_num_abilities
READ_SHORT 0x82 ZF_niv_min
READ_SHORT 0x90 ZF_nb_feat
SET ZF_c=0
FOR (ZF_i = ZF_niv_min+ZF_inc_level; ZF_i < ZF_max_level+1; ZF_i += ZF_inc_level) BEGIN
SET ZF_c=ZF_c+1
READ_ASCII 0x72 ZF_ability (0x28)
INSERT_BYTES (0x72+ZF_c*0x28) 0x28
WRITE_ASCIIE (0x72+ZF_c*0x28) ~%ZF_ability%~
WRITE_SHORT (0x72+ZF_c*0x28+0x10) ZF_i
END
WRITE_SHORT 0x68 ZF_num_abilities+ZF_c
WRITE_LONG 0x6a 0x72+(ZF_c+1)*0x28
SET ZF_d=0
SET ZF_h=ZF_nb_feat*0x30
FOR (ZF_i = ZF_niv_min+ZF_inc_level; ZF_i < ZF_max_level+1; ZF_i += ZF_inc_level) BEGIN
SET ZF_d=ZF_d+1
READ_ASCII 0x72+(ZF_c+1)*0x28+(ZF_d - 1)*ZF_h ZF_features (ZF_h)
INSERT_BYTES (0x72+(ZF_c+1)*0x28+ZF_d*ZF_h) ZF_h
WRITE_ASCIIE (0x72+(ZF_c+1)*0x28+ZF_d*ZF_h) ~%ZF_features%~
FOR (ZF_z=0;ZF_z<ZF_nb_feat;ZF_z=ZF_z+1)BEGIN
READ_LONG (0x72+(ZF_c+1)*0x28+(ZF_d - 1)*ZF_h+0x30*ZF_z+0x0e) ZF_duree_min
PATCH_IF (ZF_duree_min>4)THEN BEGIN
WRITE_LONG (0x72+(ZF_c+1)*0x28+ZF_d*ZF_h+0x30*ZF_z+0x0e) ZF_duree_min+ZF_inc_duree
END
END
WRITE_SHORT (0x72+ZF_d*0x28+0x20) ZF_d*ZF_nb_feat
END
WRITE_BYTE 0x82 1
END
Pour utiliser ce code, je crée un sort avec 1 seule habilité, en mettant le niveau de l'habilité au niveau du mage au moment ou il peut l'utiliser (par exmple niveau 7 pour un sort lvl 4). Ensuite le code me crée tous les niveaux de 8 à 20 (suivant les paramètres) en changeant les durées suivant le paramètres (en secondes). A la fin, il indique "niveau 1" à la première habilité. (Oui, j'ai compris, je devrais dire "Header")
Et voilà comment je l'appele pour mon sort :
Code : Tout sélectionner
ADD_SPELL ~Derats_Magasin_2/Sorts/pxl2aur2.spl~ 2 4 WIZARD_PX_RESISTANCE_AURA SPRINT current_spell_res "%DEST_RES%" SET ZF_max_level = 20 SET ZF_inc_level = 1 SET ZF_inc_duree = 6 LPF MULTI_LEVELS END
READ_LONG 0x64 abilities_off
READ_SHORT 0x68 num_abilities
READ_LONG 0x6a effects_off
READ_SHORT 0x90 num_effects
FOR (i=1; i<num_abilities; i+=1) BEGIN // pour chaque habileté
FOR (a=1 ; a<8 ; a+=1) BEGIN //pour chaque effet du 2ème au 8eme
WRITE_SHORT 0x2a6+a*0x30 5+i //indiquer le chiffre de 5+niveau du lanceur
END
END
pour le dukp ça marche très bien, après application du LPF MULTI_LEVELS END j'ai souvent utilisé la routine pour patcher chaque habilité. Mais je n'ai jamais combiné "patcher chaque effet dans chaque habilité". Et ça coince.
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.
Mes mods sont tous sur
Mediafire et
Github
Et leurs descriptions sont
ici.