Sfoglia il codice sorgente

- Reverted again the change that stuns the caster on Ske, Ska, Swoo when the target is a nonplayer (rather than always)
- Modified mob_spawn_once so that coordinates -1,-1 are "random around the player" while 0,0 are random around the whole map (regardless of whether there's a player attached or not)
- Knockback will no longer work on traps during woe.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6566 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 anni fa
parent
commit
a7301992bc
5 ha cambiato i file con 33 aggiunte e 21 eliminazioni
  1. 7 0
      Changelog-Trunk.txt
  2. 3 3
      db/item_db.txt
  3. 3 3
      sql-files/item_db.sql
  4. 15 9
      src/map/mob.c
  5. 5 6
      src/map/skill.c

+ 7 - 0
Changelog-Trunk.txt

@@ -3,6 +3,13 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+2006/05/12
+	* Reverted again the change that stuns the caster on Ske, Ska, Swoo when
+	  the target is a nonplayer (rather than always) [Skotlex]
+	* Modified mob_spawn_once so that coordinates -1,-1 are "random around the
+	  player" while 0,0 are random around the whole map (regardless of whether
+	  there's a player attached or not) [Skotlex]
+	* Knockback will no longer work on traps during woe. [Skotlex]
 2006/05/11
 	* Fixed the definition of the KEY in the loginlog, thanks to TheUltraMage
 	  [Skotlex]

+ 3 - 3
db/item_db.txt

@@ -93,7 +93,7 @@
 601,Fly_Wing,Fly Wing,2,60,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ warp "Random",0,0; },{},{}
 602,Butterfly_Wing,Butterfly Wing,2,300,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ warp "SavePoint",0,0; },{},{}
 603,Old_Blue_Box,Old Blue Box,2,10000,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_BlueBox),1; },{},{}
-604,Dead_Branch,Dead Branch,2,50,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ monster "this",0,0,"--ja--",-1,1,""; },{},{}
+604,Dead_Branch,Dead Branch,2,50,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ monster "this",-1,-1,"--ja--",-1,1,""; },{},{}
 605,Anodyne,Anodyne,11,2000,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 8,1,"Endure"; },{},{}
 606,Aloevera,Aloevera,11,1500,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill 6,1,"Provoke"; },{},{}
 607,Yggdrasil_Berry,Yggdrasil Berry,0,2,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 100,100; },{},{}
@@ -2331,13 +2331,13 @@
 12101,Citron,Citron,0,,10,300,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12102,Grilled_Skewer,Grilled Skewer,0,,10,300,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 // New Monster Summoners & Item Givers
-12103,Bloody_Branch,Bloody Branch,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ monster "this",0,0,"--ja--",-3,1,""; },{},{}
+12103,Bloody_Branch,Bloody Branch,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ monster "this",-1,-1,"--ja--",-3,1,""; },{},{}
 12104,Random_Quiver,Random Quiver,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Quiver),1; },{},{}
 12105,Taming_Item_Giftset,Taming Item Giftset,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Taming),3; },{},{}
 12106,Jewel_Box,Jewel Case,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Jewel),1; },{},{}
 12107,Wrapped_Mask,Wrapped Mask,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Mask),1; },{},{}
 12108,Bundle_of_Spells,Bundle of Spells,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Scroll),5; },{},{}
-12109,Poring_Box,Poring Box,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ monster "this",0,0,"--ja--",-2,1,""; },{},{}
+12109,Poring_Box,Poring Box,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ monster "this",-1,-1,"--ja--",-2,1,""; },{},{}
 12110,First_Aid_Box,First Aid Box,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Potion),5; },{},{}
 12111,Wrapped_Food,Wrapped Food,2,,5000,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_Fruit),1; getitem groupranditem(IG_Meat),1; getitem groupranditem(IG_Fish),1; },{},{}
 12112,Tropical_Sograt,Tropical Sograt,0,,500,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_Curse,10000,1; },{},{}

+ 3 - 3
sql-files/item_db.sql

