summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/atcommand.c2
-rw-r--r--src/map/battle.c4
-rw-r--r--src/map/script.c45
-rw-r--r--src/map/skill.c14
-rw-r--r--src/map/status.c13
-rw-r--r--src/map/status.h2
-rw-r--r--src/map/unit.c2
7 files changed, 63 insertions, 19 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 074ae2ec5..a1666b44e 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -9153,7 +9153,7 @@ ACMD(channel) {
return false;
} else {
channel->set_options(chan, chan->options | k);
- sprintf(atcmd_output, msg_fd(fd,1454), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1450), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s'
clif->message(fd, atcmd_output);
}
} else {
diff --git a/src/map/battle.c b/src/map/battle.c
index 31b04ad44..ad151ac6c 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -6385,7 +6385,9 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
TBL_SKILL *su = (TBL_SKILL*)target;
if( !su->group )
return 0;
- if( skill->get_inf2(su->group->skill_id)&INF2_TRAP && su->group->unit_id != UNT_USED_TRAPS) { //Only a few skills can target traps...
+ if( skill->get_inf2(su->group->skill_id)&INF2_TRAP &&
+ su->group->unit_id != UNT_USED_TRAPS &&
+ su->group->unit_id != UNT_NETHERWORLD ) { //Only a few skills can target traps...
switch( battle->get_current_skill(src) ) {
case RK_DRAGONBREATH:// it can only hit traps in pvp/gvg maps
case RK_DRAGONBREATH_WATER:
diff --git a/src/map/script.c b/src/map/script.c
index 51bb344fe..ed4f9e918 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -14255,11 +14255,6 @@ BUILDIN(isnight) {
return true;
}
-BUILDIN(isday) {
- script_pushint(st,(map->night_flag == 0));
- return true;
-}
-
/*================================================
* Check how many items/cards in the list are
* equipped - used for 2/15's cards patch [celest]
@@ -20012,7 +20007,6 @@ void script_parse_builtin(void) {
BUILDIN_DEF(logmes,"s"), //this command actls as MES but rints info into LOG file either SQL/TXT [Lupus]
BUILDIN_DEF(summon,"si??"), // summons a slave monster [Celest]
BUILDIN_DEF(isnight,""), // check whether it is night time [Celest]
- BUILDIN_DEF_DEPRECATED(isday,""), // check whether it is day time [Celest] // DEPRECATED 2015-01-21 [Haru]
BUILDIN_DEF(isequipped,"i*"), // check whether another item/card has been equipped [Celest]
BUILDIN_DEF(isequippedcnt,"i*"), // check how many items/cards are being equipped [Celest]
BUILDIN_DEF(cardscnt,"i*"), // check how many items/cards are being equipped in the same arm [Lupus]
@@ -20190,7 +20184,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(makerune,"i"),
BUILDIN_DEF(hascashmount,""),//[Ind]
BUILDIN_DEF(setcashmount,""),//[Ind]
- BUILDIN_DEF(checkre,"i"),
+ BUILDIN_DEF_DEPRECATED(checkre,"i"), // Deprecated 2015-05-08 [Haru]
/**
* rAthena and beyond!
**/
@@ -20372,6 +20366,43 @@ void script_hardcoded_constants(void) {
script->set_constant("BG_AREA",BG_AREA,false);
script->set_constant("BG_AREA_WOS",BG_AREA_WOS,false);
script->set_constant("BG_QUEUE",BG_QUEUE,false);
+
+ /* Renewal */
+#ifdef RENEWAL
+ script->set_constant("RENEWAL", 1, false);
+#else
+ script->set_constant("RENEWAL", 0, false);
+#endif
+#ifdef RENEWAL_CAST
+ script->set_constant("RENEWAL_CAST", 1, false);
+#else
+ script->set_constant("RENEWAL_CAST", 0, false);
+#endif
+#ifdef RENEWAL_DROP
+ script->set_constant("RENEWAL_DROP", 1, false);
+#else
+ script->set_constant("RENEWAL_DROP", 0, false);
+#endif
+#ifdef RENEWAL_EXP
+ script->set_constant("RENEWAL_EXP", 1, false);
+#else
+ script->set_constant("RENEWAL_EXP", 0, false);
+#endif
+#ifdef RENEWAL_LVDMG
+ script->set_constant("RENEWAL_LVDMG", 1, false);
+#else
+ script->set_constant("RENEWAL_LVDMG", 0, false);
+#endif
+#ifdef RENEWAL_EDP
+ script->set_constant("RENEWAL_EDP", 1, false);
+#else
+ script->set_constant("RENEWAL_EDP", 0, false);
+#endif
+#ifdef RENEWAL_ASPD
+ script->set_constant("RENEWAL_ASPD", 1, false);
+#else
+ script->set_constant("RENEWAL_ASPD", 0, false);
+#endif
}
/**
diff --git a/src/map/skill.c b/src/map/skill.c
index 1d776980d..82d07e159 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -4592,14 +4592,12 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
status_change_end(bl, SC_RUSH_WINDMILL, INVALID_TIMER);
status_change_end(bl, SC_ECHOSONG, INVALID_TIMER);
status_change_end(bl, SC_HARMONIZE, INVALID_TIMER);
+ status_change_end(bl, SC_NETHERWORLD, INVALID_TIMER);
status_change_end(bl, SC_SIREN, INVALID_TIMER);
- status_change_end(bl, SC_DEEP_SLEEP, INVALID_TIMER);
- status_change_end(bl, SC_SIRCLEOFNATURE, INVALID_TIMER);
status_change_end(bl, SC_GLOOMYDAY, INVALID_TIMER);
status_change_end(bl, SC_SONG_OF_MANA, INVALID_TIMER);
status_change_end(bl, SC_DANCE_WITH_WUG, INVALID_TIMER);
status_change_end(bl, SC_SATURDAY_NIGHT_FEVER, INVALID_TIMER);
- status_change_end(bl, SC_LERADS_DEW, INVALID_TIMER);
status_change_end(bl, SC_MELODYOFSINK, INVALID_TIMER);
status_change_end(bl, SC_BEYOND_OF_WARCRY, INVALID_TIMER);
status_change_end(bl, SC_UNLIMITED_HUMMING_VOICE, INVALID_TIMER);
@@ -6565,6 +6563,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
status_change_end(bl, SC_STUN, INVALID_TIMER);
status_change_end(bl, SC_WHITEIMPRISON, INVALID_TIMER);
}
+ status_change_end(bl, SC_NETHERWORLD, INVALID_TIMER);
//Is this equation really right? It looks so... special.
if( battle->check_undead(tstatus->race,tstatus->def_ele) ) {
status->change_start(src, bl, SC_BLIND,
@@ -12336,10 +12335,11 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6
skill->attack(BF_WEAPON,ss,&src->bl,bl,WM_SEVERE_RAINSTORM_MELEE,sg->skill_lv,tick,0);
break;
case UNT_NETHERWORLD:
- if( !(status_get_mode(bl)&MD_BOSS)) {
- if( !(tsc && tsc->data[type]) ){
- sc_start(ss, bl, type, 100, sg->skill_lv, skill->get_time2(sg->skill_id,sg->skill_lv));
- }
+ if ( battle->check_target(&src->bl, bl, BCT_PARTY) == -1 && bl->id != sg->src_id ) {
+ sc_start(ss, bl, type, 100, sg->skill_lv, skill->get_time2(sg->skill_id, sg->skill_lv));
+ sg->limit = 0;
+ clif->changetraplook(&src->bl, UNT_USED_TRAPS);
+ sg->unit_id = UNT_USED_TRAPS;
}
break;
case UNT_THORNS_TRAP:
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];
diff --git a/src/map/status.h b/src/map/status.h
index c8a7a08f7..3b85c4014 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -527,7 +527,7 @@ typedef enum sc_type {
SC_BEYOND_OF_WARCRY,
SC_UNLIMITED_HUMMING_VOICE, // 410
SC_SITDOWN_FORCE,
- //SC_NETHERWORLD,
+ SC_NETHERWORLD,
/**
* Sura
**/
diff --git a/src/map/unit.c b/src/map/unit.c
index 2dba10aeb..b44d58d9a 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -1081,6 +1081,7 @@ int unit_can_move(struct block_list *bl) {
|| sc->data[SC_NEEDLE_OF_PARALYZE]
|| sc->data[SC_VACUUM_EXTREME]
|| (sc->data[SC_FEAR] && sc->data[SC_FEAR]->val2 > 0)
+ || sc->data[SC_NETHERWORLD]
|| (sc->data[SC_SPIDERWEB] && sc->data[SC_SPIDERWEB]->val1)
|| (sc->data[SC_CLOAKING] && sc->data[SC_CLOAKING]->val1 < 3 && !(sc->data[SC_CLOAKING]->val4&1)) //Need wall at level 1-2
|| (
@@ -2375,6 +2376,7 @@ int unit_remove_map(struct block_list *bl, clr_type clrtype, const char* file, i
status_change_end(bl, SC__MANHOLE, INVALID_TIMER);
status_change_end(bl, SC_VACUUM_EXTREME, INVALID_TIMER);
status_change_end(bl, SC_CURSEDCIRCLE_ATKER, INVALID_TIMER); //callme before warp
+ status_change_end(bl, SC_NETHERWORLD, INVALID_TIMER);
}
if (bl->type&(BL_CHAR|BL_PET)) {