Snippet AmplifyDamage

Dirac

22710180
Reaction score
147
JASS:
library AmplifyDamage /* v1.0.4

*/uses/*
*/  DamageMod   /* thehelper.net/forums/showthread.php/168198-Damage-Mod

A useful tool to handle percentual damage from units.

**********************************************************************/
globals
    private constant integer AMPLIFY_DAMAGE_PRIORITY    =3
    //The priority sets before and after which damage mods the bonus damage
    //is dealt.
endglobals
/**********************************************************************
*
*   struct AmplifyDamage
*
*       -   Modifies unit damage dealt by percentual value.
*       -   Takes the unit's custom value as an instance.
*
*       real amount
*           -   Determines how much percentual damage the will be
*           -   modified for the unit.
*       readonly static DamageMod MOD
*           -   The mod used for this code.
*       method addFilter takes code func returns triggercondition
*           -   If the filter returns false then it skips damage
*           -   modification.
*       method removeFilter takes triggercondition whichCondition returns nothing
*           -   Disables the filter
*
*********************************************************************/

    private module AmplifyDamageModule
        readonly static DamageMod   MOD
        private         trigger     trig
                        real        amount
        
        method addFilter takes code func returns triggercondition
            if null==this.trig then
                set this.trig=CreateTrigger()
            endif
            return TriggerAddCondition(this.trig,Filter(func))
        endmethod
        
        method removeFilter takes triggercondition whichCondition returns nothing
            call TriggerRemoveCondition(this.trig,whichCondition)
        endmethod
        
        private static method onDamage takes nothing returns boolean
            local real result=thistype(Damage.sourceId).amount*Damage.dealt
            if result>0 then
                if not(null==thistype(Damage.sourceId).trig) then
                    if not(TriggerEvaluate(thistype(Damage.targetId).trig)) then
                        return false
                    endif
                endif
                call Damage.add(result)
            endif
            return false
        endmethod
        
        private static method onInit takes nothing returns nothing
            set MOD=DamageMod.create(function thistype.onDamage,AMPLIFY_DAMAGE_PRIORITY)
        endmethod
    endmodule
    
    struct AmplifyDamage extends array
        implement AmplifyDamageModule
    endstruct
endlibrary
 

Dirac

22710180
Reaction score
147
Update v1.03
-Fixed important bug that was causing the snippet to malfunction
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • jonas jonas:
    where did you go?
  • The Helper The Helper:
    Jefferson TX on a Paranormal Investigation of a haunted bed and breakfast - I got some friends that are paranormal investigators and they have an RV and do YouTubes
    +1
  • The Helper The Helper:
    It was a lot of fun. The RV was bad ass
  • jonas jonas:
    That sounds like fun!
    +1
  • The Helper The Helper:
    it was a blast!
  • The Helper The Helper:
    I am going to post the Youtube of the investigation in the forums when it is ready
    +1
  • jonas jonas:
    cool!
  • vypur85 vypur85:
    Sounds cool TH.
  • tom_mai78101 tom_mai78101:
    I was on a Legend of Zelda marathon...
  • tom_mai78101 tom_mai78101:
    Am still doing it now
    +1
  • jonas jonas:
    which one(s) are you playing?
  • jonas jonas:
    I played a little bit of the switch title two weeks ago and found it quite boring
  • The Helper The Helper:
    just got back from San Antonio this weekend had the best Buffalo Chicken Cheesesteak sandwhich in Universal City, TX - place was called Yous Guys freaking awesome! Hope everyone had a fantastic weekend!
    +1
  • The Helper The Helper:
    Happy Tuesday!
  • The Helper The Helper:
    We have been getting crazy numbers reported by the forum of people online the bots are going crazy on us I think it is AI training bots going at it at least that is what it looks like to me.
  • The Helper The Helper:
    Most legit traffic is tracked on multiple Analytics and we have Cloud Flare setup to block a ton of stuff but still there is large amount of bots that seem to escape detection and show up in the user list of the forum. I have been watching this bullshit for a year and still cannot figure it out it is drving me crazy lol.
    +1
  • Ghan Ghan:
    Beep boop
    +1
  • The Helper The Helper:
    hears robot sounds while 250 bots are on the forum lol
  • The Helper The Helper:
    Happy Saturday!
    +1
  • The Helper The Helper:
    and then it was Thursday...
    +2
  • tom_mai78101 tom_mai78101:
    And then Monday
    +1
  • The Helper The Helper:
    I got the day off today!
    +1
  • tom_mai78101 tom_mai78101:
    How...? (T-T)
  • The Helper The Helper:
    I took the day off. I work for myself so I can do that.
    +1
  • Varine Varine:
    Well I'm already over summer

    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