• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!
  • ✅ The POLL for Hive's Texturing Contest #34 is OPEN! Vote for the TOP 3 SKINS! 🔗Click here to cast your vote!
  • ✅ The POLL for Hive's Techtree Contest #20 is OPEN! Vote for the TOP 3 FACTIONS! 🔗Click here to cast your vote!

Fiery Damnation v1.31 Gui and Jass

-Spell is gui, mui, epic
-This one's made by myself and therefore, please give credits if you like it and want to use it.

Fiery Damnation
BTNFireForTheCannon.png
Shoots out three huge firebolts which explode, dealing damage while moving and on impact to all nearby enemy units.
The ground starts to burn for a certain time damaging all enemies who get near the flames

GUI:v1.01:
~Changed the If/Then/Else
~Added deatils to the tooltip

v1.11:
~Due to heavy drama, I deleted two lines of the third trigger

v1.20 Seeing the firetrace as a massive effectspam, I just removed it and modified some tiny bits of the code

JASS: v1.01:
Corrected some stuff

v1.02:
Meeeeeh.. here you got your constant

v1.10:
Rewrote some stuff, merged the two scopes

v1.11:
Rewrote MOAR


JASS:
//==Fiery Damnation v1.31==
//Credits got to: HINDYhat for teaching jass :p
//Needs jngp
//2oo9 by Squiggy

scope FieryDamnation initializer Init                                     //Yea, the first scope handles the dummycreation and the order to move forward
    
    globals                                                                 //I've seperated the globals into two blocks - the first one's important to modify the spell
        private constant integer SPELLID = 'A001'                           //We set up the constants for the spellid, the dummyability, the angle in which the dummies appear
        private constant integer ABILITYID = 'A000'                         //and the dummyid as well as the path to the effect which is done when casting
        private constant integer DUMMYID = 'n000'
        private constant integer DUMMY2ID = 'n001'
        private constant string EFFPATH = "Abilities\\Weapons\\DemolisherFireMissile\\DemolisherFireMissile.mdl"
        private constant string EFFPATH2 = "Objects\\Spawnmodels\\Other\\NeutralBuildingExplosion\\NeutralBuildingExplosion.mdl"
        private constant real LIFEFACTOR = 5
    endglobals
    
    globals
        private player p
    endglobals
    
    private function Conditions takes nothing returns boolean
        return GetSpellAbilityId() == SPELLID                                //First, check which ability is cast
    endfunction
    
    private function Conditions2 takes nothing returns boolean
        return GetUnitTypeId(GetTriggerUnit()) == DUMMYID            //We check which unit dies
    endfunction
    
    private function Actions takes nothing returns nothing
        local unit caster = GetTriggerUnit()
        local real expTime
        local real x = GetUnitX(caster)
        local real y = GetUnitY(caster)
        local real facing = GetUnitFacing(caster)-30                        //Here, we set the angle in which to first dummy should move to the caster's - 30
        local real dx
        local real dy
        local unit u
        local integer I = 0
        local location targloc = GetSpellTargetLoc()        
        set p = GetOwningPlayer(caster)
        set dx = GetLocationX(targloc)-x
        set dy = GetLocationY(targloc)-y
        set expTime = SquareRoot(dx * dx + dy * dy)/425
        loop
            exitwhen I == 3
            set dx = x+700*Cos((facing+I*30)*bj_DEGTORAD)                   //Here we set up the targetpoint
            set dy = y+700*Sin((facing+I*30)*bj_DEGTORAD)
            set u = CreateUnit(p, DUMMYID, x, y, facing+I*30)                //The dummy
            call IssuePointOrder(u, "move", dx, dy)
            call UnitApplyTimedLife(u, 'BTLF', expTime)
            call SetUnitAbilityLevel(u, ABILITYID, GetUnitAbilityLevel(caster, SPELLID))    //Now we align the dummy's immolation ability to the caster's level of the ability
            call DestroyEffect(AddSpecialEffect(EFFPATH,x, y))              //And last, some effect
            set I = I + 1
        endloop
        set caster = null
        call RemoveLocation(targloc)
        set targloc = null
        set u = null
    endfunction
    
    private function Actions2 takes nothing returns nothing                     //Now the second actions-function is to handle everything what happens when the dummy dies
        local unit u = GetTriggerUnit()
        local real x = GetUnitX(u)
        local real y = GetUnitY(u)
        local real exptimer = GetUnitAbilityLevel(u, ABILITYID)                 //We set the timer of the dummy to lvl    
        set u = CreateUnit(GetOwningPlayer(u), DUMMY2ID, x, y, 90)              //We spawn the new dummy
        call UnitApplyTimedLife(u, 'BTLF', exptimer*(LIFEFACTOR))               //And now we attach the timer to it
        call DestroyEffect(AddSpecialEffect(EFFPATH2,x, y))                      //It's ordered to cast 'fan of knives' 
        set u = null
    endfunction
    
    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger()
        local trigger t2 = CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
        call TriggerAddCondition(t, Condition(function Conditions))
        call TriggerAddAction(t, function Actions)
        call TriggerRegisterAnyUnitEventBJ(t2, EVENT_PLAYER_UNIT_DEATH)
        call TriggerAddCondition(t2, Condition(function Conditions2))
        call TriggerAddAction(t2, function Actions2)
    endfunction
