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

Spells & Systems Mini-Contest #17

Status
Not open for further replies.
Level 12
Joined
Apr 27, 2008
Messages
1,228
I don't know about submitting a spell(never was I good with themed ideas), but each contest makes me produce a couple of systems :D
Like the ones in this test map.
 
Level 30
Joined
Dec 6, 2007
Messages
2,228
Don´t redo it, follow my advices ;)


Inefficient way:
  • Dg2
    • Events
      • Event - A unit dies
    • Conditions
      • (Unit-type of (Triggering unit)) equal to dummy1
    • Actions
      • For each (Integer A) from 1 to 20, do (Actions)
        • Loop - Actions
          • Set temppoint2 = (temppoint1 offset by 100.00 towards (x + 18.00) degrees)
          • Unit - Create 1 dummy2 for (Owner of (Dying Unit)) at temppoint2 facing (x + 18.00) degrees
          • Custom script: call RemoveLocation(udg_temppoint2)
          • Unit - Add a 2.00 second Standard expiration timer to (Last created unit)
          • -------- Now we give the created unit the level of the ability which is stored in the 'carrier'-ability --------
          • Einheit - Set level of dummyab for (Last created unit) to (Level of (Dying unit))
          • Set x = (x + (1.00 + 18.00))
        • Set x = 0.00
Efficient way:
  • Dg2
    • Events
      • Event - A unit dies
    • Conditions
      • (Unit-type of (Triggering unit)) equal to dummy1
    • Actions
      • For each (Integer A) from 1 to 20, do (Actions)
        • Loop - Actions
          • Set temppoint2 = (temppoint1 offset by 100.00 towards ((Real((Integer A))) x 18.00) degrees)
          • Unit - Create 1 dummy2 for (Owner of (Triggering unit)) at temppoint2 facing ((Real((Integer A))) x 18.00) degrees
          • Custom script: call RemoveLocation(udg_temppoint2)
          • Unit - Add a 2.00 second Standard expiration timer to (Last created unit)
          • -------- Now we give the created unit the level of the ability which is stored in the 'carrier'-ability --------
          • Einheit - Set level of dummyab for (Last created unit) to (Level of (Triggering unit))
Inefficient way:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • 'IF'-Conditions
      • (Level of dummyab for (Last created unit)) equal to 1
    • 'THEN'-Actions
      • Set x = 500.00
    • 'ELSE'-Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • 'IF'-Conditions
          • (Level of dummyab for (Last created unit)) equal to 2
        • 'THEN'-Actions
          • Set x = 600.00
        • 'ELSE'-Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • 'IF'-Conditions
              • (Level of dummyab for (Last created unit)) equal to 3
            • 'THEN'-Actions
              • Set x = 700.00
            • 'ELSE'-Actions
Efficient way / you enable multi level support with more than 3 levels by:
  • Set x = (400.00 + (100.00 x (Real((Level of dummyab for (Last created unit))))))
 
Level 12
Joined
Apr 27, 2008
Messages
1,228
... and that is the start. Now go and create a fine-looking surprise spell sir! :)

I can't come up with THE IDEA*
If I come up with one, and I don't have time from really pointless exams, I can realize it, but the hard part is the first one.

* caps for pointing out that it is unique
 
