summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-04-08 16:05:20 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-04-08 16:05:20 +0000
commit24f1e9e8b1865f47475d32214bcaa039a79a5df2 (patch)
treec63d5930dd96beed7f79674284f3b022bc3ef745 /src/map/skill.c
parent80de35a12f4da3003c7e4c8f63bbc72b075baa0f (diff)
downloadhercules-24f1e9e8b1865f47475d32214bcaa039a79a5df2.tar.gz
hercules-24f1e9e8b1865f47475d32214bcaa039a79a5df2.tar.bz2
hercules-24f1e9e8b1865f47475d32214bcaa039a79a5df2.tar.xz
hercules-24f1e9e8b1865f47475d32214bcaa039a79a5df2.zip
- Updated some Guild WoE rules to behave as explained here: http://www.eathena.ws/board/index.php?showtopic=146581
- Removed the nosave mapflags from the Guild Castles, as per the previously linked topic. - Added some missing map_freeblock_lock calls to castend_pos and castend_id functions to prevent (rather unlikely) dangling pointer crashes. - Improved the debug message when the npc_scriptcont npc IDs don't match. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10187 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index 0bd3f288e..0cf04bbe6 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -5720,6 +5720,8 @@ int skill_castend_id (int tid, unsigned int tick, int id, int data)
if(battle_config.skill_log && battle_config.skill_log&src->type)
ShowInfo("Type %d, ID %d skill castend id [id =%d, lv=%d, target ID %d)\n",
src->type, src->id, ud->skillid, ud->skilllv, target->id);
+
+ map_freeblock_lock();
if (skill_get_casttype(ud->skillid) == CAST_NODAMAGE)
skill_castend_nodamage_id(src,target,ud->skillid,ud->skilllv,tick,0);
else
@@ -5734,6 +5736,7 @@ int skill_castend_id (int tid, unsigned int tick, int id, int data)
else ud->skillid = 0; //mobs can't clear this one as it is used for skill condition 'afterskill'
ud->skilllv = ud->skilltarget = 0;
}
+ map_freeblock_unlock();
return 1;
} while(0);
//Skill failed.
@@ -5875,6 +5878,8 @@ int skill_castend_pos (int tid, unsigned int tick, int id, int data)
unit_stop_walking(src,1);
ud->canact_tick = tick + skill_delayfix(src, ud->skillid, ud->skilllv);
unit_set_walkdelay(src, tick, battle_config.default_skill_delay+skill_get_walkdelay(ud->skillid, ud->skilllv), 1);
+
+ map_freeblock_lock();
skill_castend_pos2(src,ud->skillx,ud->skilly,ud->skillid,ud->skilllv,tick,0);
if (ud->skilltimer == -1) {
@@ -5882,6 +5887,7 @@ int skill_castend_pos (int tid, unsigned int tick, int id, int data)
else ud->skillid = 0; //Non mobs can't clear this one as it is used for skill condition 'afterskill'
ud->skilllv = ud->skillx = ud->skilly = 0;
}
+ map_freeblock_unlock();
return 1;
} while(0);