summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
authorHaruna <haru@dotalux.com>2015-01-11 01:51:34 +0100
committerHaruna <haru@dotalux.com>2015-01-11 01:51:34 +0100
commita00224b44b7b3380a08bb28618d1d98f40173619 (patch)
treeb7f6b409e3138d7dbb45b50c2d8e97719e9bb7a3 /src/map/skill.c
parente62020c7113ed1602babd902d15ca655c822fe8f (diff)
parentd51196ba94491780a7d70c07db119812b20a5f23 (diff)
downloadhercules-a00224b44b7b3380a08bb28618d1d98f40173619.tar.gz
hercules-a00224b44b7b3380a08bb28618d1d98f40173619.tar.bz2
hercules-a00224b44b7b3380a08bb28618d1d98f40173619.tar.xz
hercules-a00224b44b7b3380a08bb28618d1d98f40173619.zip
Merge pull request #434 from csnv/minfixes
INF2_NOLP update. BL direction fixes. Combo minimum time increased.
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index 56ff26cbc..429a0b739 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -2395,7 +2395,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);
}
@@ -5009,6 +5009,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);
@@ -9884,6 +9887,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);
@@ -15355,7 +15360,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;
}
@@ -15412,8 +15419,8 @@ 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))) {
- //It deletes everything except songs/dances/traps
+ if (su->group->skill_id == SA_LANDPROTECTOR && !(skill->get_inf2(skill_id)&(INF2_SONG_DANCE|INF2_TRAP|INF2_NOLP))) {
+ //SA_LANDPROTECTOR blocks everything except songs/dances/traps (and NOLP)
(*alive) = 0;
return 1;
}