On Death Heal System

This bundle is marked as pending. It has not been reviewed by a staff member yet.
On Death Heal System
IMPORT GUIDE :
  1. Make sure you are using the 1.32 version of Warcraft III (For 1.31 users, you can use compatibility offered by Map Adapter)
  2. Download ODHS from this thread.
  3. Copy the OnDeathHealSystem folder to your map.
  4. Fix the ODHS Config trigger.
  5. The system is ready for use, refer to Testmap folder in the test map to understand how to register units to this system.
SYSTEM INFORMATION :
On Death Heal System (ODHS in short) is a system designed based on Mental Omega's Mantis (Scrap) Tank's ability. The ability in question is to heal nearby allied Mantis Tank when killed. This behavior is what this system aims to replicate.

By using ODHS_Event, users can extend this system to further their need should what this system internally support is insufficient for their personal needs. The system also provides data that can be used to manipulate the system further for users.

ValuesExplanation
ODHS_Event EQUALS TO 1.00Runs when a unit dies and is a unit-type in the system

Useful if you need to make dummy units or something closely tied to the dead unit itself, but not the healed unit (the unit group itself is accessible here though)
ODHS_Event EQUALS TO 2.00Runs when a unit is picked for heal but is yet to be validated

Useful for pre-heal regardless of validity
ODHS_Event EQUALS TO 2.50Runs when a unit is picked for heal but is yet to be validated

Useful for pre-heal with the ability for validation
ODHS_Event EQUALS TO 3.00Runs when a unit has been healed

Useful for after-heal
ODHS_Event EQUALS TO 3.50Runs when a unit is not eligible for heal

Useful for handling non-eligible units
ODHS_Event EQUALS TO 4.00Runs when a unit type has been registered to the system

Useful if you want to extend this system with your own registration
ODHS_Event EQUALS TO 5.00Runs when the system has been initialized

Useful for Unit Register. Due to something related to Warcraft III internal workings, at least in 1.32, it is recommended to have one registration trigger that specifically uses this event as the reference point. For multiple triggers, only have one trigger use this event and then let that trigger call the other triggers. Refer to Example Codes in the test map.
AVOID THE MAP INITIALIZATION EVENT WHEN REGISTERING UNITS TO THIS SYSTEM!

Useful variable list (only available in 1.00 to 3.50 events unless stated otherwise):

VariableDefault Value in the Eligible Events [Type]Description
ODHS_EffectAttachPointorigin [String]Global variable defining all SFX attachment points. If you need to alter this for a specific SFX, use 2.50 Event then alter it then reset it at 3.00 Event back to origin.

Available in all events.
ODHS_DeadPointPoint of ODHS_DeadUnit [Location]Refers to the point of the killed unit. Unused by the system when the events already commence, so this is mostly for accessibility.
ODHS_KillingUnitKilling Unit [Unit]Self-explanatory. Avoid modifying its value unless you know what you are doing.
ODHS_DeadUnitKilled Unit [Unit]Self-explanatory. Avoid modifying its value unless you know what you are doing.
ODHS_HealedUnitHealed Unit [Unit]This refers to the current healed unit. Avoid modification of its value unless you know what you are doing.

Only available in 2.00 onward states.
ODHS_GroupHealed Unit Group [Unit Group]This refers to the group of possible healed units PRIOR to filters. You need to manually filter this group.
ODHS_UnitTypeLoopRegistration Index of Killed Unit [Integer]Very advanced usage. With this, you can access the ODHS_RegisteredXXX values properly in ODHS events.
ODHS_RegisteredUnitTypesAn array of Registered Unit Types [Array Unit Type]Very advanced usage. Access any registered unit types within the system by their registration index. Use UnitTypeLoop to detect the index. Do not modify their value unless you know what you are doing.
ODHS_RegisteredHealAmountAn array of Registered Heal Amount [Array Real]Very advanced usage. Access any registered heal amount within the system by their registration index. Use UnitTypeLoop to detect the index. Do not modify their value unless you know what you are doing.

