summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
authorshennetsind <ind@henn.et>2013-01-27 11:58:05 -0200
committershennetsind <ind@henn.et>2013-01-27 11:58:05 -0200
commit18b2468b7d2680ddb5fcc0a11466b5893a16fdf4 (patch)
tree130a59334a2504d314119049784099d9af785043 /src/map/skill.c
parent7911e5e5cde7ad1ffcd9e367110a656b9432ad50 (diff)
downloadhercules-18b2468b7d2680ddb5fcc0a11466b5893a16fdf4.tar.gz
hercules-18b2468b7d2680ddb5fcc0a11466b5893a16fdf4.tar.bz2
hercules-18b2468b7d2680ddb5fcc0a11466b5893a16fdf4.tar.xz
hercules-18b2468b7d2680ddb5fcc0a11466b5893a16fdf4.zip
Fixed Bug #6644
Basilica can only be placed when there are no other units (no mobs/players) within the range of which the basilica will spawn. http://hercules.ws/board/tracker/issue-6644-basilica-bugged/ Signed-off-by: shennetsind <ind@henn.et>
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index 03f0d50bb..8e0bbabeb 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -9553,7 +9553,14 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data)
return 0;
}
-
+/* skill count without self */
+static int skill_count_wos(struct block_list *bl,va_list ap) {
+ struct block_list* src = va_arg(ap, struct block_list*);
+ if( src->id != bl->id ) {
+ return 1;
+ }
+ return 0;
+}
/*==========================================
*
*------------------------------------------*/
@@ -9771,8 +9778,13 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
case HP_BASILICA:
if( sc->data[SC_BASILICA] )
status_change_end(src, SC_BASILICA, INVALID_TIMER); // Cancel Basilica
- else
- { // Create Basilica. Start SC on caster. Unit timer start SC on others.
+ else { // Create Basilica. Start SC on caster. Unit timer start SC on others.
+ if( map_foreachinrange(skill_count_wos, src, 2, BL_MOB|BL_PC, src) ) {
+ if( sd )
+ clif_skill_fail(sd,skill_id,USESKILL_FAIL,0);
+ return 1;
+ }
+
skill_clear_unitgroup(src);
if( skill_unitsetting(src,skill_id,skill_lv,x,y,0) )
sc_start4(src,type,100,skill_lv,0,0,src->id,skill_get_time(skill_id,skill_lv));