endscope

Keywords:
fire, flame, burn, firebolt, hot, heat, explode, aoe, sfx, squiggy, epic, lulz
Contents

Holy Execution (Map)

Reviews
20:25, 10th Jun 2009 hvo-busterkomo: An impressive effect, with acceptable scripting. A complain of mine is that you don't use the If / Then / Else multiple functions. Because of that, your code is less readable and contains the Do Nothing function...
20:25, 10th Jun 2009
hvo-busterkomo: An impressive effect, with acceptable scripting. A complain of mine is that you don't use the If / Then / Else multiple functions. Because of that, your code is less readable and contains the Do Nothing function.

Edit: Changes made, looks good.

02:58, 12th Jun 2009
Eccho:
The effect are nice, and the scripting is acceptable and that's it. The timer actually does never turn off when I tested it (so it is ran the whole time). Inefficient if/then/elses is not the way to go. Squiggy, we both know that simple 5*(level-1) is very easy to figure out... The spell fire event trigger could also be more efficient by not using all those variables which is actually not required.

'zeroing' ints and reals are pointless.

Your map init trigger kind of messes up the FDspelltrig3 in the beginning, which might be a reason to why it could mess up.

Furthermore, the fact that the spell requires 5 object editor things is a downside, according to me. But it's not really affecting the review when I say that it will served as useful.
 
hvo-busterkomo's right you know? If/Then/Else makes it SO much more organized and readable for the people who actually want to use your spell, like me maybe :)
Do Nothing, stupid enough... DOES SOMETHING :P
It takes up lines in the actual script ---->

Also, never use:
  • Do nothing
If there is no actions the trigger then does nothing by default. However, the Do nothing does something, and that something is decreasing efficiency and slowing the trigger down!

Looking at spell...
 
Hmm, not to offend anyone but does this really deserves the 5/5 rating?
I mean much better coded spells on the hive got 4/5 only because they are GUI and now one that isn't coded as good as they got 5/5?
The coincidence that a mod made this and got 5/5...
Has several improve points:
  • remove the other dummy
  • use universal dummies and the dummy.mdx model
  • u use too much dummy abilities, some are completely unnecesary
  • use channel for the base spell, it exists for that reason
  • use another hotkey the current one is tricky, i suggest D
  • lags quite a bit when spammed due to the excesive amount of dummies
  • the loop trigger never shuts down, i added a debug message to confirm my thought
  • too basic, i got 3/5 for a leakless spell simmilar to this which even didn't laged as this and it's loop trigger did turn off, it's a shame to see that this is rated 5/5 only cause the maker is a moderator.
  • i think i got everything i wanted to say here, i may add something if i remember or find more.
So the final rating is: 3/5; even if you correct everything 4/5.
EDIT:
Shame to see that you rate on prejudice hvo-busterkomo, i thought you were difrent :p
 
Hmm, not to offend anyone but does this really deserves the 5/5 rating?
Yes it does

