From e0efeb4efc069f8bbcfd801c0d59c55b483115cb Mon Sep 17 00:00:00 2001 From: skotlex Date: Fri, 12 May 2006 21:16:44 +0000 Subject: - 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6566 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 7 +++++++ db/item_db.txt | 6 +++--- sql-files/item_db.sql | 6 +++--- src/map/mob.c | 24 +++++++++++++++--------- src/map/skill.c | 11 +++++------ 5 files changed, 33 insertions(+), 21 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 8e40c2e58..30eed9493 100644 --- a/Changelog-Trunk.txt +++ b/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] diff --git a/db/item_db.txt b/db/item_db.txt index d9b8d99c6..75b1aff5c 100644 --- a/db/item_db.txt +++ b/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; },{},{} diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql index df22dcd36..2dd117f45 100644 --- a/sql-files/item_db.sql +++ b/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); diff --git a/src/map/mob.c b/src/map/mob.c index d6f68afac..708bb4a47 100644 --- a/src/map/mob.c +++ b/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) diff --git a/src/map/skill.c b/src/map/skill.c index 5d00a0617..bf9c7668e 100644 --- a/src/map/skill.c +++ b/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] -- cgit v1.2.3-70-g09d2