Merged novice academie from Hercules 21564acf13

-> All Credit to Kisuka for this big work.

Added news commands to alter questinfo conditions :
- setquestinfo_level : Add level range criteria for quest info with quest id 'quest_id'.
- setquestinfo_req : Add quest requirement for quest info with quest id 'quest_id'.
   -> Player have / doesn't have the required quest.
- setquestinfo_job : To add additionnal job criteria.
-> Credit to Cydh !
This commit is contained in:
Atemo 2015-11-16 00:34:00 +01:00
parent e276970723
commit cc8edaaac6
23 changed files with 15109 additions and 148 deletions

View File

@ -109,7 +109,8 @@ save_log: yes
// Starting point for new characters // Starting point for new characters
// Format: <map_name>,<x>,<y> // Format: <map_name>,<x>,<y>
start_point: new_1-1,53,111 start_point: iz_int,97,90
start_point_pre: new_1-1,53,111
// Starting items for new characters // Starting items for new characters
// Max number of items is MAX_STARTITEM in char.c (default 32) // Max number of items is MAX_STARTITEM in char.c (default 32)

View File

@ -6855,8 +6855,8 @@
12842,Platinum_Treasure_Box,Platinum Treasure Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,50,,,{},{},{} 12842,Platinum_Treasure_Box,Platinum Treasure Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,50,,,{},{},{}
12843,Pearl_Treasure_Box,Pearl Treasure Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,60,,,{},{},{} 12843,Pearl_Treasure_Box,Pearl Treasure Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,60,,,{},{},{}
12844,Diamond_Treasure_Box,Diamond Treasure Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,70,,,{},{},{} 12844,Diamond_Treasure_Box,Diamond Treasure Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,70,,,{},{},{}
12845,WOB_Amatsu,WOB Amatsu,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12845,Amatsu_Butterfly_Wing,Amatsu_Butterfly_Wing,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
12846,Unripe_Apple2,Unripe Apple2,2,10,,50,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12846,Little_Unripe_Apple,Little_Unripe_Apple,2,10,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ pet 2398; },{},{}
12847,Old_Equipment_Box,Old Equipment Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12847,Old_Equipment_Box,Old Equipment Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
12848,Falcon_Flute,Falcon Flute,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ if(getskilllv("HT_FALCON")) { if(checkoption(Option_Wug)||checkoption(Option_Wugrider)) end; setfalcon (!checkfalcon()); } },{},{} 12848,Falcon_Flute,Falcon Flute,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ if(getskilllv("HT_FALCON")) { if(checkoption(Option_Wug)||checkoption(Option_Wugrider)) end; setfalcon (!checkfalcon()); } },{},{}
12849,Combination_Kit,Combination Kit,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12849,Combination_Kit,Combination Kit,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}

View File

@ -778,7 +778,7 @@
1722,EVENT_JAKK,Jakk,Jakk,99,10310,0,93,90,1,115,182,8,11,1,28,18,13,35,45,10,12,1,0,43,0x81,240,1180,480,648,0,0,0,0,0,0,0,7225,1000,1062,1000,535,1000,0,0,0,0,0,0,0,0,0,0,0,0,5134,10000 1722,EVENT_JAKK,Jakk,Jakk,99,10310,0,93,90,1,115,182,8,11,1,28,18,13,35,45,10,12,1,0,43,0x81,240,1180,480,648,0,0,0,0,0,0,0,7225,1000,1062,1000,535,1000,0,0,0,0,0,0,0,0,0,0,0,0,5134,10000
1723,A_SHECIL,Shecil Damon,Cecil Damon,82,30000,0,0,0,14,600,900,40,15,1,145,27,32,134,80,10,12,1,7,64,0x3695,180,1008,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1723,A_SHECIL,Shecil Damon,Cecil Damon,82,30000,0,0,0,14,600,900,40,15,1,145,27,32,134,80,10,12,1,7,64,0x3695,180,1008,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1724,A_POTON_CANON,Photon Cannon,Photon Cannon,66,8000,0,0,0,9,1000,1300,16,30,1,40,25,20,80,80,10,12,1,0,40,0x84,300,1536,960,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1724,A_POTON_CANON,Photon Cannon,Photon Cannon,66,8000,0,0,0,9,1000,1300,16,30,1,40,25,20,80,80,10,12,1,0,40,0x84,300,1536,960,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1725,R_PORING,Poring,Poring,1,50,0,0,0,1,7,10,0,5,1,1,1,0,6,30,10,12,1,3,21,0x83,150,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1725,R_PORING,Poring,Poring,1,50,0,0,0,1,7,10,0,5,1,1,1,0,6,30,10,12,1,3,21,0x81,150,1872,672,480,0,0,0,0,0,0,0,7049,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1726,R_LUNATIC,Lunatic,Lunatic,3,60,0,0,0,1,9,12,0,20,1,3,3,10,8,60,10,12,0,2,60,0x83,150,1456,456,336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1726,R_LUNATIC,Lunatic,Lunatic,3,60,0,0,0,1,9,12,0,20,1,3,3,10,8,60,10,12,0,2,60,0x83,150,1456,456,336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1727,R_SAVAGE_BABE,Savage Babe,Savage Babe,7,182,0,0,0,1,20,25,0,0,1,7,14,5,12,35,10,12,0,2,22,0x83,150,1624,624,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1727,R_SAVAGE_BABE,Savage Babe,Savage Babe,7,182,0,0,0,1,20,25,0,0,1,7,14,5,12,35,10,12,0,2,22,0x83,150,1624,624,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1728,R_DESERT_WOLF_B,Desert Wolf Baby,Baby Desert Wolf,14,140,1,0,0,1,33,41,13,0,10,12,8,5,28,7,10,12,0,2,23,0x83,150,1600,900,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1728,R_DESERT_WOLF_B,Desert Wolf Baby,Baby Desert Wolf,14,140,1,0,0,1,33,41,13,0,10,12,8,5,28,7,10,12,0,2,23,0x83,150,1600,900,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

View File

@ -119,6 +119,18 @@
1227,0,0,0,0,0,0,0,2364,6522,3000,0,0,0,0,0,0,"Getting back Professor Worm's memory" 1227,0,0,0,0,0,0,0,2364,6522,3000,0,0,0,0,0,0,"Getting back Professor Worm's memory"
1228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Getting back Professor Worm's memory" 1228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Getting back Professor Worm's memory"
// Academy 14.2
1229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Swordsman training"
1230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Swordsman training"
1233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Swordsman training"
1234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Swordsman training"
1235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Swordsman training"
1236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Swordsman training"
1237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Shop guide"
1238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Shop guide"
1239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Shop guide"
1240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Shop guide"
2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Blacksmith" 2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Blacksmith"
2001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Blacksmith" 2001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Blacksmith"
2002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Blacksmith" 2002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Blacksmith"
@ -333,8 +345,17 @@
2291,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mummy Hunting - Cooldown" 2291,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mummy Hunting - Cooldown"
2292,0,2360,20,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mummy Hunting (Nightmare)" 2292,0,2360,20,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mummy Hunting (Nightmare)"
// Academy 14.2
2293,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Adventurer's Companion"
2294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Adventurer's Companion"
2295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Adventurer's Companion"
2296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Adventurer's Companion"
2297,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Adventurer's Companion"
2298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Adventurer's Companion"
2299,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rapid Completion Experience"
// New Novice Ground // New Novice Ground
2299,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Training Center: Talk to Lisa" // 2299,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Training Center: Talk to Lisa"
2300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Training Center: Talk to General Reindeer" 2300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Training Center: Talk to General Reindeer"
2301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Training Center: Leave the boat" 2301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Training Center: Leave the boat"
2302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Training Center: Formation" 2302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Training Center: Formation"
@ -637,6 +658,29 @@
4265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bookshelf use" 4265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bookshelf use"
4266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"????? ??" 4266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"????? ??"
4267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"????? ??" 4267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"????? ??"
// Academy 14.2
4268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja trainer"
4269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Registration at the Academy"
4270,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training - stat explanation"
4271,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-explanation about the skills"
4272,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training- conversation about the skills"
4273,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training- explanation about the weapons"
4274,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninjas training- explanation about job change"
4275,0,1113,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-Exercise1"
4276,0,1002,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-Exercise2"
4277,0,1052,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-Actual battle2"
4278,0,1024,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-Actual battle1"
4279,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-test"
4280,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-test"
4281,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Beginner's training-Ninja"
4282,0,1113,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-exercise1"
4283,0,1002,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-exercise2"
4284,0,1052,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-actual battle2"
4285,0,1024,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-actual battle1"
4286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-test"
4287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-test"
//4303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //4303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//4304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //4304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//4305,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //4305,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
@ -771,6 +815,21 @@
5145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Prototype-(3)" 5145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Prototype-(3)"
5146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Battle test" 5146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Battle test"
// Academy 14.2
5147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Gunslinger basic training(1)"
5148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Gunslinger basic training(2)"
5149,0,1004,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"<Battle training request form A>"
5150,0,1012,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"<Battle training request form B>"
5151,0,1167,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"<Battle training request form C>"
5152,0,1052,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"<Battle training request form D>"
5153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Refining tutorial (1)"
5154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Refining tutorial (2)"
5155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Refining tutorial (3)"
5156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Refining tutorial (4)"
5157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Enchant tutorial (1)"
5158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Entchant tutorial (2)"
5159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Enchant tutorial (3)"
// 2012 Headgear Quests // 2012 Headgear Quests
5161,86400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Low Level collection request[Stand by]" 5161,86400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Low Level collection request[Stand by]"
5162,0,1164,100,0,0,0,0,0,0,0,0,0,0,0,0,0,"Low Level collection request" 5162,0,1164,100,0,0,0,0,0,0,0,0,0,0,0,0,0,"Low Level collection request"
@ -1282,6 +1341,32 @@
7452,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Find the chief of staff!" 7452,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Find the chief of staff!"
7453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The last of the chief of staff" 7453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The last of the chief of staff"
// Academy 14.2
7471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"First time talking after being born"
7472,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"First step towards a new world"
7473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Cool drink"
7474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Searching for treasure"
7475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Discovered the Airship"
7476,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Discovered the Arena"
7477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bridge to Prontera"
7478,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Basic Medical Botany"
7479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Friend or Foe?"
7480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Regarding Thief job"
7481,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vicente's class"
7482,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vercassel's class"
7483,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Use the Thief Manual"
7484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Shop owner! Order to steal!"
7485,0,1725,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Assassin! Use Envenom"
7486,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"With Lumin"
7487,30,1725,4,0,0,0,0,0,0,0,0,0,0,0,0,0,"30 second duel"
7488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trio set of Fire Elements"
7489,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Silent liquidation plan"
7490,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mushroom soup calling memories"
7491,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Get away to Paradise!"
7492,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Invincible pumpkin knight"
7493,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Battle of 17 vs. 1"
7494,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Cleanup of the mushroom farm"
//7619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //7619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//7621,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //7621,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//7622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //7622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
@ -1668,6 +1753,15 @@
9260,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Survey investigation notes" 9260,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Survey investigation notes"
9262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mystery Robbery Incident 16" 9262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mystery Robbery Incident 16"
// Academy 14.2
9264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
9265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
9266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
9267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 1"
9268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 2"
9269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 3"
9270,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 4"
//9327,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //9327,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//9328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //9328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//9329,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //9329,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
@ -2040,6 +2134,9 @@
11244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Soft Jelly" 11244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Soft Jelly"
11245,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Soft Jelly" 11245,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Soft Jelly"
// Academy 14.2
11255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Otter Ssamsun"
11284,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Nurse at Port Malaya-1" 11284,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Nurse at Port Malaya-1"
11285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Nurse at Port Malaya-2" 11285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Nurse at Port Malaya-2"
11286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Nurse at Port Malaya-3" 11286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Nurse at Port Malaya-3"
@ -2096,6 +2193,19 @@
11336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dreaming boy" 11336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dreaming boy"
11337,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dreaming boy" 11337,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dreaming boy"
// Academy 14.2
11338,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Conversation with Subino"
11339,0,1002,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"The most delicious on earth"
11340,0,1063,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Carrots are delicious!"
11341,0,1007,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rolling Fabre's clothing"
11342,0,1004,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Antidote Material~"
11343,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Conversation with Alice"
11344,0,1008,5,0,0,0,0,0,0,0,0,0,0,0,0,0,"Barrier!!"
11345,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Conversation with Alice"
11346,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Acolyte_damped creatures(LV.13)"
11347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Acolyte_soft bone(LV.18)"
11348,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Acolyte_Solid bone(LV.23)"
//11366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //11366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
11378,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trick or treat" // Halloween Event 2013 11378,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trick or treat" // Halloween Event 2013
@ -2392,6 +2502,21 @@
12300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Revisiting Etran" 12300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Revisiting Etran"
12301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Two remaining friends" 12301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Two remaining friends"
// Academy 14.2
12302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Salim Hamid"
12303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Applicant for trader"
12304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Introduction to merchantology"
12305,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"About the capability figure"
12306,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Experience of disounts"
12307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Way to the Merchant"
12308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Removal of Worm Tails"
12309,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Removal of Boa"
12310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Removal of Spore"
12311,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Removal of Pirate Skeletons"
12312,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Supplementary to the theory lesson"
12313,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"About stats"
12314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"About skills"
// Old Glast Heim // Old Glast Heim
12317,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Fake Keyblade" 12317,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Fake Keyblade"
12318,0,2475,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Upper Cats: annoying guy" 12318,0,2475,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Upper Cats: annoying guy"
@ -2493,6 +2618,14 @@
13099,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Fragments and Rusty Screw" 13099,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Fragments and Rusty Screw"
13100,3600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Fragments and Rusty Screw - Wait" 13100,3600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Fragments and Rusty Screw - Wait"
// Academy 14.2
13101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way of Taekwon"
13102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Spinning kick"
13103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Breaking Willows"
13104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Breaking Spores"
13105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Breaking Zombies"
13106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Breaking Skeletons"
// eden 121-130 // eden 121-130
13107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Thanatos Tower Search" 13107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Thanatos Tower Search"
13108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rachel holy ground Search" 13108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rachel holy ground Search"
@ -2580,6 +2713,32 @@
14140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To Wuhari" 14140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To Wuhari"
14141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ingredients for research" 14141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ingredients for research"
// Academy 14.2
14142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To the Archer's town!"
14143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Application for the Archer's job change"
14144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Retest - Stats"
14145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Archer Skills"
14146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Hunting training"
14147,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Retest - Skills"
14148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To the next step"
14149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Listening to the 2nd job change"
14150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To the next step"
14151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Hunting training - Spoa"
14152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Hunting training - Creamy"
14153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Hunting training - Skeleton"
14154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Fragrant herb mix"
14155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Crunchy salad"
14156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Anything shabushabu"
14157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Baked golden apple"
14158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Presentation of the Archer manual"
14159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Met with the PR staff"
14160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Met with the PR staff"
14161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Test of stats"
14162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Test of skills"
14163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Caught Spores"
14164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Caught Creamy"
14165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Caught Skeletons"
//14254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //14254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//14255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //14255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//14256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //14256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
@ -2617,6 +2776,11 @@
//14289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //14289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//14290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //14290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//14291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //14291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
// Academy 14.2
15000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Experiencing abnormal statuses"
15001,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Hold your breath"
//15025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //15025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//15026,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //15026,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
//15027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //15027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""

