• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

small cool spellpack v1.4

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
This spellpack contains 2 spells!!

first spell is bladestorm ashburner. Summon a blademaster who use his special ability (stasis bomb) to nuke and destroy, but blademaster cant control his spell so be carefull cause its a small chance to hurt yourself!!

second spell creates ice obstacles which makes unit affected stop, After, the ice obstacles shoots out rockets which hit in a radius on 200

fixed v1.1 fixed few special effects, dmg and icon

fixed v1.2 due to some lagg in second spell i've reduced some buffs and special effects, the spell should be fine now! i think i've fixed most of the leaks! thx and enjoy

fixed v1.3 few changes, added floating text to second spell when you have no targets! fixed so spell cant hit corpses or yourself! Added better picture to show my spellpack!

fixed v1.4 fixed one location and special effect leak! should be no leaks now!! thx and enjoy!!

Any mistakes? subscribe below plz!

Keywords:
small cool spellpack, small, cool, spellpack, icefrost, flamer, stasis bomb, ashburner, bladestorm, nuke, best spell, spell, cool spells, spells, nice
Contents

Just another Warcraft III map (Map)

Reviews
08:09, 28th Oct 2015 This resource has been Rejected by BPower. Criticism: I can't see a development of the thread since 2010. Please re-submit it, if you wish to work again on the flaws of your spell. 11:15, 4th Jan 2010 TriggerHappy...

Moderator

M

Moderator

08:09, 28th Oct 2015

This resource has been Rejected by BPower.

Criticism:
I can't see a development of the thread since 2010. Please re-submit it, if you
wish to work again on the flaws of your spell.

11:15, 4th Jan 2010
TriggerHappy:

I'm sorry but these spells are poorly coded and aren't even MUI nor MPI.
 
Level 17
Joined
Mar 17, 2009
Messages
1,349
Well as I'm not in the mood of giving a full review, I'd start with the basics, and excuse if I may sound hard, but I'm just trying to help you:

This would most probably get instantly rejected for the following reasons:
- Contains imports
* To fix this problem, simply remove them :)

- Contains waits:
* To fix this, well take a look at this:
  • UW Main
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Unholy Wave
    • Actions
      • Set UW_TrigUnit[0] = (Triggering unit)
      • Trigger - Turn on UW Loop <gen>
  • UW Loop
    • Events
      • Time - Every 0.01 seconds of game time
    • Conditions
    • Actions
      • -------- This is a variable which would be recording the time the trigger has been running --------
      • Set UW_WaitCounter[0] = (UW_WaitCounter[0] + 0.01)
      • -------- Condition to check if the time we wanted to wait passed --------
      • -------- & another boolean condition used to let this run only once as wanted instead of having to turn trigger off then turn on another one to continue actions --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • UW_RanOnce[0] Equal to False
          • UW_WaitCounter[0] Greater than or equal to 0.10
        • Then - Actions
          • -------- Setting boolean to true to announce that these actions have run --------
          • Set UW_RanOnce[0] = True
          • -------- your actions --------
          • Set UW_TrigUnitLoc[0] = (Position of UW_TrigUnit[0])
          • Unit - Create 1 dummy unhwave for (Owner of UW_TrigUnit[0]) at UW_TrigUnitLoc[0] facing Default building facing degrees
          • Set UW_Dummy[0] = (Last created unit)
          • Custom script: call RemoveLocation(udg_UW_TrigUnitLoc[0])
          • -------- all the other actions bla bla bla --------
          • -------- from now on i'll just say what should be done and wont include actions --------
        • Else - Actions
      • -------- let's say you want to wait now another 0.15 before running another actions once --------
      • -------- it's all about basic math... 0.25-0.10=0.15 --------
      • -------- some people might not do it my way but this is the simplest and allows you to keep all this in one trigger :) --------
      • -------- ------------------------------------------------------------------------------------------------------------- --------
      • -------- Condition to check if the time we wanted to wait passed --------
      • -------- & another boolean condition used to let this run only once as wanted instead of having to turn trigger off then turn on another one to continue actions --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • UW_WaitCounter[0] Greater than or equal to 0.25
          • UW_RanOnce[1] Equal to False
        • Then - Actions
          • Set UW_RanOnce[1] = True
          • -------- all the actions here again --------
        • Else - Actions
      • -------- let's say now you want to loop --------
      • -------- bit more complex but if I'm to do it that's how --------
      • -------- simple math again, we want to loop for 1 second every 0.05 seconds --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • UW_WaitCounter[0] Greater than or equal to 0.25
          • UW_WaitCounter[0] Less than 1.25
        • Then - Actions
          • Set UW_LoopTimer[0] = (UW_LoopTimer[0] + 0.01)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • UW_LoopTimer[0] Greater than or equal to 0.05
            • Then - Actions
              • -------- all the loop actions here --------
              • -------- then reset loop timer for it to loop again --------
              • Set UW_LoopTimer[0] = 0.00
            • Else - Actions
        • Else - Actions
      • -------- ok so now ur done at t=1.25 seconds and no more actions are needed --------
      • -------- then reset counters and booleans and turn off trigger --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • UW_WaitCounter[0] Greater than or equal to 1.25
        • Then - Actions
          • Set UW_RanOnce[0] = False
          • Set UW_RanOnce[1] = False
          • Set UW_LoopTimer[0] = 0.00
          • Set UW_WaitCounter[0] = 0.00
          • Trigger - Turn off (This trigger)
        • Else - Actions
I just use arrays here because I'm used to; you don't need to

- Not MUI:
* Check this new tutorial on hashtables...

- Ideas aren't that useful for warcraft maps... yet i expect they're gonna be tweaked in newer versions...


