From b79261f2e8c01a2a3f563bffe0eb5589f54a79f1 Mon Sep 17 00:00:00 2001 From: Streusel Date: Mon, 1 Jan 2007 01:43:06 +0100 Subject: -Updated guides/guides_izlude.txt coordinates --- npc/re/guides/guides_izlude.txt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/npc/re/guides/guides_izlude.txt b/npc/re/guides/guides_izlude.txt index b3f4cd4b0..80eedaf91 100644 --- a/npc/re/guides/guides_izlude.txt +++ b/npc/re/guides/guides_izlude.txt @@ -35,7 +35,7 @@ mes "on Byalan Island since it is"; mes "filled with dreadful monsters."; mes "Would you like to check any other locations?"; - viewpoint 1,200,180,0,0xFF0000; + viewpoint 1,197,205,0,0xFF0000; next; break; case 2: @@ -45,7 +45,7 @@ mes "Let me mark its location"; mes "on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,145,39,1,0x0A82FF; + viewpoint 1,204,75,1,0x0A82FF; next; break; case 3: @@ -64,7 +64,7 @@ mes "Let me mark the location of the ^006400Tool Shop^000000"; mes "on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,148,148,3,0xAAFF00; + viewpoint 1,160,125,3,0xAAFF00; next; break; case 5: @@ -72,7 +72,7 @@ mes "Let me mark the location of the ^7F3300Weapon & Armor Shop^000000"; mes "on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,114,149,4,0xD2691E; + viewpoint 1,109,182,4,0xD2691E; next; break; case 6: @@ -81,7 +81,7 @@ mes "Let me mark its location"; mes "on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,52,140,5,0xDA70D6; + viewpoint 1,52,172,5,0xDA70D6; next; break; case 7: @@ -89,7 +89,7 @@ mes "Let me mark the location of the ^B9062FSwordsman Association^000000"; mes "on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,214,130,6,0xFF0000; + viewpoint 1,212,161,6,0xFF0000; next; break; case 8: @@ -109,7 +109,7 @@ mes "the Swordsman Guild building."; mes "Let me mark his location on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,52,140,7,0x0A82FF; + viewpoint 1,131,148,7,0x0A82FF; next; break; case 2: @@ -118,7 +118,7 @@ mes "^FF5400Kafra Employee^000000"; mes "on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,134,88,8,0xFF5400; + viewpoint 1,128,148,8,0xFF5400; next; break; case 3: @@ -127,7 +127,7 @@ mes "^8B4513Jawaii^000000, the paradise of newlyweds,"; mes "please speak to the ^B9062FNewlywed Helper^000000."; mes "Would you like to check any other locations?"; - viewpoint 1,171,185,9,0xFF0000; + viewpoint 1,102,150,9,0xFF0000; next; break; case 4: @@ -137,7 +137,7 @@ mes "Let me mark his location"; mes "on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,171,130,10,0xD2691E; + viewpoint 1,158,130,10,0xD2691E; next; break; case 5: @@ -146,7 +146,7 @@ mes "^0000FFMercenary Goods Merchant^000000"; mes "on your mini-map."; mes "Would you like to check any other locations?"; - viewpoint 1,48,137,11,0xDA70D6; + viewpoint 1,56,169,11,0xDA70D6; next; break; case 6: -- cgit v1.2.3-70-g09d2 From 4cd79c33601006149fb9e52216c60c40d7c6e7c1 Mon Sep 17 00:00:00 2001 From: Streusel Date: Thu, 7 Feb 2013 21:48:55 -0800 Subject: -Updated plant spawns Signed-off-by: Streusel --- npc/re/mobs/fields/amatsu.txt | 6 ++- npc/re/mobs/fields/ayothaya.txt | 11 +++-- npc/re/mobs/fields/bifrost.txt | 87 ++++++++++++++++++++++++++++++++++++-- npc/re/mobs/fields/brasilis.txt | 6 ++- npc/re/mobs/fields/comodo.txt | 8 +++- npc/re/mobs/fields/dewata.txt | 4 +- npc/re/mobs/fields/dicastes.txt | 4 +- npc/re/mobs/fields/einbroch.txt | 34 ++++++++------- npc/re/mobs/fields/geffen.txt | 6 +-- npc/re/mobs/fields/gonryun.txt | 9 ++-- npc/re/mobs/fields/hugel.txt | 18 ++++---- npc/re/mobs/fields/jawaii.txt | 4 +- npc/re/mobs/fields/lighthalzen.txt | 20 +++++---- npc/re/mobs/fields/louyang.txt | 7 +-- npc/re/mobs/fields/lutie.txt | 2 +- npc/re/mobs/fields/malaya.txt | 16 +++---- npc/re/mobs/fields/manuk.txt | 4 +- npc/re/mobs/fields/mjolnir.txt | 4 +- npc/re/mobs/fields/morocc.txt | 4 +- npc/re/mobs/fields/moscovia.txt | 9 ++-- npc/re/mobs/fields/niflheim.txt | 2 +- npc/re/mobs/fields/payon.txt | 10 +++-- npc/re/mobs/fields/prontera.txt | 11 ++--- npc/re/mobs/fields/rachel.txt | 13 +++--- npc/re/mobs/fields/splendide.txt | 6 ++- npc/re/mobs/fields/umbala.txt | 8 ++-- npc/re/mobs/fields/veins.txt | 30 +++++++------ npc/re/mobs/fields/yuno.txt | 18 +++++--- 28 files changed, 240 insertions(+), 121 deletions(-) diff --git a/npc/re/mobs/fields/amatsu.txt b/npc/re/mobs/fields/amatsu.txt index 6c6761814..f97c2b1a8 100644 --- a/npc/re/mobs/fields/amatsu.txt +++ b/npc/re/mobs/fields/amatsu.txt @@ -1,9 +1,11 @@ -//===== Hercules Script ======================================= +//===== eAthena Script ======================================= //= Amatsu Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.4 +//===== Compatible With: ===================================== +//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 replaced Hydra -> G_Hydra (to fix drops exploit) [Lupus] //= 1.2 Official kRO 10.1 spawns [Playtester] @@ -32,4 +34,4 @@ ama_fild01,171,313,0,0 monster Hydra 1068,1,66000,33000,0 ama_fild01,171,314,0,0 monster Hydra 1068,1,69000,34500,0 ama_fild01,171,315,0,0 monster Hydra 1068,1,69000,34500,0 ama_fild01,175,314,0,0 monster Hydra 1068,1,72000,39000,0 -ama_fild01,169,315,0,0 monster Hydra 1068,1,72000,39000,0 +ama_fild01,169,315,0,0 monster Hydra 1068,1,72000,39000,0 \ No newline at end of file diff --git a/npc/re/mobs/fields/ayothaya.txt b/npc/re/mobs/fields/ayothaya.txt index 6bf71ed2c..3bd9c8176 100644 --- a/npc/re/mobs/fields/ayothaya.txt +++ b/npc/re/mobs/fields/ayothaya.txt @@ -1,15 +1,18 @@ -//===== Hercules Script ====================================== +//===== eAthena Script ======================================= //= Ayothaya Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 1.5 +//= 1.6 +//===== Compatible With: ===================================== +//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 Using EuRO data [Ishizu] //= 1.2 According the guide book, added a Choco [Lupus&VP] //= 1.3 Removed Choco [Lupus] //= 1.4 Official kRO 10.1 spawns [Playtester] //= 1.5 Updated to Renewal Spawns [Kisuka] +//= 1.6 Updated Renewal Spawns [Streusel] //============================================================ //================================================== @@ -18,7 +21,7 @@ ayo_fild01,0,0,0,0 monster Smokie 1056,30,5000,0,0 ayo_fild01,0,0,0,0 monster Coco 1104,30,5000,0,0 ayo_fild01,0,0,0,0 monster Yoyo 1057,30,5000,0,0 -ayo_fild01,0,0,0,0 monster Green Plant 1080,10,5000,0,0 +ayo_fild01,0,0,0,0 monster Green Plant 1080,10,10000,0,1 //================================================== // ayo_fild02 - Ayothaya Field @@ -26,4 +29,4 @@ ayo_fild01,0,0,0,0 monster Green Plant 1080,10,5000,0,0 ayo_fild02,0,0,0,0 monster Yoyo 1057,45,5000,0,0 ayo_fild02,0,0,0,0 monster Leaf Cat 1586,35,5000,0,0 ayo_fild02,0,0,0,0 monster Kraben 1587,5,5000,0,0 -ayo_fild02,0,0,0,0 monster Yellow Plant 1081,10,5000,0,0 +ayo_fild02,0,0,0,0 monster Yellow Plant 1081,10,10000,0,1 diff --git a/npc/re/mobs/fields/bifrost.txt b/npc/re/mobs/fields/bifrost.txt index c518669f6..b57ca31d2 100644 --- a/npc/re/mobs/fields/bifrost.txt +++ b/npc/re/mobs/fields/bifrost.txt @@ -1,13 +1,16 @@ -//===== Hercules Script ====================================== -//= Bifrost Field Monster Spawn Script +//===== eAthena Script ======================================== +//= Bifrost Monster Spawn Script //===== By: ================================================== //= Chilly //===== Current Version: ===================================== -//= 1.0 +//= 1.1 +//===== Compatible With: ===================================== +//= Any Athena Version //===== Description: ========================================= -//= Official kRO monster spawns +//= Official monster spawn in Bifrost Field. //===== Additional Comments: ================================= //= 1.0 First Release +//= 1.1 Added more accurate 1@mist monsters //============================================================ //================================================== @@ -29,3 +32,79 @@ bif_fild02,0,0,0,0 monster Pom Spider 2132,5,0,0,0 bif_fild02,0,0,0,0 monster Angra Mantis 2133,5,0,0,0 bif_fild02,0,0,0,0 monster Little Fatum 2136,50,0,0,0 bif_fild02,0,0,0,0 monster Miming 2137,30,0,0,0 + +//================================================== +// 1@mist - Forest Maze of Mists +//================================================== +1@mist,247,124,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,247,124,0,0 monster Nydhoggur Memory 2138,1,1200000,600000,0 +1@mist,247,124,0,0 monster Nydhoggur Memory 2139,1,1200000,600000,0 +1@mist,225,98,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,225,98,0,0 monster Nydhoggur Memory 2138,1,1200000,600000,0 +1@mist,225,98,0,0 monster Nydhoggur Memory 2139,1,1200000,600000,0 +1@mist,159,184,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,159,184,0,0 monster Nydhoggur Memory 2138,1,1200000,600000,0 +1@mist,159,184,0,0 monster Nydhoggur Memory 2139,1,1200000,600000,0 +1@mist,61,39,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,61,39,0,0 monster Nydhoggur Memory 2138,1,1200000,600000,0 +1@mist,61,39,0,0 monster Nydhoggur Memory 2139,1,1200000,600000,0 +1@mist,254,151,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,254,151,0,0 monster Nydhoggur Memory 2138,1,1200000,600000,0 +1@mist,254,151,0,0 monster Nydhoggur Memory 2139,1,1200000,600000,0 +1@mist,230,179,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,230,179,0,0 monster Nydhoggur Memory 2140,1,1200000,600000,0 +1@mist,230,179,0,0 monster Nydhoggur Memory 2141,1,1200000,600000,0 +1@mist,285,225,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,285,225,0,0 monster Nydhoggur Memory 2140,1,1200000,600000,0 +1@mist,285,225,0,0 monster Nydhoggur Memory 2141,1,1200000,600000,0 +1@mist,161,316,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,161,316,0,0 monster Nydhoggur Memory 2140,1,1200000,600000,0 +1@mist,161,316,0,0 monster Nydhoggur Memory 2141,1,1200000,600000,0 +1@mist,230,324,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,230,324,0,0 monster Nydhoggur Memory 2140,1,1200000,600000,0 +1@mist,230,324,0,0 monster Nydhoggur Memory 2141,1,1200000,600000,0 +1@mist,206,200,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,206,200,0,0 monster Nydhoggur Memory 2140,1,1200000,600000,0 +1@mist,206,200,0,0 monster Nydhoggur Memory 2141,1,1200000,600000,0 +1@mist,221,236,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,221,236,0,0 monster Nydhoggur Memory 2142,1,1200000,600000,0 +1@mist,221,236,0,0 monster Nydhoggur Memory 2143,1,1200000,600000,0 +1@mist,204,299,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,204,299,0,0 monster Nydhoggur Memory 2142,1,1200000,600000,0 +1@mist,204,299,0,0 monster Nydhoggur Memory 2143,1,1200000,600000,0 +1@mist,84,273,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,84,273,0,0 monster Nydhoggur Memory 2142,1,1200000,600000,0 +1@mist,84,273,0,0 monster Nydhoggur Memory 2143,1,1200000,600000,0 +1@mist,95,287,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,95,287,0,0 monster Nydhoggur Memory 2142,1,1200000,600000,0 +1@mist,95,287,0,0 monster Nydhoggur Memory 2143,1,1200000,600000,0 +1@mist,324,325,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,324,325,0,0 monster Nydhoggur Memory 2142,1,1200000,600000,0 +1@mist,324,325,0,0 monster Nydhoggur Memory 2143,1,1200000,600000,0 +1@mist,280,343,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,280,343,0,0 monster Nydhoggur Memory 2142,1,1200000,600000,0 +1@mist,280,343,0,0 monster Nydhoggur Memory 2143,1,1200000,600000,0 +1@mist,345,186,0,0 monster Creeper 2135,1,1200000,600000,0 +1@mist,345,186,0,0 monster Nydhoggur Memory 2142,1,1200000,600000,0 +1@mist,345,186,0,0 monster Nydhoggur Memory 2143,1,1200000,600000,0 +1@mist,105,105,85,85 monster Pom Spider 2132,8,1200000,600000,0 +1@mist,105,105,85,85 monster Angra Mantis 2133,8,1200000,600000,0 +1@mist,105,105,85,85 monster Parus 2134,8,1200000,600000,0 +1@mist,105,105,85,85 monster Little Fatum 2136,8,1200000,600000,0 +1@mist,105,105,85,85 monster Miming 2137,5,1200000,600000,0 +1@mist,105,275,85,85 monster Pom Spider 2132,10,1200000,600000,0 +1@mist,105,275,85,85 monster Angra Mantis 2133,10,1200000,600000,0 +1@mist,105,275,85,85 monster Parus 2134,10,1200000,600000,0 +1@mist,105,275,85,85 monster Little Fatum 2136,8,1200000,600000,0 +1@mist,105,275,85,85 monster Miming 2137,5,1200000,600000,0 +1@mist,275,105,85,85 monster Pom Spider 2132,12,1200000,600000,0 +1@mist,275,105,85,85 monster Angra Mantis 2133,12,1200000,600000,0 +1@mist,275,105,85,85 monster Parus 2134,10,1200000,600000,0 +1@mist,275,105,85,85 monster Little Fatum 2136,8,1200000,600000,0 +1@mist,275,105,85,85 monster Miming 2137,5,1200000,600000,0 +1@mist,275,275,85,85 monster Pom Spider 2132,15,1200000,600000,0 +1@mist,275,275,85,85 monster Angra Mantis 2133,15,1200000,600000,0 +1@mist,275,275,85,85 monster Parus 2134,10,1200000,600000,0 +1@mist,275,275,85,85 monster Little Fatum 2136,8,1200000,600000,0 +1@mist,275,275,85,85 monster Miming 2137,5,1200000,600000,0 +1@mist,325,210,25,150 boss_monster Lost Dragon 2131,1,1,7200000,600000,1 diff --git a/npc/re/mobs/fields/brasilis.txt b/npc/re/mobs/fields/brasilis.txt index d0bc14591..015a39347 100644 --- a/npc/re/mobs/fields/brasilis.txt +++ b/npc/re/mobs/fields/brasilis.txt @@ -1,15 +1,17 @@ -//===== Hercules Script ====================================== +//===== eAthena Script ======================================= //= Brasilis Fields Monster Spawn Script //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== //= 1.0 +//===== Compatible With: ===================================== +//= eAthena SVN //===== Additional Comments: ================================= //= 1.0 Official spawns from Aegis [Kisuka] //============================================================ //================================================== -// bra_fild01 +// bra_fild01 - Brasilis Field //================================================== bra_fild01,0,0,0,0 monster Curupira 2074,50,5000,0,0 bra_fild01,0,0,0,0 monster Dokebi 1110,10,5000,0,0 diff --git a/npc/re/mobs/fields/comodo.txt b/npc/re/mobs/fields/comodo.txt index eac8387ac..f53e5ca3f 100644 --- a/npc/re/mobs/fields/comodo.txt +++ b/npc/re/mobs/fields/comodo.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Comodo Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) @@ -57,6 +57,10 @@ cmd_fild04,0,0,0,0 monster Aster 1266,10,5000,0,0 //================================================== // cmd_fild05 - Disabled on Renewal //================================================== +//cmd_fild05,63,158,10,10 monster Shining Plant 1083,1,1800000,900000,1 +//cmd_fild05,318,277,10,10 monster Yellow Plant 1081,3,1800000,900000,1 +//cmd_fild05,282,49,20,20 monster Yellow Plant 1081,3,1800000,900000,1 +//cmd_fild05,0,0,0,0 monster Green Plant 1080,5,1800000,900000,1 //================================================== // cmd_fild06 - Fortress Saint Darmain (West) @@ -92,4 +96,4 @@ cmd_fild09,0,0,0,0 monster Metaller 1058,145,5000,0,0 cmd_fild09,0,0,0,0 monster Deniro 1105,15,5000,0,0 cmd_fild09,0,0,0,0 monster Piere 1160,15,5000,0,0 cmd_fild09,0,0,0,0 monster Andre 1095,15,5000,0,0 -cmd_fild09,0,0,0,0 monster Ant Egg 1097,10,5000,0,0 +cmd_fild09,0,0,0,0 monster Ant Egg 1097,10,5000,0,0 \ No newline at end of file diff --git a/npc/re/mobs/fields/dewata.txt b/npc/re/mobs/fields/dewata.txt index da7ffa4fe..5a5abdff6 100644 --- a/npc/re/mobs/fields/dewata.txt +++ b/npc/re/mobs/fields/dewata.txt @@ -1,11 +1,11 @@ -//===== rAthena Script ======================================== +//===== eAthena Script ======================================== //= Dewata Field Monster Spawn Script //===== By: ================================================== //= Chilly //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== -//= rAthena SVN +//= Any Athena Version //===== Description: ========================================= //= Official kRO monster spawns //===== Additional Comments: ================================= diff --git a/npc/re/mobs/fields/dicastes.txt b/npc/re/mobs/fields/dicastes.txt index 82f71bd21..1387f1236 100644 --- a/npc/re/mobs/fields/dicastes.txt +++ b/npc/re/mobs/fields/dicastes.txt @@ -1,11 +1,11 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= El Dicastes Fields Monster Spawn Script //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== -//= rAthena SVN +//= eAthena SVN //===== Additional Comments: ================================= //= 1.0 Official spawns from Aegis [Kisuka] //============================================================ diff --git a/npc/re/mobs/fields/einbroch.txt b/npc/re/mobs/fields/einbroch.txt index 518e1d218..48ed1500d 100644 --- a/npc/re/mobs/fields/einbroch.txt +++ b/npc/re/mobs/fields/einbroch.txt @@ -1,9 +1,9 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Einbroch Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 1.6 +//= 1.8 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= @@ -21,6 +21,7 @@ //= 1.5 Adjusted some spawns according to official info [Playtester] //= 1.6 More accurate spawns [Playtester] //= 1.7 Updated to Renewal Spawns [Kisuka] +//= 1.8 Updated Renewal Spawns [Streusel] //============================================================ //================================================== @@ -38,8 +39,8 @@ ein_fild03,0,0,0,0 monster Teddy Bear 1622,100,5000,0,0 ein_fild03,0,0,0,0 monster Venomous 1621,20,5000,0,0 ein_fild03,0,0,0,0 monster Noxious 1620,20,5000,0,0 ein_fild03,0,0,0,0 monster Pitman 1616,20,5000,0,0 -ein_fild03,0,0,0,0 monster Yellow Plant 1081,15,60000,30000,0 -ein_fild03,0,0,0,0 monster Green Plant 1080,15,60000,30000,0 +ein_fild03,0,0,0,0 monster Yellow Plant 1081,15,60000,30000,1 +ein_fild03,0,0,0,0 monster Green Plant 1080,15,60000,30000,1 //================================================== // ein_fild04 - Einbroch Field @@ -49,9 +50,9 @@ ein_fild04,0,0,0,0 monster Noxious 1620,30,5000,0,0 ein_fild04,0,0,0,0 monster Teddy Bear 1622,20,5000,0,0 ein_fild04,0,0,0,0 monster Demon Pungus 1378,15,5000,0,0 ein_fild04,0,0,0,0 monster Pitman 1616,10,5000,0,0 -ein_fild04,0,0,0,0 monster Red Plant 1078,10,60000,30000,0 -ein_fild04,0,0,0,0 monster Yellow Plant 1081,10,60000,30000,0 -ein_fild04,0,0,0,0 monster Green Plant 1080,10,60000,30000,0 +ein_fild04,0,0,0,0 monster Red Plant 1078,10,60000,30000,1 +ein_fild04,0,0,0,0 monster Yellow Plant 1081,10,60000,30000,1 +ein_fild04,0,0,0,0 monster Green Plant 1080,10,60000,30000,1 //================================================== // ein_fild05 - Einbroch Field @@ -67,8 +68,8 @@ ein_fild05,0,0,0,0 monster Pitman 1616,10,5000,0,0 //================================================== ein_fild06,0,0,0,0 monster Holden 1628,100,5000,0,0 ein_fild06,0,0,0,0 monster Metaling 1613,30,5000,0,0 -ein_fild06,0,0,0,0 monster Red Plant 1078,10,120000,60000,0 -ein_fild06,0,0,0,0 monster Yellow Plant 1081,10,120000,60000,0 +ein_fild06,0,0,0,0 monster Red Plant 1078,10,120000,60000,1 +ein_fild06,0,0,0,0 monster Yellow Plant 1081,10,120000,60000,1 ein_fild06,0,0,0,0 monster Black Mushroom 1084,5,120000,60000,0 //================================================== @@ -78,8 +79,8 @@ ein_fild07,0,0,0,0 monster Metaling 1613,90,5000,0,0 ein_fild07,0,0,0,0 monster Porcellio 1619,30,5000,0,0 ein_fild07,0,0,0,0 monster Holden 1628,10,5000,0,0 ein_fild07,0,0,0,0 monster Ungoliant 1618,1,86400000,86000000,0 -ein_fild07,0,0,0,0 monster Red Plant 1078,10,120000,60000,0 -ein_fild07,0,0,0,0 monster Yellow Plant 1081,10,120000,60000,0 +ein_fild07,0,0,0,0 monster Red Plant 1078,10,120000,60000,1 +ein_fild07,0,0,0,0 monster Yellow Plant 1081,10,120000,60000,1 ein_fild07,0,0,0,0 monster Red Mushroom 1085,10,120000,60000,0 //================================================== @@ -87,8 +88,8 @@ ein_fild07,0,0,0,0 monster Red Mushroom 1085,10,120000,60000,0 //================================================== ein_fild08,0,0,0,0 monster Metaling 1613,100,5000,0,0 ein_fild08,0,0,0,0 monster Porcellio 1619,30,5000,0,0 -ein_fild08,0,0,0,0 monster Red Plant 1078,10,120000,60000,0 -ein_fild08,0,0,0,0 monster Yellow Plant 1081,10,120000,60000,0 +ein_fild08,0,0,0,0 monster Red Plant 1078,10,120000,60000,1 +ein_fild08,0,0,0,0 monster Yellow Plant 1081,10,120000,60000,1 ein_fild08,0,0,0,0 monster Red Mushroom 1085,10,120000,60000,0 //================================================== @@ -96,10 +97,13 @@ ein_fild08,0,0,0,0 monster Red Mushroom 1085,10,120000,60000,0 //================================================== ein_fild09,0,0,0,0 monster Porcellio 1619,70,5000,0,0 ein_fild09,0,0,0,0 monster Metaling 1613,30,5000,0,0 -ein_fild09,0,0,0,0 monster Red Plant 1078,10,120000,60000,0 -ein_fild09,0,0,0,0 monster Yellow Plant 1081,10,120000,60000,0 +ein_fild09,0,0,0,0 monster Red Plant 1078,10,120000,60000,1 +ein_fild09,0,0,0,0 monster Yellow Plant 1081,10,120000,60000,1 ein_fild09,0,0,0,0 monster Red Mushroom 1085,10,120000,60000,0 //================================================== // ein_fild10 - Disabled on Renewal //================================================== +//ein_fild10,0,0,0,0 monster Red Plant 1078,20,120000,60000,1 +//ein_fild10,0,0,0,0 monster Yellow Plant 1081,20,120000,60000,1 +//ein_fild10,0,0,0,0 monster Blue Plant 1079,20,600000,300000,1 \ No newline at end of file diff --git a/npc/re/mobs/fields/geffen.txt b/npc/re/mobs/fields/geffen.txt index 8daf2793d..feb3a44aa 100644 --- a/npc/re/mobs/fields/geffen.txt +++ b/npc/re/mobs/fields/geffen.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Geffen Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) @@ -40,8 +40,8 @@ gef_fild02,0,0,0,0 monster Coco 1104,140,5000,0,0 gef_fild02,0,0,0,0 monster Poporing 1031,20,5000,0,0 gef_fild02,0,0,0,0 monster Horn 1128,20,5000,0,0 gef_fild02,0,0,0,0 monster Elder Willow 1033,20,5000,0,0 -gef_fild02,227,316,6,6 monster Green Plant 1080,8,360000,180000,1 gef_fild02,87,48,6,6 monster Red Mushroom 1085,5,360000,180000,1 +gef_fild02,227,316,6,6 monster Green Plant 1080,8,360000,180000,1 gef_fild02,215,209,2,1 monster Blue Plant 1079,2,360000,180000,1 gef_fild02,207,214,1,1 monster Blue Plant 1079,1,360000,180000,1 gef_fild02,220,214,1,1 monster Blue Plant 1079,1,360000,180000,1 @@ -199,4 +199,4 @@ gef_fild11,283,100,4,1 monster Black Mushroom 1084,3,360000,180000,1 //================================================== // gef_fild14 - Disabled on Renewal -//================================================== +//================================================== \ No newline at end of file diff --git a/npc/re/mobs/fields/gonryun.txt b/npc/re/mobs/fields/gonryun.txt index 60ac58acf..c1a198374 100644 --- a/npc/re/mobs/fields/gonryun.txt +++ b/npc/re/mobs/fields/gonryun.txt @@ -1,14 +1,15 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Gon Ryun Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 1.2 +//= 1.3 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= //= 1.1 Official kRO 10.1 spawns [Playtester] //= 1.2 Updated to Renewal Spawns [Kisuka] +//= 1.3 Updated Renewal Spawns [Streusel] //============================================================ //================================================== @@ -17,5 +18,5 @@ gon_fild01,0,0,0,0 monster Dumpling Child 1409,55,5000,0,0 gon_fild01,0,0,0,0 monster Baby Leopard 1415,40,5000,0,0 gon_fild01,0,0,0,0 monster Side Winder 1037,10,5000,0,0 -gon_fild01,0,0,0,0 monster Green Plant 1080,5,5000,0,0 -gon_fild01,0,0,0,0 monster Shining Plant 1083,1,5000,0,0 +gon_fild01,0,0,0,0 monster Green Plant 1080,5,10000,0,1 +gon_fild01,0,0,0,0 monster Shining Plant 1083,1,10000,0,1 \ No newline at end of file diff --git a/npc/re/mobs/fields/hugel.txt b/npc/re/mobs/fields/hugel.txt index 14b74aa17..f532c9bc6 100644 --- a/npc/re/mobs/fields/hugel.txt +++ b/npc/re/mobs/fields/hugel.txt @@ -1,9 +1,9 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Hugel Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 1.4 +//= 1.5 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= @@ -18,6 +18,7 @@ //= 1.2 Some 11.1 spawn updates [Playtester] //= 1.3 More accurate spawns [Playtester] //= 1.4 Updated to Renewal Spawns [Kisuka] +//= 1.5 Updated Renewal Spawns [Streusel] //============================================================ //================================================== @@ -48,10 +49,10 @@ hu_fild04,0,0,0,0 monster Novus 1718,100,5000,0,0 hu_fild04,0,0,0,0 monster Novus 1715,30,5000,0,0 hu_fild04,0,0,0,0 monster Geographer 1368,30,5000,0,0 hu_fild04,0,0,0,0 monster Dragon Egg 1721,20,5000,0,0 -hu_fild04,0,0,0,0 monster Green Plant 1080,10,0,0,0 -hu_fild04,0,0,0,0 monster Yellow Plant 1081,10,0,0,0 -hu_fild04,206,210,30,18 monster Blue Plant 1079,4,120000,600000,0 -hu_fild04,206,120,10,10 monster Blue Plant 1079,2,120000,600000,0 +hu_fild04,0,0,0,0 monster Green Plant 1080,10,10000,0,1 +hu_fild04,0,0,0,0 monster Yellow Plant 1081,10,10000,0,1 +hu_fild04,206,210,30,18 monster Blue Plant 1079,4,120000,600000,1 +hu_fild04,206,120,10,10 monster Blue Plant 1079,2,120000,600000,1 //================================================== // hu_fild05 - The Abyss Lake @@ -66,9 +67,10 @@ hu_fild05,0,0,0,0 monster Dragon Egg 1721,20,5000,0,0 hu_fild06,0,0,0,0 monster Shellfish 1074,50,5000,0,0 hu_fild06,0,0,0,0 monster Crab 1073,20,5000,0,0 hu_fild06,0,0,0,0 monster Aster 1266,20,5000,0,0 -hu_fild06,234,251,14,120 monster Green Plant 1080,10,600000,0,0 -hu_fild06,234,251,14,120 monster Yellow Plant 1081,10,600000,0,0 +hu_fild06,234,251,14,120 monster Green Plant 1080,10,600000,0,1 +hu_fild06,234,251,14,120 monster Yellow Plant 1081,10,600000,0,1 //================================================== // hu_fild07 - Disabled on Renewal //================================================== +//hu_fild07,0,0,0,0 monster Yellow Plant 1081,20,10000,0,1 \ No newline at end of file diff --git a/npc/re/mobs/fields/jawaii.txt b/npc/re/mobs/fields/jawaii.txt index b34fa815b..0c63c6312 100644 --- a/npc/re/mobs/fields/jawaii.txt +++ b/npc/re/mobs/fields/jawaii.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Jawaii the honeymoon Island Monster Spawn Script //===== By: ================================================== //= MasterOfMuppets (1.0) @@ -26,4 +26,4 @@ jawaii_in,128,121,1,4 monster Red Mushroom 1085,1,3000000,1200000,0 jawaii_in,124,76,1,1 monster Black Mushroom 1084,1,3600000,1200000,0 jawaii_in,72,74,5,1 monster Black Mushroom 1084,2,3000000,1200000,0 jawaii_in,73,117,4,4 monster Thief Bug Egg 1048,1,5400000,3000000,0 -jawaii_in,83,117,5,5 monster Thief Bug Egg 1048,1,4800000,2400000,0 +jawaii_in,83,117,5,5 monster Thief Bug Egg 1048,1,4800000,2400000,0 \ No newline at end of file diff --git a/npc/re/mobs/fields/lighthalzen.txt b/npc/re/mobs/fields/lighthalzen.txt index 2a8867b13..009274624 100644 --- a/npc/re/mobs/fields/lighthalzen.txt +++ b/npc/re/mobs/fields/lighthalzen.txt @@ -1,9 +1,11 @@ -//===== Hercules Script ====================================== +//===== eAthena Script ======================================= //= Lighthalzen Fields Monster Spawn Script //===== By: ================================================== -//= Muad_Dib, rAthena Dev Team +//= Muad_Dib, eAthena dev team //===== Current Version: ===================================== //= 1.6 +//===== Compatible With: ===================================== +//= Any Athena Version //===== Additional Comments: ================================= //= 1.0 by Muad_Dib (Prometheus Project) //= 1.1 Added Porcellio by MasterOfMuppets @@ -21,9 +23,9 @@ lhz_fild01,0,0,0,0 monster Rafflesia 1162,130,5000,0,0 lhz_fild01,0,0,0,0 monster Stem Worm 1215,35,5000,0,0 lhz_fild01,0,0,0,0 monster Metaling 1613,35,5000,0,0 -lhz_fild01,0,0,0,0 monster Red Plant 1078,10,60000,30000,0 -lhz_fild01,0,0,0,0 monster Yellow Plant 1081,10,60000,30000,0 -lhz_fild01,0,0,0,0 monster Green Plant 1080,10,60000,30000,0 +lhz_fild01,0,0,0,0 monster Red Plant 1078,10,60000,30000,1 +lhz_fild01,0,0,0,0 monster Yellow Plant 1081,10,60000,30000,1 +lhz_fild01,0,0,0,0 monster Green Plant 1080,10,60000,30000,1 //================================================== // lhz_fild02 - Lighthalzen Field (Grim Reaper's Valley) @@ -33,8 +35,8 @@ lhz_fild02,0,0,0,0 monster Breeze 1692,40,5000,0,0 lhz_fild02,0,0,0,0 monster Rafflesia 1162,20,5000,0,0 lhz_fild02,0,0,0,0 monster Metaling 1613,20,5000,0,0 lhz_fild02,0,0,0,0 monster Demon Pungus 1378,15,5000,0,0 -lhz_fild02,0,0,0,0 monster Yellow Plant 1081,15,60000,30000,0 -lhz_fild02,0,0,0,0 monster Green Plant 1080,15,60000,30000,0 +lhz_fild02,0,0,0,0 monster Yellow Plant 1081,15,60000,30000,1 +lhz_fild02,0,0,0,0 monster Green Plant 1080,15,60000,30000,1 //================================================== // lhz_fild03 - Lighthalzen Field @@ -44,5 +46,5 @@ lhz_fild03,0,0,0,0 monster Stem Worm 1215,20,5000,0,0 lhz_fild03,0,0,0,0 monster Rafflesia 1162,20,5000,0,0 lhz_fild03,0,0,0,0 monster Metaling 1613,20,5000,0,0 lhz_fild03,0,0,0,0 monster Demon Pungus 1378,15,5000,0,0 -lhz_fild03,0,0,0,0 monster Red Plant 1078,10,60000,30000,0 -lhz_fild03,0,0,0,0 monster Green Plant 1080,10,60000,30000,0 +lhz_fild03,0,0,0,0 monster Red Plant 1078,10,60000,30000,1 +lhz_fild03,0,0,0,0 monster Green Plant 1080,10,60000,30000,0 \ No newline at end of file diff --git a/npc/re/mobs/fields/louyang.txt b/npc/re/mobs/fields/louyang.txt index fd645faf3..d993f2876 100644 --- a/npc/re/mobs/fields/louyang.txt +++ b/npc/re/mobs/fields/louyang.txt @@ -1,15 +1,16 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Louyang Fields Monster Spawn Script //===== By: ================================================== //= Evera/Lorri //===== Current Version: ===================================== -//= 1.3 +//= 1.4 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= //= 1.1 updated by MasterOfMuppets //= 1.2 Official kRO 10.1 spawns [Playtester] //= 1.3 Updated to Renewal Spawns [Kisuka] +//= 1.4 Updated Renewal Spawns [Streusel] //============================================================ //================================================== @@ -19,4 +20,4 @@ lou_fild01,0,0,0,0 monster Mi Gao 1516,40,5000,0,0 lou_fild01,0,0,0,0 monster Mantis 1139,19,5000,0,0 lou_fild01,0,0,0,0 monster Geographer 1368,19,5000,0,0 lou_fild01,0,0,0,0 monster Black Mushroom 1084,5,5000,0,0 -lou_fild01,0,0,0,0 monster Yellow Plant 1081,10,5000,0,0 +lou_fild01,0,0,0,0 monster Yellow Plant 1081,10,10000,0,1 \ No newline at end of file diff --git a/npc/re/mobs/fields/lutie.txt b/npc/re/mobs/fields/lutie.txt index 19583ffe4..2ca535d67 100644 --- a/npc/re/mobs/fields/lutie.txt +++ b/npc/re/mobs/fields/lutie.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Lutie Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) diff --git a/npc/re/mobs/fields/malaya.txt b/npc/re/mobs/fields/malaya.txt index 908bf16fd..b8be85219 100644 --- a/npc/re/mobs/fields/malaya.txt +++ b/npc/re/mobs/fields/malaya.txt @@ -1,11 +1,11 @@ -//===== rAthena Script ======================================== +//===== eAthena Script ======================================== //= Malaya Port Field Monster Spawn Script //===== By: ================================================== //= Chilly //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== -//= rAthena SVN +//= Any Athena Version //===== Description: ========================================= //= Official kRO monster spawns //===== Additional Comments: ================================= @@ -15,15 +15,15 @@ //================================================== // ma_fild01 - Barrio Maligawa //================================================== -ma_fild01,0,0,0,0 monster Tikbalang 2313,70,0,0,0 -ma_fild01,0,0,0,0 monster Tiyanak 2314,50,0,0,0 -ma_fild01,0,0,0,0 monster Jejeling 2316,30,0,0,0 +ma_fild01,0,0,0,0 monster Tikbalang 2313,50,0,0,0 +ma_fild01,0,0,0,0 monster Tiyanak 2314,40,0,0,0 +ma_fild01,0,0,0,0 monster Jejeling 2316,20,0,0,0 //================================================== // ma_fild02 - Malaya Forest //================================================== -ma_fild02,0,0,0,0 monster Bungisngis 2309,70,0,0,0 -ma_fild02,0,0,0,0 monster Engkanto 2310,50,0,0,0 +ma_fild02,0,0,0,0 monster Bungisngis 2309,40,0,0,0 +ma_fild02,0,0,0,0 monster Engkanto 2310,15,0,0,0 ma_fild02,0,0,0,0 monster Mangkukulam 2312,20,0,0,0 ma_fild02,0,0,0,0 monster Jejeling 2316,10,0,0,0 -ma_fild02,0,0,0,0 monster Wakwak 2315,10,0,0,0 +ma_fild02,0,0,0,0 monster Wakwak 2315,25,0,0,0 diff --git a/npc/re/mobs/fields/manuk.txt b/npc/re/mobs/fields/manuk.txt index 92f9866a1..75dbbd68b 100644 --- a/npc/re/mobs/fields/manuk.txt +++ b/npc/re/mobs/fields/manuk.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Manuk Fields Monster Spawn Script //===== By: ================================================== //= alexx, MaC @@ -33,4 +33,4 @@ man_fild02,0,0,0,0 monster Tatacho 1986,25,5000,0,0 man_fild03,0,0,0,0 monster Hillslion 1989,25,5000,0,0 man_fild03,0,0,0,0 monster Tatacho 1986,25,5000,0,0 man_fild03,0,0,0,0 monster Centipede 1987,25,5000,0,0 -man_fild03,0,0,0,0 monster Hardrock Mammoth 1990,1,14400000,0,0 +man_fild03,0,0,0,0 monster Hardrock Mammoth 1990,1,14400000,0,0 \ No newline at end of file diff --git a/npc/re/mobs/fields/mjolnir.txt b/npc/re/mobs/fields/mjolnir.txt index e2483c2a8..ee5ab7ffb 100644 --- a/npc/re/mobs/fields/mjolnir.txt +++ b/npc/re/mobs/fields/mjolnir.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Mt. Mjolnir Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) @@ -226,4 +226,4 @@ mjolnir_11,295,271,0,0 monster Green Plant 1080,1,180000,90000,1 //================================================== mjolnir_12,0,0,0,0 monster Dustiness 1114,130,5000,0,0 mjolnir_12,0,0,0,0 monster Hunter Fly 1035,35,5000,0,0 -mjolnir_12,0,0,0,0 monster Mantis 1139,35,5000,0,0 +mjolnir_12,0,0,0,0 monster Mantis 1139,35,5000,0,0 \ No newline at end of file diff --git a/npc/re/mobs/fields/morocc.txt b/npc/re/mobs/fields/morocc.txt index 774e342da..85bb02286 100644 --- a/npc/re/mobs/fields/morocc.txt +++ b/npc/re/mobs/fields/morocc.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Morocc Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) @@ -216,4 +216,4 @@ moc_fild22,0,0,0,0 monster Incarnation of Morroc 1918,60,30000,0,0 moc_fild22,0,0,0,0 monster Incarnation of Morroc 1919,60,30000,0,0 moc_fild22,0,0,0,0 monster Incarnation of Morroc 1920,60,30000,0,0 moc_fild22,0,0,0,0 monster Incarnation of Morroc 1921,25,10000,0,0 -moc_fild22,0,0,0,0 boss_monster Wounded Morroc 1917,1,43200000,600000,0 +moc_fild22,0,0,0,0 boss_monster Wounded Morroc 1917,1,43200000,600000,0 \ No newline at end of file diff --git a/npc/re/mobs/fields/moscovia.txt b/npc/re/mobs/fields/moscovia.txt index 1edaf0464..8dd5d9054 100644 --- a/npc/re/mobs/fields/moscovia.txt +++ b/npc/re/mobs/fields/moscovia.txt @@ -1,14 +1,15 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Moscovia Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 1.1 +//= 1.2 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= //= 1.0 Added spawns [Playtester] //= 1.1 Updated to Renewal Spawns [Kisuka] +//= 1.2 Updated Renewal Spawns. [Streusel] //============================================================ //================================================== @@ -18,5 +19,5 @@ mosk_fild02,0,0,0,0 monster Side Winder 1037,40,5000,0,0 mosk_fild02,0,0,0,0 monster Argiope 1099,30,5000,0,0 mosk_fild02,0,0,0,0 monster Mantis 1139,10,5000,0,0 mosk_fild02,0,0,0,0 monster Geographer 1368,5,5000,0,0 -mosk_fild02,0,0,0,0 monster Yellow Plant 1081,5,5000,0,0 -mosk_fild02,0,0,0,0 monster White Plant 1082,5,10000,0,0 +mosk_fild02,0,0,0,0 monster Yellow Plant 1081,5,10000,0,1 +mosk_fild02,0,0,0,0 monster White Plant 1082,5,10000,0,1 \ No newline at end of file diff --git a/npc/re/mobs/fields/niflheim.txt b/npc/re/mobs/fields/niflheim.txt index 1c8c2340e..b9a39c446 100644 --- a/npc/re/mobs/fields/niflheim.txt +++ b/npc/re/mobs/fields/niflheim.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Niflheim Monster Spawn Script //===== By: ================================================== //= Athena (1.0) diff --git a/npc/re/mobs/fields/payon.txt b/npc/re/mobs/fields/payon.txt index 0f97f0265..4b3df0331 100644 --- a/npc/re/mobs/fields/payon.txt +++ b/npc/re/mobs/fields/payon.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Payon Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) @@ -43,8 +43,8 @@ pay_fild01,0,0,0,0 monster Green Plant 1080,5,180000,90000,1 pay_fild02,0,0,0,0 monster Boa 1025,140,5000,0,0 pay_fild02,0,0,0,0 monster Wormtail 1024,30,5000,0,0 pay_fild02,0,0,0,0 monster Spore 1014,30,5000,0,0 -pay_fild02,105,256,10,10 monster Green Plant 1080,4,360000,180000,1 pay_fild02,105,256,10,10 monster Red Mushroom 1085,4,360000,180000,1 +pay_fild02,105,256,10,10 monster Green Plant 1080,4,360000,180000,1 //================================================== // pay_fild03 - Payon Forest @@ -73,6 +73,8 @@ pay_fild04,254,193,10,10 monster Green Plant 1080,5,360000,180000,1 //================================================== // pay_fild05 - Disabled on Renewal //================================================== +//pay_fild05,95,147,5,5 monster Green Plant 1080,4,900000,450000,1 +//pay_fild05,86,90,5,5 monster Green Plant 1080,4,900000,450000,1 //================================================== // pay_fild06 - Payon Forest @@ -108,7 +110,7 @@ pay_fild08,143,156,40,40 monster Shining Plant 1083,1,3600000,1800000,1 pay_fild09,0,0,0,0 monster Elder Willow 1033,140,5000,0,0 pay_fild09,0,0,0,0 monster Horn 1128,30,5000,0,0 pay_fild09,0,0,0,0 monster Coco 1104,30,5000,0,0 -pay_fild09,198,217,30,30 monster Green Plant 1080,10,360000,180000,0 +pay_fild09,198,217,30,30 monster Green Plant 1080,10,360000,180000,1 pay_fild09,198,217,30,30 monster Shining Plant 1083,1,1800000,900000,1 //================================================== @@ -127,4 +129,4 @@ pay_fild10,66,332,10,10 monster Blue Plant 1079,1,360000,180000,1 //================================================== // pay_fild11 - Disabled on Renewal -//================================================== +//================================================== \ No newline at end of file diff --git a/npc/re/mobs/fields/prontera.txt b/npc/re/mobs/fields/prontera.txt index c2c2d7852..13c9258f0 100644 --- a/npc/re/mobs/fields/prontera.txt +++ b/npc/re/mobs/fields/prontera.txt @@ -1,9 +1,9 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Prontera Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 1.5 +//= 1.6 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= @@ -11,6 +11,7 @@ //= 1.3 Official kRO 10.1 spawns [Playtester] //= 1.4 More accurate spawns [Playtester] //= 1.5 Updated to Renewal spawns. +//= 1.6 Updated Renewal Spawns [Streusel] //============================================================ //================================================== @@ -51,7 +52,7 @@ prt_fild03,0,0,0,0 monster Choco 1214,1,5000,0,0 prt_fild03,296,58,15,15 monster Green Plant 1080,5,180000,90000,1 prt_fild03,296,58,15,15 monster Blue Plant 1079,2,900000,450000,1 prt_fild03,307,75,5,5 monster Green Plant 1080,5,360000,180000,1 -prt_fild03,0,0,0,0 monster Green Plant 1080,5,360000,180000,1 +prt_fild03,147,219,5,5 monster Green Plant 1080,5,360000,180000,1 prt_fild03,148,107,5,5 monster Green Plant 1080,5,360000,180000,1 //================================================== @@ -77,7 +78,7 @@ prt_fild05,208,37,10,10 monster Blue Plant 1079,1,900000,450000,1 prt_fild06,0,0,0,0 monster Fabre 1007,140,5000,0,0 prt_fild06,0,0,0,0 monster Poring 1002,30,5000,0,0 prt_fild06,0,0,0,0 monster Lunatic 1063,30,5000,0,0 -//prt_fild06,222,30,40,10 monster Green Plant 1080,15,900000,450000,1 // Commented the Line since those Plants can't spawn anyway. Maybe Gravity will fix it someday... [Masao] +prt_fild06,222,30,40,10 monster Green Plant 1080,15,900000,450000,1 //================================================== // prt_fild07 - Prontera Field @@ -123,4 +124,4 @@ prt_fild11,0,0,0,0 monster Goblin 1125,10,5000,0,0 prt_fild11,0,0,0,0 monster Goblin 1123,10,5000,0,0 prt_fild11,0,0,0,0 monster Goblin 1122,10,5000,0,0 prt_fild11,0,0,0,0 monster Panzer Goblin 1308,1,1800000,1200000,0 -prt_fild11,0,0,0,0 monster Red Mushroom 1085,10,180000,90000,1 +prt_fild11,0,0,0,0 monster Red Mushroom 1085,10,180000,90000,1 \ No newline at end of file diff --git a/npc/re/mobs/fields/rachel.txt b/npc/re/mobs/fields/rachel.txt index 92708aa5e..fbfb6d7f6 100644 --- a/npc/re/mobs/fields/rachel.txt +++ b/npc/re/mobs/fields/rachel.txt @@ -1,9 +1,9 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Rachel Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 1.4 +//= 1.5 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= @@ -12,6 +12,7 @@ //= 1.2 More accurate spawns [Playtester] //= 1.3 Corrected MVP spawn variance. [L0ne_W0lf] //= 1.4 Updated to Renewal Spawns [Kisuka] +//= 1.5 Updated Renewal Spawns [Streusel] //============================================================ //================================================== @@ -86,6 +87,8 @@ ra_fild08,0,0,0,0 monster Anopheles 1627,10,5000,0,0 //================================================== // ra_fild11 - Disabled on Renewal //================================================== +//ra_fild11,0,0,0,0 monster Yellow Plant 1081,15,10000,0,1 +//ra_fild11,0,0,0,0 monster Red Plant 1078,5,10000,0,1 //================================================== // ra_fild12 - The Plain of Ida @@ -93,9 +96,9 @@ ra_fild08,0,0,0,0 monster Anopheles 1627,10,5000,0,0 ra_fild12,0,0,0,0 monster Roween 1782,130,5000,0,0 ra_fild12,0,0,0,0 monster Anopheles 1627,30,5000,0,0 ra_fild12,0,0,0,0 monster Baby Desert Wolf 1107,15,5000,0,0 -ra_fild12,0,0,0,0 monster Yellow Plant 1081,15,5000,0,1 -ra_fild12,0,0,0,0 monster Red Plant 1078,5,5000,0,1 +ra_fild12,0,0,0,0 monster Yellow Plant 1081,15,10000,0,1 +ra_fild12,0,0,0,0 monster Red Plant 1078,5,10000,0,1 //================================================== // ra_fild13 - Disabled on Renewal -//================================================== +//================================================== \ No newline at end of file diff --git a/npc/re/mobs/fields/splendide.txt b/npc/re/mobs/fields/splendide.txt index c9f41b1e7..00afa5f8c 100644 --- a/npc/re/mobs/fields/splendide.txt +++ b/npc/re/mobs/fields/splendide.txt @@ -1,4 +1,4 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Splendide Fields Monster Spawn Script //===== By: ================================================== //= alexx, MaC @@ -22,6 +22,8 @@ spl_fild01,0,0,0,0 monster Cornus 1992,25,5000,0,0 // spl_fild02 - Splendide Field //================================================== spl_fild02,0,0,0,0 monster Pinguicula 1995,75,5000,0,0 +spl_fild02,0,0,0,0 monster Bradium Golem 2024,20,5000,0,0 +spl_fild02,0,0,0,0 monster Naga 1993,20,5000,0,0 spl_fild02,0,0,0,0 monster Luciola Vespa 1994,15,5000,0,0 //================================================== @@ -30,4 +32,4 @@ spl_fild02,0,0,0,0 monster Luciola Vespa 1994,15,5000,0,0 spl_fild03,0,0,0,0 monster Luciola Vespa 1994,35,5000,0,0 spl_fild03,0,0,0,0 monster Cornus 1992,25,5000,0,0 spl_fild03,0,0,0,0 monster Naga 1993,20,5000,0,0 -spl_fild03,0,0,0,0 monster Tendrilion 1991,1,3600000,0,0 +spl_fild03,0,0,0,0 monster Tendrilion 1991,1,3600000,0,0 \ No newline at end of file diff --git a/npc/re/mobs/fields/umbala.txt b/npc/re/mobs/fields/umbala.txt index 85c4dafb8..033ee1abe 100644 --- a/npc/re/mobs/fields/umbala.txt +++ b/npc/re/mobs/fields/umbala.txt @@ -1,11 +1,11 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Umbala Fields Monster Spawn Script //===== By: ================================================== //= Darkchild (1.0) //===== Current Version: ===================================== //= 1.5 //===== Compatible With: ===================================== -//= Any rAthena Version; RO Ep6+ +//= Any eAthena Version; RO Ep6+ //===== Additional Comments: ================================= //= 1.3 Official kRO 10.1 spawns [Playtester] //= 1.4 More accurate spawns [Playtester] @@ -23,6 +23,7 @@ um_fild01,0,0,0,0 monster Wooden Golem 1497,10,5000,0,0 um_fild01,0,0,0,0 monster Green Plant 1080,10,180000,90000,1 um_fild01,0,0,0,0 monster Yellow Plant 1081,10,180000,90000,1 um_fild01,0,0,0,0 monster Shining Plant 1083,5,180000,90000,1 +um_fild01,0,0,0,0 monster Shining Plant 1083,1,180000,90000,1 //================================================== // um_fild02 - Hoomga Forest @@ -55,5 +56,4 @@ um_fild04,0,0,0,0 monster Wootan Fighter 1499,5,5000,0,0 um_fild04,0,0,0,0 monster Wooden Golem 1497,10,5000,0,0 um_fild04,0,0,0,0 monster Choco 1214,2,5000,0,0 um_fild04,0,0,0,0 monster Red Plant 1078,5,180000,90000,1 -um_fild04,0,0,0,0 monster Yellow Plant 1081,5,180000,90000,1 -um_fild01,0,0,0,0 monster Shining Plant 1083,1,180000,90000,1 +um_fild04,0,0,0,0 monster Yellow Plant 1081,5,180000,90000,1 \ No newline at end of file diff --git a/npc/re/mobs/fields/veins.txt b/npc/re/mobs/fields/veins.txt index 0ab4ecf58..eb54412a9 100644 --- a/npc/re/mobs/fields/veins.txt +++ b/npc/re/mobs/fields/veins.txt @@ -1,9 +1,9 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Veins Fields Monster Spawn Script //===== By: ================================================== //= $ephiroth //===== Current Version: ===================================== -//= 1.8 +//= 1.9 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= @@ -16,6 +16,7 @@ //= 1.6 Even more accurate spawns [Playtester] //= 1.7 Corrected MVP spawn variance. [Gepard] //= 1.8 Updated to Renewal Spawns. [Kisuka] +//= 1.9 Updated Renewal Spawns. [Streusel] //============================================================ //================================================== @@ -26,10 +27,10 @@ ve_fild01,0,0,0,0 monster Stapo 1784,20,5000,0,0 ve_fild01,0,0,0,0 monster Drosera 1781,20,5000,0,0 ve_fild01,0,0,0,0 monster Muscipular 1780,20,5000,0,0 ve_fild01,0,0,0,0 boss_monster Atroce 1785,1,10800000,600000,0 -ve_fild01,0,0,0,0 monster Red Plant 1078,10,5000,0,0 -ve_fild01,0,0,0,0 monster Yellow Plant 1081,10,5000,0,0 -ve_fild01,270,80,20,7 monster Blue Plant 1079,4,840000,0,0 -ve_fild01,270,80,20,7 monster Shining Plant 1083,1,960000,0,0 +ve_fild01,0,0,0,0 monster Red Plant 1078,10,10000,0,1 +ve_fild01,0,0,0,0 monster Yellow Plant 1081,10,10000,0,1 +ve_fild01,270,80,20,7 monster Blue Plant 1079,4,840000,0,1 +ve_fild01,270,80,20,7 monster Shining Plant 1083,1,960000,0,1 //================================================== // ve_fild02 - Veins Field @@ -38,8 +39,8 @@ ve_fild02,0,0,0,0 monster Drosera 1781,130,5000,0,0 ve_fild02,0,0,0,0 monster Muscipular 1780,20,5000,0,0 ve_fild02,0,0,0,0 monster Galion 1783,10,5000,0,0 ve_fild02,120,55,50,50 boss_monster Atroce 1785,1,21600000,600000,0 -ve_fild02,0,0,0,0 monster Red Plant 1078,10,5000,0,0 -ve_fild02,0,0,0,0 monster Yellow Plant 1081,10,5000,0,0 +ve_fild02,0,0,0,0 monster Red Plant 1078,10,10000,0,1 +ve_fild02,0,0,0,0 monster Yellow Plant 1081,10,10000,0,1 //================================================== // ve_fild03 - Veins Field @@ -47,8 +48,8 @@ ve_fild02,0,0,0,0 monster Yellow Plant 1081,10,5000,0,0 ve_fild03,0,0,0,0 monster Magmaring 1836,130,5000,0,0 ve_fild03,0,0,0,0 monster Muscipular 1780,35,5000,0,0 ve_fild03,0,0,0,0 monster Drosera 1781,35,5000,0,0 -ve_fild03,200,212,114,60 monster Red Plant 1078,10,0,0,0 -ve_fild03,0,0,0,0 monster Yellow Plant 1081,10,0,0,0 +ve_fild03,200,212,114,60 monster Red Plant 1078,10,10000,0,1 +ve_fild03,0,0,0,0 monster Yellow Plant 1081,10,10000,0,1 //================================================== // ve_fild04 - Veins Field @@ -56,16 +57,19 @@ ve_fild03,0,0,0,0 monster Yellow Plant 1081,10,0,0,0 ve_fild04,0,0,0,0 monster Muscipular 1780,100,5000,0,0 ve_fild04,0,0,0,0 monster Drosera 1781,50,5000,0,0 ve_fild04,0,0,0,0 monster Galion 1783,20,5000,0,0 -ve_fild04,288,273,4,4 monster Blue Plant 1079,3,660000,0,0 +ve_fild04,0,0,0,0 monster Yellow Plant 1081,10,10000,0,1 +ve_fild04,288,273,4,4 monster Blue Plant 1079,3,660000,0,1 //================================================== // ve_fild05 - Disabled on Renewal //================================================== +//ve_fild05,152,139,15,17 monster White Plant 1082,5,1800000,0,1 +//ve_fild05,152,139,5,5 monster Shining Plant 1083,1,2400000,0,1 //================================================== // ve_fild06 - Veins Field - No spawns on Renewal //================================================== -ve_fild06,0,0,0,0 monster Shining Plant 1083,1,5000,0,0 +//ve_fild06,0,0,0,0 monster Shining Plant 1083,1,1020000,0,1 //================================================== // ve_fild07 - Veins Field @@ -73,4 +77,4 @@ ve_fild06,0,0,0,0 monster Shining Plant 1083,1,5000,0,0 ve_fild07,0,0,0,0 monster Stapo 1784,100,5000,0,0 ve_fild07,0,0,0,0 monster Drosera 1781,50,5000,0,0 ve_fild07,0,0,0,0 monster Muscipular 1780,30,5000,0,0 -ve_fild07,0,0,0,0 monster White Plant 1082,10,600000,0,0 +ve_fild07,0,0,0,0 monster White Plant 1082,10,600000,0,1 \ No newline at end of file diff --git a/npc/re/mobs/fields/yuno.txt b/npc/re/mobs/fields/yuno.txt index b5ea8aea2..74e283cb8 100644 --- a/npc/re/mobs/fields/yuno.txt +++ b/npc/re/mobs/fields/yuno.txt @@ -1,9 +1,9 @@ -//===== rAthena Script ======================================= +//===== eAthena Script ======================================= //= Yuno Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 2.0 +//= 2.1 //===== Compatible With: ===================================== //= Any Athena Version //===== Additional Comments: ================================= @@ -21,6 +21,7 @@ //= 1.8 Added kRO 10.1 spawns where they fit [Playtester] //= 1.9 More accurate spawns [Playtester] //= 2.0 Updated spawns to renewal. [L0ne_W0lf] +//= 2.1 Updated Renewal Spawns. [Streusel] //============================================================ //================================================== @@ -77,15 +78,20 @@ yuno_fild04,0,0,0,0 monster Green Plant 1080,10,1800000,900000,1 //================================================== // yuno_fild05 - Disabled on Renewal //================================================== +//yuno_fild05,0,0,0,0 monster Red Plant 1078,10,180000,90000,1 +//yuno_fild05,0,0,0,0 monster Green Plant 1080,10,180000,90000,1 +//yuno_fild05,0,0,0,0 monster Yellow Plant 1081,10,180000,90000,1 +//yuno_fild05,176,202,8,8 monster Blue Plant 1079,2,180000,90000,1 +//yuno_fild05,300,280,5,5 monster Blue Plant 1079,2,180000,90000,1 //================================================== // yuno_fild06 - El Mes Plateau //================================================== yuno_fild06,0,0,0,0 monster Sleeper 1386,80,5000,0,0 yuno_fild06,0,0,0,0 monster Geographer 1368,20,5000,0,0 -yuno_fild06,0,0,0,0 monster Red Plant 1078,10,5000,0,0 -yuno_fild06,0,0,0,0 monster Yellow Plant 1081,10,5000,0,0 -yuno_fild06,0,0,0,0 monster Green Plant 1080,10,5000,0,0 +yuno_fild06,0,0,0,0 monster Red Plant 1078,10,10000,0,1 +yuno_fild06,0,0,0,0 monster Yellow Plant 1081,10,10000,0,1 +yuno_fild06,0,0,0,0 monster Green Plant 1080,10,10000,0,1 //================================================== // yuno_fild07 - El Mes Gorge (Valley of Abyss) @@ -134,4 +140,4 @@ yuno_fild11,0,0,0,0 monster Yellow Plant 1081,10,180000,90000,1 // yuno_fild12 - Border Checkpoint //================================================== yuno_fild12,0,0,0,0 monster Geographer 1368,60,5000,0,0 -yuno_fild12,0,0,0,0 monster Mantis 1139,30,5000,0,0 +yuno_fild12,0,0,0,0 monster Mantis 1139,30,5000,0,0 \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 2a4c1f91b8a59ca62b4a07a5676aa5ca3052aec6 Mon Sep 17 00:00:00 2001 From: Streusel Date: Thu, 7 Feb 2013 22:01:01 -0800 Subject: Updated accidental header reversion --- npc/re/mobs/fields/amatsu.txt | 4 +--- npc/re/mobs/fields/ayothaya.txt | 4 +--- npc/re/mobs/fields/bifrost.txt | 4 +--- npc/re/mobs/fields/brasilis.txt | 4 +--- npc/re/mobs/fields/comodo.txt | 4 +--- npc/re/mobs/fields/dewata.txt | 4 +--- npc/re/mobs/fields/dicastes.txt | 4 +--- npc/re/mobs/fields/einbroch.txt | 4 +--- npc/re/mobs/fields/geffen.txt | 4 +--- npc/re/mobs/fields/gonryun.txt | 4 +--- npc/re/mobs/fields/hugel.txt | 4 +--- npc/re/mobs/fields/jawaii.txt | 4 +--- npc/re/mobs/fields/lighthalzen.txt | 4 +--- npc/re/mobs/fields/louyang.txt | 4 +--- npc/re/mobs/fields/lutie.txt | 4 +--- npc/re/mobs/fields/malaya.txt | 4 +--- npc/re/mobs/fields/manuk.txt | 4 +--- npc/re/mobs/fields/mjolnir.txt | 4 +--- npc/re/mobs/fields/morocc.txt | 4 +--- npc/re/mobs/fields/moscovia.txt | 4 +--- npc/re/mobs/fields/niflheim.txt | 4 +--- npc/re/mobs/fields/payon.txt | 4 +--- npc/re/mobs/fields/prontera.txt | 4 +--- npc/re/mobs/fields/rachel.txt | 4 +--- npc/re/mobs/fields/splendide.txt | 4 +--- npc/re/mobs/fields/umbala.txt | 4 +--- npc/re/mobs/fields/veins.txt | 4 +--- npc/re/mobs/fields/yuno.txt | 4 +--- 28 files changed, 28 insertions(+), 84 deletions(-) diff --git a/npc/re/mobs/fields/amatsu.txt b/npc/re/mobs/fields/amatsu.txt index f97c2b1a8..86e96f337 100644 --- a/npc/re/mobs/fields/amatsu.txt +++ b/npc/re/mobs/fields/amatsu.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Amatsu Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.4 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 replaced Hydra -> G_Hydra (to fix drops exploit) [Lupus] //= 1.2 Official kRO 10.1 spawns [Playtester] diff --git a/npc/re/mobs/fields/ayothaya.txt b/npc/re/mobs/fields/ayothaya.txt index 3bd9c8176..cef980e7d 100644 --- a/npc/re/mobs/fields/ayothaya.txt +++ b/npc/re/mobs/fields/ayothaya.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Ayothaya Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.6 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 Using EuRO data [Ishizu] //= 1.2 According the guide book, added a Choco [Lupus&VP] diff --git a/npc/re/mobs/fields/bifrost.txt b/npc/re/mobs/fields/bifrost.txt index b57ca31d2..b5d04f4a7 100644 --- a/npc/re/mobs/fields/bifrost.txt +++ b/npc/re/mobs/fields/bifrost.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================== +//===== Hercules Script ====================================== //= Bifrost Monster Spawn Script //===== By: ================================================== //= Chilly //===== Current Version: ===================================== //= 1.1 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Description: ========================================= //= Official monster spawn in Bifrost Field. //===== Additional Comments: ================================= diff --git a/npc/re/mobs/fields/brasilis.txt b/npc/re/mobs/fields/brasilis.txt index 015a39347..82dc93441 100644 --- a/npc/re/mobs/fields/brasilis.txt +++ b/npc/re/mobs/fields/brasilis.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Brasilis Fields Monster Spawn Script //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== //= 1.0 -//===== Compatible With: ===================================== -//= eAthena SVN //===== Additional Comments: ================================= //= 1.0 Official spawns from Aegis [Kisuka] //============================================================ diff --git a/npc/re/mobs/fields/comodo.txt b/npc/re/mobs/fields/comodo.txt index f53e5ca3f..ae4ddedeb 100644 --- a/npc/re/mobs/fields/comodo.txt +++ b/npc/re/mobs/fields/comodo.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Comodo Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.4 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.2 Official kRO 10.1 spawns [Playtester] //= 1.3 More accurate spawns [Playtester] diff --git a/npc/re/mobs/fields/dewata.txt b/npc/re/mobs/fields/dewata.txt index 5a5abdff6..58118c4dc 100644 --- a/npc/re/mobs/fields/dewata.txt +++ b/npc/re/mobs/fields/dewata.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================== +//===== Hercules Script ====================================== //= Dewata Field Monster Spawn Script //===== By: ================================================== //= Chilly //===== Current Version: ===================================== //= 1.0 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Description: ========================================= //= Official kRO monster spawns //===== Additional Comments: ================================= diff --git a/npc/re/mobs/fields/dicastes.txt b/npc/re/mobs/fields/dicastes.txt index 1387f1236..9d778c891 100644 --- a/npc/re/mobs/fields/dicastes.txt +++ b/npc/re/mobs/fields/dicastes.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= El Dicastes Fields Monster Spawn Script //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== //= 1.0 -//===== Compatible With: ===================================== -//= eAthena SVN //===== Additional Comments: ================================= //= 1.0 Official spawns from Aegis [Kisuka] //============================================================ diff --git a/npc/re/mobs/fields/einbroch.txt b/npc/re/mobs/fields/einbroch.txt index 48ed1500d..f31395f3b 100644 --- a/npc/re/mobs/fields/einbroch.txt +++ b/npc/re/mobs/fields/einbroch.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Einbroch Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.8 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 correct spawn maps, but not yet exact amount of //= monsters [Lupus] diff --git a/npc/re/mobs/fields/geffen.txt b/npc/re/mobs/fields/geffen.txt index feb3a44aa..35ff2e814 100644 --- a/npc/re/mobs/fields/geffen.txt +++ b/npc/re/mobs/fields/geffen.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Geffen Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.6 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.2 Map names typos fix [Lupus] //= 1.3 Official kRO 10.1 spawns + future changes [Playtester] diff --git a/npc/re/mobs/fields/gonryun.txt b/npc/re/mobs/fields/gonryun.txt index c1a198374..290524caa 100644 --- a/npc/re/mobs/fields/gonryun.txt +++ b/npc/re/mobs/fields/gonryun.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Gon Ryun Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.3 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 Official kRO 10.1 spawns [Playtester] //= 1.2 Updated to Renewal Spawns [Kisuka] diff --git a/npc/re/mobs/fields/hugel.txt b/npc/re/mobs/fields/hugel.txt index f532c9bc6..852d35e4e 100644 --- a/npc/re/mobs/fields/hugel.txt +++ b/npc/re/mobs/fields/hugel.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Hugel Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.5 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= Spawns for hu_fild05 and hu_fild04, numbers may not be correct [MasterOfMuppets] //= 0.2 Fixed Petit ID diff --git a/npc/re/mobs/fields/jawaii.txt b/npc/re/mobs/fields/jawaii.txt index 0c63c6312..14490c698 100644 --- a/npc/re/mobs/fields/jawaii.txt +++ b/npc/re/mobs/fields/jawaii.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Jawaii the honeymoon Island Monster Spawn Script //===== By: ================================================== //= MasterOfMuppets (1.0) //===== Current Version: ===================================== //= 1.0 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.0 First version [MasterOfMuppets] //============================================================ diff --git a/npc/re/mobs/fields/lighthalzen.txt b/npc/re/mobs/fields/lighthalzen.txt index 009274624..ad7019a81 100644 --- a/npc/re/mobs/fields/lighthalzen.txt +++ b/npc/re/mobs/fields/lighthalzen.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Lighthalzen Fields Monster Spawn Script //===== By: ================================================== //= Muad_Dib, eAthena dev team //===== Current Version: ===================================== //= 1.6 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.0 by Muad_Dib (Prometheus Project) //= 1.1 Added Porcellio by MasterOfMuppets diff --git a/npc/re/mobs/fields/louyang.txt b/npc/re/mobs/fields/louyang.txt index d993f2876..586b49960 100644 --- a/npc/re/mobs/fields/louyang.txt +++ b/npc/re/mobs/fields/louyang.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Louyang Fields Monster Spawn Script //===== By: ================================================== //= Evera/Lorri //===== Current Version: ===================================== //= 1.4 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 updated by MasterOfMuppets //= 1.2 Official kRO 10.1 spawns [Playtester] diff --git a/npc/re/mobs/fields/lutie.txt b/npc/re/mobs/fields/lutie.txt index 2ca535d67..99db7de31 100644 --- a/npc/re/mobs/fields/lutie.txt +++ b/npc/re/mobs/fields/lutie.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Lutie Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.4 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 added Garm Baby according to May 10 patch //= 1.2 Official kRO 10.1 spawns [Playtester] diff --git a/npc/re/mobs/fields/malaya.txt b/npc/re/mobs/fields/malaya.txt index b8be85219..2cf027f44 100644 --- a/npc/re/mobs/fields/malaya.txt +++ b/npc/re/mobs/fields/malaya.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================== +//===== Hercules Script ====================================== //= Malaya Port Field Monster Spawn Script //===== By: ================================================== //= Chilly //===== Current Version: ===================================== //= 1.0 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Description: ========================================= //= Official kRO monster spawns //===== Additional Comments: ================================= diff --git a/npc/re/mobs/fields/manuk.txt b/npc/re/mobs/fields/manuk.txt index 75dbbd68b..e27d7f6c6 100644 --- a/npc/re/mobs/fields/manuk.txt +++ b/npc/re/mobs/fields/manuk.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Manuk Fields Monster Spawn Script //===== By: ================================================== //= alexx, MaC //===== Current Version: ===================================== //= 1.1a -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.0 Official spawn ammounts from Aegis script [alexx] //= 1.1 Added 13.2 mob spawn update [scriptor] diff --git a/npc/re/mobs/fields/mjolnir.txt b/npc/re/mobs/fields/mjolnir.txt index ee5ab7ffb..58fba9422 100644 --- a/npc/re/mobs/fields/mjolnir.txt +++ b/npc/re/mobs/fields/mjolnir.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Mt. Mjolnir Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.3 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.2 Official kRO 10.1 spawns [Playtester] //= 1.3 Updated to renewal spawns. [L0ne_W0lf] diff --git a/npc/re/mobs/fields/morocc.txt b/npc/re/mobs/fields/morocc.txt index 85bb02286..3e71b0846 100644 --- a/npc/re/mobs/fields/morocc.txt +++ b/npc/re/mobs/fields/morocc.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Morocc Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.8 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 Official kRO 10.1 spawns [Playtester] //= 1.2 More accurate spawns [Playtester] diff --git a/npc/re/mobs/fields/moscovia.txt b/npc/re/mobs/fields/moscovia.txt index 8dd5d9054..7ffbd4c28 100644 --- a/npc/re/mobs/fields/moscovia.txt +++ b/npc/re/mobs/fields/moscovia.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Moscovia Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.2 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.0 Added spawns [Playtester] //= 1.1 Updated to Renewal Spawns [Kisuka] diff --git a/npc/re/mobs/fields/niflheim.txt b/npc/re/mobs/fields/niflheim.txt index b9a39c446..2446ec0e0 100644 --- a/npc/re/mobs/fields/niflheim.txt +++ b/npc/re/mobs/fields/niflheim.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Niflheim Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.7 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.2 updated [shadow], //= 1.3 many changes and wrong LOD ID 5373 -> 1373 [Lupus] diff --git a/npc/re/mobs/fields/payon.txt b/npc/re/mobs/fields/payon.txt index 4b3df0331..9736fb31b 100644 --- a/npc/re/mobs/fields/payon.txt +++ b/npc/re/mobs/fields/payon.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Payon Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.5 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 Official kRO 10.1 spawns [Playtester] //= 1.2 Some 11.1 spawn changes [Playtester] diff --git a/npc/re/mobs/fields/prontera.txt b/npc/re/mobs/fields/prontera.txt index 13c9258f0..5eec3c925 100644 --- a/npc/re/mobs/fields/prontera.txt +++ b/npc/re/mobs/fields/prontera.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Prontera Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.6 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.2 fixed some map name typos [Lupus] //= 1.3 Official kRO 10.1 spawns [Playtester] diff --git a/npc/re/mobs/fields/rachel.txt b/npc/re/mobs/fields/rachel.txt index fbfb6d7f6..68e34c4c5 100644 --- a/npc/re/mobs/fields/rachel.txt +++ b/npc/re/mobs/fields/rachel.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Rachel Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 1.5 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.0 Created this [Sepheus] //= 1.1 Updated [Playtester] diff --git a/npc/re/mobs/fields/splendide.txt b/npc/re/mobs/fields/splendide.txt index 00afa5f8c..a9b5c8a1a 100644 --- a/npc/re/mobs/fields/splendide.txt +++ b/npc/re/mobs/fields/splendide.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Splendide Fields Monster Spawn Script //===== By: ================================================== //= alexx, MaC //===== Current Version: ===================================== //= 1.1 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.0 Official spawn ammounts from Aegis script [alexx] //= 1.1 Added 13.2 mob spawn update [scriptor] diff --git a/npc/re/mobs/fields/umbala.txt b/npc/re/mobs/fields/umbala.txt index 033ee1abe..e3bd52469 100644 --- a/npc/re/mobs/fields/umbala.txt +++ b/npc/re/mobs/fields/umbala.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Umbala Fields Monster Spawn Script //===== By: ================================================== //= Darkchild (1.0) //===== Current Version: ===================================== //= 1.5 -//===== Compatible With: ===================================== -//= Any eAthena Version; RO Ep6+ //===== Additional Comments: ================================= //= 1.3 Official kRO 10.1 spawns [Playtester] //= 1.4 More accurate spawns [Playtester] diff --git a/npc/re/mobs/fields/veins.txt b/npc/re/mobs/fields/veins.txt index eb54412a9..ca8cc431e 100644 --- a/npc/re/mobs/fields/veins.txt +++ b/npc/re/mobs/fields/veins.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Veins Fields Monster Spawn Script //===== By: ================================================== //= $ephiroth //===== Current Version: ===================================== //= 1.9 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.0 Temp. monster spawn in Veins Field. [$ephiroth] //= 1.1 Updated monster spawn based on kRO website. [$ephiroth] diff --git a/npc/re/mobs/fields/yuno.txt b/npc/re/mobs/fields/yuno.txt index 74e283cb8..13f1ecb63 100644 --- a/npc/re/mobs/fields/yuno.txt +++ b/npc/re/mobs/fields/yuno.txt @@ -1,11 +1,9 @@ -//===== eAthena Script ======================================= +//===== Hercules Script ====================================== //= Yuno Fields Monster Spawn Script //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== //= 2.1 -//===== Compatible With: ===================================== -//= Any Athena Version //===== Additional Comments: ================================= //= 1.1 fixed tabs, names [Lupus] //= 1.2 New/Better Spawn [Muad_Dib] -- cgit v1.2.3-70-g09d2 From 18a857ad4789e4bedc301eaab516222e6bee45e8 Mon Sep 17 00:00:00 2001 From: Streusel Date: Sat, 9 Feb 2013 05:13:58 -0800 Subject: -Updated Headers -Fixed Issue ID #6834 warps --tu_swordsman.txt warp to New Izlude uses custom coordinates as renewal coordinates were not available --- npc/cities/ayothaya.txt | 4 ++-- npc/quests/first_class/tu_sword.txt | 10 ++++++++-- npc/re/mobs/fields/bifrost.txt | 4 ++-- npc/re/mobs/fields/lighthalzen.txt | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/npc/cities/ayothaya.txt b/npc/cities/ayothaya.txt index e05cf8e40..29c824404 100644 --- a/npc/cities/ayothaya.txt +++ b/npc/cities/ayothaya.txt @@ -91,9 +91,9 @@ ayothaya,152,68,1 script Aibakthing#ayo2 843,{ mes "You will be welcome to come back whenever you please. I hope that we will see each other again sometime soon. Thank you~"; close2; if (checkre(0)) - warp "alberta",238,22; - else warp "alberta",235,45; + else + warp "alberta",238,22; end; } mes "[Aibakthing]"; diff --git a/npc/quests/first_class/tu_sword.txt b/npc/quests/first_class/tu_sword.txt index 6ae1d7c08..02aebf6d6 100644 --- a/npc/quests/first_class/tu_sword.txt +++ b/npc/quests/first_class/tu_sword.txt @@ -1006,7 +1006,10 @@ geffen,154,143,3 script Dequ'ee 734,{ set tu_swordman, 21; changequest 8226,8227; close2; - warp "izlude",35,78; + if (checkre(0)) + warp "izlude",127,100; + else + warp "izlude",35,78; end; } if(tu_swordman == 19){ @@ -2116,7 +2119,10 @@ geffen,154,143,3 script Dequ'ee 734,{ mes "of yourself,"; mes "brave Swordman."; next; - warp "izlude",35,78; + if (checkre(0)) + warp "izlude",127,100; + else + warp "izlude",35,78; close; } case 2: diff --git a/npc/re/mobs/fields/bifrost.txt b/npc/re/mobs/fields/bifrost.txt index b5d04f4a7..b8c28bf49 100644 --- a/npc/re/mobs/fields/bifrost.txt +++ b/npc/re/mobs/fields/bifrost.txt @@ -1,11 +1,11 @@ //===== Hercules Script ====================================== -//= Bifrost Monster Spawn Script +//= Bifrost Field Monster Spawn Script //===== By: ================================================== //= Chilly //===== Current Version: ===================================== //= 1.1 //===== Description: ========================================= -//= Official monster spawn in Bifrost Field. +//= Official kRO monster spawns //===== Additional Comments: ================================= //= 1.0 First Release //= 1.1 Added more accurate 1@mist monsters diff --git a/npc/re/mobs/fields/lighthalzen.txt b/npc/re/mobs/fields/lighthalzen.txt index ad7019a81..8a9dbead3 100644 --- a/npc/re/mobs/fields/lighthalzen.txt +++ b/npc/re/mobs/fields/lighthalzen.txt @@ -1,7 +1,7 @@ //===== Hercules Script ====================================== //= Lighthalzen Fields Monster Spawn Script //===== By: ================================================== -//= Muad_Dib, eAthena dev team +//= Muad_Dib, rAthena Dev Team //===== Current Version: ===================================== //= 1.6 //===== Additional Comments: ================================= -- cgit v1.2.3-70-g09d2 From a0ab6e7ac68978d283dd834bdf7ad0fbcc57e655 Mon Sep 17 00:00:00 2001 From: Streusel Date: Sat, 9 Feb 2013 05:41:40 -0800 Subject: -Added new maps --Due to the new maps not yet existing in the map_cache they've been commented --- db/map_index.txt | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/db/map_index.txt b/db/map_index.txt index 088d0105a..d655e91fa 100644 --- a/db/map_index.txt +++ b/db/map_index.txt @@ -862,6 +862,51 @@ ecl_hub01 que_avan01 moc_prydn1 moc_prydn2 +//new maps, not yet in map_cache +//iz_int +//iz_int01 +//iz_int02 +//iz_int03 +//iz_int04 +//iz_ac01 +//iz_ac02 +//iz_ng01 +//treasure_n1 +//treasure_n2 +//iz_ac01_d +//iz_ac02_d +//iz_ac01_c +//iz_ac02_c +//iz_ac01_b +//iz_ac02_b +//iz_ac01_a +//iz_ac02_a +//izlude_d +//izlude_c +//izlude_b +//izlude_a +//prt_fild08d +//prt_fild08c +//prt_fild08b +//prt_fild08a +//te_prt_gld +//te_prtcas01 +//te_prtcas02 +//te_prtcas03 +//te_prtcas04 +//te_prtcas05 +//teg_dun01 +//teg_dun02 +//te_alde_gld +//te_aldecas1 +//te_aldecas2 +//te_aldecas3 +//te_aldecas4 +//te_aldecas5 +//gl_cas02_ +//gl_chyard_ +//2@gl_k +//1@gl_k // Only add maps under this line if they are not standard maps! -- cgit v1.2.3-70-g09d2 From dbd792cbdf536e26c856ac2773e94cf31a617ea6 Mon Sep 17 00:00:00 2001 From: Streusel Date: Sat, 9 Feb 2013 05:59:16 -0800 Subject: -Added new maps to map_index.txt --Commented as they've not yet been added to map_cache --- db/map_index.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/db/map_index.txt b/db/map_index.txt index d655e91fa..ed0ac755c 100644 --- a/db/map_index.txt +++ b/db/map_index.txt @@ -905,8 +905,12 @@ moc_prydn2 //te_aldecas5 //gl_cas02_ //gl_chyard_ -//2@gl_k //1@gl_k +//2@gl_k +//silk_lair +//1@def02 +//1@def03 + // Only add maps under this line if they are not standard maps! -- cgit v1.2.3-70-g09d2 From 9c4464749a2dc51964cc62a9e34d1f79858ebdb5 Mon Sep 17 00:00:00 2001 From: Streusel Date: Sat, 9 Feb 2013 06:09:52 -0800 Subject: -Version update for previously committed files --- npc/cities/ayothaya.txt | 3 ++- npc/quests/first_class/tu_sword.txt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/npc/cities/ayothaya.txt b/npc/cities/ayothaya.txt index 29c824404..1c22c2975 100644 --- a/npc/cities/ayothaya.txt +++ b/npc/cities/ayothaya.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= MasterOfMuppets //===== Current Version: ===================================== -//= 1.8 +//= 1.9 //===== Description: ========================================= //= [Aegis Conversion] //= Ayotaya Town Script @@ -11,6 +11,7 @@ //= 1.6 Rescripted to Aegis 10.3 standards. [L0ne_W0lf] //= 1.7 Fixed character's anme bugs [Lupus] //= 1.8 Moved Alberta NPC to pre-re/re paths. [Euphy] +//= 1.9 Updated Warp coordinates to Alberta //============================================================ // Ayothaya Transportation NPC diff --git a/npc/quests/first_class/tu_sword.txt b/npc/quests/first_class/tu_sword.txt index 02aebf6d6..ee54103de 100644 --- a/npc/quests/first_class/tu_sword.txt +++ b/npc/quests/first_class/tu_sword.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Fix up by Jukka //===== Current Version: ===================================== -//= 1.4 +//= 1.5 //===== Compatible With: ===================================== //= rAthena SVN (Testet in Trunk 88xx) //===== Description: ========================================= @@ -15,6 +15,7 @@ //= 1.2 Fixed a typo on NPC name. [SinSloth] //= 1.3 Fixed experience gains to match upcoming rate adjustments. [SinSloth] //= 1.4 Misc. updates. [L0ne_W0lf] +//= 1.5 Warp New Izlude update //============================================================ // Shurank -- cgit v1.2.3-70-g09d2 From 4495b78c59df97b516695fdccffad91deb98ad3b Mon Sep 17 00:00:00 2001 From: Streusel Date: Sat, 9 Feb 2013 23:44:37 -0800 Subject: -Updated job based weight modifiers -Fixed Baby job modifiers --- db/re/job_db1.txt | 136 +++++++++++++++++++++++++++--------------------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/db/re/job_db1.txt b/db/re/job_db1.txt index 767621cac..41379cd26 100644 --- a/db/re/job_db1.txt +++ b/db/re/job_db1.txt @@ -102,55 +102,55 @@ // Baby Novice 4023, 20000,0 ,500 ,100 ,440 ,590 ,610 ,2000 ,2000 ,2000 ,540 ,2000 ,540 ,540 ,690 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690 ,540 // Baby Swordman -4024, 28000,70 ,500 ,200 ,440 ,510 ,510 ,580 ,610 ,690 ,590 ,640 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4024, 20000,70 ,500 ,200 ,440 ,510 ,510 ,580 ,610 ,690 ,590 ,640 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Magician -4025, 22000,30 ,500 ,600 ,540 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,640 +4025, 20000,30 ,500 ,600 ,540 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,640 // Baby Archer -4026, 26000,50 ,500 ,200 ,440 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 +4026, 20000,50 ,500 ,200 ,440 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 // Baby Acolyte -4027, 24000,40 ,500 ,500 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 ,640 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,510 +4027, 20000,40 ,500 ,500 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 ,640 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,510 // Baby Merchant -4028, 28000,40 ,500 ,300 ,440 ,560 ,560 ,2000 ,2000 ,2000 ,520 ,590 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4028, 20000,40 ,500 ,300 ,440 ,560 ,560 ,2000 ,2000 ,2000 ,520 ,590 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Thief -4029, 24000,50 ,500 ,200 ,440 ,520 ,540 ,2000 ,2000 ,2000 ,640 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4029, 20000,50 ,500 ,200 ,440 ,520 ,540 ,2000 ,2000 ,2000 ,640 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Baby Knight -4030, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4030, 20000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Priest -4031, 26000,75 ,500 ,800 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,640 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,490 +4031, 20000,75 ,500 ,800 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,640 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,490 // Baby Wizard -4032, 24000,55 ,500 ,900 ,540 ,580 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620 +4032, 20000,55 ,500 ,900 ,540 ,580 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620 // Baby Blacksmith -4033, 30000,90 ,500 ,400 ,440 ,540 ,540 ,2000 ,2000 ,2000 ,500 ,570 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4033, 20000,90 ,500 ,400 ,440 ,540 ,540 ,2000 ,2000 ,2000 ,500 ,570 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Hunter -4034, 27000,85 ,500 ,400 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 +4034, 20000,85 ,500 ,400 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 // Baby Assassin -4035, 24000,110 ,500 ,400 ,440 ,460 ,540 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4035, 20000,110 ,500 ,400 ,440 ,460 ,540 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Baby Knight (Peco) -4036, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4036, 20000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Crusader -4037, 28000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4037, 20000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Monk -4038, 26000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620 ,490 +4038, 20000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620 ,490 // Baby Sage -4039, 24000,75 ,500 ,700 ,490 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,470 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,590 +4039, 20000,75 ,500 ,700 ,490 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,470 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,590 // Baby Rogue -4040, 24000,85 ,500 ,500 ,440 ,490 ,540 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4040, 20000,85 ,500 ,500 ,440 ,490 ,540 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Alchemist -4041, 30000,90 ,500 ,400 ,440 ,540 ,490 ,2000 ,2000 ,2000 ,490 ,560 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 +4041, 20000,90 ,500 ,400 ,440 ,540 ,490 ,2000 ,2000 ,2000 ,490 ,560 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 // Baby Bard -4042, 27000,75 ,300 ,600 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 +4042, 20000,75 ,300 ,600 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 // Baby Dancer -4043, 27000,75 ,300 ,600 ,400 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 ,2000 ,2000 ,450 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 +4043, 20000,75 ,300 ,600 ,400 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 ,2000 ,2000 ,450 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 // Baby Crusader (Peco) -4044, 28000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4044, 20000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Super Novice 4045, 20000,0 ,500 ,100 ,440 ,590 ,610 ,2000 ,2000 ,2000 ,540 ,2000 ,540 ,540 ,690 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690 ,540 // Taekwon 4046, 28000,70 ,500 ,200 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Star Knight -4047, 28000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4047, 24000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Star Knight (flying) -4048, 28000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4048, 24000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Soul Linker 4049, 24000,75 ,500 ,900 ,540 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620 // Gangsi (Bongun/Munak) @@ -160,107 +160,107 @@ // Dark Collector 4052, 24000,75 ,500 ,700 ,450 ,525 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625 ,2000 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625, 0 // Rune Knight (Regular) -4054, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4054, 40000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Warlock (Regular) -4055, 24000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540 +4055, 30000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540 // Ranger (Regular) 4056, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 // Arch Bishop (Regular) -4057, 26000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540 +4057, 30000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540 // Mechanic (Regular) -4058, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4058, 38000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Guillotine Cross (Regular) -4059, 24000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 +4059, 32000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 // Rune Knight (Trans) -4060, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4060, 40000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Warlock (Trans) -4061, 24000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540 +4061, 30000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540 // Ranger (Trans) 4062, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 // Arch Bishop (Trans) -4063, 26000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540 +4063, 30000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540 // Mechanic (Trans) -4064, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4064, 38000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Guillotine Cross (Trans) -4065, 24000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 +4065, 32000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 // Royal Guard (Regular) -4066, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4066, 35000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Sorcerer (Regular) -4067, 24000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 +4067, 30000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 // Minstrel (Regular) -4068, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 +4068, 32000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 // Wanderer (Regular) 4069, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 // Sura (Regular) -4070, 26000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470 +4070, 30000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470 // Genetic (Regular) -4071, 30000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 +4071, 32000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 // Shadow Chaser (Regular) -4072, 24000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4072, 28000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Royal Guard (Trans) -4073, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4073, 35000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Sorcerer (Trans) -4074, 24000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 +4074, 30000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 // Minstrel (Trans) -4075, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 +4075, 32000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 // Wanderer (Trans) 4076, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 // Sura (Trans) -4077, 26000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470 +4077, 30000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470 // Genetic (Trans) -4078, 30000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 +4078, 32000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 // Shadow Chaser (Trans) -4079, 24000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4079, 28000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Rune Knight (Dragon) (Regular) -4080, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4080, 40000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Rune Knight (Dragon) (Trans) -4081, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4081, 40000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Royal Guard (Gryphon) (Regular) -4082, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4082, 35000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Royal Guard (Gryphon) (Trans) -4083, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4083, 35000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Ranger (Waug) (Regular) 4084, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 // Ranger (Waug) (Trans) 4085, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 // Mechanic (Mado) (Regular) -4086, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4086, 38000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Mechanic (Mado) (Trans) -4087, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4087, 38000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Baby Rune Knight -4096, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4096, 20000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Warlock -4097, 24000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540 +4097, 20000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540 // Baby Ranger -4098, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 +4098, 20000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 // Baby Arch Bishop -4099, 26000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540 +4099, 20000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540 // Baby Mechanic -4100, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4100, 20000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Baby Guillotine Cross -4101, 24000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 +4101, 20000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 // Baby Royal Guard -4102, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4102, 20000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Sorcerer -4103, 24000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 +4103, 20000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 // Baby Minstrel -4104, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 +4104, 20000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 // Baby Wanderer -4105, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 +4105, 20000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510 // Baby Sura -4106, 26000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470 +4106, 20000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470 // Baby Genetic -4107, 30000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 +4107, 20000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 // Baby Shadow Chaser -4108, 24000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4108, 20000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Rune Knight (Dragon) -4109, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4109, 20000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Royal Guard (Gryphon) -4110, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 +4110, 20000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 // Baby Ranger (Waug) -4111, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 +4111, 20000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 // Baby Mechanic (Mado) -4112, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 +4112, 20000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500 // Super Novice (Expanded) 4190, 20000,0 ,500 ,100 ,500 ,650 ,700 ,2000 ,2000 ,2000 ,800 ,2000 ,700 ,700 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 650 ,540 // Super Baby (Expanded) -- cgit v1.2.3-70-g09d2 From b530097b2cca96187a76e25cd021596acfd5b3f9 Mon Sep 17 00:00:00 2001 From: Streusel Date: Sun, 10 Feb 2013 21:17:37 -0800 Subject: -Updated map_cache.dat --- conf/maps.conf | 92 ++++++++++++++++++---------------- db/map_index.txt | 141 ++++++++++++++++++---------------------------------- db/re/map_cache.dat | Bin 2096346 -> 2099548 bytes 3 files changed, 96 insertions(+), 137 deletions(-) diff --git a/conf/maps.conf b/conf/maps.conf index 71a3b7db6..be62f4fb5 100644 --- a/conf/maps.conf +++ b/conf/maps.conf @@ -1049,51 +1049,55 @@ map: moc_prydn2 // =============================== // New Maps added 2013-02-10 (Thanks Streusel!) +// Credits to Baneado for reporting some // =============================== -//map: iz_int -//map: iz_int01 -//map: iz_int02 -//map: iz_int03 -//map: iz_int04 -//map: iz_ac01 -//map: iz_ac02 -//map: iz_ng01 -//map: treasure_n1 -//map: treasure_n2 -//map: iz_ac01_d -//map: iz_ac02_d -//map: iz_ac01_c -//map: iz_ac02_c -//map: iz_ac01_b -//map: iz_ac02_b -//map: iz_ac01_a -//map: iz_ac02_a -//map: izlude_d -//map: izlude_c -//map: izlude_b -//map: izlude_a -//map: prt_fild08d -//map: prt_fild08c -//map: prt_fild08b -//map: prt_fild08a -//map: te_prt_gld -//map: te_prtcas01 -//map: te_prtcas02 -//map: te_prtcas03 -//map: te_prtcas04 -//map: te_prtcas05 -//map: teg_dun01 -//map: teg_dun02 -//map: te_alde_gld -//map: te_aldecas1 -//map: te_aldecas2 -//map: te_aldecas3 -//map: te_aldecas4 -//map: te_aldecas5 -//map: gl_cas02_ -//map: gl_chyard_ -//map: 2@gl_k -//map: 1@gl_k +map: iz_int +map: iz_int01 +map: iz_int02 +map: iz_int03 +map: iz_int04 +map: iz_ac01 +map: iz_ac02 +map: iz_ng01 +map: treasure_n1 +map: treasure_n2 +map: iz_ac01_d +map: iz_ac02_d +map: iz_ac01_c +map: iz_ac02_c +map: iz_ac01_b +map: iz_ac02_b +map: iz_ac01_a +map: iz_ac02_a +map: izlude_d +map: izlude_c +map: izlude_b +map: izlude_a +map: prt_fild08d +map: prt_fild08c +map: prt_fild08b +map: prt_fild08a +map: te_prt_gld +map: te_prtcas01 +map: te_prtcas02 +map: te_prtcas03 +map: te_prtcas04 +map: te_prtcas05 +map: teg_dun01 +map: teg_dun02 +map: te_alde_gld +map: te_aldecas1 +map: te_aldecas2 +map: te_aldecas3 +map: te_aldecas4 +map: te_aldecas5 +map: gl_cas02_ +map: gl_chyard_ +map: 2@gl_k +map: 1@gl_k +map: silk_lair +map: 1@def02 +map: 1@def03 //------------------------- Clone Maps --------------------------- //------------------------- Extra Maps --------------------------- diff --git a/db/map_index.txt b/db/map_index.txt index ff2bdced7..37484c869 100644 --- a/db/map_index.txt +++ b/db/map_index.txt @@ -856,103 +856,58 @@ ecl_hub01 que_avan01 moc_prydn1 moc_prydn2 -//new maps, not yet in map_cache -//iz_int -//iz_int01 -//iz_int02 -//iz_int03 -//iz_int04 -//iz_ac01 -//iz_ac02 -//iz_ng01 -//treasure_n1 -//treasure_n2 -//iz_ac01_d -//iz_ac02_d -//iz_ac01_c -//iz_ac02_c -//iz_ac01_b -//iz_ac02_b -//iz_ac01_a -//iz_ac02_a -//izlude_d -//izlude_c -//izlude_b -//izlude_a -//prt_fild08d -//prt_fild08c -//prt_fild08b -//prt_fild08a -//te_prt_gld -//te_prtcas01 -//te_prtcas02 -//te_prtcas03 -//te_prtcas04 -//te_prtcas05 -//teg_dun01 -//teg_dun02 -//te_alde_gld -//te_aldecas1 -//te_aldecas2 -//te_aldecas3 -//te_aldecas4 -//te_aldecas5 -//gl_cas02_ -//gl_chyard_ -//1@gl_k -//2@gl_k -//silk_lair -//1@def02 -//1@def03 - // =============================== // New Maps added 2013-02-10 (Thanks Streusel!) +// Credits also to Baneado for reporting some // =============================== -//iz_int -//iz_int01 -//iz_int02 -//iz_int03 -//iz_int04 -//iz_ac01 -//iz_ac02 -//iz_ng01 -//treasure_n1 -//treasure_n2 -//iz_ac01_d -//iz_ac02_d -//iz_ac01_c -//iz_ac02_c -//iz_ac01_b -//iz_ac02_b -//iz_ac01_a -//iz_ac02_a -//izlude_d -//izlude_c -//izlude_b -//izlude_a -//prt_fild08d -//prt_fild08c -//prt_fild08b -//prt_fild08a -//te_prt_gld -//te_prtcas01 -//te_prtcas02 -//te_prtcas03 -//te_prtcas04 -//te_prtcas05 -//teg_dun01 -//teg_dun02 -//te_alde_gld -//te_aldecas1 -//te_aldecas2 -//te_aldecas3 -//te_aldecas4 -//te_aldecas5 -//gl_cas02_ -//gl_chyard_ -//2@gl_k -//1@gl_k +iz_int +iz_int01 +iz_int02 +iz_int03 +iz_int04 +iz_ac01 +iz_ac02 +iz_ng01 +treasure_n1 +treasure_n2 +iz_ac01_d +iz_ac02_d +iz_ac01_c +iz_ac02_c +iz_ac01_b +iz_ac02_b +iz_ac01_a +iz_ac02_a +izlude_d +izlude_c +izlude_b +izlude_a +prt_fild08d +prt_fild08c +prt_fild08b +prt_fild08a +te_prt_gld +te_prtcas01 +te_prtcas02 +te_prtcas03 +te_prtcas04 +te_prtcas05 +teg_dun01 +teg_dun02 +te_alde_gld +te_aldecas1 +te_aldecas2 +te_aldecas3 +te_aldecas4 +te_aldecas5 +gl_cas02_ +gl_chyard_ +2@gl_k +1@gl_k +silk_lair +1@def02 +1@def03 // Only add maps under this line if they are not standard maps! diff --git a/db/re/map_cache.dat b/db/re/map_cache.dat index 645961065..cd79556d3 100644 Binary files a/db/re/map_cache.dat and b/db/re/map_cache.dat differ -- cgit v1.2.3-70-g09d2 From aba581ac5f0ae1e7d9942d9ebe9b410b85f8a6e6 Mon Sep 17 00:00:00 2001 From: Streusel Date: Sun, 10 Feb 2013 21:32:29 -0800 Subject: -Commented out recently removed maps --- conf/mapflag/nobranch.txt | 6 +- conf/mapflag/nomemo.txt | 6 +- npc/warps/pvp.txt | 144 +++++++++++++++++++++++----------------------- 3 files changed, 78 insertions(+), 78 deletions(-) diff --git a/conf/mapflag/nobranch.txt b/conf/mapflag/nobranch.txt index a05c37df5..0c96bf896 100644 --- a/conf/mapflag/nobranch.txt +++ b/conf/mapflag/nobranch.txt @@ -199,13 +199,13 @@ force_1-2 mapflag nobranch force_1-3 mapflag nobranch ordeal_1-1 mapflag nobranch ordeal_1-2 mapflag nobranch -ordeal_1-3 mapflag nobranch +//ordeal_1-3 mapflag nobranch ordeal_2-1 mapflag nobranch ordeal_2-2 mapflag nobranch -ordeal_2-3 mapflag nobranch +//ordeal_2-3 mapflag nobranch ordeal_3-1 mapflag nobranch ordeal_3-2 mapflag nobranch -ordeal_3-3 mapflag nobranch +//ordeal_3-3 mapflag nobranch pvp_2vs2 mapflag nobranch pvp_c_room mapflag nobranch quiz_00 mapflag nobranch diff --git a/conf/mapflag/nomemo.txt b/conf/mapflag/nomemo.txt index dbb35a164..f6628bf46 100644 --- a/conf/mapflag/nomemo.txt +++ b/conf/mapflag/nomemo.txt @@ -494,13 +494,13 @@ force_4-1 mapflag nomemo force_5-1 mapflag nomemo ordeal_1-1 mapflag nomemo ordeal_1-2 mapflag nomemo -ordeal_1-3 mapflag nomemo +//ordeal_1-3 mapflag nomemo ordeal_2-1 mapflag nomemo ordeal_2-2 mapflag nomemo -ordeal_2-3 mapflag nomemo +//ordeal_2-3 mapflag nomemo ordeal_3-1 mapflag nomemo ordeal_3-2 mapflag nomemo -ordeal_3-3 mapflag nomemo +//ordeal_3-3 mapflag nomemo pvp_c_room mapflag nomemo quiz_00 mapflag nomemo quiz_01 mapflag nomemo diff --git a/npc/warps/pvp.txt b/npc/warps/pvp.txt index da82d6d09..e9440aeb9 100644 --- a/npc/warps/pvp.txt +++ b/npc/warps/pvp.txt @@ -40,30 +40,30 @@ ordeal_1-2,153,180,0 warp ord12-5 1,1,ordeal_1-2,144,284 ordeal_1-2,172,135,0 warp ord12-6 1,1,ordeal_1-2,284,24 ordeal_1-2,172,172,0 warp ord12-7 1,1,ordeal_1-2,284,284 ordeal_1-2,180,154,0 warp ord12-8 1,1,ordeal_1-2,284,164 -ordeal_1-3,100,150,0 warp ord13-1 1,1,ordeal_1-3,128,150 -ordeal_1-3,114,183,0 warp ord13-2 1,1,ordeal_1-3,135,163 -ordeal_1-3,115,115,0 warp ord13-3 1,1,ordeal_1-3,136,136 -ordeal_1-3,123,150,0 warp ord13-4 1,1,ordeal_1-3,95,150 -ordeal_1-3,130,168,0 warp ord13-5 1,1,ordeal_1-3,109,188 -ordeal_1-3,131,131,0 warp ord13-6 1,1,ordeal_1-3,110,110 -ordeal_1-3,148,176,0 warp ord13-7 1,1,ordeal_1-3,149,204 -ordeal_1-3,149,99,0 warp ord13-8 1,1,ordeal_1-3,151,129 -ordeal_1-3,149,199,0 warp ord13-9 1,1,ordeal_1-3,148,171 -ordeal_1-3,151,124,0 warp ord13-10 1,1,ordeal_1-3,151,94 -ordeal_1-3,168,168,0 warp ord13-11 1,1,ordeal_1-3,189,189 -ordeal_1-3,169,131,0 warp ord13-12 1,1,ordeal_1-3,188,111 -ordeal_1-3,176,150,0 warp ord13-13 1,1,ordeal_1-3,204,150 -ordeal_1-3,183,116,0 warp ord13-14 1,1,ordeal_1-3,164,136 -ordeal_1-3,184,184,0 warp ord13-15 1,1,ordeal_1-3,163,163 -ordeal_1-3,199,150,0 warp ord13-16 1,1,ordeal_1-3,171,150 -ordeal_1-4,128,154,0 warp ord14-1 1,1,ordeal_1-4,24,154 -ordeal_1-4,136,136,0 warp ord14-2 1,1,ordeal_1-4,24,24 -ordeal_1-4,136,172,0 warp ord14-3 1,1,ordeal_1-4,24,284 -ordeal_1-4,153,128,0 warp ord14-4 1,1,ordeal_1-4,153,23 -ordeal_1-4,153,180,0 warp ord14-5 1,1,ordeal_1-4,144,284 -ordeal_1-4,172,135,0 warp ord14-6 1,1,ordeal_1-4,284,24 -ordeal_1-4,172,172,0 warp ord14-7 1,1,ordeal_1-4,284,284 -ordeal_1-4,180,154,0 warp ord14-8 1,1,ordeal_1-4,284,164 +//ordeal_1-3,100,150,0 warp ord13-1 1,1,ordeal_1-3,128,150 +//ordeal_1-3,114,183,0 warp ord13-2 1,1,ordeal_1-3,135,163 +//ordeal_1-3,115,115,0 warp ord13-3 1,1,ordeal_1-3,136,136 +//ordeal_1-3,123,150,0 warp ord13-4 1,1,ordeal_1-3,95,150 +//ordeal_1-3,130,168,0 warp ord13-5 1,1,ordeal_1-3,109,188 +//ordeal_1-3,131,131,0 warp ord13-6 1,1,ordeal_1-3,110,110 +//ordeal_1-3,148,176,0 warp ord13-7 1,1,ordeal_1-3,149,204 +//ordeal_1-3,149,99,0 warp ord13-8 1,1,ordeal_1-3,151,129 +//ordeal_1-3,149,199,0 warp ord13-9 1,1,ordeal_1-3,148,171 +//ordeal_1-3,151,124,0 warp ord13-10 1,1,ordeal_1-3,151,94 +//ordeal_1-3,168,168,0 warp ord13-11 1,1,ordeal_1-3,189,189 +//ordeal_1-3,169,131,0 warp ord13-12 1,1,ordeal_1-3,188,111 +//ordeal_1-3,176,150,0 warp ord13-13 1,1,ordeal_1-3,204,150 +//ordeal_1-3,183,116,0 warp ord13-14 1,1,ordeal_1-3,164,136 +//ordeal_1-3,184,184,0 warp ord13-15 1,1,ordeal_1-3,163,163 +//ordeal_1-3,199,150,0 warp ord13-16 1,1,ordeal_1-3,171,150 +//ordeal_1-4,128,154,0 warp ord14-1 1,1,ordeal_1-4,24,154 +//ordeal_1-4,136,136,0 warp ord14-2 1,1,ordeal_1-4,24,24 +//ordeal_1-4,136,172,0 warp ord14-3 1,1,ordeal_1-4,24,284 +//ordeal_1-4,153,128,0 warp ord14-4 1,1,ordeal_1-4,153,23 +//ordeal_1-4,153,180,0 warp ord14-5 1,1,ordeal_1-4,144,284 +//ordeal_1-4,172,135,0 warp ord14-6 1,1,ordeal_1-4,284,24 +//ordeal_1-4,172,172,0 warp ord14-7 1,1,ordeal_1-4,284,284 +//ordeal_1-4,180,154,0 warp ord14-8 1,1,ordeal_1-4,284,164 ordeal_2-1,100,150,0 warp ord21-1 1,1,ordeal_2-1,128,150 ordeal_2-1,123,150,0 warp ord21-2 1,1,ordeal_2-1,95,150 ordeal_2-1,114,183,0 warp ord21-3 1,1,ordeal_2-1,135,163 @@ -88,30 +88,30 @@ ordeal_2-2,153,180,0 warp ord22-5 1,1,ordeal_2-2,144,284 ordeal_2-2,172,135,0 warp ord22-6 1,1,ordeal_2-2,284,24 ordeal_2-2,172,172,0 warp ord22-7 1,1,ordeal_2-2,284,284 ordeal_2-2,180,154,0 warp ord22-8 1,1,ordeal_2-2,284,164 -ordeal_2-3,100,150,0 warp ord23-1 1,1,ordeal_2-3,128,150 -ordeal_2-3,114,183,0 warp ord23-2 1,1,ordeal_2-3,135,163 -ordeal_2-3,115,115,0 warp ord23-3 1,1,ordeal_2-3,136,136 -ordeal_2-3,123,150,0 warp ord23-4 1,1,ordeal_2-3,95,150 -ordeal_2-3,130,168,0 warp ord23-5 1,1,ordeal_2-3,109,188 -ordeal_2-3,131,131,0 warp ord23-6 1,1,ordeal_2-3,110,110 -ordeal_2-3,148,176,0 warp ord23-7 1,1,ordeal_2-3,149,204 -ordeal_2-3,149,99,0 warp ord23-8 1,1,ordeal_2-3,151,129 -ordeal_2-3,149,199,0 warp ord23-9 1,1,ordeal_2-3,148,171 -ordeal_2-3,151,124,0 warp ord23-10 1,1,ordeal_2-3,151,94 -ordeal_2-3,168,168,0 warp ord23-11 1,1,ordeal_2-3,189,189 -ordeal_2-3,169,131,0 warp ord23-12 1,1,ordeal_2-3,188,111 -ordeal_2-3,176,150,0 warp ord23-13 1,1,ordeal_2-3,204,150 -ordeal_2-3,183,116,0 warp ord23-14 1,1,ordeal_2-3,164,136 -ordeal_2-3,184,184,0 warp ord23-15 1,1,ordeal_2-3,163,163 -ordeal_2-3,199,150,0 warp ord23-16 1,1,ordeal_2-3,171,150 -ordeal_2-4,128,154,0 warp ord24-1 1,1,ordeal_2-4,24,154 -ordeal_2-4,136,136,0 warp ord24-2 1,1,ordeal_2-4,24,24 -ordeal_2-4,136,172,0 warp ord24-3 1,1,ordeal_2-4,24,284 -ordeal_2-4,153,128,0 warp ord24-4 1,1,ordeal_2-4,153,23 -ordeal_2-4,153,180,0 warp ord24-5 1,1,ordeal_2-4,144,284 -ordeal_2-4,172,135,0 warp ord24-6 1,1,ordeal_2-4,284,24 -ordeal_2-4,172,172,0 warp ord24-7 1,1,ordeal_2-4,284,284 -ordeal_2-4,180,154,0 warp ord24-8 1,1,ordeal_2-4,284,164 +//ordeal_2-3,100,150,0 warp ord23-1 1,1,ordeal_2-3,128,150 +//ordeal_2-3,114,183,0 warp ord23-2 1,1,ordeal_2-3,135,163 +//ordeal_2-3,115,115,0 warp ord23-3 1,1,ordeal_2-3,136,136 +//ordeal_2-3,123,150,0 warp ord23-4 1,1,ordeal_2-3,95,150 +//ordeal_2-3,130,168,0 warp ord23-5 1,1,ordeal_2-3,109,188 +//ordeal_2-3,131,131,0 warp ord23-6 1,1,ordeal_2-3,110,110 +//ordeal_2-3,148,176,0 warp ord23-7 1,1,ordeal_2-3,149,204 +//ordeal_2-3,149,99,0 warp ord23-8 1,1,ordeal_2-3,151,129 +//ordeal_2-3,149,199,0 warp ord23-9 1,1,ordeal_2-3,148,171 +//ordeal_2-3,151,124,0 warp ord23-10 1,1,ordeal_2-3,151,94 +//ordeal_2-3,168,168,0 warp ord23-11 1,1,ordeal_2-3,189,189 +//ordeal_2-3,169,131,0 warp ord23-12 1,1,ordeal_2-3,188,111 +//ordeal_2-3,176,150,0 warp ord23-13 1,1,ordeal_2-3,204,150 +//ordeal_2-3,183,116,0 warp ord23-14 1,1,ordeal_2-3,164,136 +//ordeal_2-3,184,184,0 warp ord23-15 1,1,ordeal_2-3,163,163 +//ordeal_2-3,199,150,0 warp ord23-16 1,1,ordeal_2-3,171,150 +//ordeal_2-4,128,154,0 warp ord24-1 1,1,ordeal_2-4,24,154 +//ordeal_2-4,136,136,0 warp ord24-2 1,1,ordeal_2-4,24,24 +//ordeal_2-4,136,172,0 warp ord24-3 1,1,ordeal_2-4,24,284 +//ordeal_2-4,153,128,0 warp ord24-4 1,1,ordeal_2-4,153,23 +//ordeal_2-4,153,180,0 warp ord24-5 1,1,ordeal_2-4,144,284 +//ordeal_2-4,172,135,0 warp ord24-6 1,1,ordeal_2-4,284,24 +//ordeal_2-4,172,172,0 warp ord24-7 1,1,ordeal_2-4,284,284 +//ordeal_2-4,180,154,0 warp ord24-8 1,1,ordeal_2-4,284,164 ordeal_3-1,100,150,0 warp ord31-1 1,1,ordeal_3-1,128,150 ordeal_3-1,123,150,0 warp ord31-2 1,1,ordeal_3-1,95,150 ordeal_3-1,114,183,0 warp ord31-3 1,1,ordeal_3-1,135,163 @@ -136,30 +136,30 @@ ordeal_3-2,153,180,0 warp ord32-5 1,1,ordeal_3-2,144,284 ordeal_3-2,172,135,0 warp ord32-6 1,1,ordeal_3-2,284,24 ordeal_3-2,172,172,0 warp ord32-7 1,1,ordeal_3-2,284,284 ordeal_3-2,180,154,0 warp ord32-8 1,1,ordeal_3-2,284,164 -ordeal_3-3,100,150,0 warp ord33-1 1,1,ordeal_3-3,128,150 -ordeal_3-3,114,183,0 warp ord33-2 1,1,ordeal_3-3,135,163 -ordeal_3-3,115,115,0 warp ord33-3 1,1,ordeal_3-3,136,136 -ordeal_3-3,123,150,0 warp ord33-4 1,1,ordeal_3-3,95,150 -ordeal_3-3,130,168,0 warp ord33-5 1,1,ordeal_3-3,109,188 -ordeal_3-3,131,131,0 warp ord33-6 1,1,ordeal_3-3,110,110 -ordeal_3-3,148,176,0 warp ord33-7 1,1,ordeal_3-3,149,204 -ordeal_3-3,149,99,0 warp ord33-8 1,1,ordeal_3-3,151,129 -ordeal_3-3,149,199,0 warp ord33-9 1,1,ordeal_3-3,148,171 -ordeal_3-3,151,124,0 warp ord33-10 1,1,ordeal_3-3,151,94 -ordeal_3-3,168,168,0 warp ord33-11 1,1,ordeal_3-3,189,189 -ordeal_3-3,169,131,0 warp ord33-12 1,1,ordeal_3-3,188,111 -ordeal_3-3,176,150,0 warp ord33-13 1,1,ordeal_3-3,204,150 -ordeal_3-3,183,116,0 warp ord33-14 1,1,ordeal_3-3,164,136 -ordeal_3-3,184,184,0 warp ord33-15 1,1,ordeal_3-3,163,163 -ordeal_3-3,199,150,0 warp ord33-16 1,1,ordeal_3-3,171,150 -ordeal_3-4,128,154,0 warp ord34-1 1,1,ordeal_3-4,24,154 -ordeal_3-4,136,136,0 warp ord34-2 1,1,ordeal_3-4,24,24 -ordeal_3-4,136,172,0 warp ord34-3 1,1,ordeal_3-4,24,284 -ordeal_3-4,153,128,0 warp ord34-4 1,1,ordeal_3-4,153,23 -ordeal_3-4,153,180,0 warp ord34-5 1,1,ordeal_3-4,144,284 -ordeal_3-4,172,135,0 warp ord34-6 1,1,ordeal_3-4,284,24 -ordeal_3-4,172,172,0 warp ord34-7 1,1,ordeal_3-4,284,284 -ordeal_3-4,180,154,0 warp ord34-8 1,1,ordeal_3-4,284,164 +//ordeal_3-3,100,150,0 warp ord33-1 1,1,ordeal_3-3,128,150 +//ordeal_3-3,114,183,0 warp ord33-2 1,1,ordeal_3-3,135,163 +//ordeal_3-3,115,115,0 warp ord33-3 1,1,ordeal_3-3,136,136 +//ordeal_3-3,123,150,0 warp ord33-4 1,1,ordeal_3-3,95,150 +//ordeal_3-3,130,168,0 warp ord33-5 1,1,ordeal_3-3,109,188 +//ordeal_3-3,131,131,0 warp ord33-6 1,1,ordeal_3-3,110,110 +//ordeal_3-3,148,176,0 warp ord33-7 1,1,ordeal_3-3,149,204 +//ordeal_3-3,149,99,0 warp ord33-8 1,1,ordeal_3-3,151,129 +//ordeal_3-3,149,199,0 warp ord33-9 1,1,ordeal_3-3,148,171 +//ordeal_3-3,151,124,0 warp ord33-10 1,1,ordeal_3-3,151,94 +//ordeal_3-3,168,168,0 warp ord33-11 1,1,ordeal_3-3,189,189 +//ordeal_3-3,169,131,0 warp ord33-12 1,1,ordeal_3-3,188,111 +//ordeal_3-3,176,150,0 warp ord33-13 1,1,ordeal_3-3,204,150 +//ordeal_3-3,183,116,0 warp ord33-14 1,1,ordeal_3-3,164,136 +//ordeal_3-3,184,184,0 warp ord33-15 1,1,ordeal_3-3,163,163 +//ordeal_3-3,199,150,0 warp ord33-16 1,1,ordeal_3-3,171,150 +//ordeal_3-4,128,154,0 warp ord34-1 1,1,ordeal_3-4,24,154 +//ordeal_3-4,136,136,0 warp ord34-2 1,1,ordeal_3-4,24,24 +//ordeal_3-4,136,172,0 warp ord34-3 1,1,ordeal_3-4,24,284 +//ordeal_3-4,153,128,0 warp ord34-4 1,1,ordeal_3-4,153,23 +//ordeal_3-4,153,180,0 warp ord34-5 1,1,ordeal_3-4,144,284 +//ordeal_3-4,172,135,0 warp ord34-6 1,1,ordeal_3-4,284,24 +//ordeal_3-4,172,172,0 warp ord34-7 1,1,ordeal_3-4,284,284 +//ordeal_3-4,180,154,0 warp ord34-8 1,1,ordeal_3-4,284,164 //This map doesn't even exists. Is it ordeal_a02 or ordea_la00? //ordeal_a04,128,154,0 warp orda1 0,0,ordeal_a04,24,154 //ordeal_a04,136,136,0 warp orda2 0,0,ordeal_a04,24,24 -- cgit v1.2.3-70-g09d2 From 33fa32fd902bb2e836b7d92441fdffe006e563ca Mon Sep 17 00:00:00 2001 From: Streusel Date: Sun, 10 Feb 2013 21:35:58 -0800 Subject: -Added back but commented recently removed maps, in case somebody needs them --- conf/maps.conf | 8 ++++++++ db/map_index.txt | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/conf/maps.conf b/conf/maps.conf index be62f4fb5..c34b05adf 100644 --- a/conf/maps.conf +++ b/conf/maps.conf @@ -164,12 +164,20 @@ map: new_5-3 map: new_5-4 map: orcsdun01 map: orcsdun02 +//map: ordeal_a00 +//map: ordeal_a02 map: ordeal_1-1 map: ordeal_1-2 +//map: ordeal_1-3 +//map: ordeal_1-4 map: ordeal_2-1 map: ordeal_2-2 +//map: ordeal_2-3 +//map: ordeal_2-4 map: ordeal_3-1 map: ordeal_3-2 +//map: ordeal_3-3 +//map: ordeal_3-4 map: pay_arche map: pay_dun00 map: pay_dun01 diff --git a/db/map_index.txt b/db/map_index.txt index 37484c869..e2ed76848 100644 --- a/db/map_index.txt +++ b/db/map_index.txt @@ -168,10 +168,16 @@ orcsdun01 orcsdun02 ordeal_1-1 ordeal_1-2 +//ordeal_1-3 +//ordeal_1-4 ordeal_2-1 ordeal_2-2 +//ordeal_2-3 +//ordeal_2-4 ordeal_3-1 ordeal_3-2 +//ordeal_3-3 +//ordeal_3-4 pay_arche pay_dun00 pay_dun01 @@ -933,6 +939,8 @@ silk_lair //prontera_s //pay_arche_s //xmas_old +//ordeal_a00 +//ordeal_a02 //fay_vilg00 //fay_vilg01 //gef_vilg00 -- cgit v1.2.3-70-g09d2 From 3e13fed5e5dfd76ff56c870347e2a56cac55f489 Mon Sep 17 00:00:00 2001 From: Guilherme Date: Mon, 11 Feb 2013 14:46:12 -0200 Subject: Update npc/cities/alberta.txt --- npc/cities/alberta.txt | 279 ++++++++++++++++++++++++------------------------- 1 file changed, 134 insertions(+), 145 deletions(-) diff --git a/npc/cities/alberta.txt b/npc/cities/alberta.txt index ccfced388..7f9bbe01d 100644 --- a/npc/cities/alberta.txt +++ b/npc/cities/alberta.txt @@ -67,45 +67,41 @@ alberta,131,139,2 script Drunken Old Man 54,{ mes "Wh-what are you"; mes "staring at? Get lost!!"; next; - switch(select("Say nothing.","Leave him alone.")) { - case 1: + if(select("Say nothing.","Leave him alone.") ==1) { + mes "[Deagle]"; + mes "Hahahaha ^666666*hiccup*^000000... You've got some nerve. I may look worthless now, but I used to be a sailor on the 'Going Mary.'"; + next; + if(select("Never heard of it.","Really? No kidding!") ==1) { mes "[Deagle]"; - mes "Hahahaha ^666666*hiccup*^000000... You've got some nerve. I may look worthless now, but I used to be a sailor on the 'Going Mary.'"; + mes "Never heard of it?! Everybody knows th'notorious pirate ship 'Going Mary!' ^666666*Hiccup~*^000000"; next; - switch(select("Never heard of it.","Really? No kidding!")) { - case 1: - mes "[Deagle]"; - mes "Never heard of it?! Everybody knows th'notorious pirate ship 'Going Mary!' ^666666*Hiccup~*^000000"; - next; - mes "[Deagle]"; - mes "Ah~ The ol'days. If only... If only we hadn't run into that STORM...^666666*hiccup*^000000"; - next; - mes "[Deagle]"; - mes "AH~ Captain. I miss our cap'n more than anything... No foe survived before cap'n's sword."; - close; - case 2: - mes "[Deagle]"; - mes "That's right! NOBODY meshes with the crew of the 'Going Mary!' And nobody can beat out cap'n in a sword fight!"; - next; - mes "[Deagle]"; - mes "CAPTAIN~!!! ^666666*HICCUP~*^000000 He would swing his sword like this, then... THEN!!"; - next; - mes "[Deagle]"; - mes "The bastard the captain was fighting, and anyone of his friends near him, were surrounded in flame!"; - next; - mes "[Deagle]"; - mes "Man, that sword must have had some sort of mysterious power, or the captain was just that good...!"; - next; - mes "[Deagle]"; - mes "Phew~~ ^666666*Sob* *Sob...*^000000 God, I miss everyone! Now I'm depressed! Please, go away now."; - close; - } - case 2: mes "[Deagle]"; - mes "That's right!"; - mes "Go AWAY~"; + mes "Ah~ The ol'days. If only... If only we hadn't run into that STORM...^666666*hiccup*^000000"; + next; + mes "[Deagle]"; + mes "AH~ Captain. I miss our cap'n more than anything... No foe survived before cap'n's sword."; close; + } + mes "[Deagle]"; + mes "That's right! NOBODY meshes with the crew of the 'Going Mary!' And nobody can beat out cap'n in a sword fight!"; + next; + mes "[Deagle]"; + mes "CAPTAIN~!!! ^666666*HICCUP~*^000000 He would swing his sword like this, then... THEN!!"; + next; + mes "[Deagle]"; + mes "The bastard the captain was fighting, and anyone of his friends near him, were surrounded in flame!"; + next; + mes "[Deagle]"; + mes "Man, that sword must have had some sort of mysterious power, or the captain was just that good...!"; + next; + mes "[Deagle]"; + mes "Phew~~ ^666666*Sob* *Sob...*^000000 God, I miss everyone! Now I'm depressed! Please, go away now."; + close; } + mes "[Deagle]"; + mes "That's right!"; + mes "Go AWAY~"; + close; } alberta,58,80,2 script Shakir 99,{ @@ -255,25 +251,22 @@ alberta,195,151,2 script Paul 86,{ mes "fee is only"; mes "200 Zeny."; next; - switch(select("Sign me up!","Uh, no thanks.")) { - case 1: - if (Zeny < 200) { - mes "[Paul]"; - mes "It seems you don't have the money, my friend. But please come back when you're able to pay."; - close; - } else { - set Zeny,Zeny - 200; - warp "alb2trea",62,69; - close; - } - case 2: + if(select("Sign me up!","Uh, no thanks.") ==1) { + if (Zeny < 200) { mes "[Paul]"; - mes "Alright, well..."; - mes "I'll be around"; - mes "if you change"; - mes "your mind."; + mes "It seems you don't have the money, my friend. But please come back when you're able to pay."; close; + } + set Zeny,Zeny - 200; + warp "alb2trea",62,69; + close; } + mes "[Paul]"; + mes "Alright, well..."; + mes "I'll be around"; + mes "if you change"; + mes "your mind."; + close; } alberta,190,173,4 script Phelix 85,{ @@ -299,111 +292,107 @@ alberta,190,173,4 script Phelix 85,{ mes "If you're interested in my offer, get me the stuff I mentioned."; set @event_zelopy,1; close; - } else { - mes "Hmm.. you want to exchange jellopies for Red Potions or some Carrots eh? Well.. which one?"; + } + mes "Hmm.. you want to exchange jellopies for Red Potions or some Carrots eh? Well.. which one?"; + next; + if(select("Red Potions please.","Carrots please.") ==1) { + case 1: + mes "[Phelix]"; + mes "Alright..."; + mes "Let's see"; + mes "what'cha got..."; + next; + mes "[Phelix]"; + if (countitem(909) < 10) { + mes "Hey! Weren't you listening?. I said 10 jellopies for 1 Red Potion.. are ya deaf?"; + close; + } + set .@max,countitem(909)/10; + mes "Hmm, not bad..."; + mes "How many potions"; + mes "do you want to get?"; next; - switch(select("Red Potions please.","Carrots please.")) { + switch(select("As many as I can, please.","I want this many.","Never mind, I like my jellopy.")) { case 1: + delitem 909,.@max*10; // Jellopy + getitem 501,.@max; // Red_Potion + break; + case 2: mes "[Phelix]"; - mes "Alright..."; - mes "Let's see"; - mes "what'cha got..."; + mes "I'm not giving you more then 100 at a time so don't bother, OK? If you don't want any, just say '0'."; + mes "Right now, the most you can get is " + .@max + " but remember, 100 at most, you want to break my back?."; + input .@amount; next; mes "[Phelix]"; - if (countitem(909) < 10) { - mes "Hey! Weren't you listening?. I said 10 jellopies for 1 Red Potion.. are ya deaf?"; - close; - } else { - set .@max,countitem(909)/10; - mes "Hmm, not bad..."; - mes "How many potions"; - mes "do you want to get?"; - next; - switch(select("As many as I can, please.","I want this many.","Never mind, I like my jellopy.")) { - case 1: - delitem 909,.@max*10; // Jellopy - getitem 501,.@max; // Red_Potion - break; - case 2: - mes "[Phelix]"; - mes "I'm not giving you more then 100 at a time so don't bother, OK? If you don't want any, just say '0'."; - mes "Right now, the most you can get is " + .@max + " but remember, 100 at most, you want to break my back?."; - input .@amount; - next; - mes "[Phelix]"; - if (.@amount <= 0) { - mes "Much obliged, come again anytime."; - close; - } - if (.@amount > 100) { - mes "Hey, what'd I say? 100 at a time at most, you're trying to kill me aren't you!"; - close; - } - if (countitem(909) < .@amount*10) { - mes "Hmm, it looks like you don't have enough. Go get more jellopies if you want anything else from me."; - close; - } - delitem 909,.@amount*10; // Jellopy - getitem 501,.@amount; // Red_Potion - break; - case 3: - mes "[Phelix]"; - mes "No problem,"; - mes "see you next time."; - close; - } - mes "[Phelix]"; - mes "There you go! As I promised. Don't go suckin' them all down at once."; + if (.@amount <= 0) { + mes "Much obliged, come again anytime."; close; } - case 2: - mes "[Phelix]"; - mes "Alright, let's see what ya got..."; - next; - mes "[Phelix]"; - if (countitem(909) < 3) { - mes "Hmm, look pansy ass, I said 3 jellopies for 1 Carrot.. got it?"; + if (.@amount > 100) { + mes "Hey, what'd I say? 100 at a time at most, you're trying to kill me aren't you!"; close; - } else { - set .@max,countitem(909)/3; - mes "Not too bad pansy..."; - mes "How many do you want?"; - next; - switch(select("As many as I can get, please","I want this many.","Never mind, I like my jellopy.")) { - case 1: - delitem 909,.@max*3; // Jellopy - getitem 515,.@max; // Carrot - break; - case 2: - mes "[Phelix]"; - mes "Right I'm not giving you more then 100 at a time so don't bother, okay? If you don't want any, just say '0'."; - input .@amount; - next; - mes "[Phelix]"; - if (.@amount == 0) { - mes "Alright then, see you next time."; - close; - } - if (.@amount > 100) { - mes "Hey pansy ass, I said 100 at most, no more then that! I'm not going to break my back for the likes of you!"; - close; - } - if (countitem(909) < .@amount*10) { - mes "Seems you don't have enough. Go get some more if you want anything else."; - close; - } - delitem 909,.@amount*3; // Jellopy - getitem 515,.@amount; // Carrot - break; - case 3: - mes "[Phelix]"; - mes "Catch'ya later."; - close; - } - mes "[Phelix]"; - mes "There you go~! As I promised. Try not to stuff yer face."; + } + if (countitem(909) < .@amount*10) { + mes "Hmm, it looks like you don't have enough. Go get more jellopies if you want anything else from me."; close; } + delitem 909,.@amount*10; // Jellopy + getitem 501,.@amount; // Red_Potion + break; + case 3: + mes "[Phelix]"; + mes "No problem,"; + mes "see you next time."; + close; } + mes "[Phelix]"; + mes "There you go! As I promised. Don't go suckin' them all down at once."; + close; + } + mes "[Phelix]"; + mes "Alright, let's see what ya got..."; + next; + mes "[Phelix]"; + if (countitem(909) < 3) { + mes "Hmm, look pansy ass, I said 3 jellopies for 1 Carrot.. got it?"; + close; } + set .@max,countitem(909)/3; + mes "Not too bad pansy..."; + mes "How many do you want?"; + next; + switch(select("As many as I can get, please","I want this many.","Never mind, I like my jellopy.")) { + case 1: + delitem 909,.@max*3; // Jellopy + getitem 515,.@max; // Carrot + break; + case 2: + mes "[Phelix]"; + mes "Right I'm not giving you more then 100 at a time so don't bother, okay? If you don't want any, just say '0'."; + input .@amount; + next; + mes "[Phelix]"; + if (.@amount == 0) { + mes "Alright then, see you next time."; + close; + } + if (.@amount > 100) { + mes "Hey pansy ass, I said 100 at most, no more then that! I'm not going to break my back for the likes of you!"; + close; + } + if (countitem(909) < .@amount*10) { + mes "Seems you don't have enough. Go get some more if you want anything else."; + close; + } + delitem 909,.@amount*3; // Jellopy + getitem 515,.@amount; // Carrot + break; + case 3: + mes "[Phelix]"; + mes "Catch'ya later."; + close; + } + mes "[Phelix]"; + mes "There you go~! As I promised. Try not to stuff yer face."; + close; } -- cgit v1.2.3-70-g09d2 From 16859820551f61bf26a99139fd6e4fd9425f1154 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Tue, 12 Feb 2013 02:18:17 -0200 Subject: Updating Packetver to April 18th not that it actually changes something yet, but Jman needs a new commit to test Hercules IRC Bot. Signed-off-by: shennetsind --- src/common/mmo.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/mmo.h b/src/common/mmo.h index 493f87691..2ef9789f2 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -46,8 +46,7 @@ // 20120307 - 2012-03-07aRagexeRE+ - 0x970 #ifndef PACKETVER - #define PACKETVER 20120410 - //#define PACKETVER 20111116 + #define PACKETVER 20120418 #endif //Remove/Comment this line to disable sc_data saving. [Skotlex] -- cgit v1.2.3-70-g09d2 From f79e5b0e8e2939b2e8939a0cf1aba682e6877ba9 Mon Sep 17 00:00:00 2001 From: Streusel Date: Wed, 13 Feb 2013 15:57:29 -0800 Subject: -Removed leftover 'case 1:' causing error --- npc/cities/alberta.txt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/npc/cities/alberta.txt b/npc/cities/alberta.txt index 7f9bbe01d..3909d63b2 100644 --- a/npc/cities/alberta.txt +++ b/npc/cities/alberta.txt @@ -67,11 +67,11 @@ alberta,131,139,2 script Drunken Old Man 54,{ mes "Wh-what are you"; mes "staring at? Get lost!!"; next; - if(select("Say nothing.","Leave him alone.") ==1) { + if(select("Say nothing.","Leave him alone.") == 1) { mes "[Deagle]"; mes "Hahahaha ^666666*hiccup*^000000... You've got some nerve. I may look worthless now, but I used to be a sailor on the 'Going Mary.'"; next; - if(select("Never heard of it.","Really? No kidding!") ==1) { + if(select("Never heard of it.","Really? No kidding!") == 1) { mes "[Deagle]"; mes "Never heard of it?! Everybody knows th'notorious pirate ship 'Going Mary!' ^666666*Hiccup~*^000000"; next; @@ -228,7 +228,7 @@ alb2trea,39,50,6 script Fisk#a2t 100,{ mes "[Fisk]"; mes "So you wanna head back to the mainland in Alberta, eh?"; next; - if(select("Yes please.","I changed my mind.")==1) + if(select("Yes please.","I changed my mind.") == 1) warp "alberta",192,169; close; } @@ -251,7 +251,7 @@ alberta,195,151,2 script Paul 86,{ mes "fee is only"; mes "200 Zeny."; next; - if(select("Sign me up!","Uh, no thanks.") ==1) { + if(select("Sign me up!","Uh, no thanks.") == 1) { if (Zeny < 200) { mes "[Paul]"; mes "It seems you don't have the money, my friend. But please come back when you're able to pay."; @@ -295,8 +295,7 @@ alberta,190,173,4 script Phelix 85,{ } mes "Hmm.. you want to exchange jellopies for Red Potions or some Carrots eh? Well.. which one?"; next; - if(select("Red Potions please.","Carrots please.") ==1) { - case 1: + if(select("Red Potions please.","Carrots please.") == 1) { mes "[Phelix]"; mes "Alright..."; mes "Let's see"; -- cgit v1.2.3-70-g09d2 From a849f62a06db7c976a50db41373bd3fc6bcadb45 Mon Sep 17 00:00:00 2001 From: Streusel Date: Wed, 13 Feb 2013 16:53:09 -0800 Subject: -Updated Job NPC's to allow Baby Novice to change into other Baby 1-1 classes -Updated Job npc's to use callfunc --- npc/re/jobs/1-1/acolyte.txt | 4 ++-- npc/re/jobs/1-1/archer.txt | 4 ++-- npc/re/jobs/1-1/mage.txt | 2 +- npc/re/jobs/1-1/merchant.txt | 2 +- npc/re/jobs/1-1/swordman.txt | 2 +- npc/re/jobs/1-1/thief.txt | 6 +++--- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/npc/re/jobs/1-1/acolyte.txt b/npc/re/jobs/1-1/acolyte.txt index 4808879be..1ae78385c 100644 --- a/npc/re/jobs/1-1/acolyte.txt +++ b/npc/re/jobs/1-1/acolyte.txt @@ -61,7 +61,7 @@ prt_church,184,41,4 script Cleric#aco 60,{ next; switch(select("Change your job to acolyte.:Ask the requirements to be an acolyte.:Quit it.")) { case 1: - if(Class != Job_Novice) { + if(Class != Job_Novice && Class != Job_Baby) { mes "[Father Mareusis]"; if(Class == Job_Acolyte) { mes "Are you feeling okay today? I can tell by your attire that you are already an Acolyte. You're not joking around, are you?"; @@ -85,7 +85,7 @@ prt_church,184,41,4 script Cleric#aco 60,{ next; mes "[Father Mareusis]"; mes "Always remember to be thankful to God, who takes care of us all the time. In chaos and times of difficulty, face your hardships with unwavering faith."; - jobchange Job_Acolyte; + callfunc "Job_Change",Job_Acolyte; getitem 1545,1; // N_Mace next; mes "[Father Mareusis]"; diff --git a/npc/re/jobs/1-1/archer.txt b/npc/re/jobs/1-1/archer.txt index 86560b9ed..6803bb46e 100644 --- a/npc/re/jobs/1-1/archer.txt +++ b/npc/re/jobs/1-1/archer.txt @@ -61,7 +61,7 @@ payon_in02,64,71,4 script Archer Guildsman#archer 85,{ next; switch(select("I want to be an Archer.:I need the requirements, please.:Nothing, thanks.")) { case 1: - if(Class != Job_Novice) { + if(Class != Job_Novice && Class != Job_Baby) { mes "[Archer Guildsman]"; if(Class == Job_Archer) { mes "Haha, you are kidding me.."; @@ -90,7 +90,7 @@ payon_in02,64,71,4 script Archer Guildsman#archer 85,{ mes "[Archer Guildsman]"; mes "Congratulations! You are now an Archer! Also, we hope that you actively participate in many programs for the revival of the Archer Guild."; mes "Ah, items have arrived from the Production Department. Here, take these! These are all yours!"; - jobchange Job_Archer; + callfunc "Job_Change",Job_Archer; getitem 1742,1; // N_Composite_Bow getitem 12004,1; // Arrow_Container getitem 12009,1; // Silver_Arrow_Container diff --git a/npc/re/jobs/1-1/mage.txt b/npc/re/jobs/1-1/mage.txt index ee5eba7fd..6cc92b6e7 100644 --- a/npc/re/jobs/1-1/mage.txt +++ b/npc/re/jobs/1-1/mage.txt @@ -52,7 +52,7 @@ geffen_in,164,124,4 script Mage Guildsman#mage 123,{ close; } } - if(Class != Job_Novice) { + if(Class != Job_Novice && Class != Job_Baby) { mes "[Mage Guildsman]"; if(Class == Job_Mage) { mes "Hey, haven't you realized? You're already a Mage, silly!"; diff --git a/npc/re/jobs/1-1/merchant.txt b/npc/re/jobs/1-1/merchant.txt index a010af556..7dd41b452 100644 --- a/npc/re/jobs/1-1/merchant.txt +++ b/npc/re/jobs/1-1/merchant.txt @@ -57,7 +57,7 @@ alberta_in,53,43,6 script Merchant#mer 86,{ next; switch(select("I want to be a merchant.:I want to know more about merchants.:Ask him the requirements to be a merchant.:Nothing.")) { case 1: - if(Class != Job_Novice) { + if(Class != Job_Novice && Class != Job_Baby) { mes "[Guildsman Mahnsoo]"; if(Class == Job_Merchant) { mes ".....? Sorry? What are you saying?"; diff --git a/npc/re/jobs/1-1/swordman.txt b/npc/re/jobs/1-1/swordman.txt index cd01ecb28..32605d47e 100644 --- a/npc/re/jobs/1-1/swordman.txt +++ b/npc/re/jobs/1-1/swordman.txt @@ -80,7 +80,7 @@ izlude_in,74,172,4 script Swordman#swd 119,{ mes "In my opinion, Swordman is the best job ever!"; close; case 2: - if(Class != Job_Novice) { + if(Class != Job_Novice && Class != Job_Baby) { mes "[Swordman Guildsman]"; if(Class == Job_Swordman) { mes "You are already an excellent Swordman, aren't you?"; diff --git a/npc/re/jobs/1-1/thief.txt b/npc/re/jobs/1-1/thief.txt index 5bf41fa87..4de378804 100644 --- a/npc/re/jobs/1-1/thief.txt +++ b/npc/re/jobs/1-1/thief.txt @@ -65,7 +65,7 @@ moc_prydb1,39,129,2 script Thief Guide#thief 69,{ mes "If you want to become a Thief, ask the sharp-eyed guy next to me."; close; } - if(Class != Job_Novice) { + if(Class != Job_Novice && Class != Job_Baby) { if(Class == Job_Thief) { mes "[Thief Guildsman]"; mes "Hey~ if you have any trouble, get it out to me anytime, huh?"; @@ -169,7 +169,7 @@ moc_prydb1,42,133,2 script Thief Guildsman#thief 118,{ mes "[Commander of Thief Guild]"; mes "'"+strcharinfo(0)+".'"; mes "'For those who are ready, the moonlight shall open the way. Now you are fully ready, I now officially allow you to become a member of the Thief Guild.'"; - jobchange Job_Thief; + callfunc "Job_Change",Job_Thief; set q_job_thief,0; getitem 13041,1; // N_Main_Gauche next; @@ -189,7 +189,7 @@ moc_prydb1,42,133,2 script Thief Guildsman#thief 118,{ mes "See you again."; close; } - if(Class != Job_Novice) { + if(Class != Job_Novice && Class != Job_Baby) { if(Class == Job_Thief) { mes "[Brad]"; mes "I don't have any special events now. So go on your way and come back later."; -- cgit v1.2.3-70-g09d2 From 24ffcb5e44e16bf423d22b146502fef835aab725 Mon Sep 17 00:00:00 2001 From: Streusel Date: Wed, 13 Feb 2013 16:57:34 -0800 Subject: -Changed versions --- npc/re/jobs/1-1/acolyte.txt | 3 ++- npc/re/jobs/1-1/archer.txt | 3 ++- npc/re/jobs/1-1/mage.txt | 3 ++- npc/re/jobs/1-1/merchant.txt | 3 ++- npc/re/jobs/1-1/swordman.txt | 3 ++- npc/re/jobs/1-1/thief.txt | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/npc/re/jobs/1-1/acolyte.txt b/npc/re/jobs/1-1/acolyte.txt index 1ae78385c..6bc00e86e 100644 --- a/npc/re/jobs/1-1/acolyte.txt +++ b/npc/re/jobs/1-1/acolyte.txt @@ -3,12 +3,13 @@ //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== -//= 1.1 +//= 1.2 //===== Description: ========================================= //= Job Change to Acolyte Class //===== Additional Comments: ================================= //= 1.0 First Version. [Kisuka] //= 1.1 Added back the npcs used for the priest quest. +//= 1.2 Added Baby Job compatibility [Streusel] //============================================================ prt_church,184,41,4 script Cleric#aco 60,{ if (Upper == 1) { diff --git a/npc/re/jobs/1-1/archer.txt b/npc/re/jobs/1-1/archer.txt index 6803bb46e..4d98bbe49 100644 --- a/npc/re/jobs/1-1/archer.txt +++ b/npc/re/jobs/1-1/archer.txt @@ -3,11 +3,12 @@ //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Description: ========================================= //= Job Change to Archer Class //===== Additional Comments: ================================= //= 1.0 First Version. [Kisuka] +//= 1.1 Added Baby Job compatibility [Streusel] //============================================================ payon_in02,64,71,4 script Archer Guildsman#archer 85,{ if (Upper == 1) { diff --git a/npc/re/jobs/1-1/mage.txt b/npc/re/jobs/1-1/mage.txt index 6cc92b6e7..a25ec5635 100644 --- a/npc/re/jobs/1-1/mage.txt +++ b/npc/re/jobs/1-1/mage.txt @@ -3,13 +3,14 @@ //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= Job Change to Mage Class //===== Additional Comments: ================================= //= 1.0 First Version. [Kisuka] +//= 1.1 Added Baby Job compatibility [Streusel] //============================================================ geffen_in,164,124,4 script Mage Guildsman#mage 123,{ if (Upper == 1) { diff --git a/npc/re/jobs/1-1/merchant.txt b/npc/re/jobs/1-1/merchant.txt index 7dd41b452..0edefd1ac 100644 --- a/npc/re/jobs/1-1/merchant.txt +++ b/npc/re/jobs/1-1/merchant.txt @@ -3,13 +3,14 @@ //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= Job Change to Merchant Class //===== Additional Comments: ================================= //= 1.0 First Version. [Kisuka] +//= 1.1 Added Baby Job compatibility [Streusel] //============================================================ alberta_in,53,43,6 script Merchant#mer 86,{ if (Upper == 1) { diff --git a/npc/re/jobs/1-1/swordman.txt b/npc/re/jobs/1-1/swordman.txt index 32605d47e..168b32b2e 100644 --- a/npc/re/jobs/1-1/swordman.txt +++ b/npc/re/jobs/1-1/swordman.txt @@ -3,13 +3,14 @@ //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= Job Change to Swordman Class //===== Additional Comments: ================================= //= 1.0 First Version. [Kisuka] +//= 1.1 Added Baby Job compatibility [Streusel] //============================================================ izlude_in,74,172,4 script Swordman#swd 119,{ if (Upper == 1) { diff --git a/npc/re/jobs/1-1/thief.txt b/npc/re/jobs/1-1/thief.txt index 4de378804..b23846b5f 100644 --- a/npc/re/jobs/1-1/thief.txt +++ b/npc/re/jobs/1-1/thief.txt @@ -3,13 +3,14 @@ //===== By: ================================================== //= Kisuka //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= Job Change to Thief Class //===== Additional Comments: ================================= //= 1.0 First Version. [Kisuka] +//= 1.1 Added Baby Job compatibility [Streusel] //============================================================ moc_prydb1,39,129,2 script Thief Guide#thief 69,{ if (Upper == 1) { -- cgit v1.2.3-70-g09d2 From 810ba40b78087cc6aa7eb9ad3a3e46534393b9e8 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Thu, 14 Feb 2013 17:04:42 -0200 Subject: Introducing MySQL DB Update Checker First version. Signed-off-by: shennetsind --- sql-files/main.sql | 10 ++++++ sql-files/upgrades/index.txt | 0 sql-files/upgrades/upgrade_svn15003.sql | 1 - sql-files/upgrades/upgrade_svn15420_log.sql | 3 -- sql-files/upgrades/upgrade_svn15519_log.sql | 3 -- sql-files/upgrades/upgrade_svn15531_db.sql | 4 --- sql-files/upgrades/upgrade_svn15572.sql | 3 -- sql-files/upgrades/upgrade_svn15818_log.sql | 3 -- sql-files/upgrades/upgrade_svn15885.sql | 24 --------------- sql-files/upgrades/upgrade_svn15926_log.sql | 3 -- sql-files/upgrades/upgrade_svn16490.sql | 1 - sql-files/upgrades/upgrade_svn16518.sql | 1 - sql-files/upgrades/upgrade_svn16639.sql | 1 - sql-files/upgrades/upgrade_svn16645.sql | 2 -- sql-files/upgrades/upgrade_svn16663.sql | 1 - sql-files/upgrades/upgrade_svn16823.sql | 2 -- sql-files/upgrades/upgrade_svn16914.sql | 1 - sql-files/upgrades/upgrade_svn17014.sql | 9 ------ sql-files/upgrades/upgrade_svn17080.sql | 16 ---------- sql-files/upgrades/upgrade_svn17086.sql | 11 ------- src/char/char.c | 1 + src/common/sql.c | 47 +++++++++++++++++++++++++++++ src/common/sql.h | 2 +- src/login/account.h | 1 + src/login/account_sql.c | 4 +++ src/login/login.c | 4 ++- src/map/map.c | 2 ++ 27 files changed, 69 insertions(+), 91 deletions(-) create mode 100644 sql-files/upgrades/index.txt delete mode 100644 sql-files/upgrades/upgrade_svn15003.sql delete mode 100644 sql-files/upgrades/upgrade_svn15420_log.sql delete mode 100644 sql-files/upgrades/upgrade_svn15519_log.sql delete mode 100644 sql-files/upgrades/upgrade_svn15531_db.sql delete mode 100644 sql-files/upgrades/upgrade_svn15572.sql delete mode 100644 sql-files/upgrades/upgrade_svn15818_log.sql delete mode 100644 sql-files/upgrades/upgrade_svn15885.sql delete mode 100644 sql-files/upgrades/upgrade_svn15926_log.sql delete mode 100644 sql-files/upgrades/upgrade_svn16490.sql delete mode 100644 sql-files/upgrades/upgrade_svn16518.sql delete mode 100644 sql-files/upgrades/upgrade_svn16639.sql delete mode 100644 sql-files/upgrades/upgrade_svn16645.sql delete mode 100644 sql-files/upgrades/upgrade_svn16663.sql delete mode 100644 sql-files/upgrades/upgrade_svn16823.sql delete mode 100644 sql-files/upgrades/upgrade_svn16914.sql delete mode 100644 sql-files/upgrades/upgrade_svn17014.sql delete mode 100644 sql-files/upgrades/upgrade_svn17080.sql delete mode 100644 sql-files/upgrades/upgrade_svn17086.sql diff --git a/sql-files/main.sql b/sql-files/main.sql index e69279710..d772cec98 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -632,6 +632,16 @@ CREATE TABLE IF NOT EXISTS `skill_homunculus` ( PRIMARY KEY (`homun_id`,`id`) ) ENGINE=MyISAM; +-- +-- Table structure for table `sql_updates` +-- + +CREATE TABLE IF NOT EXISTS `sql_updates` ( + `timestamp` int(11) unsigned NOT NULL, + `ignored` enum('Yes','No') NOT NULL DEFAULT 'No' +) ENGINE=MyISAM; + + -- -- Table structure for table `sstatus` -- diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt new file mode 100644 index 000000000..e69de29bb diff --git a/sql-files/upgrades/upgrade_svn15003.sql b/sql-files/upgrades/upgrade_svn15003.sql deleted file mode 100644 index e30a3b0fd..000000000 --- a/sql-files/upgrades/upgrade_svn15003.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `global_reg_value` MODIFY `type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '3'; diff --git a/sql-files/upgrades/upgrade_svn15420_log.sql b/sql-files/upgrades/upgrade_svn15420_log.sql deleted file mode 100644 index 580dce9a2..000000000 --- a/sql-files/upgrades/upgrade_svn15420_log.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Adds 'I' and 'X' to `type` in `picklog` table - -ALTER TABLE `picklog` MODIFY `type` ENUM('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X') NOT NULL DEFAULT 'P'; diff --git a/sql-files/upgrades/upgrade_svn15519_log.sql b/sql-files/upgrades/upgrade_svn15519_log.sql deleted file mode 100644 index 623b022b8..000000000 --- a/sql-files/upgrades/upgrade_svn15519_log.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Adds 'D' and 'U' to `type` in `picklog` table - -ALTER TABLE `picklog` MODIFY `type` ENUM('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U') NOT NULL DEFAULT 'P'; diff --git a/sql-files/upgrades/upgrade_svn15531_db.sql b/sql-files/upgrades/upgrade_svn15531_db.sql deleted file mode 100644 index ce0e56302..000000000 --- a/sql-files/upgrades/upgrade_svn15531_db.sql +++ /dev/null @@ -1,4 +0,0 @@ --- `ExpPer` column removed from `mob_db` and `mob_db2` tables - -ALTER TABLE `mob_db` DROP COLUMN `ExpPer`; -ALTER TABLE `mob_db2` DROP COLUMN `ExpPer`; diff --git a/sql-files/upgrades/upgrade_svn15572.sql b/sql-files/upgrades/upgrade_svn15572.sql deleted file mode 100644 index 821bb79d6..000000000 --- a/sql-files/upgrades/upgrade_svn15572.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Rename `level` column to `group_id` in `login` table - -ALTER TABLE `login` CHANGE COLUMN `level` `group_id` TINYINT(3) NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/sql-files/upgrades/upgrade_svn15818_log.sql b/sql-files/upgrades/upgrade_svn15818_log.sql deleted file mode 100644 index b61f71f53..000000000 --- a/sql-files/upgrades/upgrade_svn15818_log.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Adds 'I' to `type` in `zenylog` - -ALTER TABLE `zenylog` MODIFY `type` ENUM('M','T','V','S','N','A','E','B','I') NOT NULL DEFAULT 'S'; diff --git a/sql-files/upgrades/upgrade_svn15885.sql b/sql-files/upgrades/upgrade_svn15885.sql deleted file mode 100644 index 48b25b5a7..000000000 --- a/sql-files/upgrades/upgrade_svn15885.sql +++ /dev/null @@ -1,24 +0,0 @@ -ALTER TABLE `char` ADD COLUMN `elemental_id` int(11) unsigned NOT NULL default '0'; - --- --- Table structure for table `elemental` --- - -CREATE TABLE IF NOT EXISTS `elemental` ( - `ele_id` int(11) unsigned NOT NULL auto_increment, - `char_id` int(11) NOT NULL, - `class` mediumint(9) unsigned NOT NULL default '0', - `mode` int(11) unsigned NOT NULL default '1', - `hp` int(12) NOT NULL default '1', - `sp` int(12) NOT NULL default '1', - `max_hp` mediumint(8) unsigned NOT NULL default '0', - `max_sp` mediumint(6) unsigned NOT NULL default '0', - `str` smallint(4) unsigned NOT NULL default '0', - `agi` smallint(4) unsigned NOT NULL default '0', - `vit` smallint(4) unsigned NOT NULL default '0', - `int` smallint(4) unsigned NOT NULL default '0', - `dex` smallint(4) unsigned NOT NULL default '0', - `luk` smallint(4) unsigned NOT NULL default '0', - `life_time` int(11) NOT NULL default '0', - PRIMARY KEY (`ele_id`) -) ENGINE=MyISAM; diff --git a/sql-files/upgrades/upgrade_svn15926_log.sql b/sql-files/upgrades/upgrade_svn15926_log.sql deleted file mode 100644 index 099ee6faa..000000000 --- a/sql-files/upgrades/upgrade_svn15926_log.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Adds 'D' to `type` in `zenylog` - -ALTER TABLE `zenylog` MODIFY `type` ENUM('M','T','V','S','N','A','E','B','I','D') NOT NULL DEFAULT 'S'; diff --git a/sql-files/upgrades/upgrade_svn16490.sql b/sql-files/upgrades/upgrade_svn16490.sql deleted file mode 100644 index b38445c46..000000000 --- a/sql-files/upgrades/upgrade_svn16490.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `char` ADD CONSTRAINT `name_key` UNIQUE (`name`); diff --git a/sql-files/upgrades/upgrade_svn16518.sql b/sql-files/upgrades/upgrade_svn16518.sql deleted file mode 100644 index 1c142c65f..000000000 --- a/sql-files/upgrades/upgrade_svn16518.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `inventory` ADD COLUMN `favorite` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `expire_time`; diff --git a/sql-files/upgrades/upgrade_svn16639.sql b/sql-files/upgrades/upgrade_svn16639.sql deleted file mode 100644 index 0da4b91d1..000000000 --- a/sql-files/upgrades/upgrade_svn16639.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `item_db_re` CHANGE `equip_level` `equip_level` VARCHAR(10) DEFAULT ''; diff --git a/sql-files/upgrades/upgrade_svn16645.sql b/sql-files/upgrades/upgrade_svn16645.sql deleted file mode 100644 index 9a3237ad8..000000000 --- a/sql-files/upgrades/upgrade_svn16645.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE `item_db_re` MODIFY COLUMN `atk:matk` VARCHAR(11) DEFAULT ''; -ALTER TABLE `item_db_re` MODIFY COLUMN `defence` SMALLINT(5) UNSIGNED DEFAULT NULL; \ No newline at end of file diff --git a/sql-files/upgrades/upgrade_svn16663.sql b/sql-files/upgrades/upgrade_svn16663.sql deleted file mode 100644 index 8883a108b..000000000 --- a/sql-files/upgrades/upgrade_svn16663.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `homunculus` ADD `prev_class` MEDIUMINT( 9 ) NOT NULL AFTER `class` diff --git a/sql-files/upgrades/upgrade_svn16823.sql b/sql-files/upgrades/upgrade_svn16823.sql deleted file mode 100644 index f4b211912..000000000 --- a/sql-files/upgrades/upgrade_svn16823.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE `item_db_re` MODIFY `defence` SMALLINT(5) DEFAULT NULL; -ALTER TABLE `item_db` MODIFY `defence` SMALLINT(5) DEFAULT NULL; diff --git a/sql-files/upgrades/upgrade_svn16914.sql b/sql-files/upgrades/upgrade_svn16914.sql deleted file mode 100644 index 2352077ac..000000000 --- a/sql-files/upgrades/upgrade_svn16914.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `zenylog` MODIFY `type` ENUM('T','V','P','M','S','N','D','C','A','E','I','B') NOT NULL DEFAULT 'S'; diff --git a/sql-files/upgrades/upgrade_svn17014.sql b/sql-files/upgrades/upgrade_svn17014.sql deleted file mode 100644 index 68a279aa7..000000000 --- a/sql-files/upgrades/upgrade_svn17014.sql +++ /dev/null @@ -1,9 +0,0 @@ -ALTER TABLE `elemental` CHANGE COLUMN `str` `atk1` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT 0, - CHANGE COLUMN `agi` `atk2` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT 0, - CHANGE COLUMN `vit` `matk` MEDIUMINT(6) UNSIGNED NOT NULL DEFAULT 0, - CHANGE COLUMN `int` `aspd` SMALLINT(4) UNSIGNED NOT NULL DEFAULT 0, - CHANGE COLUMN `dex` `def` SMALLINT(4) UNSIGNED NOT NULL DEFAULT 0, - CHANGE COLUMN `luk` `mdef` SMALLINT(4) UNSIGNED NOT NULL DEFAULT 0, - CHANGE COLUMN `life_time` `flee` SMALLINT(4) UNSIGNED NOT NULL DEFAULT 0, - ADD COLUMN `hit` SMALLINT(4) UNSIGNED NOT NULL DEFAULT 0 AFTER `flee`, - ADD COLUMN `life_time` INT(11) NOT NULL DEFAULT 0 AFTER `hit`; \ No newline at end of file diff --git a/sql-files/upgrades/upgrade_svn17080.sql b/sql-files/upgrades/upgrade_svn17080.sql deleted file mode 100644 index cfbe5dfe0..000000000 --- a/sql-files/upgrades/upgrade_svn17080.sql +++ /dev/null @@ -1,16 +0,0 @@ -CREATE TABLE IF NOT EXISTS `interreg` ( - `varname` varchar(11) NOT NULL, - `value` varchar(20) NOT NULL, - PRIMARY KEY (`varname`) -) ENGINE=InnoDB; -INSERT INTO `interreg` (`varname`, `value`) VALUES -('nsiuid', '0'); - -ALTER TABLE `auction` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0'; -ALTER TABLE `cart_inventory` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0'; -ALTER TABLE `guild_storage` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0'; -ALTER TABLE `inventory` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0'; -ALTER TABLE `mail` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0'; -ALTER TABLE `storage` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0'; - -ALTER TABLE `picklog` ADD `nsiuid` BIGINT NOT NULL DEFAULT '0' AFTER `card3`; diff --git a/sql-files/upgrades/upgrade_svn17086.sql b/sql-files/upgrades/upgrade_svn17086.sql deleted file mode 100644 index 3ba53e9ba..000000000 --- a/sql-files/upgrades/upgrade_svn17086.sql +++ /dev/null @@ -1,11 +0,0 @@ -UPDATE `interreg` SET `varname` = 'unique_id' WHERE `interreg`.`varname` = 'nsiuid'; - - -ALTER TABLE `auction` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0'; -ALTER TABLE `cart_inventory` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0'; -ALTER TABLE `guild_storage` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0'; -ALTER TABLE `inventory` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0'; -ALTER TABLE `mail` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0'; -ALTER TABLE `storage` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0'; - -ALTER TABLE `picklog` CHANGE `nsiuid` `unique_id` BIGINT( 20 ) NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/src/char/char.c b/src/char/char.c index 1b5c7898d..f3f93ab01 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -4820,6 +4820,7 @@ int do_init(int argc, char **argv) char_fd = make_listen_bind(bind_ip, char_port); ShowStatus("The char-server is "CL_GREEN"ready"CL_RESET" (Server is listening on the port %d).\n\n", char_port); + Sql_HerculesUpdateCheck(sql_handle); if( runflag != CORE_ST_STOP ) { shutdown_callback = do_shutdown; diff --git a/src/common/sql.c b/src/common/sql.c index b842db46d..fdb6e0114 100644 --- a/src/common/sql.c +++ b/src/common/sql.c @@ -1016,6 +1016,53 @@ void Sql_inter_server_read(const char* cfgName, bool first) { return; } +void Sql_HerculesUpdateCheck(Sql* self) { + char line[22];// "yyyy-mm-dd--hh-mm" (17) + ".sql" (4) + 1 + FILE* ifp;/* index fp */ + unsigned int performed = 0; + + if( !( ifp = fopen("sql-files/upgrades/index.txt", "r") ) ) { + ShowError("SQL upgrade index was not found!\n"); + return; + } + + while(fgets(line, sizeof(line), ifp)) { + char path[41];// "sql-files/upgrades/" (19) + "yyyy-mm-dd--hh-mm" (17) + ".sql" (4) + 1 + char timestamp[11];// "1360186680" (10) + 1 + FILE* ufp;/* upgrade fp */ + + sprintf(path,"sql-files/upgrades/%s",line); + + if( !( ufp = fopen(path, "r") ) ) { + ShowError("SQL upgrade file %s was not found!\n",path); + continue; + } + + if( fgetc(ufp) != '#' ) + continue; + + fseek (ufp,1,SEEK_SET);/* woo. skip the # */ + + if( fgets(timestamp,sizeof(timestamp),ufp) ) { + unsigned int timestampui = atol(timestamp); + if( SQL_ERROR == Sql_Query(self, "SELECT 1 FROM `sql_updates` WHERE `timestamp` = '%u' LIMIT 1", timestampui) ) + Sql_ShowDebug(self); + if( Sql_NumRows(self) != 1 ) { + ShowSQL("'"CL_WHITE"%s"CL_RESET"' wasn't applied to the database\n",path); + performed++; + } + } + + fclose(ufp); + } + + fclose(ifp); + + if( performed ) { + ShowSQL("If you did apply these updates or would like to be skip, insert a new entry in your sql_updates table with the timestamp of each file\n"); + } +} + void Sql_Init(void) { Sql_inter_server_read("conf/inter-server.conf",true); } diff --git a/src/common/sql.h b/src/common/sql.h index b7159ec90..ebbd1711f 100644 --- a/src/common/sql.h +++ b/src/common/sql.h @@ -325,7 +325,7 @@ int SqlStmt_NextRow(SqlStmt* self); /// Frees the result of the statement execution. void SqlStmt_FreeResult(SqlStmt* self); - +void Sql_HerculesUpdateCheck(Sql* self); #if defined(SQL_REMOVE_SHOWDEBUG) #define SqlStmt_ShowDebug(self) (void)0 diff --git a/src/login/account.h b/src/login/account.h index 1b567be70..adbcb7102 100644 --- a/src/login/account.h +++ b/src/login/account.h @@ -152,5 +152,6 @@ struct AccountDB AccountDBIterator* (*iterator)(AccountDB* self); }; +void account_db_sql_up(AccountDB* self); #endif // __ACCOUNT_H_INCLUDED__ diff --git a/src/login/account_sql.c b/src/login/account_sql.c index 5073941e2..ae80163af 100644 --- a/src/login/account_sql.c +++ b/src/login/account_sql.c @@ -678,3 +678,7 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo return result; } +void account_db_sql_up(AccountDB* self) { + AccountDB_SQL* db = (AccountDB_SQL*)self; + Sql_HerculesUpdateCheck(db->accounts); +} \ No newline at end of file diff --git a/src/login/login.c b/src/login/login.c index 7f272e2a4..c7e250040 100644 --- a/src/login/login.c +++ b/src/login/login.c @@ -1879,6 +1879,8 @@ int do_init(int argc, char** argv) ShowStatus("The login-server is "CL_GREEN"ready"CL_RESET" (Server is listening on the port %u).\n\n", login_config.login_port); login_log(0, "login server", 100, "login server started"); - + + account_db_sql_up(accounts); + return 0; } diff --git a/src/map/map.c b/src/map/map.c index 6f9401dad..a42d7abca 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -3939,6 +3939,8 @@ int do_init(int argc, char *argv[]) ShowStatus("Server is '"CL_GREEN"ready"CL_RESET"' and listening on port '"CL_WHITE"%d"CL_RESET"'.\n\n", map_port); + Sql_HerculesUpdateCheck(mmysql_handle); + if( runflag != CORE_ST_STOP ) { shutdown_callback = do_shutdown; -- cgit v1.2.3-70-g09d2 From 2bc85620e0b91aaaa29f929e618d5f6d6623b4f0 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Thu, 14 Feb 2013 17:18:11 -0200 Subject: Fixed Bug #5018 Skills granted through scripts are now permanent, until this date they were not relog persistent Signed-off-by: shennetsind --- sql-files/main.sql | 3 +++ sql-files/upgrades/2013-02-14--16-15.sql | 7 +++++++ sql-files/upgrades/index.txt | 1 + src/char/char.c | 26 +++++++++++++++----------- src/map/pc.c | 17 ++++++++++------- 5 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 sql-files/upgrades/2013-02-14--16-15.sql diff --git a/sql-files/main.sql b/sql-files/main.sql index d772cec98..fbdf40dde 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -618,6 +618,7 @@ CREATE TABLE IF NOT EXISTS `skill` ( `char_id` int(11) unsigned NOT NULL default '0', `id` smallint(11) unsigned NOT NULL default '0', `lv` tinyint(4) unsigned NOT NULL default '0', + `flag` TINYINT(1) UNSIGNED NOT NULL default 0, PRIMARY KEY (`char_id`,`id`) ) ENGINE=MyISAM; @@ -641,6 +642,8 @@ CREATE TABLE IF NOT EXISTS `sql_updates` ( `ignored` enum('Yes','No') NOT NULL DEFAULT 'No' ) ENGINE=MyISAM; +-- Existent updates to enter +INSERT INTO `sql_updates` (`timestamp`) VALUES (1360858500); -- -- Table structure for table `sstatus` diff --git a/sql-files/upgrades/2013-02-14--16-15.sql b/sql-files/upgrades/2013-02-14--16-15.sql new file mode 100644 index 000000000..9afd034b1 --- /dev/null +++ b/sql-files/upgrades/2013-02-14--16-15.sql @@ -0,0 +1,7 @@ +#1360858500 +CREATE TABLE IF NOT EXISTS `sql_updates` ( + `timestamp` int(11) unsigned NOT NULL, + `ignored` enum('Yes','No') NOT NULL DEFAULT 'No' +) ENGINE=MyISAM; +ALTER TABLE `skill` ADD COLUMN `flag` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0; +INSERT INTO `sql_updates` (`timestamp`) VALUES (1360858500); \ No newline at end of file diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt index e69de29bb..e0c49cbce 100644 --- a/sql-files/upgrades/index.txt +++ b/sql-files/upgrades/index.txt @@ -0,0 +1 @@ +2013-02-14--16-15.sql \ No newline at end of file diff --git a/src/char/char.c b/src/char/char.c index f3f93ab01..8be0134ba 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -595,19 +595,20 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus* p) } StringBuf_Clear(&buf); - StringBuf_Printf(&buf, "INSERT INTO `%s`(`char_id`,`id`,`lv`) VALUES ", skill_db); + StringBuf_Printf(&buf, "INSERT INTO `%s`(`char_id`,`id`,`lv`,`flag`) VALUES ", skill_db); //insert here. - for( i = 0, count = 0; i < MAX_SKILL; ++i ) - { - if( p->skill[i].id != 0 && p->skill[i].flag != SKILL_FLAG_TEMPORARY ) - { - if( p->skill[i].flag == SKILL_FLAG_PERMANENT && p->skill[i].lv == 0 ) + for( i = 0, count = 0; i < MAX_SKILL; ++i ) { + if( p->skill[i].id != 0 && p->skill[i].flag != SKILL_FLAG_TEMPORARY ) { + + if( p->skill[i].lv == 0 && ( p->skill[i].flag == SKILL_FLAG_PERM_GRANTED || p->skill[i].flag == SKILL_FLAG_PERMANENT ) ) continue; - if( p->skill[i].flag != SKILL_FLAG_PERMANENT && (p->skill[i].flag - SKILL_FLAG_REPLACED_LV_0) == 0 ) + if( p->skill[i].flag != SKILL_FLAG_PERMANENT && p->skill[i].flag != SKILL_FLAG_PERM_GRANTED && (p->skill[i].flag - SKILL_FLAG_REPLACED_LV_0) == 0 ) continue; if( count ) StringBuf_AppendStr(&buf, ","); - StringBuf_Printf(&buf, "('%d','%d','%d')", char_id, p->skill[i].id, (p->skill[i].flag == SKILL_FLAG_PERMANENT ? p->skill[i].lv : p->skill[i].flag - SKILL_FLAG_REPLACED_LV_0)); + StringBuf_Printf(&buf, "('%d','%d','%d','%d')", char_id, p->skill[i].id, + ( (p->skill[i].flag == SKILL_FLAG_PERMANENT || p->skill[i].flag == SKILL_FLAG_PERM_GRANTED) ? p->skill[i].lv : p->skill[i].flag - SKILL_FLAG_REPLACED_LV_0), + p->skill[i].flag == SKILL_FLAG_PERM_GRANTED ? p->skill[i].flag : 0);/* other flags do not need to be saved */ ++count; } } @@ -1274,13 +1275,16 @@ int mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_everything //read skill //`skill` (`char_id`, `id`, `lv`) - if( SQL_ERROR == SqlStmt_Prepare(stmt, "SELECT `id`, `lv` FROM `%s` WHERE `char_id`=? LIMIT %d", skill_db, MAX_SKILL) + if( SQL_ERROR == SqlStmt_Prepare(stmt, "SELECT `id`, `lv`,`flag` FROM `%s` WHERE `char_id`=? LIMIT %d", skill_db, MAX_SKILL) || SQL_ERROR == SqlStmt_BindParam(stmt, 0, SQLDT_INT, &char_id, 0) || SQL_ERROR == SqlStmt_Execute(stmt) || SQL_ERROR == SqlStmt_BindColumn(stmt, 0, SQLDT_USHORT, &tmp_skill.id, 0, NULL, NULL) - || SQL_ERROR == SqlStmt_BindColumn(stmt, 1, SQLDT_USHORT, &tmp_skill.lv, 0, NULL, NULL) ) + || SQL_ERROR == SqlStmt_BindColumn(stmt, 1, SQLDT_USHORT, &tmp_skill.lv, 0, NULL, NULL) + || SQL_ERROR == SqlStmt_BindColumn(stmt, 2, SQLDT_USHORT, &tmp_skill.flag, 0, NULL, NULL) ) SqlStmt_ShowDebug(stmt); - tmp_skill.flag = SKILL_FLAG_PERMANENT; + + if( tmp_skill.flag != SKILL_FLAG_PERM_GRANTED ) + tmp_skill.flag = SKILL_FLAG_PERMANENT; for( i = 0; i < MAX_SKILL && SQL_SUCCESS == SqlStmt_NextRow(stmt); ++i ) { diff --git a/src/map/pc.c b/src/map/pc.c index 0dd210394..1bc37040e 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1253,7 +1253,7 @@ static int pc_calc_skillpoint(struct map_session_data* sd) if(sd->status.skill[i].flag == SKILL_FLAG_PERMANENT) skill_point += skill; else - if(sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0) + if(sd->status.skill[i].flag == SKILL_FLAG_REPLACED_LV_0) skill_point += (sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0); } } @@ -1283,13 +1283,13 @@ int pc_calc_skilltree(struct map_session_data *sd) for( i = 0; i < MAX_SKILL; i++ ) { - if( sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED ) //Don't touch plagiarized skills + if( sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED ) //Don't touch these sd->status.skill[i].id = 0; //First clear skills. } for( i = 0; i < MAX_SKILL; i++ ) { - if( sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED ) + if( sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED ) { // Restore original level of skills after deleting earned skills. sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0; sd->status.skill[i].flag = SKILL_FLAG_PERMANENT; @@ -1509,7 +1509,7 @@ int pc_clean_skilltree(struct map_session_data *sd) sd->status.skill[i].flag = 0; } else - if (sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0){ + if (sd->status.skill[i].flag == SKILL_FLAG_REPLACED_LV_0){ sd->status.skill[i].lv = sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0; sd->status.skill[i].flag = 0; } @@ -3442,7 +3442,7 @@ int pc_skill(TBL_PC* sd, int id, int level, int flag) case 0: //Set skill data overwriting whatever was there before. sd->status.skill[id].id = id; sd->status.skill[id].lv = level; - sd->status.skill[id].flag = SKILL_FLAG_PERMANENT; + sd->status.skill[id].flag = SKILL_FLAG_PERM_GRANTED; if( level == 0 ) //Remove skill. { sd->status.skill[id].id = 0; @@ -6056,7 +6056,7 @@ int pc_allskillup(struct map_session_data *sd) nullpo_ret(sd); for(i=0;istatus.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED) { + if (sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED) { sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0; sd->status.skill[i].flag = SKILL_FLAG_PERMANENT; if (sd->status.skill[i].lv == 0) @@ -6329,6 +6329,9 @@ int pc_resetskill(struct map_session_data* sd, int flag) if( i == NV_BASIC && (sd->class_&MAPID_UPPERMASK) != MAPID_NOVICE ) continue; + if( sd->status.skill[i].flag == SKILL_FLAG_PERM_GRANTED ) + continue; + if( flag&4 && !skill_ischangesex(i) ) continue; @@ -6344,7 +6347,7 @@ int pc_resetskill(struct map_session_data* sd, int flag) if( sd->status.skill[i].flag == SKILL_FLAG_PERMANENT ) skill_point += lv; else - if( sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0 ) + if( sd->status.skill[i].flag == SKILL_FLAG_REPLACED_LV_0 ) skill_point += (sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0); if( !(flag&2) ) -- cgit v1.2.3-70-g09d2 From 49831814d6a462104e5a4b61bdff405a3bb69fb1 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Thu, 14 Feb 2013 17:22:50 -0200 Subject: Updating equip[] for script.c functions Script commands relying on equipment slot may now access the 3 following types EQI_COSTUME_HEAD_LOW (11) EQI_COSTUME_HEAD_MID (12) EQI_COSTUME_HEAD_TOP (13) e.g. getequipid(13) returns the item id of the equipped costume head top (if any) Signed-off-by: shennetsind --- src/map/script.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/map/script.c b/src/map/script.c index b89121ee4..83b6c1a68 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -7347,7 +7347,7 @@ BUILDIN_FUNC(strnpcinfo) // aegis->athena slot position conversion table -static unsigned int equip[] = {EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_GARMENT,EQP_SHOES,EQP_ACC_L,EQP_ACC_R,EQP_HEAD_MID,EQP_HEAD_LOW}; +static unsigned int equip[] = {EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_GARMENT,EQP_SHOES,EQP_ACC_L,EQP_ACC_R,EQP_HEAD_MID,EQP_HEAD_LOW,EQP_COSTUME_HEAD_LOW,EQP_COSTUME_HEAD_MID,EQP_COSTUME_HEAD_TOP}; /*========================================== * GetEquipID(Pos); Pos: 1-10 -- cgit v1.2.3-70-g09d2 From 82005a99f5b1cca68e9fb1ac6b1614c815e4bd45 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Thu, 14 Feb 2013 19:13:14 -0200 Subject: Introducing Git Hash Added 'Git Hash' way to identify where you last updated your working copy (it won't detect your local changes' hash -- intended). Also Implemented HERC_UNKNOWN_VER, a simple way to detect whether get_svn_revision or get_git_hash failed to detect (before you'd need to strncmp for "unknown" or similars) Signed-off-by: shennetsind --- src/common/core.c | 40 ++++++++++++++++++++++++++++++++++++---- src/common/core.h | 5 ++++- src/map/pc.c | 11 +++++++++-- src/map/script.c | 6 +++--- 4 files changed, 52 insertions(+), 10 deletions(-) diff --git a/src/common/core.c b/src/common/core.c index 42cdfa7cd..d1a374b29 100644 --- a/src/common/core.c +++ b/src/common/core.c @@ -254,17 +254,46 @@ const char* get_svn_revision(void) } // fallback - snprintf(svn_version_buffer, sizeof(svn_version_buffer), "Unknown"); + svn_version_buffer[0] = HERC_UNKNOWN_VER; return svn_version_buffer; } #endif - +/* whats our origin */ +#define GIT_ORIGIN "master" +/* Grabs the hash from the last time the user updated his working copy (last pull) */ +const char *get_git_hash (void) { + static char HerculesGitHash[41] = "";//Sha(40) + 1 + FILE *fp; + + if( HerculesGitHash[0] != '\0' ) + return HerculesGitHash; + + if ( (fp = fopen (".git/refs/remotes/origin/"GIT_ORIGIN, "r")) != NULL) { + char line[64]; + char *rev = malloc (sizeof (char) * 50); + + if (fgets (line, sizeof (line), fp) && sscanf (line, "%s", rev)) + snprintf (HerculesGitHash, sizeof (HerculesGitHash), "%s", rev); + + free (rev); + fclose (fp); + } else { + HerculesGitHash[0] = HERC_UNKNOWN_VER; + } + + if (! (*HerculesGitHash)) { + HerculesGitHash[0] = HERC_UNKNOWN_VER; + } + + return HerculesGitHash; +} /*====================================== * CORE : Display title * ASCII By CalciumKid 1/12/2011 *--------------------------------------*/ static void display_title(void) { - //ClearScreen(); // clear screen and go up/left (0, 0 position in text) + const char* svn = get_svn_revision(); + const char* git = get_git_hash(); ShowMessage("\n"); ShowMessage(""CL_BG_RED" "CL_BT_WHITE" "CL_BG_RED""CL_CLL""CL_NORMAL"\n"); @@ -279,7 +308,10 @@ static void display_title(void) { ShowMessage(""CL_BG_RED" "CL_BT_WHITE" http://hercules.ws/board/ "CL_BG_RED""CL_CLL""CL_NORMAL"\n"); ShowMessage(""CL_BG_RED" "CL_BT_WHITE" "CL_BG_RED""CL_CLL""CL_NORMAL"\n"); - //ShowInfo("SVN Revision: '"CL_WHITE"%s"CL_RESET"'.\n", get_svn_revision()); + if( git[0] != HERC_UNKNOWN_VER ) + ShowInfo("Git Hash: '"CL_WHITE"%s"CL_RESET"'\n", git); + else if( svn[0] != HERC_UNKNOWN_VER ) + ShowInfo("SVN Revision: '"CL_WHITE"%s"CL_RESET"'\n", svn); } // Warning if executed as superuser (root) diff --git a/src/common/core.h b/src/common/core.h index f619d821f..8007e6036 100644 --- a/src/common/core.h +++ b/src/common/core.h @@ -16,6 +16,8 @@ extern char **arg_v; extern int buildbotflag; #endif +#define HERC_UNKNOWN_VER '\x02' + /// @see E_CORE_ST extern int runflag; extern char *SERVER_NAME; @@ -31,7 +33,8 @@ enum { extern char SERVER_TYPE; extern int parse_console(const char* buf); -extern const char *get_svn_revision(void); +const char *get_svn_revision(void); +const char *get_git_hash (void); extern int do_init(int,char**); extern void set_server_type(void); extern void do_abort(void); diff --git a/src/map/pc.c b/src/map/pc.c index 1bc37040e..e544fdd53 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1058,9 +1058,16 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim if( !changing_mapservers ) { - if (battle_config.display_version == 1){ + if (battle_config.display_version == 1) { + const char* svn = get_svn_revision(); + const char* git = get_git_hash(); char buf[256]; - sprintf(buf, "SVN version: %s", get_svn_revision()); + if( git[0] != HERC_UNKNOWN_VER ) + sprintf(buf,"Git Hash: %s", git); + else if( svn[0] != HERC_UNKNOWN_VER ) + sprintf(buf,"SVN Revision: %s", svn); + else + sprintf(buf,"Unknown Version"); clif_displaymessage(sd->fd, buf); } diff --git a/src/map/script.c b/src/map/script.c index 83b6c1a68..fe00599a6 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -16992,10 +16992,10 @@ BUILDIN_FUNC(is_function) { * get_revision() -> retrieves the current svn revision (if available) **/ BUILDIN_FUNC(get_revision) { - const char * revision; + const char *svn = get_svn_revision(); - if ( (revision = get_svn_revision()) != 0 ) - script_pushint(st,atoi(revision)); + if ( svn[0] != HERC_UNKNOWN_VER ) + script_pushint(st,atoi(svn)); else script_pushint(st,-1);//unknown -- cgit v1.2.3-70-g09d2 From 7dce14e8ecf9aeb4b88afd08098b74c929231a25 Mon Sep 17 00:00:00 2001 From: Streusel Date: Thu, 14 Feb 2013 13:30:19 -0800 Subject: -Updated EXP values & added checkre() checks to provide better support for pre-re users --- npc/quests/eye_of_hellion.txt | 5 +- npc/quests/quests_13_1.txt | 103 ++++++++++++++++++++++++++++++++---------- 2 files changed, 81 insertions(+), 27 deletions(-) diff --git a/npc/quests/eye_of_hellion.txt b/npc/quests/eye_of_hellion.txt index f1a63e272..841e93734 100644 --- a/npc/quests/eye_of_hellion.txt +++ b/npc/quests/eye_of_hellion.txt @@ -19,6 +19,7 @@ //= 1.7 Corrected reminants from aegis conversion. [L0en_w0lf] //= 1.8 Replaced effect numerics with constants. [L0ne_W0lf] //= 1.9 Removed duplicate text. [Kisuka] +//= 2.0 Corrected EXP reward //============================================================ morocc_in,116,101,3 script Old Scholar Tyus#hellion 735,3,3,{ @@ -545,7 +546,7 @@ morocc_in,116,101,3 script Old Scholar Tyus#hellion 735,3,3,{ set HELLIONQ,69; getitem 2658,1; //Nile_Rose_ getitem 603,1; //Old_Blue_Box - getexp 120000,0; + getexp 1200000,0; next; mes "[Sir Chilias'Tyus]"; mes "Thank you, kind"; @@ -612,7 +613,7 @@ morocc_in,116,101,3 script Old Scholar Tyus#hellion 735,3,3,{ delitem 7332,1; //Slate set HELLIONQ,70; getitem 2658,1; //Nile_Rose_ - getexp 100000,0; + getexp 1000000,0; next; mes "[Sir Chilias'Tyus]"; mes "Thank you, kind"; diff --git a/npc/quests/quests_13_1.txt b/npc/quests/quests_13_1.txt index 86b0697a4..f9d63a367 100644 --- a/npc/quests/quests_13_1.txt +++ b/npc/quests/quests_13_1.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== -//= 2.6a +//= 2.7 //===== Description: ========================================= //= [Official Conversion] //= Contains Quests: @@ -43,6 +43,7 @@ //= 2.5a Minor fixes. [Euphy] //= 2.6 Disabled "Ash Vacuum Warper" as it's no longer in iRO. [Euphy] //= 2.6a Added 'npcskill' command. [Euphy] +//= 2.7 Updated incorrect EXP values & added checkre() checks //============================================================ // Onward to the New World @@ -292,7 +293,10 @@ prt_castle,83,67,5 script Recruiter for the Brave 109,{ next; changequest 10064,10065; set ep13_ryu,9; - getexp 66000,21000; + if(checkre(0)) + getexp 66000,21000; + else + getexp 660000,210000; mes "[Recruiter]"; mes "Just go there!"; mes "And listen carefully"; @@ -1938,7 +1942,10 @@ moc_fild22b,230,197,5 script Munkenro#2 967,{ next; completequest 10078; set ep13_ryu,100; - getexp 66000,21000; + if(checkre(0)) + getexp 66000,21000; + else + getexp 660000,210000; mes "[Munkenro]"; mes "I will let you go there."; mes "Let me know once you are ready."; @@ -2831,7 +2838,10 @@ mid_camp,261,284,4 script Instructor#ep13bs 405,{ set ep13_newbs,100; getitem 617,1; //Old_Violet_Box getitem 12322,5; //Chocolate_Pie - getexp 100000,10000; + if(checkre(0)) + getexp 100000,10000; + else + getexp 1000000,100000; completequest 11100; close; } @@ -4361,7 +4371,10 @@ mid_camp,188,254,3 script Monster Scholar#ep13 883,{ mes "I hope you'll make yourself known in Ash Vacuum with your great accomplishments."; set ep13_animal,15; completequest 2157; - getexp 150000,0; + if(checkre(0)) + getexp 100000,0; + else + getexp 1500000,0; close; } else { @@ -4459,7 +4472,10 @@ mid_camp,188,254,3 script Monster Scholar#ep13 883,{ mes "- You pat his shoulder gently, it's worrying that Rumis is not able to return to his country. -"; set ep13_animal,100; delitem 6033,1; //Horn_Of_Tendrilion - getexp 100000,0; + if(checkre(0)) + getexp 50000,0; + else + getexp 1000000,0; close; } else { @@ -5291,7 +5307,10 @@ mid_camp,212,237,5 script Camp Guard Captain#man1 852,{ mes "I'll discuss this more with the expedition management."; mes "Thank you for your valuable information."; completequest 2158; - getexp 70000,0; + if(checkre(0)) + getexp 90000,0; + else + getexp 900000,0; close; } else if (checkquest(2158) == -1) { @@ -5312,7 +5331,10 @@ mid_camp,212,237,5 script Camp Guard Captain#man1 852,{ mes "I'll discuss this more with the expedition management."; mes "Thank you for your valuable information."; completequest 2159; - getexp 70000,0; + if(checkre(0)) + getexp 90000,0; + else + getexp 900000,0; close; } else { @@ -5334,7 +5356,10 @@ mid_camp,212,237,5 script Camp Guard Captain#man1 852,{ mes "I'll discuss this more with the expedition management."; mes "Thank you for your valuable information."; completequest 2159; - getexp 70000,0; + if(checkre(0)) + getexp 90000,0; + else + getexp 900000,0; close; } else { @@ -5760,7 +5785,10 @@ OnTouch: mes "- You feel so refreshed and light, as you drink the tea that the Official offered. -"; specialeffect2 EF_ABSORBSPIRITS; set ep13_1_rhea,100; - getexp 30000,10000; + if(checkre(0)) + getexp 80000,3000; + else + getexp 300000,10000; completequest 8210; next; mes "[United Research Official]"; @@ -7577,7 +7605,10 @@ mid_camp,143,306,5 script Breeder Taab#ep13_alba 946,{ next; delitem 579,50; //Delicious_Fish set ep13_alba,6; - getexp 8000,3000; + if(checkre(0)) + getexp 8000,3000; + else + getexp 80000,30000; erasequest 7042; setquest 7047; mes "^4d4dff You have received 8,000 EXP"; @@ -7610,7 +7641,10 @@ mid_camp,143,306,5 script Breeder Taab#ep13_alba 946,{ delitem 7198,30; //Great_Leaf delitem 7188,30; //Browny_Root set ep13_alba,6; - getexp 9000,4000; + if(checkre(0)) + getexp 9000,4000; + else + getexp 90000,40000; erasequest 7043; setquest 7047; mes "^4d4dff You have received 9,000 EXP"; @@ -7648,7 +7682,10 @@ mid_camp,143,306,5 script Breeder Taab#ep13_alba 946,{ delitem 528,20; //Monster's_Feed delitem 537,30; //Pet_Food set ep13_alba,6; - getexp 8000,3000; + if(checkre(0)) + getexp 8000,3000; + else + getexp 80000,30000; erasequest 7044; setquest 7047; mes "^4d4dff You have received 8,000 EXP"; @@ -7683,7 +7720,10 @@ mid_camp,143,306,5 script Breeder Taab#ep13_alba 946,{ delitem 517,50; //Meat delitem 537,30; //Pet_Food set ep13_alba,6; - getexp 8000,3000; + if(checkre(0)) + getexp 8000,3000; + else + getexp 80000,30000; erasequest 7045; setquest 7047; mes "^4d4dff You have received 8,000 EXP"; @@ -7715,7 +7755,10 @@ mid_camp,143,306,5 script Breeder Taab#ep13_alba 946,{ next; delitem 6020,30; //Fur set ep13_alba,6; - getexp 8000,3000; + if(checkre(0)) + getexp 8000,3000; + else + getexp 80000,30000; erasequest 7046; setquest 7047; mes "^4d4dff You have received 8,000 EXP"; @@ -8022,7 +8065,7 @@ function Catwarp; close; } } - else if ((ep13_yong1 > 39) && (ep13_yong1 < 200)) { + else if ((ep13_yong1 > 39) && (ep13_yong1 < 100)) { mes "[Cat Hand Agent]"; mes "Cat Trading's available services are as followed."; mes "For additional services, please consult Agent Gyaruk."; @@ -8467,7 +8510,7 @@ mid_camp,69,144,0 script Ferocious Gorurug 421,{ mes "You've brough Pieces of Fish!"; mes "GOOD JOB!"; delitem 6039,10; //Piece_Of_Fish - getexp 3000,0; + getexp 20000,0; set ep13_yong1,10; setquest 12060; next; @@ -8487,7 +8530,7 @@ mid_camp,69,144,0 script Ferocious Gorurug 421,{ mes "You've brough Pieces of Fish!"; mes "GOOD JOB!"; delitem 6039,10; //Piece_Of_Fish - getexp 1500,0; + getexp 15000,0; setquest 12060; set ep13_yong1,ep13_yong1+1; next; @@ -8508,7 +8551,7 @@ mid_camp,69,144,0 script Ferocious Gorurug 421,{ mes "You've brough Pieces of Fish!"; mes "GOOD JOB!"; delitem 6039,10; //Piece_Of_Fish - getexp 1500,0; + getexp 15000,0; setquest 12060; set ep13_yong1,ep13_yong1+1; next; @@ -8528,7 +8571,7 @@ mid_camp,69,144,0 script Ferocious Gorurug 421,{ mes "You've brough Pieces of Fish!"; mes "GOOD JOB!"; delitem 6039,10; //Piece_Of_Fish - getexp 1500,0; + getexp 15000,0; setquest 12060; set ep13_yong1,ep13_yong1+1; next; @@ -8543,7 +8586,7 @@ mid_camp,69,144,0 script Ferocious Gorurug 421,{ close; } } - else if ((ep13_yong1 > 59) && (ep13_yong1 < 300)) { + else if ((ep13_yong1 > 59) && (ep13_yong1 < 80)) { npcskill "AL_HEAL",8,50,50; if (countitem(6039) > 9) { mes "[Ferocious Gorurug]"; @@ -8714,7 +8757,7 @@ mid_camp,88,100,55 script Cat Hand Mining Agent 876,{ mes "Thank you for collecting minerals for me."; next; delitem 6048,3; //Unidentified_Mineral - getexp 3000,0; + getexp 20000,0; setquest 12062; set ep13_yong1,ep13_yong1+1; select("I'm freezing! Take them quickly."); @@ -9229,7 +9272,11 @@ mid_campin,90,121,5 script Hibba Agip 459,{ mes "And please take this small reward."; mes "Thank you for your help so far."; next; - getexp 3750000,0; + if(checkre(0) + getexp 30000,0; //kRO + //getexp 3750000,0; //iRO? + else + getexp 2500000,0; getitem 12110,3; //First_Aid_Kit set ep13_1_edq,14; completequest 3094; @@ -11625,7 +11672,10 @@ mid_campin,68,185,3 script Pursuit Party Leader#1 803,{ mes "[Echinacea]"; mes "Keep up the good work assisting the explorers in this camp."; set mao_morocc2,100; - getexp 120000,20000; + if(checkre(0)) + getexp 120000,20000; + else + getexp 1200000,200000; getitem 617,1; //Old_Violet_Box completequest 7036; close; @@ -12002,7 +12052,10 @@ mid_camp,199,311,7 script Mr. Kidd#ep13_dan01 884,{ delitem 6029,1; //Morocc_Tracing_Log delitem 6027,1; //Crystal_Of_Feardoom set mao_morocc2,10; - getexp 20000,1000; + if(checkre(0)) + getexp 20000,1000; + else + getexp 200000,10000; changequest 7018,7019; close2; } -- cgit v1.2.3-70-g09d2 From 3a0053214b4a5a632b7d3e93e3458e503c34487c Mon Sep 17 00:00:00 2001 From: Streusel Date: Thu, 14 Feb 2013 13:51:58 -0800 Subject: -Fixed some mob skill stuff thanks to playtester & euphy --- db/pre-re/mob_skill_db.txt | 4 ++-- db/re/mob_skill_db.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/db/pre-re/mob_skill_db.txt b/db/pre-re/mob_skill_db.txt index d8370a17e..cba21fc60 100644 --- a/db/pre-re/mob_skill_db.txt +++ b/db/pre-re/mob_skill_db.txt @@ -5746,11 +5746,11 @@ 2072,Jaguar@NPC_COMBOATTACK,attack,171,1,500,500,5000,no,target,always,0,,,,,,6, 2072,Jaguar@AS_SONICBLOW,attack,136,3,500,800,5000,no,target,always,0,,,,,,0, 2072,Jaguar@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,, -2072,Jaguar@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,, +2072,Jaguar@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,, 2072,Jaguar@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,, 2073,Toucan@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,0,2,,,,,, 2073,Toucan@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,, -2073,Toucan@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,, +2073,Toucan@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,, 2073,Toucan@NPC_TELEKINESISATTACK,chase,191,5,500,0,5000,yes,target,always,0,,,,,,, 2073,Toucan@NPC_WINDATTACK,attack,187,3,500,500,5000,no,target,always,0,,,,,,6, 2073,Toucan@NPC_STOP,attack,342,1,500,500,5000,no,target,always,0,,,,,,30, diff --git a/db/re/mob_skill_db.txt b/db/re/mob_skill_db.txt index 3610f95c3..5ba654c93 100644 --- a/db/re/mob_skill_db.txt +++ b/db/re/mob_skill_db.txt @@ -5823,11 +5823,11 @@ 2072,Jaguar@NPC_COMBOATTACK,attack,171,1,500,500,5000,no,target,always,0,,,,,,6, 2072,Jaguar@AS_SONICBLOW,attack,136,3,500,800,5000,no,target,always,0,,,,,,0, 2072,Jaguar@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,, -2072,Jaguar@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,, +2072,Jaguar@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,, 2072,Jaguar@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,, 2073,Toucan@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,0,2,,,,,, 2073,Toucan@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,, -2073,Toucan@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,, +2073,Toucan@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,, 2073,Toucan@NPC_TELEKINESISATTACK,chase,191,5,500,0,5000,yes,target,always,0,,,,,,, 2073,Toucan@NPC_WINDATTACK,attack,187,3,500,500,5000,no,target,always,0,,,,,,6, 2073,Toucan@NPC_STOP,attack,342,1,500,500,5000,no,target,always,0,,,,,,30, -- cgit v1.2.3-70-g09d2 From 9147624a9ca76a9d3e041b266225a4e8c8feee96 Mon Sep 17 00:00:00 2001 From: Streusel Date: Thu, 14 Feb 2013 14:57:16 -0800 Subject: -Updated EXP values -Fixed Coin Reward for Midgard Ore & Alfheim Perfume --- npc/quests/quests_13_2.txt | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/npc/quests/quests_13_2.txt b/npc/quests/quests_13_2.txt index f2c64d2d8..ada44ff31 100644 --- a/npc/quests/quests_13_2.txt +++ b/npc/quests/quests_13_2.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== -//= 2.4a +//= 2.5 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= @@ -43,6 +43,8 @@ //= 2.3 Fixed EF_Wind not showing. (bugreport:5149) [Masao] //= 2.4 Optimized (6000+ lines reduced!). [Euphy] //= 2.4a Fixed an invisible NPC clashing with a warp portal. [Euphy] +//= 2.5 Fixed EXP values, added support for pre-re +/= & other minor stuff [Streusel] //============================================================ // Cat Hand Addition. @@ -2452,7 +2454,10 @@ spl_in02,236,92,5 script Arc#ep13md_l02 447,{ mes "I'm sorry this is all I can give you for now."; set ep13_mdrama,27; getitem 6081,25; //Splendide_Coin - getexp 120000,10000; + if(checkre(0)) + getexp 120000,10000; + else + getexp 1200000,100000; completequest 7071; close; } @@ -2771,7 +2776,10 @@ manuk,252,116,3 script Manuk Galtun#ep13_2day 450,{ completequest 7074; completequest 7075; set ep13_2_days01,2; - getexp 50000,30000; + if(checkre(0)) + getexp 50000,30000; + else + getexp 500000,300000; getitem 6080,10; //Manuk_Coin close; } @@ -2805,7 +2813,7 @@ manuk,252,116,3 script Manuk Galtun#ep13_2day 450,{ // Daily Quests // - Bradium Collection // - Laphine Craftsman -// - Drago Egg Collection (npc includes 'Wanted' quest) +// - Draco Egg Collection (npc includes 'Wanted' quest) //============================================================ man_in01,378,276,3 script Manuk Engineer#ep13_2 453,{ if (checkweight(1201,2) == 0) { @@ -2845,7 +2853,7 @@ man_in01,378,276,3 script Manuk Engineer#ep13_2 453,{ delitem 6090,20; //Purified_Bradium erasequest 7079; setquest 7080; - getexp 4000,4000; + getexp 40000,40000; getitem 6080,3; //Manuk_Coin close; } @@ -2954,7 +2962,7 @@ spl_in01,97,313,3 script Laphine Craftsman#ep13 446,{ delitem 6075,15; //Crystalized_Teardrop erasequest 7081; setquest 7082; - getexp 3000,3000; + getexp 30000,30000; getitem 6081,3; //Splendide_Coin close; } @@ -3159,7 +3167,7 @@ mid_camp,146,306,3 script Pet Breeder#ep13_eden01 982,{ erasequest 7077; setquest 7078; set ep13_2_dayegg,2; - getexp 4000,4000; + getexp 40000,40000; getitem 6081,1; //Splendide_Coin getitem 6080,1; //Manuk_Coin close; @@ -3739,7 +3747,10 @@ mid_camp,197,237,3 script Schwartzvalt Mechanic#1 869,{ mes "I hope this ring would be a big help for your journey through the other world."; completequest 8253; set ep13_2_rhea,100; - getexp 100000,30000; + if(checkre(0)) + getexp 200000,5000; + else + getexp 1000000,300000; getitem 2782,1; //Ring_Of_Wise_King close; } @@ -4832,10 +4843,13 @@ man_in01,372,221,5 script Scientist#lifeguard 449,{ delitem 6077,.@stone_chk; //Rough_Mineral delitem 6078,.@stoneelse_chk; //Stone_Fragments delitem 6076,1; //Portable_Toolbox - getitem 6080,2; //Manuk_Coin - getexp 0,70000; + getitem 6080,3; //Manuk_Coin changequest 2179+(ep13_2_tre-2),2182; set ep13_2_tre,100; + if(checkre(0)) + close; + else + getexp 0,700000; close; } else { @@ -5699,8 +5713,11 @@ spl_in01,30,324,3 script High Laphine#grenouille 446,{ mes "If you have something to talk to me about, come to me whenever. Nice to meet you, human from Rune Midgard."; set ep13_2_tre1,6; changequest 2185,2186; - getitem 6081,2; //Splendide_Coin - getexp 0,70000; + getitem 6081,3; //Splendide_Coin + if(checkre(0)) + close; + else + getexp 0,700000; close; } else { -- cgit v1.2.3-70-g09d2 From 21b949a188c6c42b91d68a7cfd3399e2fa401b8f Mon Sep 17 00:00:00 2001 From: Streusel Date: Thu, 14 Feb 2013 15:07:15 -0800 Subject: -Added missing ')' & '/' my bad :( --- npc/quests/quests_13_1.txt | 2 +- npc/quests/quests_13_2.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/npc/quests/quests_13_1.txt b/npc/quests/quests_13_1.txt index f9d63a367..c8cc1d29a 100644 --- a/npc/quests/quests_13_1.txt +++ b/npc/quests/quests_13_1.txt @@ -9272,7 +9272,7 @@ mid_campin,90,121,5 script Hibba Agip 459,{ mes "And please take this small reward."; mes "Thank you for your help so far."; next; - if(checkre(0) + if(checkre(0)) getexp 30000,0; //kRO //getexp 3750000,0; //iRO? else diff --git a/npc/quests/quests_13_2.txt b/npc/quests/quests_13_2.txt index ada44ff31..1da301ac9 100644 --- a/npc/quests/quests_13_2.txt +++ b/npc/quests/quests_13_2.txt @@ -44,7 +44,7 @@ //= 2.4 Optimized (6000+ lines reduced!). [Euphy] //= 2.4a Fixed an invisible NPC clashing with a warp portal. [Euphy] //= 2.5 Fixed EXP values, added support for pre-re -/= & other minor stuff [Streusel] +//= & other minor stuff [Streusel] //============================================================ // Cat Hand Addition. -- cgit v1.2.3-70-g09d2 From 7d33212f95653edd621961487f5622611d62ae88 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Thu, 14 Feb 2013 21:12:18 -0200 Subject: New Mapflag adjust_unit_duration Made as a improvement of the original ADJUST_TRAP_DURATION -- special thanks to Muad_Dib! . This mapflag allows you to control the duration of unit skills in any map, for example. "prontera mapflag adjust_unit_duration PR_SANCTUARY 50" halves the duration of sanctuary in prontera Another Example: "prontera mapflag adjust_unit_duration WZ_QUAGMIRE 250" Increases duration of quagmire by 2.5 times in prontera map. Be aware that some skill units have their visual effect durations not controlled by the server (e.g. storm gust). Signed-off-by: shennetsind --- src/map/map.c | 61 +++-- src/map/map.h | 8 + src/map/npc.c | 21 +- src/map/skill.c | 687 ++++++++++++++++++++++++++++---------------------------- 4 files changed, 417 insertions(+), 360 deletions(-) diff --git a/src/map/map.c b/src/map/map.c index a42d7abca..1ffffdf59 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2894,13 +2894,41 @@ int map_delmap(char* mapname) return 0; } +void map_data_clean(void) { + int i; + + for( i = 0; i < map_num; i++ ) { + + if(map[i].cell) aFree(map[i].cell); + if(map[i].block) aFree(map[i].block); + if(map[i].block_mob) aFree(map[i].block_mob); + + if(battle_config.dynamic_mobs) { //Dynamic mobs flag by [random] + int j; + if(map[i].mob_delete_timer != INVALID_TIMER) + delete_timer(map[i].mob_delete_timer, map_removemobs_timer); + for (j=0; jdestroy(map_db, map_db_final); - for (i=0; i USHRT_MAX ) { + ShowWarning("npc_parse_mapflag: Invalid modifier '%d' for skill '%s' for 'adjust_unit_duration' flag! removing flag from %s (file '%s', line '%d').\n", atoi(mod), w4, map[m].name, filepath, strline(buffer,start-buffer)); + } else { + int idx = map[m].unit_count; + RECREATE(map[m].units, struct adjust_unit_duration*, ++map[m].unit_count); + CREATE(map[m].units[idx],struct adjust_unit_duration,1); + map[m].units[idx]->skill_id = skill_id; + map[m].units[idx]->modifier = (unsigned short)atoi(mod); + } + } else ShowError("npc_parse_mapflag: unrecognized mapflag '%s' (file '%s', line '%d').\n", w3, filepath, strline(buffer,start-buffer)); return strchr(start,'\n');// continue diff --git a/src/map/skill.c b/src/map/skill.c index ba720da42..b37d28e3c 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -10570,308 +10570,316 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill unit_flag = skill_get_unit_flag(skill_id); layout = skill_get_unit_layout(skill_id,skill_lv,src,x,y); + if( map[src->m].unit_count ) { + ARR_FIND(0, map[src->m].unit_count, i, map[src->m].units[i]->skill_id == skill_id ); + + if( i < map[src->m].unit_count ) { + limit = limit * map[src->m].units[i]->modifier / 100; + } + } + sd = BL_CAST(BL_PC, src); status = status_get_status_data(src); sc = status_get_sc(src); // for traps, firewall and fogwall - celest switch( skill_id ) { - case MH_STEINWAND: - val2 = 4 + skill_lv; //nb of attack blocked - break; - case MG_SAFETYWALL: - #ifdef RENEWAL - /** - * According to data provided in RE, SW life is equal to 3 times caster's health - **/ - val2 = status_get_max_hp(src) * 3; - #else - val2 = skill_lv+1; - #endif - break; - case MG_FIREWALL: - if(sc && sc->data[SC_VIOLENTGALE]) - limit = limit*3/2; - val2=4+skill_lv; - break; + case MH_STEINWAND: + val2 = 4 + skill_lv; //nb of attack blocked + break; + case MG_SAFETYWALL: + #ifdef RENEWAL + /** + * According to data provided in RE, SW life is equal to 3 times caster's health + **/ + val2 = status_get_max_hp(src) * 3; + #else + val2 = skill_lv+1; + #endif + break; + case MG_FIREWALL: + if(sc && sc->data[SC_VIOLENTGALE]) + limit = limit*3/2; + val2=4+skill_lv; + break; - case AL_WARP: - val1=skill_lv+6; - if(!(flag&1)) - limit=2000; - else // previous implementation (not used anymore) - { //Warp Portal morphing to active mode, extract relevant data from src. [Skotlex] - if( src->type != BL_SKILL ) return NULL; - group = ((TBL_SKILL*)src)->group; - src = map_id2bl(group->src_id); - if( !src ) return NULL; - val2 = group->val2; //Copy the (x,y) position you warp to - val3 = group->val3; //as well as the mapindex to warp to. - } - break; - case HP_BASILICA: - val1 = src->id; // Store caster id. - break; + case AL_WARP: + val1=skill_lv+6; + if(!(flag&1)) + limit=2000; + else // previous implementation (not used anymore) + { //Warp Portal morphing to active mode, extract relevant data from src. [Skotlex] + if( src->type != BL_SKILL ) return NULL; + group = ((TBL_SKILL*)src)->group; + src = map_id2bl(group->src_id); + if( !src ) return NULL; + val2 = group->val2; //Copy the (x,y) position you warp to + val3 = group->val3; //as well as the mapindex to warp to. + } + break; + case HP_BASILICA: + val1 = src->id; // Store caster id. + break; - case PR_SANCTUARY: - case NPC_EVILLAND: - val1=(skill_lv+3)*2; - break; + case PR_SANCTUARY: + case NPC_EVILLAND: + val1=(skill_lv+3)*2; + break; - case WZ_FIREPILLAR: - if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) - return NULL; - if((flag&1)!=0) - limit=1000; - val1=skill_lv+2; - break; - case WZ_QUAGMIRE: //The target changes to "all" if used in a gvg map. [Skotlex] - case AM_DEMONSTRATION: - case GN_HELLS_PLANT: - if (map_flag_vs(src->m) && battle_config.vs_traps_bctall - && (src->type&battle_config.vs_traps_bctall)) - target = BCT_ALL; - break; - case HT_SHOCKWAVE: - val1=skill_lv*15+10; - case HT_SANDMAN: - case MA_SANDMAN: - case HT_CLAYMORETRAP: - case HT_SKIDTRAP: - case MA_SKIDTRAP: - case HT_LANDMINE: - case MA_LANDMINE: - case HT_ANKLESNARE: - case HT_FLASHER: - case HT_FREEZINGTRAP: - case MA_FREEZINGTRAP: - case HT_BLASTMINE: - /** - * Ranger - **/ - case RA_ELECTRICSHOCKER: - case RA_CLUSTERBOMB: - case RA_MAGENTATRAP: - case RA_COBALTTRAP: - case RA_MAIZETRAP: - case RA_VERDURETRAP: - case RA_FIRINGTRAP: - case RA_ICEBOUNDTRAP: - { - struct skill_condition req = skill_get_requirement(sd,skill_id,skill_lv); - ARR_FIND(0, MAX_SKILL_ITEM_REQUIRE, i, req.itemid[i] && (req.itemid[i] == ITEMID_TRAP || req.itemid[i] == ITEMID_TRAP_ALLOY)); - if( req.itemid[i] ) - req_item = req.itemid[i]; - if( map_flag_gvg(src->m) || map[src->m].flag.battleground ) - limit *= 4; // longer trap times in WOE [celest] - if( battle_config.vs_traps_bctall && map_flag_vs(src->m) && (src->type&battle_config.vs_traps_bctall) ) + case WZ_FIREPILLAR: + if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) + return NULL; + if((flag&1)!=0) + limit=1000; + val1=skill_lv+2; + break; + case WZ_QUAGMIRE: //The target changes to "all" if used in a gvg map. [Skotlex] + case AM_DEMONSTRATION: + case GN_HELLS_PLANT: + if (map_flag_vs(src->m) && battle_config.vs_traps_bctall + && (src->type&battle_config.vs_traps_bctall)) target = BCT_ALL; - } - break; + break; + case HT_SHOCKWAVE: + val1=skill_lv*15+10; + case HT_SANDMAN: + case MA_SANDMAN: + case HT_CLAYMORETRAP: + case HT_SKIDTRAP: + case MA_SKIDTRAP: + case HT_LANDMINE: + case MA_LANDMINE: + case HT_ANKLESNARE: + case HT_FLASHER: + case HT_FREEZINGTRAP: + case MA_FREEZINGTRAP: + case HT_BLASTMINE: + /** + * Ranger + **/ + case RA_ELECTRICSHOCKER: + case RA_CLUSTERBOMB: + case RA_MAGENTATRAP: + case RA_COBALTTRAP: + case RA_MAIZETRAP: + case RA_VERDURETRAP: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: + { + struct skill_condition req = skill_get_requirement(sd,skill_id,skill_lv); + ARR_FIND(0, MAX_SKILL_ITEM_REQUIRE, i, req.itemid[i] && (req.itemid[i] == ITEMID_TRAP || req.itemid[i] == ITEMID_TRAP_ALLOY)); + if( req.itemid[i] ) + req_item = req.itemid[i]; + if( map_flag_gvg(src->m) || map[src->m].flag.battleground ) + limit *= 4; // longer trap times in WOE [celest] + if( battle_config.vs_traps_bctall && map_flag_vs(src->m) && (src->type&battle_config.vs_traps_bctall) ) + target = BCT_ALL; + } + break; - case SA_LANDPROTECTOR: - case SA_VOLCANO: - case SA_DELUGE: - case SA_VIOLENTGALE: - { - struct skill_unit_group *old_sg; - if ((old_sg = skill_locate_element_field(src)) != NULL) - { //HelloKitty confirmed that these are interchangeable, - //so you can change element and not consume gemstones. - if (( - old_sg->skill_id == SA_VOLCANO || - old_sg->skill_id == SA_DELUGE || - old_sg->skill_id == SA_VIOLENTGALE - ) && old_sg->limit > 0) - { //Use the previous limit (minus the elapsed time) [Skotlex] - limit = old_sg->limit - DIFF_TICK(gettick(), old_sg->tick); - if (limit < 0) //This can happen... - limit = skill_get_time(skill_id,skill_lv); + case SA_LANDPROTECTOR: + case SA_VOLCANO: + case SA_DELUGE: + case SA_VIOLENTGALE: + { + struct skill_unit_group *old_sg; + if ((old_sg = skill_locate_element_field(src)) != NULL) + { //HelloKitty confirmed that these are interchangeable, + //so you can change element and not consume gemstones. + if (( + old_sg->skill_id == SA_VOLCANO || + old_sg->skill_id == SA_DELUGE || + old_sg->skill_id == SA_VIOLENTGALE + ) && old_sg->limit > 0) + { //Use the previous limit (minus the elapsed time) [Skotlex] + limit = old_sg->limit - DIFF_TICK(gettick(), old_sg->tick); + if (limit < 0) //This can happen... + limit = skill_get_time(skill_id,skill_lv); + } + skill_clear_group(src,1); } - skill_clear_group(src,1); + break; } - break; - } - case BA_DISSONANCE: - case DC_UGLYDANCE: - val1 = 10; //FIXME: This value is not used anywhere, what is it for? [Skotlex] - break; - case BA_WHISTLE: - val1 = skill_lv +status->agi/10; // Flee increase - val2 = ((skill_lv+1)/2)+status->luk/10; // Perfect dodge increase - if(sd){ - val1 += pc_checkskill(sd,BA_MUSICALLESSON); - val2 += pc_checkskill(sd,BA_MUSICALLESSON); - } - break; - case DC_HUMMING: - val1 = 2*skill_lv+status->dex/10; // Hit increase + case BA_DISSONANCE: + case DC_UGLYDANCE: + val1 = 10; //FIXME: This value is not used anywhere, what is it for? [Skotlex] + break; + case BA_WHISTLE: + val1 = skill_lv +status->agi/10; // Flee increase + val2 = ((skill_lv+1)/2)+status->luk/10; // Perfect dodge increase + if(sd){ + val1 += pc_checkskill(sd,BA_MUSICALLESSON); + val2 += pc_checkskill(sd,BA_MUSICALLESSON); + } + break; + case DC_HUMMING: + val1 = 2*skill_lv+status->dex/10; // Hit increase + #ifdef RENEWAL + val1 *= 2; + #endif + if(sd) + val1 += pc_checkskill(sd,DC_DANCINGLESSON); + break; + case BA_POEMBRAGI: + val1 = 3*skill_lv+status->dex/10; // Casting time reduction + //For some reason at level 10 the base delay reduction is 50%. + val2 = (skill_lv<10?3*skill_lv:50)+status->int_/5; // After-cast delay reduction + if(sd){ + val1 += 2*pc_checkskill(sd,BA_MUSICALLESSON); + val2 += 2*pc_checkskill(sd,BA_MUSICALLESSON); + } + break; + case DC_DONTFORGETME: + val1 = status->dex/10 + 3*skill_lv + 5; // ASPD decrease + val2 = status->agi/10 + 3*skill_lv + 5; // Movement speed adjustment. + if(sd){ + val1 += pc_checkskill(sd,DC_DANCINGLESSON); + val2 += pc_checkskill(sd,DC_DANCINGLESSON); + } + break; + case BA_APPLEIDUN: + val1 = 5+2*skill_lv+status->vit/10; // MaxHP percent increase + if(sd) + val1 += pc_checkskill(sd,BA_MUSICALLESSON); + break; + case DC_SERVICEFORYOU: + val1 = 15+skill_lv+(status->int_/10); // MaxSP percent increase TO-DO: this INT bonus value is guessed + val2 = 20+3*skill_lv+(status->int_/10); // SP cost reduction + if(sd){ + val1 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This bonus value is guessed + val2 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO Should be half this value + } + break; + case BA_ASSASSINCROSS: + val1 = 100+(10*skill_lv)+(status->agi/10); // ASPD increase + if(sd) + val1 += 5*pc_checkskill(sd,BA_MUSICALLESSON); + break; + case DC_FORTUNEKISS: + val1 = 10+skill_lv+(status->luk/10); // Critical increase + if(sd) + val1 += pc_checkskill(sd,DC_DANCINGLESSON); + val1*=10; //Because every 10 crit is an actual cri point. + break; + case BD_DRUMBATTLEFIELD: #ifdef RENEWAL - val1 *= 2; + val1 = (skill_lv+5)*25; //Watk increase + val2 = skill_lv*10; //Def increase + #else + val1 = (skill_lv+1)*25; //Watk increase + val2 = (skill_lv+1)*2; //Def increase #endif - if(sd) - val1 += pc_checkskill(sd,DC_DANCINGLESSON); - break; - case BA_POEMBRAGI: - val1 = 3*skill_lv+status->dex/10; // Casting time reduction - //For some reason at level 10 the base delay reduction is 50%. - val2 = (skill_lv<10?3*skill_lv:50)+status->int_/5; // After-cast delay reduction - if(sd){ - val1 += 2*pc_checkskill(sd,BA_MUSICALLESSON); - val2 += 2*pc_checkskill(sd,BA_MUSICALLESSON); - } - break; - case DC_DONTFORGETME: - val1 = status->dex/10 + 3*skill_lv + 5; // ASPD decrease - val2 = status->agi/10 + 3*skill_lv + 5; // Movement speed adjustment. - if(sd){ - val1 += pc_checkskill(sd,DC_DANCINGLESSON); - val2 += pc_checkskill(sd,DC_DANCINGLESSON); - } - break; - case BA_APPLEIDUN: - val1 = 5+2*skill_lv+status->vit/10; // MaxHP percent increase - if(sd) - val1 += pc_checkskill(sd,BA_MUSICALLESSON); - break; - case DC_SERVICEFORYOU: - val1 = 15+skill_lv+(status->int_/10); // MaxSP percent increase TO-DO: this INT bonus value is guessed - val2 = 20+3*skill_lv+(status->int_/10); // SP cost reduction - if(sd){ - val1 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This bonus value is guessed - val2 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO Should be half this value - } - break; - case BA_ASSASSINCROSS: - val1 = 100+(10*skill_lv)+(status->agi/10); // ASPD increase - if(sd) - val1 += 5*pc_checkskill(sd,BA_MUSICALLESSON); - break; - case DC_FORTUNEKISS: - val1 = 10+skill_lv+(status->luk/10); // Critical increase - if(sd) - val1 += pc_checkskill(sd,DC_DANCINGLESSON); - val1*=10; //Because every 10 crit is an actual cri point. - break; - case BD_DRUMBATTLEFIELD: - #ifdef RENEWAL - val1 = (skill_lv+5)*25; //Watk increase - val2 = skill_lv*10; //Def increase - #else - val1 = (skill_lv+1)*25; //Watk increase - val2 = (skill_lv+1)*2; //Def increase - #endif - break; - case BD_RINGNIBELUNGEN: - val1 = (skill_lv+2)*25; //Watk increase - break; - case BD_RICHMANKIM: - val1 = 25 + 11*skill_lv; //Exp increase bonus. - break; - case BD_SIEGFRIED: - val1 = 55 + skill_lv*5; //Elemental Resistance - val2 = skill_lv*10; //Status ailment resistance - break; - case WE_CALLPARTNER: - if (sd) val1 = sd->status.partner_id; - break; - case WE_CALLPARENT: - if (sd) { - val1 = sd->status.father; - val2 = sd->status.mother; - } - break; - case WE_CALLBABY: - if (sd) val1 = sd->status.child; - break; - case NJ_KAENSIN: - skill_clear_group(src, 1); //Delete previous Kaensins/Suitons - val2 = (skill_lv+1)/2 + 4; - break; - case NJ_SUITON: - skill_clear_group(src, 1); - break; + break; + case BD_RINGNIBELUNGEN: + val1 = (skill_lv+2)*25; //Watk increase + break; + case BD_RICHMANKIM: + val1 = 25 + 11*skill_lv; //Exp increase bonus. + break; + case BD_SIEGFRIED: + val1 = 55 + skill_lv*5; //Elemental Resistance + val2 = skill_lv*10; //Status ailment resistance + break; + case WE_CALLPARTNER: + if (sd) val1 = sd->status.partner_id; + break; + case WE_CALLPARENT: + if (sd) { + val1 = sd->status.father; + val2 = sd->status.mother; + } + break; + case WE_CALLBABY: + if (sd) val1 = sd->status.child; + break; + case NJ_KAENSIN: + skill_clear_group(src, 1); //Delete previous Kaensins/Suitons + val2 = (skill_lv+1)/2 + 4; + break; + case NJ_SUITON: + skill_clear_group(src, 1); + break; - case GS_GROUNDDRIFT: - { - int element[5]={ELE_WIND,ELE_DARK,ELE_POISON,ELE_WATER,ELE_FIRE}; + case GS_GROUNDDRIFT: + { + int element[5]={ELE_WIND,ELE_DARK,ELE_POISON,ELE_WATER,ELE_FIRE}; - val1 = status->rhw.ele; - if (!val1) - val1=element[rnd()%5]; + val1 = status->rhw.ele; + if (!val1) + val1=element[rnd()%5]; - switch (val1) - { - case ELE_FIRE: - subunt++; - case ELE_WATER: - subunt++; - case ELE_POISON: - subunt++; - case ELE_DARK: - subunt++; - case ELE_WIND: - break; - default: - subunt=rnd()%5; - break; - } + switch (val1) + { + case ELE_FIRE: + subunt++; + case ELE_WATER: + subunt++; + case ELE_POISON: + subunt++; + case ELE_DARK: + subunt++; + case ELE_WIND: + break; + default: + subunt=rnd()%5; + break; + } - break; - } - case GC_POISONSMOKE: - if( !(sc && sc->data[SC_POISONINGWEAPON]) ) - return NULL; - val2 = sc->data[SC_POISONINGWEAPON]->val2; // Type of Poison - val3 = sc->data[SC_POISONINGWEAPON]->val1; - limit = 4000 + 2000 * skill_lv; - break; - case GD_LEADERSHIP: - case GD_GLORYWOUNDS: - case GD_SOULCOLD: - case GD_HAWKEYES: - limit = 1000000;//it doesn't matter - break; - case LG_BANDING: - limit = -1; - break; - case WM_REVERBERATION: - interval = limit; - val2 = 1; - case WM_POEMOFNETHERWORLD: // Can't be placed on top of Land Protector. - if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) - return NULL; - break; - case SO_CLOUD_KILL: - skill_clear_group(src, 4); - break; - case SO_WARMER: - skill_clear_group(src, 8); - break; - case SO_VACUUM_EXTREME: - range++; + break; + } + case GC_POISONSMOKE: + if( !(sc && sc->data[SC_POISONINGWEAPON]) ) + return NULL; + val2 = sc->data[SC_POISONINGWEAPON]->val2; // Type of Poison + val3 = sc->data[SC_POISONINGWEAPON]->val1; + limit = 4000 + 2000 * skill_lv; + break; + case GD_LEADERSHIP: + case GD_GLORYWOUNDS: + case GD_SOULCOLD: + case GD_HAWKEYES: + limit = 1000000;//it doesn't matter + break; + case LG_BANDING: + limit = -1; + break; + case WM_REVERBERATION: + interval = limit; + val2 = 1; + case WM_POEMOFNETHERWORLD: // Can't be placed on top of Land Protector. + if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) + return NULL; + break; + case SO_CLOUD_KILL: + skill_clear_group(src, 4); + break; + case SO_WARMER: + skill_clear_group(src, 8); + break; + case SO_VACUUM_EXTREME: + range++; - break; - case SC_BLOODYLUST: - skill_clear_group(src, 32); - break; - case GN_WALLOFTHORN: - if( flag&1 ) - limit = 3000; - val3 = (x<<16)|y; - break; - case KO_ZENKAI: - if( sd ){ - ARR_FIND(1, 6, i, sd->talisman[i] > 0); - if( i < 5 ){ - val1 = sd->talisman[i]; // no. of aura - val2 = i; // aura type - limit += val1 * 1000; - subunt = i - 1; - pc_del_talisman(sd, sd->talisman[i], i); + break; + case SC_BLOODYLUST: + skill_clear_group(src, 32); + break; + case GN_WALLOFTHORN: + if( flag&1 ) + limit = 3000; + val3 = (x<<16)|y; + break; + case KO_ZENKAI: + if( sd ){ + ARR_FIND(1, 6, i, sd->talisman[i] > 0); + if( i < 5 ){ + val1 = sd->talisman[i]; // no. of aura + val2 = i; // aura type + limit += val1 * 1000; + subunt = i - 1; + pc_del_talisman(sd, sd->talisman[i], i); + } } - } - break; + break; } nullpo_retr(NULL, group=skill_initunitgroup(src,layout->count,skill_id,skill_lv,skill_get_unit_id(skill_id,flag&1)+subunt, limit, interval)); @@ -10910,8 +10918,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill } limit = group->limit; - for( i = 0; i < layout->count; i++ ) - { + for( i = 0; i < layout->count; i++ ) { struct skill_unit *unit; int ux = x + layout->dx[i]; int uy = y + layout->dy[i]; @@ -10924,65 +10931,61 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill if( battle_config.skill_wall_check && skill_get_unit_flag(skill_id)&UF_PATHCHECK && !path_search_long(NULL,src->m,ux,uy,x,y,CELL_CHKWALL) ) continue; // no path between cell and center of casting. - switch( skill_id ) - { - case MG_FIREWALL: - case NJ_KAENSIN: - val2=group->val2; - break; - case WZ_ICEWALL: - val1 = (skill_lv <= 1) ? 500 : 200 + 200*skill_lv; - val2 = map_getcell(src->m, ux, uy, CELL_GETTYPE); - break; - case HT_LANDMINE: - case MA_LANDMINE: - case HT_ANKLESNARE: - case HT_SHOCKWAVE: - case HT_SANDMAN: - case MA_SANDMAN: - case HT_FLASHER: - case HT_FREEZINGTRAP: - case MA_FREEZINGTRAP: - case HT_TALKIEBOX: - case HT_SKIDTRAP: - case MA_SKIDTRAP: - case HT_CLAYMORETRAP: - case HT_BLASTMINE: - /** - * Ranger - **/ - case RA_ELECTRICSHOCKER: - case RA_CLUSTERBOMB: - case RA_MAGENTATRAP: - case RA_COBALTTRAP: - case RA_MAIZETRAP: - case RA_VERDURETRAP: - case RA_FIRINGTRAP: - case RA_ICEBOUNDTRAP: - val1 = 3500; - break; - case GS_DESPERADO: - val1 = abs(layout->dx[i]); - val2 = abs(layout->dy[i]); - if (val1 < 2 || val2 < 2) { //Nearby cross, linear decrease with no diagonals - if (val2 > val1) val1 = val2; - if (val1) val1--; - val1 = 36 -12*val1; - } else //Diagonal edges - val1 = 28 -4*val1 -4*val2; - if (val1 < 1) val1 = 1; - val2 = 0; - break; - case WM_REVERBERATION: - val1 = 1 + skill_lv; - break; - case GN_WALLOFTHORN: - val1 = 1000 * skill_lv; // Need official value. [LimitLine] - break; - default: - if (group->state.song_dance&0x1) - val2 = unit_flag&(UF_DANCE|UF_SONG); //Store whether this is a song/dance - break; + switch( skill_id ) { + case MG_FIREWALL: + case NJ_KAENSIN: + val2=group->val2; + break; + case WZ_ICEWALL: + val1 = (skill_lv <= 1) ? 500 : 200 + 200*skill_lv; + val2 = map_getcell(src->m, ux, uy, CELL_GETTYPE); + break; + case HT_LANDMINE: + case MA_LANDMINE: + case HT_ANKLESNARE: + case HT_SHOCKWAVE: + case HT_SANDMAN: + case MA_SANDMAN: + case HT_FLASHER: + case HT_FREEZINGTRAP: + case MA_FREEZINGTRAP: + case HT_TALKIEBOX: + case HT_SKIDTRAP: + case MA_SKIDTRAP: + case HT_CLAYMORETRAP: + case HT_BLASTMINE: + case RA_ELECTRICSHOCKER: + case RA_CLUSTERBOMB: + case RA_MAGENTATRAP: + case RA_COBALTTRAP: + case RA_MAIZETRAP: + case RA_VERDURETRAP: + case RA_FIRINGTRAP: + case RA_ICEBOUNDTRAP: + val1 = 3500; + break; + case GS_DESPERADO: + val1 = abs(layout->dx[i]); + val2 = abs(layout->dy[i]); + if (val1 < 2 || val2 < 2) { //Nearby cross, linear decrease with no diagonals + if (val2 > val1) val1 = val2; + if (val1) val1--; + val1 = 36 -12*val1; + } else //Diagonal edges + val1 = 28 -4*val1 -4*val2; + if (val1 < 1) val1 = 1; + val2 = 0; + break; + case WM_REVERBERATION: + val1 = 1 + skill_lv; + break; + case GN_WALLOFTHORN: + val1 = 1000 * skill_lv; // Need official value. [LimitLine] + break; + default: + if (group->state.song_dance&0x1) + val2 = unit_flag&(UF_DANCE|UF_SONG); //Store whether this is a song/dance + break; } if (skill_get_unit_flag(skill_id) & UF_RANGEDSINGLEUNIT && i == (layout->count / 2)) val2 |= UF_RANGEDSINGLEUNIT; // center. -- cgit v1.2.3-70-g09d2 From ef49bfc4445d464f19f84d78a2e6a1a5a3d9f0ac Mon Sep 17 00:00:00 2001 From: shennetsind Date: Thu, 14 Feb 2013 23:12:19 -0200 Subject: New Mapflag adjust_skill_damage Made as a improvement of the original ADJUST_SKILL_DAMAGE -- special thanks to Muad_Dib! . This mapflag allows you to modify the damage of any skill in any map, for example "prontera mapflag adjust_skill_damage MG_FIREBOLT 200" doubles the damage of Firebolt in prontera Another Example: "prontera mapflag adjust_skill_damage MG_FIREBOLT 50" Halves the damage of Firebolt in prontera. Signed-off-by: shennetsind --- src/map/battle.c | 22 ++++++++++++++++++++++ src/map/map.c | 41 +++++++++++++++++++++++++++++++---------- src/map/map.h | 10 +++++++--- src/map/npc.c | 25 ++++++++++++++++++++++--- 4 files changed, 82 insertions(+), 16 deletions(-) diff --git a/src/map/battle.c b/src/map/battle.c index 2ad066d33..5bc3df6f8 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1606,7 +1606,20 @@ static int battle_range_type( return BF_SHORT; return BF_LONG; } +static inline int battle_adjust_skill_damage(int m, unsigned short skill_id) { + if( map[m].skill_count ) { + int i; + ARR_FIND(0, map[m].skill_count, i, map[m].skills[i]->skill_id == skill_id ); + + if( i < map[m].skill_count ) { + return map[m].skills[i]->modifier; + } + + } + + return 0; +} static int battle_blewcount_bonus(struct map_session_data *sd, uint16 skill_id) { int i; @@ -3094,6 +3107,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo if (skill_id && (i = pc_skillatk_bonus(sd, skill_id))) ATK_ADDRATE(i); + if( (i = battle_adjust_skill_damage(sd->bl.m,skill_id)) ) + ATK_RATE(i); + if( skill_id != PA_SACRIFICE && skill_id != MO_INVESTIGATE && skill_id != CR_GRANDCROSS && skill_id != NPC_GRANDDARKNESS && skill_id != PA_SHIELDCHAIN && !flag.cri ) { //Elemental/Racial adjustments if( sd->right_weapon.def_ratio_atk_ele & (1<def_ele) || @@ -4075,6 +4091,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list //Damage bonuses if ((i = pc_skillatk_bonus(sd, skill_id))) ad.damage += ad.damage*i/100; + + if( (i = battle_adjust_skill_damage(sd->bl.m,skill_id)) ) + MATK_RATE(i); //Ignore Defense? if (!flag.imdef && ( @@ -4456,6 +4475,9 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * if (sd && (i = pc_skillatk_bonus(sd, skill_id))) md.damage += md.damage*i/100; + if( (i = battle_adjust_skill_damage(sd->bl.m,skill_id)) ) + md.damage = md.damage * i / 100; + if(md.damage < 0) md.damage = 0; else if(md.damage && tstatus->mode&MD_PLANT){ diff --git a/src/map/map.c b/src/map/map.c index 1ffffdf59..dde922f39 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2894,8 +2894,8 @@ int map_delmap(char* mapname) return 0; } -void map_data_clean(void) { - int i; +void do_final_maps(void) { + int i, v = 0; for( i = 0; i < map_num; i++ ) { @@ -2912,21 +2912,34 @@ void map_data_clean(void) { } if( map[i].unit_count ) { - int v; for(v = 0; v < map[i].unit_count; v++) { aFree(map[i].units[v]); } - aFree(map[i].units); + if( map[i].units ) { + aFree(map[i].units); + map[i].units = NULL; + } map[i].unit_count = 0; } + if( map[i].skill_count ) { + for(v = 0; v < map[i].skill_count; v++) { + aFree(map[i].skills[v]); + } + if( map[i].skills ) { + aFree(map[i].skills); + map[i].skills = NULL; + } + map[i].skill_count = 0; + } + } } /// Initializes map flags and adjusts them depending on configuration. void map_flags_init(void) { - int i; + int i, v = 0; for( i = 0; i < map_num; i++ ) { // mapflags @@ -2940,13 +2953,22 @@ void map_flags_init(void) { memset(map[i].drop_list, 0, sizeof(map[i].drop_list)); // pvp nightmare drop list if( map[i].unit_count ) { - int v; for(v = 0; v < map[i].unit_count; v++) { aFree(map[i].units[v]); } aFree(map[i].units); - map[i].unit_count = 0; } + map[i].units = NULL; + map[i].unit_count = 0; + + if( map[i].skill_count ) { + for(v = 0; v < map[i].skill_count; v++) { + aFree(map[i].skills[v]); + } + aFree(map[i].skills); + } + map[i].skills = NULL; + map[i].skill_count = 0; // adjustments if( battle_config.pk_mode ) @@ -3637,10 +3659,9 @@ void do_final(void) do_final_battleground(); do_final_duel(); do_final_elemental(); - + do_final_maps(); + map_db->destroy(map_db, map_db_final); - - map_data_clean(); mapindex_final(); if(enable_grf) diff --git a/src/map/map.h b/src/map/map.h index a9699efc2..861a55d0a 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -496,8 +496,8 @@ struct iwall_data { bool shootable; }; -struct adjust_unit_duration { - int skill_id; +struct mapflag_skill_adjust { + unsigned short skill_id; unsigned short modifier; }; @@ -594,8 +594,12 @@ struct map_data { int instance_id; int instance_src_map; - struct adjust_unit_duration **units; + /* adjust_unit_duration mapflag */ + struct mapflag_skill_adjust **units; unsigned short unit_count; + /* adjust_skill_damage mapflag */ + struct mapflag_skill_adjust **skills; + unsigned short skill_count; }; /// Stores information about a remote map (for multi-mapserver setups). diff --git a/src/map/npc.c b/src/map/npc.c index 265fbb01f..671b4485a 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -3412,11 +3412,30 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con ShowWarning("npc_parse_mapflag: Invalid modifier '%d' for skill '%s' for 'adjust_unit_duration' flag! removing flag from %s (file '%s', line '%d').\n", atoi(mod), w4, map[m].name, filepath, strline(buffer,start-buffer)); } else { int idx = map[m].unit_count; - RECREATE(map[m].units, struct adjust_unit_duration*, ++map[m].unit_count); - CREATE(map[m].units[idx],struct adjust_unit_duration,1); - map[m].units[idx]->skill_id = skill_id; + RECREATE(map[m].units, struct mapflag_skill_adjust*, ++map[m].unit_count); + CREATE(map[m].units[idx],struct mapflag_skill_adjust,1); + map[m].units[idx]->skill_id = (unsigned short)skill_id; map[m].units[idx]->modifier = (unsigned short)atoi(mod); } + } else if (!strcmpi(w3,"adjust_skill_damage")) { + char *mod; + int skill_id; + + strtok(w4,"\t");/* makes w4 contain only 4th param */ + + if( !(mod = strtok(NULL,"\t")) ) {/* makes mod contain only the 5th param */ + ShowWarning("npc_parse_mapflag: Missing 5th param for 'adjust_skill_damage' flag! removing flag from %s (file '%s', line '%d').\n", map[m].name, filepath, strline(buffer,start-buffer)); + } else if( !( skill_id = skill_name2id(w4) ) ) { + ShowWarning("npc_parse_mapflag: Unknown skill (%s) for 'adjust_skill_damage' flag! removing flag from %s (file '%s', line '%d').\n", w4, map[m].name, filepath, strline(buffer,start-buffer)); + } else if ( atoi(mod) < 1 || atoi(mod) > USHRT_MAX ) { + ShowWarning("npc_parse_mapflag: Invalid modifier '%d' for skill '%s' for 'adjust_skill_damage' flag! removing flag from %s (file '%s', line '%d').\n", atoi(mod), w4, map[m].name, filepath, strline(buffer,start-buffer)); + } else { + int idx = map[m].skill_count; + RECREATE(map[m].skills, struct mapflag_skill_adjust*, ++map[m].skill_count); + CREATE(map[m].skills[idx],struct mapflag_skill_adjust,1); + map[m].skills[idx]->skill_id = (unsigned short)skill_id; + map[m].skills[idx]->modifier = (unsigned short)atoi(mod); + } } else ShowError("npc_parse_mapflag: unrecognized mapflag '%s' (file '%s', line '%d').\n", w3, filepath, strline(buffer,start-buffer)); -- cgit v1.2.3-70-g09d2 From ac784540e034708959c3ebce999b31124f99ab7a Mon Sep 17 00:00:00 2001 From: shennetsind Date: Fri, 15 Feb 2013 00:14:58 -0200 Subject: Extending readparam functionality Added many more bonuses including missing key stuff such as def/mdef. Signed-off-by: shennetsind --- src/map/pc.c | 1316 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 708 insertions(+), 608 deletions(-) diff --git a/src/map/pc.c b/src/map/pc.c index e544fdd53..ad779a268 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2020,604 +2020,604 @@ int pc_bonus(struct map_session_data *sd,int type,int val) status = &sd->base_status; switch(type){ - case SP_STR: - case SP_AGI: - case SP_VIT: - case SP_INT: - case SP_DEX: - case SP_LUK: - if(sd->state.lr_flag != 2) - sd->param_bonus[type-SP_STR]+=val; - break; - case SP_ATK1: - if(!sd->state.lr_flag) { - bonus = status->rhw.atk + val; - status->rhw.atk = cap_value(bonus, 0, USHRT_MAX); - } - else if(sd->state.lr_flag == 1) { - bonus = status->lhw.atk + val; - status->lhw.atk = cap_value(bonus, 0, USHRT_MAX); - } - break; - case SP_ATK2: - if(!sd->state.lr_flag) { - bonus = status->rhw.atk2 + val; - status->rhw.atk2 = cap_value(bonus, 0, USHRT_MAX); - } - else if(sd->state.lr_flag == 1) { - bonus = status->lhw.atk2 + val; - status->lhw.atk2 = cap_value(bonus, 0, USHRT_MAX); - } - break; - case SP_BASE_ATK: - if(sd->state.lr_flag != 2) { -//#ifdef RENEWAL -// sd->bonus.eatk += val; -//#else - bonus = status->batk + val; - status->batk = cap_value(bonus, 0, USHRT_MAX); -//#endif - } - break; - case SP_DEF1: - if(sd->state.lr_flag != 2) { - bonus = status->def + val; -#ifdef RENEWAL - status->def = cap_value(bonus, SHRT_MIN, SHRT_MAX); -#else - status->def = cap_value(bonus, CHAR_MIN, CHAR_MAX); -#endif - } - break; - case SP_DEF2: - if(sd->state.lr_flag != 2) { - bonus = status->def2 + val; - status->def2 = cap_value(bonus, SHRT_MIN, SHRT_MAX); - } - break; - case SP_MDEF1: - if(sd->state.lr_flag != 2) { - bonus = status->mdef + val; -#ifdef RENEWAL - status->mdef = cap_value(bonus, SHRT_MIN, SHRT_MAX); -#else - status->mdef = cap_value(bonus, CHAR_MIN, CHAR_MAX); -#endif - if( sd->state.lr_flag == 3 ) {//Shield, used for royal guard - sd->bonus.shieldmdef += bonus; + case SP_STR: + case SP_AGI: + case SP_VIT: + case SP_INT: + case SP_DEX: + case SP_LUK: + if(sd->state.lr_flag != 2) + sd->param_bonus[type-SP_STR]+=val; + break; + case SP_ATK1: + if(!sd->state.lr_flag) { + bonus = status->rhw.atk + val; + status->rhw.atk = cap_value(bonus, 0, USHRT_MAX); + } + else if(sd->state.lr_flag == 1) { + bonus = status->lhw.atk + val; + status->lhw.atk = cap_value(bonus, 0, USHRT_MAX); } - } - break; - case SP_MDEF2: - if(sd->state.lr_flag != 2) { - bonus = status->mdef2 + val; - status->mdef2 = cap_value(bonus, SHRT_MIN, SHRT_MAX); - } - break; - case SP_HIT: - if(sd->state.lr_flag != 2) { - bonus = status->hit + val; - status->hit = cap_value(bonus, SHRT_MIN, SHRT_MAX); - } else - sd->bonus.arrow_hit+=val; - break; - case SP_FLEE1: - if(sd->state.lr_flag != 2) { - bonus = status->flee + val; - status->flee = cap_value(bonus, SHRT_MIN, SHRT_MAX); - } - break; - case SP_FLEE2: - if(sd->state.lr_flag != 2) { - bonus = status->flee2 + val*10; - status->flee2 = cap_value(bonus, SHRT_MIN, SHRT_MAX); - } - break; - case SP_CRITICAL: - if(sd->state.lr_flag != 2) { - bonus = status->cri + val*10; - status->cri = cap_value(bonus, SHRT_MIN, SHRT_MAX); - } else - sd->bonus.arrow_cri += val*10; - break; - case SP_ATKELE: - if(val >= ELE_MAX) { - ShowError("pc_bonus: SP_ATKELE: Invalid element %d\n", val); break; - } - switch (sd->state.lr_flag) - { - case 2: - switch (sd->status.weapon) { - case W_BOW: - case W_REVOLVER: - case W_RIFLE: - case W_GATLING: - case W_SHOTGUN: - case W_GRENADE: - //Become weapon element. - status->rhw.ele=val; - break; - default: //Become arrow element. - sd->bonus.arrow_ele=val; - break; + case SP_ATK2: + if(!sd->state.lr_flag) { + bonus = status->rhw.atk2 + val; + status->rhw.atk2 = cap_value(bonus, 0, USHRT_MAX); + } + else if(sd->state.lr_flag == 1) { + bonus = status->lhw.atk2 + val; + status->lhw.atk2 = cap_value(bonus, 0, USHRT_MAX); } break; - case 1: - status->lhw.ele=val; + case SP_BASE_ATK: + if(sd->state.lr_flag != 2) { + //#ifdef RENEWAL + // sd->bonus.eatk += val; + //#else + bonus = status->batk + val; + status->batk = cap_value(bonus, 0, USHRT_MAX); + //#endif + } break; - default: - status->rhw.ele=val; + case SP_DEF1: + if(sd->state.lr_flag != 2) { + bonus = status->def + val; + #ifdef RENEWAL + status->def = cap_value(bonus, SHRT_MIN, SHRT_MAX); + #else + status->def = cap_value(bonus, CHAR_MIN, CHAR_MAX); + #endif + } break; - } - break; - case SP_DEFELE: - if(val >= ELE_MAX) { - ShowError("pc_bonus: SP_DEFELE: Invalid element %d\n", val); + case SP_DEF2: + if(sd->state.lr_flag != 2) { + bonus = status->def2 + val; + status->def2 = cap_value(bonus, SHRT_MIN, SHRT_MAX); + } break; - } - if(sd->state.lr_flag != 2) - status->def_ele=val; - break; - case SP_MAXHP: - if(sd->state.lr_flag == 2) + case SP_MDEF1: + if(sd->state.lr_flag != 2) { + bonus = status->mdef + val; + #ifdef RENEWAL + status->mdef = cap_value(bonus, SHRT_MIN, SHRT_MAX); + #else + status->mdef = cap_value(bonus, CHAR_MIN, CHAR_MAX); + #endif + if( sd->state.lr_flag == 3 ) {//Shield, used for royal guard + sd->bonus.shieldmdef += bonus; + } + } break; - val += (int)status->max_hp; - //Negative bonuses will underflow, this will be handled in status_calc_pc through casting - //If this is called outside of status_calc_pc, you'd better pray they do not underflow and end with UINT_MAX max_hp. - status->max_hp = (unsigned int)val; - break; - case SP_MAXSP: - if(sd->state.lr_flag == 2) + case SP_MDEF2: + if(sd->state.lr_flag != 2) { + bonus = status->mdef2 + val; + status->mdef2 = cap_value(bonus, SHRT_MIN, SHRT_MAX); + } break; - val += (int)status->max_sp; - status->max_sp = (unsigned int)val; - break; -#ifndef RENEWAL_CAST - case SP_VARCASTRATE: -#endif - case SP_CASTRATE: - if(sd->state.lr_flag != 2) - sd->castrate+=val; - break; - case SP_MAXHPRATE: - if(sd->state.lr_flag != 2) - sd->hprate+=val; - break; - case SP_MAXSPRATE: - if(sd->state.lr_flag != 2) - sd->sprate+=val; - break; - case SP_SPRATE: - if(sd->state.lr_flag != 2) - sd->dsprate+=val; - break; - case SP_ATTACKRANGE: - switch (sd->state.lr_flag) { - case 2: - switch (sd->status.weapon) { - case W_BOW: - case W_REVOLVER: - case W_RIFLE: - case W_GATLING: - case W_SHOTGUN: - case W_GRENADE: - status->rhw.range += val; + case SP_HIT: + if(sd->state.lr_flag != 2) { + bonus = status->hit + val; + status->hit = cap_value(bonus, SHRT_MIN, SHRT_MAX); + } else + sd->bonus.arrow_hit+=val; + break; + case SP_FLEE1: + if(sd->state.lr_flag != 2) { + bonus = status->flee + val; + status->flee = cap_value(bonus, SHRT_MIN, SHRT_MAX); } break; - case 1: - status->lhw.range += val; + case SP_FLEE2: + if(sd->state.lr_flag != 2) { + bonus = status->flee2 + val*10; + status->flee2 = cap_value(bonus, SHRT_MIN, SHRT_MAX); + } break; - default: - status->rhw.range += val; + case SP_CRITICAL: + if(sd->state.lr_flag != 2) { + bonus = status->cri + val*10; + status->cri = cap_value(bonus, SHRT_MIN, SHRT_MAX); + } else + sd->bonus.arrow_cri += val*10; break; - } - break; - case SP_SPEED_RATE: //Non stackable increase - if(sd->state.lr_flag != 2) - sd->bonus.speed_rate = min(sd->bonus.speed_rate, -val); - break; - case SP_SPEED_ADDRATE: //Stackable increase - if(sd->state.lr_flag != 2) - sd->bonus.speed_add_rate -= val; - break; - case SP_ASPD: //Raw increase - if(sd->state.lr_flag != 2) - sd->bonus.aspd_add -= 10*val; - break; - case SP_ASPD_RATE: //Stackable increase - Made it linear as per rodatazone - if(sd->state.lr_flag != 2) -#ifndef RENEWAL_ASPD - status->aspd_rate -= 10*val; -#else - status->aspd_rate2 += val; -#endif - break; - case SP_HP_RECOV_RATE: - if(sd->state.lr_flag != 2) - sd->hprecov_rate += val; - break; - case SP_SP_RECOV_RATE: - if(sd->state.lr_flag != 2) - sd->sprecov_rate += val; - break; - case SP_CRITICAL_DEF: - if(sd->state.lr_flag != 2) - sd->bonus.critical_def += val; - break; - case SP_NEAR_ATK_DEF: - if(sd->state.lr_flag != 2) - sd->bonus.near_attack_def_rate += val; - break; - case SP_LONG_ATK_DEF: - if(sd->state.lr_flag != 2) - sd->bonus.long_attack_def_rate += val; - break; - case SP_DOUBLE_RATE: - if(sd->state.lr_flag == 0 && sd->bonus.double_rate < val) - sd->bonus.double_rate = val; - break; - case SP_DOUBLE_ADD_RATE: - if(sd->state.lr_flag == 0) - sd->bonus.double_add_rate += val; - break; - case SP_MATK_RATE: - if(sd->state.lr_flag != 2) - sd->matk_rate += val; - break; - case SP_IGNORE_DEF_ELE: - if(val >= ELE_MAX) { - ShowError("pc_bonus: SP_IGNORE_DEF_ELE: Invalid element %d\n", val); + case SP_ATKELE: + if(val >= ELE_MAX) { + ShowError("pc_bonus: SP_ATKELE: Invalid element %d\n", val); + break; + } + switch (sd->state.lr_flag) + { + case 2: + switch (sd->status.weapon) { + case W_BOW: + case W_REVOLVER: + case W_RIFLE: + case W_GATLING: + case W_SHOTGUN: + case W_GRENADE: + //Become weapon element. + status->rhw.ele=val; + break; + default: //Become arrow element. + sd->bonus.arrow_ele=val; + break; + } + break; + case 1: + status->lhw.ele=val; + break; + default: + status->rhw.ele=val; + break; + } break; - } - if(!sd->state.lr_flag) - sd->right_weapon.ignore_def_ele |= 1<state.lr_flag == 1) - sd->left_weapon.ignore_def_ele |= 1<state.lr_flag) - sd->right_weapon.ignore_def_race |= 1<state.lr_flag == 1) - sd->left_weapon.ignore_def_race |= 1<state.lr_flag != 2) - sd->bonus.atk_rate += val; - break; - case SP_MAGIC_ATK_DEF: - if(sd->state.lr_flag != 2) - sd->bonus.magic_def_rate += val; - break; - case SP_MISC_ATK_DEF: - if(sd->state.lr_flag != 2) - sd->bonus.misc_def_rate += val; - break; - case SP_IGNORE_MDEF_RATE: - if(sd->state.lr_flag != 2) { - sd->ignore_mdef[RC_NONBOSS] += val; - sd->ignore_mdef[RC_BOSS] += val; - } - break; - case SP_IGNORE_MDEF_ELE: - if(val >= ELE_MAX) { - ShowError("pc_bonus: SP_IGNORE_MDEF_ELE: Invalid element %d\n", val); + case SP_DEFELE: + if(val >= ELE_MAX) { + ShowError("pc_bonus: SP_DEFELE: Invalid element %d\n", val); + break; + } + if(sd->state.lr_flag != 2) + status->def_ele=val; break; - } - if(sd->state.lr_flag != 2) - sd->bonus.ignore_mdef_ele |= 1<state.lr_flag != 2) - sd->bonus.ignore_mdef_race |= 1<state.lr_flag != 2 && sd->bonus.perfect_hit < val) - sd->bonus.perfect_hit = val; - break; - case SP_PERFECT_HIT_ADD_RATE: - if(sd->state.lr_flag != 2) - sd->bonus.perfect_hit_add += val; - break; - case SP_CRITICAL_RATE: - if(sd->state.lr_flag != 2) - sd->critical_rate+=val; - break; - case SP_DEF_RATIO_ATK_ELE: - if(val >= ELE_MAX) { - ShowError("pc_bonus: SP_DEF_RATIO_ATK_ELE: Invalid element %d\n", val); + case SP_MAXHP: + if(sd->state.lr_flag == 2) + break; + val += (int)status->max_hp; + //Negative bonuses will underflow, this will be handled in status_calc_pc through casting + //If this is called outside of status_calc_pc, you'd better pray they do not underflow and end with UINT_MAX max_hp. + status->max_hp = (unsigned int)val; break; - } - if(!sd->state.lr_flag) - sd->right_weapon.def_ratio_atk_ele |= 1<state.lr_flag == 1) - sd->left_weapon.def_ratio_atk_ele |= 1<= RC_MAX) { - ShowError("pc_bonus: SP_DEF_RATIO_ATK_RACE: Invalid race %d\n", val); + case SP_MAXSP: + if(sd->state.lr_flag == 2) + break; + val += (int)status->max_sp; + status->max_sp = (unsigned int)val; break; - } - if(!sd->state.lr_flag) - sd->right_weapon.def_ratio_atk_race |= 1<state.lr_flag == 1) - sd->left_weapon.def_ratio_atk_race |= 1<state.lr_flag != 2) - sd->hit_rate += val; - break; - case SP_FLEE_RATE: - if(sd->state.lr_flag != 2) - sd->flee_rate += val; - break; - case SP_FLEE2_RATE: - if(sd->state.lr_flag != 2) - sd->flee2_rate += val; - break; - case SP_DEF_RATE: - if(sd->state.lr_flag != 2) - sd->def_rate += val; - break; - case SP_DEF2_RATE: - if(sd->state.lr_flag != 2) - sd->def2_rate += val; - break; - case SP_MDEF_RATE: - if(sd->state.lr_flag != 2) - sd->mdef_rate += val; - break; - case SP_MDEF2_RATE: - if(sd->state.lr_flag != 2) - sd->mdef2_rate += val; - break; - case SP_RESTART_FULL_RECOVER: - if(sd->state.lr_flag != 2) - sd->special_state.restart_full_recover = 1; - break; - case SP_NO_CASTCANCEL: - if(sd->state.lr_flag != 2) - sd->special_state.no_castcancel = 1; - break; - case SP_NO_CASTCANCEL2: - if(sd->state.lr_flag != 2) - sd->special_state.no_castcancel2 = 1; - break; - case SP_NO_SIZEFIX: - if(sd->state.lr_flag != 2) - sd->special_state.no_sizefix = 1; - break; - case SP_NO_MAGIC_DAMAGE: - if(sd->state.lr_flag == 2) + #ifndef RENEWAL_CAST + case SP_VARCASTRATE: + #endif + case SP_CASTRATE: + if(sd->state.lr_flag != 2) + sd->castrate+=val; break; - val+= sd->special_state.no_magic_damage; - sd->special_state.no_magic_damage = cap_value(val,0,100); - break; - case SP_NO_WEAPON_DAMAGE: - if(sd->state.lr_flag == 2) + case SP_MAXHPRATE: + if(sd->state.lr_flag != 2) + sd->hprate+=val; break; - val+= sd->special_state.no_weapon_damage; - sd->special_state.no_weapon_damage = cap_value(val,0,100); - break; - case SP_NO_MISC_DAMAGE: - if(sd->state.lr_flag == 2) + case SP_MAXSPRATE: + if(sd->state.lr_flag != 2) + sd->sprate+=val; break; - val+= sd->special_state.no_misc_damage; - sd->special_state.no_misc_damage = cap_value(val,0,100); - break; - case SP_NO_GEMSTONE: - if(sd->state.lr_flag != 2) - sd->special_state.no_gemstone = 1; - break; - case SP_INTRAVISION: // Maya Purple Card effect allowing to see Hiding/Cloaking people [DracoRPG] - if(sd->state.lr_flag != 2) { - sd->special_state.intravision = 1; - clif_status_load(&sd->bl, SI_INTRAVISION, 1); - } - break; - case SP_NO_KNOCKBACK: - if(sd->state.lr_flag != 2) - sd->special_state.no_knockback = 1; - break; - case SP_SPLASH_RANGE: - if(sd->bonus.splash_range < val) - sd->bonus.splash_range = val; - break; - case SP_SPLASH_ADD_RANGE: - sd->bonus.splash_add_range += val; - break; - case SP_SHORT_WEAPON_DAMAGE_RETURN: - if(sd->state.lr_flag != 2) - sd->bonus.short_weapon_damage_return += val; - break; - case SP_LONG_WEAPON_DAMAGE_RETURN: - if(sd->state.lr_flag != 2) - sd->bonus.long_weapon_damage_return += val; - break; - case SP_MAGIC_DAMAGE_RETURN: //AppleGirl Was Here - if(sd->state.lr_flag != 2) - sd->bonus.magic_damage_return += val; - break; - case SP_ALL_STATS: // [Valaris] - if(sd->state.lr_flag!=2) { - sd->param_bonus[SP_STR-SP_STR]+=val; - sd->param_bonus[SP_AGI-SP_STR]+=val; - sd->param_bonus[SP_VIT-SP_STR]+=val; - sd->param_bonus[SP_INT-SP_STR]+=val; - sd->param_bonus[SP_DEX-SP_STR]+=val; - sd->param_bonus[SP_LUK-SP_STR]+=val; - } - break; - case SP_AGI_VIT: // [Valaris] - if(sd->state.lr_flag!=2) { - sd->param_bonus[SP_AGI-SP_STR]+=val; - sd->param_bonus[SP_VIT-SP_STR]+=val; - } - break; - case SP_AGI_DEX_STR: // [Valaris] - if(sd->state.lr_flag!=2) { - sd->param_bonus[SP_AGI-SP_STR]+=val; - sd->param_bonus[SP_DEX-SP_STR]+=val; - sd->param_bonus[SP_STR-SP_STR]+=val; - } - break; - case SP_PERFECT_HIDE: // [Valaris] - if(sd->state.lr_flag!=2) - sd->special_state.perfect_hiding=1; - break; - case SP_UNBREAKABLE: - if(sd->state.lr_flag!=2) - sd->bonus.unbreakable += val; - break; - case SP_UNBREAKABLE_WEAPON: - if(sd->state.lr_flag != 2) - sd->bonus.unbreakable_equip |= EQP_WEAPON; - break; - case SP_UNBREAKABLE_ARMOR: - if(sd->state.lr_flag != 2) - sd->bonus.unbreakable_equip |= EQP_ARMOR; - break; - case SP_UNBREAKABLE_HELM: - if(sd->state.lr_flag != 2) - sd->bonus.unbreakable_equip |= EQP_HELM; - break; - case SP_UNBREAKABLE_SHIELD: - if(sd->state.lr_flag != 2) - sd->bonus.unbreakable_equip |= EQP_SHIELD; - break; - case SP_UNBREAKABLE_GARMENT: - if(sd->state.lr_flag != 2) - sd->bonus.unbreakable_equip |= EQP_GARMENT; - break; - case SP_UNBREAKABLE_SHOES: - if(sd->state.lr_flag != 2) - sd->bonus.unbreakable_equip |= EQP_SHOES; - break; - case SP_CLASSCHANGE: // [Valaris] - if(sd->state.lr_flag !=2) - sd->bonus.classchange=val; - break; - case SP_LONG_ATK_RATE: - if(sd->state.lr_flag != 2) //[Lupus] it should stack, too. As any other cards rate bonuses - sd->bonus.long_attack_atk_rate+=val; - break; - case SP_BREAK_WEAPON_RATE: - if(sd->state.lr_flag != 2) - sd->bonus.break_weapon_rate+=val; - break; - case SP_BREAK_ARMOR_RATE: - if(sd->state.lr_flag != 2) - sd->bonus.break_armor_rate+=val; - break; - case SP_ADD_STEAL_RATE: - if(sd->state.lr_flag != 2) - sd->bonus.add_steal_rate+=val; - break; - case SP_DELAYRATE: - if(sd->state.lr_flag != 2) - sd->delayrate+=val; - break; - case SP_CRIT_ATK_RATE: - if(sd->state.lr_flag != 2) - sd->bonus.crit_atk_rate += val; - break; - case SP_NO_REGEN: - if(sd->state.lr_flag != 2) - sd->regen.state.block|=val; - break; - case SP_UNSTRIPABLE_WEAPON: - if(sd->state.lr_flag != 2) - sd->bonus.unstripable_equip |= EQP_WEAPON; - break; - case SP_UNSTRIPABLE: - case SP_UNSTRIPABLE_ARMOR: - if(sd->state.lr_flag != 2) - sd->bonus.unstripable_equip |= EQP_ARMOR; - break; - case SP_UNSTRIPABLE_HELM: - if(sd->state.lr_flag != 2) - sd->bonus.unstripable_equip |= EQP_HELM; - break; - case SP_UNSTRIPABLE_SHIELD: - if(sd->state.lr_flag != 2) - sd->bonus.unstripable_equip |= EQP_SHIELD; - break; - case SP_HP_DRAIN_VALUE: - if(!sd->state.lr_flag) { - sd->right_weapon.hp_drain[RC_NONBOSS].value += val; - sd->right_weapon.hp_drain[RC_BOSS].value += val; - } - else if(sd->state.lr_flag == 1) { - sd->left_weapon.hp_drain[RC_NONBOSS].value += val; - sd->left_weapon.hp_drain[RC_BOSS].value += val; - } - break; - case SP_SP_DRAIN_VALUE: - if(!sd->state.lr_flag) { - sd->right_weapon.sp_drain[RC_NONBOSS].value += val; - sd->right_weapon.sp_drain[RC_BOSS].value += val; - } - else if(sd->state.lr_flag == 1) { - sd->left_weapon.sp_drain[RC_NONBOSS].value += val; - sd->left_weapon.sp_drain[RC_BOSS].value += val; - } - break; - case SP_SP_GAIN_VALUE: - if(!sd->state.lr_flag) - sd->bonus.sp_gain_value += val; - break; - case SP_HP_GAIN_VALUE: - if(!sd->state.lr_flag) - sd->bonus.hp_gain_value += val; - break; - case SP_MAGIC_SP_GAIN_VALUE: - if(!sd->state.lr_flag) - sd->bonus.magic_sp_gain_value += val; - break; - case SP_MAGIC_HP_GAIN_VALUE: - if(!sd->state.lr_flag) - sd->bonus.magic_hp_gain_value += val; - break; - case SP_ADD_HEAL_RATE: - if(sd->state.lr_flag != 2) - sd->bonus.add_heal_rate += val; - break; - case SP_ADD_HEAL2_RATE: - if(sd->state.lr_flag != 2) - sd->bonus.add_heal2_rate += val; - break; - case SP_ADD_ITEM_HEAL_RATE: - if(sd->state.lr_flag != 2) - sd->bonus.itemhealrate2 += val; - break; - case SP_EMATK: - if(sd->state.lr_flag != 2) - sd->bonus.ematk += val; - break; - case SP_FIXCASTRATE: - if(sd->state.lr_flag != 2) - sd->bonus.fixcastrate -= val; - break; - case SP_ADD_FIXEDCAST: - if(sd->state.lr_flag != 2) - sd->bonus.add_fixcast += val; + case SP_SPRATE: + if(sd->state.lr_flag != 2) + sd->dsprate+=val; + break; + case SP_ATTACKRANGE: + switch (sd->state.lr_flag) { + case 2: + switch (sd->status.weapon) { + case W_BOW: + case W_REVOLVER: + case W_RIFLE: + case W_GATLING: + case W_SHOTGUN: + case W_GRENADE: + status->rhw.range += val; + } + break; + case 1: + status->lhw.range += val; + break; + default: + status->rhw.range += val; + break; + } + break; + case SP_SPEED_RATE: //Non stackable increase + if(sd->state.lr_flag != 2) + sd->bonus.speed_rate = min(sd->bonus.speed_rate, -val); + break; + case SP_SPEED_ADDRATE: //Stackable increase + if(sd->state.lr_flag != 2) + sd->bonus.speed_add_rate -= val; + break; + case SP_ASPD: //Raw increase + if(sd->state.lr_flag != 2) + sd->bonus.aspd_add -= 10*val; + break; + case SP_ASPD_RATE: //Stackable increase - Made it linear as per rodatazone + if(sd->state.lr_flag != 2) + #ifndef RENEWAL_ASPD + status->aspd_rate -= 10*val; + #else + status->aspd_rate2 += val; + #endif + break; + case SP_HP_RECOV_RATE: + if(sd->state.lr_flag != 2) + sd->hprecov_rate += val; + break; + case SP_SP_RECOV_RATE: + if(sd->state.lr_flag != 2) + sd->sprecov_rate += val; + break; + case SP_CRITICAL_DEF: + if(sd->state.lr_flag != 2) + sd->bonus.critical_def += val; + break; + case SP_NEAR_ATK_DEF: + if(sd->state.lr_flag != 2) + sd->bonus.near_attack_def_rate += val; + break; + case SP_LONG_ATK_DEF: + if(sd->state.lr_flag != 2) + sd->bonus.long_attack_def_rate += val; + break; + case SP_DOUBLE_RATE: + if(sd->state.lr_flag == 0 && sd->bonus.double_rate < val) + sd->bonus.double_rate = val; + break; + case SP_DOUBLE_ADD_RATE: + if(sd->state.lr_flag == 0) + sd->bonus.double_add_rate += val; + break; + case SP_MATK_RATE: + if(sd->state.lr_flag != 2) + sd->matk_rate += val; + break; + case SP_IGNORE_DEF_ELE: + if(val >= ELE_MAX) { + ShowError("pc_bonus: SP_IGNORE_DEF_ELE: Invalid element %d\n", val); + break; + } + if(!sd->state.lr_flag) + sd->right_weapon.ignore_def_ele |= 1<state.lr_flag == 1) + sd->left_weapon.ignore_def_ele |= 1<state.lr_flag) + sd->right_weapon.ignore_def_race |= 1<state.lr_flag == 1) + sd->left_weapon.ignore_def_race |= 1<state.lr_flag != 2) + sd->bonus.atk_rate += val; + break; + case SP_MAGIC_ATK_DEF: + if(sd->state.lr_flag != 2) + sd->bonus.magic_def_rate += val; + break; + case SP_MISC_ATK_DEF: + if(sd->state.lr_flag != 2) + sd->bonus.misc_def_rate += val; + break; + case SP_IGNORE_MDEF_RATE: + if(sd->state.lr_flag != 2) { + sd->ignore_mdef[RC_NONBOSS] += val; + sd->ignore_mdef[RC_BOSS] += val; + } + break; + case SP_IGNORE_MDEF_ELE: + if(val >= ELE_MAX) { + ShowError("pc_bonus: SP_IGNORE_MDEF_ELE: Invalid element %d\n", val); + break; + } + if(sd->state.lr_flag != 2) + sd->bonus.ignore_mdef_ele |= 1<state.lr_flag != 2) + sd->bonus.ignore_mdef_race |= 1<state.lr_flag != 2 && sd->bonus.perfect_hit < val) + sd->bonus.perfect_hit = val; + break; + case SP_PERFECT_HIT_ADD_RATE: + if(sd->state.lr_flag != 2) + sd->bonus.perfect_hit_add += val; + break; + case SP_CRITICAL_RATE: + if(sd->state.lr_flag != 2) + sd->critical_rate+=val; + break; + case SP_DEF_RATIO_ATK_ELE: + if(val >= ELE_MAX) { + ShowError("pc_bonus: SP_DEF_RATIO_ATK_ELE: Invalid element %d\n", val); + break; + } + if(!sd->state.lr_flag) + sd->right_weapon.def_ratio_atk_ele |= 1<state.lr_flag == 1) + sd->left_weapon.def_ratio_atk_ele |= 1<= RC_MAX) { + ShowError("pc_bonus: SP_DEF_RATIO_ATK_RACE: Invalid race %d\n", val); + break; + } + if(!sd->state.lr_flag) + sd->right_weapon.def_ratio_atk_race |= 1<state.lr_flag == 1) + sd->left_weapon.def_ratio_atk_race |= 1<state.lr_flag != 2) + sd->hit_rate += val; + break; + case SP_FLEE_RATE: + if(sd->state.lr_flag != 2) + sd->flee_rate += val; + break; + case SP_FLEE2_RATE: + if(sd->state.lr_flag != 2) + sd->flee2_rate += val; + break; + case SP_DEF_RATE: + if(sd->state.lr_flag != 2) + sd->def_rate += val; + break; + case SP_DEF2_RATE: + if(sd->state.lr_flag != 2) + sd->def2_rate += val; + break; + case SP_MDEF_RATE: + if(sd->state.lr_flag != 2) + sd->mdef_rate += val; + break; + case SP_MDEF2_RATE: + if(sd->state.lr_flag != 2) + sd->mdef2_rate += val; + break; + case SP_RESTART_FULL_RECOVER: + if(sd->state.lr_flag != 2) + sd->special_state.restart_full_recover = 1; + break; + case SP_NO_CASTCANCEL: + if(sd->state.lr_flag != 2) + sd->special_state.no_castcancel = 1; + break; + case SP_NO_CASTCANCEL2: + if(sd->state.lr_flag != 2) + sd->special_state.no_castcancel2 = 1; + break; + case SP_NO_SIZEFIX: + if(sd->state.lr_flag != 2) + sd->special_state.no_sizefix = 1; + break; + case SP_NO_MAGIC_DAMAGE: + if(sd->state.lr_flag == 2) + break; + val+= sd->special_state.no_magic_damage; + sd->special_state.no_magic_damage = cap_value(val,0,100); + break; + case SP_NO_WEAPON_DAMAGE: + if(sd->state.lr_flag == 2) + break; + val+= sd->special_state.no_weapon_damage; + sd->special_state.no_weapon_damage = cap_value(val,0,100); + break; + case SP_NO_MISC_DAMAGE: + if(sd->state.lr_flag == 2) + break; + val+= sd->special_state.no_misc_damage; + sd->special_state.no_misc_damage = cap_value(val,0,100); + break; + case SP_NO_GEMSTONE: + if(sd->state.lr_flag != 2) + sd->special_state.no_gemstone = 1; + break; + case SP_INTRAVISION: // Maya Purple Card effect allowing to see Hiding/Cloaking people [DracoRPG] + if(sd->state.lr_flag != 2) { + sd->special_state.intravision = 1; + clif_status_load(&sd->bl, SI_INTRAVISION, 1); + } + break; + case SP_NO_KNOCKBACK: + if(sd->state.lr_flag != 2) + sd->special_state.no_knockback = 1; + break; + case SP_SPLASH_RANGE: + if(sd->bonus.splash_range < val) + sd->bonus.splash_range = val; + break; + case SP_SPLASH_ADD_RANGE: + sd->bonus.splash_add_range += val; + break; + case SP_SHORT_WEAPON_DAMAGE_RETURN: + if(sd->state.lr_flag != 2) + sd->bonus.short_weapon_damage_return += val; + break; + case SP_LONG_WEAPON_DAMAGE_RETURN: + if(sd->state.lr_flag != 2) + sd->bonus.long_weapon_damage_return += val; + break; + case SP_MAGIC_DAMAGE_RETURN: //AppleGirl Was Here + if(sd->state.lr_flag != 2) + sd->bonus.magic_damage_return += val; + break; + case SP_ALL_STATS: // [Valaris] + if(sd->state.lr_flag!=2) { + sd->param_bonus[SP_STR-SP_STR]+=val; + sd->param_bonus[SP_AGI-SP_STR]+=val; + sd->param_bonus[SP_VIT-SP_STR]+=val; + sd->param_bonus[SP_INT-SP_STR]+=val; + sd->param_bonus[SP_DEX-SP_STR]+=val; + sd->param_bonus[SP_LUK-SP_STR]+=val; + } + break; + case SP_AGI_VIT: // [Valaris] + if(sd->state.lr_flag!=2) { + sd->param_bonus[SP_AGI-SP_STR]+=val; + sd->param_bonus[SP_VIT-SP_STR]+=val; + } + break; + case SP_AGI_DEX_STR: // [Valaris] + if(sd->state.lr_flag!=2) { + sd->param_bonus[SP_AGI-SP_STR]+=val; + sd->param_bonus[SP_DEX-SP_STR]+=val; + sd->param_bonus[SP_STR-SP_STR]+=val; + } + break; + case SP_PERFECT_HIDE: // [Valaris] + if(sd->state.lr_flag!=2) + sd->special_state.perfect_hiding=1; + break; + case SP_UNBREAKABLE: + if(sd->state.lr_flag!=2) + sd->bonus.unbreakable += val; + break; + case SP_UNBREAKABLE_WEAPON: + if(sd->state.lr_flag != 2) + sd->bonus.unbreakable_equip |= EQP_WEAPON; + break; + case SP_UNBREAKABLE_ARMOR: + if(sd->state.lr_flag != 2) + sd->bonus.unbreakable_equip |= EQP_ARMOR; + break; + case SP_UNBREAKABLE_HELM: + if(sd->state.lr_flag != 2) + sd->bonus.unbreakable_equip |= EQP_HELM; + break; + case SP_UNBREAKABLE_SHIELD: + if(sd->state.lr_flag != 2) + sd->bonus.unbreakable_equip |= EQP_SHIELD; + break; + case SP_UNBREAKABLE_GARMENT: + if(sd->state.lr_flag != 2) + sd->bonus.unbreakable_equip |= EQP_GARMENT; + break; + case SP_UNBREAKABLE_SHOES: + if(sd->state.lr_flag != 2) + sd->bonus.unbreakable_equip |= EQP_SHOES; + break; + case SP_CLASSCHANGE: // [Valaris] + if(sd->state.lr_flag !=2) + sd->bonus.classchange=val; + break; + case SP_LONG_ATK_RATE: + if(sd->state.lr_flag != 2) //[Lupus] it should stack, too. As any other cards rate bonuses + sd->bonus.long_attack_atk_rate+=val; + break; + case SP_BREAK_WEAPON_RATE: + if(sd->state.lr_flag != 2) + sd->bonus.break_weapon_rate+=val; + break; + case SP_BREAK_ARMOR_RATE: + if(sd->state.lr_flag != 2) + sd->bonus.break_armor_rate+=val; + break; + case SP_ADD_STEAL_RATE: + if(sd->state.lr_flag != 2) + sd->bonus.add_steal_rate+=val; + break; + case SP_DELAYRATE: + if(sd->state.lr_flag != 2) + sd->delayrate+=val; + break; + case SP_CRIT_ATK_RATE: + if(sd->state.lr_flag != 2) + sd->bonus.crit_atk_rate += val; + break; + case SP_NO_REGEN: + if(sd->state.lr_flag != 2) + sd->regen.state.block|=val; + break; + case SP_UNSTRIPABLE_WEAPON: + if(sd->state.lr_flag != 2) + sd->bonus.unstripable_equip |= EQP_WEAPON; + break; + case SP_UNSTRIPABLE: + case SP_UNSTRIPABLE_ARMOR: + if(sd->state.lr_flag != 2) + sd->bonus.unstripable_equip |= EQP_ARMOR; + break; + case SP_UNSTRIPABLE_HELM: + if(sd->state.lr_flag != 2) + sd->bonus.unstripable_equip |= EQP_HELM; + break; + case SP_UNSTRIPABLE_SHIELD: + if(sd->state.lr_flag != 2) + sd->bonus.unstripable_equip |= EQP_SHIELD; + break; + case SP_HP_DRAIN_VALUE: + if(!sd->state.lr_flag) { + sd->right_weapon.hp_drain[RC_NONBOSS].value += val; + sd->right_weapon.hp_drain[RC_BOSS].value += val; + } + else if(sd->state.lr_flag == 1) { + sd->left_weapon.hp_drain[RC_NONBOSS].value += val; + sd->left_weapon.hp_drain[RC_BOSS].value += val; + } + break; + case SP_SP_DRAIN_VALUE: + if(!sd->state.lr_flag) { + sd->right_weapon.sp_drain[RC_NONBOSS].value += val; + sd->right_weapon.sp_drain[RC_BOSS].value += val; + } + else if(sd->state.lr_flag == 1) { + sd->left_weapon.sp_drain[RC_NONBOSS].value += val; + sd->left_weapon.sp_drain[RC_BOSS].value += val; + } + break; + case SP_SP_GAIN_VALUE: + if(!sd->state.lr_flag) + sd->bonus.sp_gain_value += val; + break; + case SP_HP_GAIN_VALUE: + if(!sd->state.lr_flag) + sd->bonus.hp_gain_value += val; + break; + case SP_MAGIC_SP_GAIN_VALUE: + if(!sd->state.lr_flag) + sd->bonus.magic_sp_gain_value += val; + break; + case SP_MAGIC_HP_GAIN_VALUE: + if(!sd->state.lr_flag) + sd->bonus.magic_hp_gain_value += val; + break; + case SP_ADD_HEAL_RATE: + if(sd->state.lr_flag != 2) + sd->bonus.add_heal_rate += val; + break; + case SP_ADD_HEAL2_RATE: + if(sd->state.lr_flag != 2) + sd->bonus.add_heal2_rate += val; + break; + case SP_ADD_ITEM_HEAL_RATE: + if(sd->state.lr_flag != 2) + sd->bonus.itemhealrate2 += val; + break; + case SP_EMATK: + if(sd->state.lr_flag != 2) + sd->bonus.ematk += val; + break; + case SP_FIXCASTRATE: + if(sd->state.lr_flag != 2) + sd->bonus.fixcastrate -= val; + break; + case SP_ADD_FIXEDCAST: + if(sd->state.lr_flag != 2) + sd->bonus.add_fixcast += val; - break; -#ifdef RENEWAL_CAST - case SP_VARCASTRATE: - if(sd->state.lr_flag != 2) - sd->bonus.varcastrate -= val; - break; - case SP_ADD_VARIABLECAST: - if(sd->state.lr_flag != 2) + break; + #ifdef RENEWAL_CAST + case SP_VARCASTRATE: + if(sd->state.lr_flag != 2) + sd->bonus.varcastrate -= val; + break; + case SP_ADD_VARIABLECAST: + if(sd->state.lr_flag != 2) - sd->bonus.add_varcast += val; + sd->bonus.add_varcast += val; - break; -#endif - default: - ShowWarning("pc_bonus: unknown type %d %d !\n",type,val); - break; + break; + #endif + default: + ShowWarning("pc_bonus: unknown type %d %d !\n",type,val); + break; } return 0; } @@ -6875,39 +6875,139 @@ int pc_readparam(struct map_session_data* sd,int type) nullpo_ret(sd); switch(type) { - case SP_SKILLPOINT: val = sd->status.skill_point; break; - case SP_STATUSPOINT: val = sd->status.status_point; break; - case SP_ZENY: val = sd->status.zeny; break; - case SP_BASELEVEL: val = sd->status.base_level; break; - case SP_JOBLEVEL: val = sd->status.job_level; break; - case SP_CLASS: val = sd->status.class_; break; - case SP_BASEJOB: val = pc_mapid2jobid(sd->class_&MAPID_UPPERMASK, sd->status.sex); break; //Base job, extracting upper type. - case SP_UPPER: val = sd->class_&JOBL_UPPER?1:(sd->class_&JOBL_BABY?2:0); break; - case SP_BASECLASS: val = pc_mapid2jobid(sd->class_&MAPID_BASEMASK, sd->status.sex); break; //Extract base class tree. [Skotlex] - case SP_SEX: val = sd->status.sex; break; - case SP_WEIGHT: val = sd->weight; break; - case SP_MAXWEIGHT: val = sd->max_weight; break; - case SP_BASEEXP: val = sd->status.base_exp; break; - case SP_JOBEXP: val = sd->status.job_exp; break; - case SP_NEXTBASEEXP: val = pc_nextbaseexp(sd); break; - case SP_NEXTJOBEXP: val = pc_nextjobexp(sd); break; - case SP_HP: val = sd->battle_status.hp; break; - case SP_MAXHP: val = sd->battle_status.max_hp; break; - case SP_SP: val = sd->battle_status.sp; break; - case SP_MAXSP: val = sd->battle_status.max_sp; break; - case SP_STR: val = sd->status.str; break; - case SP_AGI: val = sd->status.agi; break; - case SP_VIT: val = sd->status.vit; break; - case SP_INT: val = sd->status.int_; break; - case SP_DEX: val = sd->status.dex; break; - case SP_LUK: val = sd->status.luk; break; - case SP_KARMA: val = sd->status.karma; break; - case SP_MANNER: val = sd->status.manner; break; - case SP_FAME: val = sd->status.fame; break; - case SP_KILLERRID: val = sd->killerrid; break; - case SP_KILLEDRID: val = sd->killedrid; break; - case SP_CRITICAL: val = sd->battle_status.cri/10; break; - case SP_ASPD: val = (2000-sd->battle_status.amotion)/10; break; + case SP_SKILLPOINT: val = sd->status.skill_point; break; + case SP_STATUSPOINT: val = sd->status.status_point; break; + case SP_ZENY: val = sd->status.zeny; break; + case SP_BASELEVEL: val = sd->status.base_level; break; + case SP_JOBLEVEL: val = sd->status.job_level; break; + case SP_CLASS: val = sd->status.class_; break; + case SP_BASEJOB: val = pc_mapid2jobid(sd->class_&MAPID_UPPERMASK, sd->status.sex); break; //Base job, extracting upper type. + case SP_UPPER: val = sd->class_&JOBL_UPPER?1:(sd->class_&JOBL_BABY?2:0); break; + case SP_BASECLASS: val = pc_mapid2jobid(sd->class_&MAPID_BASEMASK, sd->status.sex); break; //Extract base class tree. [Skotlex] + case SP_SEX: val = sd->status.sex; break; + case SP_WEIGHT: val = sd->weight; break; + case SP_MAXWEIGHT: val = sd->max_weight; break; + case SP_BASEEXP: val = sd->status.base_exp; break; + case SP_JOBEXP: val = sd->status.job_exp; break; + case SP_NEXTBASEEXP: val = pc_nextbaseexp(sd); break; + case SP_NEXTJOBEXP: val = pc_nextjobexp(sd); break; + case SP_HP: val = sd->battle_status.hp; break; + case SP_MAXHP: val = sd->battle_status.max_hp; break; + case SP_SP: val = sd->battle_status.sp; break; + case SP_MAXSP: val = sd->battle_status.max_sp; break; + case SP_STR: val = sd->status.str; break; + case SP_AGI: val = sd->status.agi; break; + case SP_VIT: val = sd->status.vit; break; + case SP_INT: val = sd->status.int_; break; + case SP_DEX: val = sd->status.dex; break; + case SP_LUK: val = sd->status.luk; break; + case SP_KARMA: val = sd->status.karma; break; + case SP_MANNER: val = sd->status.manner; break; + case SP_FAME: val = sd->status.fame; break; + case SP_KILLERRID: val = sd->killerrid; break; + case SP_KILLEDRID: val = sd->killedrid; break; + case SP_CRITICAL: val = sd->battle_status.cri/10; break; + case SP_ASPD: val = (2000-sd->battle_status.amotion)/10; break; + case SP_BASE_ATK: val = sd->battle_status.batk; break; + case SP_DEF1: val = sd->battle_status.def; break; + case SP_DEF2: val = sd->battle_status.def2; break; + case SP_MDEF1: val = sd->battle_status.mdef; break; + case SP_MDEF2: val = sd->battle_status.mdef2; break; + case SP_HIT: val = sd->battle_status.hit; break; + case SP_FLEE1: val = sd->battle_status.flee; break; + case SP_FLEE2: val = sd->battle_status.flee2; break; + case SP_DEFELE: val = sd->battle_status.def_ele; break; +#ifndef RENEWAL_CAST + case SP_VARCASTRATE: +#endif + case SP_CASTRATE: + val = sd->castrate+=val; + break; + case SP_MAXHPRATE: val = sd->hprate; break; + case SP_MAXSPRATE: val = sd->sprate; break; + case SP_SPRATE: val = sd->dsprate; break; + case SP_SPEED_RATE: val = sd->bonus.speed_rate; break; + case SP_SPEED_ADDRATE: val = sd->bonus.speed_add_rate; break; + case SP_ASPD_RATE: +#ifndef RENEWAL_ASPD + val = sd->battle_status.aspd_rate; +#else + val = sd->battle_status.aspd_rate2; +#endif + break; + case SP_HP_RECOV_RATE: val = sd->hprecov_rate; break; + case SP_SP_RECOV_RATE: val = sd->sprecov_rate; break; + case SP_CRITICAL_DEF: val = sd->bonus.critical_def; break; + case SP_NEAR_ATK_DEF: val = sd->bonus.near_attack_def_rate; break; + case SP_LONG_ATK_DEF: val = sd->bonus.long_attack_def_rate; break; + case SP_DOUBLE_RATE: val = sd->bonus.double_rate; break; + case SP_DOUBLE_ADD_RATE: val = sd->bonus.double_add_rate; break; + case SP_MATK_RATE: val = sd->matk_rate; break; + case SP_ATK_RATE: val = sd->bonus.atk_rate; break; + case SP_MAGIC_ATK_DEF: val = sd->bonus.magic_def_rate; break; + case SP_MISC_ATK_DEF: val = sd->bonus.misc_def_rate; break; + case SP_PERFECT_HIT_RATE:val = sd->bonus.perfect_hit; break; + case SP_PERFECT_HIT_ADD_RATE: val = sd->bonus.perfect_hit_add; break; + case SP_CRITICAL_RATE: val = sd->critical_rate; break; + case SP_HIT_RATE: val = sd->hit_rate; break; + case SP_FLEE_RATE: val = sd->flee_rate; break; + case SP_FLEE2_RATE: val = sd->flee2_rate; break; + case SP_DEF_RATE: val = sd->def_rate; break; + case SP_DEF2_RATE: val = sd->def2_rate; break; + case SP_MDEF_RATE: val = sd->mdef_rate; break; + case SP_MDEF2_RATE: val = sd->mdef2_rate; break; + case SP_RESTART_FULL_RECOVER: val = sd->special_state.restart_full_recover?1:0; break; + case SP_NO_CASTCANCEL: val = sd->special_state.no_castcancel?1:0; break; + case SP_NO_CASTCANCEL2: val = sd->special_state.no_castcancel2?1:0; break; + case SP_NO_SIZEFIX: val = sd->special_state.no_sizefix?1:0; break; + case SP_NO_MAGIC_DAMAGE: val = sd->special_state.no_magic_damage; break; + case SP_NO_WEAPON_DAMAGE:val = sd->special_state.no_weapon_damage; break; + case SP_NO_MISC_DAMAGE: val = sd->special_state.no_misc_damage; break; + case SP_NO_GEMSTONE: val = sd->special_state.no_gemstone?1:0; break; + case SP_INTRAVISION: val = sd->special_state.intravision?1:0; break; + case SP_NO_KNOCKBACK: val = sd->special_state.no_knockback?1:0; break; + case SP_SPLASH_RANGE: val = sd->bonus.splash_range; break; + case SP_SPLASH_ADD_RANGE:val = sd->bonus.splash_add_range; break; + case SP_SHORT_WEAPON_DAMAGE_RETURN: val = sd->bonus.short_weapon_damage_return; break; + case SP_LONG_WEAPON_DAMAGE_RETURN: val = sd->bonus.long_weapon_damage_return; break; + case SP_MAGIC_DAMAGE_RETURN: val = sd->bonus.magic_damage_return; break; + case SP_PERFECT_HIDE: val = sd->special_state.perfect_hiding?1:0; break; + case SP_UNBREAKABLE: val = sd->bonus.unbreakable; break; + case SP_UNBREAKABLE_WEAPON: val = (sd->bonus.unbreakable_equip&EQP_WEAPON)?1:0; break; + case SP_UNBREAKABLE_ARMOR: val = (sd->bonus.unbreakable_equip&EQP_ARMOR)?1:0; break; + case SP_UNBREAKABLE_HELM: val = (sd->bonus.unbreakable_equip&EQP_HELM)?1:0; break; + case SP_UNBREAKABLE_SHIELD: val = (sd->bonus.unbreakable_equip&EQP_SHIELD)?1:0; break; + case SP_UNBREAKABLE_GARMENT: val = (sd->bonus.unbreakable_equip&EQP_GARMENT)?1:0; break; + case SP_UNBREAKABLE_SHOES: val = (sd->bonus.unbreakable_equip&EQP_SHOES)?1:0; break; + case SP_CLASSCHANGE: val = sd->bonus.classchange; break; + case SP_LONG_ATK_RATE: val = sd->bonus.long_attack_atk_rate; break; + case SP_BREAK_WEAPON_RATE: val = sd->bonus.break_weapon_rate; break; + case SP_BREAK_ARMOR_RATE: val = sd->bonus.break_armor_rate; break; + case SP_ADD_STEAL_RATE: val = sd->bonus.add_steal_rate; break; + case SP_DELAYRATE: val = sd->delayrate; break; + case SP_CRIT_ATK_RATE: val = sd->bonus.crit_atk_rate; break; + case SP_UNSTRIPABLE_WEAPON: val = (sd->bonus.unstripable_equip&EQP_WEAPON)?1:0; break; + case SP_UNSTRIPABLE: + case SP_UNSTRIPABLE_ARMOR: + val = (sd->bonus.unstripable_equip&EQP_ARMOR)?1:0; + break; + case SP_UNSTRIPABLE_HELM: val = (sd->bonus.unstripable_equip&EQP_HELM)?1:0; break; + case SP_UNSTRIPABLE_SHIELD: val = (sd->bonus.unstripable_equip&EQP_SHIELD)?1:0; break; + case SP_SP_GAIN_VALUE: val = sd->bonus.sp_gain_value; break; + case SP_HP_GAIN_VALUE: val = sd->bonus.hp_gain_value; break; + case SP_MAGIC_SP_GAIN_VALUE: val = sd->bonus.magic_sp_gain_value; break; + case SP_MAGIC_HP_GAIN_VALUE: val = sd->bonus.magic_hp_gain_value; break; + case SP_ADD_HEAL_RATE: val = sd->bonus.add_heal_rate; break; + case SP_ADD_HEAL2_RATE: val = sd->bonus.add_heal2_rate; break; + case SP_ADD_ITEM_HEAL_RATE: val = sd->bonus.itemhealrate2; break; + case SP_EMATK: val = sd->bonus.ematk; break; + case SP_FIXCASTRATE: val = sd->bonus.fixcastrate; break; + case SP_ADD_FIXEDCAST: val = sd->bonus.add_fixcast; break; +#ifdef RENEWAL_CAST + case SP_VARCASTRATE: val = sd->bonus.varcastrate; break; + case SP_ADD_VARIABLECAST:val = sd->bonus.add_varcast; break; +#endif + } return val; -- cgit v1.2.3-70-g09d2