Browse Source

- Fixed a little spawn_timer bug. Discovered with a previous fix from ultramage and because of this spawn line:

npc/mobs/fields/prontera.txt:
prt_fild06,222,30,40,10	monster	Green Plant	1080,15,900000,450000,1

This is an impossible spawn area, and the engine just keep trying each 5 seconds to spawn it again.
So we need to fix this line with a correct spawn too.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13497 54d463be-8e91-2dee-dedb-b68131a5f0ec
zephyrus 16 năm trước cách đây
mục cha
commit
dfe943a397
1 tập tin đã thay đổi với 8 bổ sung10 xóa
  1. 8 10
      src/map/mob.c

+ 8 - 10
src/map/mob.c

@@ -778,19 +778,17 @@ int mob_spawn (struct mob_data *md)
 		md->bl.x = md->spawn->x;
 		md->bl.y = md->spawn->y;
 
-		if ((md->bl.x == 0 && md->bl.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.
-			if (!map_search_freecell(&md->bl, -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);
+			if( !map_search_freecell(&md->bl, -1, &md->bl.x, &md->bl.y, md->spawn->xs, md->spawn->ys, battle_config.no_spawn_on_player?4:0) )
+			{ // retry again later
+				md->spawn_timer = add_timer(tick+5000,mob_delayspawn,md->bl.id,0);
 				return 1;
 			}
-		} else if (battle_config.no_spawn_on_player>99 &&
-			map_foreachinrange(mob_count_sub, &md->bl, AREA_SIZE, BL_PC))
-		{	//retry again later (players on sight)
-			add_timer(tick+5000,mob_delayspawn,md->bl.id,0);
+		}
+		else if( battle_config.no_spawn_on_player > 99 && map_foreachinrange(mob_count_sub, &md->bl, AREA_SIZE, BL_PC) )
+		{ // retry again later (players on sight)
+			md->spawn_timer = add_timer(tick+5000,mob_delayspawn,md->bl.id,0);
 			return 1;
 		}
 	}