Snippet RawDamage

Dirac

22710180
JASS:
library RawDamage /* v1.0.5

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

A useful tool to handle raw damage from units.

**********************************************************************/
globals
    constant integer RAW_DAMAGE_PRIORITY    =1
    //The priority sets before and after which damage mods the raw damage
    //is dealt.
endglobals
/**********************************************************************
*
*   struct RawDamage
*
*       -   Modifies unit damage by exact values.
*       -   Takes the unit's custom value as an instance.
*
*       real input
*           -   Determines how much extra damage the unit receives when
*           -   it takes damage.
*       real output
*           -   Determines how much extra damage the unit deals when
*           -   it deals damage.
*       readonly static DamageMod MOD
*           -   The mod used for this code.
*       method addOutputFilter takes code func returns triggercondition
*       method addInputFilter takes code func returns triggercondition
*           -   If the filter returns false then it skips damage
*           -   modification.
*       method removeOutputFilter takes triggercondition whichCondition returns nothing
*       method removeInputFilter takes triggercondition whichCondition returns nothing
*           -   Disables the filter
*
*********************************************************************/

    private module RawDamageModule
        readonly static DamageMod   MOD
        private         trigger     outputTrig
        private         trigger     inputTrig
                        real        output
                        real        input
        
        method addOutputFilter takes code func returns triggercondition
            if null==this.outputTrig then
                set this.outputTrig=CreateTrigger()
            endif
            return TriggerAddCondition(this.outputTrig,Filter(func))
        endmethod
        
        method removeOutputFilter takes triggercondition whichCondition returns nothing
            call TriggerRemoveCondition(this.outputTrig,whichCondition)
        endmethod
        
        method addInputFilter takes code func returns triggercondition
            if null==this.inputTrig then
                set this.inputTrig=CreateTrigger()
            endif
            return TriggerAddCondition(this.inputTrig,Filter(func))
        endmethod
        
        method removeInputFilter takes triggercondition whichCondition returns nothing
            call TriggerRemoveCondition(this.inputTrig,whichCondition)
        endmethod
        
        private static method onDamage takes nothing returns boolean
            local real result=thistype(Damage.sourceId).output-thistype(Damage.targetId).input
            if result>0 then
                if not(null==thistype(Damage.sourceId).outputTrig) then
                    if not(TriggerEvaluate(thistype(Damage.targetId).outputTrig)) then
                        return false
                    endif
                endif
                call Damage.add(result)
            elseif result<0 then
                if not(null==thistype(Damage.targetId).inputTrig) then
                    if not(TriggerEvaluate(thistype(Damage.targetId).inputTrig)) then
                        return false
                    endif
                endif
                call Damage.prevent(result)
            endif
            return false
        endmethod
        
        private static method onInit takes nothing returns nothing
            set MOD=DamageMod.create(function thistype.onDamage,RAW_DAMAGE_PRIORITY)
        endmethod
    endmodule
    
    struct RawDamage extends array
        implement RawDamageModule
    endstruct
endlibrary
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • C Cherry.Grove:
    So what's the whole reforged situation? Do we have to run the classic version bootleg now?
  • C Cherry.Grove:
    My boyfriend is super into Bethesda modding so I'm probably going to join him in that for a bit, then move on to making mobile/browser games.
  • C Cherry.Grove:
    I mostly just want to look at my old projects because I know I posted uploads on here somewhere.
  • C Cherry.Grove:
    My one game was basically Among Us but you sabotaged an entire medieval city simulated drastically inefficiently with dynamic NPCs :S
  • C Cherry.Grove:
    of course I never finished it x D
  • jonas jonas:
    xD
  • jonas jonas:
    I think you can still run the original game, just there's a chance your map won't work with the newer patches
  • jonas jonas:
    what development framework have you been looking at for mobile development?
  • jonas jonas:
    I'm currently creating (as a hobby) a space invaders like game for mobile using Xamarin, after starting a few larger projects that I also may not have finished :rolleyes::p
  • The Helper The Helper:
    Awesome! you should look at the Atari VCS platform it does not have a huge user base but the one it has is super active at around 11k and they have no games in there store
  • The Helper The Helper:
    basically it is linux
  • The Helper The Helper:
    OMG it is BanLord as Blackveiled on the forum
  • The Helper The Helper:
    what is up buddy
  • jonas jonas:
    thanks for the tip, that sounds cool. Never heard about the VCS before but seems like it should be a good match
  • tom_mai78101 tom_mai78101:
    The winter vacation left a toll on me. I missed staying up late and sleeping in late.
  • C Cherry.Grove:
    i haven't looked into it yet
  • C Cherry.Grove:
    If I could use something Python compatible it would save me some learning
  • C Cherry.Grove:
    But Unity might be easiest
  • C Cherry.Grove:
    looking at old posts here makes me happy. Makes me be all like "wow I was pretty smart in 2009"
  • C Cherry.Grove:
    mostly failing at life through adulthood really demotivated me for a while
  • C Cherry.Grove:
    ....what I don't get is why the fuck they would force us to permanently convert to a version of the game everyone fucking hated : \
  • C Cherry.Grove:
    Raid Shadow Legends texture pack smh
  • jonas jonas:
    Most people fail at life throughout their adulthood. Sometimes we get to learn from it. Usually it just feels like crap.
  • The Helper The Helper:
    What does not kill you makes you stronger is what they say

    Members online

    No members online now.

    Affiliates

    Hive Workshop NUON Dome
    Top