Meh I don't feel to go through all of your points, as for your downrating I suggest that you overthink your prejudices..
It's not because I'm a mod but rather because I invested time and made a good spell.
If you want to complain, contact the spellmods or somebody else but I think the rating fits the spell quite good
 
Rating this 5/5 feels just wrong when i see much better spells with only less effects being rated 4/5 or 3/5.
So my rating stands, this isn't for a 5/5 in any way other than effects which are overspammed(the big flame is ugly and the spell would have been better if you used searing arrows for the missiles and then thought of a fine explosion).
EDIT:
I didn't downrated it i just said my opinion.
I never downrate spells, i just say what is by me the realistic grade of the spell.
 
Accept it, the spell is good and the people like it (see above comments).
Just because you think else..well, feel free to have it re-reviewed but this will lower my respect towards you..
Anyway, if you can do it better, show me - redo the spell using your way.

Last, if you ight have noticed, all my spells contain lots and big effects - if you don't like them, keep away.

Have a nice day..
 
This is a matter of principle, i don't care if people like it.
Moderators shouldn't rate this spell 5/5 just because you made it :p
Moderators should be fair, this example shows how a realisticly speaking 3/5 spell gets a 5/5 grade.
EDIT:
A good version of fiery damnation, eh?
Well if you want me i can make at the least 100% more effective one and promise no lag whatsoever :p
If that will make you happy...
EDIT2:
Btw it's a shame to see that a comunity moderator agrees to accept the false ratings :p
And it's a shame to see that resource moderator may give better ratings to other moderators...
 
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • FD_int Equal to 1
    • Then - Actions
      • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
    • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FD_int Equal to 2
        • Then - Actions
          • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • FD_int Equal to 3
            • Then - Actions
              • Unit - Add a 15.00 second Generic expiration timer to (Last created unit)
            • Else - Actions
Basic math would have allowed you to do all this in like... umm... 1 action?
Sguiggy, you EVEN use a Do nothing!
We're not downrating this, do you think we really care?

And the people who might have said it's nice (no offense to anyone) aren't necessarily talking about the efficiency but about the idea/special effects...

And those who are talking about efficiency and said it's good, well then they should go and read some tutorials on the matter.

I don't feel like reading the whole thing, so I'm judging on the obvious for now.

You even leak a group once...
 
Basic math would have allowed you to do all this in like... umm... 1 action
I suck at maths

Sguiggy, you EVEN use a Do nothing!
Where?

It has a poor to average coding and it got 5/5.
Don't tell me that the indexing system you use makes the spell better
Boy, I think you'd need a rest from all the internet.. it makes your brain smaller and you rage about stupid things ^.^
 
  • If (FD_int Equal to 1) then do (Unit - Add a 5.00 second Generic expiration timer to (Last created unit)) else do (If (FD_int Equal to 2) then do (Unit - Add a 10.00 second Generic expiration timer to (Last created unit)) else do (If (FD_int Equal to 3) then do (Unit - Add a 15.00 second Generic expiration timer to (Last created unit)) else do (Do nothing)))
But even if you fix this, it doesn't mean that it's good enough :P

And even my little sister knows that 5 x 1 = 5, 5 x 2 = 10, 5 x 3 = 15... so... umm... very basic math...
 
  • If (FD_int Equal to 1) then do (Unit - Add a 5.00 second Generic expiration timer to (Last created unit)) else do (If (FD_int Equal to 2) then do (Unit - Add a 10.00 second Generic expiration timer to (Last created unit)) else do (If (FD_int Equal to 3) then do (Unit - Add a 15.00 second Generic expiration timer to (Last created unit)) else do (Do nothing)))
/fail, I changed it
 
I think it''s personal preference, really.

From my own standpoint, I think this is an excellent spell. We can argue the to and frow of it all day, if you wish, but in the end that's all it is: personal preference.

Why would you want a spell mod's opinion on the issue, please tell me you're not that lifeless? You've had your say, move on and don't be stubborn.

Thanks. :)
 
How do you call a spell that goes on every 0.04 seconds forever?
I mean even if it has no actions to execute it checks,sets and destroys a group every 0.04 secons.
Procesor usage gone to waste and a poor spell.
About maths, isn't this simple:
  • "duration variable" = "number" + ("number" * spell level)
