123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653 |
- // Copyright (c) Athena Dev Teams - Licensed under GNU GPL
- // For more information, see LICENCE in the main folder
- #ifndef _STATUS_H_
- #define _STATUS_H_
- #include "map.h"
- //Use this to refer the max refinery level [Skotlex]
- #define MAX_REFINE 10
- #define MAX_REFINE_BONUS 5
- extern unsigned long StatusChangeFlagTable[];
- // Status changes listing. These code are for use by the server.
- enum {
- //First we enumerate common status ailments which are often used around.
- SC_STONE = 0,
- SC_FREEZE,
- SC_STUN,
- SC_SLEEP,
- SC_POISON,
- SC_CURSE,
- SC_SILENCE,
- SC_CONFUSION,
- SC_BLIND,
- SC_BLEEDING,
- SC_DPOISON, //10
-
- //Next up, we continue on 20, to leave enough room for additional "common" ailments in the future.
- SC_PROVOKE = 20,
- SC_ENDURE,
- SC_TWOHANDQUICKEN,
- SC_CONCENTRATE,
- SC_HIDING,
- SC_CLOAKING,
- SC_ENCPOISON,
- SC_POISONREACT,
- SC_QUAGMIRE,
- SC_ANGELUS,
- SC_BLESSING, //30
- SC_SIGNUMCRUCIS,
- SC_INCREASEAGI,
- SC_DECREASEAGI,
- SC_SLOWPOISON,
- SC_IMPOSITIO ,
- SC_SUFFRAGIUM,
- SC_ASPERSIO,
- SC_BENEDICTIO,
- SC_KYRIE,
- SC_MAGNIFICAT, //40
- SC_GLORIA,
- SC_AETERNA,
- SC_ADRENALINE,
- SC_WEAPONPERFECTION,
- SC_OVERTHRUST,
- SC_MAXIMIZEPOWER,
- SC_TRICKDEAD,
- SC_LOUD,
- SC_ENERGYCOAT,
- SC_BROKENARMOR, //50 - NOTE: These two aren't used anywhere, and they have an icon...
- SC_BROKENWEAPON,
- SC_HALLUCINATION,
- SC_WEIGHT50,
- SC_WEIGHT90,
- SC_ASPDPOTION0,
- SC_ASPDPOTION1,
- SC_ASPDPOTION2,
- SC_ASPDPOTION3,
- SC_SPEEDUP0,
- SC_SPEEDUP1, //60
- SC_ATKPOTION,
- SC_MATKPOTION,
- SC_WEDDING,
- SC_SLOWDOWN,
- SC_ANKLE,
- SC_KEEPING,
- SC_BARRIER,
- SC_STRIPWEAPON,
- SC_STRIPSHIELD,
- SC_STRIPARMOR, //70
- SC_STRIPHELM,
- SC_CP_WEAPON,
- SC_CP_SHIELD,
- SC_CP_ARMOR,
- SC_CP_HELM,
- SC_AUTOGUARD,
- SC_REFLECTSHIELD,
- SC_SPLASHER,
- SC_PROVIDENCE,
- SC_DEFENDER, //80
- SC_MAGICROD,
- SC_SPELLBREAKER,
- SC_AUTOSPELL,
- SC_SIGHTTRASHER,
- SC_AUTOBERSERK,
- SC_SPEARQUICKEN,
- SC_AUTOCOUNTER,
- SC_SIGHT,
- SC_SAFETYWALL,
- SC_RUWACH, //90
- SC_EXTREMITYFIST,
- SC_EXPLOSIONSPIRITS,
- SC_COMBO,
- SC_BLADESTOP_WAIT,
- SC_BLADESTOP,
- SC_FIREWEAPON,
- SC_WATERWEAPON,
- SC_WINDWEAPON,
- SC_EARTHWEAPON,
- SC_VOLCANO, //100,
- SC_DELUGE,
- SC_VIOLENTGALE,
- SC_WATK_ELEMENT,
- SC_ARMOR,
- SC_ARMOR_ELEMENT,
- SC_NOCHAT,
- SC_BABY,
- SC_AURABLADE,
- SC_PARRYING,
- SC_CONCENTRATION, //110
- SC_TENSIONRELAX,
- SC_BERSERK,
- SC_FURY,
- SC_GOSPEL,
- SC_ASSUMPTIO,
- SC_BASILICA,
- SC_GUILDAURA,
- SC_MAGICPOWER,
- SC_EDP,
- SC_TRUESIGHT, //120
- SC_WINDWALK,
- SC_MELTDOWN,
- SC_CARTBOOST,
- SC_CHASEWALK,
- SC_REJECTSWORD,
- SC_MARIONETTE,
- SC_MARIONETTE2,
- SC_CHANGEUNDEAD,
- SC_JOINTBEAT,
- SC_MINDBREAKER, //130
- SC_MEMORIZE,
- SC_FOGWALL,
- SC_SPIDERWEB,
- SC_DEVOTION,
- SC_SACRIFICE,
- SC_STEELBODY,
- SC_ORCISH,
- SC_READYSTORM,
- SC_READYDOWN,
- SC_READYTURN, //140
- SC_READYCOUNTER,
- SC_DODGE,
- SC_RUN,
- SC_SHADOWWEAPON,
- SC_ADRENALINE2,
- SC_GHOSTWEAPON,
- SC_KAIZEL,
- SC_KAAHI,
- SC_KAUPE,
- SC_ONEHAND, //150
- SC_PRESERVE,
- SC_BATTLEORDERS,
- SC_REGENERATION,
- SC_DOUBLECAST,
- SC_GRAVITATION,
- SC_MAXOVERTHRUST,
- SC_LONGING,
- SC_HERMODE,
- SC_SHRINK,
- SC_SIGHTBLASTER, //160
- SC_WINKCHARM,
- SC_CLOSECONFINE,
- SC_CLOSECONFINE2,
- SC_DANCING,
- SC_ELEMENTALCHANGE,
- SC_RICHMANKIM,
- SC_ETERNALCHAOS,
- SC_DRUMBATTLE,
- SC_NIBELUNGEN,
- SC_ROKISWEIL, //170
- SC_INTOABYSS,
- SC_SIEGFRIED,
- SC_WHISTLE,
- SC_ASSNCROS,
- SC_POEMBRAGI,
- SC_APPLEIDUN,
- SC_MODECHANGE,
- SC_HUMMING,
- SC_DONTFORGETME,
- SC_FORTUNE, //180
- SC_SERVICE4U,
- SC_STOP, //Prevents inflicted chars from walking. [Skotlex]
- SC_SPURT,
- SC_SPIRIT,
- SC_COMA, //Not a real SC_, it makes a char's HP/SP hit 1.
- SC_INTRAVISION,
- SC_INCALLSTATUS,
- SC_INCSTR,
- SC_INCAGI,
- SC_INCVIT, //190
- SC_INCINT,
- SC_INCDEX,
- SC_INCLUK,
- SC_INCHIT,
- SC_INCHITRATE,
- SC_INCFLEE,
- SC_INCFLEERATE,
- SC_INCMHPRATE,
- SC_INCMSPRATE,
- SC_INCATKRATE, //200
- SC_INCMATKRATE,
- SC_INCDEFRATE,
- SC_STRFOOD,
- SC_AGIFOOD,
- SC_VITFOOD,
- SC_INTFOOD,
- SC_DEXFOOD,
- SC_LUKFOOD,
- SC_HITFOOD,
- SC_FLEEFOOD, //210
- SC_BATKFOOD,
- SC_WATKFOOD,
- SC_MATKFOOD,
- SC_SCRESIST, //Increases resistance to status changes.
- SC_XMAS, // Xmas Suit [Valaris]
- SC_WARM, //SG skills [Komurka]
- SC_SUN_COMFORT,
- SC_MOON_COMFORT,
- SC_STAR_COMFORT,
- SC_FUSION, //220
- SC_SKILLRATE_UP,
- SC_SKE,
- SC_KAITE,
- SC_SWOO, // [marquis007]
- SC_SKA, // [marquis007]
- SC_TKREST, // [marquis007]
- SC_MIRACLE, //SG 'hidden' skill [Komurka]
- SC_MADNESSCANCEL,
- SC_ADJUSTMENT,
- SC_INCREASING, //230
- SC_GATLINGFEVER,
- SC_TATAMIGAESHI,
- SC_UTSUSEMI,
- SC_BUNSINJYUTSU,
- SC_KAENSIN,
- SC_SUITON,
- SC_NEN,
- SC_KNOWLEDGE,
- SC_SMA,
- SC_FLING, //240
- SC_AVOID,
- SC_CHANGE,
- SC_BLOODLUST,
- SC_FLEET,
- SC_SPEED, //[orn]
- SC_DEFENCE, //[orn]
- SC_INCAGIRATE,
- SC_INCDEXRATE,
- SC_JAILED,
- SC_ENCHANTARMS,
- SC_MAX, //Automatically updated max, used in for's and at startup to check we are within bounds. [Skotlex]
- };
- int SkillStatusChangeTable(int skill);
- extern int StatusSkillChangeTable[SC_MAX];
- //Numerates the Number for the status changes (client-dependent), imported from jA
- enum {
- SI_BLANK = -1,
- SI_PROVOKE = 0,
- SI_ENDURE = 1,
- SI_TWOHANDQUICKEN = 2,
- SI_CONCENTRATE = 3,
- SI_HIDING = 4,
- SI_CLOAKING = 5,
- SI_ENCPOISON = 6,
- SI_POISONREACT = 7,
- SI_QUAGMIRE = 8,
- SI_ANGELUS = 9,
- SI_BLESSING = 10,
- SI_SIGNUMCRUCIS = 11,
- SI_INCREASEAGI = 12,
- SI_DECREASEAGI = 13,
- SI_SLOWPOISON = 14,
- SI_IMPOSITIO = 15,
- SI_SUFFRAGIUM = 16,
- SI_ASPERSIO = 17,
- SI_BENEDICTIO = 18,
- SI_KYRIE = 19,
- SI_MAGNIFICAT = 20,
- SI_GLORIA = 21,
- SI_AETERNA = 22,
- SI_ADRENALINE = 23,
- SI_WEAPONPERFECTION = 24,
- SI_OVERTHRUST = 25,
- SI_MAXIMIZEPOWER = 26,
- SI_RIDING = 27,
- SI_FALCON = 28,
- SI_TRICKDEAD = 29,
- SI_LOUD = 30,
- SI_ENERGYCOAT = 31,
- SI_BROKENARMOR = 32,
- SI_BROKENWEAPON = 33,
- SI_HALLUCINATION = 34,
- SI_WEIGHT50 = 35,
- SI_WEIGHT90 = 36,
- SI_ASPDPOTION = 37,
- //38: Again Aspd Potion
- //39: Again Aspd Potion
- //40: Again Aspd Potion
- SI_SPEEDPOTION1 = 41,
- SI_SPEEDPOTION2 = 42,
- SI_STRIPWEAPON = 50,
- SI_STRIPSHIELD = 51,
- SI_STRIPARMOR = 52,
- SI_STRIPHELM = 53,
- SI_CP_WEAPON = 54,
- SI_CP_SHIELD = 55,
- SI_CP_ARMOR = 56,
- SI_CP_HELM = 57,
- SI_AUTOGUARD = 58,
- SI_REFLECTSHIELD = 59,
- SI_PROVIDENCE = 61,
- SI_DEFENDER = 62,
- SI_AUTOSPELL = 65,
- SI_SPEARQUICKEN = 68,
- SI_EXPLOSIONSPIRITS = 86,
- SI_FURY = 87,
- SI_FIREWEAPON = 90,
- SI_WATERWEAPON = 91,
- SI_WINDWEAPON = 92,
- SI_EARTHWEAPON = 93,
- SI_UNDEAD = 97,
- // 102 = again gloria - from what I saw on screenshots, I wonder if it isn't gospel... [DracoRPG]
- SI_AURABLADE = 103,
- SI_PARRYING = 104,
- SI_CONCENTRATION = 105,
- SI_TENSIONRELAX = 106,
- SI_BERSERK = 107,
- SI_ASSUMPTIO = 110,
- SI_LANDENDOW = 112,
- SI_MAGICPOWER = 113,
- SI_EDP = 114,
- SI_TRUESIGHT = 115,
- SI_WINDWALK = 116,
- SI_MELTDOWN = 117,
- SI_CARTBOOST = 118,
- //119, blank
- SI_REJECTSWORD = 120,
- SI_MARIONETTE = 121,
- SI_MARIONETTE2 = 122,
- SI_MOONLIT = 123,
- SI_BLEEDING = 124,
- SI_JOINTBEAT = 125,
- SI_BABY = 130,
- SI_STEELBODY = 132,
- SI_RUN = 133,
- SI_BUMP = 134,
- SI_READYSTORM = 135,
- SI_READYDOWN = 137,
- SI_READYTURN = 139,
- SI_READYCOUNTER = 141,
- SI_DODGE = 143,
- //SI_RUN = 144, //is not RUN. need info on what this is.
- SI_SPURT = 145,
- SI_SHADOWWEAPON = 146,
- SI_ADRENALINE2 = 147,
- SI_GHOSTWEAPON = 148,
- SI_SPIRIT = 149,
- SI_DEVIL = 152,
- SI_KAITE = 153,
- SI_KAIZEL = 156,
- SI_KAAHI = 157,
- SI_KAUPE = 158,
- SI_SMA = 159,
- SI_NIGHT = 160,
- SI_ONEHAND = 161,
- SI_WARM = 165,
- // 166 | The three show the exact same display: ultra red character (165, 166, 167)
- // 167 |
- SI_SUN_COMFORT = 169,
- SI_MOON_COMFORT = 170,
- SI_STAR_COMFORT = 171,
- SI_PRESERVE = 181,
- SI_INCSTR = 182,
- SI_INTRAVISION = 184,
- SI_DOUBLECAST = 186,
- SI_MAXOVERTHRUST = 188,
- SI_TAROT = 191, // the icon allows no doubt... but what is it really used for ?? [DracoRPG]
- SI_SHRINK = 197,
- SI_SIGHTBLASTER = 198,
- SI_WINKCHARM = 199,
- SI_CLOSECONFINE = 200,
- SI_CLOSECONFINE2 = 201,
- SI_MADNESSCANCEL = 203, //[blackhole89]
- SI_GATLINGFEVER = 204,
- SI_TKREST = 205, // 205 = Gloria again (but TK- Happy State looks like it)
- SI_UTSUSEMI = 206,
- SI_BUNSINJYUTSU = 207,
- SI_NEN = 208,
- SI_ADJUSTMENT = 209,
- SI_ACCURACY = 210,
- SI_FOODSTR = 241,
- SI_FOODAGI = 242,
- SI_FOODVIT = 243,
- SI_FOODDEX = 244,
- SI_FOODINT = 245,
- SI_FOODLUK = 246,
- SI_FOODFLEE = 247,
- SI_FOODHIT = 248,
- SI_FOODCRI = 249,
- };
- // JOINTBEAT stackable ailments
- #define BREAK_ANKLE 0x01 // MoveSpeed reduced by 50%
- #define BREAK_WRIST 0x02 // ASPD reduced by 25%
- #define BREAK_KNEE 0x04 // MoveSpeed reduced by 30%, ASPD reduced by 10%
- #define BREAK_SHOULDER 0x08 // DEF reduced by 50%
- #define BREAK_WAIST 0x10 // DEF reduced by 25%, ATK reduced by 25%
- #define BREAK_NECK 0x20 // current attack does 2x damage, inflicts 'bleeding' for 30 seconds
- #define BREAK_FLAGS ( BREAK_ANKLE | BREAK_WRIST | BREAK_KNEE | BREAK_SHOULDER | BREAK_WAIST | BREAK_NECK )
- extern int current_equip_item_index;
- extern int current_equip_card_id;
- extern int percentrefinery[5][MAX_REFINE+1]; //The last slot always has a 0% success chance [Skotlex]
- //Mode definitions to clear up code reading. [Skotlex]
- #define MD_CANMOVE 0x0001
- #define MD_LOOTER 0x0002
- #define MD_AGGRESSIVE 0x0004
- #define MD_ASSIST 0x0008
- #define MD_CASTSENSOR_IDLE 0x0010
- #define MD_BOSS 0x0020
- #define MD_PLANT 0x0040
- #define MD_CANATTACK 0x0080
- #define MD_DETECTOR 0x0100
- #define MD_CASTSENSOR_CHASE 0x0200
- #define MD_CHANGECHASE 0x0400
- #define MD_ANGRY 0x0800
- #define MD_CHANGETARGET_MELEE 0x1000
- #define MD_CHANGETARGET_CHASE 0x2000
- #define MD_MASK 0xFFFF
- //Status change option definitions (options are what makes status changes visible to chars
- //who were not on your field of sight when it happened)
- //opt1: Non stackable status changes.
- enum {
- OPT1_STONE = 1, //Petrified
- OPT1_FREEZE,
- OPT1_STUN,
- OPT1_SLEEP,
- //What is 5?
- OPT1_STONEWAIT=6 //Petrifying
- };
- //opt2: Stackable status changes.
- #define OPT2_POISON 0x001
- #define OPT2_CURSE 0x002
- #define OPT2_SILENCE 0x004
- #define OPT2_SIGNUMCRUCIS 0x008
- #define OPT2_BLIND 0x010
- //0x020 - nothing
- //0x040 - nothing
- #define OPT2_DPOISON 0x080
- //0x100
- #define OPTION_SIGHT 0x00000001
- #define OPTION_HIDE 0x00000002
- #define OPTION_CLOAK 0x00000004
- #define OPTION_CART1 0x00000008
- #define OPTION_FALCON 0x00000010
- #define OPTION_RIDING 0x00000020
- #define OPTION_INVISIBLE 0x00000040
- #define OPTION_CART2 0x00000080
- #define OPTION_CART3 0x00000100
- #define OPTION_CART4 0x00000200
- #define OPTION_CART5 0x00000400
- #define OPTION_ORCISH 0x00000800
- #define OPTION_WEDDING 0x00001000
- #define OPTION_RUWACH 0x00002000
- #define OPTION_CHASEWALK 0x00004000
- //Note that clientside Flying and Xmas are 0x8000 for clients prior to 2007.
- #define OPTION_FLYING 0x0008000
- #define OPTION_XMAS 0x00010000
- #define OPTION_CART (OPTION_CART1|OPTION_CART2|OPTION_CART3|OPTION_CART4|OPTION_CART5)
- #define OPTION_MASK ~0x40
- //Defines for the manner system [Skotlex]
- #define MANNER_NOCHAT 0x01
- #define MANNER_NOSKILL 0x02
- #define MANNER_NOCOMMAND 0x04
- #define MANNER_NOITEM 0x08
- #define MANNER_NOROOM 0x10
- //Define flags for the status_calc_bl function. [Skotlex]
- #define SCB_NONE 0x00000000
- #define SCB_BASE 0x00000001
- #define SCB_MAXHP 0x00000002
- #define SCB_MAXSP 0x00000004
- #define SCB_STR 0x00000008
- #define SCB_AGI 0x00000010
- #define SCB_VIT 0x00000020
- #define SCB_INT 0x00000040
- #define SCB_DEX 0x00000080
- #define SCB_LUK 0x00000100
- #define SCB_BATK 0x00000200
- #define SCB_WATK 0x00000400
- #define SCB_MATK 0x00000800
- #define SCB_HIT 0x00001000
- #define SCB_FLEE 0x00002000
- #define SCB_DEF 0x00004000
- #define SCB_DEF2 0x00008000
- #define SCB_MDEF 0x00010000
- #define SCB_MDEF2 0x00020000
- #define SCB_SPEED 0x00040000
- #define SCB_ASPD 0x00080000
- #define SCB_DSPD 0x00100000
- #define SCB_CRI 0x00200000
- #define SCB_FLEE2 0x00400000
- #define SCB_ATK_ELE 0x00800000
- #define SCB_DEF_ELE 0x01000000
- #define SCB_MODE 0x02000000
- #define SCB_SIZE 0x04000000
- #define SCB_RACE 0x08000000
- #define SCB_RANGE 0x10000000
- #define SCB_REGEN 0x20000000
- //SCB_DYE means the sc should force cloth-dye change to 0 to avoid client crashes.
- #define SCB_DYE 0x40000000
- #define SCB_PC 0x80000000
- #define SCB_ALL 0x3FFFFFFF
- //Define to determine who gets HP/SP consumed on doing skills/etc. [Skotlex]
- #define BL_CONSUME (BL_PC|BL_HOM)
- //Define to determine who has regen
- #define BL_REGEN (BL_PC|BL_HOM)
- int status_damage(struct block_list *src,struct block_list *target,int hp,int sp, int walkdelay, int flag);
- //Define for standard HP damage attacks.
- #define status_fix_damage(src, target, hp, walkdelay) status_damage(src, target, hp, 0, walkdelay, 0)
- //Define for standard HP/SP damage triggers.
- #define status_zap(bl, hp, sp) status_damage(NULL, bl, hp, sp, 0, 1)
- //Define for standard HP/SP skill-related cost triggers (mobs require no HP/SP to use skills)
- #define status_charge(bl, hp, sp) (!((bl)->type&BL_CONSUME) || status_damage(NULL, bl, hp, sp, 0, 3))
- int status_percent_change(struct block_list *src,struct block_list *target,signed char hp_rate, signed char sp_rate, int flag);
- //Easier handling of status_percent_change
- #define status_percent_heal(bl, hp_rate, sp_rate) status_percent_change(NULL, bl, -(hp_rate), -(sp_rate), 1)
- #define status_percent_damage(src, target, hp_rate, sp_rate) status_percent_change(src, target, hp_rate, sp_rate, 0)
- //Instant kill with no drops/exp/etc
- //
- #define status_kill(bl) status_percent_damage(NULL, bl, 100, 0)
- //Used to set the hp/sp of an object to an absolute value (can't kill)
- int status_set_hp(struct block_list *bl, unsigned int hp, int flag);
- int status_set_sp(struct block_list *bl, unsigned int sp, int flag);
- int status_heal(struct block_list *bl,int hp,int sp, int flag);
- int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per_sp);
- //Define for copying a status_data structure from b to a, without overwriting current Hp and Sp, nor messing the lhw pointer.
- #define status_cpy(a, b) { memcpy(&((a)->max_hp), &((b)->max_hp), sizeof(struct status_data)-(sizeof((a)->hp)+sizeof((a)->sp)+sizeof((a)->lhw))); \
- if ((a)->lhw && (b)->lhw) { memcpy((a)->lhw, (b)->lhw, sizeof(struct weapon_atk)); }}
- struct regen_data *status_get_regen_data(struct block_list *bl);
- struct status_data *status_get_status_data(struct block_list *bl);
- struct status_data *status_get_base_status(struct block_list *bl);
- const char * status_get_name(struct block_list *bl);
- int status_get_class(struct block_list *bl);
- int status_get_lv(struct block_list *bl);
- #define status_get_range(bl) status_get_status_data(bl)->rhw.range
- #define status_get_hp(bl) status_get_status_data(bl)->hp
- #define status_get_max_hp(bl) status_get_status_data(bl)->max_hp
- #define status_get_sp(bl) status_get_status_data(bl)->sp
- #define status_get_max_sp(bl) status_get_status_data(bl)->max_sp
- #define status_get_str(bl) status_get_status_data(bl)->str
- #define status_get_agi(bl) status_get_status_data(bl)->agi
- #define status_get_vit(bl) status_get_status_data(bl)->vit
- #define status_get_int(bl) status_get_status_data(bl)->int_
- #define status_get_dex(bl) status_get_status_data(bl)->dex
- #define status_get_luk(bl) status_get_status_data(bl)->luk
- #define status_get_hit(bl) status_get_status_data(bl)->hit
- #define status_get_flee(bl) status_get_status_data(bl)->flee
- unsigned char status_get_def(struct block_list *bl);
- #define status_get_mdef(bl) status_get_status_data(bl)->mdef
- #define status_get_flee2(bl) status_get_status_data(bl)->flee2
- #define status_get_def2(bl) status_get_status_data(bl)->def2
- #define status_get_mdef2(bl) status_get_status_data(bl)->mdef2
- #define status_get_critical(bl) status_get_status_data(bl)->cri
- #define status_get_batk(bl) status_get_status_data(bl)->batk
- #define status_get_watk(bl) status_get_status_data(bl)->rhw.atk
- #define status_get_watk2(bl) status_get_status_data(bl)->rhw.atk2
- #define status_get_matk_max(bl) status_get_status_data(bl)->matk_max
- #define status_get_matk_min(bl) status_get_status_data(bl)->matk_min
- unsigned short status_get_lwatk(struct block_list *bl);
- unsigned short status_get_lwatk2(struct block_list *bl);
- unsigned short status_get_speed(struct block_list *bl);
- #define status_get_adelay(bl) status_get_status_data(bl)->adelay
- #define status_get_amotion(bl) status_get_status_data(bl)->amotion
- #define status_get_dmotion(bl) status_get_status_data(bl)->dmotion
- #define status_get_element(bl) status_get_status_data(bl)->def_ele
- #define status_get_element_level(bl) status_get_status_data(bl)->ele_lv
- unsigned char status_calc_attack_element(struct block_list *bl, struct status_change *sc, int element);
- #define status_get_attack_sc_element(bl, sc) status_calc_attack_element(bl, sc, 0)
- #define status_get_attack_element(bl) status_get_status_data(bl)->rhw.ele
- unsigned char status_get_attack_lelement(struct block_list *bl);
- #define status_get_race(bl) status_get_status_data(bl)->race
- #define status_get_size(bl) status_get_status_data(bl)->size
- #define status_get_mode(bl) status_get_status_data(bl)->mode
- int status_get_party_id(struct block_list *bl);
- int status_get_guild_id(struct block_list *bl);
- int status_get_mexp(struct block_list *bl);
- int status_get_race2(struct block_list *bl);
- struct view_data *status_get_viewdata(struct block_list *bl);
- void status_set_viewdata(struct block_list *bl, int class_);
- void status_change_init(struct block_list *bl);
- struct status_change *status_get_sc(struct block_list *bl);
- int status_isdead(struct block_list *bl);
- int status_isimmune(struct block_list *bl);
- int status_get_sc_def(struct block_list *bl, int type, int rate, int tick, int flag);
- //Short version, receives rate in 1->100 range, and does not uses a flag setting.
- #define sc_start(bl, type, rate, val1, tick) status_change_start(bl,type,100*(rate),val1,0,0,0,tick,0)
- #define sc_start2(bl, type, rate, val1, val2, tick) status_change_start(bl,type,100*(rate),val1,val2,0,0,tick,0)
- #define sc_start4(bl, type, rate, val1, val2, val3, val4, tick) status_change_start(bl,type,100*(rate),val1,val2,val3,val4,tick,0)
- int status_change_start(struct block_list *bl,int type,int rate,int val1,int val2,int val3,int val4,int tick,int flag);
- int status_change_end( struct block_list* bl , int type,int tid );
- int kaahi_heal_timer(int tid, unsigned int tick, int id, int data);
- int status_change_timer(int tid, unsigned int tick, int id, int data);
- int status_change_timer_sub(struct block_list *bl, va_list ap );
- int status_change_clear(struct block_list *bl,int type);
- int status_change_clear_buffs(struct block_list *bl, int type);
- void status_calc_bl(struct block_list *bl, unsigned long flag);
- int status_calc_pet(struct pet_data* pd, int first); // [Skotlex]
- int status_calc_pc(struct map_session_data* sd,int first);
- int status_calc_mob(struct mob_data* md, int first); //[Skotlex]
- int status_calc_homunculus(struct homun_data *hd, int first);
- void status_calc_misc(struct block_list *bl, struct status_data *status, int level);
- void status_calc_regen(struct block_list *bl, struct status_data *status, struct regen_data *regen);
- void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, struct status_change *sc);
- void status_freecast_switch(struct map_session_data *sd);
- int status_getrefinebonus(int lv,int type);
- int status_check_skilluse(struct block_list *src, struct block_list *target, int skill_num, int flag); // [Skotlex]
- int status_check_visibility(struct block_list *src, struct block_list *target); //[Skotlex]
- int status_readdb(void);
- int do_init_status(void);
- #endif /* _STATUS_H_ */
|