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

Shadow Word: Pain

Status
Not open for further replies.
Level 8
Joined
Dec 16, 2007
Messages
252
I need help with this spell.

"Assault your target with shadow energy and cause 10 damages every 3 seconds for 18 seconds, if you have Vampire buff when casting this spell you'll gain 13 hp everytime you damage the target with this spell".

A DoT spell which also heals the caster if the caster have the Vampire Buff (Heals every 3 second like the damage).

I want to make it MUI and that's the problem. And I don't want to base it off Shadow Strike either, since I am using a damage text system so it would look strange with the damage text from the Shadow Strike.

Please help, I've tried to make it but.. It didn't work at all. It would be good enough if you make it 1 level and I could do the rest.
 
Level 12
Joined
Aug 18, 2006
Messages
1,193
try something like this
  • Shadow Word Pain Cast
  • Events
    • Unit - A unit Starts the effect of an ability
  • Conditions
    • (Ability being cast) Equal to Shadow Word : Pain
  • Actions
    • Countdown Timer - Start ShadowTimer[Player number of (Casting unit)] as a Repeating timer that will expire in 3.00 seconds
    • Set Hero[Player number of (Casting unit)] = (Casting unit) or (Triggering unit)
    • For each (Integer A) from 1 to <Insert amount of players possible> do (Actions)
      • Loop - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • ShadowTarget[Integer A] Equal to (Target of ability being cast)
          • Then - Actions
            • Set ShadowTarget[Integer A] Equal to No unit
            • Set ShadowTarget[Player number of (Owner of (Casting unit))] = (Target of ability being cast)
          • Else - Actions
  • Shadow Word Pain Damage
  • Events
    • ShadowTimer[1] expires
    • ShadowTimer[2] expires
    • and so on for each player playing
  • Conditions
  • Actions
    • For each (Integer A) from 1 to <Insert amount of players possible here>, do (Actions)
      • Loop - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • (Remaining time for ShadowTimer[Integer A]) Equal to 0.00
          • Then - Actions
            • Set ShadowLoop[Integer A] = ShadowLoop[Integer A] + 1
            • Trigger - Run (Shadow Word Stop) without checking conditions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • (ShadowTarget[Integer A] has buff Shadow Word : Pain) Equal to True
              • Then - Actions
                • Unit - Cause Hero[Integer A] to damage ShadowTarget[Integer A] dealing 10.00 Daamage of type Spells and damage type Normal
                • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (Hero[Integer A] has buff Vampire) Equal to True
                  • Then - Actions
                    • Unit - Set life of Hero[Integer A] to ((Life of Hero[Integer A]) + 13)
                  • Else - Actions
              • Else- Actions
          • Else - Actions
  • Shadow Word Stop
  • Events
  • Conditions
  • Actions
    • For each (Integer B) from 1 to <Insert amount of players possible> do (Actions)
      • Loop - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • ShadowLoop[Integer B] Equal to 6 (since 3x6 = 18)
          • Then - Actions
            • Countdown Timer - Start ShadowTimer[Integer B] as a One-shot timer that will expire in 10 seconds(just doing this since it might cause some bugs otherwise)
            • Countdown Timer - Pause ShadowTimer[Integer B]
          • Else - Actions
there we go :p
 
Last edited:
Level 21
Joined
Aug 9, 2006
Messages
2,384
It uses Integer A, means it isnt even MPI.... the things will collide, and Razorbrain, it is NEVER MUI, because it is player based, MUI would be like you could cast it with 2 - 100 units owned by player red at the same time.

It will bug like hell, just a warning, if more as 1 player cast it at the same time.

Just a tip: Integer A is a global native which cant be multi-called without resetting every other Integer A used in the Map.

And if you cast multiple of these the units will get double and triple damage, because everytime the timer expires all units under this spell will receive the damage, so if there are 2 it will deal double damage, because both timers expire and cause the damage.
 
Level 12
Joined
Aug 18, 2006
Messages
1,193
It uses Integer A, means it isnt even MPI.... the things will collide, and Razorbrain, it is NEVER MUI, because it is player based, MUI would be like you could cast it with 2 - 100 units owned by player red at the same time.

It will bug like hell, just a warning, if more as 1 player cast it at the same time.

Just a tip: Integer A is a global native which cant be multi-called without resetting every other Integer A used in the Map.

And if you cast multiple of these the units will get double and triple damage, because everytime the timer expires all units under this spell will receive the damage, so if there are 2 it will deal double damage, because both timers expire and cause the damage.
you call it MPI, i call it MUI(U as in User = Player)

what you are saying doesnt seem to work in my map, since im using several Integer As at the same time

maybe i intendet it to stack?
 
Level 21
Joined
Aug 9, 2006
Messages
2,384
Not the same player, if for example player 1 casts it on Enemy A and player 2 on Enemy B, the damage on Enemy A and B will be doubled, because the timer of player 1 will damage Enemy B and the timer of player 2 will damage Enemy A, because they are picked by the loop, you should seriously learn to use your brain.
 
Level 12
Joined
Aug 18, 2006
Messages
1,193
according to me, it will with 1 unit per player

according to him, it is bugged for the moment

oh, forgot to tell you something(that redscores actually has a point on)

If the player casts the spell on a new unit, before the spell is over, it will not deal damage to the first unit, only the second one

and it stacks ontop of eachother(Player 1 and 3 can cast the same spell on the unit, both will deal damage and both will get healed with the buff)
 
Level 8
Joined
Dec 16, 2007
Messages
252
Dunno but, can't I add the target to a group and later check if his already in the group to prevent it? But since the older one gotta be overrid by the newer one I have to remove the buff and later add it back too right?
 
Status
Not open for further replies.
Top