summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/const.txt1
-rw-r--r--db/mercenary_skill_db.txt2
-rw-r--r--db/pre-re/item_db.conf14
-rw-r--r--db/re/item_db.conf23
-rw-r--r--db/sc_config.txt2
-rw-r--r--src/map/status.c23
-rw-r--r--src/map/status.h3
7 files changed, 48 insertions, 20 deletions
diff --git a/db/const.txt b/db/const.txt
index f0ec7cd55..2d61a01d6 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -1338,6 +1338,7 @@ SC_GM_BATTLE2 627
SC_2011RWC 628
SC_STR_SCROLL 629
SC_INT_SCROLL 630
+SC_STEAMPACK 631
e_gasp 0
e_what 1
diff --git a/db/mercenary_skill_db.txt b/db/mercenary_skill_db.txt
index b7da95bd8..6f939ad7d 100644
--- a/db/mercenary_skill_db.txt
+++ b/db/mercenary_skill_db.txt
@@ -201,7 +201,7 @@
2325,8223,10 //MER_QUICKEN
// M_GALAPAGO
2326,8239,5 //MER_BLESSING
-2326,28,5 //AL_HEAL
+//2326,28,5 //AL_HEAL
// MER_DIABOLIC
2342,8225,5 //MER_CRASH
2342,8202,5 //MS_MAGNUM
diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf
index 3ed2027cb..e17b1d952 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -78674,7 +78674,7 @@ item_db: (
Type: 18
Buy: 20
Weight: 10
- Script: <" getitem 14586,5; ">
+ Script: <" getitem Spark_Candy, 5; ">
},
{
Id: 13858
@@ -78683,7 +78683,7 @@ item_db: (
Type: 18
Buy: 20
Weight: 10
- Script: <" getitem 14586,10; ">
+ Script: <" getitem Spark_Candy, 10; ">
},
{
Id: 13859
@@ -82169,7 +82169,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" getitem 14586,5; ">
+ Script: <" getitem Spark_Candy, 5; ">
},
{
Id: 14050
@@ -82183,11 +82183,11 @@ item_db: (
notrade: true
noselltonpc: true
nocart: true
- nogstorage: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14586,10; ">
+ Script: <" getitem Spark_Candy, 10; ">
},
{
Id: 14051
@@ -87824,6 +87824,10 @@ item_db: (
noselltonpc: true
nogstorage: true
}
+ Script: <"
+ specialeffect2 EF_HASTEUP;
+ sc_start2 SC_STEAMPACK, 60000, 20, 25;
+ ">
},
{
Id: 14587
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index f29364f0c..0bd005274 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -100871,11 +100871,11 @@ item_db: (
notrade: true
noselltonpc: true
nocart: true
- nogstorage: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14586,5; ">
+ Script: <" getitem Spark_Candy, 5; ">
},
{
Id: 13858
@@ -100889,11 +100889,11 @@ item_db: (
notrade: true
noselltonpc: true
nocart: true
- nogstorage: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14586,10; ">
+ Script: <" getitem Spark_Candy, 10; ">
},
{
Id: 13859
@@ -104491,11 +104491,11 @@ item_db: (
notrade: true
noselltonpc: true
nocart: true
- nogstorage: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14586,5; ">
+ Script: <" getitem Spark_Candy, 5; ">
},
{
Id: 14050
@@ -104509,11 +104509,11 @@ item_db: (
notrade: true
noselltonpc: true
nocart: true
- nogstorage: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" getitem 14586,10; ">
+ Script: <" getitem Spark_Candy, 10; ">
},
{
Id: 14051
@@ -111478,11 +111478,14 @@ item_db: (
notrade: true
noselltonpc: true
nocart: true
- nogstorage: true
nomail: true
noauction: true
+ nogstorage: true
}
- Script: <" bonus2 bHPLossRate,100,10000; ">
+ Script: <"
+ specialeffect2 EF_HASTEUP;
+ sc_start2 SC_STEAMPACK, 60000, 20, 25;
+ ">
},
{
Id: 14587
diff --git a/db/sc_config.txt b/db/sc_config.txt
index 610f57e98..32dd28078 100644
--- a/db/sc_config.txt
+++ b/db/sc_config.txt
@@ -213,7 +213,7 @@ SC_TARGET_BLOOD, 30
SC_ARMOR_PROPERTY, 29
//SC_REUSE_LIMIT_A, 29
SC_HELLPOWER, 29
-//SC_STEAMPACK, 92
+SC_STEAMPACK, 108
//SC_REUSE_LIMIT_B, 29
//SC_REUSE_LIMIT_C, 29
//SC_REUSE_LIMIT_D, 29
diff --git a/src/map/status.c b/src/map/status.c
index 1a1c5e2c7..52df73455 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -853,6 +853,7 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_2011RWC] = SI_2011RWC;
status->dbs->IconChangeTable[SC_STR_SCROLL] = SI_STR_SCROLL;
status->dbs->IconChangeTable[SC_INT_SCROLL] = SI_INT_SCROLL;
+ status->dbs->IconChangeTable[SC_STEAMPACK] = SI_STEAMPACK;
// Eden Crystal Synthesis
status->dbs->IconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1;
@@ -1041,6 +1042,7 @@ void initChangeTables(void) {
status->dbs->ChangeFlagTable[SC_2011RWC] |= SCB_STR | SCB_AGI | SCB_VIT | SCB_INT | SCB_DEX | SCB_LUK | SCB_BATK | SCB_MATK;
status->dbs->ChangeFlagTable[SC_STR_SCROLL] |= SCB_STR;
status->dbs->ChangeFlagTable[SC_INT_SCROLL] |= SCB_INT;
+ status->dbs->ChangeFlagTable[SC_STEAMPACK] |= SCB_BATK | SCB_ASPD | SCB_ALL;
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR;
@@ -4736,6 +4738,8 @@ unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc,
batk += batk * sc->data[SC_GM_BATTLE2]->val1 / 100;
if (sc->data[SC_2011RWC])
batk += batk * sc->data[SC_2011RWC]->val2 / 100;
+ if (sc->data[SC_STEAMPACK])
+ batk += sc->data[SC_STEAMPACK]->val1;
return (unsigned short)cap_value(batk,0,USHRT_MAX);
}
@@ -5718,6 +5722,8 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
bonus += sc->data[SC_ACARAJE]->val2;
if (sc->data[SC_BATTLESCROLL])
bonus += sc->data[SC_BATTLESCROLL]->val1;
+ if (sc->data[SC_STEAMPACK])
+ bonus += sc->data[SC_STEAMPACK]->val2;
}
return (bonus + pots);
@@ -5883,6 +5889,8 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int
aspd_rate += sc->data[SC_ACARAJE]->val2 * 10;
if (sc->data[SC_BATTLESCROLL])
aspd_rate += sc->data[SC_BATTLESCROLL]->val1 * 10;
+ if (sc->data[SC_STEAMPACK])
+ aspd_rate += sc->data[SC_STEAMPACK]->val2 * 10;
return (short)cap_value(aspd_rate,0,SHRT_MAX);
}
@@ -9205,6 +9213,12 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
val4 = tick / 10000;
tick_time = 10000; // [GodLesZ] tick time
break;
+ case SC_STEAMPACK: // [Frost]
+ val3 = 100; // HP Consume.
+ val4 = tick / 10000;
+ tick_time = 10000;
+ sc_start(src, bl, SC_ENDURE, 100, 10, -1); // Endure effect
+ break;
case SC_KYOUGAKU: {
int min = val1*2;
int max = val1*3;
@@ -11490,10 +11504,9 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) {
if (bl->type == BL_ELEM)
elemental->change_mode(BL_CAST(BL_ELEM,bl),MAX_ELESKILLTREE);
break;
-
case SC_STOMACHACHE:
if (--(sce->val4) > 0) {
- status->charge(bl, 0, sce->val3); // Reduce 8 every 10 seconds.
+ status->charge(bl, 0, sce->val3); // Reduce 8 SP every 10 seconds.
if (sd && !pc_issit(sd)) { // Force to sit every 10 seconds.
pc_stop_walking(sd, STOPWALKING_FLAG_FIXPOS | STOPWALKING_FLAG_NEXTCELL);
pc_stop_attack(sd);
@@ -11504,6 +11517,12 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
break;
+ case SC_STEAMPACK:
+ if (--(sce->val4) > 0) {
+ status->charge(bl, sce->val3, 0); // Reduce 100 HP every 10 seconds.
+ sc_timer_next(10000 + tick, status->change_timer, bl->id, data);
+ }
+ break;
case SC_LEADERSHIP:
case SC_GLORYWOUNDS:
case SC_SOULCOLD:
diff --git a/src/map/status.h b/src/map/status.h
index a45b22adb..187188dfb 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -814,6 +814,7 @@ typedef enum sc_type {
SC_2011RWC,
SC_STR_SCROLL,
SC_INT_SCROLL, // 630
+ SC_STEAMPACK,
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
} sc_type;
@@ -1133,7 +1134,7 @@ enum si_type {
SI_ARMOR_PROPERTY = 302,
//SI_REUSE_LIMIT_A = 303,
SI_HELLPOWER = 304,
- //SI_STEAMPACK = 305,
+ SI_STEAMPACK = 305,
//SI_REUSE_LIMIT_B = 306,
//SI_REUSE_LIMIT_C = 307,
//SI_REUSE_LIMIT_D = 308,