Rieccomi a parlare di war!
Se avete scaricato la spell vedrete che è diversa da quella che descriverò quì sotto, per il semplice motivo che questa è semplificata e migliorata.

Dopo aver settato tutte le variabili nella precedente lezione, possiamo iniziare a buttare giù codici :D

Creaimo un IF multiple Functions, nel quale ci metteremo tutta la spell.
Settiamogli subito una condizione per determinare quando dovrà “spiroettare” >: D
Selezionate Integer Comparison e settatelo in modo da ottenere questo:

axe_random screen

Impostare in questo modo la condizione del primo IF

Aggiungiamo anche:
(Level of Dance of Axe  for Axe_Caster) Maggiore di 0

Seconda condizione del primo IF

Seconda condizione del primo IF

Se tutte le condizioni si verificano, si svolgeranno le azioni che si trovano in “Allora” (in caso contrario si verificano le azioni che si trovano in “Altrimenti”)
Andate in AZIONI(dell’IF) e Scegliete: Gruppo di Unità

Settaggi del Gruppo di units

Settaggi del Gruppo di units

Subito dopo settiamo una variabile:
Set Axe_Damage[(Level of Dance of Axe  for Axe_Caster)] = (Axe_Damage[(Level of Dance of Axe  for Axe_Caster)] + (Random real number between 0.00 and 15.00))
Questo non è necessario ma è solo per dare un tocco di classe alla spell ;)
Ecco una breve descrizione:
Setta la variabile Axe_Damage al numero dell’array corrispondende al livello della spell Dance of Axe di Axe_Caster(hero). è uguale(=) a  sestesso(tutto quello detto prima) + un numero randon compreso tra Zero(0.00) e 15.

Well.. Ora.. Inseriamo un altro IF dentro il Gruppo di Unità e inseriamo queste 3 condizioni:

  1. (Owner of (Picked unit)) Diverso da Axe_Owner
    Se Il possessore di Picked Unit(l’unita rilevata dal giro delle unità generato dal “Gruppo di unità”) è diverso dal Caster..
  2. ((Owner of (Picked unit)) is an ally of Axe_Owner) Uguale a FALSE
    Se il possessore di un unità rilevata NON è un alleato del Caster.. (sarebbe andato bene anche: ((Picked player) is an ally of Axe_Owner) Uguale a FALSE)
  3. ((Picked unit) is dead) Uguale a FALSE
    e.. Se l’unità non è morta, cioè viva..

In “Azioni” inseriamo Unità – Damage Target e configuriamolo così:
Unità  – Cause Axe_Caster to damage (Picked unit), dealing Axe_Damage[(Level of Dance of Axe  for Axe_Caster)] damage of attack type Normale and damage type Normale
Spiegazione:
Causa un danno da Axe_Caster a Picked Unit infliggendo un danno pari a Axe_Damage[(Level of Dance of Axe  for Axe_Caster)] e il tipo di danno.. Normale è un danno fisico, e non verrà ridotto con oggetti/abilità che riducono il danno magico, e in più con aura vampirica(o simili) il Caster acquisirà HP!

Fatto ciò diamo a Grom l’animazione che più si addice, cioè “Attack Walk Stand Spin”
Animazione – Play Axe_Caster’s Attack Walk Stand Spin animation

Inseriamo anche un effetto speciale, un pò di sangue perso dalle unità nemiche..
Effetto speciale – Create a special effect attached to the origin of (Picked unit) using Objects\Spawnmodels\Human\HumanBlood\BloodElfSpellThiefBlood.mdl

** Questo passaggio NON è obbligatorio, serve per visualizzare il danno provocato ad ogni unità! **

Aggiungere un IF con la seguente condizione:
System_Dance_of_Axe Uguale a TRUE
System_Dance_of_Axe è una variabile(boolean) che può essere attivata e disattivata da un altro trigger.

Allora – Azioni
Testo fluttuante – Create floating text that reads ((String((Integer(Axe_Damage[(Level of Dance of Axe  for Axe_Caster)])))) + !) above (Picked unit) with Z offset 0.00, using font size 10.00, color (80.00%, 30.00%, 30.00%), and 0.00% transparency
Testo fluttuante – Change (Last created floating text): Disattiva permanence

Testo fluttuante – Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
Testo fluttuante – Change the fading age of (Last created floating text) to 2.00 seconds
Testo fluttuante – Change the lifespan of (Last created floating text) to 5.00 seconds

Questi ultimi 3 valori posso essere modificati a propria scelta, riguardano la distanza, la velocità di spostamento, la vita e il fade del testo.

** Fine della visualizzazione del danno **

Infine, inserire un Wait di durata 0.27. E’ la precisa durata dell’animazione..
Wait 0.27 seconds
Allo scadere di questo tempo dobbiamo resettare grom per farlo tornare normale;
Animazione – Reset Axe_Caster’s animation

Infine eliminiamo i residui :)
Effetto speciale – Destroy (Last created special effect)

Risultato finale:

Trigger - risultato finale

Risultato finale dei trigger.

Per attivare o disattivare la visuale del danno:
Attiva Disattiva Axe

Eventi

Giocatore – Giocatore types a chat message containing -damage as Corrispondenza esatta

Azioni

If (All Conditions are True) then do (Then Actions) else do (Else Actions)

Se – Condizioni

System_Dance_of_Axe Uguale a TRUE

Allora – Azioni

Set System_Dance_of_Axe = FALSE
Partita – Display to (All players) the text: |cff7777aaVisuale danno Dance of Axe disattivato.|r

Altrimenti – Azioni

Set System_Dance_of_Axe = TRUE
Partita – Display to (All players) the text: |cff7777aaVisuale danno Dance of Axe Attivo.|r

Per chiarimenti, domande, consigli, critiche lasciate un commento! HF!

Alla prossima lezione :)

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Tags: , , , , , , , , , , , , , , ,
Prissimo articolo Improved tagboard v1.1
Articolo precedente [World Editor] Aprire e chiudere un portale da chat