diff options
-rw-r--r-- | db/const.txt | 1 | ||||
-rw-r--r-- | db/re/item_db.conf | 4 | ||||
-rw-r--r-- | src/map/status.c | 8 | ||||
-rw-r--r-- | src/map/status.h | 1 |
4 files changed, 14 insertions, 0 deletions
diff --git a/db/const.txt b/db/const.txt index d27d68a78..e2cff732b 100644 --- a/db/const.txt +++ b/db/const.txt @@ -1342,6 +1342,7 @@ SC_STEAMPACK 631 SC_MOVHASTE_POTION 632 SC_MOVESLOW_POTION 633 SC_BUCHEDENOEL 634 +SC_PHI_DEMON 635 e_gasp 0 e_what 1 diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 48560c134..00935594e 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -86572,6 +86572,10 @@ item_db: ( Type: 2 Buy: 20 Weight: 600 + Script: <" + specialeffect2 EF_PROVIDENCE; + sc_start SC_PHI_DEMON, 1200000, 10; + "> }, { Id: 12776 diff --git a/src/map/status.c b/src/map/status.c index 2e5734e90..33e664f3f 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -823,6 +823,7 @@ void initChangeTables(void) { status->dbs->IconChangeTable[SC_FOOD_CRITICALSUCCESSVALUE] = SI_FOOD_CRITICALSUCCESSVALUE; status->dbs->IconChangeTable[SC_MORA_BUFF] = SI_MORA_BUFF; status->dbs->IconChangeTable[SC_BUCHEDENOEL] = SI_BUCHEDENOEL; + status->dbs->IconChangeTable[SC_PHI_DEMON] = SI_PHI_DEMON; // Cash Items status->dbs->IconChangeTable[SC_FOOD_STR_CASH] = SI_FOOD_STR_CASH; @@ -1049,6 +1050,7 @@ void initChangeTables(void) { status->dbs->ChangeFlagTable[SC_INT_SCROLL] |= SCB_INT; status->dbs->ChangeFlagTable[SC_STEAMPACK] |= SCB_BATK | SCB_ASPD | SCB_ALL; status->dbs->ChangeFlagTable[SC_BUCHEDENOEL] |= SCB_REGEN | SCB_HIT | SCB_CRI; + status->dbs->ChangeFlagTable[SC_PHI_DEMON] |= SCB_ALL; // Cash Items status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] |= SCB_STR; @@ -3115,6 +3117,10 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) { } if (sc->data[SC_CUP_OF_BOZA]) sd->subele[ELE_FIRE] += sc->data[SC_CUP_OF_BOZA]->val2; + if (sc->data[SC_PHI_DEMON]) { + sd->right_weapon.addrace[RC_DEMON] += sc->data[SC_PHI_DEMON]->val1; + sd->left_weapon.addrace[RC_DEMON] += sc->data[SC_PHI_DEMON]->val1; + } } status_cpy(&sd->battle_status, bstatus); @@ -3496,6 +3502,8 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str regen->rate.hp *= 2; if (sc->data[SC_VITALITYACTIVATION]) regen->flag &=~RGN_SP; + + // Recovery Items 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]) diff --git a/src/map/status.h b/src/map/status.h index 43041e316..bc93abc1e 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -818,6 +818,7 @@ typedef enum sc_type { SC_MOVHASTE_POTION, SC_MOVESLOW_POTION, SC_BUCHEDENOEL, + SC_PHI_DEMON, SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; |