Snippet Armor

Dirac

22710180
JASS:
library Armor /* v1.0.0

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

Useful tool for unit armor reduction and armor amount calculation

**********************************************************************/
globals
//*********************************************************************
//  The gameplay constant that sets how much damage the armor reduces.
    private constant real ARMOR_REDUCTION           =   0.06
//*********************************************************************
//  The gameplay constant for ethereal damage modification
    private constant real ETHEREAL_ARMOR_REDUCTION  =   1.66
endglobals
/**********************************************************************
*
*   function GetUnitDamageReduction takes unit whichUnit, attacktype attackType, damagetype damageType returns real
*       -   If returns 1.00 means it takes 100% damage.
*   function GetUnitArmor takes unit whichUnit returns real
*       -   Calculates the unit's armor, as accurate as it gets.
*
**********************************************************************/

    private function Ln takes real a returns real
        local real sum = 0.0
        loop
            exitwhen a < bj_E
            set a = a/bj_E
            set sum = sum + 1.
        endloop
        return sum + (a-1.)*(1. + 9./(2.+a) + 9./(1.+a*2.) + 1/a)/8.
    endfunction
    
    function GetUnitDamageReduction takes unit whichUnit, attacktype attackType, damagetype damageType returns real
        local real result
        local real prevLife=GetWidgetLife(whichUnit)
        
        //*********************************************************************
        //  Deals 100 damage that ignores armor type to the unit, and from the
        //  unit's remaining life we know how much damage was reduced.
        //  To prevent the unit from dying from damage dealt this way the life
        //  bonus ability is added
        call UnitAddAbility(whichUnit,ABILITY_LIFE_BONUS)
        set Damage.enabled=false
        set result=GetWidgetLife(whichUnit)
        call UnitDamageTarget(whichUnit,whichUnit,100,true,false,attackType,damageType,null)
        set Damage.enabled=true
        set result=result-GetWidgetLife(whichUnit)
        call UnitRemoveAbility(whichUnit,ABILITY_LIFE_BONUS)
        call SetWidgetLife(whichUnit,prevLife)
        return result/100
    endfunction
        
    function GetUnitArmor takes unit whichUnit returns real
        local real reduction=GetUnitDamageReduction(whichUnit,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_NORMAL)
        
        //*********************************************************************
        //  (armor)*0.06/(1+armor*0.06) = reduction
        if 0==reduction then
            set reduction=GetUnitDamageReduction(whichUnit,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL)
            return ((1-reduction)/(ARMOR_REDUCTION*(reduction)))/ETHEREAL_ARMOR_REDUCTION
        endif
        if reduction<=1 then
            return (1-reduction)/(ARMOR_REDUCTION*(reduction))
        endif
        
        //*********************************************************************
        //  Ln of 0.94, w3's magic number for negative armor.
        return -(Ln(2-reduction)/-0.061875)
    endfunction
endlibrary
 

Dirac

22710180
Please graveyard this as it is no longer required, it's now implemented inside Damage by default.
 

GFreak45

I didnt slap you, i high 5'd your face.
if you want it GY'd report it yourself and it wont go negatively for you but it will bring it to the attention of the mods
 

tooltiperror

Super Moderator
Staff member
if you want it GY'd report it yourself and it wont go negatively for you but it will bring it to the attention of the mods
What GFreak said. This will be added to submission rules (eventually).
 

tooltiperror

Super Moderator
Staff member
You should have posted the link :p

Regardless of if either was faster, you should not have been doing it anyways. As Anitarf points out, it is probably CPU (processor) specific.
 

Bribe

vJass errors are legion
Or another speedfreak myth like that nonsense Increment/Decrement Captain Griffin tried a few months ago.
 

Mabaet.Baet

Member
The system deals damage to the unit. Which triggers the which is used by many spells or other systems. Example, if a hero has a damage reflecting aura(like Spectre's DotA Dispersion), and detects armor, it will deal damage to surrounding units and players would think it is bug(it is). More dangerous if this unit's armor is being detected every period.

I need these system, but it conflicts with spells that I use with damage detect. Please fix D:
 
I know you're going to think I'm crazy for this, but:

JASS:
return -(Ln(2-reduction)/-0.061875)

->
JASS:
return Ln(2-reduction)/0.061875
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • The Helper The Helper:
    they did not winterize any of the plants and they froze
  • The Helper The Helper:
    it is not that power consumption went up it was available capacity went down with power plants freezing
  • Varine Varine:
    What a fucking disaster. Are all of the Texas people okay? I see TH is, are we the only two?
  • Varine Varine:
    How have the other states held up? I just got power back so I have no idea what's going on, we didn't get warning
  • Varine Varine:
    Why the fuck didn't they fix this ten years ago when it happened?
  • Blackveiled Blackveiled:
    I'm in it with you and TH as well. My power has been in and out, and I have a ruptured pipe that I need to fix, shouldn't be too bad to fix myself.
  • Varine Varine:
    I hope you're staying warm! Apparently the supply is coming up so hopefully we can get back to normal power soon, mine has been on for six hours now.
  • M Mulciberxp:
    My power has been off most of the last 2 days. We had a generator installed 3 years ago though, so we're staying warm. Water is another issue...
  • The Helper The Helper:
    Where I live has a pool so we are using that to get water to flush the toilets. We have enough bottled water to drink and brush teeth and stuff but it has been a few days and no shower though....
  • Varine Varine:
    I had some water in gallon jugs, and got our water back on yesterday. We don't seem to have any leaks, but I haven't crawled down there to look yet.
  • The Helper The Helper:
    still no water I cannot remember when I last showered now I know how they felt in the old west lol
  • Varine Varine:
    My poor plants are happy, they aren
  • Varine Varine:
    aren't used to going this long without water or lights or normal heat. I think a couple of them froze, but they look like they'll make it
  • Varine Varine:
    Well one of them is pretty rough but I think it was sick to begin with, that one always had some problems.
  • jonas jonas:
  • jonas jonas:
    ???
  • Ghan Ghan:
    That is such a Texas thing to say lol
  • midnight8 midnight8:
    a positive could come out of this. So many people trapped at home could put a dent in the covid numbers in Texas
  • Varine Varine:
    That dude, Tom Boyd, is really upset about the backlash from his "it's your fault you're freezing" thing because he claims he resigned before saying it, so it wasn't like he said it in his official capacity or anything.
  • jonas jonas:
    Almost as if he was saying "screw you guys, I'm going home"
  • Varine Varine:
    I'm fairly new here still but that seems to be the analogous message by several of our politicians.
  • vypur85 vypur85:
    Nobody?
  • jonas jonas:
    Hi vypur85, long time no see
  • tom_mai78101 tom_mai78101:
    Hi vypur85, long time no see.
  • The Helper The Helper:
    We are all somebody

    Members online

    No members online now.

    Affiliates

    Hive Workshop NUON Dome
    Top