summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/script.c10
-rw-r--r--src/map/skill.c26
-rw-r--r--src/map/status.c15
3 files changed, 25 insertions, 26 deletions
diff --git a/src/map/script.c b/src/map/script.c
index 377785fe4..542c82546 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -162,7 +162,7 @@ enum {
};
enum {
- MF_NOMEMO,
+ MF_NOMEMO, //0
MF_NOTELEPORT,
MF_NOSAVE,
MF_NOBRANCH,
@@ -172,7 +172,7 @@ enum {
MF_PVP_NOPARTY,
MF_PVP_NOGUILD,
MF_GVG,
- MF_GVG_NOPARTY,
+ MF_GVG_NOPARTY, //10
MF_NOTRADE,
MF_NOSKILL,
MF_NOWARP,
@@ -182,7 +182,7 @@ enum {
MF_FOG,
MF_SAKURA,
MF_LEAVES,
- MF_RAIN,
+ MF_RAIN, //20
MF_INDOORS,
MF_NOGO,
MF_CLOUDS,
@@ -192,7 +192,7 @@ enum {
MF_GVG_DUNGEON,
MF_NIGHTENABLED,
MF_NOBASEEXP,
- MF_NOJOBEXP,
+ MF_NOJOBEXP, //30
MF_NOMOBLOOT,
MF_NOMVPLOOT,
MF_NORETURN,
@@ -202,7 +202,7 @@ enum {
MF_NOCOMMAND,
MF_NODROP,
MF_JEXP,
- MF_BEXP,
+ MF_BEXP, //40
MF_NOVENDING,
MF_LOADEVENT,
MF_NOCHAT
diff --git a/src/map/skill.c b/src/map/skill.c
index 8367663ba..cd9e3af8d 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -925,9 +925,11 @@ int skillnotok (int skillid, struct map_session_data *sd)
}
break;
case GD_EMERGENCYCALL:
- if (!battle_config.emergency_call ||
- (map[sd->bl.m].flag.nowarpto && battle_config.emergency_call&1))
- {
+ if (
+ !(battle_config.emergency_call&(agit_flag?2:1)) ||
+ !(battle_config.emergency_call&(map_flag_gvg(sd->bl.m)?8:4)) ||
+ (battle_config.emergency_call&16 && map[sd->bl.m].flag.nowarpto)
+ ) {
clif_skill_fail(sd,skillid,0,0);
return 1;
}
@@ -6898,7 +6900,7 @@ int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned
case UNT_HERMODE:
//Needed to check when a dancer/bard leaves their ensemble area.
if (sg->src_id==bl->id &&
- !(sc && sc->data[SC_SPIRIT].timer == -1 && sc->data[SC_SPIRIT].val2 != SL_BARDDANCER))
+ !(sc && sc->data[SC_SPIRIT].timer != -1 && sc->data[SC_SPIRIT].val2 == SL_BARDDANCER))
return skillid;
if (sc && sc->data[type].timer==-1)
sc_start4(bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->limit);
@@ -8286,22 +8288,16 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t
case GD_BATTLEORDER:
case GD_REGENERATION:
case GD_RESTORE:
+ //Emergency Recall is handled on skill_notok
+ if (skill != GD_EMERGENCYCALL && !agit_flag) {
+ clif_skill_fail(sd,skill,0,0);
+ return 0;
+ }
case GD_EMERGENCYCALL:
if (!sd->status.guild_id || !sd->state.gmaster_flag)
return 0;
if (lv <= 0)
return 0;
-
- if (skill == GD_EMERGENCYCALL) {
- if (!map_flag_gvg(sd->bl.m))
- { //if not allowed to warp to the map (castles are always allowed)
- clif_skill_fail(sd,skill,0,0);
- return 0;
- }
- } else if (!agit_flag) {
- clif_skill_fail(sd,skill,0,0);
- return 0;
- }
break;
case GS_GLITTERING:
diff --git a/src/map/status.c b/src/map/status.c
index 83f4aa4aa..fa7de060e 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -308,7 +308,7 @@ void initChangeTables(void) {
add_sc(PF_FOGWALL, SC_FOGWALL);
set_sc(PF_SPIDERWEB, SC_SPIDERWEB, SI_BLANK, SCB_FLEE);
add_sc(WE_BABY, SC_BABY);
- set_sc(TK_RUN, SC_RUN, SI_RUN, SCB_SPEED);
+ set_sc(TK_RUN, SC_RUN, SI_RUN, SCB_SPEED|SCB_DSPD);
set_sc(TK_RUN, SC_SPURT, SI_SPURT, SCB_STR);
set_sc(TK_READYSTORM, SC_READYSTORM, SI_READYSTORM, SCB_NONE);
set_sc(TK_READYDOWN, SC_READYDOWN, SI_READYDOWN, SCB_NONE);
@@ -3420,12 +3420,12 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
//% increases (they don't stack, with the exception of Speedup1? @.@)
if(sc->data[SC_SPEEDUP1].timer!=-1)
speed -= speed * 50/100;
- if(sc->data[SC_SPEEDUP0].timer!=-1)
+ if(sc->data[SC_RUN].timer!=-1)
+ speed -= speed * 50/100;
+ else if(sc->data[SC_SPEEDUP0].timer!=-1)
speed -= speed * 25/100;
else if(sc->data[SC_INCREASEAGI].timer!=-1)
speed -= speed * 25/100;
- else if(sc->data[SC_RUN].timer!=-1)
- speed -= speed * 25/100;
else if(sc->data[SC_FUSION].timer != -1)
speed -= speed * 25/100;
else if(sc->data[SC_CARTBOOST].timer!=-1)
@@ -3584,8 +3584,11 @@ static unsigned short status_calc_dmotion(struct block_list *bl, struct status_c
if(!sc || !sc->count || map_flag_gvg(bl->m))
return cap_value(dmotion,0,USHRT_MAX);
- if (sc->data[SC_ENDURE].timer!=-1 ||
- sc->data[SC_CONCENTRATION].timer!=-1)
+ if (sc->data[SC_ENDURE].timer!=-1)
+ return 0;
+ if (sc->data[SC_CONCENTRATION].timer!=-1)
+ return 0;
+ if(sc->data[SC_RUN].timer!=-1)
return 0;
return cap_value(dmotion,0,USHRT_MAX);