Inscrit le: 30 Oct 2013 Messages: 284 Sujets: 21 Spécialité en worldedit: Spellmaker
Posté le: 25/11/18 16:40 Sujet du message: [GUI] [MUI] Orbes de lumière
Bonjour ! Ça faisait longtemps que je n'avais pas posté sur le forum (même si je n'avais pas arrêté de le lire) et, à vrai dire, assez longtemps que je n'avais pas mappé sur W3. J'espère que tout va bien pour tout le monde ici en tous cas. Pour me dérouiller un peu, je me suis essayée à refaire un sort. Normalement, le sort devrait être MUI et (je crois ?) leakless. Ceci étant, comme dit précédemment, cela fait vraiment longtemps que je n'avais pas fait de sorts sur W3 et j'avais un peu perdu la main : il est donc tout à fait possible que quelques erreurs se soient glissées malgré tout.
Evidemment le sort n'est pas réellement bien qualibré, libre à chacun de modifier les valeurs dans l'éditeur (notamment pour tout ce qui est temps de recharge, coût en mana etc...)
J'ai essayé de rendre le sort aussi facilement modifiable que possible, donc celleux qui souhaiteraient l'utiliser en changeant des valeurs, tout devrait être facilement accessible dans le déclencheur LO Initialization Var.
Ah et une dernière chose. J'ai choisi une solution de facilité en rendant le sort essentiellement monocible mais je pensais potentiellement le modifier pour qu'en ajoutant des cibles au sort du dummy (basé sur chaîne d'éclair) le sort puisse infliger des dégâts à toutes les unités touchées. Si je le fais je mettrai la nouvelle version en-dessous !
Table de hachage - Create a hashtable Set LO_Hashtable = (Last created hashtable) Set LO_Ability = Light Orbs Set LO_DmgType = Divin Set LO_AttackType = Sorts -------- Angle max = L'écart entre les orbes. Un angle max plus important augmentera l'écart en éloignant le point d'apparition du premier et du dernier orbe -------- Set LO_Angle_Max = 60.00 -------- Ecart max = L'écart supplémentaire maximum que vous voulez appliquer pour laisser une distance raisonnable entre les orbes en lançant le sort à courte distance. -------- Set LO_EcartMax = 15.00 Set LO_DistanceMax = 700.00 -------- Orbs Growth Rate = La vitesse à laquelle les orbes vont s'agrandir (en %). Laisser une valeur faible est conseillé. -------- Set LO_OrbsGrowthRate = 1.00 Set LO_Nb_Orbes[1] = 3 Set LO_Nb_Orbes[2] = 5 Set LO_Nb_Orbes[3] = 7 Set LO_TimerMax_Ini[1] = 50.00 Set LO_TimerMax_Ini[2] = 50.00 Set LO_TimerMax_Ini[3] = 50.00 Set LO_TimerReduction_Ini[1] = 1.00 Set LO_TimerReduction_Ini[2] = 1.00 Set LO_TimerReduction_Ini[3] = 1.00 Set LO_DamagesIni[1] = 9.00 Set LO_DamagesIni[2] = 9.00 Set LO_DamagesIni[3] = 9.00
Lancement du sort
Secret:
Gui:
Trigger:
Light Orbs
Evénements
Unité - A unit Initie l'effet d'une compétence
Conditions
(Ability being cast) Egal à LO_Ability
Actions
Set LO_Target = (Target unit of ability being cast) Set LO_Caster = (Triggering unit) Set LO_Damage = LO_DamagesIni[(Level of LO_Ability for LO_Caster)] Set LO_TimerMax = LO_TimerMax_Ini[(Level of LO_Ability for LO_Caster)] Set LO_TimerReduction = LO_TimerReduction_Ini[(Level of LO_Ability for LO_Caster)] Set LO_Timer = (LO_TimerMax / 4.00) Set LO_Distance_Cible = (25.00 + (Distance between (Position of LO_Caster) and (Position of LO_Target))) Set LO_Angle_Cible = (Angle from (Position of LO_Caster) to (Position of LO_Target)) Set LO_Orbs = (LO_Nb_Orbes[(Level of Light Orbs for LO_Caster)] - 1) Set LO_ANgleLocal = (LO_Angle_Max + ((LO_DistanceMax - LO_Distance_Cible) / LO_EcartMax)) Set LO_OrbsGrowthCurrent = 100.00
For each (Integer A) from 0 to LO_Orbs, do (Actions)
Boucle - Actions
Set LO_OrbPoint = ((Position of LO_Target) offset by LO_Distance_Cible towards ((LO_Angle_Cible + (180.00 - (LO_ANgleLocal / 2.00))) + ((LO_ANgleLocal / (Real(LO_Orbs))) x (Real((Integer A))))) degrees) Unité - Create 1 Dummy Light ball for (Owner of LO_Caster) at LO_OrbPoint facing Orientation bâtiment par défaut degrees Unité - Change color of (Last created unit) to Jaune Animation - Change (Last created unit) flying height to ((Current flying height of LO_Caster) + 150.00) at 999999.00 Groupe unité - Add (Last created unit) to LO_GrpOrbs Custom script: call RemoveLocation( udg_LO_OrbPoint )
Groupe unité - Add LO_Caster to LO_GrpCasters Table de hachage - Save Handle OfLO_Target as 1 of (Key (Triggering unit)) in LO_Hashtable Table de hachage - Save LO_Damage as 2 of (Key (Triggering unit)) in LO_Hashtable Table de hachage - Save LO_Timer as 3 of (Key (Triggering unit)) in LO_Hashtable Table de hachage - Save LO_TimerMax as 4 of (Key (Triggering unit)) in LO_Hashtable Table de hachage - Save LO_TimerReduction as 5 of (Key (Triggering unit)) in LO_Hashtable Table de hachage - Save Handle OfLO_GrpOrbs as 6 of (Key (Triggering unit)) in LO_Hashtable Table de hachage - Save LO_OrbsGrowthCurrent as 7 of (Key (Triggering unit)) in LO_Hashtable Déclencheur - Turn on LO Timer <gen>
Activation via timer :
Secret:
Gui:
Trigger:
LO Timer
Evénements
Temps - Every 0.03 seconds of game time
Conditions
Actions
Groupe unité - Pick every unit in LO_GrpCasters and do (Actions)
Boucle - Actions
Set LO_Caster = (Picked unit) Set LO_Timer = (Load 3 of (Key (Picked unit)) from LO_Hashtable) Set LO_TimerMax = (Load 4 of (Key (Picked unit)) from LO_Hashtable) Set LO_TimerReduction = (Load 5 of (Key (Picked unit)) from LO_Hashtable) Set LO_Timer = (LO_Timer - LO_TimerReduction) Set LO_GrpOrbs = (Load 6 of (Key (Picked unit)) in LO_Hashtable) Table de hachage - Save Handle OfLO_GrpOrbs as 6 of (Key (Triggering unit)) in LO_Hashtable
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
LO_Timer Inférieur ou égal à 0.00
Alors - Actions
Set LO_Target = (Load 1 of (Key (Picked unit)) in LO_Hashtable) Set LO_Damage = (Load 2 of (Key (Picked unit)) from LO_Hashtable) Set LO_OrbsGrowthCurrent = 80.00
Groupe unité - Pick every unit in LO_GrpOrbs and do (Actions)
Boucle - Actions
Animation - Change (Picked unit)'s size to (LO_OrbsGrowthCurrent%, LO_OrbsGrowthCurrent%, LO_OrbsGrowthCurrent%) of its original size Unité - Order (Picked unit) to Prophète orc - Chaîne d'éclairs LO_Target Unité - Cause LO_Caster to damage LO_Target, dealing LO_Damage damage of attack type LO_AttackType and damage type LO_DmgType
Set LO_Timer = LO_TimerMax
Sinon - Actions
Set LO_OrbsGrowthCurrent = (Load 7 of (Key (Picked unit)) from LO_Hashtable) Set LO_OrbsGrowthCurrent = (LO_OrbsGrowthCurrent + LO_OrbsGrowthRate)
Groupe unité - Pick every unit in LO_GrpOrbs and do (Actions)
Boucle - Actions
Animation - Change (Picked unit)'s size to (LO_OrbsGrowthCurrent%, LO_OrbsGrowthCurrent%, LO_OrbsGrowthCurrent%) of its original size
Table de hachage - Save LO_Timer as 3 of (Key (Picked unit)) in LO_Hashtable Table de hachage - Save LO_OrbsGrowthCurrent as 7 of (Key (Picked unit)) in LO_Hashtable
Groupe unité - Pick every unit in LO_GrpOrbs and do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
((Picked unit) is dead) Egal à TRUE
Alors - Actions
Groupe unité - Remove (Picked unit) from LO_GrpOrbs Groupe unité - Remove LO_Caster from LO_GrpCasters Table de hachage - Clear all child hashtables of child (Key (Picked unit)) in LO_Hashtable
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(LO_GrpCasters is empty) Egal à TRUE
Alors - Actions
Déclencheur - Turn off (This trigger)
Sinon - Actions
Voilà ! Sur ce, j'espère que ce sort vous plaît, il n'est pas particulièrement complexe ou même graphiquement spectaculaire mais c'était in fine une manière assez plaisante de s'y remettre. _________________
Le vaste monde vous entoure de tous côtés ; vous pouvez vous enclore, mais vous ne pouvez éternellement le tenir en dehors de vos clôtures.
John Ronald Reuel Tolkien.
Hâtez-vous lentement, et sans perdre courage,
Vingt fois sur le métier remettez votre ouvrage.
Polissez-le sans cesse, et le repolissez.
Ajoutez quelquefois, et souvent effacez.
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum