System Heal

JASS:
//
//      @@   @@   @@@@@@    @@@    @    
//      @@   @@   @@       @   @   @
//      @@@@@@@   @@@@@   @ @@@ @  @
//      @@   @@   @@      @     @  @
//      @@   @@   @@@@@@  @     @  @@@@@@@@

Shorten this L and i will use this system in my map.
 
JASS:
//          /\    \                  /\    \                  /\    \                  /\    \ 
//         /::\____\                /::\    \                /::\    \                /::\____\
//        /:::/    /               /::::\    \              /::::\    \              /:::/    /
//       /:::/    /               /::::::\    \            /::::::\    \            /:::/    / 
//      /:::/    /               /:::/\:::\    \          /:::/\:::\    \          /:::/    /  
//     /:::/____/               /:::/__\:::\    \        /:::/__\:::\    \        /:::/    /   
//    /::::\    \              /::::\   \:::\    \      /::::\   \:::\    \      /:::/    /    
//   /::::::\    \   _____    /::::::\   \:::\    \    /::::::\   \:::\    \    /:::/    /     
//  /:::/\:::\    \ /\    \  /:::/\:::\   \:::\    \  /:::/\:::\   \:::\    \  /:::/    /      
// /:::/  \:::\    /::\____\/:::/__\:::\   \:::\____\/:::/  \:::\   \:::\____\/:::/____/       
// \::/    \:::\  /:::/    /\:::\   \:::\   \::/    /\::/    \:::\  /:::/    /\:::\    \       
//  \/____/ \:::\/:::/    /  \:::\   \:::\   \/____/  \/____/ \:::\/:::/    /  \:::\    \      
//           \::::::/    /    \:::\   \:::\    \               \::::::/    /    \:::\    \     
//            \::::/    /      \:::\   \:::\____\               \::::/    /      \:::\    \    
//            /:::/    /        \:::\   \::/    /               /:::/    /        \:::\    \   
//           /:::/    /          \:::\   \/____/               /:::/    /          \:::\    \  
//          /:::/    /            \:::\    \                  /:::/    /            \:::\    \ 
//         /:::/    /              \:::\____\                /:::/    /              \:::\____\
//         \::/    /                \::/    /                \::/    /                \::/    /
//          \/____/                  \/____/                  \/____/                  \/____/



Or use that. :p
 
Nice system, can come useful.

PS. Shorten the fuckin "L". :D
 
Heal system is indeed useful, Its like damage detection. After all, you want to be able to control and detect and possibly prevent different kind of health changes.

Both damage and heal.
 
I'm using it in my map.
brows.gif

It is very useful for me to control the healing and I can use it to do some heal blocking spells.
I can manipulate the amount of hp bonus regeneration in item by using IDEA and Units' Inventory Data.
JASS:
///////////////////////////////////////////////
//  
//  set HPRegenByType['hpea'].amount = 10.
//  
//  set UnitBasedRegen[unit].amount = 20.
//
///////////////////////////////////////////////
library CustomUnitRegenSystem requires T32, AIDS, Heal, Hash
    
    globals
        HealType NORMAL_UNIT_HP_REGEN
    endglobals
    
    struct HPRegenByType extends array
        real hp
        
        static method operator [] takes integer unitType returns thistype
            return Hash(unitType)
        endmethod
        
        method operator amount= takes real r returns nothing
            set .hp = r * T32_PERIOD
        endmethod
        
        method operator amount takes nothing returns real
            return hp * T32_FPS
        endmethod
        
    endstruct
    
    struct UnitBasedRegen extends array
        private real hp
        
        method operator amount= takes real r returns nothing
            set .hp = r * T32_PERIOD
        endmethod
        
        method operator amount takes nothing returns real
            return .hp * T32_FPS
        endmethod
        
        private method periodic takes nothing returns nothing
            call HealUnit(.unit,.unit,HPRegenByType[GetUnitTypeId(.unit)].hp + .hp,NORMAL_UNIT_HP_REGEN)
                                    //Prevent bug when a unit is upgraded/transformed.
        endmethod
        
        implement T32x
        
        private method AIDS_onCreate takes nothing returns nothing
            call .startPeriodic()
        endmethod
        
        private method AIDS_onDestroy takes nothing returns nothing
            set .amount = 0.
            call .stopPeriodic()
        endmethod
    
        //! runtextmacro AIDS()
        
        private static method AIDS_onInit takes nothing returns nothing
            set NORMAL_UNIT_HP_REGEN = HealType.new()
        endmethod
    endstruct
    
endlibrary


JASS:
///////////////////////////////////////////////
//  
//  set ItemRegenAbiltiy['I000'].amount = 10.
//  
//  set ItemBasedRegen[item].amount = 20.
//
///////////////////////////////////////////////
library CIRAS requires IDEA, Heal, UID, T32, Hash
//Custom Item Regeneration Ability System
    
    globals
        HealType NORMAL_ITEM_HP_REGEN_ABILITY
    endglobals
    
    struct ItemRegenAbility
        real hp
        static method operator [] takes integer itemType returns thistype
            return Hash(itemType)
        endmethod
        
        method operator amount= takes real r returns nothing
            set .hp = r * T32_PERIOD
        endmethod
        
        method operator amount takes nothing returns real
            return hp * T32_FPS
        endmethod
    endstruct
    
    struct ItemBasedRegen
        private real hp
        
        method operator amount= takes real r returns nothing
            set .hp = r * T32_PERIOD
        endmethod
        
        method operator amount takes nothing returns real
            return .hp * T32_FPS
        endmethod
        
        private method periodic takes nothing returns nothing
            call HealUnit(GetItemOwner(.item),GetItemOwner(.item),ItemRegenAbiltiy[GetItemTypeId(.item)].hp + .amount,NORMAL_ITEM_HP_REGEN_ABILITY)
        endmethod
        
        implement T32x
        
        private method IDEA_onCreate takes nothing returns nothing
            call .startPeriodic()
        endmethod
        
        private method IDEA_onDestroy takes nothing returns nothing
            set .amount = 0.
            call .stopPeriodic()
        endmethod
    
        implement IDEA
        
        private static method onInit takes nothing returns nothing
            set NORMAL_ITEM_HP_REGEN_ABILITY = HealType.new()
        endmethod
    endstruct
    
endlibrary
 
any chances that this will (internally) support heal/magic resistance, ie without the need to calculate heal amout yourself?
 
any chances that this will (internally) support heal/magic resistance, ie without the need to calculate heal amout yourself?
Every map has different blocking algorithm for magic resistance, it is better for user to make themselves.
Example :
JASS:
    struct Armor
        real percentageToBlock
        
        private static method [] takes integer whichId returns thistype
            return //Some hashing algorithm.
        endmethod

        private static method cond takes nothing returns boolean
            call Heal_Block(Heal_GetAmount()*thistype[GetUnitTypeId(Heal_GetTarget())].percentageToBlock)
            return false
        endmethod

        private static method onInit takes nothing returns nothing
            local trigger trig = CreateTrigger()
            call Heal_RegisterEvent(trig)
            call TriggerAddCondition(trig,Condition(function cond))
        endmethod
    endstruct
 
oh. ty :D
1 more question (dont go yet!! xD)
how would you go amount retrieving the total heal amount? (lol, this again..)
e.g

Unit 1 Heals Unit 3 for 100
Unit 2 Heals Unit 3 for 200 (at the the same time)

would Heal_GetAmount() be 100/200 depending on the trigger, or 300?
would adding some condition in [ljass]set StackLevel = StackLevel + 1[/ljass] solve this?
ty
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • tom_mai78101 tom_mai78101:
    Currently in the middle of getting the probate process going. We're doing the informal probate process.
    +3
  • Varine Varine:
    A probate is usually done with a will, yes? If so I am sorry for your loss
    +1
  • The Helper The Helper:
    Yeah Tom, me too sorry for your loss buddy my mom told me she finds out her olds friend died from Google searching them. She had not talked to one of her old friends in a year and found out she died from Google. Also another one in the same session. RIP all of them my sincere condolences Tom
    +1
  • Varine Varine:
    We have some elderly guests that regularly come hang out at the bar at the end of the night, and every once in a while we don't see someone for a few weeks and then someone shows up with their obituary.
  • Varine Varine:
    We usually let them do their memorials there in the morning if they want to and I'll make them some snacks and drinks. There was one guy named Tom that came in like every night and would sit by himself and get a bunch of soup and a glass of wine. idk why but he LOVED our fucking soup, like he would order a fucking quart of it at a time and would always get so sad when we stop doing it for the summer.
    +1
  • Varine Varine:
    But he also loved our calamari, which is another thing I hate but it sells super well so I can't change it. There was one day he came in and was asking me how to make it, because he tried to at home once in the off season when we stop running it and he really wanted it lol
  • Varine Varine:
    I think he's one of the only people I've made recipes for for free because he really wanted a broccoli cheddar, and it was like dude I don't have a recipe, it's just whatever I have, but here, this is how you do it
  • Varine Varine:
    I don't think he ever figured out how to do the calamari in a pan though, like idk how to do that either. He was afraid of the at home deep fryers though and it's like yeah, that's fair, I am too
  • Varine Varine:
    He was just such a sweet old man, we had two servers pregnant and they held a baby shower together, he was soooooo fucking excited to get to see a baby. Unfortunately he died a month or so before they were born
  • The Helper The Helper:
    So I decided to Google some people that I had not seen or heard from in a while and sure enough one of my old best friends, we had a falling out years ago but whatever, find out he died of Pancreatic Cancer in January. I have also lost a few of my closer acquaintances from growing up the last year. Getting old - people die - I kinda thought it was going to be this way a few years ago....
    +2
  • The Helper The Helper:
    Forum running super slow again
  • Ghan Ghan:
    Not really clear from the stats as to what is causing the slowness.
  • Ghan Ghan:
    We get a lot of guest traffic so it may just be the load is getting too high and not from any particular source.
  • Ghan Ghan:
    Looks like the server is maxed out on CPU.
  • Ghan Ghan:
    Oh it looks like a lot of the traffic is Silkroad Forums. That domain isn't protected by Cloudflare.
  • Ghan Ghan:
    But the old Silkroad site is still on its own server. I just had a test site set up on this server for it.
  • Ghan Ghan:
    I just disabled that test site. Let's see if that helps the load.
  • Ghan Ghan:
    Looks much better already.
  • The Helper The Helper:
    I had actually forgot about the Silkroad site. I had asked
  • The Helper The Helper:
    SD Ryoko about it and he said the couple of people left on there really like it, that was a few years ago, maybe I should check back
  • jonas jonas:
    I guess when you're getting old, and the last day of soup season draws near, you start wondering
  • jonas jonas:
    will I make it to the start of the next season? or was this the last time I'll ever have my favorite dish?
  • The Helper The Helper:
    I am doing my first Vibe Coding project. In installed the environment and tools according to instructions but it is all chat doing this for me at my direction. It is fun really and holy shit I might finish in 2 hours what it would have taken a day to in my Access and this would be an electron app complete new
  • Ghan Ghan:
    Good stuff.
  • Ghan Ghan:
    Just make sure it is secure. :)

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials
      Top