1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. The Lich King demands your service! We've reached the 19th edition of the Icon Contest. Come along and make some chilling servants for the one true king.
    Dismiss Notice
  5. The 4th SFX Contest has started. Be sure to participate and have a fun factor in it.
    Dismiss Notice
  6. The poll for the 21st Terraining Contest is LIVE. Be sure to check out the entries and vote for one.
    Dismiss Notice
  7. The results are out! Check them out.
    Dismiss Notice
  8. Don’t forget to sign up for the Hive Cup. There’s a 555 EUR prize pool. Sign up now!
    Dismiss Notice
  9. The Hive Workshop Cup contest results have been announced! See the maps that'll be featured in the Hive Workshop Cup tournament!
    Dismiss Notice
  10. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Fire Ward (GUI)

Submitted by Septimus
This bundle is marked as approved. It works and satisfies the submission rules.
Detail
Status

Forum: http://septimus.invisionplus.net
Coding: GUI
Current Version: 1.07

Ability Description

Unleash 5 fire ward that would unleash a fire to the middle of the target point; each ward unleash a fire that deal a initial 65 damage. Higher level increase the amount of fire a ward unleash.

Level 1 - Unleash 1 fire.
Level 2 - Unleash 2 fire.
Level 3 - Unleash 3 fire.

Changelog
Version 1.07 Update

Fix documentation.

Version 1.06

Fix documentation.

Version 1.05

Reconstruct the entire spell, now it was fully MUI (Full credit for reconstruct goes to Dark Dragon).

Amount of fire unleash by fire ward increase by 1 per level instead of 2 for balance purpose.

Version 1.04

Optimize the code.

Version 1.03

Add lives checking condition.

Version 1.02

Optimize the code.

Version 1.01

Further optimize the maths to enable beginner to modify this spell easier.





Credit
-BerZeKeR- - Showing a efficient maths coding.
Kingz - Pointing a requirement for a condition.
xxdingo93xx - Advise in code optimize.
Dark Dragon - For fully reconstruct the entire spell to be fully MUI instead of semi MUI.

