• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

How to use A DDS? Halp.

Status
Not open for further replies.
Level 6
Joined
Jul 2, 2013
Messages
156
Hello, I need a DDS in order to make a couple spells based on carriorn swarm, but I want them to deal x5 int damage, and I can't find a way to do this without a DDS. Now a problem is how to use a DDS, I've stopped on this DDS, http://www.hiveworkshop.com/forums/spells-569/physical-damage-detection-gui-v1-3-0-0-a-231846/

Where should I add the damage being dealt in this trigger? I tried 1-2 places, and got either a crash or no damage dealt :(
  • OnDamage
    • Events
      • Game - PDD_damageEventTrigger becomes Equal to 1.00
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • PDD_damageType Equal to PDD_PHYSICAL
        • Then - Actions
          • -------- Actions for PHYSICAL damage --------
          • -------- Block all physical damage from the Archmage --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • PDD_source Equal to Archmage 0001 <gen>
            • Then - Actions
              • Set PDD_amount = 0.00
            • Else - Actions
          • -------- Let the Blademaster heal 50 hitpoints on every attack --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • PDD_source Equal to Blademaster 0000 <gen>
            • Then - Actions
              • Set PDD_amount = -50.00
            • Else - Actions
          • Game - Display to (All players) for 10.00 seconds the text: ((Name of PDD_source) + ( damages + ((Name of PDD_target) + ( with damage: + (|cffff0000 + (String(PDD_amount)))))))
          • -------- End of Actions for PHYISCAL damage --------
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • PDD_damageType Equal to PDD_SPELL
            • Then - Actions
              • -------- Actions for SPELL damage --------
              • -------- Double all spell damage from the Mountain King --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PDD_source Equal to Mountain King 0002 <gen>
                • Then - Actions
                  • Set PDD_amount = (2.00 x PDD_amount)
                • Else - Actions
              • Game - Display to (All players) for 10.00 seconds the text: ((Name of PDD_source) + ( damages + ((Name of PDD_target) + ( with damage: + (|cff6495ed + (String(PDD_amount)))))))
              • -------- End of Actions for SPELL damage --------
            • Else - Actions
              • -------- Actions for CODE damage --------
              • Game - Display to (All players) for 10.00 seconds the text: ((Name of PDD_source) + ( damages + ((Name of PDD_target) + ( with damage: + (|cff32cd32 + (String(PDD_amount)))))))
              • -------- End of Actions for CODE damage --------
      • -------- Reflect 50 damage from the Kodo back on the damage source --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • PDD_target Equal to Kodo Beast 0006 <gen>
        • Then - Actions
          • Custom script: call UnitDamageTargetEx(udg_PDD_target, udg_PDD_source, 50.0, true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, null)
        • Else - Actions
 
Level 12
Joined
May 22, 2015
Messages
1,051
Dealing damage causes the DDS to process the new damage event. If, inside that new damage, you cause it to deal damage again, it will have to process another damage event. If there is no way to stop dealing the extra damage, it will never stop looping like this and it will crash you game.

Doing no extra damage means you got it to never deal the damage, so it never loops.

One thing you can do to fix this is:
swap out carrion swarm for an ability based off of Breath of Fire.
In the breath of fire spell, set the buff to a unique buff (create your own).
In the DDS, check if the unit has this unique buff. If they do, remove the buff and then deal the bonus damage. This way, the buff is gone by the time the next damage event runs, so it will skip this part.
 
Level 6
Joined
Jul 2, 2013
Messages
156
Actually, i managed to fix it,
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • PDD_source Equal to Dummy 0030 <gen>
    • Then - Actions
      • Set PDD_amount = (100.00 + PDD_amount)
    • Else - Actions
Had to use this variable for dealing the damage for crash to stop.

Also, thanks SAUS.
 
Level 13
Joined
Jan 2, 2016
Messages
978
You can do it without a DDS:
Pick units in range (the range of the carrion swarm)
if angle from triggering unit to position of picked unit is less than or equal to ~some angle, based on how does the carrion swarm's AoE increases per distance traveled~
and greater than or eqal to ~negative value of the same angle~
damage the units for damage based on your hero's int.
 
Level 6
Joined
Jul 2, 2013
Messages
156
You can do it without a DDS:
Pick units in range (the range of the carrion swarm)
if angle from triggering unit to position of picked unit is less than or equal to ~some angle, based on how does the carrion swarm's AoE increases per distance traveled~
and greater than or eqal to ~negative value of the same angle~
damage the units for damage based on your hero's int.

That's some hardcore math : D I get a basic idea but still...
 
Level 12
Joined
May 22, 2015
Messages
1,051
Since it is a cone, you could just select all units within the max range, and then filter out the units that are not within the two angles of the cone. It wouldn't be exactly the same, but the math is super simple that way.
 
Status
Not open for further replies.
Top