@@ -121,7 +121,7 @@ REPLACE INTO `item_db` VALUES (586,'Mother\'s_Cake','Mother\'s Cake','0',NULL,NU
 REPLACE INTO `item_db` VALUES (601,'Fly_Wing','Fly Wing','2','60',NULL,'50',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' warp "Random",0,0; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (602,'Butterfly_Wing','Butterfly Wing','2','300',NULL,'50',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' warp "SavePoint",0,0; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (603,'Old_Blue_Box','Old Blue Box','2','10000',NULL,'200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_BlueBox),1; ',NULL,NULL);
-REPLACE INTO `item_db` VALUES (604,'Dead_Branch','Dead Branch','2','50',NULL,'50',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' monster "this",0,0,"--ja--",-1,1,""; ',NULL,NULL);
+REPLACE INTO `item_db` VALUES (604,'Dead_Branch','Dead Branch','2','50',NULL,'50',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' monster "this",-1,-1,"--ja--",-1,1,""; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (605,'Anodyne','Anodyne','11','2000',NULL,'100',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' itemskill 8,1,"Endure"; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (606,'Aloevera','Aloevera','11','1500',NULL,'100',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' itemskill 6,1,"Provoke"; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (607,'Yggdrasil_Berry','Yggdrasil Berry','0','2',NULL,'300',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' percentheal 100,100; ',NULL,NULL);
@@ -2359,13 +2359,13 @@ REPLACE INTO `item_db` VALUES (12100,'Nine_Tail_Dish','Nine Tail Dish','0','1000
 REPLACE INTO `item_db` VALUES (12101,'Citron','Citron','0',NULL,'10','300',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12102,'Grilled_Skewer','Grilled Skewer','0',NULL,'10','300',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 -- // New Monster Summoners & Item Givers
-REPLACE INTO `item_db` VALUES (12103,'Bloody_Branch','Bloody Branch','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' monster "this",0,0,"--ja--",-3,1,""; ',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12103,'Bloody_Branch','Bloody Branch','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' monster "this",-1,-1,"--ja--",-3,1,""; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12104,'Random_Quiver','Random Quiver','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_Quiver),1; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12105,'Taming_Item_Giftset','Taming Item Giftset','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_Taming),3; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12106,'Jewel_Box','Jewel Case','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_Jewel),1; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12107,'Wrapped_Mask','Wrapped Mask','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_Mask),1; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12108,'Bundle_of_Spells','Bundle of Spells','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_Scroll),5; ',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12109,'Poring_Box','Poring Box','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' monster "this",0,0,"--ja--",-2,1,""; ',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12109,'Poring_Box','Poring Box','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' monster "this",-1,-1,"--ja--",-2,1,""; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12110,'First_Aid_Box','First Aid Box','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_Potion),5; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12111,'Wrapped_Food','Wrapped Food','2',NULL,'5000','200',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' getitem groupranditem(IG_Fruit),1; getitem groupranditem(IG_Meat),1; getitem groupranditem(IG_Fish),1; ',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12112,'Tropical_Sograt','Tropical Sograt','0',NULL,'500','100',NULL,NULL,NULL,NULL,0xFFFFFFFF,'7','2',NULL,NULL,NULL,NULL,NULL,' sc_start SC_Curse,10000,1; ',NULL,NULL);

+ 15 - 9
src/map/mob.c

@@ -263,7 +263,8 @@ int mob_once_spawn (struct map_session_data *sd, char *mapname,
 {
 	struct mob_data *md = NULL;
 	struct spawn_data data;
-	int m, count, lv = 255;
+	int m, count, lv = 255, rand_flag=0;
+	
 	
 	if(sd) lv = sd->status.base_level;
 
@@ -287,20 +288,25 @@ int mob_once_spawn (struct map_session_data *sd, char *mapname,
 	}
 	strncpy(data.eventname, event, 50);
 	
-	if (x <= 0 || y <= 0) {
-		if (sd)
-			map_search_freecell(&sd->bl, m, &x, &y, 1, 1, 0);
-		else
-		if (!map_search_freecell(NULL, m, &x, &y, -1, -1, 1))
-			return 0;	//Not solved?
+	if (sd && (x < 0 || y < 0))
+	{	//Locate spot around player.
+		map_search_freecell(&sd->bl, m, &x, &y, 1, 1, 0);
+		data.x = x;
+		data.y = y;
 	}
-	data.x = x;
-	data.y = y;
+
+	if (x <= 0 || y <= 0 || map_getcell(m,x,y,CELL_CHKNOREACH))
+		rand_flag = 1; //Randomize spot on map for each mob.
 
 	if (!mob_parse_dataset(&data))
 		return 0;
 	
 	for (count = 0; count < amount; count++) {
+		if (rand_flag) { //Get a random cell for this mob.
+			map_search_freecell(NULL, m, &x, &y, -1, -1, 1);
+			data.x = x;
+			data.y = y;
+		}
 		md =mob_spawn_dataset (&data);
 
 		if (class_ < 0 && battle_config.dead_branch_active)

+ 5 - 6
src/map/skill.c

@@ -1621,8 +1621,8 @@ int skill_blown( struct block_list *src, struct block_list *target,int count)
 
 	nullpo_retr(0, src);
 
-	if (src != target && map_flag_gvg(target->m) && target->type != BL_SKILL)
-		return 0; //No knocking back in WoE, except for skills... because traps CAN be knocked back.
+	if (src != target && map_flag_gvg(target->m))
+		return 0; //No knocking back in WoE
 	if (!count&0xffff)
 		return 0; //Actual knockback distance is 0.
 	
@@ -5363,17 +5363,16 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		}
 	case SL_SKA: // [marquis007]
 	case SL_SKE:
-		if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB)
+		if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) {
 			clif_skill_fail(sd,skillid,0,0);
-		else
+			status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10);
+		} else
 			clif_skill_nodamage(src,bl,skillid,skilllv,
 				sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		
 		if (skillid == SL_SKE)
 			sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA,skilllv));
 
-		//Regardless of who you target, caster gets stunned for 0.5 [Skotlex]
-		status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10);
 		break;
 		
 	// New guild skills [Celest]