Spell Charge of Blood

Drunken_God

Hopes to get back into Mapmaking with SC2 :)
Reaction score
106
Charge of Blood
Another Spell FrozenShadow requested from me, so i made it(idea)


you could have clicked on the link but:
Charge of Blood

The Tauren Berserker charges towards the targeted unit at speeds fast enough to push off units near Degnaul. Degnaul sacrifices health as long as he is charging.

Before I get to the levels, let me explain. It has 9999999 Cast Range, when Degnaul charges forth, he gets a blood effect on his back, where it continues only while he is charging. So as long as Degnaul is charging, he gets damaged. He pushes away any other units he runs into, 250 Range Push, dealing damage of course. Now when he gets to the target enemy, he deals damage total of 25%/50%/75% health he lost while charging. He gets max movespeed while charging, immune to spells while charging.

Extra Details...(If allowed)

Model - Tauren Chieftain
Icon - War Stomp
Framework - WarStomp Animation + Blood Explosion animation on targeted unit once hit by charge of blood. While charging Degnaul gets a blood(death) animation which lasts while he is charging to notice that he is getting damaged too. And if possible add Phoenix Missle to the hooves of Degnaul

I do hope this is not much mr-death

Level 1 - Deals 40 damage to self per second, 40 damage per push. 25% of health lost damaged to target unit. 250 range push.
Level 2 - Deals 80 damage to self per second, 60 damage per push. 50% of health lost damaged to target unit. 250 range push.
Level 3 - Deals 120 damage to self per second, 80 damage per push. 75% of health lost damaged to target unit. 250 range push.

GUI/JASS?:GUI
MUI/MPI?:MPI i think, i could not test it so...
Leaks: I think its leak clean
Lag: NO
Import Difficulty: Low (2 spells)

Some Screenshots first, then go on with the boring triggertext :p:
upload1vn1.jpg

upload2qy6.jpg

upload3dk8.jpg

upload4xe4.jpg

Now the "boring part":
I made 5 triggers first the Cast trigger
Code:
Casting
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Charge of Blood 
    Actions
        Unit - Turn collision for (Triggering unit) Off
        Set CoB_Times[(Integer A)] = 0
        Unit - Order (Triggering unit) to Attack (Target unit of ability being cast)
        Unit - Add Phoenix Hooves  to (Triggering unit)
        Unit - Add classification of Magic Immune to (Triggering unit)
        Set CoB_DamageDealt[(Player number of (Owner of (Triggering unit)))] = 0.00
        Set CoB_Caster[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)
        Unit Group - Remove all units from CoB_AlreadySlide[(Player number of (Owner of (Triggering unit)))]
        Trigger - Add to Command <gen> the event (Unit - (Triggering unit) Is issued an order targeting an object)
        Trigger - Add to Command <gen> the event (Unit - (Triggering unit) Is issued an order targeting a point)
        Trigger - Add to Command <gen> the event (Unit - (Triggering unit) Is issued an order with no target)
