From 597190eaf76cf14831423ba37be9194e0d6f53b1 Mon Sep 17 00:00:00 2001 From: Jedzkie Date: Wed, 18 Nov 2015 19:41:32 +0800 Subject: ItemDB Update: - Fixes Issue #688. - Update the item 'Acaraje' to its official effect. (Ref: http://herc.ws/board/tracker/issue-7773-acaraje-12375/) - Fix 'Vitata500' not giving additional % in sp. (Thanks to Haru) (Ref: http://www.divine-pride.net/database/item/12436) - Fix Ljosalfar and Mermaid Bubbles disappear its effect when died / dispell and etc. --- db/const.txt | 2 ++ db/pre-re/item_db.conf | 4 ++-- db/re/item_combo_db.txt | 6 ++---- db/re/item_db.conf | 8 ++++---- db/sc_config.txt | 5 ++++- src/map/status.c | 18 ++++++++++++++---- src/map/status.h | 2 ++ 7 files changed, 30 insertions(+), 15 deletions(-) diff --git a/db/const.txt b/db/const.txt index 8cd614ff9..430407967 100644 --- a/db/const.txt +++ b/db/const.txt @@ -1286,6 +1286,8 @@ SC_MTF_HITFLEE 587 SC_LJOSALFAR 588 SC_MERMAID_LONGING 589 +SC_ACARAJE 590 + e_gasp 0 e_what 1 e_ho 2 diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf index b66b1198c..c777aa28f 100644 --- a/db/pre-re/item_db.conf +++ b/db/pre-re/item_db.conf @@ -66691,7 +66691,7 @@ item_db: ( } Script: <" specialeffect2 EF_STEAL; - sc_start SC_INCHITRATE,120000,5; + sc_start2 SC_ACARAJE,120000,5,10; "> }, { @@ -67489,7 +67489,7 @@ item_db: ( Weight: 10 BuyingStore: true Script: <" - sc_start SC_VITATA_500,500000,0; + sc_start2 SC_VITATA_500,500000,20,5; itemheal 0,200; "> }, diff --git a/db/re/item_combo_db.txt b/db/re/item_combo_db.txt index 2efef8691..ab17bba21 100644 --- a/db/re/item_combo_db.txt +++ b/db/re/item_combo_db.txt @@ -71,10 +71,8 @@ 1741:2748,{ bonus bAtk,25; bonus3 bAddEff,Eff_Curse,200,ATF_WEAPON|ATF_LONG|ATF_TARGET; } 1746:1773,{ bonus bLongAtkRate,50; } 1764:18541,{ bonus bCritAtkRate,5; } -1775:18113,{ bonus bLongAtkRate,70; } -1776:18113,{ bonus bLongAtkRate,40; } -1775:18114,{ bonus bLongAtkRate,50; } -1776:18114,{ bonus bLongAtkRate,20; } +1775:18114,{ bonus bLongAtkRate,70; } +1776:18114,{ bonus bLongAtkRate,40; } 1935:2988,{ bonus2 bSkillAtk,CG_ARROWVULCAN,200; bonus2 bSkillUseSP,CG_ARROWVULCAN,20; } 1990:2989,{ bonus2 bSkillAtk,CG_ARROWVULCAN,200; } 2001:2677,{ bonus bMatkRate,10; bonus bDex,2; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; } diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 2b0f70489..b86305fff 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -80782,7 +80782,7 @@ item_db: ( Weight: 80 Script: <" specialeffect2 EF_STEAL; - sc_start SC_INCHITRATE,120000,5; + sc_start2 SC_ACARAJE,120000,5,10; "> }, { @@ -81614,7 +81614,7 @@ item_db: ( Weight: 50 BuyingStore: true Script: <" - sc_start SC_VITATA_500,500000,0; + sc_start2 SC_VITATA_500,500000,20,5; heal 0,200; "> }, @@ -84384,7 +84384,7 @@ item_db: ( Buy: 2 Weight: 100 EquipLv: 130 - Script: <" getitem 1776,200; "> + Script: <" getitem Siege_Arrow_S,200; "> }, { Id: 12678 @@ -84394,7 +84394,7 @@ item_db: ( Buy: 2 Weight: 100 EquipLv: 95 - Script: <" getitem 1775,200; "> + Script: <" getitem Siege_Arrow_A,200; "> }, { Id: 12679 diff --git a/db/sc_config.txt b/db/sc_config.txt index 650409f6c..9ae43aaa0 100644 --- a/db/sc_config.txt +++ b/db/sc_config.txt @@ -397,7 +397,8 @@ SC_MTF_MLEATKED,12 SC_MTF_CRIDAMAGE, 12 SC_FULL_THROTTLE, 18 SC_REBOUND, 18 -SC_TELEKINESIS_INTENSE,18 +SC_TELEKINESIS_INTENSE, 18 +SC_ACARAJE, 64 //Guild Auras should not be saved SC_LEADERSHIP,78 @@ -439,6 +440,8 @@ SC_MOONSTAR, 207 SC_SUPER_STAR, 207 SC_STRANGELIGHTS, 207 SC_DECORATION_OF_MUSIC, 207 +SC_LJOSALFAR, 207 +SC_MERMAID_LONGING, 207 //Cant Clear SC_ALL_RIDING, 141 diff --git a/src/map/status.c b/src/map/status.c index 1a07f74dc..4cd73d3ac 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -823,6 +823,7 @@ void initChangeTables(void) { status->dbs->IconChangeTable[SC_L_LIFEPOTION] = SI_L_LIFEPOTION; status->dbs->IconChangeTable[SC_ATKER_BLOOD] = SI_ATKER_BLOOD; status->dbs->IconChangeTable[SC_TARGET_BLOOD] = SI_TARGET_BLOOD; + status->dbs->IconChangeTable[SC_ACARAJE] = SI_ACARAJE; // Mercenary Bonus Effects status->dbs->IconChangeTable[SC_MER_FLEE] = SI_MER_FLEE; status->dbs->IconChangeTable[SC_MER_ATK] = SI_MER_ATK; @@ -1008,12 +1009,13 @@ void initChangeTables(void) { status->dbs->ChangeFlagTable[SC_MUSTLE_M] |= SCB_MAXHP; status->dbs->ChangeFlagTable[SC_LIFE_FORCE_F] |= SCB_MAXSP; status->dbs->ChangeFlagTable[SC_EXTRACT_WHITE_POTION_Z] |= SCB_REGEN; - status->dbs->ChangeFlagTable[SC_VITATA_500] |= SCB_REGEN; + status->dbs->ChangeFlagTable[SC_VITATA_500] |= SCB_REGEN | SCB_MAXSP; status->dbs->ChangeFlagTable[SC_EXTRACT_SALAMINE_JUICE] |= SCB_ASPD; status->dbs->ChangeFlagTable[SC_REBOUND] |= SCB_SPEED|SCB_REGEN; status->dbs->ChangeFlagTable[SC_DEFSET] |= SCB_DEF|SCB_DEF2; status->dbs->ChangeFlagTable[SC_MDEFSET] |= SCB_MDEF|SCB_MDEF2; status->dbs->ChangeFlagTable[SC_MYSTERIOUS_POWDER] |= SCB_MAXHP; + status->dbs->ChangeFlagTable[SC_ACARAJE] |= SCB_HIT | SCB_ASPD; status->dbs->ChangeFlagTable[SC_ALL_RIDING] = SCB_SPEED; status->dbs->ChangeFlagTable[SC_WEDDING] = SCB_SPEED; @@ -3328,8 +3330,8 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str regen->flag &=~RGN_SP; if(sc->data[SC_EXTRACT_WHITE_POTION_Z]) regen->rate.hp += regen->rate.hp * sc->data[SC_EXTRACT_WHITE_POTION_Z]->val1/100; - if(sc->data[SC_VITATA_500]) - regen->rate.sp += regen->rate.sp * sc->data[SC_VITATA_500]->val1/100; + if (sc->data[SC_VITATA_500]) + regen->rate.sp += regen->rate.sp * sc->data[SC_VITATA_500]->val1 / 100; } /// Recalculates parts of an object's battle status according to the specified flags. /// @param flag bitfield of values from enum scb_flag @@ -4792,7 +4794,9 @@ signed short status_calc_hit(struct block_list *bl, struct status_change *sc, in hit /= 2; if(sc->data[SC_ILLUSIONDOPING]) hit -= hit * (5 + sc->data[SC_ILLUSIONDOPING]->val1) / 100; //custom - + if (sc->data[SC_ACARAJE]) + hit += sc->data[SC_ACARAJE]->val1; + return (short)cap_value(hit,1,SHRT_MAX); } @@ -5477,6 +5481,8 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl bonus += sc->data[SC_GS_GATLINGFEVER]->val1; if (sc->data[SC_STAR_COMFORT]) bonus += 3 * sc->data[SC_STAR_COMFORT]->val1; + if (sc->data[SC_ACARAJE]) + bonus += sc->data[SC_ACARAJE]->val2; } return (bonus + pots); @@ -5638,6 +5644,8 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate += sc->data[SC_PAIN_KILLER]->val2 * 10; if( sc->data[SC_GOLDENE_FERSE]) aspd_rate -= sc->data[SC_GOLDENE_FERSE]->val3 * 10; + if (sc->data[SC_ACARAJE]) + aspd_rate += sc->data[SC_ACARAJE]->val2 * 10; return (short)cap_value(aspd_rate,0,SHRT_MAX); } @@ -5748,6 +5756,8 @@ unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc, maxsp += maxsp * sc->data[SC_LIFE_FORCE_F]->val1/100; if(sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 3) maxsp += 50; + if (sc->data[SC_VITATA_500]) + maxsp += maxsp * sc->data[SC_VITATA_500]->val2 / 100; return cap_value(maxsp,1,UINT_MAX); } diff --git a/src/map/status.h b/src/map/status.h index 800e3de9f..7635248d0 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -745,6 +745,8 @@ typedef enum sc_type { SC_LJOSALFAR, SC_MERMAID_LONGING, + + SC_ACARAJE, // 590 SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; -- cgit v1.2.3-70-g09d2