diff options
author | Jedzkie <jedzkie13@rocketmail.com> | 2015-11-22 12:31:38 +0800 |
---|---|---|
committer | Jedzkie <jedzkie13@rocketmail.com> | 2015-11-22 12:31:38 +0800 |
commit | f65e0326ac7e6faf17451d4c6d275e4fd3133cc0 (patch) | |
tree | fd1bb3ffce470848147eb123c7d845935d5975d5 | |
parent | baa7e560172eb729824f4a2966c440b4ee1f0eb9 (diff) | |
download | hercules-f65e0326ac7e6faf17451d4c6d275e4fd3133cc0.tar.gz hercules-f65e0326ac7e6faf17451d4c6d275e4fd3133cc0.tar.bz2 hercules-f65e0326ac7e6faf17451d4c6d275e4fd3133cc0.tar.xz hercules-f65e0326ac7e6faf17451d4c6d275e4fd3133cc0.zip |
ItemDB Update:
- Implemented the Geffen Scrolls and Mental Potion official effects. Thanks to Kyeme. (Ref: http://herc.ws/board/topic/1125-please-implement-the-magic-scroll-mental-potion-etc/)
-rw-r--r-- | db/const.txt | 12 | ||||
-rw-r--r-- | db/pre-re/item_db.conf | 51 | ||||
-rw-r--r-- | db/re/item_db.conf | 61 | ||||
-rw-r--r-- | db/sc_config.txt | 18 | ||||
-rw-r--r-- | src/map/skill.c | 14 | ||||
-rw-r--r-- | src/map/status.c | 62 | ||||
-rw-r--r-- | src/map/status.h | 14 |
7 files changed, 153 insertions, 79 deletions
diff --git a/db/const.txt b/db/const.txt index 430407967..332960b9f 100644 --- a/db/const.txt +++ b/db/const.txt @@ -1287,6 +1287,18 @@ SC_LJOSALFAR 588 SC_MERMAID_LONGING 589 SC_ACARAJE 590 +SC_TARGET_ASPD 591 + +// Geffen Scrolls +SC_SKELSCROLL 592 +SC_DISTRUCTIONSCROLL 593 +SC_ROYALSCROLL 594 +SC_IMMUNITYSCROLL 595 +SC_MYSTICSCROLL 596 +SC_BATTLESCROLL 597 +SC_ARMORSCROLL 598 +SC_FREYJASCROLL 599 +SC_SOULSCROLL 600 e_gasp 0 e_what 1 diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf index abb7b5a2e..21c2b16cf 100644 --- a/db/pre-re/item_db.conf +++ b/db/pre-re/item_db.conf @@ -69560,13 +69560,14 @@ item_db: ( Trade: { nodrop: true notrade: true - noselltonpc: true - nocart: true nostorage: true - nogstorage: true + nocart: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } + Script: <" sc_start SC_SKELSCROLL,1800000,5; "> }, { Id: 12746 @@ -69578,17 +69579,13 @@ item_db: ( Trade: { nodrop: true notrade: true - nocart: true nostorage: true - nogstorage: true + nocart: true nomail: true noauction: true + nogstorage: true } - Script: <" - autobonus "{bonus2 bAddRace,RC_Boss,5}",10000,1800000; - autobonus "{bonus2 bAddRace,RC_Angel,5;}",10000,1800000; - autobonus "{bonus2 bAddEle,Ele_Holy,5;}",10000,1800000; - "> + Script: <" sc_start SC_DISTRUCTIONSCROLL,1800000,5; "> }, { Id: 12747 @@ -69597,7 +69594,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" autobonus "{bonus2 bSubRace,RC_Boss,5;}",10000,1800000; "> + Script: <" sc_start SC_ROYALSCROLL,1800000,5; "> }, { Id: 12748 @@ -69606,7 +69603,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" autobonus "{bonus2 bAddEle,Ele_Neutral,-5;}",10000,1800000; "> + Script: <" sc_start SC_IMMUNITYSCROLL,1800000,5; "> }, { Id: 12749 @@ -69615,7 +69612,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" sc_start SC_PLUSMAGICPOWER,180000,5; "> + Script: <" sc_start SC_MYSTICSCROLL,1800000,5; "> }, { Id: 12750 @@ -69624,10 +69621,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - sc_start SC_ATTHASTE_POTION3,1800000,5; - sc_start SC_PLUSATTACKPOWER,1800000,5; - "> + Script: <" sc_start SC_BATTLESCROLL,1800000,5; "> }, { Id: 12751 @@ -69636,10 +69630,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - sc_start SC_PROTECT_DEF,1800000,5; - sc_start SC_FOOD_BASICAVOIDANCE,1800000,10; - "> + Script: <" sc_start2 SC_ARMORSCROLL,1800000,5,10; "> }, { Id: 12752 @@ -69648,10 +69639,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - sc_start SC_PROTECT_MDEF,1800000,5; - sc_start SC_INCFLEE2,1800000,10; - "> + Script: <" sc_start2 SC_FREYJASCROLL,1800000,5,10; "> }, { Id: 12753 @@ -69660,10 +69648,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - sc_start SC_INCMHPRATE,1800000,5; - sc_start SC_INCMSPRATE,1800000,5; - "> + Script: <" sc_start SC_SOULSCROLL,1800000,5; "> }, { Id: 12754 @@ -86399,7 +86384,7 @@ item_db: ( noselltonpc: true nogstorage: true } - Script: <" getitem 14600,20; "> + Script: <" getitem Mental_Potion,20; "> }, { Id: 14350 @@ -86413,7 +86398,7 @@ item_db: ( noselltonpc: true nogstorage: true } - Script: <" getitem 14600,50; "> + Script: <" getitem Mental_Potion,50; "> }, { Id: 14351 @@ -87972,6 +87957,10 @@ item_db: ( noselltonpc: true nogstorage: true } + Script: <" + specialeffect2 EF_SPELLBREAKER; + sc_start SC_TARGET_ASPD,1800000,10; + "> }, { Id: 14601 diff --git a/db/re/item_db.conf b/db/re/item_db.conf index eab943b32..5596edd58 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -86030,20 +86030,21 @@ item_db: ( { Id: 12745 AegisName: "Skull_Scroll" - Name: "Vivid Notation" + Name: "Skull Scroll" Type: 2 Buy: 20 Weight: 10 Trade: { nodrop: true notrade: true - noselltonpc: true - nocart: true nostorage: true - nogstorage: true + nocart: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } + Script: <" sc_start SC_SKELSCROLL,1800000,5; "> }, { Id: 12746 @@ -86052,11 +86053,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - autobonus "{bonus2 bAddRace,RC_Boss,5;}",10000,1800000; - autobonus "{bonus2 bAddRace,RC_Angel,5;}",10000,1800000; - autobonus "{bonus2 bAddEle,Ele_Holy,5;}",10000,1800000; - "> + Script: <" sc_start SC_DISTRUCTIONSCROLL,1800000,5; "> }, { Id: 12747 @@ -86065,7 +86062,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" autobonus "{bonus2 bSubRace,RC_Boss,5;}",10000,1800000; "> + Script: <" sc_start SC_ROYALSCROLL,1800000,5; "> }, { Id: 12748 @@ -86074,7 +86071,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" autobonus "{bonus2 bAddEle,Ele_Neutral,-5;}",10000,1800000; "> + Script: <" sc_start SC_IMMUNITYSCROLL,1800000,5; "> }, { Id: 12749 @@ -86083,7 +86080,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" sc_start SC_PLUSMAGICPOWER,180000,5; "> + Script: <" sc_start SC_MYSTICSCROLL,1800000,5; "> }, { Id: 12750 @@ -86092,10 +86089,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - sc_start SC_ATTHASTE_POTION3,1800000,5; - sc_start SC_PLUSATTACKPOWER,1800000,5; - "> + Script: <" sc_start SC_BATTLESCROLL,1800000,5; "> }, { Id: 12751 @@ -86104,10 +86098,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - sc_start SC_PROTECT_DEF,1800000,5; - sc_start SC_FOOD_BASICAVOIDANCE,1800000,10; - "> + Script: <" sc_start2 SC_ARMORSCROLL,1800000,5,10; "> }, { Id: 12752 @@ -86116,10 +86107,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - sc_start SC_PROTECT_MDEF,1800000,5; - sc_start SC_INCFLEE2,1800000,10; - "> + Script: <" sc_start2 SC_FREYJASCROLL,1800000,5,10; "> }, { Id: 12753 @@ -86128,10 +86116,7 @@ item_db: ( Type: 2 Buy: 20 Weight: 10 - Script: <" - sc_start SC_INCMHPRATE,1800000,5; - sc_start SC_INCMSPRATE,1800000,5; - "> + Script: <" sc_start SC_SOULSCROLL,1800000,5; "> }, { Id: 12754 @@ -109148,13 +109133,13 @@ item_db: ( Trade: { nodrop: true notrade: true - noselltonpc: true nocart: true - nogstorage: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } - Script: <" getitem 14600,20; "> + Script: <" getitem Mental_Potion,20; "> }, { Id: 14350 @@ -109166,13 +109151,13 @@ item_db: ( Trade: { nodrop: true notrade: true - noselltonpc: true nocart: true - nogstorage: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } - Script: <" getitem 14600,50; "> + Script: <" getitem Mental_Potion,50; "> }, { Id: 14351 @@ -111544,12 +111529,16 @@ item_db: ( Trade: { nodrop: true notrade: true - noselltonpc: true nocart: true - nogstorage: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } + Script: <" + specialeffect2 EF_SPELLBREAKER; + sc_start SC_TARGET_ASPD,1800000,10; + "> }, { Id: 14601 diff --git a/db/sc_config.txt b/db/sc_config.txt index 9ae43aaa0..8a55fb45d 100644 --- a/db/sc_config.txt +++ b/db/sc_config.txt @@ -89,7 +89,7 @@ SC_SAFETYWALL, 28 SC_PNEUMA, 28 SC_ASSUMPTIO, 16 SC_BASILICA, 26 -//SC_GROUNDMAGIC, 26 //is divided to SC_VOLCANO, 0xSC_DELUGE, 0xSC_VIOLENTGALE +//SC_GROUNDMAGIC, 26 // is divided to SC_VOLCANO, 0xSC_DELUGE, 0xSC_VIOLENTGALE SC_VOLCANO, 26 SC_DELUGE, 26 SC_VIOLENTGALE, 26 @@ -399,8 +399,20 @@ SC_FULL_THROTTLE, 18 SC_REBOUND, 18 SC_TELEKINESIS_INTENSE, 18 SC_ACARAJE, 64 +SC_TARGET_ASPD, 92 -//Guild Auras should not be saved +// Geffen Scrolls +SC_SKELSCROLL, 90 +SC_DISTRUCTIONSCROLL, 90 +SC_ROYALSCROLL, 90 +SC_IMMUNITYSCROLL, 90 +SC_MYSTICSCROLL, 90 +SC_BATTLESCROLL, 90 +SC_ARMORSCROLL, 90 +SC_FREYJASCROLL, 90 +SC_SOULSCROLL, 90 + +// Guild Auras should not be saved SC_LEADERSHIP,78 SC_GLORYWOUNDS,78 SC_SOULCOLD,78 @@ -443,5 +455,5 @@ SC_DECORATION_OF_MUSIC, 207 SC_LJOSALFAR, 207 SC_MERMAID_LONGING, 207 -//Cant Clear +// Cant Clear SC_ALL_RIDING, 141 diff --git a/src/map/skill.c b/src/map/skill.c index 8984bf0fa..8a782fc9a 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -14316,15 +14316,17 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 req.sp = cap_value(req.sp * sp_skill_rate_bonus / 100, 0, SHRT_MAX); - if( sc ) { - if( sc->data[SC__LAZINESS] ) + if (sc) { + if (sc->data[SC__LAZINESS]) req.sp += req.sp + sc->data[SC__LAZINESS]->val1 * 10; - if( sc->data[SC_UNLIMITED_HUMMING_VOICE] ) + if (sc->data[SC_UNLIMITED_HUMMING_VOICE]) req.sp += req.sp * sc->data[SC_UNLIMITED_HUMMING_VOICE]->val3 / 100; - if( sc->data[SC_RECOGNIZEDSPELL] ) + if (sc->data[SC_RECOGNIZEDSPELL]) req.sp += req.sp / 4; - if( sc->data[SC_TELEKINESIS_INTENSE] && skill->get_ele(skill_id, skill_lv) == ELE_GHOST) + if (sc->data[SC_TELEKINESIS_INTENSE] && skill->get_ele(skill_id, skill_lv) == ELE_GHOST) req.sp -= req.sp * sc->data[SC_TELEKINESIS_INTENSE]->val2 / 100; + if (sc->data[SC_TARGET_ASPD]) + req.sp -= req.sp * sc->data[SC_TARGET_ASPD]->val1 / 100; } req.zeny = skill->dbs->db[idx].zeny[skill_lv-1]; @@ -14739,6 +14741,8 @@ int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16 VARCAST_REDUCTION(50); } } + if (sc->data[SC_MYSTICSCROLL]) + VARCAST_REDUCTION(sc->data[SC_MYSTICSCROLL]->val1); // Fixed cast reduction bonuses if( sc->data[SC__LAZINESS] ) fixcast_r = max(fixcast_r, sc->data[SC__LAZINESS]->val2); diff --git a/src/map/status.c b/src/map/status.c index 7567fc129..2e5eb5392 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -825,6 +825,7 @@ void initChangeTables(void) { 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; + status->dbs->IconChangeTable[SC_TARGET_ASPD] = SI_TARGET_ASPD; // Mercenary Bonus Effects status->dbs->IconChangeTable[SC_MER_FLEE] = SI_MER_FLEE; @@ -976,6 +977,7 @@ void initChangeTables(void) { status->dbs->ChangeFlagTable[SC_WALKSPEED] |= SCB_SPEED; status->dbs->ChangeFlagTable[SC_ITEMSCRIPT] |= SCB_ALL; status->dbs->ChangeFlagTable[SC_TARGET_BLOOD] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_TARGET_ASPD] |= SCB_MAXSP; // Cash Items status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR; @@ -1026,6 +1028,17 @@ void initChangeTables(void) { 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; + + // Geffen Scrolls + status->dbs->ChangeFlagTable[SC_SKELSCROLL] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_DISTRUCTIONSCROLL] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_ROYALSCROLL] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_IMMUNITYSCROLL] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_MYSTICSCROLL] |= SCB_MATK; + status->dbs->ChangeFlagTable[SC_BATTLESCROLL] |= SCB_BATK | SCB_ASPD; + status->dbs->ChangeFlagTable[SC_ARMORSCROLL] |= SCB_DEF | SCB_FLEE; + status->dbs->ChangeFlagTable[SC_FREYJASCROLL] |= SCB_MDEF | SCB_FLEE2; + status->dbs->ChangeFlagTable[SC_SOULSCROLL] |= SCB_MAXHP | SCB_MAXSP; status->dbs->ChangeFlagTable[SC_ALL_RIDING] = SCB_SPEED; status->dbs->ChangeFlagTable[SC_WEDDING] = SCB_SPEED; @@ -2957,6 +2970,32 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) { sd->magic_addele[ELE_WIND] += 25; if( sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 3 ) sd->magic_addele[ELE_EARTH] += 25; + + // Geffen Scrolls + if (sc->data[SC_SKELSCROLL]) { +#ifdef RENEWAL + sd->race_tolerance[RC_DEMIHUMAN] += sc->data[SC_SKELSCROLL]->val1; +#else + sd->subrace[RC_DEMIHUMAN] += sc->data[SC_SKELSCROLL]->val1; +#endif + } + if (sc->data[SC_DISTRUCTIONSCROLL]) { + sd->right_weapon.addrace[RC_ANGEL] += sc->data[SC_DISTRUCTIONSCROLL]->val1; + sd->left_weapon.addrace[RC_ANGEL] += sc->data[SC_DISTRUCTIONSCROLL]->val1; + sd->right_weapon.addele[ELE_HOLY] += sc->data[SC_DISTRUCTIONSCROLL]->val1; + sd->left_weapon.addele[ELE_HOLY] += sc->data[SC_DISTRUCTIONSCROLL]->val1; + sd->right_weapon.addrace[RC_BOSS] += sc->data[SC_DISTRUCTIONSCROLL]->val1; + sd->left_weapon.addrace[RC_BOSS] += sc->data[SC_DISTRUCTIONSCROLL]->val1; + } + if (sc->data[SC_ROYALSCROLL]) { +#ifdef RENEWAL + sd->race_tolerance[RC_BOSS] += sc->data[SC_ROYALSCROLL]->val1; +#else + sd->subrace[RC_BOSS] += sc->data[SC_ROYALSCROLL]->val1; +#endif + } + if (sc->data[SC_IMMUNITYSCROLL]) + sd->subele[ELE_NEUTRAL] += sd->subele[ELE_NEUTRAL] * sc->data[SC_IMMUNITYSCROLL]->val1 / 100; } status_cpy(&sd->battle_status, bstatus); @@ -4715,6 +4754,8 @@ unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc, matk += matk * sc->data[SC_MOONLIT_SERENADE]->val2/100; if (sc->data[SC_MTF_MATK]) matk += matk * 25 / 100; + if (sc->data[SC_MYSTICSCROLL]) + matk += matk * sc->data[SC_MYSTICSCROLL]->val1 / 100; return (unsigned short)cap_value(matk,0,USHRT_MAX); } @@ -4895,9 +4936,10 @@ signed short status_calc_flee(struct block_list *bl, struct status_change *sc, i if(status_get_element(bl) == ELE_WATER) //water type flee /= 2; } - if( sc->data[SC_OVERED_BOOST] ) // should be final and unmodifiable by any means flee = sc->data[SC_OVERED_BOOST]->val2; + if (sc->data[SC_ARMORSCROLL]) + flee += sc->data[SC_ARMORSCROLL]->val2; return (short)cap_value(flee,1,SHRT_MAX); } @@ -4918,6 +4960,8 @@ signed short status_calc_flee2(struct block_list *bl, struct status_change *sc, flee2 += sc->data[SC_WHISTLE]->val3*10; if(sc->data[SC__UNLUCKY]) flee2 -= flee2 * sc->data[SC__UNLUCKY]->val2 / 100; + if (sc->data[SC_FREYJASCROLL]) + flee2 += sc->data[SC_FREYJASCROLL]->val2; return (short)cap_value(flee2,10,SHRT_MAX); } @@ -5017,6 +5061,8 @@ defType status_calc_def(struct block_list *bl, struct status_change *sc, int def } if (sc->data[SC_UNLIMIT]) return 1; + if (sc->data[SC_ARMORSCROLL]) + def += sc->data[SC_ARMORSCROLL]->val1; return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX); } @@ -5145,6 +5191,8 @@ defType status_calc_mdef(struct block_list *bl, struct status_change *sc, int md mdef -= mdef *25 / 100; if (sc->data[SC_UNLIMIT]) return 1; + if (sc->data[SC_FREYJASCROLL]) + mdef += sc->data[SC_FREYJASCROLL]->val1; return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX); } @@ -5493,6 +5541,8 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl bonus += 3 * sc->data[SC_STAR_COMFORT]->val1; if (sc->data[SC_ACARAJE]) bonus += sc->data[SC_ACARAJE]->val2; + if (sc->data[SC_BATTLESCROLL]) + bonus += sc->data[SC_BATTLESCROLL]->val1; } return (bonus + pots); @@ -5656,6 +5706,8 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate -= sc->data[SC_GOLDENE_FERSE]->val3 * 10; if (sc->data[SC_ACARAJE]) aspd_rate += sc->data[SC_ACARAJE]->val2 * 10; + if (sc->data[SC_BATTLESCROLL]) + aspd_rate += sc->data[SC_BATTLESCROLL]->val1 * 10; return (short)cap_value(aspd_rate,0,SHRT_MAX); } @@ -5701,10 +5753,8 @@ unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc, maxhp += 3000; if(sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 2) maxhp += 500; - if(sc->data[SC_MER_HP]) maxhp += maxhp * sc->data[SC_MER_HP]->val2/100; - if(sc->data[SC_EPICLESIS]) maxhp += maxhp * 5 * sc->data[SC_EPICLESIS]->val1 / 100; if(sc->data[SC_VENOMBLEED]) @@ -5741,6 +5791,8 @@ unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc, maxhp += maxhp * sc->data[SC_GOLDENE_FERSE]->val2 / 100; if(sc->data[SC_FRIGG_SONG]) maxhp += maxhp * sc->data[SC_FRIGG_SONG]->val2 / 100; + if (sc->data[SC_SOULSCROLL]) + maxhp += maxhp * sc->data[SC_SOULSCROLL]->val1 / 100; return (unsigned int)cap_value(maxhp,1,UINT_MAX); } @@ -5768,6 +5820,10 @@ unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc, maxsp += 50; if (sc->data[SC_VITATA_500]) maxsp += maxsp * sc->data[SC_VITATA_500]->val2 / 100; + if (sc->data[SC_TARGET_ASPD]) + maxsp += maxsp * sc->data[SC_TARGET_ASPD]->val1 / 100; + if (sc->data[SC_SOULSCROLL]) + maxsp += maxsp * sc->data[SC_SOULSCROLL]->val1 / 100; return cap_value(maxsp,1,UINT_MAX); } diff --git a/src/map/status.h b/src/map/status.h index 7635248d0..a0fcde988 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -747,6 +747,18 @@ typedef enum sc_type { SC_MERMAID_LONGING, SC_ACARAJE, // 590 + SC_TARGET_ASPD, + + // Geffen Scrolls + SC_SKELSCROLL, + SC_DISTRUCTIONSCROLL, + SC_ROYALSCROLL, + SC_IMMUNITYSCROLL, + SC_MYSTICSCROLL, + SC_BATTLESCROLL, + SC_ARMORSCROLL, + SC_FREYJASCROLL, + SC_SOULSCROLL, // 600 SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; @@ -1058,7 +1070,7 @@ enum si_type { SI_CRITICALPERCENT = 295, SI_PLUSAVOIDVALUE = 296, //SI_ATKER_ASPD = 297, - //SI_TARGET_ASPD = 298, + SI_TARGET_ASPD = 298, //SI_ATKER_MOVESPEED = 299, SI_ATKER_BLOOD = 300, |