then the damagehimself-part
Code:
Periodic
    Events
        Time - Every 0.25 seconds of game time
    Conditions
    Actions
        For each (Integer A) from 1 to 12, do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Phoenix Hooves  for CoB_Caster[(Integer A)]) Greater than 0
                    Then - Actions
                        Set CoB_Times[(Integer A)] = (CoB_Times[(Integer A)] + 1)
                        Set temppoint = (Position of CoB_Caster[(Integer A)])
                        Set tempgroup = (Units within 200.00 of temppoint matching (((((((Matching unit) is A structure) Equal to False) and (((Matching unit) belongs to an ally of (Player((Integer A)))) Equal to False)) and (((Matching unit) is alive) Equal to True)) and (((Matching unit) is in Co
                        Unit Group - Pick every unit in tempgroup and do (Actions)
                            Loop - Actions
                                Unit - Cause CoB_Caster[(Integer A)] to damage (Picked unit), dealing (20.00 + (20.00 x (Real((Level of Charge of Blood  for CoB_Caster[(Integer A)]))))) damage of attack type Spells and damage type Normal
                                Unit Group - Add (Picked unit) to CoB_SlideGroup
                                Unit Group - Add (Picked unit) to CoB_AlreadySlide[(Integer A)]
                        Custom script:   call DestroyGroup (udg_tempgroup)
                        Custom script:   call RemoveLocation (udg_temppoint)
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                CoB_Times[(Integer A)] Equal to 4
                            Then - Actions
                                Set CoB_Times[(Integer A)] = 0
                                Unit - Cause CoB_Caster[(Integer A)] to damage CoB_Caster[(Integer A)], dealing (40.00 x (Real((Level of Charge of Blood  for CoB_Caster[(Integer A)])))) damage of attack type Chaos and damage type Normal
                                Set CoB_DamageDealt[(Integer A)] = (CoB_DamageDealt[(Integer A)] + (40.00 x (Real((Level of Charge of Blood  for CoB_Caster[(Integer A)])))))
                                Special Effect - Create a special effect attached to the chest of CoB_Caster[(Integer A)] using Objects\Spawnmodels\Orc\Orcblood\OrcBloodPeon.mdl
                                Special Effect - Destroy (Last created special effect)
                                Special Effect - Create a special effect attached to the chest of CoB_Caster[(Integer A)] using Objects\Spawnmodels\Orc\Orcblood\OrcBloodPeon.mdl
                                Special Effect - Destroy (Last created special effect)
                            Else - Actions
                    Else - Actions
then the stopifcommanding-part:
Code:
Command
    Events
    Conditions
        (Level of Phoenix Hooves  for (Triggering unit)) Greater than 0
    Actions
        Unit - Turn collision for (Triggering unit) On
        Unit - Remove classification of Magic Immune from (Triggering unit)
        Unit - Remove Phoenix Hooves  from (Triggering unit)
        Set CoB_Caster[(Integer A)] = No unit
        Unit Group - Remove all units from CoB_AlreadySlide[(Player number of (Owner of (Triggering unit)))]
then the attack:
Code:
Target Attack
    Events
        Unit - A unit Is attacked
    Conditions
        (Level of Phoenix Hooves  for (Attacking unit)) Greater than 0
    Actions
        Unit - Turn collision for (Attacking unit) On
        Unit - Remove classification of Magic Immune from (Attacking unit)
        Unit - Remove Phoenix Hooves  from (Attacking unit)
        Set temppoint = (Position of (Attacked unit))
        Special Effect - Create a special effect at temppoint using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect at temppoint using Objects\Spawnmodels\Orc\OrcLargeDeathExplode\OrcLargeDeathExplode.mdl
        Special Effect - Destroy (Last created special effect)
        Custom script:   call RemoveLocation (udg_temppoint)
        Set CoB_DamageDealt[(Player number of (Owner of (Attacking unit)))] = (CoB_DamageDealt[(Player number of (Owner of (Attacking unit)))] x (0.25 x (Real((Level of Charge of Blood  for (Attacking unit))))))
        Unit - Cause (Attacking unit) to damage (Attacked unit), dealing CoB_DamageDealt[(Player number of (Owner of (Attacking unit)))] damage of attack type Spells and damage type Normal
        Set CoB_Caster[(Player number of (Owner of (Attacking unit)))] = No unit
        Unit Group - Remove all units from CoB_AlreadySlide[(Player number of (Owner of (Triggering unit)))]
and last the slide trigger:
Code:
Slide
    Events
        Time - Every 0.04 seconds of game time
    Conditions
    Actions
        For each (Integer A) from 1 to 12, do (Actions)
            Loop - Actions
                Unit Group - Pick every unit in CoB_SlideGroup and do (Actions)
                    Loop - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                ((Picked unit) is in CoB_AlreadySlide[(Integer A)]) Equal to True
                            Then - Actions
                                Set temppoint = (Position of (Picked unit))
                                Set temppoint2 = (Position of CoB_Caster[(Integer A)])
                                Set temppoint3 = (temppoint offset by 10.00 towards ((Angle from temppoint to temppoint2) - 180.00) degrees)
                                Unit - Move (Picked unit) instantly to temppoint3
                                Unit - Set the custom value of (Picked unit) to ((Custom value of (Picked unit)) + 10)
                                Special Effect - Create a special effect at temppoint3 using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
                                Special Effect - Destroy (Last created special effect)
                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        (Custom value of (Picked unit)) Equal to 250
                                    Then - Actions
                                        Unit Group - Remove (Picked unit) from CoB_SlideGroup
                                        Unit - Set the custom value of (Picked unit) to 0
                                    Else - Actions
                                Custom script:   call RemoveLocation (udg_temppoint)
                                Custom script:   call RemoveLocation (udg_temppoint2)
                                Custom script:   call RemoveLocation (udg_temppoint3)
                            Else - Actions

Map attached.
EDIT removed collsion and made more accurate

How to make it MUI:
I dont made it MUI because it could lag maybe
only make a integer variable and set this when casting +1 the replace player number of owner of triggering unit with your variable, if the variable = 2000 set it 0 and set the for each integer A from 1 to 12 to for each integer a from 1 to 2000 (will give 2000 instaces)
and make sure to increase the array of all variables
 

Attachments

  • Charge of Blood V1.3FINAL.w3x
    65.3 KB · Views: 542

w00t22

CSS L4D DoD? Steam ID = w00t22
Reaction score
43
When you're damaging him maybe set the timer to like .10 and then deal 4xlevel of spell in damage so his health doesn't loose big chunks so it looks better maybe?

Ok bugs.

Did you test it? Cause when i target a guy far away and im surrounded by a lot of the enemy's he just gets boxed in. and after not moving for like 5 seconds he canceled the spell and it got casted on some random mob near him. Remove collision to fix this. and it seems once a unit gets knocked back he cant get knocked back again. maybe because he was trapped and wasn't moving. but other than that it was original idea.
 

Drunken_God

Hopes to get back into Mapmaking with SC2 :)
Reaction score
106
yey thats a prob i dont know in which direction the creeps should be pushed back
 

FrozenShadow

I am a WolfieeifloW fan.
Reaction score
75
Thank You Very Much! Its really good!!! I am finally now complete on my map ^^ I appreciate it! +Rep

EDIT: Omg? It says, you must spread some reputation before giving it to Drunken_God again. :banghead:
 

vypur85

Hibernate
Reaction score
803
Code:
Slide
    Events
        Time - Every 0.04 seconds of game time
    Conditions
    Actions
        For each (Integer A) from 1 to 12, do (Actions)
            Loop - Actions
                Unit Group - Pick every unit in CoB_SlideGroup and do (Actions)
                    Loop - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                ((Picked unit) is in CoB_AlreadySlide[(Integer A)]) Equal to True
                            Then - Actions
                                Set temppoint = (Position of (Picked unit))
                                [B]Set temppoint2 = (Position of CoB_Caster[(Integer A)])
                                Set temppoint2 = (temppoint offset by 10.00 towards ((Angle from temppoint to temppoint2) - 180.00) degrees)[/B]
Double set point :p.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top