From 50aae2224eb784aeaec46537574cc5c5bafc8c3e Mon Sep 17 00:00:00 2001 From: csnv Date: Sat, 3 Jan 2015 18:41:33 +0100 Subject: Corrected flag INF2_NOLP to actually work as intended --- src/map/skill.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/map') diff --git a/src/map/skill.c b/src/map/skill.c index a89f61a49..423bcf630 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -15371,7 +15371,7 @@ int skill_cell_overlap(struct block_list *bl, va_list ap) { break; } - if (su->group->skill_id == SA_LANDPROTECTOR && !(skill->get_inf2(skill_id)&(INF2_SONG_DANCE|INF2_TRAP))) { + if (su->group->skill_id == SA_LANDPROTECTOR && !(skill->get_inf2(skill_id)&(INF2_SONG_DANCE|INF2_TRAP|INF2_NOLP))) { //It deletes everything except songs/dances/traps (*alive) = 0; return 1; -- cgit v1.2.3-70-g09d2 From 0cd471b3e4ec92c94e960de4fd5c2a19ad0ee2f9 Mon Sep 17 00:00:00 2001 From: csnv Date: Sat, 3 Jan 2015 20:28:09 +0100 Subject: Fixes the direction of an object (char, mob, etc) when it faces a target after an action (skill, attack) --- src/map/skill.c | 5 +++++ src/map/unit.c | 4 ++++ 2 files changed, 9 insertions(+) (limited to 'src/map') diff --git a/src/map/skill.c b/src/map/skill.c index 423bcf630..34689bd9d 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -5008,6 +5008,9 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data) { else ud->skill_id = 0; //mobs can't clear this one as it is used for skill condition 'afterskill' ud->skill_lv = ud->skilltarget = 0; } + + unit->setdir(src, map->calc_dir(src, target->x, target->y)); + map->freeblock_unlock(); return 1; } while(0); @@ -9843,6 +9846,8 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data) { ud->skill_lv = ud->skillx = ud->skilly = 0; } + unit->setdir(src, map->calc_dir(src, ud->skillx, ud->skilly)); + map->freeblock_unlock(); return 1; } while(0); diff --git a/src/map/unit.c b/src/map/unit.c index deb061f78..7f41f4709 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1599,6 +1599,8 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui ud->skill_lv = skill_lv; if( casttime > 0 ) { + if (src->id != target->id) // self-targeted skills shouldn't show different direction + unit->setdir(src, map->calc_dir(src, target->x, target->y)); ud->skilltimer = timer->add( tick+casttime, skill->castend_id, src->id, 0 ); if( sd && (pc->checkskill(sd,SA_FREECAST) > 0 || skill_id == LG_EXEEDBREAK) ) status_calc_bl(&sd->bl, SCB_SPEED); @@ -1742,6 +1744,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui // in official this is triggered even if no cast time. clif->skillcasting(src, src->id, 0, skill_x, skill_y, skill_id, skill->get_ele(skill_id, skill_lv), casttime); if( casttime > 0 ) { + unit->setdir(src, map->calc_dir(src, skill_x, skill_y)); ud->skilltimer = timer->add( tick+casttime, skill->castend_pos, src->id, 0 ); if( (sd && pc->checkskill(sd,SA_FREECAST) > 0) || skill_id == LG_EXEEDBREAK) status_calc_bl(&sd->bl, SCB_SPEED); @@ -2170,6 +2173,7 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick) { } if(ud->state.attack_continue) { + unit->setdir(src, map->calc_dir(src, target->x, target->y)); if( src->type == BL_PC && battle_config.idletime_criteria & BCIDLE_ATTACK ) ((TBL_PC*)src)->idletime = sockt->last_tick; ud->attacktimer = timer->add(ud->attackabletime,unit->attack_timer,src->id,0); -- cgit v1.2.3-70-g09d2 From 4e8837d4e53d72bb83eea25285403dabcc129442 Mon Sep 17 00:00:00 2001 From: csnv Date: Sat, 3 Jan 2015 20:32:08 +0100 Subject: Increased minimum combo time to that of amotion. --- src/map/skill.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/map') diff --git a/src/map/skill.c b/src/map/skill.c index 34689bd9d..ac208a204 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2394,7 +2394,7 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr break; } //Switch End if (combo) { //Possible to chain - if ( (combo = DIFF_TICK32(sd->ud.canact_tick, tick)) < 50 ) combo = 50;/* less is a waste. */ + combo = max(status_get_amotion(src), DIFF_TICK32(sd->ud.canact_tick, tick)); sc_start2(NULL,src,SC_COMBOATTACK,100,skill_id,bl->id,combo); clif->combo_delay(src, combo); } -- cgit v1.2.3-70-g09d2 From d51196ba94491780a7d70c07db119812b20a5f23 Mon Sep 17 00:00:00 2001 From: csnv Date: Sun, 11 Jan 2015 01:47:46 +0100 Subject: Corrected comments and INF2_NOLP --- src/map/skill.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/map') diff --git a/src/map/skill.c b/src/map/skill.c index ac208a204..cd46be0fa 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -15319,7 +15319,9 @@ int skill_cell_overlap(struct block_list *bl, va_list ap) { skill->delunit(su); return 1; } - if( !(skill->get_inf2(su->group->skill_id)&(INF2_SONG_DANCE|INF2_TRAP)) || su->group->skill_id == WZ_FIREPILLAR || su->group->skill_id == GN_HELLS_PLANT) { //It deletes everything except songs/dances and traps + // SA_LANDPROTECTOR blocks everything except songs/dances/traps (and NOLP) + // TODO: Do these skills ignore land protector when placed on top? + if( !(skill->get_inf2(su->group->skill_id)&(INF2_SONG_DANCE|INF2_TRAP|INF2_NOLP)) || su->group->skill_id == WZ_FIREPILLAR || su->group->skill_id == GN_HELLS_PLANT) { skill->delunit(su); return 1; } @@ -15377,7 +15379,7 @@ int skill_cell_overlap(struct block_list *bl, va_list ap) { } if (su->group->skill_id == SA_LANDPROTECTOR && !(skill->get_inf2(skill_id)&(INF2_SONG_DANCE|INF2_TRAP|INF2_NOLP))) { - //It deletes everything except songs/dances/traps + //SA_LANDPROTECTOR blocks everything except songs/dances/traps (and NOLP) (*alive) = 0; return 1; } -- cgit v1.2.3-70-g09d2