Meh, i won't even bother making this Jass...
here is the code:
  • Black Arrow
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Black Arrow
    • Actions
      • Set Unit[1] = (Triggering unit)
      • Set Unit[2] = (Target unit of ability being cast)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Life of Unit[1]) Less than or equal to (75.00 x (Real((Level of Black Arrow for Unit[1]))))
        • Then - Actions
          • Game - Display to (Player group((Owner of Unit[1]))) for 2.00 seconds the text: ...
          • Unit - Order Unit[1] to Stop
        • Else - Actions
          • Unit - Set life of Unit[1] to ((Life of Unit[1]) - (75.00 x (Real((Level of Black Arrow for Unit[1])))))
          • Wait until ((Unit[2] has buff Black Arrow(custom) ) Equal to True), checking every 0.10 seconds
          • Unit - Cause Unit[1] to damage Unit[2], dealing (75.00 x (Real((Level of Black Arrow for Unit[1])))) damage of attack type Spells and damage type Normal
          • Special Effect - Create a special effect attached to the origin of Unit[2] using Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
          • Special Effect - Destroy (Last created special effect)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Life of Unit[2]) Less than 5.00
            • Then - Actions
              • Set Point[1] = (Position of Unit[2])
              • Unit - Cause Unit[1] to damage Unit[2], dealing 500.00 damage of attack type Spells and damage type Normal
              • Unit - Set life of Unit[1] to ((Life of Unit[1]) + (90.00 x (Real((Level of Black Arrow for Unit[1])))))
              • Unit - Create 1 Dummy for (Owner of Unit[1]) at Point[1] facing Default building facing degrees
              • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
              • Unit - Add Black Arrow(dummy) to (Last created unit)
              • Unit - Set level of Black Arrow(dummy) for (Last created unit) to (Level of Black Arrow for Unit[1])
              • Unit - Order (Last created unit) to Neutral Pit Lord - Howl Of Terror
              • Special Effect - Create a special effect attached to the origin of Unit[1] using Abilities\Spells\Undead\DeathPact\DeathPactTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Special Effect - Create a special effect at Point[1] using Abilities\Spells\Other\HowlOfTerror\HowlCaster.mdl
              • Special Effect - Destroy (Last created special effect)
              • Custom script: call RemoveLocation(udg_Point[1])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Random integer number between 1 and 100) Less than or equal to 75
                  • (Unit[2] is A Hero) Equal to True
                • Then - Actions
                  • Unit - Set life of Unit[1] to 100.00%
                  • Special Effect - Create a special effect attached to the origin of Unit[1] using Abilities\Spells\Items\AIil\AIilTarget.mdl
                  • Special Effect - Destroy (Last created special effect)
                • Else - Actions
            • Else - Actions
This is zuper pwnzor zpell! -Jk

It causes caster to suffer some damage when casting this, also damages the target for same amount as life loss.
Target will get a few second armor reduction.
If the targeted unit dies by black arrow, caster gains more life back than the spell costed
Also if unit dies, here is a dummy to cast howl of terror, that only reduces armor of nearby units
If unit HERO dies by arrow there is 75% that the caster will regain full life
Also you can't cast this spell if your life is to low

Its a tricky spell :p

I hope i didn't forgot to point something out :S


I don't have that much time that i had a few months ago D:

Now i need a tooltip and its done..

Edit:
only ~5 people joined?
 
Level 12
Joined
Apr 27, 2008
Messages
1,228
@ -BerZeKeR-
If you do not want to convert to jass, at least seperate the trigger into two parts.
Leave the part that checks health in this trigger and put the rest in another trigger with the unit starts effect of an ability event.
Because the way you did it, it should be abuseable.
 