View File

@ -8009,6 +8009,37 @@ izlude,100,100,4 script Test 844,{
--------------------------------------- ---------------------------------------
*setquestinfo_level <quest_id>,<min_level>,<max_level>;
Add level range criteria for quest info with quest id 'quest_id'.
This command must be used after 'questinfo'.
---------------------------------------
*setquestinfo_req <quest_id>,<req_quest_id>,<state>;
Add 'req_quest_id' as requirement for quest info with quest id 'quest_id'.
Value os 'state' are:
0: Player doesn't have 'req_quest_id'.
1: Player has 'req_quest_id'.
2: //! TODO
3: //! TODO
This command must be used after 'questinfo'.
---------------------------------------
*setquestinfo_job <quest_id>,<job_id>;
Add job criteria for quest info with quest id 'quest_id'.
The job criteria may more than one job_id.
This command must be used after 'questinfo'.
---------------------------------------
*setquest <ID>{,<char_id>}; *setquest <ID>{,<char_id>};
Place quest of <ID> in the users quest log, the state of which is "active". Place quest of <ID> in the users quest log, the state of which is "active".

View File

@ -14,4 +14,5 @@ npc: npc/pre-re/jobs/1-1/thief.txt
npc: npc/pre-re/jobs/novice/novice.txt npc: npc/pre-re/jobs/novice/novice.txt
// ------------------------ Skill Quests ------------------------ // ------------------------ Skill Quests ------------------------
npc: npc/pre-re/quests/skills/swordman_skills.txt npc: npc/pre-re/quests/skills/swordman_skills.txt
npc: npc/pre-re/quests/skills/novice_skills.txt

View File

@ -17,75 +17,75 @@
// Izlude // Izlude
//============================================================ //============================================================
izlude,197,205,1 duplicate(Sailor_izlude) Sailor#izlude 100 izlude,197,205,1 duplicate(Sailor_izlude) Sailor#izlude 4W_SAILOR
izlude_a,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_a 100 izlude_a,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_a 4W_SAILOR
izlude_b,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_b 100 izlude_b,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_b 4W_SAILOR
izlude_c,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_c 100 izlude_c,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_c 4W_SAILOR
izlude_d,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_d 100 izlude_d,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_d 4W_SAILOR
izlude,71,92,2 duplicate(Bonne_izlude) Bonne#izlude 90 izlude,71,92,2 duplicate(Bonne_izlude) Bonne#izlude 4_F_01
izlude_a,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_a 90 izlude_a,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_a 4_F_01
izlude_b,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_b 90 izlude_b,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_b 4_F_01
izlude_c,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_c 90 izlude_c,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_c 4_F_01
izlude_d,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_d 90 izlude_d,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_d 4_F_01
izlude,172,215,4 duplicate(Charfri_izlude) Charfri#izlude 91 izlude,172,215,4 duplicate(Charfri_izlude) Charfri#izlude 4_F_02
izlude_a,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_a 91 izlude_a,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_a 4_F_02
izlude_b,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_b 91 izlude_b,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_b 4_F_02
izlude_c,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_c 91 izlude_c,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_c 4_F_02
izlude_d,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_d 91 izlude_d,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_d 4_F_02
izlude,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude 124 izlude,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude 4_F_TELEPORTER
izlude_a,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_a 124 izlude_a,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_a 4_F_TELEPORTER
izlude_b,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_b 124 izlude_b,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_b 4_F_TELEPORTER
izlude_c,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_c 124 izlude_c,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_c 4_F_TELEPORTER
izlude_d,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_d 124 izlude_d,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_d 4_F_TELEPORTER
izlude,85,103,4 duplicate(Dega_izlude) Dega#izlude 84 izlude,85,103,4 duplicate(Dega_izlude) Dega#izlude 4_M_02
izlude_a,85,103,4 duplicate(Dega_izlude) Dega#izlude_a 84 izlude_a,85,103,4 duplicate(Dega_izlude) Dega#izlude_a 4_M_02
izlude_b,85,103,4 duplicate(Dega_izlude) Dega#izlude_b 84 izlude_b,85,103,4 duplicate(Dega_izlude) Dega#izlude_b 4_M_02
izlude_c,85,103,4 duplicate(Dega_izlude) Dega#izlude_c 84 izlude_c,85,103,4 duplicate(Dega_izlude) Dega#izlude_c 4_M_02
izlude_d,85,103,4 duplicate(Dega_izlude) Dega#izlude_d 84 izlude_d,85,103,4 duplicate(Dega_izlude) Dega#izlude_d 4_M_02
izlude,140,186,4 duplicate(Kylick_izlude) Kylick#izlude 97 izlude,140,186,4 duplicate(Kylick_izlude) Kylick#izlude 4W_M_01
izlude_a,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_a 97 izlude_a,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_a 4W_M_01
izlude_b,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_b 97 izlude_b,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_b 4W_M_01
izlude_c,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_c 97 izlude_c,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_c 4W_M_01
izlude_d,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_d 97 izlude_d,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_d 4W_M_01
izlude,57,159,2 duplicate(Red_izlude) Red#izlude 85 izlude,57,159,2 duplicate(Red_izlude) Red#izlude 4_M_03
izlude_a,57,159,2 duplicate(Red_izlude) Red#izlude_a 85 izlude_a,57,159,2 duplicate(Red_izlude) Red#izlude_a 4_M_03
izlude_b,57,159,2 duplicate(Red_izlude) Red#izlude_b 85 izlude_b,57,159,2 duplicate(Red_izlude) Red#izlude_b 4_M_03
izlude_c,57,159,2 duplicate(Red_izlude) Red#izlude_c 85 izlude_c,57,159,2 duplicate(Red_izlude) Red#izlude_c 4_M_03
izlude_d,57,159,2 duplicate(Red_izlude) Red#izlude_d 85 izlude_d,57,159,2 duplicate(Red_izlude) Red#izlude_d 4_M_03
izlude,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude 98 izlude,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude 4W_M_02
izlude_a,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_a 98 izlude_a,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_a 4W_M_02
izlude_b,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_b 98 izlude_b,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_b 4W_M_02
izlude_c,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_c 98 izlude_c,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_c 4W_M_02
izlude_d,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_d 98 izlude_d,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_d 4W_M_02
izlude,165,156,2 duplicate(Soldier_izlude) Soldier#izlude 105 izlude,165,156,2 duplicate(Soldier_izlude) Soldier#izlude 8W_SOLDIER
izlude_a,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_a 105 izlude_a,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_a 8W_SOLDIER
izlude_b,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_b 105 izlude_b,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_b 8W_SOLDIER
izlude_c,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_c 105 izlude_c,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_c 8W_SOLDIER
izlude_d,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_d 105 izlude_d,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_d 8W_SOLDIER
- script ::Guard_izlude -1,{ - script ::Guard_izlude -1,{
mes "[Izlude Guard]"; mes "[Izlude Guard]";
mes "Welcome to Izlude."; mes "Welcome to Izlude.";
close; close;
} }
prt_fild08,350,219,4 duplicate(Guard_izlude) Guard#izlude 105 prt_fild08,350,219,4 duplicate(Guard_izlude) Guard#izlude 8W_SOLDIER
prt_fild08a,350,219,4 duplicate(Guard_izlude) Guard#izlude_a 105 prt_fild08a,350,219,4 duplicate(Guard_izlude) Guard#izlude_a 8W_SOLDIER
prt_fild08b,350,219,4 duplicate(Guard_izlude) Guard#izlude_b 105 prt_fild08b,350,219,4 duplicate(Guard_izlude) Guard#izlude_b 8W_SOLDIER
prt_fild08c,350,219,4 duplicate(Guard_izlude) Guard#izlude_c 105 prt_fild08c,350,219,4 duplicate(Guard_izlude) Guard#izlude_c 8W_SOLDIER
prt_fild08d,350,219,4 duplicate(Guard_izlude) Guard#izlude_d 105 prt_fild08d,350,219,4 duplicate(Guard_izlude) Guard#izlude_d 8W_SOLDIER
// Channel Warper :: channel // Channel Warper :: channel
//============================================================ //============================================================
function script F_IzludeChannel { function script F_IzludeChannel {
mes "[Izlude Copy Warper]"; mes "[Channel Warp Official]";
mes "Izlude is a verly lively place is it not?"; mes "Izlude is a verly lively place is it not?";
mes "I am here to help make Izlude feel more smooth!"; mes "I am here to help make Izlude feel more smooth!";
mes "I can send you to another copy of Izlude."; mes "I can send you to another copy of Izlude.";
@ -100,8 +100,177 @@ function script F_IzludeChannel {
} }
close; close;
} }
izlude,122,105,5 script Izlude Copy Warper 64,{ callfunc "F_IzludeChannel",":Go to copy 2:Go to copy 3:Go to copy 4:Go to copy 5"; } izlude,122,105,5 script Channel Warp Official 1_M_WIZARD,{ callfunc "F_IzludeChannel",":Go to copy 2:Go to copy 3:Go to copy 4:Go to copy 5"; }
izlude_a,122,105,5 script Izlude Copy Warper#_a 64,{ callfunc "F_IzludeChannel","Go to copy 1::Go to copy 3:Go to copy 4:Go to copy 5"; } izlude_a,122,105,5 script Channel Warp Official#_a 1_M_WIZARD,{ callfunc "F_IzludeChannel","Go to copy 1::Go to copy 3:Go to copy 4:Go to copy 5"; }
izlude_b,122,105,5 script Izlude Copy Warper#_b 64,{ callfunc "F_IzludeChannel","Go to copy 1:Go to copy 2::Go to copy 4:Go to copy 5"; } izlude_b,122,105,5 script Channel Warp Official#_b 1_M_WIZARD,{ callfunc "F_IzludeChannel","Go to copy 1:Go to copy 2::Go to copy 4:Go to copy 5"; }
izlude_c,122,105,5 script Izlude Copy Warper#_c 64,{ callfunc "F_IzludeChannel","Go to copy 1:Go to copy 2:Go to copy 3::Go to copy 5"; } izlude_c,122,105,5 script Channel Warp Official#_c 1_M_WIZARD,{ callfunc "F_IzludeChannel","Go to copy 1:Go to copy 2:Go to copy 3::Go to copy 5"; }
izlude_d,122,105,5 script Izlude Copy Warper#_d 64,{ callfunc "F_IzludeChannel","Go to copy 1:Go to copy 2:Go to copy 3:Go to copy 4:"; } izlude_d,122,105,5 script Channel Warp Official#_d 1_M_WIZARD,{ callfunc "F_IzludeChannel","Go to copy 1:Go to copy 2:Go to copy 3:Go to copy 4:"; }
// Talking NPCs
//============================================================
izlude,143,205,7 script Talkative Kid#iz 4_F_KID2,{
end;
OnTimer64000:
npctalk "I used all my Novice Red Potions. What should I do?";
end;
OnTimer72000:
npctalk "Where is the shop?";
end;
OnTimer136000:
npctalk "Idiot! You do not know about the 'shortcut window'?";
end;
OnTimer144000:
npctalk "The items in your inventory can be dragged and put in the shortcut window.";
end;
OnTimer212000:
npctalk "I got so many beginner's items in the Academy!";
end;
OnTimer276000:
npctalk "They even gave me weapons and a shield!";
end;
OnTimer284000:
npctalk "Just press <Ctrl+~key> to open the map you have.";
end;
OnTimer344000:
npctalk "Then do you want to go Criatura Academy with me? I'm learning how to battle from Instructor Subino!";
end;
OnTimer348000:
npctalk "The Academy is in North side of Izlude. Let's go~!";
end;
OnTimer416000:
npctalk "It's a system to guide you to a destination.";
end;
OnTimer424000:
npctalk "In the basic menu, please click the [Navigation] button.";
end;
OnTimer492000:
npctalk "Whee, Ain't gonna use your brain? Please type /where in the chat window now!";
end;
OnTimer552000:
npctalk "In this case, you can push the <Enter> key.";
end;
OnTimer560000:
npctalk "We are just repeating the same dialog. HaHaha.";
end;
OnTimer565000:
OnInit:
initnpctimer;
end;
}
izlude_a,143,205,7 duplicate(Talkative Kid#iz) Talkative Kid#iza 4_F_KID2
izlude_b,143,205,7 duplicate(Talkative Kid#iz) Talkative Kid#izb 4_F_KID2
izlude_c,143,205,7 duplicate(Talkative Kid#iz) Talkative Kid#izc 4_F_KID2
izlude_d,143,205,7 duplicate(Talkative Kid#iz) Talkative Kid#izd 4_F_KID2
izlude,146,205,7 script Talkative Adventurer#iz 4_M_KID1,{
end;
OnTimer69000:
npctalk "You can buy potion from Merchants.";
end;
OnTimer77000:
npctalk "It's the Potion image in the mini map.";
end;
OnTimer131000:
npctalk "Is there any way to use items easily?";
end;
OnTimer141000:
npctalk "Shortcut window? The slots at the top of the screen? How can I use it?";
end;
OnTimer149000:
npctalk "For inventory, do you mean 'item' menu? Oh, it is!";
end;
OnTimer217000:
npctalk "I have a bunch of potions?";
end;
OnTimer281000:
npctalk "What?! I should go to the Academy now!";
end;
OnTimer279000:
npctalk "Where is Izlude? In the center?";
end;
OnTimer339000:
npctalk "I do not know what to do.";
end;
OnTimer349000:
npctalk "Oh yea? I want to know so many things~ I will go with you!";
end;
OnTimer411000:
npctalk "Navigation, What is that?";
end;
OnTimer421000:
npctalk "Oh-! Should I search for a Kafra Employee?";
end;
OnTimer487000:
npctalk "What is the town name?";
end;
OnTimer497000:
npctalk "I cannot see the part where I can write something in the chat window?";
end;
OnTimer557000:
npctalk "Oh you smarty...";
end;
OnTimer555000:
npctalk "A while ago, one Novice talked to me like hey 'Talkative Adventurer'?. HaHaha.";
end;
OnTimer565000:
OnInit:
initnpctimer;
end;
}
izlude_a,146,205,7 duplicate(Talkative Adventurer#iz) Talkative Adventurer#iza 4_M_KID1
izlude_b,146,205,7 duplicate(Talkative Adventurer#iz) Talkative Adventurer#izb 4_M_KID1
izlude_c,146,205,7 duplicate(Talkative Adventurer#iz) Talkative Adventurer#izc 4_M_KID1
izlude_d,146,205,7 duplicate(Talkative Adventurer#iz) Talkative Adventurer#izd 4_M_KID1
prt_fild08,338,217,7 script Resting Adventurer#iz 4_F_SITDOWN,{
end;
OnTimer60000:
npctalk "You know what? If you are sitting, HP and SP recovery is faster.";
end;
OnTimer65000:
npctalk "Sitting is possible if your basic job skill level is more than 3. Shortcut is pressing the <INSERT> key.";
OnInit:
initnpctimer;
end;
}
prt_fild08a,338,217,7 duplicate(Resting Adventurer#iz) Resting Adventurer#iza 4_F_SITDOWN
prt_fild08b,338,217,7 duplicate(Resting Adventurer#iz) Resting Adventurer#izb 4_F_SITDOWN
prt_fild08c,338,217,7 duplicate(Resting Adventurer#iz) Resting Adventurer#izc 4_F_SITDOWN
prt_fild08d,338,217,7 duplicate(Resting Adventurer#iz) Resting Adventurer#izd 4_F_SITDOWN

14175
npc/re/jobs/novice/academy.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3,13 +3,12 @@
//===== By: ================================================== //===== By: ==================================================
//= Athena (1.0) //= Athena (1.0)
//===== Current Version: ===================================== //===== Current Version: =====================================
//= 1.3 //= 1.4
//===== Compatible With: =====================================
//= rAthena Project
//===== Additional Comments: ================================= //===== Additional Comments: =================================
//= 1.1 Official kRO 10.1 spawns [Playtester] //= 1.1 Official kRO 10.1 spawns [Playtester]
//= 1.2 More accurate spawns [Playtester] //= 1.2 More accurate spawns [Playtester]
//= 1.3 Corrected MVP spawn variance. [L0ne_W0lf] //= 1.3 Corrected MVP spawn variance. [L0ne_W0lf]
//= 1.4 Added 14.2 Novice Version as part of Academy update. [Kisuka]
//============================================================ //============================================================
//================================================== //==================================================
@ -118,3 +117,64 @@ treasure02,100,85,0,0 monster Hydra 1068,1,300000,100000,1
treasure02,101,85,0,0 monster Hydra 1068,1,300000,100000,1 treasure02,101,85,0,0 monster Hydra 1068,1,300000,100000,1
treasure02,0,0,0,0 monster Ghostring 1120,1,1980000,1200000,1 treasure02,0,0,0,0 monster Ghostring 1120,1,1980000,1200000,1
treasure02,101,151,8,8 boss_monster Drake 1112,1,7200000,600000,1 treasure02,101,151,8,8 boss_monster Drake 1112,1,7200000,600000,1
//==================================================
// treasure_n1 - Izlude Sunken Ship 1F
//==================================================
treasure_n1,0,0,0,0 monster Red Mushroom 1085,10,50000,0,0
treasure_n1,0,0,0,0 monster Black Mushroom 1084,10,50000,0,0
treasure_n1,160,54,13,13 monster Red Mushroom 1085,10,50000,0,0
treasure_n1,160,54,13,13 monster Black Mushroom 1084,10,50000,0,0
treasure_n1,160,54,13,13 monster Dead Plankton 2404,10,50000,0,0
treasure_n1,0,0,0,0 monster Red Plant 1078,5,50000,0,0
treasure_n1,0,0,0,0 monster Green Plant 1080,5,50000,0,0
treasure_n1,0,0,0,0 monster Yellow Plant 1081,5,50000,0,0
treasure_n1,0,0,0,0 monster Blue Plant 1079,5,50000,0,0
treasure_n1,0,0,0,0 monster White Plant 1082,5,50000,0,0
treasure_n1,0,0,0,0 monster Zombie 1015,1,100000,0,0
treasure_n1,0,0,0,0 monster Zombie 1015,1,100000,0,0
treasure_n1,68,47,9,9 monster Weak Skeleton 2405,4,8000,0,0
treasure_n1,106,42,9,9 monster Roda Frog 1012,3,60000,0,0
treasure_n1,32,37,9,9 monster Roda Frog 1012,6,60000,0,0
treasure_n1,69,112,9,9 monster Spore 1014,3,20000,0,0
treasure_n1,35,112,9,9 monster Spore 1014,3,20000,0,0
treasure_n1,35,112,9,9 monster Roda Frog 1012,3,20000,0,0
treasure_n1,111,111,9,9 monster Roda Frog 1012,3,60000,0,0
treasure_n1,111,111,9,9 monster Dead Plankton 2404,5,60000,0,0
treasure_n1,69,174,9,9 monster Dead Plankton 2404,7,120000,0,0
treasure_n1,82,155,9,9 monster Spore 1014,4,60000,0,0
treasure_n1,55,155,9,9 monster Spore 1014,2,60000,0,0
treasure_n1,22,160,0,0 monster Weak Skeleton 2405,3,8000,0,0
treasure_n1,163,155,13,13 monster Weak Skeleton 2405,5,8000,0,0
treasure_n1,163,155,13,13 monster Zombie 1015,1,8000,0,0
//==================================================
// treasure_n2 - Izlude Sunken Ship 2F
//==================================================
treasure_n2,0,0,0,0 monster Red Mushroom 1085,10,50000,0,0
treasure_n2,0,0,0,0 monster Black Mushroom 1084,10,50000,0,0
treasure_n2,150,40,13,13 monster Weak Soldier Skeleton 2406,3,50000,0,0
treasure_n2,150,40,13,13 monster Weak Skeleton 2405,5,50000,0,0
treasure_n2,0,0,0,0 monster Red Plant 1078,5,50000,0,0
treasure_n2,0,0,0,0 monster Green Plant 1080,5,50000,0,0
treasure_n2,0,0,0,0 monster Yellow Plant 1081,5,50000,0,0
treasure_n2,0,0,0,0 monster Blue Plant 1079,5,50000,0,0
treasure_n2,0,0,0,0 monster White Plant 1082,5,50000,0,0
treasure_n2,100,50,13,13 monster Weak Skeleton 2405,7,30000,0,0
treasure_n2,100,50,13,13 monster Dead Plankton 2404,5,30000,0,0
treasure_n2,50,40,13,13 monster Weak Soldier Skeleton 2406,3,50000,0,0
treasure_n2,50,40,13,13 monster Weak Skeleton 2405,5,50000,0,0
treasure_n2,40,75,5,3 monster Zombie 1015,2,60000,0,0
treasure_n2,40,75,5,5 monster Dead Plankton 2404,4,60000,0,0
treasure_n2,50,140,5,5 monster Weak Skeleton 2405,10,60000,0,0
treasure_n2,50,140,5,5 monster Weak Soldier Skeleton 2406,5,60000,0,0
treasure_n2,160,140,5,5 monster Weak Skeleton 2405,5,60000,0,0
treasure_n2,160,140,5,5 monster Weak Soldier Skeleton 2406,3,60000,0,0
treasure_n2,160,140,5,2 monster Zombie 1015,3,60000,0,0
treasure_n2,160,70,13,13 monster Weak Skeleton 2405,5,30000,0,0
treasure_n2,160,70,13,13 monster Dead Plankton 2404,7,30000,0,0
treasure_n2,155,40,9,9 monster Zombie 1015,3,120000,0,0
treasure_n2,100,85,13,13 monster Weak Soldier Skeleton 2406,2,50000,0,0
treasure_n2,100,160,13,13 monster Weak Soldier Skeleton 2406,5,120000,0,0
treasure_n2,100,160,13,13 monster Weak Skeleton 2405,7,200000,0,0
treasure_n2,100,160,13,13 monster Dead Plankton 2404,4,60000,0,0

View File

@ -4,8 +4,6 @@
//= Athena (1.0) //= Athena (1.0)
//===== Current Version: ===================================== //===== Current Version: =====================================
//= 1.6 //= 1.6
//===== Compatible With: =====================================
//= rAthena Project
//===== Additional Comments: ================================= //===== Additional Comments: =================================
//= 1.2 fixed some map name typos [Lupus] //= 1.2 fixed some map name typos [Lupus]
//= 1.3 Official kRO 10.1 spawns [Playtester] //= 1.3 Official kRO 10.1 spawns [Playtester]
@ -15,7 +13,7 @@
//============================================================ //============================================================
//================================================== //==================================================
// prt_fild00 - Prontera Field // prt_fild00 - Prontera Field
//================================================== //==================================================
prt_fild00,0,0,0,0 monster Roda Frog 1012,130,5000,0,0 prt_fild00,0,0,0,0 monster Roda Frog 1012,130,5000,0,0
prt_fild00,0,0,0,0 monster Ambernite 1094,50,5000,0,0 prt_fild00,0,0,0,0 monster Ambernite 1094,50,5000,0,0
@ -24,7 +22,7 @@ prt_fild00,227,212,0,0 monster Shining Plant 1083,1,1800000,900000,1
prt_fild00,285,138,10,10 monster Green Plant 1080,5,360000,180000,1 prt_fild00,285,138,10,10 monster Green Plant 1080,5,360000,180000,1
//================================================== //==================================================
// prt_fild01 - Prontera Field // prt_fild01 - Prontera Field
//================================================== //==================================================
prt_fild01,0,0,0,0 monster Lunatic 1063,140,5000,0,0 prt_fild01,0,0,0,0 monster Lunatic 1063,140,5000,0,0
prt_fild01,0,0,0,0 monster Poring 1002,30,5000,0,0 prt_fild01,0,0,0,0 monster Poring 1002,30,5000,0,0
@ -33,7 +31,7 @@ prt_fild01,199,266,3,3 monster Green Plant 1080,3,360000,180000,1
prt_fild01,199,266,3,3 monster Blue Plant 1079,1,900000,450000,1 prt_fild01,199,266,3,3 monster Blue Plant 1079,1,900000,450000,1
//================================================== //==================================================
// prt_fild02 - Prontera Field // prt_fild02 - Prontera Field
//================================================== //==================================================
prt_fild02,0,0,0,0 monster Stainer 1174,140,5000,0,0 prt_fild02,0,0,0,0 monster Stainer 1174,140,5000,0,0
prt_fild02,0,0,0,0 monster Creamy 1018,30,5000,0,0 prt_fild02,0,0,0,0 monster Creamy 1018,30,5000,0,0
@ -43,7 +41,7 @@ prt_fild02,339,309,3,3 monster Shining Plant 1083,1,1800000,900000,1
prt_fild02,0,0,0,0 monster Shining Plant 1083,2,1800000,900000,1 prt_fild02,0,0,0,0 monster Shining Plant 1083,2,1800000,900000,1
//================================================== //==================================================
// prt_fild03 - Prontera Field // prt_fild03 - Prontera Field
//================================================== //==================================================
prt_fild03,0,0,0,0 monster Yoyo 1057,100,5000,0,0 prt_fild03,0,0,0,0 monster Yoyo 1057,100,5000,0,0
prt_fild03,0,0,0,0 monster Poporing 1031,30,5000,0,0 prt_fild03,0,0,0,0 monster Poporing 1031,30,5000,0,0
@ -56,7 +54,7 @@ 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 prt_fild03,148,107,5,5 monster Green Plant 1080,5,360000,180000,1
//================================================== //==================================================
// prt_fild04 - Prontera Field // prt_fild04 - Prontera Field
//================================================== //==================================================
prt_fild04,0,0,0,0 monster Ambernite 1094,80,5000,0,0 prt_fild04,0,0,0,0 monster Ambernite 1094,80,5000,0,0
prt_fild04,0,0,0,0 monster Roda Frog 1012,20,5000,0,0 prt_fild04,0,0,0,0 monster Roda Frog 1012,20,5000,0,0
@ -64,7 +62,7 @@ prt_fild04,0,0,0,0 monster Vocal 1088,1,1800000,1200000,0
prt_fild04,350,114,10,10 monster Green Plant 1080,5,900000,450000,1 prt_fild04,350,114,10,10 monster Green Plant 1080,5,900000,450000,1
//================================================== //==================================================
// prt_fild05 - Prontera Field // prt_fild05 - Prontera Field
//================================================== //==================================================
prt_fild05,0,0,0,0 monster Hornet 1004,140,5000,0,0 prt_fild05,0,0,0,0 monster Hornet 1004,140,5000,0,0
prt_fild05,0,0,0,0 monster Thief Bug Egg 1048,30,5000,0,0 prt_fild05,0,0,0,0 monster Thief Bug Egg 1048,30,5000,0,0
@ -73,7 +71,7 @@ prt_fild05,208,37,10,10 monster Green Plant 1080,6,900000,450000,1
prt_fild05,208,37,10,10 monster Blue Plant 1079,1,900000,450000,1 prt_fild05,208,37,10,10 monster Blue Plant 1079,1,900000,450000,1
//================================================== //==================================================
// prt_fild06 - Prontera Field // prt_fild06 - Prontera Field
//================================================== //==================================================
prt_fild06,0,0,0,0 monster Fabre 1007,140,5000,0,0 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 Poring 1002,30,5000,0,0
@ -81,7 +79,7 @@ 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 prt_fild06,222,30,40,10 monster Green Plant 1080,15,900000,450000,1
//================================================== //==================================================
// prt_fild07 - Prontera Field // prt_fild07 - Prontera Field
//================================================== //==================================================
prt_fild07,0,0,0,0 monster Rocker 1052,150,5000,0,0 prt_fild07,0,0,0,0 monster Rocker 1052,150,5000,0,0
prt_fild07,0,0,0,0 monster Savage Babe 1167,50,5000,0,0 prt_fild07,0,0,0,0 monster Savage Babe 1167,50,5000,0,0
@ -89,37 +87,43 @@ prt_fild07,0,0,0,0 monster Vocal 1088,1,1800000,1200000,0
prt_fild07,225,110,5,5 monster Black Mushroom 1084,3,360000,180000,1 prt_fild07,225,110,5,5 monster Black Mushroom 1084,3,360000,180000,1
//================================================== //==================================================
// prt_fild08 - Prontera Field // prt_fild08 - Prontera Field
//================================================== //==================================================
prt_fild08,0,0,0,0 monster Poring 1002,140,5000,0,0 prt_fild08,0,0,0,0 monster Poring 1002,110,5000,0,0
prt_fild08,0,0,0,0 monster Lunatic 1063,40,5000,0,0 prt_fild08,0,0,0,0 monster Lunatic 1063,100,5000,0,0
prt_fild08,0,0,0,0 monster Fabre 1007,40,5000,0,0 prt_fild08,0,0,0,0 monster Fabre 1007,100,5000,0,0
prt_fild08,0,0,0,0 monster Little Poring 2398,30,50000,0,0
//================================================== //==================================================
// prt_fild08 - Duplicates // prt_fild08 - Duplicates
//================================================== //==================================================
prt_fild08a,0,0,0,0 monster Poring 1002,140,5000,0,0 prt_fild08a,0,0,0,0 monster Poring 1002,110,5000,0,0
prt_fild08b,0,0,0,0 monster Poring 1002,140,5000,0,0 prt_fild08a,0,0,0,0 monster Lunatic 1063,100,5000,0,0
prt_fild08c,0,0,0,0 monster Poring 1002,140,5000,0,0 prt_fild08a,0,0,0,0 monster Fabre 1007,100,5000,0,0
prt_fild08d,0,0,0,0 monster Poring 1002,140,5000,0,0 prt_fild08a,0,0,0,0 monster Little Poring 2398,30,50000,0,0
prt_fild08a,0,0,0,0 monster Lunatic 1063,40,5000,0,0 prt_fild08b,0,0,0,0 monster Poring 1002,110,5000,0,0
prt_fild08b,0,0,0,0 monster Lunatic 1063,40,5000,0,0 prt_fild08b,0,0,0,0 monster Lunatic 1063,100,5000,0,0
prt_fild08c,0,0,0,0 monster Lunatic 1063,40,5000,0,0 prt_fild08b,0,0,0,0 monster Fabre 1007,100,5000,0,0
prt_fild08d,0,0,0,0 monster Lunatic 1063,40,5000,0,0 prt_fild08b,0,0,0,0 monster Little Poring 2398,30,50000,0,0
prt_fild08a,0,0,0,0 monster Fabre 1007,40,5000,0,0 prt_fild08c,0,0,0,0 monster Poring 1002,110,5000,0,0
prt_fild08b,0,0,0,0 monster Fabre 1007,40,5000,0,0 prt_fild08c,0,0,0,0 monster Lunatic 1063,100,5000,0,0
prt_fild08c,0,0,0,0 monster Fabre 1007,40,5000,0,0 prt_fild08c,0,0,0,0 monster Fabre 1007,100,5000,0,0
prt_fild08d,0,0,0,0 monster Fabre 1007,40,5000,0,0 prt_fild08c,0,0,0,0 monster Little Poring 2398,30,50000,0,0
prt_fild08d,0,0,0,0 monster Poring 1002,110,5000,0,0
prt_fild08d,0,0,0,0 monster Lunatic 1063,100,5000,0,0
prt_fild08d,0,0,0,0 monster Fabre 1007,100,5000,0,0
prt_fild08d,0,0,0,0 monster Little Poring 2398,30,50000,0,0
//================================================== //==================================================
// prt_fild09 - Prontera Field // prt_fild09 - Prontera Field
//================================================== //==================================================
prt_fild09,0,0,0,0 monster Magnolia 1138,140,5000,0,0 prt_fild09,0,0,0,0 monster Magnolia 1138,140,5000,0,0
prt_fild09,0,0,0,0 monster Metaller 1058,60,5000,0,0 prt_fild09,0,0,0,0 monster Metaller 1058,60,5000,0,0
prt_fild09,237,115,5,5 monster Yellow Plant 1081,3,360000,180000,1 prt_fild09,237,115,5,5 monster Yellow Plant 1081,3,360000,180000,1
//================================================== //==================================================
// prt_fild10 - Prontera Field // prt_fild10 - Prontera Field
//================================================== //==================================================
prt_fild10,0,0,0,0 monster Elder Willow 1033,140,5000,0,0 prt_fild10,0,0,0,0 monster Elder Willow 1033,140,5000,0,0
prt_fild10,0,0,0,0 monster Poporing 1031,20,5000,0,0 prt_fild10,0,0,0,0 monster Poporing 1031,20,5000,0,0

View File

@ -28,7 +28,8 @@ npc: npc/re/jobs/3-2/sorcerer.txt
npc: npc/re/jobs/3-2/sura.txt npc: npc/re/jobs/3-2/sura.txt
npc: npc/re/jobs/3-2/wanderer.txt npc: npc/re/jobs/3-2/wanderer.txt
// - Novice // - Novice
npc: npc/re/jobs/novice/novice.txt npc: npc/re/jobs/novice/academy.txt
// npc: npc/re/jobs/novice/novice.txt
npc: npc/re/jobs/novice/supernovice_ex.txt npc: npc/re/jobs/novice/supernovice_ex.txt
// - Job Repairs // - Job Repairs
npc: npc/re/jobs/repair.txt npc: npc/re/jobs/repair.txt

View File

@ -60,6 +60,21 @@ iz_ac01,78,25,0 warp #to_ac2f01 2,2,iz_ac02,104,27
iz_ac01,122,25,0 warp #to_ac2f02 2,2,iz_ac02,104,27 iz_ac01,122,25,0 warp #to_ac2f02 2,2,iz_ac02,104,27
iz_ac02,94,27,0 warp #to_ac1f01 2,2,iz_ac01,78,28 iz_ac02,94,27,0 warp #to_ac1f01 2,2,iz_ac01,78,28
iz_ac02,113,27,0 warp #to_ac1f02 2,2,iz_ac01,122,28 iz_ac02,113,27,0 warp #to_ac1f02 2,2,iz_ac01,122,28
new_1-3,96,176,0 warp #to_ac01-2 1,1,iz_ac01,49,73
iz_int,96,73,0 script iz_int_iz WARPNPC,2,2,{
end;
OnTouch:
savepoint "izlude", 128, 98;
warp "izlude"+strnpcinfo(2)+"", 195, 209;
end;
}
iz_int01,96,73,0 duplicate(iz_int_iz) iz_int_iz#_a WARPNPC,2,2
iz_int02,96,73,0 duplicate(iz_int_iz) iz_int_iz#_b WARPNPC,2,2
iz_int03,96,73,0 duplicate(iz_int_iz) iz_int_iz#_c WARPNPC,2,2
iz_int04,96,73,0 duplicate(iz_int_iz) iz_int_iz#_d WARPNPC,2,2
//= Izlude Academy Duplicates ================================ //= Izlude Academy Duplicates ================================
izlude_a,125,257,0 warp #to_ac01_a 2,2,iz_ac01_a,99,29 izlude_a,125,257,0 warp #to_ac01_a 2,2,iz_ac01_a,99,29

View File

@ -60,7 +60,7 @@ npc: npc/quests/skills/knight_skills.txt
npc: npc/quests/skills/mage_skills.txt npc: npc/quests/skills/mage_skills.txt
npc: npc/quests/skills/merchant_skills.txt npc: npc/quests/skills/merchant_skills.txt
npc: npc/quests/skills/monk_skills.txt npc: npc/quests/skills/monk_skills.txt
npc: npc/quests/skills/novice_skills.txt // npc: npc/quests/skills/novice_skills.txt
npc: npc/quests/skills/priest_skills.txt npc: npc/quests/skills/priest_skills.txt
npc: npc/quests/skills/rogue_skills.txt npc: npc/quests/skills/rogue_skills.txt
npc: npc/quests/skills/sage_skills.txt npc: npc/quests/skills/sage_skills.txt

View File

@ -6886,8 +6886,8 @@ REPLACE INTO `item_db_re` VALUES (12841,'Golden_Treasure_Box','Golden Treasure B
REPLACE INTO `item_db_re` VALUES (12842,'Platinum_Treasure_Box','Platinum Treasure Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'50',NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12842,'Platinum_Treasure_Box','Platinum Treasure Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'50',NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (12843,'Pearl_Treasure_Box','Pearl Treasure Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'60',NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12843,'Pearl_Treasure_Box','Pearl Treasure Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'60',NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (12844,'Diamond_Treasure_Box','Diamond Treasure Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'70',NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12844,'Diamond_Treasure_Box','Diamond Treasure Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'70',NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (12845,'WOB_Amatsu','WOB Amatsu',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12845,'Amatsu_Butterfly_Wing','Amatsu_Butterfly_Wing',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (12846,'Unripe_Apple2','Unripe Apple2',2,10,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12846,'Little_Unripe_Apple','Little_Unripe_Apple',2,10,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'pet 2398;',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (12847,'Old_Equipment_Box','Old Equipment Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12847,'Old_Equipment_Box','Old Equipment Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
REPLACE INTO `item_db_re` VALUES (12848,'Falcon_Flute','Falcon Flute',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'if(getskilllv("HT_FALCON")) { if(checkoption(Option_Wug)||checkoption(Option_Wugrider)) end; setfalcon (!checkfalcon()); }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12848,'Falcon_Flute','Falcon Flute',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'if(getskilllv("HT_FALCON")) { if(checkoption(Option_Wug)||checkoption(Option_Wugrider)) end; setfalcon (!checkfalcon()); }',NULL,NULL);
REPLACE INTO `item_db_re` VALUES (12849,'Combination_Kit','Combination Kit',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12849,'Combination_Kit','Combination Kit',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

View File

@ -844,7 +844,7 @@ REPLACE INTO `mob_db_re` VALUES (1721,'DRAGON_EGG','Dragon Egg','Dragon Egg',119
REPLACE INTO `mob_db_re` VALUES (1722,'EVENT_JAKK','Jakk','Jakk',99,10310,0,93,90,1,115,182,8,11,1,28,18,13,35,45,10,12,1,0,43,0x81,240,1180,480,648,0,0,0,0,0,0,0,7225,1000,1062,1000,535,1000,0,0,0,0,0,0,0,0,0,0,0,0,5134,10000); REPLACE INTO `mob_db_re` VALUES (1722,'EVENT_JAKK','Jakk','Jakk',99,10310,0,93,90,1,115,182,8,11,1,28,18,13,35,45,10,12,1,0,43,0x81,240,1180,480,648,0,0,0,0,0,0,0,7225,1000,1062,1000,535,1000,0,0,0,0,0,0,0,0,0,0,0,0,5134,10000);
REPLACE INTO `mob_db_re` VALUES (1723,'A_SHECIL','Shecil Damon','Cecil Damon',82,30000,0,0,0,14,600,900,40,15,1,145,27,32,134,80,10,12,1,7,64,0x3695,180,1008,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (1723,'A_SHECIL','Shecil Damon','Cecil Damon',82,30000,0,0,0,14,600,900,40,15,1,145,27,32,134,80,10,12,1,7,64,0x3695,180,1008,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
REPLACE INTO `mob_db_re` VALUES (1724,'A_POTON_CANON','Photon Cannon','Photon Cannon',66,8000,0,0,0,9,1000,1300,16,30,1,40,25,20,80,80,10,12,1,0,40,0x84,300,1536,960,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (1724,'A_POTON_CANON','Photon Cannon','Photon Cannon',66,8000,0,0,0,9,1000,1300,16,30,1,40,25,20,80,80,10,12,1,0,40,0x84,300,1536,960,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
REPLACE INTO `mob_db_re` VALUES (1725,'R_PORING','Poring','Poring',1,50,0,0,0,1,7,10,0,5,1,1,1,0,6,30,10,12,1,3,21,0x83,150,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (1725,'R_PORING','Poring','Poring',1,50,0,0,0,1,7,10,0,5,1,1,1,0,6,30,10,12,1,3,21,0x81,150,1872,672,480,0,0,0,0,0,0,0,7049,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
REPLACE INTO `mob_db_re` VALUES (1726,'R_LUNATIC','Lunatic','Lunatic',3,60,0,0,0,1,9,12,0,20,1,3,3,10,8,60,10,12,0,2,60,0x83,150,1456,456,336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (1726,'R_LUNATIC','Lunatic','Lunatic',3,60,0,0,0,1,9,12,0,20,1,3,3,10,8,60,10,12,0,2,60,0x83,150,1456,456,336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
REPLACE INTO `mob_db_re` VALUES (1727,'R_SAVAGE_BABE','Savage Babe','Savage Babe',7,182,0,0,0,1,20,25,0,0,1,7,14,5,12,35,10,12,0,2,22,0x83,150,1624,624,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (1727,'R_SAVAGE_BABE','Savage Babe','Savage Babe',7,182,0,0,0,1,20,25,0,0,1,7,14,5,12,35,10,12,0,2,22,0x83,150,1624,624,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
REPLACE INTO `mob_db_re` VALUES (1728,'R_DESERT_WOLF_B','Desert Wolf Baby','Baby Desert Wolf',14,140,1,0,0,1,33,41,13,0,10,12,8,5,28,7,10,12,0,2,23,0x83,150,1600,900,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (1728,'R_DESERT_WOLF_B','Desert Wolf Baby','Baby Desert Wolf',14,140,1,0,0,1,33,41,13,0,10,12,8,5,28,7,10,12,0,2,23,0x83,150,1600,900,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

View File

@ -2634,9 +2634,16 @@ void char_set_defaults(){
charserv_config.log_inter = 1; // loggin inter or not [devil] charserv_config.log_inter = 1; // loggin inter or not [devil]
charserv_config.char_check_db =1; charserv_config.char_check_db =1;
#ifdef RENEWAL
charserv_config.start_point.map = mapindex_name2id("iz_int");
charserv_config.start_point.x = 97;
charserv_config.start_point.y = 90;
#else
charserv_config.start_point.map = mapindex_name2id("new_zone01"); //mapindex_name2id(MAP_DEFAULT); charserv_config.start_point.map = mapindex_name2id("new_zone01"); //mapindex_name2id(MAP_DEFAULT);
charserv_config.start_point.x = 53; //MAP_DEFAULT_X charserv_config.start_point.x = 53; //MAP_DEFAULT_X
charserv_config.start_point.y = 111; //MAP_DEFAULT_Y charserv_config.start_point.y = 111; //MAP_DEFAULT_Y
#endif
charserv_config.console = 0; charserv_config.console = 0;
charserv_config.max_connect_user = -1; charserv_config.max_connect_user = -1;
charserv_config.gm_allow_group = -1; charserv_config.gm_allow_group = -1;
@ -2740,7 +2747,11 @@ bool char_config_read(const char* cfgName, bool normal){
charserv_config.autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; charserv_config.autosave_interval = DEFAULT_AUTOSAVE_INTERVAL;
} else if (strcmpi(w1, "save_log") == 0) { } else if (strcmpi(w1, "save_log") == 0) {
charserv_config.save_log = config_switch(w2); charserv_config.save_log = config_switch(w2);
#ifdef RENEWAL
} else if (strcmpi(w1, "start_point") == 0) { } else if (strcmpi(w1, "start_point") == 0) {
#else
} else if (strcmpi(w1, "start_point_pre") == 0) {
#endif
char map[MAP_NAME_LENGTH_EXT]; char map[MAP_NAME_LENGTH_EXT];
int x, y; int x, y;
if (sscanf(w2, "%15[^,],%d,%d", map, &x, &y) < 3) if (sscanf(w2, "%15[^,],%d,%d", map, &x, &y) < 3)

View File

@ -9758,7 +9758,6 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd)
/// 007d /// 007d
void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
{ {
int i;
bool guild_notice = false; bool guild_notice = false;
if(sd->bl.prev != NULL) if(sd->bl.prev != NULL)
@ -10100,19 +10099,9 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
if(!battle_config.pc_invincible_time) if(!battle_config.pc_invincible_time)
skill_unit_move(&sd->bl,gettick(),1); skill_unit_move(&sd->bl,gettick(),1);
// NPC Quest / Event Icon Check [Kisuka]
#if PACKETVER >= 20090218 #if PACKETVER >= 20090218
for(i = 0; i < map[sd->bl.m].qi_count; i++) { pc_show_questinfo_reinit(sd);
struct questinfo *qi = &map[sd->bl.m].qi_data[i]; pc_show_questinfo(sd);
if( quest_check(sd, qi->quest_id, HAVEQUEST) == -1 ) {// Check if quest is not started
if( qi->hasJob ) { // Check if quest is job-specific, check is user is said job class.
if( sd->class_ == qi->job )
clif_quest_show_event(sd, &qi->nd->bl, qi->icon, qi->color);
} else {
clif_quest_show_event(sd, &qi->nd->bl, qi->icon, qi->color);
}
}
}
#endif #endif
} }

View File

@ -2435,6 +2435,8 @@ static int map_instancemap_clean(struct block_list *bl, va_list ap)
return 1; return 1;
} }
static void map_free_questinfo(int m);
/*========================================== /*==========================================
* Deleting an instance map * Deleting an instance map
*------------------------------------------*/ *------------------------------------------*/
@ -2456,8 +2458,7 @@ int map_delinstancemap(int m)
aFree(map[m].cell); aFree(map[m].cell);
aFree(map[m].block); aFree(map[m].block);
aFree(map[m].block_mob); aFree(map[m].block_mob);
if( map[m].qi_data ) map_free_questinfo(m);
aFree(map[m].qi_data);
mapindex_removemap( map[m].index ); mapindex_removemap( map[m].index );
map_removemapdb(&map[m]); map_removemapdb(&map[m]);
@ -3247,11 +3248,7 @@ void map_flags_init(void)
if( battle_config.pk_mode ) if( battle_config.pk_mode )
map[i].flag.pvp = 1; // make all maps pvp for pk_mode [Valaris] map[i].flag.pvp = 1; // make all maps pvp for pk_mode [Valaris]
if( map[i].qi_data ) map_free_questinfo(i);
aFree(map[i].qi_data);
map[i].qi_data = NULL;
map[i].qi_count = 0;
} }
} }
@ -3885,35 +3882,105 @@ int log_sql_init(void)
return 0; return 0;
} }
void map_add_questinfo(int m, struct questinfo *qi) { struct questinfo *map_add_questinfo(int m, struct questinfo *qi) {
unsigned short i; unsigned short i;
/* duplicate, override */ /* duplicate, override */
for(i = 0; i < map[m].qi_count; i++) { for(i = 0; i < map[m].qi_count; i++) {
if( map[m].qi_data[i].nd == qi->nd ) if( &map[m].qi_data[i] && map[m].qi_data[i].nd == qi->nd && map[m].qi_data[i].quest_id == qi->quest_id)
break; break;
} }
if( i == map[m].qi_count ) if( i == map[m].qi_count )
RECREATE(map[m].qi_data, struct questinfo, ++map[m].qi_count); RECREATE(map[m].qi_data, struct questinfo, ++map[m].qi_count);
else { // clear previous criteria on override
if (map[m].qi_data[i].jobid)
aFree(map[m].qi_data[i].jobid);
map[m].qi_data[i].jobid = NULL;
map[m].qi_data[i].jobid_count = 0;
if (map[m].qi_data[i].req)
aFree(map[m].qi_data[i].req);
map[m].qi_data[i].req = NULL;
map[m].qi_data[i].req_count = 0;
}
memcpy(&map[m].qi_data[i], qi, sizeof(struct questinfo)); memcpy(&map[m].qi_data[i], qi, sizeof(struct questinfo));
return &map[m].qi_data[i];
} }
bool map_remove_questinfo(int m, struct npc_data *nd) { bool map_remove_questinfo(int m, struct npc_data *nd) {
unsigned short i; unsigned short i, c;
for(i = 0; i < map[m].qi_count; i++) { for(i = 0; i < map[m].qi_count; i++) {
struct questinfo *qi = &map[m].qi_data[i]; struct questinfo *qi = &map[m].qi_data[i];
if( qi->nd == nd ) { if( qi->nd == nd ) {
memset(&map[m].qi_data[i], 0, sizeof(struct questinfo)); if (qi->jobid)
if( i != --map[m].qi_count ) aFree(qi->jobid);
memmove(&map[m].qi_data[i],&map[m].qi_data[i+1],sizeof(struct questinfo)*(map[m].qi_count-i)); qi->jobid = NULL;
return true; qi->jobid_count = 0;
if (qi->req)
aFree(qi->req);
qi->req = NULL;
qi->req_count = 0;
memset(&map[m].qi_data[i], 0, sizeof(map[m].qi_data[i]));
} }
} }
return false; // Move next data to empty slot
for(i = 0, c = 0; i < map[m].qi_count; i++) {
struct questinfo *qi = &map[m].qi_data[i];
if (!qi || !qi->nd)
continue;
if (i != c) {
map[m].qi_data[c] = map[m].qi_data[i];
memset(&map[m].qi_data[i], 0, sizeof(map[m].qi_data[i]));
}
c++;
}
if (!(map[m].qi_count = c)) {
aFree(map[m].qi_data);
map[m].qi_data = NULL;
}
else
RECREATE(map[m].qi_data, struct questinfo, map[m].qi_count);
return true;
}
static void map_free_questinfo(int m) {
unsigned short i;
for(i = 0; i < map[m].qi_count; i++) {
if (map[m].qi_data[i].jobid)
aFree(map[m].qi_data[i].jobid);
map[m].qi_data[i].jobid = NULL;
map[m].qi_data[i].jobid_count = 0;
if (map[m].qi_data[i].req)
aFree(map[m].qi_data[i].req);
map[m].qi_data[i].req = NULL;
map[m].qi_data[i].req_count = 0;
}
aFree(map[m].qi_data);
map[m].qi_data = NULL;
map[m].qi_count = 0;
}
struct questinfo *map_has_questinfo(int m, struct npc_data *nd, int quest_id) {
unsigned short i;
for (i = 0; i < map[m].qi_count; i++) {
struct questinfo *qi = &map[m].qi_data[i];
if (qi->nd == nd && qi->quest_id == quest_id) {
return qi;
}
}
return NULL;
} }
/** /**
@ -4112,13 +4179,13 @@ void do_final(void)
if(map[i].cell) aFree(map[i].cell); if(map[i].cell) aFree(map[i].cell);
if(map[i].block) aFree(map[i].block); if(map[i].block) aFree(map[i].block);
if(map[i].block_mob) aFree(map[i].block_mob); if(map[i].block_mob) aFree(map[i].block_mob);
if(map[i].qi_data) aFree(map[i].qi_data);
if(battle_config.dynamic_mobs) { //Dynamic mobs flag by [random] if(battle_config.dynamic_mobs) { //Dynamic mobs flag by [random]
if(map[i].mob_delete_timer != INVALID_TIMER) if(map[i].mob_delete_timer != INVALID_TIMER)
delete_timer(map[i].mob_delete_timer, map_removemobs_timer); delete_timer(map[i].mob_delete_timer, map_removemobs_timer);
for (j=0; j<MAX_MOB_LIST_PER_MAP; j++) for (j=0; j<MAX_MOB_LIST_PER_MAP; j++)
if (map[i].moblist[j]) aFree(map[i].moblist[j]); if (map[i].moblist[j]) aFree(map[i].moblist[j]);
} }
map_free_questinfo(i);
#ifdef ADJUST_SKILL_DAMAGE #ifdef ADJUST_SKILL_DAMAGE
if (map[i].skill_damage.count) if (map[i].skill_damage.count)
map_skill_damage_free(&map[i]); map_skill_damage_free(&map[i]);

View File

@ -620,13 +620,22 @@ struct s_skill_damage {
struct eri *map_skill_damage_ers; struct eri *map_skill_damage_ers;
#endif #endif
struct questinfo_req {
unsigned int quest_id;
unsigned state : 2; // 0: Doesn't have, 1: Inactive, 2: Active, 3: Complete //! TODO: CONFIRM ME!!
};
struct questinfo { struct questinfo {
struct npc_data *nd; struct npc_data *nd;
unsigned short icon; unsigned short icon;
unsigned char color; unsigned char color;
int quest_id; int quest_id;
bool hasJob; unsigned short min_level,
unsigned short job;/* perhaps a mapid mask would be most flexible? */ max_level;
uint8 req_count;
uint8 jobid_count;
struct questinfo_req *req;
unsigned short *jobid;
}; };
struct map_data { struct map_data {
@ -880,8 +889,9 @@ struct mob_data * map_id2boss(int id);
// reload config file looking only for npcs // reload config file looking only for npcs
void map_reloadnpc(bool clear); void map_reloadnpc(bool clear);
void map_add_questinfo(int m, struct questinfo *qi); struct questinfo *map_add_questinfo(int m, struct questinfo *qi);
bool map_remove_questinfo(int m, struct npc_data *nd); bool map_remove_questinfo(int m, struct npc_data *nd);
struct questinfo *map_has_questinfo(int m, struct npc_data *nd, int quest_id);
/// Bitfield of flags for the iterator. /// Bitfield of flags for the iterator.
enum e_mapitflags enum e_mapitflags

View File

@ -30,6 +30,7 @@
#include "pet.h" // pet_unlocktarget() #include "pet.h" // pet_unlocktarget()
#include "party.h" // party_search() #include "party.h" // party_search()
#include "storage.h" #include "storage.h"
#include "quest.h"
#include <stdlib.h> #include <stdlib.h>
#include <math.h> #include <math.h>
@ -1200,6 +1201,9 @@ bool pc_authok(struct map_session_data *sd, uint32 login_id2, time_t expiration_
sd->vars_ok = false; sd->vars_ok = false;
sd->vars_received = 0x0; sd->vars_received = 0x0;
sd->qi_display = NULL;
sd->qi_count = 0;
//warp player //warp player
if ((i=pc_setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, CLR_OUTSIGHT)) != 0) { if ((i=pc_setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, CLR_OUTSIGHT)) != 0) {
ShowError ("Last_point_map %s - id %d not found (error code %d)\n", mapindex_id2name(sd->status.last_point.map), sd->status.last_point.map, i); ShowError ("Last_point_map %s - id %d not found (error code %d)\n", mapindex_id2name(sd->status.last_point.map), sd->status.last_point.map, i);
@ -6259,6 +6263,9 @@ void pc_baselevelchanged(struct map_session_data *sd) {
pc_unequipitem(sd, sd->equip_index[i], 3); pc_unequipitem(sd, sd->equip_index[i], 3);
} }
} }
#if PACKETVER >= 20090218
pc_show_questinfo(sd);
#endif
} }
int pc_checkjoblevelup(struct map_session_data *sd) int pc_checkjoblevelup(struct map_session_data *sd)
@ -8253,6 +8260,10 @@ bool pc_jobchange(struct map_session_data *sd,int job, char upper)
pc_checkallowskill(sd); pc_checkallowskill(sd);
pc_equiplookall(sd); pc_equiplookall(sd);
#if PACKETVER >= 20090218
pc_show_questinfo(sd);
#endif
//if you were previously famous, not anymore. //if you were previously famous, not anymore.
if (fame_flag) { if (fame_flag) {
chrif_save(sd,0); chrif_save(sd,0);
@ -11683,6 +11694,139 @@ void pc_validate_skill(struct map_session_data *sd) {
} }
} }
/**
* Toggle to remember if the questinfo is displayed yet or not.
* @param qi_display Display flag
* @param show If show is true and qi_display is 0, set qi_display to 1 and show the event bubble.
* If show is false and qi_display is 1, set qi_display to 0 and hide the event bubble.
**/
static void pc_show_questinfo_sub(struct map_session_data *sd, bool *qi_display, struct questinfo *qi, bool show) {
if (show) {
// Check if need to be displayed
if ((*qi_display) != 1) {
(*qi_display) = 1;
clif_quest_show_event(sd, &qi->nd->bl, qi->icon, qi->color);
}
}
else {
// Check if need to be hid
if ((*qi_display) != 0) {
(*qi_display) = 0;
#if PACKETVER >= 20120410
clif_quest_show_event(sd, &qi->nd->bl, 9999, 0);
#else
clif_quest_show_event(sd, &qi->nd->bl, 0, 0);
#endif
}
}
}
#if PACKETVER >= 20090218
/**
* Show available NPC Quest / Event Icon Check [Kisuka]
* @param sd Player
**/
void pc_show_questinfo(struct map_session_data *sd) {
struct questinfo *qi = NULL;
unsigned short i;
uint8 j, state = 0, mystate = 0;
bool failed = false;
nullpo_retv(sd);
if (sd->bl.m < 0 || sd->bl.m >= MAX_MAPINDEX)
return;
if (!map[sd->bl.m].qi_count || !map[sd->bl.m].qi_data)
return;
for(i = 0; i < map[sd->bl.m].qi_count; i++) {
qi = &map[sd->bl.m].qi_data[i];
if (!qi)
continue;
// printf("Qid %d(%d) @%s(%d,%d) J:%d Q:%d",qi->quest_id,qi->icon,map[qi->nd->bl.m].name,qi->nd->bl.x,qi->nd->bl.y,
// qi->jobid_count,qi->req_count);
if (quest_check(sd, qi->quest_id, HAVEQUEST) != -1) { // Check if quest is not started
pc_show_questinfo_sub(sd, &sd->qi_display[i], qi, false);
// printf(" -> Hide, has quest %d\n",qi->quest_id);
continue;
}
// Level range checks
if (sd->status.base_level < qi->min_level || sd->status.base_level > qi->max_level) {
pc_show_questinfo_sub(sd, &sd->qi_display[i], qi, false);
// printf(" -> Hide, level is %d. Need %d - %d\n",sd->status.base_level,qi->min_level,qi->max_level);
continue;
}
// Quest requirements
if (qi->req_count) {
failed = false;
for (j = 0; j < qi->req_count; j++) {
//!TODO: Confirm all states means
// Currently only confirmed, if required quest is '0: doesn't have', and '1: have'
// Maybe something like, if (quest_check(sd, qi->req[j].quest_id, HAVEQUEST) + 1 != qi->req[j].state) ?
state = (qi->req[j].state > 0) ? 1 : 0;
mystate = (quest_check(sd, qi->req[j].quest_id, HAVEQUEST) == -1) ? 0 : 1;
if (mystate != state) {
failed = true;
// printf(" -> Hide, need %d state %d. curr %d\n",qi->req[j].quest_id,state,mystate);
break;
}
}
if (failed) {
pc_show_questinfo_sub(sd, &sd->qi_display[i], qi, false);
continue;
}
}
// Job requirements
if (qi->jobid_count) {
failed = true;
for (j = 0; j < qi->jobid_count; j++) {
if (pc_mapid2jobid(sd->class_,sd->status.sex) == qi->jobid[j]) {
pc_show_questinfo_sub(sd, &sd->qi_display[i], qi, true);
failed = false;
// printf(" -> Show, job match for %d.\n",sd->status.class_,qi->jobid[j]);
break;
}
}
if (!failed)
continue;
pc_show_questinfo_sub(sd, &sd->qi_display[i], qi, false);
// printf(" -> Hide, no job match for %d.\n",sd->status.class_);
}
else {
pc_show_questinfo_sub(sd, &sd->qi_display[i], qi, true);
// printf(" -> Show, normal\n");
}
}
}
/**
* Reinit the questinfo for player when changing map
* @param sd Player
**/
void pc_show_questinfo_reinit(struct map_session_data *sd) {
nullpo_retv(sd);
if (sd->qi_display) {
aFree(sd->qi_display);
sd->qi_display = NULL;
}
sd->qi_count = 0;
if (sd->bl.m < 0 || sd->bl.m >= MAX_MAPINDEX)
return;
if (!map[sd->bl.m].qi_count || !map[sd->bl.m].qi_data)
return;
CREATE(sd->qi_display, bool, (sd->qi_count = map[sd->bl.m].qi_count));
}
#endif
/*========================================== /*==========================================
* pc Init/Terminate * pc Init/Terminate
*------------------------------------------*/ *------------------------------------------*/

View File

@ -557,6 +557,10 @@ struct map_session_data {
struct quest *quest_log; ///< Quest log entries (note: Q_COMPLETE quests follow the first <avail_quests>th enties struct quest *quest_log; ///< Quest log entries (note: Q_COMPLETE quests follow the first <avail_quests>th enties
bool save_quest; ///< Whether the quest_log entries were modified and are waitin to be saved bool save_quest; ///< Whether the quest_log entries were modified and are waitin to be saved
/* ShowEvent Data Cache flags from map */
bool *qi_display;
unsigned short qi_count;
// temporary debug [flaviojs] // temporary debug [flaviojs]
const char* debug_file; const char* debug_file;
int debug_line; int debug_line;
@ -1211,6 +1215,11 @@ int pc_autotrade_timer(int tid, unsigned int tick, int id, intptr_t data);
void pc_validate_skill(struct map_session_data *sd); void pc_validate_skill(struct map_session_data *sd);
#if PACKETVER >= 20090218
void pc_show_questinfo(struct map_session_data *sd);
void pc_show_questinfo_reinit(struct map_session_data *sd);
#endif
#if defined(RENEWAL_DROP) || defined(RENEWAL_EXP) #if defined(RENEWAL_DROP) || defined(RENEWAL_EXP)
int pc_level_penalty_mod(struct map_session_data *sd, int mob_level, uint32 mob_class, int type); int pc_level_penalty_mod(struct map_session_data *sd, int mob_level, uint32 mob_class, int type);
#endif #endif

View File

@ -18560,7 +18560,16 @@ BUILDIN_FUNC(readbook)
/****************** /******************
Questlog script commands Questlog script commands
*******************/ *******************/
/**
* Add job criteria to questinfo
* @param qi Quest Info
* @param job
* @author [Cydh]
**/
static void buildin_questinfo_setjob(struct questinfo *qi, int job) {
RECREATE(qi->jobid, unsigned short, qi->jobid_count+1);
qi->jobid[qi->jobid_count++] = job;
}
/** /**
* questinfo <Quest ID>,<Icon>{,<Map Mark Color>{,<Job Class>}}; * questinfo <Quest ID>,<Icon>{,<Map Mark Color>{,<Job Class>}};
**/ **/
@ -18568,7 +18577,7 @@ BUILDIN_FUNC(questinfo)
{ {
TBL_NPC* nd = map_id2nd(st->oid); TBL_NPC* nd = map_id2nd(st->oid);
int quest_id, icon; int quest_id, icon;
struct questinfo qi; struct questinfo qi, *q2;
if( nd == NULL || nd->bl.m == -1 ) { if( nd == NULL || nd->bl.m == -1 ) {
ShowError("buildin_questinfo: No NPC attached.\n"); ShowError("buildin_questinfo: No NPC attached.\n");
@ -18602,7 +18611,14 @@ BUILDIN_FUNC(questinfo)
qi.color = (unsigned char)color; qi.color = (unsigned char)color;
} }
qi.hasJob = false; qi.min_level = 1;
qi.max_level = MAX_LEVEL;
q2 = map_add_questinfo(nd->bl.m, &qi);
q2->req = NULL;
q2->req_count = 0;
q2->jobid = NULL;
q2->jobid_count = 0;
if(script_hasdata(st, 5)) { if(script_hasdata(st, 5)) {
int job = script_getnum(st, 5); int job = script_getnum(st, 5);
@ -18610,13 +18626,10 @@ BUILDIN_FUNC(questinfo)
if (!pcdb_checkid(job)) if (!pcdb_checkid(job))
ShowError("buildin_questinfo: Nonexistant Job Class.\n"); ShowError("buildin_questinfo: Nonexistant Job Class.\n");
else { else {
qi.hasJob = true; buildin_questinfo_setjob(q2, job);
qi.job = (unsigned short)job;
} }
} }
map_add_questinfo(nd->bl.m,&qi);
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -18626,7 +18639,6 @@ BUILDIN_FUNC(questinfo)
BUILDIN_FUNC(setquest) BUILDIN_FUNC(setquest)
{ {
struct map_session_data *sd; struct map_session_data *sd;
unsigned short i;
int quest_id; int quest_id;
quest_id = script_getnum(st, 2); quest_id = script_getnum(st, 2);
@ -18636,17 +18648,9 @@ BUILDIN_FUNC(setquest)
quest_add(sd, quest_id); quest_add(sd, quest_id);
// If questinfo is set, remove quest bubble once quest is set.
for(i = 0; i < map[sd->bl.m].qi_count; i++) {
struct questinfo *qi = &map[sd->bl.m].qi_data[i];
if( qi->quest_id == quest_id ) {
#if PACKETVER >= 20120410 #if PACKETVER >= 20120410
clif_quest_show_event(sd, &qi->nd->bl, 9999, 0); pc_show_questinfo(sd);
#else
clif_quest_show_event(sd, &qi->nd->bl, 0, 0);
#endif #endif
}
}
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -18675,6 +18679,9 @@ BUILDIN_FUNC(completequest)
return SCRIPT_CMD_FAILURE; return SCRIPT_CMD_FAILURE;
quest_update_status(sd, script_getnum(st, 2), Q_COMPLETE); quest_update_status(sd, script_getnum(st, 2), Q_COMPLETE);
#if PACKETVER >= 20120410
pc_show_questinfo(sd);
#endif
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -18689,6 +18696,9 @@ BUILDIN_FUNC(changequest)
return SCRIPT_CMD_FAILURE; return SCRIPT_CMD_FAILURE;
quest_change(sd, script_getnum(st, 2),script_getnum(st, 3)); quest_change(sd, script_getnum(st, 2),script_getnum(st, 3));
#if PACKETVER >= 20120410
pc_show_questinfo(sd);
#endif
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -21135,6 +21145,97 @@ BUILDIN_FUNC(geteleminfo) {
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
/**
* Set the quest info of quest_id only showed on player in level range.
* setquestinfo_level <quest_id>,<min_level>,<max_level>
* @author [Cydh]
**/
BUILDIN_FUNC(setquestinfo_level) {
TBL_NPC* nd = map_id2nd(st->oid);
int quest_id = script_getnum(st, 2);
struct questinfo *qi = map_has_questinfo(nd->bl.m, nd, quest_id);
if (!qi) {
ShowError("buildin_setquestinfo_level: Quest with '%d' is not defined yet.\n", quest_id);
return SCRIPT_CMD_FAILURE;
}
qi->min_level = script_getnum(st, 3);
qi->max_level = script_getnum(st, 4);
if (!qi->max_level)
qi->max_level = MAX_LEVEL;
return SCRIPT_CMD_SUCCESS;
}
/**
* Set the quest info of quest_id only showed for player that has quest criteria
* setquestinfo_req <quest_id>,<quest_req_id>,<state>{,<quest_req_id>,<state>,...};
* @author [Cydh]
**/
BUILDIN_FUNC(setquestinfo_req) {
TBL_NPC* nd = map_id2nd(st->oid);
int quest_id = script_getnum(st, 2);
struct questinfo *qi = map_has_questinfo(nd->bl.m, nd, quest_id);
uint8 i = 0;
uint8 num = script_lastdata(st)+1;
if (!qi) {
ShowError("buildin_setquestinfo_req: Quest with '%d' is not defined yet.\n", quest_id);
return SCRIPT_CMD_FAILURE;
}
if (quest_search(quest_id) == &quest_dummy) {
ShowError("buildin_setquestinfo_req: Quest with '%d' is not found in Quest DB.\n", quest_id);
return SCRIPT_CMD_FAILURE;
}
if ((num+1)%2 != 0) {
ShowError("buildin_setquestinfo_req: Unmatched parameters. Num: '%d'\n", num);
return SCRIPT_CMD_FAILURE;
}
for (i = 3; i < num; i += 2) {
RECREATE(qi->req, struct questinfo_req, qi->req_count+1);
qi->req[qi->req_count].quest_id = script_getnum(st, i);
qi->req[qi->req_count].state = script_getnum(st, i+1);
qi->req_count++;
}
return SCRIPT_CMD_SUCCESS;
}
/**
* Set the quest info of quest_id only showed for player that has specified Job
* setquestinfo_job <quest_id>,<job>{,<job>...};
* @author [Cydh]
**/
BUILDIN_FUNC(setquestinfo_job) {
TBL_NPC* nd = map_id2nd(st->oid);
int quest_id = script_getnum(st, 2);
struct questinfo *qi = map_has_questinfo(nd->bl.m, nd, quest_id);
int job_id = 0;
uint8 i = 0;
uint8 num = script_lastdata(st)+1;
if (!qi) {
ShowError("buildin_setquestinfo_job: Quest with '%d' is not defined yet.\n", quest_id);
return SCRIPT_CMD_FAILURE;
}
for (i = 3; i < num; i++) {
job_id = script_getnum(st, i);
if (!pcdb_checkid(job_id)) {
ShowError("buildin_setquestinfo_job: Invalid job with id '%d'.\n", job_id);
continue;
}
buildin_questinfo_setjob(qi, job_id);
}
return SCRIPT_CMD_SUCCESS;
}
#include "../custom/script.inc" #include "../custom/script.inc"
// declarations that were supposed to be exported from npc_chat.c // declarations that were supposed to be exported from npc_chat.c
@ -21697,6 +21798,9 @@ struct script_function buildin_func[] = {
BUILDIN_DEF(showscript,"s?"), BUILDIN_DEF(showscript,"s?"),
BUILDIN_DEF(ignoretimeout,"i?"), BUILDIN_DEF(ignoretimeout,"i?"),
BUILDIN_DEF(geteleminfo,"i?"), BUILDIN_DEF(geteleminfo,"i?"),
BUILDIN_DEF(setquestinfo_level,"iii"),
BUILDIN_DEF(setquestinfo_req,"iii*"),
BUILDIN_DEF(setquestinfo_job,"ii*"),
#include "../custom/script_def.inc" #include "../custom/script_def.inc"

View File

@ -3194,6 +3194,12 @@ int unit_free(struct block_list *bl, clr_type clrtype)
sd->num_quests = sd->avail_quests = 0; sd->num_quests = sd->avail_quests = 0;
} }
if (sd->qi_display) {
aFree(sd->qi_display);
sd->qi_display = NULL;
}
sd->qi_count = 0;
// Clearing... // Clearing...
if (sd->bonus_script.head) if (sd->bonus_script.head)
pc_bonus_script_clear(sd, BSF_REM_ALL); pc_bonus_script_clear(sd, BSF_REM_ALL);