Snippet DamageType

Dirac

22710180
Reaction score
147
JASS:
library DamageType /* v1.0.1

*/uses/*
*/  Damage  /* thehelper.net/forums/showthread.php/168144-Damage-Struct

A useful tool for creating custom damage types.

***********************************************************************
*
*   function UnitDamageTargetEx takes unit source, unit target, real amount, 
*   integer damageType, boolean considerArmor returns nothing
*       -   Deals custom type damage, will fire functions registered to
*       -   it.
*
***********************************************************************
*
*   struct DamageType
*
*       -   Creates custom damage types that are evaluated only when
*       -   dealt through the UnitDamageTargetEx function.
*
*       static method create takes nothing returns DamageType
*           -   Creates a new damage type.
*       method register takes code func returns triggercondition
*           -   Registers the function to the damage type.
*       method unregister takes triggercondition whichCondition returns nothing
*           -   Unregisters the function from the damage type.
*
***********************************************************************
    
This needs to be a textmacro in order to keep the encapsulation correct
and private within the Damage library. Consider this textmacro private.

**********************************************************************/

//! textmacro DAMAGE_TYPE_EX1
    globals
        private trigger array DamageTypeTrig
        private integer       DamageTypeEvent = 0
    endglobals
    
    //*********************************************************************
    //  This function will make damage dealt pass through the custom damage
    //  type's filter.
    function UnitDamageTargetEx takes unit source, unit target, real amount, integer damageType, boolean considerArmor returns nothing
        local integer prevType=DamageTypeEvent
        set DamageTypeEvent=damageType
        if considerArmor then
            call UnitDamageTarget(source,target,amount,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_NORMAL,null)
        else
            call UnitDamageTarget(source,target,amount,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_UNIVERSAL,null)
        endif
        set DamageTypeEvent=prevType
    endfunction
    
    struct DamageType extends array
        private static thistype size = 0
        
        //*********************************************************************
        //  Only the corresponding trigger created for the damage type will be
        //  evaluated once the damage is dealt.
        static method create takes nothing returns thistype
            set size=size+1
            set DamageTypeTrig[size]=CreateTrigger()
            return size
        endmethod
        
        method register takes code func returns triggercondition
            return TriggerAddCondition(DamageTypeTrig[this],Filter(func))
        endmethod
        
        method unregister takes triggercondition whichCondition returns nothing
            call TriggerRemoveCondition(DamageTypeTrig[this],whichCondition)
        endmethod
    endstruct
//! endtextmacro

//! textmacro DAMAGE_TYPE_EX2

    //*********************************************************************
    //  Fires the trigger using the custom damage type as an array index.
    call TriggerEvaluate(DamageTypeTrig[DamageTypeEvent])
//! endtextmacro
endlibrary
 

Bribe

vJass errors are legion
Reaction score
67
I imagine the importing instructions require the user to delete Jesus4Lyf's UDTEx, and implement these textmacros instead.

Why not have the importing instructions already documented?
 

Dirac

22710180
Reaction score
147
I'll add implementation instructions to the main library explaining why you should remove J4L's Damage from your map
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • The Helper The Helper:
    Happy Friday!
    +1
  • tom_mai78101 tom_mai78101:
    Starting this upcoming Thursday, I will be in Japan for 10 days.
  • tom_mai78101 tom_mai78101:
    Thursday - Friday will be my Japan arrival flight. 9 days later, on a Sunday, will be my return departure flight.
    +2
  • The Helper The Helper:
    Hope you have safe travels my friend!
    +1
  • vypur85 vypur85:
    Wow spring time in Japan is awesome. Enjoy!
  • The Helper The Helper:
    Hopefully it will be more pleasure than work
  • vypur85 vypur85:
    Recently tried out ChatGPT about WE triggering. Wow it's capable of giving a somewhat legitimate response.
  • The Helper The Helper:
    I am sure it has read all the info on the forums here
  • The Helper The Helper:
    i think triggering is just scripting and chatgpt is real good at code
  • vypur85 vypur85:
    Yeah I suppose so. It's interesting how it can explain in so much detail.
  • vypur85 vypur85:
    But yet it won't work.
  • The Helper The Helper:
    it does a bad ass job doing excel vba code it has leveled me up at my job when I deal with excel that is for sure
  • vypur85 vypur85:
    Nice! I love Excel coding as well. Has always been using Google to help me. Maybe I'll use ChatGPT next time when I need it.
  • The Helper The Helper:
    yeah whatever it puts out even if it is not perfect I can fix it and the latest version of chatgpt can create websites from pictures it will not be long until it can do that with almost all the tools
    +1
  • The Helper The Helper:
    These new Chat AI programs are going to change everything everyone better Buckle the Fuck Up!
  • The Helper The Helper:
    oh and Happy Tuesday Evening! :)
    +1
  • jonas jonas:
    Im worried they'll change things for worse
  • jonas jonas:
    A lot more low quality content, a lot more half-baked stuff.
  • jonas jonas:
    If you're good enough to spot the mistakes of the answers you don't need it in the first place. If you aren't good enough, you're gonna rely on some half-correct stuff
  • The Helper The Helper:
    the earlier AI is and has been used extensively for publishing news and other content for a while now
  • jonas jonas:
    I used to be active on quora, it's now flooded with extremely similar, superficial answers that often miss the point of the question
  • N NJJ:
    hi
  • N NJJ:
    Hello, gathering all my old accounts… :)
    +1

    The Helper Discord

    Members online

    No members online now.

    Affiliates

    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.
    Top