GUI Scripting
  • Initialization Fire Ward
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set FW_Point = (Center of (Playable map area))
      • Unit - Create 1 Fire Ward for Neutral Passive at FW_Point facing Default building facing degrees
      • Unit - Add Fire Ward (Ward Ability) to (Last created unit)
      • Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\Other\BreathOfFire\BreathOfFireMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Unit - Remove (Last created unit) from the game
      • Custom script: call RemoveLocation(udg_FW_Point)
      • Custom script: call DestroyGroup( udg_FW_Ward_Group[0] )
      • Custom script: call DestroyGroup( udg_FW_Ward_Group[1] )
      • Custom script: set udg_FW_Ward_Group[0] = null
      • Custom script: set udg_FW_Ward_Group[1] = null


  • Fire Ward
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Fire Ward
    • Actions
      • Set FW_Target_Location[FW_Cast_Id] = (Target point of ability being cast)
      • Set FW_Cast_Level[FW_Cast_Id] = (Level of (Ability being cast) for (Triggering unit))
      • Set FW_Cast_Duration[FW_Cast_Id] = FW_Cast_Level[FW_Cast_Id]
      • Custom script: set udg_FW_Ward_Group[udg_FW_Cast_Id] = CreateGroup()
      • Set FW_Loop_Number = 5
      • For each (Integer FW_Loop) from 1 to FW_Loop_Number, do (Actions)
        • Loop - Actions
          • Set FW_Point = (FW_Target_Location[FW_Cast_Id] offset by 500.00 towards (72.00 x (Real(FW_Loop))) degrees)
          • Unit - Create 1 Fire Ward for (Owner of (Triggering unit)) at FW_Point facing FW_Target_Location[FW_Cast_Id]
          • Unit - Add a ((Real(FW_Cast_Duration[FW_Cast_Id])) + 0.25) second Generic expiration timer to (Last created unit)
          • Unit - Add Fire Ward (Ward Ability) to (Last created unit)
          • Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Breath Of Fire FW_Target_Location[FW_Cast_Id]
          • Unit Group - Add (Last created unit) to FW_Ward_Group[FW_Cast_Id]
          • Custom script: call RemoveLocation(udg_FW_Point)
      • If (FW_Cast_Id Equal to 0) then do (Trigger - Turn on Fire Ward Shoot <gen>) else do (Do nothing)
      • Set FW_Cast_Id = (FW_Cast_Id + 1)


  • Fire Ward Shoot
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer FW_Loop) from 0 to (FW_Cast_Id - 1), do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in FW_Ward_Group[FW_Loop] and do (Actions)
            • Loop - Actions
              • Unit - Order (Picked unit) to Neutral Pandaren Brewmaster - Breath Of Fire FW_Target_Location[FW_Loop]
          • Set FW_Cast_Duration[FW_Loop] = (FW_Cast_Duration[FW_Loop] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • FW_Cast_Duration[FW_Loop] Equal to 0
            • Then - Actions
              • Custom script: call DestroyGroup(udg_FW_Ward_Group[udg_FW_Loop])
              • Custom script: call RemoveLocation(udg_FW_Target_Location[udg_FW_Loop])
              • Set FW_Cast_Id = (FW_Cast_Id - 1)
              • Set FW_Cast_Duration[FW_Loop] = FW_Cast_Duration[FW_Cast_Id]
              • Set FW_Ward_Group[FW_Loop] = FW_Ward_Group[FW_Cast_Id]
              • Set FW_Target_Location[FW_Loop] = FW_Target_Location[FW_Cast_Id]
              • Custom script: set udg_FW_Ward_Group[udg_FW_Cast_Id] = null
              • Custom script: set udg_FW_Target_Location[udg_FW_Cast_Id] = null
              • If (FW_Cast_Id Equal to 0) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
            • Else - Actions


Keywords:
Fire, Hot, Wards
Contents

Fire Ward Spells (Map)

Reviews
Moderator
16:56, 18th Jun 2009 hvo-busterkomo: Looks leak free, MUI, is well documented, and has an acceptable effect. The only problem is that it doesn't support multiple levels. Approved with a 4/5 rating.
Thread Status:
Not open for further replies.
  1. 16:56, 18th Jun 2009
    hvo-busterkomo:
    Review

    Looks leak free, MUI, is well documented, and has an acceptable effect. The only problem is that it doesn't support multiple levels. Approved with a 4/5 rating.
     
  2. -Berz-

    -Berz-

    Joined:
    Mar 5, 2008
    Messages:
    3,203
    Resources:
    123
    Icons:
    111
    Packs:
    1
    Skins:
    1
    Spells:
    10
    Resources:
    123
    As far as i know this is not MUI, because transferring units from one trigger to another, isn't that simple, but its ok, so far ;D

    Try to do this, and you won't need to calculate degrees

    • Set Location = (Target point of ability being cast)
    • Set Loop_Number = 5
    • For each (Integer A) from 1 to Loop_Number, do (Actions)
      • Loop - Actions
        • Set Loop_Location = Location offset by 500.00 towards (360.00 x ((Real((Integer A))) / (Real(Loop_Number)))) degrees)
        • Custom Script - You know how to clear leaks right? :D


    If you use this you can get rid of FW_Real Variables


    Testing...

    Seems like a good Spell with a good idea, its useful many maps.

    Only problem is in triggering (don't get me wrong, triggering is good, even I don't know how to make such spell MUI D:)

    Oh, one more thing, take a look in your Tooltip, there are some grammar mistakes like 5 ward, it should be 5 wards ^^
     
  3. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,175
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    Isn't MUI? I test it and it seems to be fine. I would try to optimize it again.
     
  4. -Berz-

    -Berz-

    Joined:
    Mar 5, 2008
    Messages:
    3,203
    Resources:
    123
    Icons:
    111
    Packs:
    1
    Skins:
    1
    Spells:
    10
    Resources:
    123
    Dunno maybe it is, I'm not some uber coder, let us wait for someone pro to tell us ;D
     
  5. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,175
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    Yeah, my maths is bad. That is why I use a rather long way to do it... :p

    Thanks for pointing out.

    Yeah, I need somebody who are good in English to help me.
     
  6. Dark_Dragon

    Dark_Dragon

    Joined:
    Jul 19, 2007
    Messages:
    596
    Resources:
    8
    Tools:
    1
    Spells:
    7
    Resources:
    8
    well again nice idea and is leakless...

    however its not MUI if its casted 1 seconds or less after first cast.

    i would suggest you to use sleep of 0.9 seconds since it will be around 1 second and then make it MUI in same trigger.

    sleeps are bad coz they are unprecious but it will help you make your spell MUI faster if you are beginner.

    well if you still want to use timers then maybe asking Paladon or Kingz would be good idea. Check there spells or ask them ~via private messages and they will try to help you.

    i wont rate it until its MUI but you have some nice ideas and spell making for beginner.

    Keep it up!
    ~Dark Dragon
     
  7. -Berz-

    -Berz-

    Joined:
    Mar 5, 2008
    Messages:
    3,203
    Resources:
    123
    Icons:
    111
    Packs:
    1
    Skins:
    1
    Spells:
    10
    Resources:
    123
    Unleashes 5 fire wards that shoots flames of fire to the middle of the target point, fire deals damage to every enemy unit being hit by it.
    Level 1 - 2 charges, 65 damage per unit
    Level 2 - 3 charges, 65 damage per unit
    Level 3 - 4 charges, 65 damage per unit

    Dunno, try it like this =)

    Its a bit hard to read, I hope it shows the point what the spell does :p
     
  8. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,175
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    The current problem is, I want to make those ward to cast fire for specific amount and then dies. It require the second trigger in order to do so.

    I know there is a alternate way with it, but it involve maths... could point out the maths solution? :p
     
  9. -Berz-

    -Berz-

    Joined:
    Mar 5, 2008
    Messages:
    3,203
    Resources:
    123
    Icons:
    111
    Packs:
    1
    Skins:
    1
    Spells:
    10
    Resources:
    123
    Somehow put "Chargesr"(Integer variable) in the Main Trigger

    set Charges = Level of (ability being cast) + 1 (so on level 1, 2 charges, on level 2, 3 charges, on level 3, 4 charges

    Then put a counter in your periodic trigger (Another integer variable and name it (dunno) Charges_Counter)

    so it would look like:

    set Charges_Counter = Charges_Counter + 1
    If
    Charges_Counter is equal to Charges
    Then
    set Charges = 0
    set Charges_Counter = 0
    turn off this trigger
    Else
    /

    If you don't understand fell free to ask :D

    Edit:

    Here is the Trigger:
    • Fire Ward
      • Events
        • Unit - A unit Starts the effect of an ability
      • Conditions
        • (Ability being cast) Equal to Fire Ward
      • Actions
        • Set FW_Target_Point = (Target point of ability being cast)
        • Set FW_Target_Position = FW_Target_Point
        • Set FW_Integer = (Level of Fire Ward (Ward Ability) for (Triggering unit))
        • Set FW_Level = (Level of Fire Ward for (Triggering unit))
        • Set FW_Charges = (FW_Level + 1)
        • For each (Integer FW_Integer) from 1 to 5, do (Actions)
          • Loop - Actions
            • Set FW_Spawn_Point = (FW_Target_Position offset by 500.00 towards (FW_Real + 72.00) degrees)
            • Unit - Create 1 Fire Ward for (Owner of (Triggering unit)) at FW_Spawn_Point facing FW_Target_Point
            • Unit - Add a ((Real(FW_Level)) + 3.00) second Generic expiration timer to (Last created unit)
            • Unit - Add Fire Ward (Ward Ability) to (Last created unit)
            • Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Breath Of Fire FW_Target_Position
            • Set FW_Real = (FW_Real + 72.00)
            • Custom script: call RemoveLocation(udg_FW_Spawn_Point)
        • Custom script: call RemoveLocation(udg_FW_Target_Point)
        • Custom script: call RemoveLocation(udg_FW_Target_Position)
        • Trigger - Turn on Fire Ward Shoot <gen>


    • Fire Ward Shoot
      • Events
        • Time - Every 1.00 seconds of game time
      • Conditions
      • Actions
        • Set FW_Group = (Units of type Fire Ward)
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • (Number of units in FW_Group) Greater than 0
          • Then - Actions
            • Unit Group - Pick every unit in FW_Group and do (Actions)
              • Loop - Actions
                • Set FW_Facing_Real = (Facing of (Picked unit))
                • Set FW_Spell_Position = (Position of (Picked unit))
                • Set FW_Spell_Position_2 = (FW_Spell_Position offset by 500.00 towards FW_Facing_Real degrees)
                • Unit - Order (Picked unit) to Neutral Pandaren Brewmaster - Breath Of Fire FW_Spell_Position_2
                • Custom script: call RemoveLocation(udg_FW_Spell_Position)
                • Custom script: call RemoveLocation(udg_FW_Spell_Position_2)
          • Else - Actions
            • Set Charges_Counter = (Charges_Counter + 1)
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • Charges_Counter Equal to FW_Charges
              • Then - Actions
                • Set Charges_Counter = 0
                • Set FW_Charges = 0
                • Custom script: call DestroyGroup(udg_FW_Group)
                • Trigger - Turn off (This trigger)
              • Else - Actions


    Edit;

    Oh....I forgot to include the trigger i posted in my first post D:
    Will you manage to put that in? ;D
     
  10. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,175
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    Ok, I update it according to your way.

    I am not sure if it was MUI or not after I update it using your way....
     
  11. -Berz-

    -Berz-

    Joined:
    Mar 5, 2008
    Messages:
    3,203
    Resources:
    123
    Icons:
    111
    Packs:
    1
    Skins:
    1
    Spells:
    10
    Resources:
    123
    Nope it's not MUI D: As I said, I don't know how to make that sort of spells MUI, sorry :S
     
  12. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,175
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    You should have said it isn't MUI. I just want a MUI spell.
     
  13. Kingz

    Kingz

    Joined:
    Jun 5, 2008
    Messages:
    2,470
    Resources:
    6
    Spells:
    5
    Tutorials:
    1
    Resources:
    6
    Since you are new to spellmaking i won't bug you how inefficent is the way you made it MUI.
    Yes i tested it, put cooldown to 0 and it is MUI.
    Possible improvements:
    • better loop trigger coding
    • implementation of indexes
    • arrayed variables
    When i said better loop trigger i meant that it looks non unique like this, every single ward on the map will fire on the same moment even if they are summoned in difrent time intervals.
    Example:
    1 cast i summon the wards, i wait 1.6 seconds, the wards fired 2 times by now.
    2 cast i summon the wards, i before waited 1.6 seconds, the wards fire immediatly and after 0.4 seconds again.
    Well nice for a beginer but you should now try to make something more complex and try to make a spell more trigger, less object based.
    That way you will improve your triggering.
    Just to notify you, dead units are picked when using Units of Type in the unit group. This doesn't make a big difrence though, only ~2-3 seconds wait before the trigger turns off.
    Only thing i can recommend you is to take a look at tutorials about indexing that is how to make MUI spells via index's.
    There is one tutorial about it in my signature...
    Hope this helped.
     
  14. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,175
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    But, did't a dead unit would be remove right away if the death status was set to cannot raise, does not decay?
     
  15. Kingz

    Kingz

    Joined:
    Jun 5, 2008
    Messages:
    2,470
    Resources:
    6
    Spells:
    5
    Tutorials:
    1
    Resources:
    6
    No you need a condition to check unit status.
    Dead units stay memorised some time in warcraft until it removes them.
    And you don't need to change anything in your spell it is MUI.
    I only said i tested it by spamming it and it didn't bug.
    That is what i meant when i said: "I put the cooldown to 0"
    How else could i spam it?
     
  16. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,175
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    So it was safe? Ok, I would add condition asap.
     
  17. Kingz

    Kingz

    Joined:
    Jun 5, 2008
    Messages:
    2,470
    Resources:
    6
    Spells:
    5
    Tutorials:
    1
    Resources:
    6
    Yep spammed it as fast as i can and it didn't crashed^^
    Well it is a matter of 3 seconds, the thing you should try is to get better at triggering.
     
  18. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,175
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    I have add the life condition just like you told, hopefully everything work even better now.

    And of course it won't crash, I have test it before I release it to the public.. :=P

    I have to take time to learn about indexing, loop and array. Those involves maths and my maths was rather bad. :=/
     
  19. Dark_Dragon

    Dark_Dragon

    Joined:
    Jul 19, 2007
    Messages:
    596
    Resources:
    8
    Tools:
    1
    Spells:
    7
    Resources:
    8
    many spells which are casted at same time but are not MUI do not bug.
    however there are things which make it non-MUI.
    spamming spell is a bad way of testing is spell MUI, but checking code is always the safe method.

    i am not saying that every non-MUI spell does not bug so user can see quickly that its non-MUI.

    ill tell you why this spell is not MUI.

    if we look like this someone uses this spell so trigger is executed and second time someone else casts it trigger is again executed so first trigger reaches its timer limit and it says pick every unit of type... there are 2x of this unit types in map now coz there are 2 casts. i think one cast summons 5 units so if there are 2 casts that means there are now 10 units. His action tells for each of this units cause dummy to cast spell... but wait it should be only 5 units coz this is first cast but his second cast is now executed as well so damage for both spells is done now but second cast is just now to be executed and will deal even more damage.

    in fact he will always deal extra damage on spell casts, when casted in less then or equil 1 second right?

    so its logical that he will deal this amount of damage

    Code (Text):

    damage dealt = 100*number of instant casts^2 %
     
    so lets see example you cast it once at a time:
    100*1^2 = 100% damage -> good it works well

    now cast it 2 times at same time
    100*2^2 = 400% damage -> bad two casts deal 400% damage it should be 200%

    3 casts at same time
    100*3^2 = 900% damage -> bad it should be 300% damage coz 3 casts


    i hope you can understand now that its not MUI... and i hope i described it well
    try to make it MUI, if you need help and cant find it ask me and ill help you!
    ~Dark Dragon
     
Thread Status:
Not open for further replies.