diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-08-07 17:43:53 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-08-07 17:43:53 +0000 |
commit | 184f0ed51d24cbc1eac68becfadfa6c7e50e9403 (patch) | |
tree | b1d213b9be05f21108fac92b86fb1b8eb8ef2f81 /src/map/mob.c | |
parent | 1af5eb4ad8b5a03e430772ececf37f3986d0d537 (diff) | |
download | hercules-184f0ed51d24cbc1eac68becfadfa6c7e50e9403.tar.gz hercules-184f0ed51d24cbc1eac68becfadfa6c7e50e9403.tar.bz2 hercules-184f0ed51d24cbc1eac68becfadfa6c7e50e9403.tar.xz hercules-184f0ed51d24cbc1eac68becfadfa6c7e50e9403.zip |
- Cleaned some of mpeg's updated work.
- Fixed HT_BLITZBEAT hitting neutral characters when it auto-triggers.
- Simplified the Tatami Gaeshi code.
- Fixed AS_SPLASHER doing full damage on everyone except targetted char instead of the other way around.
- Fixed KAENSIN clearing out SUITON cells and viceversa.
- The spawn area is now seen as range rather than absolute for mob spawn lines. This means that x,y,10,10 will spawn the mob on a 21x21 grid around the given x,y point.
- Some clean up of the mob-spawn code. Now you can specify negative areas, so that a spawn location such as 100,150,0,-1 will spawn a mob always on x=100, but any Y value of the current map.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8165 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/mob.c')
-rw-r--r-- | src/map/mob.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index 15cb12e6b..a7832a972 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -633,28 +633,18 @@ int mob_spawn (struct mob_data *md) if (md->spawn) { //Respawn data md->bl.m = md->spawn->m; + md->bl.x = md->spawn->x; + md->bl.y = md->spawn->y; - if ((md->spawn->x == 0 && md->spawn->y == 0) || md->spawn->xs || md->spawn->ys) + if ((md->bl.x == 0 && md->bl.y == 0) || md->spawn->xs || md->spawn->ys) { //Monster can be spawned on an area. - short x, y, xs, ys; - if (md->spawn->x == 0 && md->spawn->y == 0) - x = y = xs = ys = -1; - else { - x = md->spawn->x; - y = md->spawn->y; - xs = md->spawn->xs/2; - ys = md->spawn->ys/2; - } - if (!map_search_freecell(NULL, md->spawn->m, &x, &y, xs, ys, battle_config.no_spawn_on_player?5:1)) { + if (!map_search_freecell(NULL, -1, + &md->bl.x, &md->bl.y, md->spawn->xs, md->spawn->ys, + battle_config.no_spawn_on_player?4:0)) { // retry again later add_timer(tick+5000,mob_delayspawn,md->bl.id,0); return 1; } - md->bl.x = x; - md->bl.y = y; - } else { - md->bl.x = md->spawn->x; - md->bl.y = md->spawn->y; } } memset(&md->state, 0, sizeof(md->state)); |