DamageOverTime v1.3

  • Like
Reactions: deepstrasz
Damage Over Time
IMPORT GUIDE :
1. Enable "Tick the Automatically create unknown variables ..." located at File>Preference>General
2. Copy the DamageOverTime trigger folder
3. Configure the DOTConfig trigger according to the comments provided
4. Configure the triggers that needs the DOT effect based on the provided DOTExample and Example triggers in the test map
SPELL INFORMATION :
Based on Dynasti-Paladon Damage Over Time.

Currently focuses on mimicking the features provided in Paladon version. Future extensions are planned.

In order to inflict DOT to a unit, setup a trigger with the following information provided:
  • DOTExample
    • Events
    • Conditions
    • Actions
      • -------- SourceUnit refers to the damage source --------
      • Set DOT_SourceUnit = No unit
      • -------- TargetUnit refers to the unit being damaged --------
      • Set DOT_TargetUnit = No unit
      • -------- Total Damage is the total damage dealt over the entire DOT --------
      • Set DOT_TotalDamage = 0.00
      • -------- Duration is how long the effect lasts --------
      • Set DOT_Duration = 0.00
      • -------- DamageInterval is the time between two damage instances --------
      • Set DOT_DamageInterval = 0.00
      • -------- SFX is the effect attached while the DOT occurs --------
      • Set DOT_SFX = <Empty String>
      • -------- SFX Attach Point is the effect attach point while the DOT occurs --------
      • Set DOT_SFXAttachPoint = <Empty String>
      • -------- Attack Type is the type of attack for the DOT --------
      • Set DOT_AttackType = Spells
      • -------- Damage Type is the type of damage for the DOT --------
      • Set DOT_DamageType = Unknown
      • -------- Run the DOT system --------
      • Trigger - Run DOT_TriggerRegister (checking conditions)
MEDIA SHOWCASE :
CHANGELOG :
Version 1.3: Removed TELL requirement and restructure the code to utilize Dynamic Indexing (refer to this post for the reasoning) - there's no major loss from this since unlike TSELL, DOT is a very closed system by itself.
Version 1.2: Fixed a critical bug within the loop section of the system
Version 1.1: Updated TimedEventLinkedList in test map to match the updated version
Version 1.0: Released

CREDIT :
Dynasti & Paladon: Original [GUI] DamageOverTime
Contents

DamageOverTime v1.3 (Map)

Reviews
Wrda
This is a solid system for GUI users, better than its predecessors. Approved
Question: Can you stack DoT with this system? e.g. You deal 100 damage over 10 seconds and 5 seconds later you deal another 100 over 10 seconds. Will the total damage be 200 in that case?
Yes, however I just noticed it is not compatible with the update to TimedEventLinkedList so an update is in order
 
Version 1.1: Updated TimedEventLinkedList in test map to match the updated version

Hi, Daffa here. After some testing I determined that this update is not mandatory IF YOU DO NOT USE TSELL AT ALL. However, DO NOT USE TELL FROM TEST MAP IF YOU DOWNLOAD V1.0 SINCE IT IS NOT COMPATIBLE WITH TSELL!
 
So, I found a critical bug in the loop's conditional check. This line:
  • (DOT_TargetUnit is alive) Equal to False
should have been:
  • (DOT_TargetUnit_I[DOT_Index] is alive) Equal to False
patch 1.2 addresses this issue. If you use 1.0 or 1.1, you can use the following trigger to make it equivalent to the 1.2 fix:
  • DOTLoop
    • Events
    • Conditions
    • Actions
      • -------- For readability --------
      • Set DOT_Index = TELL__Index
      • -------- Deal damage --------
      • Unit - Cause DOT_SourceUnit_I[DOT_Index] to damage DOT_TargetUnit_I[DOT_Index], dealing DOT_DamagePerTime_I[DOT_Index] damage of attack type DOT_AttackType_I[DOT_Index] and damage type DOT_DamageType_I[DOT_Index]
      • -------- End prematurely if target is already killed --------
      • Set DOT_TargetUnit = DOT_TargetUnit_I[DOT_Index]
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DOT_TargetUnit is alive) Equal to False
        • Then - Actions
          • Set TELL__Duration = 0.00
        • Else - Actions
The only thing you need to add is this line before If/Then/Else condition:
  • Set DOT_TargetUnit = DOT_TargetUnit_I[DOT_Index]
 
Top