diff options
Diffstat (limited to 'src/map/skill.c')
-rw-r--r-- | src/map/skill.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index c4fbdea5c..619a21890 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -22,6 +22,7 @@ #include "script.h" #include "intif.h" #include "log.h" +#include "chrif.h" #ifdef MEMWATCH #include "memwatch.h" @@ -3425,6 +3426,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int break; case HP_BASILICA: /* バジリカ */ + skill_status_change_start(src,SkillStatusChangeTable[skillid],skilllv,0,0,0,skill_get_time(skillid,skilllv),0); case PA_GOSPEL: /* ゴスペル */ skill_clear_unitgroup(src); clif_skill_nodamage(src,bl,skillid,skilllv,1); @@ -4999,9 +5001,10 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid, limit=skill_get_time(skillid,skilllv); target=BCT_ALL; range=3; - //Fix to prevent the priest from walking while Basilica is up. - battle_stopwalking(src,1); - skill_status_change_start(src,SC_ANKLE,skilllv,0,0,0,limit,0); + //Fix to prevent the priest from walking while Basilica is up. + battle_stopwalking(src,1); + skill_status_change_start(src,SC_ANKLE,skilllv,0,0,0,limit,0); + //sd->canmove_tick = gettick() + limit; // added later [celest] break; case PA_GOSPEL: /* ゴスペル */ count=49; @@ -7897,7 +7900,8 @@ int skill_status_change_end(struct block_list* bl, int type, int tid) { struct map_session_data *sd=NULL; if(bl->type == BL_PC && (sd=(struct map_session_data *)bl)){ - sd->status.manner = 0; + if (sd->status.manner >= 0) // weeee ^^ [celest] + sd->status.manner = 0; clif_updatestatus(sd,SP_MANNER); } } @@ -8440,7 +8444,7 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val struct map_session_data *sd = NULL; struct status_change* sc_data; short *sc_count, *option, *opt1, *opt2, *opt3; - int opt_flag = 0, calc_flag = 0,updateflag = 0, race, mode, elem, undead_flag; + int opt_flag = 0, calc_flag = 0,updateflag = 0, save_flag = 0, race, mode, elem, undead_flag; int scdef=0; nullpo_retr(0, bl); @@ -8882,6 +8886,7 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val if(!val2) val2 = time(&timer); updateflag = SP_MANNER; + save_flag = 1; // celest } break; case SC_SELFDESTRUCTION: //自爆 @@ -9093,6 +9098,8 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val case SC_ASSUMPTIO: /* アスムプティオ */ *opt3 |= 2048; break; + case SC_BASILICA: // [celest] + break; case SC_MARIONETTE: /* マリオネットコントロ?ル */ case SC_MARIONETTE2: calc_flag = 1; @@ -9208,6 +9215,9 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val if(bl->type==BL_PC && calc_flag) pc_calcstatus(sd,0); /* ステ?タス再計算 */ + if(bl->type==BL_PC && save_flag) + chrif_save(sd); // save the player status + if(bl->type==BL_PC && updateflag) clif_updatestatus(sd,updateflag); /* ステ?タスをクライアントに送る */ |