That's all for now... enjoy :) and oh, keep it up!
 
Level 17
Joined
Mar 17, 2009
Messages
1,349
you're welcome :) well fix and update, then I'll recheck...
Btw, try not to have crowded SFX, good sfx is the simple yet nice and creative :)

And as I already said, try tweaking ideas to get something more creative, simpler, and more useful :)

It's all about simplicity...
 
Level 3
Joined
Nov 4, 2008
Messages
11
  • icefrost flamer
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Icefrost Flamer
    • Actions
      • Set casting = (Casting unit)
      • Set flamestrike = (Units within 200.00 of pointofabilitycasted matching ((((Owner of (Matching unit)) is an enemy of (Owner of casting)) Equal to True) and (((Matching unit) is dead) Equal to False)))
      • Set pointofabilitycasted = (Target point of ability being cast)
      • Set pointunit = (Position of (Target unit of ability being cast))
      • Trigger - Add icefrost flamer loop <gen> to the trigger queue (Checking conditions)
 
Level 3
Joined
Nov 4, 2008
Messages
11
  • icefrost flamer loop
    • Events
      • Time - Every 0.01 seconds of game time
    • Conditions
    • Actions
      • Set pointunit = (Position of (Target unit of ability being cast))
      • Set pointofabilitycasted = (Target point of ability being cast)
      • Set flamestrike = (Units within 200.00 of pointofabilitycasted matching ((((Owner of (Matching unit)) is an enemy of (Owner of casting)) Equal to True) and (((Matching unit) is dead) Equal to False)))
      • Set casting = (Casting unit)
      • Set timerstart[0] = (timerstart[0] + 0.01)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ranonetime[0] Equal to False
          • timerstart[0] Greater than or equal to 0.02
        • Then - Actions
          • Set ranonetime[0] = True
          • Trigger - Run icefrost flamer no target <gen> (checking conditions)
          • Unit Group - Pick every unit in flamestrike and do (Unit - Create (Number of units in flamestrike) ice for (Owner of casting) at pointofabilitycasted facing Default building facing degrees)
          • Unit Group - Pick every unit in flamestrike and do (Unit - Pause (Picked unit))
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ranonetime[1] Equal to False
          • timerstart[0] Greater than or equal to 2.01
        • Then - Actions
          • Set ranonetime[1] = True
          • Unit Group - Pick every unit in flamestrike and do (Unit - Unpause (Picked unit))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of Icefrost Flamer for (Casting unit)) Equal to 1
            • Then - Actions
              • Unit Group - Pick every unit in flamestrike and do (Unit - Cause casting to damage (Picked unit), dealing 200.00 damage of attack type normalunit and damage type Normal)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of Icefrost Flamer for (Casting unit)) Equal to 2
            • Then - Actions
              • Unit Group - Pick every unit in flamestrike and do (Unit - Cause casting to damage (Picked unit), dealing 400.00 damage of attack type normalunit and damage type Normal)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of Icefrost Flamer for (Casting unit)) Equal to 3
            • Then - Actions
              • Unit Group - Pick every unit in flamestrike and do (Unit - Cause casting to damage (Picked unit), dealing 600.00 damage of attack type normalunit and damage type Normal)
            • Else - Actions
          • Custom script: call RemoveLocation(udg_pointofabilitycasted)
          • Custom script: call DestroyGroup(udg_flamestrike)
          • Custom script: call RemoveLocation(udg_pointunit)
          • Set timerstart[0] = 0.00
          • Set ranonetime[0] = False
          • Set ranonetime[1] = False
          • Trigger - Turn off (This trigger)
        • Else - Actions
plz help me fix this mess...
 
I dont recomend you to put 0.01 time at loop triggers.
Human eye can see ~47 frames per second, and you loop 100 times per second.
Did that is not waste of CPU usage?

-Meaby use Pick Units in Group and do Multiple actions?
-From the start when ability casted set variable which will calculate damage of spell.
Why? Because if you will increase level of spell upon effect of ability is runing, damage will increase instantly.
-Dont use integer cheking for every ability level :p If you want make ability with 10 levels, you will check every level? Make it like this:
Cause Hero to damage Target, dealing ( 0 + ( 200 x Level of ability for Hero ))
I will explain
-0 is base of your spell damage
-200 x Level of ability for Hero is for how much damage spell will increase every level include 1st level of spell
If i will but 50 instead 0 then spell will cause:
First level 50+(200x1)=250
Second level 50+(200x2)=450
Third level 50+(200x3)=650

Ofcorse you can make some more hard damage calculations like:
damage + 75% of inteligence or something harder... Like :p
((50+(100xLevel of ability)) + ((Hero inteligence x (0.50+((0.25x(Level of Ability))))

I will not gona tell you how much it is :p

I saw a script of one pro coder. He used 2 TS_Point[0], TS_Point[1], TS_Point[3] ... (TS means Thunder Strike - name of spell)
He create 1 array Point variable for every spell and just changing index number.
It is good for:
-Small variable name
-Smaller table with variables, so serch variables is easyer
-Meaby something more what i dont know ^^

EDIT: remove all Do nothing. It do nothing ^^ and just confuze you and make the trigger bigger
By deleting those spell will not crash
EDIT 2: hmm it is not spells i thinked... anyway... i will not tell for spell ideas etc.
 
Last edited:
Level 3
Joined
Nov 4, 2008
Messages
11
thx for the information :) and thx for helping me :D i will try fix, but one of my problem with the spell is that it didnt worked when i tried my spell..thats why i asked someone to help me, it could be few mistakes...but i cant find the problem:) im not a pro spellmaker actually i started to make mui for 1 week ago, but i got help from someone on this site and im better now :p but thx for help :))
 
Top