• 🏆 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!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

[Solved] [GUI] Death syphon from DAO

Status
Not open for further replies.
Level 24
Joined
Mar 16, 2018
Messages
280
So I m looking for someone who can create spell from DAO "Death syphon", that may be passive skill.
So that unit has ability Death Syphon, it gains mana from corpses (not kills) around unit in radius 300-500?. Then show mana transfering( like corpses would fire magic missile at caster) and gain 10 arythmetic + real Int mana?
 
Last edited:

Uncle

Warcraft Moderator
Level 65
Joined
Aug 10, 2018
Messages
6,700
You'll have to go into greater detail if you want people to know exactly how it works.

Primarily, does it periodically look for nearby corpses or does it trigger when a unit dies within it's radius?

Describing it like an ability tooltip always helps:
Every few seconds a nearby (enemy? ally?) corpse is consumed, replenishing mana to the hero based on their intelligence.
Level 1: 5 Mana + 10% Intelligence
Level 2: 10 Mana + 20% Intelligence
Level 3: 15 Mana + 30% Intelligence

Additionally, it helps to know if you have systems in your map already. These come to mind:
Unit Indexer, Damage Engine
 
Last edited:
Level 24
Joined
Mar 16, 2018
Messages
280
You'll have to go into greater detail if you want people to know exactly how it works.

Primarily, does it periodically look for nearby corpses or does it trigger when a unit dies within it's radius?

Describing it like an ability tooltip always helps:
Every few seconds a nearby (enemy? ally?) corpse is consumed, replenishing mana to the hero based on their intelligence.
Level 1: 5 Mana + 10% Intelligence
Level 2: 10 Mana + 20% Intelligence
Level 3: 15 Mana + 30% Intelligence

Additionally, it helps to know if you have systems in your map already. These come to mind:
Unit Indexer, Damage Engine
Can description from the original game help? Here's the fandom link Death Syphon (Origins)
 

Uncle

Warcraft Moderator
Level 65
Joined
Aug 10, 2018
Messages
6,700
That helps, so you want it to work EXACTLY like this? I'm thinking something along the lines of taking the Immolation ability since that drains mana, removing the damage from it, and then having a Trigger that detects when you Activate/Deactive it. While active, your hero will periodically consume a nearby corpse for mana.

Edit: You said you wanted it to be Passive though? So it doesn't drain mana and doesn't need to be activated.
 
Last edited:
Level 24
Joined
Mar 16, 2018
Messages
280
That helps, so you want it to work EXACTLY like this? I'm thinking something along the lines of taking the Immolation ability since that drains mana, removing the damage from it, and then having a Trigger that detects when you Activate/Deactive it. While active, your hero will periodically consume a nearby corpse for mana.

Edit: You said you wanted it to be Passive though? So it doesn't drain mana and doesn't need to be activated.
As I said, could you help me with this? You could make this the way you see it
 

Uncle

Warcraft Moderator
Level 65
Joined
Aug 10, 2018
Messages
6,700
Alright, you'll have to recreate the triggers.
  • Learn Death Syphon
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Death Syphon (Passive)
    • Actions
      • Unit Group - Add (Triggering unit) to DS_HeroGroup
      • Trigger - Turn on Death Syphon Loop <gen>
  • Death Syphon Loop
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in DS_HeroGroup and do (Actions)
        • Loop - Actions
          • Set Variable DS_Hero = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (DS_Hero is alive) Equal to True
            • Then - Actions
              • -------- Setup: --------
              • Set Variable DS_Point = (Position of DS_Hero)
              • Set Variable DS_Level = (Level of Death Syphon for DS_Hero)
              • Set Variable DS_Radius = (200.00 + (100.00 x (Real(DS_Level))))
              • Set Variable DS_CorpseGroup = (Units within DS_Radius of DS_Point matching ((((Matching unit) is dead) Equal to True) and (((Matching unit) is A Hero) Equal to False)).)
              • Custom script: call RemoveLocation(udg_DS_Point)
              • -------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in DS_CorpseGroup) Greater than 0
                • Then - Actions
                  • -------- Restore mana: --------
                  • Unit - Set mana of DS_Hero to ((Mana of DS_Hero) + (10.00 + (Real((Intelligence of DS_Hero (Include bonuses))))))
                  • -------- --------
                  • -------- Get a random nearby corpse: --------
                  • Set Variable DS_Corpse = (Random unit from DS_CorpseGroup)
                  • -------- --------
                  • -------- Order Dummy Unit to cast Acid Bomb for the Missile effect: --------
                  • Set Variable DS_Point = (Position of DS_Corpse)
                  • Unit - Create 1 Death Syphon Dummy for (Owner of DS_Hero) at DS_Point facing Default building facing degrees
                  • Custom script: call RemoveLocation(udg_DS_Point)
                  • Unit - Add a 0.40 second Generic expiration timer to (Last created unit)
                  • Unit - Order (Last created unit) to Neutral Alchemist - Acid Bomb DS_Hero
                  • -------- --------
                  • -------- The corpse was consumed so remove it: --------
                  • Unit - Remove DS_Corpse from the game
                • Else - Actions
              • -------- --------
              • Custom script: call DestroyGroup(udg_DS_CorpseGroup)
            • Else - Actions

You'll need a new Dummy unit and a new ability based on Acid Bomb.
Base your Dummy unit on the Locust (Crypt Lord special unit) and Set it's Movement - Type to None, Speed Base to 0, and Attacks Enabled to None.
Give the Dummy the new Acid Bomb ability:
Dummy Spell.png


