summaryrefslogtreecommitdiff
path: root/src/map/status.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/status.c')
-rw-r--r--src/map/status.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 0b406850e..018647459 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -654,7 +654,7 @@ void initChangeTables(void) {
set_sc( MI_RUSH_WINDMILL , SC_RUSH_WINDMILL , SI_RUSHWINDMILL , SCB_WATK );
set_sc( MI_ECHOSONG , SC_ECHOSONG , SI_ECHOSONG , SCB_DEF2 );
set_sc( MI_HARMONIZE , SC_HARMONIZE , SI_HARMONIZE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
- set_sc( WM_POEMOFNETHERWORLD , SC_STOP , SI_NETHERWORLD , SCB_NONE );
+ set_sc_with_vfx(WM_POEMOFNETHERWORLD, SC_NETHERWORLD , SI_NETHERWORLD , SCB_NONE);
set_sc_with_vfx( WM_VOICEOFSIREN , SC_SIREN , SI_SIREN , SCB_NONE );
set_sc_with_vfx( WM_LULLABY_DEEPSLEEP , SC_DEEP_SLEEP , SI_DEEPSLEEP , SCB_NONE );
set_sc( WM_SIRCLEOFNATURE , SC_SIRCLEOFNATURE , SI_SIRCLEOFNATURE , SCB_NONE );
@@ -6591,6 +6591,9 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ
case SC_NEEDLE_OF_PARALYZE:
tick_def2 = (st->vit + st->luk) * 50;
break;
+ case SC_NETHERWORLD:
+ tick_def2 = 1000 * (((bl->type == BL_PC) ? ((TBL_PC*)bl)->status.job_level : 0) / 10 + status->get_lv(bl) / 50);
+ break;
default:
//Effect that cannot be reduced? Likely a buff.
if (!(rnd()%10000 < rate))
@@ -6692,6 +6695,9 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ
case SC_FROSTMISTY:
tick = max(tick, 6000);
break;
+ case SC_NETHERWORLD:
+ tick = max(tick, 4000);
+ break;
default:
//Skills need to trigger even if the duration is reduced below 1ms
tick = max(tick, 1);
@@ -7223,6 +7229,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
// Other Effects
case SC_VACUUM_EXTREME:
+ case SC_NETHERWORLD:
return 0;
}
@@ -8007,7 +8014,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_BERSERK:
if( val3 == SC__BLOODYLUST )
sc_start(src,bl,(sc_type)val3,100,val1,tick);
- if( !val3 && !(!sc->data[SC_ENDURE] || !sc->data[SC_ENDURE]->val4) )
+ if (!val3 && (!sc->data[SC_ENDURE] || !sc->data[SC_ENDURE]->val4))
sc_start4(src, bl, SC_ENDURE, 100,10,0,0,2, tick);
//HP healing is performing after the calc_status call.
//Val2 holds HP penalty
@@ -9311,6 +9318,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_MEIKYOUSISUI:
case SC_NEEDLE_OF_PARALYZE:
case SC_DEATHBOUND:
+ case SC_NETHERWORLD:
unit->stop_walking(bl,1);
break;
case SC_ANKLESNARE:
@@ -12110,6 +12118,7 @@ void status_read_job_db_sub(int idx, const char *name, config_setting_t *jdb)
for ( ; w <= pc->max_level[idx][0]; w++) {
status->HP_table[idx][w] = min(ave * w, battle_config.max_hp);
}
+ total = 0;
for (w = 1; w <= MAX_LEVEL && status->SP_table[iidx][w]; w++) {
status->SP_table[idx][w] = status->SP_table[iidx][w];
total += status->SP_table[idx][w] - status->SP_table[idx][w - 1];