summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2015-12-17 06:19:27 +0100
committerHaru <haru@dotalux.com>2015-12-17 06:19:27 +0100
commit0743e53904411c632fb8bf4d92f34a60319355c2 (patch)
tree28bfcb2bd00bdbda9376c72930be4299b8d25561
parent928937106625058745ca78508df98696905d528a (diff)
parent7e083f9ae7688b2ee1d98246af0ba60c914d0f88 (diff)
downloadhercules-0743e53904411c632fb8bf4d92f34a60319355c2.tar.gz
hercules-0743e53904411c632fb8bf4d92f34a60319355c2.tar.bz2
hercules-0743e53904411c632fb8bf4d92f34a60319355c2.tar.xz
hercules-0743e53904411c632fb8bf4d92f34a60319355c2.zip
Merge branch 'Jedzkie-Pull_12' into hercules
Closes #958
-rw-r--r--db/const.txt7
-rw-r--r--db/pre-re/item_db.conf140
-rw-r--r--db/re/item_db.conf148
-rw-r--r--db/sc_config.txt6
-rw-r--r--src/map/battle.c11
-rw-r--r--src/map/skill.c20
-rw-r--r--src/map/status.c84
-rw-r--r--src/map/status.h10
8 files changed, 275 insertions, 151 deletions
diff --git a/db/const.txt b/db/const.txt
index e09200500..100ee1e7a 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -987,7 +987,6 @@ SC_MER_SP 282
SC_MER_HIT 283
SC_MER_QUICKEN 284
SC_REBIRTH 285
-SC_ITEMSCRIPT 290
SC_S_LIFEPOTION 291
SC_L_LIFEPOTION 292
SC_CASH_PLUSONLYJOBEXP 293
@@ -1319,6 +1318,12 @@ SC_CUP_OF_BOZA 611
SC_OVERLAPEXPUP 612
SC_MORA_BUFF 613
+// MVP Scrolls
+SC_MVPCARD_TAOGUNKA 614
+SC_MVPCARD_MISTRESS 615
+SC_MVPCARD_ORCHERO 616
+SC_MVPCARD_ORCLORD 617
+
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 a4f3a96da..e9d13f16b 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -67190,12 +67190,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_ENERGYCOAT;
+ sc_start4 SC_ARMOR_PROPERTY, 10000, 1, Ele_Neutral, 1, 0;
+ ">
},
{
Id: 12407
@@ -77414,7 +77418,7 @@ item_db: (
noselltonpc: true
nogstorage: true
}
- Script: <" getitem 14539,5; ">
+ Script: <" getitem Shadow_Armor_S, 5; ">
},
{
Id: 13741
@@ -77428,7 +77432,7 @@ item_db: (
noselltonpc: true
nogstorage: true
}
- Script: <" getitem 14539,10; ">
+ Script: <" getitem Shadow_Armor_S, 10; ">
},
{
Id: 13742
@@ -77442,7 +77446,7 @@ item_db: (
noselltonpc: true
nogstorage: true
}
- Script: <" getitem 14539,30; ">
+ Script: <" getitem Shadow_Armor_S, 30; ">
},
{
Id: 13743
@@ -77456,7 +77460,7 @@ item_db: (
noselltonpc: true
nogstorage: true
}
- Script: <" getitem 14540,5; ">
+ Script: <" getitem Holy_Armor_S, 5; ">
},
{
Id: 13744
@@ -77470,7 +77474,7 @@ item_db: (
noselltonpc: true
nogstorage: true
}
- Script: <" getitem 14540,10; ">
+ Script: <" getitem Holy_Armor_S, 10; ">
},
{
Id: 13745
@@ -77484,7 +77488,7 @@ item_db: (
noselltonpc: true
nogstorage: true
}
- Script: <" getitem 14540,30; ">
+ Script: <" getitem Holy_Armor_S, 30; ">
},
{
Id: 13746
@@ -86294,13 +86298,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14597,10; ">
+ Script: <" getitem PhreeoniS, 10; ">
},
{
Id: 14315
@@ -86311,13 +86315,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14598,10; ">
+ Script: <" getitem GhostringS, 10; ">
},
{
Id: 14316
@@ -86458,6 +86462,74 @@ item_db: (
Script: <" getitem Tyr's_Blessing,50; ">
},
{
+ Id: 14359
+ AegisName: "TaogunkaS_Box"
+ Name: "Tao Gunka Scroll Box"
+ Type: 18
+ Buy: 20
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nomail: true
+ noauction: true
+ nogstorage: true
+ }
+ Script: <" getitem TaogunkaS, 10; ">
+},
+{
+ Id: 14360
+ AegisName: "MistressS_Box"
+ Name: "Mistress Scroll Box"
+ Type: 18
+ Buy: 20
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nomail: true
+ noauction: true
+ nogstorage: true
+ }
+ Script: <" getitem MistressS, 10; ">
+},
+{
+ Id: 14361
+ AegisName: "Orc_HeroS_Box"
+ Name: "Orc Hero Scroll Box"
+ Type: 18
+ Buy: 20
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nomail: true
+ noauction: true
+ nogstorage: true
+ }
+ Script: <" getitem Orc_HeroS, 10; ">
+},
+{
+ Id: 14362
+ AegisName: "Orc_LoadS_Box"
+ Name: "Orc Lord Scroll Box"
+ Type: 18
+ Buy: 20
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nomail: true
+ noauction: true
+ nogstorage: true
+ }
+ Script: <" getitem Ord_LoadS, 10; ">
+},
+{
Id: 14363
AegisName: "Heart_Scroll"
Name: "Heart Scroll"
@@ -87934,7 +88006,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" sc_start SC_ITEMSCRIPT,180000,4121; ">
+ Script: <" sc_start SC_FOOD_BASICHIT, 180000, 100; ">
},
{
Id: 14598
@@ -87952,7 +88024,10 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" sc_start SC_ITEMSCRIPT,60000,4047; ">
+ Script: <"
+ specialeffect2 EF_LIGHTSPHERE;
+ sc_start4 SC_ARMOR_PROPERTY, 60000, 1, Ele_Neutral, 1, 0;
+ ">
},
{
Id: 14599
@@ -88020,13 +88095,16 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ITEMSCRIPT,180000,4302; ">
+ Script: <"
+ specialeffect2 EF_LIGHTSPHERE;
+ sc_start4 SC_MVPCARD_TAOGUNKA, 180000, 100, 50, 50, 0;
+ ">
},
{
Id: 14603
@@ -88038,13 +88116,16 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ITEMSCRIPT,180000,4132; ">
+ Script: <"
+ specialeffect2 EF_SPELLBREAKER;
+ sc_start SC_MVPCARD_MISTRESS, 180000, 25;
+ ">
},
{
Id: 14604
@@ -88056,13 +88137,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ITEMSCRIPT,60000,4143; ">
+ Script: <" sc_start SC_MVPCARD_ORCHERO, 180000, 100; ">
},
{
Id: 14605
@@ -88074,13 +88155,16 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ITEMSCRIPT,180000,4135; ">
+ Script: <"
+ specialeffect2 EF_LIGHTSPHERE;
+ sc_start SC_MVPCARD_ORCLORD, 180000, 30;
+ ">
},
{
Id: 14606
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 30f235c90..b6eeba2cf 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -82079,12 +82079,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_ENERGYCOAT;
+ sc_start4 SC_ARMOR_PROPERTY, 10000, 1, Ele_Neutral, 1, 0;
+ ">
},
{
Id: 12407
@@ -98706,13 +98710,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14539,5; ">
+ Script: <" getitem Shadow_Armor_S, 5; ">
},
{
Id: 13741
@@ -98724,13 +98728,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14539,10; ">
+ Script: <" getitem Shadow_Armor_S, 10; ">
},
{
Id: 13742
@@ -98742,13 +98746,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14539,30; ">
+ Script: <" getitem Shadow_Armor_S, 30; ">
},
{
Id: 13743
@@ -98760,13 +98764,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14540,5; ">
+ Script: <" getitem Holy_Armor_S, 5; ">
},
{
Id: 13744
@@ -98778,13 +98782,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14540,10; ">
+ Script: <" getitem Holy_Armor_S, 10; ">
},
{
Id: 13745
@@ -98796,13 +98800,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14540,30; ">
+ Script: <" getitem Holy_Armor_S, 30; ">
},
{
Id: 13746
@@ -109179,7 +109183,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" getitem 14597,10; ">
+ Script: <" getitem PhreeoniS, 10; ">
},
{
Id: 14315
@@ -109196,7 +109200,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" getitem 14598,10; ">
+ Script: <" getitem GhostringS, 10; ">
},
{
Id: 14316
@@ -109361,6 +109365,40 @@ item_db: (
Script: <" getitem Tyr's_Blessing,50; ">
},
{
+ Id: 14359
+ AegisName: "TaogunkaS_Box"
+ Name: "Tao Gunka Scroll Box"
+ Type: 18
+ Buy: 20
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nomail: true
+ noauction: true
+ nogstorage: true
+ }
+ Script: <" getitem TaogunkaS, 10; ">
+},
+{
+ Id: 14360
+ AegisName: "MistressS_Box"
+ Name: "Mistress Scroll Box"
+ Type: 18
+ Buy: 20
+ Trade: {
+ nodrop: true
+ notrade: true
+ nocart: true
+ noselltonpc: true
+ nomail: true
+ noauction: true
+ nogstorage: true
+ }
+ Script: <" getitem MistressS, 10; ">
+},
+{
Id: 14361
AegisName: "Orc_HeroS_Box"
Name: "Orc Hero Scroll Box"
@@ -109369,13 +109407,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14604,10; ">
+ Script: <" getitem Orc_HeroS, 10; ">
},
{
Id: 14362
@@ -109386,13 +109424,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14605,10; ">
+ Script: <" getitem Ord_LoadS, 10; ">
},
{
Id: 14363
@@ -110499,15 +110537,15 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
Script: <"
specialeffect2 EF_CLOAKING;
- sc_start4 SC_ARMOR_PROPERTY,1800000,1,Ele_Dark,1,0;
+ sc_start4 SC_ARMOR_PROPERTY, 1800000, 1, Ele_Dark, 1, 0;
">
},
{
@@ -110520,15 +110558,15 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
Script: <"
specialeffect2 EF_BENEDICTIO;
- sc_start4 SC_ARMOR_PROPERTY,1800000,1,Ele_Holy,1,0;
+ sc_start4 SC_ARMOR_PROPERTY, 1800000, 1, Ele_Holy, 1, 0;
">
},
{
@@ -111638,13 +111676,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ITEMSCRIPT,180000,4121; ">
+ Script: <" sc_start SC_FOOD_BASICHIT, 180000, 100; ">
},
{
Id: 14598
@@ -111656,13 +111694,16 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ITEMSCRIPT,60000,4047; ">
+ Script: <"
+ specialeffect2 EF_LIGHTSPHERE;
+ sc_start4 SC_ARMOR_PROPERTY, 60000, 1, Ele_Neutral, 1, 0;
+ ">
},
{
Id: 14599
@@ -111738,15 +111779,15 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
Script: <"
specialeffect2 EF_LIGHTSPHERE;
- sc_start SC_ITEMSCRIPT,180000,4302;
+ sc_start4 SC_MVPCARD_TAOGUNKA, 1800000, 100, 50, 50, 0;
">
},
{
@@ -111759,15 +111800,15 @@ 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_ITEMSCRIPT,180000,4132;
+ sc_start SC_MVPCARD_MISTRESS, 180000, 25;
">
},
{
@@ -111780,13 +111821,13 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ITEMSCRIPT,60000,4143; ">
+ Script: <" sc_start SC_MVPCARD_ORCHERO, 180000, 100; ">
},
{
Id: 14605
@@ -111798,13 +111839,16 @@ item_db: (
Trade: {
nodrop: true
notrade: true
- noselltonpc: true
nocart: true
- nogstorage: true
+ noselltonpc: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" sc_start SC_ITEMSCRIPT,180000,4135; ">
+ Script: <"
+ specialeffect2 EF_LIGHTSPHERE;
+ sc_start SC_MVPCARD_ORCLORD, 180000, 30;
+ ">
},
{
Id: 14606
diff --git a/db/sc_config.txt b/db/sc_config.txt
index 06b2bc617..b37afa877 100644
--- a/db/sc_config.txt
+++ b/db/sc_config.txt
@@ -424,6 +424,12 @@ SC_GEFFEN_MAGIC3, 2
SC_OVERLAPEXPUP, 12
SC_MORA_BUFF, 2
+// MVP Scrolls
+SC_MVPCARD_TAOGUNKA, 60
+SC_MVPCARD_MISTRESS, 60
+SC_MVPCARD_ORCHERO, 60
+SC_MVPCARD_ORCLORD, 60
+
// Guild Auras should not be saved
SC_LEADERSHIP,78
SC_GLORYWOUNDS,78
diff --git a/src/map/battle.c b/src/map/battle.c
index c0c2e29cc..c28aef820 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -5833,6 +5833,17 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st
delay += 100;/* gradual increase so the numbers don't clip in the client */
}
+ if (sc->data[SC_MVPCARD_ORCLORD]) {
+ NORMALIZE_RDAMAGE(damage * sc->data[SC_MVPCARD_ORCLORD]->val1 / 100);
+
+ rdelay = clif->delay_damage(tick + delay, src, src, status_get_amotion(src), status_get_dmotion(src), rdamage, 1, BDT_ENDURE);
+
+ if (tsd)
+ battle->drain(tsd, src, rdamage, rdamage, status_get_race(src), 0);
+ battle->delay_damage(tick, wd->amotion, target, src, 0, CR_REFLECTSHIELD, 0, rdamage, ATK_DEF, rdelay, true);
+
+ delay += 100;
+ }
}
if( ( ssc = status->get_sc(src) ) ) {
if( ssc->data[SC_INSPIRATION] ) {
diff --git a/src/map/skill.c b/src/map/skill.c
index 39579156f..8d97409fb 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -14343,6 +14343,8 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
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;
+ if (sc->data[SC_MVPCARD_MISTRESS])
+ req.sp -= req.sp * sc->data[SC_MVPCARD_MISTRESS]->val1 / 100;
}
req.zeny = skill->dbs->db[idx].zeny[skill_lv-1];
@@ -14422,22 +14424,24 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16
if (itemid_isgemstone(req.itemid[i]) && skill_id != HW_GANBANTEIN) {
if (sd->special_state.no_gemstone) {
// All gem skills except Hocus Pocus and Ganbantein can cast for free with Mistress card [helvetica]
- if( skill_id != SA_ABRACADABRA )
+ if (skill_id != SA_ABRACADABRA)
req.itemid[i] = req.amount[i] = 0;
- else if( --req.amount[i] < 1 )
+ else if (--req.amount[i] < 1)
req.amount[i] = 1; // Hocus Pocus always use at least 1 gem
}
- if(sc && sc->data[SC_INTOABYSS])
- {
- if( skill_id != SA_ABRACADABRA )
+ if (sc && sc->data[SC_INTOABYSS]) {
+ if (skill_id != SA_ABRACADABRA)
req.itemid[i] = req.amount[i] = 0;
- else if( --req.amount[i] < 1 )
+ else if (--req.amount[i] < 1)
req.amount[i] = 1; // Hocus Pocus always use at least 1 gem
}
+ if (sc && sc->data[SC_MVPCARD_MISTRESS]) {
+ req.itemid[i] = req.amount[i] = 0;
+ }
}
- if( skill_id >= HT_SKIDTRAP && skill_id <= HT_TALKIEBOX && pc->checkskill(sd, RA_RESEARCHTRAP) > 0){
+ if (skill_id >= HT_SKIDTRAP && skill_id <= HT_TALKIEBOX && pc->checkskill(sd, RA_RESEARCHTRAP) > 0) {
int16 item_index;
- if ((item_index = pc->search_inventory(sd,req.itemid[i])) == INDEX_NOT_FOUND
+ if ((item_index = pc->search_inventory(sd, req.itemid[i])) == INDEX_NOT_FOUND
|| sd->status.inventory[item_index].amount < req.amount[i]
) {
req.itemid[i] = ITEMID_TRAP_ALLOY;
diff --git a/src/map/status.c b/src/map/status.c
index f4fd04467..841f9c855 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -860,6 +860,12 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_GEFFEN_MAGIC3] = SI_GEFFEN_MAGIC3;
status->dbs->IconChangeTable[SC_FENRIR_CARD] = SI_FENRIR_CARD;
+ // MVP Scrolls
+ status->dbs->IconChangeTable[SC_MVPCARD_TAOGUNKA] = SI_MVPCARD_TAOGUNKA;
+ status->dbs->IconChangeTable[SC_MVPCARD_MISTRESS] = SI_MVPCARD_MISTRESS;
+ status->dbs->IconChangeTable[SC_MVPCARD_ORCHERO] = SI_MVPCARD_ORCHERO;
+ status->dbs->IconChangeTable[SC_MVPCARD_ORCLORD] = SI_MVPCARD_ORCLORD;
+
// Mercenary Bonus Effects
status->dbs->IconChangeTable[SC_MER_FLEE] = SI_MER_FLEE;
status->dbs->IconChangeTable[SC_MER_ATK] = SI_MER_ATK;
@@ -1008,7 +1014,6 @@ void initChangeTables(void) {
status->dbs->ChangeFlagTable[SC_ARMOR_RESIST] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_ATKER_BLOOD] |= SCB_ALL;
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;
status->dbs->ChangeFlagTable[SC_ATKER_ASPD] |= SCB_MAXHP | SCB_ALL;
@@ -1096,6 +1101,12 @@ void initChangeTables(void) {
status->dbs->ChangeFlagTable[SC_GEFFEN_MAGIC3] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_FENRIR_CARD] |= SCB_MATK | SCB_ALL;
+ // MVP Scrolls
+ status->dbs->ChangeFlagTable[SC_MVPCARD_TAOGUNKA] |= SCB_MAXHP | SCB_DEF | SCB_MDEF;
+ status->dbs->ChangeFlagTable[SC_MVPCARD_MISTRESS] |= SCB_ALL;
+ status->dbs->ChangeFlagTable[SC_MVPCARD_ORCHERO] |= SCB_ALL;
+ status->dbs->ChangeFlagTable[SC_MVPCARD_ORCLORD] |= SCB_ALL;
+
// Costume
status->dbs->ChangeFlagTable[SC_MOONSTAR] |= SCB_NONE;
status->dbs->ChangeFlagTable[SC_SUPER_STAR] |= SCB_NONE;
@@ -2530,12 +2541,6 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
}
}
- if( sc->count && sc->data[SC_ITEMSCRIPT] ) {
- struct item_data *data = itemdb->exists(sc->data[SC_ITEMSCRIPT]->val1);
- if( data && data->script )
- script->run_use_script(sd, data, 0);
- }
-
status->calc_pc_additional(sd, opt);
if( sd->pd ) { // Pet Bonus
@@ -5149,14 +5154,16 @@ defType status_calc_def(struct block_list *bl, struct status_change *sc, int def
def += sc->data[SC_SHIELDSPELL_REF]->val2;
if (sc->data[SC_PRESTIGE])
def += sc->data[SC_PRESTIGE]->val1;
- if (sc->data[SC_VOLCANIC_ASH] && (bl->type==BL_MOB)) {
- if (status_get_race(bl)==RC_PLANT)
+ if (sc->data[SC_VOLCANIC_ASH] && (bl->type == BL_MOB)) {
+ if (status_get_race(bl) == RC_PLANT)
def /= 2;
}
if (sc->data[SC_UNLIMIT])
return 1;
if (sc->data[SC_ARMORSCROLL])
def += sc->data[SC_ARMORSCROLL]->val1;
+ if (sc->data[SC_MVPCARD_TAOGUNKA])
+ def -= sc->data[SC_MVPCARD_TAOGUNKA]->val2;
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
}
@@ -5287,6 +5294,8 @@ defType status_calc_mdef(struct block_list *bl, struct status_change *sc, int md
return 1;
if (sc->data[SC_FREYJASCROLL])
mdef += sc->data[SC_FREYJASCROLL]->val1;
+ if (sc->data[SC_MVPCARD_TAOGUNKA])
+ mdef -= sc->data[SC_MVPCARD_TAOGUNKA]->val3;
return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX);
}
@@ -5891,6 +5900,8 @@ unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc,
maxhp += maxhp * sc->data[SC_SOULSCROLL]->val1 / 100;
if (sc->data[SC_ATKER_ASPD])
maxhp += maxhp * sc->data[SC_ATKER_ASPD]->val1 / 100;
+ if (sc->data[SC_MVPCARD_TAOGUNKA])
+ maxhp += maxhp * sc->data[SC_MVPCARD_TAOGUNKA]->val1 / 100;
return (unsigned int)cap_value(maxhp,1,UINT_MAX);
}
@@ -6754,9 +6765,11 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ
if (sc) {
if (sc->data[SC_SCRESIST])
- sc_def += sc->data[SC_SCRESIST]->val1*100; //Status resist
+ sc_def += sc->data[SC_SCRESIST]->val1 * 100; //Status resist
else if (sc->data[SC_SIEGFRIED])
- sc_def += sc->data[SC_SIEGFRIED]->val3*100; //Status resistance.
+ sc_def += sc->data[SC_SIEGFRIED]->val3 * 100; //Status resistance.
+ if (sc && sc->data[SC_MVPCARD_ORCHERO])
+ sc_def += sc->data[SC_MVPCARD_ORCHERO]->val1 * 100;
}
//When tick def not set, reduction is the same for both.
@@ -9474,31 +9487,6 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
if (battle_config.sc_castcancel&bl->type)
unit->skillcastcancel(bl, 0);
break;
- /* */
- case SC_ITEMSCRIPT:
- if( sd ) {
- switch( val1 ) {
- case ITEMID_PHREEONI_CARD:
- clif->status_change(bl, SI_FOOD_BASICHIT, 1, tick, 0, 0, 0);
- break;
- case ITEMID_GHOSTRING_CARD:
- clif->status_change(bl,SI_ARMOR_PROPERTY,1,tick,0,0,0);
- break;
- case ITEMID_TAO_GUNKA_CARD:
- clif->status_change(bl,SI_MVPCARD_TAOGUNKA,1,tick,0,0,0);
- break;
- case ITEMID_MISTRESS_CARD:
- clif->status_change(bl,SI_MVPCARD_MISTRESS,1,tick,0,0,0);
- break;
- case ITEMID_ORC_HERO_CARD:
- clif->status_change(bl,SI_MVPCARD_ORCHERO,1,tick,0,0,0);
- break;
- case ITEMID_ORC_LOAD_CARD:
- clif->status_change(bl,SI_MVPCARD_ORCLORD,1,tick,0,0,0);
- break;
- }
- }
- break;
}
// Set option as needed.
@@ -10365,30 +10353,6 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
if( sce->val2 )
status_change_end(bl, (sc_type)sce->val2, INVALID_TIMER);
break;
- case SC_ITEMSCRIPT:
- if( sd ) {
- switch( sce->val1 ) {
- case ITEMID_PHREEONI_CARD:
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_FOOD_BASICHIT);
- break;
- case ITEMID_GHOSTRING_CARD:
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_ARMOR_PROPERTY);
- break;
- case ITEMID_TAO_GUNKA_CARD:
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_MVPCARD_TAOGUNKA);
- break;
- case ITEMID_MISTRESS_CARD:
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_MVPCARD_MISTRESS);
- break;
- case ITEMID_ORC_HERO_CARD:
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_MVPCARD_ORCHERO);
- break;
- case ITEMID_ORC_LOAD_CARD:
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_MVPCARD_ORCLORD);
- break;
- }
- }
- break;
case SC_OVERED_BOOST:
switch( bl->type ){
case BL_HOM:
diff --git a/src/map/status.h b/src/map/status.h
index 695b5f3cf..d44cc9bca 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -390,8 +390,8 @@ typedef enum sc_type {
//SC_DEFRATIOATK,
//SC_HPDRAIN,
//SC_SKILLATKBONUS,
- SC_ITEMSCRIPT = 290,
- SC_S_LIFEPOTION,
+ //SC_ITEMSCRIPT,
+ SC_S_LIFEPOTION = 291,
SC_L_LIFEPOTION,
SC_CASH_PLUSONLYJOBEXP,
//SC_IGNOREDEF,
@@ -793,6 +793,12 @@ typedef enum sc_type {
SC_CUP_OF_BOZA,
SC_OVERLAPEXPUP,
SC_MORA_BUFF,
+
+ // MVP Scrolls
+ SC_MVPCARD_TAOGUNKA,
+ SC_MVPCARD_MISTRESS,
+ SC_MVPCARD_ORCHERO,
+ SC_MVPCARD_ORCLORD,
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
} sc_type;