Don't forget to update the triggers to use your Abilities! The Dummy casts the Acid Bomb ability. Your Hero learns the Passive skill.
The Death Syphon Loop trigger should be Initially OFF. We don't want it to run unless a unit actually has the Death Syphon ability.

Variables:
DS_Corpse = Unit
DS_Hero = Unit
DS_CorpseGroup = Unit Group
DS_HeroGroup = Unit Group
DS_Level = Integer
DS_Radius = Real
DS_Point = Point
 

Attachments

  • Death Syphon 1.w3m
    19.8 KB · Views: 7
Last edited:
Level 24
Joined
Mar 16, 2018
Messages
280
Oh Em Gee, Thank you for your time sir, I'll sort things out from this part, cheers!
Alright, you'll have to recreate the triggers.
  • Learn Death Syphon
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Death Syphon (Passive)
    • Actions
      • Unit Group - Add (Triggering unit) to DS_HeroGroup
      • Trigger - Turn on Death Syphon Loop <gen>
  • Death Syphon Loop
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in DS_HeroGroup and do (Actions)
        • Loop - Actions
          • Set Variable DS_Hero = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (DS_Hero is alive) Equal to True
            • Then - Actions
              • -------- Setup: --------
              • Set Variable DS_Point = (Position of DS_Hero)
              • Set Variable DS_Level = (Level of Death Syphon for DS_Hero)
              • Set Variable DS_Radius = (200.00 + (100.00 x (Real(DS_Level))))
              • Set Variable DS_CorpseGroup = (Units within DS_Radius of DS_Point matching ((((Matching unit) is dead) Equal to True) and (((Matching unit) is A Hero) Equal to False)).)
              • Custom script: call RemoveLocation(udg_DS_Point)
              • -------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in DS_CorpseGroup) Greater than 0
                • Then - Actions
                  • -------- Restore mana: --------
                  • Unit - Set mana of DS_Hero to (10.00 + (Real((Intelligence of DS_Hero (Include bonuses)))))
                  • -------- --------
                  • -------- Get a random nearby corpse: --------
                  • Set Variable DS_Corpse = (Random unit from DS_CorpseGroup)
                  • -------- --------
                  • -------- Order Dummy Unit to cast Acid Bomb for the Missile effect: --------
                  • Set Variable DS_Point = (Position of DS_Corpse)
                  • Unit - Create 1 Death Syphon Dummy for (Owner of DS_Hero) at DS_Point facing Default building facing degrees
                  • Custom script: call RemoveLocation(udg_DS_Point)
                  • Unit - Add a 0.40 second Generic expiration timer to (Last created unit)
                  • Unit - Order (Last created unit) to Neutral Alchemist - Acid Bomb DS_Hero
                  • -------- --------
                  • -------- The corpse was consumed so remove it: --------
                  • Unit - Remove DS_Corpse from the game
                • Else - Actions
              • -------- --------
              • Custom script: call DestroyGroup(udg_DS_CorpseGroup)
            • Else - Actions

You'll need a new Dummy unit and a new ability based on Acid Bomb.
Base your Dummy unit on the Locust (Crypt Lord special unit) and Set it's Movement - Type to None, Speed Base to 0, and Attacks Enabled to None.
Give the Dummy the new Acid Bomb ability:
View attachment 395486

Don't forget to update the triggers to use your Abilities! The Dummy casts the Acid Bomb ability. Your Hero learns the Passive skill.
The Death Syphon Loop trigger should be Initially OFF. We don't want it to run unless a unit actually has the Death Syphon ability.

Variables:
DS_Corpse = Unit
DS_Hero = Unit
DS_CorpseGroup = Unit Group
DS_HeroGroup = Unit Group
DS_Level = Integer
DS_Radius = Real
DS_Point = Point
 

Uncle

Warcraft Moderator
Level 65
Joined
Aug 10, 2018
Messages
6,700
The unit remains in the group, that's why I check if they're alive before consuming a corpse:
  • (DS_Hero is alive) Equal to True

If you'd like you could manually remove the units from the group upon death. Then check if the group is empty, and if it is, turn off the Loop trigger.

I assumed a Hero would be using this ability, and since Heroes can revive I figured it was okay to just leave it running.
 

Uncle

Warcraft Moderator
Level 65
Joined
Aug 10, 2018
Messages
6,700
I made a mistake in the Restore mana part of the trigger. It should look like this:
  • -------- Restore mana: --------
  • Unit - Set mana of DS_Hero to ((Mana of DS_Hero) + (10.00 + (Real((Intelligence of DS_Hero (Include bonuses))))))

Also, you probably want to edit the buff so it's not the default Acid Bomb buff. I'd copy it and create a new version that has no Art / Tooltip / Icon (can't exactly hide buff icons).
 
Level 24
Joined
Mar 16, 2018
Messages
280
I made a mistake in the Restore mana part of the trigger. It should look like this:
  • -------- Restore mana: --------
  • Unit - Set mana of DS_Hero to ((Mana of DS_Hero) + (10.00 + (Real((Intelligence of DS_Hero (Include bonuses))))))
I've noticed that few days ago, but tried to solve myself, it kinda worked but I was like what the hell why my mana so low XD

EDit: So it must be arythmetic
 
Status
Not open for further replies.
Top