• 🏆 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!

Draconis Spell Pack

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: eubz
Four skills
Inferno - breathes fire infront for 5 seconds dealing damage to units in an interval of .05 seconds
Raging Combo - Attacks target 3 times in melee range pausing both units in the process
Warrior's Power - Gains mana on attack (nothing much) (THIS HERO HAS NO MANA REG WHATSOEVER OR INT)
Cataclysm - Increases STR overtime and deals damage to nearby units.

EXPLANATION ABOUT 3rd SKILL - IM planning to submit this hero on playdota.com as a hero for Dota =D and he has no mana until he attacks, which is what his 3rd skill is for.

ALL SKILLS ARE MUI

SPECIAL THX TO
GENERAL FRANK (FRANKSTER) FOR DRAGON MODEL AND HIS ICON
PARA SLAYER AND CRAZZY RUSSIAN, BOTH FOR SKILL ICONS

  • Inferno Mui
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Inferno
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • InfernoIndex Equal to 0
        • Then - Actions
          • Trigger - Turn on Inferno Loop <gen>
        • Else - Actions
      • Set InfernoIndex = (InfernoIndex + 1)
      • Set InfernoMUI = (InfernoMUI + 1)
      • Set InfernoTurnOn[InfernoMUI] = True
      • Set InfernoCaster[InfernoMUI] = (Casting unit)
      • Set InfernoDistance[InfernoMUI] = 25.00
      • Set InfernoMaxDistance[InfernoMUI] = 500.00
      • Set InfernoCount[InfernoMUI] = 100
  • Inferno Loop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer InfernoLoop) from 1 to InfernoMUI, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • InfernoTurnOn[InfernoLoop] Equal to True
            • Then - Actions
              • Set InfernoCaster_Loc = (Position of InfernoCaster[InfernoLoop])
              • Set InfernoAngle[InfernoLoop] = (Facing of InfernoCaster[InfernoLoop])
              • Set InfernoDummyLoc = (InfernoCaster_Loc offset by InfernoDistance[InfernoLoop] towards InfernoAngle[InfernoLoop] degrees)
              • Set InfernotargetLoc = (InfernoCaster_Loc offset by InfernoMaxDistance[InfernoLoop] towards InfernoAngle[InfernoLoop] degrees)
              • Unit - Create 1 Inferno Dummy for (Owner of InfernoCaster[InfernoLoop]) at InfernoDummyLoc facing Default building facing degrees
              • Unit - Set level of Inferno (Neutral Hostile) for (Last created unit) to (Level of Inferno for InfernoCaster[InfernoLoop])
              • Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Breath Of Fire InfernotargetLoc
              • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_InfernoCaster_Loc)
              • Custom script: call RemoveLocation(udg_InfernotargetLoc)
              • Custom script: call RemoveLocation(udg_InfernoDummyLoc)
              • Set InfernoCount[InfernoLoop] = (InfernoCount[InfernoLoop] - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • InfernoCount[InfernoLoop] Equal to 0
                      • (InfernoCaster[InfernoLoop] is dead) Equal to True
                • Then - Actions
                  • Set InfernoTurnOn[InfernoLoop] = False
                  • Set InfernoIndex = (InfernoIndex - 1)
                  • Set InfernoCaster[InfernoLoop] = No unit
                  • Set InfernoDistance[InfernoLoop] = 0.00
                  • Set InfernoMaxDistance[InfernoLoop] = 0.00
                  • Set InfernoCount[InfernoLoop] = 0
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • InfernoIndex Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                      • Set InfernoMUI = 0
                    • Else - Actions
                • Else - Actions
            • Else - Actions
  • Raging Combo Mui
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Raging Combo
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • RagingComboIndex Equal to 0
        • Then - Actions
          • Trigger - Turn on Raging Combo Loop <gen>
        • Else - Actions
      • Set RagingComboIndex = (RagingComboIndex + 1)
      • Set RagingComboMUI = (RagingComboMUI + 1)
      • Set RagingComboTurnOn[RagingComboMUI] = True
      • Set RagingComboSTR[RagingComboMUI] = 0.50
      • Set RagingComboCaster[RagingComboMUI] = (Casting unit)
      • Set RagingComboDamage[RagingComboMUI] = (20.00 + (20.00 x (Real((Level of Raging Combo for RagingComboCaster[RagingComboMUI])))))
      • Set RagingComboTarget[RagingComboMUI] = (Target unit of ability being cast)
      • Unit - Order RagingComboCaster[RagingComboMUI] to Attack RagingComboTarget[RagingComboMUI]
      • Unit - Make RagingComboCaster[RagingComboMUI] face RagingComboTarget[RagingComboMUI] over 0.00 seconds
      • Animation - Change RagingComboCaster[RagingComboMUI]'s animation speed to 200.00% of its original speed
      • Animation - Change RagingComboTarget[RagingComboMUI]'s animation speed to 200.00% of its original speed
      • Set RagingComboCount[RagingComboMUI] = 3
  • Raging Combo Loop
    • Events
      • Time - Every 0.65 seconds of game time
    • Conditions
    • Actions
      • For each (Integer RagingComboLoop) from 1 to RagingComboMUI, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • RagingComboTurnOn[RagingComboLoop] Equal to True
            • Then - Actions
              • Unit - Pause RagingComboCaster[RagingComboLoop]
              • Unit - Pause RagingComboTarget[RagingComboLoop]
              • Animation - Play RagingComboCaster[RagingComboLoop]'s attack animation
              • Animation - Play RagingComboTarget[RagingComboLoop]'s death animation
              • Special Effect - Create a special effect attached to the chest of RagingComboTarget[RagingComboLoop] using Objects\Spawnmodels\Human\HumanBlood\BloodElfSpellThiefBlood.mdl
              • Special Effect - Destroy (Last created special effect)
              • Unit - Cause RagingComboCaster[RagingComboLoop] to damage RagingComboTarget[RagingComboLoop], dealing (RagingComboDamage[RagingComboLoop] + (RagingComboSTR[RagingComboLoop] x (Real((Strength of RagingComboCaster[RagingComboLoop] (Include bonuses)))))) damage of attack type Normal and damage type Normal
              • Set RagingComboCount[RagingComboLoop] = (RagingComboCount[RagingComboLoop] - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Level of Warrior's Power for RagingComboCaster[RagingComboLoop]) Greater than 0
                • Then - Actions
                  • Unit - Set mana of RagingComboCaster[RagingComboLoop] to ((Mana of RagingComboCaster[RagingComboLoop]) + 20.00)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • RagingComboCount[RagingComboLoop] Equal to 0
                      • (RagingComboCaster[RagingComboLoop] is dead) Equal to True
                      • (RagingComboTarget[RagingComboLoop] is dead) Equal to True
                • Then - Actions
                  • Set RagingComboTurnOn[RagingComboLoop] = False
                  • Unit - Unpause RagingComboCaster[RagingComboLoop]
                  • Unit - Unpause RagingComboTarget[RagingComboLoop]
                  • Animation - Change RagingComboCaster[RagingComboLoop]'s animation speed to 100.00% of its original speed
                  • Animation - Change RagingComboTarget[RagingComboLoop]'s animation speed to 100.00% of its original speed
                  • Set RagingComboIndex = (RagingComboIndex - 1)
                  • Set RagingComboSTR[RagingComboLoop] = 0.00
                  • Set RagingComboCaster[RagingComboLoop] = No unit
                  • Set RagingComboDamage[RagingComboLoop] = 0.00
                  • Set RagingComboTarget[RagingComboLoop] = No unit
                  • Set RagingComboCount[RagingComboLoop] = 0
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • RagingComboIndex Equal to 0
                    • Then - Actions
                      • Set RagingComboMUI = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
            • Else - Actions
  • Warriors Power MUI
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) belongs to an enemy of (Owner of (Attacked unit))) Equal to True
      • (Level of Warrior's Power for (Attacking unit)) Greater than 0
    • Actions
      • Unit - Set mana of (Attacking unit) to ((Mana of (Attacking unit)) + 20.00)
  • Cataclysm Mui
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Catacylsm
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CataclysmIndex Equal to 0
        • Then - Actions
          • Trigger - Turn on Cataclysm Loop <gen>
        • Else - Actions
      • Set CataclysmIndex = (CataclysmIndex + 1)
      • Set CataclysmMUI = (CataclysmMUI + 1)
      • Set CatacylsmTurnOn[CataclysmMUI] = True
      • Set CatacylsmCaster[CataclysmMUI] = (Casting unit)
      • Set CataclysmCount[CataclysmMUI] = 20
      • Set CataclysmAoE[CataclysmMUI] = 450.00
      • Set CataylsmDamage[CataclysmMUI] = (30.00 + (15.00 x (Real((Level of Catacylsm for CatacylsmCaster[CataclysmMUI])))))
      • Set CataclysmStrengthGain[CataclysmMUI] = ((Level of Catacylsm for CatacylsmCaster[CataclysmMUI]) / 1)
      • Set CataclysmStrengthCounter[CataclysmMUI] = 0
      • Set CataclysmChecker[CataclysmMUI] = 0
  • Cataclysm Loop
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
    • Actions
      • For each (Integer CataclysmLoop) from 1 to CataclysmMUI, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • CatacylsmTurnOn[CataclysmLoop] Equal to True
            • Then - Actions
              • Set CatacylsmCasterLoc = (Position of CatacylsmCaster[CataclysmLoop])
              • Set CataclysmGroup[CataclysmLoop] = (Units within CataclysmAoE[CataclysmLoop] of CatacylsmCasterLoc matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is visible to (Owner of CatacylsmCaster[CataclysmLoop])) Equa
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in CataclysmGroup[CataclysmLoop]) Greater than 0
                • Then - Actions
                  • Unit Group - Pick every unit in CataclysmGroup[CataclysmLoop] and do (Actions)
                    • Loop - Actions
                      • Unit - Create 1 Cataclysm Dummy for (Owner of CatacylsmCaster[CataclysmLoop]) at (Position of CatacylsmCaster[CataclysmLoop]) facing Default building facing degrees
                      • Unit - Set level of Catacylsm Creeps for (Last created unit) to (Level of Catacylsm for CatacylsmCaster[CataclysmLoop])
                      • Unit - Order (Last created unit) to Neutral Alchemist - Acid Bomb (Picked unit)
                      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
                      • Unit - Cause CatacylsmCaster[CataclysmLoop] to damage (Picked unit), dealing CataylsmDamage[CataclysmLoop] damage of attack type Spells and damage type Fire
                • Else - Actions
              • Custom script: call RemoveLocation(udg_CatacylsmCasterLoc)
              • Custom script: call DestroyGroup(udg_CataclysmGroup[udg_CataclysmLoop])
              • Set CataclysmStrengthCounter[CataclysmLoop] = (CataclysmStrengthCounter[CataclysmLoop] + 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • CataclysmStrengthCounter[CataclysmLoop] Equal to 2
                • Then - Actions
                  • Set CataclysmStrengthCounter[CataclysmLoop] = 0
                  • Hero - Modify Strength of CatacylsmCaster[CataclysmLoop]: Add CataclysmStrengthGain[CataclysmLoop]
                  • Set CataclysmChecker[CataclysmLoop] = (CataclysmChecker[CataclysmLoop] + 1)
                • Else - Actions
              • Set CataclysmCount[CataclysmLoop] = (CataclysmCount[CataclysmLoop] - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (CatacylsmCaster[CataclysmLoop] is dead) Equal to True
                      • CataclysmCount[CataclysmLoop] Equal to 0
                • Then - Actions
                  • Set CatacylsmTurnOn[CataclysmLoop] = False
                  • Hero - Modify Strength of CatacylsmCaster[CataclysmLoop]: Subtract (CataclysmStrengthGain[CataclysmLoop] x CataclysmChecker[CataclysmLoop])
                  • Set CatacylsmCaster[CataclysmLoop] = No unit
                  • Set CataclysmCount[CataclysmLoop] = 0
                  • Set CataclysmAoE[CataclysmLoop] = 0.00
                  • Set CataylsmDamage[CataclysmLoop] = 0.00
                  • Set CataclysmStrengthGain[CataclysmLoop] = 0
                  • Set CataclysmStrengthCounter[CataclysmLoop] = 0
                  • Set CataclysmChecker[CataclysmLoop] = 0
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CataclysmIndex Equal to 0
                    • Then - Actions
                      • Set CataclysmMUI = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
            • Else - Actions
Keywords:
Draconis, Dragon Warrior, Fire, Breath, Slash, Combo, Cataclysm, Strength, Dota, WyrmSlayer, =D
Contents

Draconis (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 02:33, 22nd Jul 2012 Magtheridon96: Check out Hanky's dynamic index method Check out Bribe's Damage Engine. You shouldn't use the "Attack" event to detect damage, that's totally...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

02:33, 22nd Jul 2012
Magtheridon96:


  • Check out Hanky's dynamic index method
  • Check out Bribe's Damage Engine.
    You shouldn't use the "Attack" event to detect damage, that's totally abusable. I can attack a unit and press stop rapidly, and still fire the trigger.
  • You don't need to null globals. This means that you don't need to reset everything when you destroy a spell instance.
  • Your spells need to have configuration triggers where the user can easily modify spells. (Duration, AoE, damage, special effects, etc...)
  • Dividing by 1 is useless :p
  • The spells in the testmap should have 0 cooldowns and manacosts.
    • Unit - Create 1 Cataclysm Dummy for (Owner of CatacylsmCaster[CataclysmLoop]) at (Position of CatacylsmCaster[CataclysmLoop]) facing Default building facing degrees
    You obviously leaked the location by accident ;D
    Just replace that (Position...) call with CatacylsmCasterLoc


Anyways, good job here ^_^
You don't need the imported models by the way.

I really love your style of coding.
 
post triggs?

also, on the description, tell us the name of the abilities and not just 1st skill blahblah...

and oh, one of my friends already tried sending a hero suggestion with a custom model, and they told him that they cannot afford to import hero models as they are nearing the file size limit so they are reserving the little space left for more important things...
 
You really don't need custom imports for this spellpack - as the rules say you should only have them if they are essential to the fundamentals of the spell or spells.

You need a configuration at the start which contains the configurables for /every/ spell, rather than have the configurables splayed out everywhere, which proper labels and comments to know which is which, and also there are some things which are not configured in the actual spells themselves, and that should be changed as well and they should be made configurable (such as mana gain)

Also "Warriors power" is abusable - you have to use a damage detection system for that

The strength modifier I'm not sure wether it's abusable or not - I will check it briefly in a minute or two, also you don't need to use /ANY/ object data to deal damage - it's generally poor practice and not even needed under any cercumstances, This applies to two of your spells

Pausing units is generally bad practice - it'd be better if you could avoid it
 
oh Also you only need one dummy for the spell pack, right the stat gain is no abusable, however I did find out that the spell will continue even if the hero is dead, you should put a check on that and stop it when/if the hero dies mid-casting, also your description for your "Warriors power" is wrong

EDIT: Also for peak efficiency, this entire spellpack could be compressed into two triggers (plus one additional for configuration) but I wouldn't know how good of an idea that would be, but in eithercase it's pretty bad to have so many loops running at the same time, also your spells aren't exactly balanced as they stand - killing knights in one cast of some of them really isn't good
 
Level 7
Joined
Apr 18, 2010
Messages
102
You really don't need custom imports for this spellpack - as the rules say you should only have them if they are essential to the fundamentals of the spell or spells.

You need a configuration at the start which contains the configurables for /every/ spell, rather than have the configurables splayed out everywhere, which proper labels and comments to know which is which, and also there are some things which are not configured in the actual spells themselves, and that should be changed as well and they should be made configurable (such as mana gain)

Also "Warriors power" is abusable - you have to use a damage detection system for that

The strength modifier I'm not sure wether it's abusable or not - I will check it briefly in a minute or two, also you don't need to use /ANY/ object data to deal damage - it's generally poor practice and not even needed under any cercumstances, This applies to two of your spells

Pausing units is generally bad practice - it'd be better if you could avoid it

aw i forgot to those configuration informations but they are there as integers. the strength modifier is not abusuable i tried. i dont know how to detect damage by attacks in the warrior's power so i just tried the normal old way of doing it just like rikimaru on dota who can abuse the effects. i dunt really mind if someone abuses the effects of the warrior's power because he would basically give up the damage on his attack just to intake 20 mana.
 
I wonder how many mana I could gain with the third skill with super fast fingers?

If someone is fast enough I think he could like activate that 5 times per second... that's not much of a waste... and I believe spells uploaded shouldn't be abusable...

and warrior's power has no multilevel support

and the tag for hiding is hidden not hide
 
Level 7
Joined
Apr 18, 2010
Messages
102
Well it cannot be done in GUI, hence why we have a large amount of Damage Detection systems on the hive - you would have to use one of them

Ive seen many Damage detections like GUI-Friendly Damage Detection v1.2.1 but how do i use it? it says copy and paste. but then how do i apply the trigger of Warrior's Power to it?
Please help, once i see it i can learn it =D
 
Top