diff options
author | Paradox924X <Paradox924X@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2010-10-11 06:17:49 +0000 |
---|---|---|
committer | Paradox924X <Paradox924X@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2010-10-11 06:17:49 +0000 |
commit | a0d5cefbeed3b697692ce31d008533a8a69da4b1 (patch) | |
tree | 18233cc106236397404bfd01c0258abff8cad8dc /src/map/status.c | |
parent | 6ce604ea27be125d26422dfe3690608e3f1fa8d7 (diff) | |
download | hercules-a0d5cefbeed3b697692ce31d008533a8a69da4b1.tar.gz hercules-a0d5cefbeed3b697692ce31d008533a8a69da4b1.tar.bz2 hercules-a0d5cefbeed3b697692ce31d008533a8a69da4b1.tar.xz hercules-a0d5cefbeed3b697692ce31d008533a8a69da4b1.zip |
Implemented official cash food behavior, including use delay, not being dispelled (including on death), distinct status effects and icons from the ordinary food types.
Updated items accordingly. (bugreport:2560)
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14426 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/status.c')
-rw-r--r-- | src/map/status.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/map/status.c b/src/map/status.c index 4dc84652a..91e742323 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -486,6 +486,12 @@ void initChangeTables(void) StatusIconChangeTable[SC_MANU_MATK] = SI_MANU_MATK; StatusIconChangeTable[SC_SPL_MATK] = SI_SPL_MATK; //Cash Items + StatusIconChangeTable[SC_FOOD_STR_CASH] = SI_FOOD_STR_CASH; + StatusIconChangeTable[SC_FOOD_AGI_CASH] = SI_FOOD_AGI_CASH; + StatusIconChangeTable[SC_FOOD_VIT_CASH] = SI_FOOD_VIT_CASH; + StatusIconChangeTable[SC_FOOD_DEX_CASH] = SI_FOOD_DEX_CASH; + StatusIconChangeTable[SC_FOOD_INT_CASH] = SI_FOOD_INT_CASH; + StatusIconChangeTable[SC_FOOD_LUK_CASH] = SI_FOOD_LUK_CASH; StatusIconChangeTable[SC_EXPBOOST] = SI_EXPBOOST; StatusIconChangeTable[SC_ITEMBOOST] = SI_ITEMBOOST; StatusIconChangeTable[SC_JEXPBOOST] = SI_CASH_PLUSONLYJOBEXP; @@ -550,6 +556,13 @@ void initChangeTables(void) StatusChangeFlagTable[SC_SPCOST_RATE] |= SCB_ALL; StatusChangeFlagTable[SC_WALKSPEED] |= SCB_SPEED; StatusChangeFlagTable[SC_ITEMSCRIPT] |= SCB_ALL; + // Cash Items + StatusChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR; + StatusChangeFlagTable[SC_FOOD_AGI_CASH] = SCB_AGI; + StatusChangeFlagTable[SC_FOOD_VIT_CASH] = SCB_VIT; + StatusChangeFlagTable[SC_FOOD_DEX_CASH] = SCB_DEX; + StatusChangeFlagTable[SC_FOOD_INT_CASH] = SCB_INT; + StatusChangeFlagTable[SC_FOOD_LUK_CASH] = SCB_LUK; // Mercenary Bonus Effects StatusChangeFlagTable[SC_MERC_FLEEUP] |= SCB_FLEE; StatusChangeFlagTable[SC_MERC_ATKUP] |= SCB_WATK; @@ -3192,6 +3205,8 @@ static unsigned short status_calc_str(struct block_list *bl, struct status_chang str += sc->data[SC_INCSTR]->val1; if(sc->data[SC_STRFOOD]) str += sc->data[SC_STRFOOD]->val1; + if(sc->data[SC_FOOD_STR_CASH]) + str += sc->data[SC_FOOD_STR_CASH]->val1; if(sc->data[SC_BATTLEORDERS]) str += 5; if(sc->data[SC_GUILDAURA] && sc->data[SC_GUILDAURA]->val3>>16) @@ -3233,6 +3248,8 @@ static unsigned short status_calc_agi(struct block_list *bl, struct status_chang agi += sc->data[SC_INCAGI]->val1; if(sc->data[SC_AGIFOOD]) agi += sc->data[SC_AGIFOOD]->val1; + if(sc->data[SC_FOOD_AGI_CASH]) + agi += sc->data[SC_FOOD_AGI_CASH]->val1; if(sc->data[SC_GUILDAURA] && (sc->data[SC_GUILDAURA]->val4)>>16) agi += (sc->data[SC_GUILDAURA]->val4)>>16; if(sc->data[SC_TRUESIGHT]) @@ -3268,6 +3285,8 @@ static unsigned short status_calc_vit(struct block_list *bl, struct status_chang vit += sc->data[SC_INCVIT]->val1; if(sc->data[SC_VITFOOD]) vit += sc->data[SC_VITFOOD]->val1; + if(sc->data[SC_FOOD_VIT_CASH]) + vit += sc->data[SC_FOOD_VIT_CASH]->val1; if(sc->data[SC_CHANGE]) vit += sc->data[SC_CHANGE]->val2; if(sc->data[SC_GUILDAURA] && sc->data[SC_GUILDAURA]->val3&0xFFFF) @@ -3297,6 +3316,8 @@ static unsigned short status_calc_int(struct block_list *bl, struct status_chang int_ += sc->data[SC_INCINT]->val1; if(sc->data[SC_INTFOOD]) int_ += sc->data[SC_INTFOOD]->val1; + if(sc->data[SC_FOOD_INT_CASH]) + int_ += sc->data[SC_FOOD_INT_CASH]->val1; if(sc->data[SC_CHANGE]) int_ += sc->data[SC_CHANGE]->val3; if(sc->data[SC_BATTLEORDERS]) @@ -3337,6 +3358,8 @@ static unsigned short status_calc_dex(struct block_list *bl, struct status_chang dex += sc->data[SC_INCDEX]->val1; if(sc->data[SC_DEXFOOD]) dex += sc->data[SC_DEXFOOD]->val1; + if(sc->data[SC_FOOD_DEX_CASH]) + dex += sc->data[SC_FOOD_DEX_CASH]->val1; if(sc->data[SC_BATTLEORDERS]) dex += 5; if(sc->data[SC_GUILDAURA] && sc->data[SC_GUILDAURA]->val4&0xFFFF) @@ -3376,6 +3399,8 @@ static unsigned short status_calc_luk(struct block_list *bl, struct status_chang luk += sc->data[SC_INCLUK]->val1; if(sc->data[SC_LUKFOOD]) luk += sc->data[SC_LUKFOOD]->val1; + if(sc->data[SC_FOOD_LUK_CASH]) + luk += sc->data[SC_FOOD_LUK_CASH]->val1; if(sc->data[SC_TRUESIGHT]) luk += 5; if(sc->data[SC_GLORIA]) @@ -6274,6 +6299,12 @@ int status_change_clear(struct block_list* bl, int type) case SC_HELLPOWER: case SC_JEXPBOOST: case SC_AUTOTRADE: + case SC_FOOD_STR_CASH: + case SC_FOOD_AGI_CASH: + case SC_FOOD_VIT_CASH: + case SC_FOOD_DEX_CASH: + case SC_FOOD_INT_CASH: + case SC_FOOD_LUK_CASH: continue; } @@ -7302,6 +7333,12 @@ int status_change_clear_buffs (struct block_list* bl, int type) case SC_BATKFOOD: case SC_WATKFOOD: case SC_MATKFOOD: + case SC_FOOD_STR_CASH: + case SC_FOOD_AGI_CASH: + case SC_FOOD_VIT_CASH: + case SC_FOOD_DEX_CASH: + case SC_FOOD_INT_CASH: + case SC_FOOD_LUK_CASH: continue; //Debuffs that can be removed. |