Instead of stupidly long if then else action.
Getting hostile, are we Squiggy?
 
Omg guys this is childish really.
If you dont like the spell then get over it.
If you do then use it and rate it 5/5. Who tha f\\\ cares.
Seriously.

Off topiC: wow comments are flying in like fleeeees.

\/ To that post:

This stuff happens man. all the time. I'm not always happy with my rating but .. well I improve and ask for a review. I can tell you there are hundreds of unrealistic ratings here.

Edit: Lulz, this thread prolly got more comments in the last 10 minutes then since it has been uplaoded. Lol.
 
Hmm, Ash how did you came in this story?
Except being a friend of Squiggy i never heard you review or even give an opinion about spells/triggers.
And i am only pointing that the spell has flaws but on oposite to some better spells this one gets a 5/5 rating.

I came in, most likely, the same way you did. I browsed a few spells.

I did tell him how to improve it.
And btw i am not childish only realistic :p
And it ain't fair to other users who get their spells rated below 5/5, but which resource might even be better than this example...

So you've told him what you thought, that's that. Why don't you just leave it then? I wouldn't call it realistic to provoke an argument, I'd call it stubborn and childish. Everyone has their vote, if you don't like it then you don't vote 5/5. Simple enough, really.
 
This would be like this:
1.I see an icon on hive
2.It has been rated 5/5
3.I report that it's a c'n'p
4.I prove it's a c'n'p
5.The people tell me: "It's your opinion, now move aside"

I don't think that would happen if this were an icon, so why should something simmilar it happen in the spell section?
EDIT:
Does it turn off?
Add a game message and it will never show, therefore it never shut's down.
 
Sguiggy, stop arguing non-sense.... if this spell couldn't get better then we wouldn't suggest improvements... and if there is area for improvements than it's not a perfect spell than it's not a 5/5 rated spell...

End of story! And oh:


EDIT:
@ Ash: Kingz is just giving an example...
An metaforic example :p
EDIT:
One more flaw, the periodic trigger is turned on from the map start, it should turn on when the spell is first time casted :p

It's a lunatic-esque example, to be honest. How can you argue that if someone submits a spell you think isn't top-notch, the same principle as someone who has stolen something applies?

And as I said, it's personal preference. Whilst the spell creator could take the critique with a bit more valour, you could use a bit more common sense and argue as a more sentience being.

It's all personal preference; I think the spell is pretty good, so I voted 5/5. You don't, so you didn't vote 5/5. End of story, really.

EDIT: I hate to cut this short, but I need to finish a linguistics book off by tomorrow so I'm going to head off and read the last part now.

I'll reply tomorrow morning, or something.
 
That was an example of the simmilar thing i am trying to prove -.-
The spell is unefficent, therefore it can't get a 5/5.
The moderator gives it a 5/5 even with the flaws.
Other people's resources get lower grades even if they have those flaws fixed?
Sorry but this here seems like the spell moderator didn't take a closer look and just slammed the high rating on it :p
EDIT:
@Squiggy
Awaiting...
EDIT2:
Now squiggy say me what u used to record the video and i will show you how it fails...
 
This even has a mistake... I want to see you argue about that:
  • Unit - Set level of FD_impact for (Last created unit) to FD_int
  • Unit - Set level of FD_damage for (Last created unit) to FD_int
  • If (FD_int Equal to 1) then do (Unit - Add a 5.00 second Generic expiration timer to (Last created unit)) else do (If (FD_int Equal to 2) then do (Unit - Add a 10.00 second Generic expiration timer to (Last created unit)) else do (If (FD_int Equal to 3) then do (Unit - Add a 15.00 second Generic expiration timer to (Last created unit)) else do (Do nothing)))
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • FD_int Equal to 1
    • Then - Actions
      • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
    • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FD_int Equal to 2
        • Then - Actions
          • Unit - Add a 10.00 second Generic expiration timer to (Last created unit)
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • FD_int Equal to 3
            • Then - Actions
              • Unit - Add a 15.00 second Generic expiration timer to (Last created unit)
            • Else - Actions
Can you identify the mistake?
Well... adding generic expiration timers to only a bunch of dummies twice and leaving other dummies aside...
 
Back
Top