summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/const.txt3
-rw-r--r--db/pre-re/item_db.conf22
-rw-r--r--db/re/item_db.conf22
-rw-r--r--db/sc_config.txt10
-rw-r--r--src/map/status.c20
-rw-r--r--src/map/status.h7
6 files changed, 44 insertions, 40 deletions
diff --git a/db/const.txt b/db/const.txt
index e7ae4e4ad..94bee8bdb 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -1311,6 +1311,9 @@ SC_GEFFEN_MAGIC2 605
SC_GEFFEN_MAGIC3 606
SC_FENRIR_CARD 607
+SC_ATKER_ASPD 608
+SC_ATKER_MOVESPEED 609
+
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 21c2b16cf..ca182e2f7 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -65193,17 +65193,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_INCMHPRATE,36000000,5;
- percentheal 10,0;
- ">
+ Script: <" sc_start2 SC_ATKER_ASPD,3600000,5,10; ">
},
{
Id: 12275
@@ -65215,17 +65212,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_INCMSPRATE,36000000,5;
- percentheal 0,10;
- ">
+ Script: <" sc_start2 SC_ATKER_MOVESPEED,3600000,5,10; ">
},
{
Id: 12276
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 5596edd58..6620ba919 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -80085,17 +80085,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_INCMHPRATE,36000000,5;
- percentheal 10,0;
- ">
+ Script: <" sc_start2 SC_ATKER_ASPD,3600000,5,10; ">
},
{
Id: 12275
@@ -80107,17 +80104,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_INCMSPRATE,36000000,5;
- percentheal 0,10;
- ">
+ Script: <" sc_start2 SC_ATKER_MOVESPEED,3600000,5,10; ">
},
{
Id: 12276
diff --git a/db/sc_config.txt b/db/sc_config.txt
index 65e24e4e8..339a5257f 100644
--- a/db/sc_config.txt
+++ b/db/sc_config.txt
@@ -205,9 +205,9 @@ SC_S_LIFEPOTION, 92
SC_L_LIFEPOTION, 92
SC_CRITICALPERCENT, 92
SC_PLUSAVOIDVALUE, 92
-//SC_ATKER_ASPD, 28
-//SC_TARGET_ASPD, 92
-//SC_ATKER_MOVESPEED, 28
+SC_ATKER_ASPD, 28
+SC_TARGET_ASPD, 92
+SC_ATKER_MOVESPEED, 28
SC_ATKER_BLOOD, 28
SC_TARGET_BLOOD, 30
SC_ARMOR_PROPERTY, 29
@@ -317,7 +317,7 @@ SC_RAISINGDRAGON, 30
SC__IGNORANCE, 16
SC__LAZINESS, 16
SC_LIGHTNINGWALK, 28
-//SC_ACARAJE, 24
+SC_ACARAJE, 24
SC__UNLUCKY, 16
SC_CURSEDCIRCLE_ATKER, 28
SC_CURSEDCIRCLE_TARGET, 28
@@ -398,8 +398,6 @@ SC_MTF_CRIDAMAGE, 12
SC_FULL_THROTTLE, 18
SC_REBOUND, 18
SC_TELEKINESIS_INTENSE, 18
-SC_ACARAJE, 64
-SC_TARGET_ASPD, 92
// Geffen Scrolls
SC_SKELSCROLL, 90
diff --git a/src/map/status.c b/src/map/status.c
index 90a2531fc..acd31aefd 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -826,6 +826,8 @@ void initChangeTables(void) {
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;
+ status->dbs->IconChangeTable[SC_ATKER_ASPD] = SI_ATKER_ASPD;
+ status->dbs->IconChangeTable[SC_ATKER_MOVESPEED] = SI_ATKER_MOVESPEED;
// Eden Crystal Synthesis
status->dbs->IconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1;
@@ -989,6 +991,8 @@ void initChangeTables(void) {
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;
+ status->dbs->ChangeFlagTable[SC_ATKER_MOVESPEED] |= SCB_MAXSP | SCB_ALL;
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR;
@@ -3405,7 +3409,7 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str
} else
regen->flag&=~sce->val4; //Remove regen as specified by val4
}
- if(sc->data[SC_GENTLETOUCH_REVITALIZE]) {
+ if (sc->data[SC_GENTLETOUCH_REVITALIZE]) {
regen->hp += regen->hp * ( 30 * sc->data[SC_GENTLETOUCH_REVITALIZE]->val1 + 50 ) / 100;
}
if ((sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 1) //if insignia lvl 1
@@ -3413,12 +3417,16 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str
|| (sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 1)
|| (sc->data[SC_WIND_INSIGNIA] && sc->data[SC_WIND_INSIGNIA]->val1 == 1))
regen->rate.hp *= 2;
- if( sc->data[SC_VITALITYACTIVATION] )
+ if (sc->data[SC_VITALITYACTIVATION])
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_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_ATKER_ASPD])
+ regen->rate.hp += regen->rate.hp * sc->data[SC_ATKER_ASPD]->val2 / 100;
+ if (sc->data[SC_ATKER_MOVESPEED])
+ regen->rate.sp += regen->rate.sp * sc->data[SC_ATKER_MOVESPEED]->val2 / 100;
}
/// Recalculates parts of an object's battle status according to the specified flags.
/// @param flag bitfield of values from enum scb_flag
@@ -5851,6 +5859,8 @@ unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc,
maxhp += maxhp * sc->data[SC_FRIGG_SONG]->val2 / 100;
if (sc->data[SC_SOULSCROLL])
maxhp += maxhp * sc->data[SC_SOULSCROLL]->val1 / 100;
+ if (sc->data[SC_ATKER_ASPD])
+ maxhp += maxhp * sc->data[SC_ATKER_ASPD]->val1 / 100;
return (unsigned int)cap_value(maxhp,1,UINT_MAX);
}
@@ -5882,6 +5892,8 @@ unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc,
maxsp += maxsp * sc->data[SC_TARGET_ASPD]->val1 / 100;
if (sc->data[SC_SOULSCROLL])
maxsp += maxsp * sc->data[SC_SOULSCROLL]->val1 / 100;
+ if (sc->data[SC_ATKER_MOVESPEED])
+ maxsp += maxsp * sc->data[SC_ATKER_MOVESPEED]->val1 / 100;
return cap_value(maxsp,1,UINT_MAX);
}
diff --git a/src/map/status.h b/src/map/status.h
index 723e95a53..e784eade8 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -770,6 +770,9 @@ typedef enum sc_type {
SC_GEFFEN_MAGIC2,
SC_GEFFEN_MAGIC3,
SC_FENRIR_CARD,
+
+ SC_ATKER_ASPD,
+ SC_ATKER_MOVESPEED,
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
} sc_type;
@@ -1080,9 +1083,9 @@ enum si_type {
SI_L_LIFEPOTION = 294,
SI_CRITICALPERCENT = 295,
SI_PLUSAVOIDVALUE = 296,
- //SI_ATKER_ASPD = 297,
+ SI_ATKER_ASPD = 297,
SI_TARGET_ASPD = 298,
- //SI_ATKER_MOVESPEED = 299,
+ SI_ATKER_MOVESPEED = 299,
SI_ATKER_BLOOD = 300,
SI_TARGET_BLOOD = 301,