Last edited:
Level 23
Joined
Nov 29, 2006
Messages
2,482
Meh, i won't even bother making this Jass...
here is the code:
  • Black Arrow
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Black Arrow
    • Actions
      • Set Unit[1] = (Triggering unit)
      • Set Unit[2] = (Target unit of ability being cast)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Life of Unit[1]) Less than or equal to (75.00 x (Real((Level of Black Arrow for Unit[1]))))
        • Then - Actions
          • Game - Display to (Player group((Owner of Unit[1]))) for 2.00 seconds the text: ...
          • Unit - Order Unit[1] to Stop
        • Else - Actions
          • Unit - Set life of Unit[1] to ((Life of Unit[1]) - (75.00 x (Real((Level of Black Arrow for Unit[1])))))
          • Wait until ((Unit[2] has buff Black Arrow(custom) ) Equal to True), checking every 0.10 seconds
          • Unit - Cause Unit[1] to damage Unit[2], dealing (75.00 x (Real((Level of Black Arrow for Unit[1])))) damage of attack type Spells and damage type Normal
          • Special Effect - Create a special effect attached to the origin of Unit[2] using Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
          • Special Effect - Destroy (Last created special effect)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Life of Unit[2]) Less than 5.00
            • Then - Actions
              • Set Point[1] = (Position of Unit[2])
              • Unit - Cause Unit[1] to damage Unit[2], dealing 500.00 damage of attack type Spells and damage type Normal
              • Unit - Set life of Unit[1] to ((Life of Unit[1]) + (90.00 x (Real((Level of Black Arrow for Unit[1])))))
              • Unit - Create 1 Dummy for (Owner of Unit[1]) at Point[1] facing Default building facing degrees
              • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
              • Unit - Add Black Arrow(dummy) to (Last created unit)
              • Unit - Set level of Black Arrow(dummy) for (Last created unit) to (Level of Black Arrow for Unit[1])
              • Unit - Order (Last created unit) to Neutral Pit Lord - Howl Of Terror
              • Special Effect - Create a special effect attached to the origin of Unit[1] using Abilities\Spells\Undead\DeathPact\DeathPactTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Special Effect - Create a special effect at Point[1] using Abilities\Spells\Other\HowlOfTerror\HowlCaster.mdl
              • Special Effect - Destroy (Last created special effect)
              • Custom script: call RemoveLocation(udg_Point[1])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Random integer number between 1 and 100) Less than or equal to 75
                  • (Unit[2] is A Hero) Equal to True
                • Then - Actions
                  • Unit - Set life of Unit[1] to 100.00%
                  • Special Effect - Create a special effect attached to the origin of Unit[1] using Abilities\Spells\Items\AIil\AIilTarget.mdl
                  • Special Effect - Destroy (Last created special effect)
                • Else - Actions
            • Else - Actions
This is zuper pwnzor zpell! -Jk

It causes caster to suffer some damage when casting this, also damages the target for same amount as life loss.
Target will get a few second armor reduction.
If the targeted unit dies by black arrow, caster gains more life back than the spell costed
Also if unit dies, here is a dummy to cast howl of terror, that only reduces armor of nearby units
If unit HERO dies by arrow there is 75% that the caster will regain full life
Also you can't cast this spell if your life is to low

Its a tricky spell :p

I hope i didn't forgot to point something out :S


I don't have that much time that i had a few months ago D:

Now i need a tooltip and its done..

Edit:
only ~5 people joined?

Dont use begin casting an ability... Use Starts the effect of an ability, otherwise your spell could fail occasionally. Thats the first I can think of;)
 
Level 12
Joined
Apr 27, 2008
Messages
1,228
Dont use begin casting an ability... Use Starts the effect of an ability, otherwise your spell could fail occasionally. Thats the first I can think of;)

The health checking part belongs in a trigger with starts casting an ability(as almost said before ) ;)

P.s. It seems I can't give anyone rep. I just keep getting the You must spread ... message :D
I have partially fixed this problem of mine :p
 
Its because it checks the life, if i use "starts the effect" that won't matter and if life is to low the unit will die.

Or...

i have an idea...just need some changing =)

If i put this in main condition

  • (Life of Unit[1]) Greater or equal to (75.00 x (Real((Level of Black Arrow for Unit[1]))))
and skip the message part...

Edit:

Meh...I'm to tired to even think...
 
Level 13
Joined
Mar 16, 2008
Messages
941
Comments suck like hell... I added them too and now I have stupid 500 lines :/ most annoying are the globals, a new line for each one to explain them. Never had a globals block with ~150 lines^^'' could be shortened a lot but I like it when the spells are nearly 100% configurable

EDIT: call RemoveLocation(udg_MYVAR[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))])

Btw, spell is working and now fully animated, optimizing incoming ^.^
 
Last edited:
Level 12
Joined
Apr 27, 2008
Messages
1,228
I have a working idea.
There probably are similar things( I won't mention examples - it may just slip by).
And believe me it is going to be surprising(especially the first time someone uses it).
However, no code done yet :D
 
Status
Not open for further replies.
Top