One of the more useful advanced use is it allows users to acquire how much healing ODHS affects for current HealedUnit prior to event 3.00 or 3.50. This allows for flexibility for example accounting for special buffs and such. Make sure to reset the value after change in the 3.00 or 3.50 event.
ODHS_RegisteredFilterTriggerAn array of Registered Filter Trigger [Array Trigger]Very advanced usage. Access any registered filters within the system by their registration index. Use UnitTypeLoop to detect the index. Do not modify their value unless you know what you are doing.
ODHS_RegisteredHealSFXAn array of Registered Heal SFX [Array String]Very advanced usage. Access any registered heal special effect within the system by their registration index. Use UnitTypeLoop to detect the index. Do not modify their value unless you know what you are doing.
ODHS_RegisteredRangeAn array of Registered Grouping Range [Array Real]Very advanced usage. Access any registered range within the system by their registration index. Use UnitTypeLoop to detect the index. Do not modify their value unless you know what you are doing.

One of the more useful advanced use as it allows users to acquire the range ODHS affects for current KilledUnit.
!NEVER USE WAITS OR TIMER WITH ODHS. IF YOU NEED THOSE, PRESERVE THEIR DATA TO YOUR OWN VARIABLES!

MEDIA SHOWCASE :
CHANGELOG :
Version 1.0: Released
CREDIT :
Mentalmeister - Source Idea
ProxyCakey
Contents

On Death Heal System (Map)

Level 21
Joined
Nov 4, 2010
Messages
6,222
Amazing! :O

I like how you expand the Mantis Tank sheningan and even include AoE Revival on Death too, never thought of that.

Would like to use that but too bad I don't have Reforged yet. Maybe I can convert it for pre-Reforged patches too

How about AoE Divine Shield on death too (similar to Judas Artillery in TC14 and Iron Dragon in MO2/MO3)?
 
How about AoE Divine Shield on death too (similar to Judas Artillery in TC14 and Iron Dragon in MO2/MO3)?
Not a heal but it's possible too with some creativity.

By using the 3.00 event (so we pretend the targeted divine shield units are an eligible healed unit with 0 heal value), we can then give the invulnerability to the unit (may it be via buff, invulnerable by armor, or other means). A challenge is a limited duration since the variable reference is lost once the whole healing sequence is done so we need to have something to keep referring to the units to strip their bonus once the duration is over (and expanding the whole system that direction seems overkill for me at the moment, but I can change my mind down the line).

I can wrap a quick sample if that helps too.

EDIT:

  • ODHS Siege Engine Data
    • Events
      • Game - ODHS_Event becomes Equal to 5.00
    • Conditions
    • Actions
      • -------- ------------------------------------------------------------------------------------------------------------------------------ --------
      • -------- TEMPORARY INVULNERABILITY FOR SAME UNIT TYPE --------
      • -------- ------------------------------------------------------------------------------------------------------------------------------ --------
      • -------- Unit Type to register --------
      • Set VariableSet ODHS_UnitType = Siege Engine
      • -------- How much healed for each unit? --------
      • Set VariableSet ODHS_HealAmount = 0.00
      • -------- How much healed for each unit? --------
      • Set VariableSet ODHS_HealSFX = Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
      • -------- Distance from killed unit? --------
      • Set VariableSet ODHS_Range = 1000.00
      • -------- Personal Filter --------
      • Set VariableSet ODHS_FilterTrigger = ODHS_DefaultFilterTrigger
      • -------- Register to system --------
      • Trigger - Run ODHS_RegisterTrigger (checking conditions)
  • ODHS Siege Engine Shield
    • Events
      • Game - ODHS_Event becomes Equal to 3.00
    • Conditions
      • (Unit-type of ODHS_DeadUnit) Equal to Siege Engine
    • Actions
      • Unit - Make ODHS_HealedUnit Invulnerable
      • Unit Group - Add ODHS_HealedUnit to SiegeEngineGroup
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in SiegeEngineGroup) Equal to 1
        • Then - Actions
          • Trigger - Turn on ODHS Siege Engine Shield Up <gen>
        • Else - Actions
      • Countdown Timer - Start ShieldTimer as a One-shot timer that will expire in 5.00 seconds
  • ODHS Siege Engine Shield Up (Initially Off)
    • Events
      • Time - ShieldTimer expires
    • Conditions
    • Actions
      • Unit Group - Pick every unit in SiegeEngineGroup and do (Actions)
        • Loop - Actions
          • Unit - Make (Picked unit) Vulnerable
          • Unit Group - Remove (Picked unit) from SiegeEngineGroup.
      • Trigger - Turn off (This trigger)
Not MUI/MPI in a proper sense, but should help to give the gist of logic out. Speaking of logic, I think a timer feature would be a helpful addition if I can get the motivation for it.
 
Last edited:
Top