• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

CR - Utils

JASS:
library Utils requires Main

enum (CLASS) { PALADIN, GLADIATOR, ASSASSIN, HEALER, MAGE }
enum (ATTACK_STATUS) { NORMAL_HIT, CRITICAL_HIT, EVADED, PARRIED, BLOCKED, RESISTED, CRIT_BLOCKED, CRIT_PARRIED }
enum (ELEMENTS) { ASD, DARKNESS, HOLY, WIND, EARTH, AQUA, FIRE, NATURE, BLOOD }
enum (STATES) { ABC, STUNING, POISONING, ROOTING, SLEEPING, PARALYZING, FEARING }
enum (STATES_RESIST) { NANAM, STUN, BLEED, POISON, ROOT, SLEEP, PARALYZE, MISCL }
enum (WEAPONS) { FIST, BOW, BLUNT, GREATBLUNT, SWORD, GREATSWORD, AXE, GREATAXE, DAGGER, STAFF, POLE, ANY }
enum (PARTS) { ASMDAM, CHEST, SHOULDERS, HANDS, HEAD, LEGS }
enum (ARMORS) { LIGHT_TYPE, HEAVY_TYPE, ROBE_TYPE }
enum (SILENCES) { ASANA, PHYSICAL_SILENCE, MAGICAL_SILENCE, BOTH_SILENCE }
enum (DAMAGE_TYPES) { ADAM, PHYSICAL, MAGICAL, UNIQUE }
enum (ITEMS_RANK) { NORANK_ITEM, LOWRANK_ITEM, COMMON_ITEM, MAGIC_ITEM, RARE_ITEM, SET_ITEM, UNIQUE_ITEM }
enum (WEAPON_SOUNDS) { SWORD_EQUIP, SWORD_FIRE, SWORD_SOULDRINKER, DAGGER_EQUIP, DAGGER_ASHES, DAGGER_LIGHTNING, DAGGER_POISONED, DAGGER_POLAR, STAFF_EQUIP, STAFF_FIRE, STAFF_MANADRINKER, BOW_EQUIP, BOW_EXPLOSIVE, BOW_MASS, BOW_POISONED, BOW_POLAR }
    
    define {
        min100_Size = 1
        min90_Size = 2
        min80_Size = 3
        min70_Size = 4
        min60_Size = 5
        min50_Size = 6
        min40_Size = 7
        min30_Size = 8
        min20_Size = 9
        min10_Size = 10
        pls10_Size = 11
        pls20_Size = 12
        pls30_Size = 13
        pls40_Size = 14
        pls50_Size = 15
        pls60_Size = 16
        pls70_Size = 17
        pls80_Size = 18
        pls90_Size = 19
        pls100_Size = 20
        
        //    values
        //  straight    
        PHYSICAL_DEFENCE_SITUATIONAL_TYPE_1 = 5
        PHYSICAL_DEFENCE_SITUATIONAL_TYPE_2 = 6
        PHYSICAL_ATTACK_TYPE_2 = 7
        PHYSICAL_DEFENCE_TYPE_2 = 8
        PHYSICAL_CRITICAL_CHANCE_TYPE_2 = 13
        PHYSICAL_CRITICAL_MULT_TYPE_2 = 14
        PHYSICAL_CRITICAL_DAMAGE_RESIST = 15
        MAGICAL_ATTACK_TYPE_2 = 16
        MAGICAL_SUPPRESSION_TYPE_2 = 17
        MAGICAL_RESIST_TYPE_2 = 18
        MAGICAL_CRITICAL_CHANCE_TYPE_2 = 19
        MAGICAL_CRITICAL_MULT_TYPE_2 = 20
        MAGICAL_CRITICAL_DAMAGE_RESIST = 21
        MAGICAL_ACCURACY_TYPE_2 = 22
        ACCURACY_TYPE_2 = 23
        EVADE_TYPE_2 = 24
        PARRY_TYPE_2 = 25
        BLOCK_TYPE_2 = 26
        HP_TYPE_2 = 27
        MP_TYPE_2 = 28
        SPEED_TYPE_2 = 29
        HEAL_RATE_TYPE_2 = 49
        VAMPIRIC_DAMAGE_TYPE_2 = 50
        //  percents
        PHYSICAL_ATTACK_TYPE_1 = 31
        PHYSICAL_DEFENCE_TYPE_1 = 32
        MAGICAL_ATTACK_TYPE_1 = 37
        MAGICAL_SUPPRESSION_TYPE_1 = 38
        MAGICAL_RESIST_TYPE_1 = 39
        MAGICAL_ACCURACY_TYPE_1 = 40
        ACCURACY_TYPE_1 = 41
        EVADE_TYPE_1 = 42
        PARRY_TYPE_1 = 43
        BLOCK_TYPE_1 = 44
        HP_TYPE_1 = 45
        MP_TYPE_1 = 46
        SPEED_TYPE_1 = 47
        ATTACK_SPEED_TYPE_1 = 48
        //  resists
        STUN_RESIST = 51
        BLEED_RESIST = 52
        POISON_RESIST = 53
        ROOT_RESIST = 54
        SLEEP_RESIST = 55
        PARALYZE_RESIST = 56
        MISC_RESIST = 57
        
        FIRE_RESIST = 58
        AQUA_RESIST = 59
        WIND_RESIST = 60
        EARTH_RESIST = 61
        HOLY_RESIST = 62
        DARKNESS_RESIST = 63
        NATURE_RESIST = 64
        BLOOD_RESIST = 65
        
        FIRE_BONUS = 66
        AQUA_BONUS = 67
        WIND_BONUS = 68
        EARTH_BONUS = 69
        HOLY_BONUS = 70
        DARKNESS_BONUS = 71
        NATURE_BONUS = 72
        BLOOD_BONUS = 73
        // base
        STR_BONUS = 74
        STD_BONUS = 75
        RCT_BONUS = 76
        DEX_BONUS = 77
        INT_BONUS = 78
        WIL_BONUS = 79
        // reflect amounts
        PHYSICAL_REFLECT_AMOUNT = 80
        PHYSICAL_REFLECT_CHANCE = 81
        PHYSICAL_BUFFS_REFLECT_CHANCE = 82
        MAGICAL_REFLECT_AMOUNT = 83
        MAGICAL_REFLECT_CHANCE = 84
        MAGICAL_BUFFS_REFLECT_CHANCE = 85
        
        // weapon resists
        BOW_RESIST = 86
        BLUNT_RESIST = 90
        GREATBLUNT_RESIST = 91
        SWORD_RESIST = 92
        GREATSWORD_RESIST = 93
        AXE_RESIST = 94
        GREATAXE_RESIST = 95
        DAGGER_RESIST = 96
        STAFF_RESIST = 97
        POLE_RESIST = 98
        
        ADD_HP = 102
        ADD_MP = 103
        
        FRONT_DAMAGE_BONUS = 104
        SIDE_DAMAGE_BONUS = 105
        BACK_DAMAGE_BONUS = 106
        
        SILENT = 107
        STEALTHINESS = 108
        
        BLINDNESS = 109
        
        FIRE_DAMAGE = 110
        AQUA_DAMAGE = 111
        WIND_DAMAGE = 112
        EARTH_DAMAGE = 113
        HOLY_DAMAGE = 114
        DARKNESS_DAMAGE = 115
        NATURE_DAMAGE = 116
        BLOOD_DAMAGE = 117
        //============================
        POSITIVE = true
        NEGATIVE = false
        
        SHIELD = ANY+1
        BACK_CONDITION = 1
    }
    
    
    real GetBonus_STR(int v){ return 0.9 + (v * 0.02) }
    
    real GetBonus_STD(int v){ return 0.9 + (v * 0.03) }
    
    real GetBonus_RCT(int v){ return 0.9 + (v * 0.01) }
    
    real GetBonus_DEX(int v){ return 1.00 + (v * 0.01) }
    
    real GetBonus_INT(int v){ return 0.8 + (v * 0.04) }
    
    real GetBonus_WIL(int v){ return 0.9 + (v * 0.02) }
    
    // защита в процент
    real D2P(real x) {
            if x <= FIRST_DEF_LIMIT {
                return x / VALUE_BY_PERCENT_1
            }
            elseif (x > FIRST_DEF_LIMIT and x <= SECOND_DEF_LIMIT) {
                return (FIRST_DEF_LIMIT / VALUE_BY_PERCENT_1) + ((x - FIRST_DEF_LIMIT) / VALUE_BY_PERCENT_2)
            }
            elseif (x > SECOND_DEF_LIMIT) {
                return (FIRST_DEF_LIMIT / VALUE_BY_PERCENT_1) + ((SECOND_DEF_LIMIT - FIRST_DEF_LIMIT) / VALUE_BY_PERCENT_2) + ((x - SECOND_DEF_LIMIT) / VALUE_BY_PERCENT_3)
            }
        return 0.
    }
    
    // маг атака в процент
    real MA2P(real x) {
            if x <= MA_FIRST_LIMIT {
                return x / MA_VALUE_BY_PERCENT_1
            }
            elseif (x > MA_FIRST_LIMIT and x <= MA_SECOND_LIMIT) {
                return (MA_FIRST_LIMIT / MA_VALUE_BY_PERCENT_1) + ((x - MA_FIRST_LIMIT) / MA_VALUE_BY_PERCENT_2)
            }
            elseif (x > MA_SECOND_LIMIT) {
                return (MA_FIRST_LIMIT / MA_VALUE_BY_PERCENT_1) + ((MA_SECOND_LIMIT - MA_FIRST_LIMIT) / MA_VALUE_BY_PERCENT_2) + ((x - MA_SECOND_LIMIT) / MA_VALUE_BY_PERCENT_3)
            }
        return 0.
    }
    
    
//enum (ALTERNATE_STATES) { STUN, FEAR, ROOT, PARALYZE, TURNED}

endlibrary
Top