Merge branch 'academie' of https://github.com/rathena/rathena into academie
This commit is contained in:
commit
8703eacfe4
@ -109,7 +109,8 @@ save_log: yes
|
||||
|
||||
// Starting point for new characters
|
||||
// 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
|
||||
// Max number of items is MAX_STARTITEM in char.c (default 32)
|
||||
|
@ -6856,8 +6856,8 @@
|
||||
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,,,{},{},{}
|
||||
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,,,,,,{},{},{}
|
||||
12846,Unripe_Apple2,Unripe Apple2,2,10,,50,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12845,Amatsu_Butterfly_Wing,Amatsu_Butterfly_Wing,2,0,,0,,,,,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,,,,,,{},{},{}
|
||||
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,,,,,,{},{},{}
|
||||
|
@ -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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
@ -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"
|
||||
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"
|
||||
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"
|
||||
@ -333,8 +345,17 @@
|
||||
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)"
|
||||
|
||||
// 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
|
||||
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"
|
||||
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"
|
||||
@ -637,6 +658,29 @@
|
||||
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,"????? ??"
|
||||
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,""
|
||||
//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,""
|
||||
@ -771,6 +815,21 @@
|
||||
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"
|
||||
|
||||
// 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
|
||||
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"
|
||||
@ -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!"
|
||||
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,""
|
||||
//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,""
|
||||
@ -1668,6 +1753,15 @@
|
||||
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"
|
||||
|
||||
// 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,""
|
||||
//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,""
|
||||
@ -2040,6 +2134,9 @@
|
||||
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"
|
||||
|
||||
// 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"
|
||||
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"
|
||||
@ -2096,6 +2193,19 @@
|
||||
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"
|
||||
|
||||
// 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,""
|
||||
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"
|
||||
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
|
||||
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"
|
||||
@ -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"
|
||||
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
|
||||
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"
|
||||
@ -2580,6 +2713,32 @@
|
||||
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"
|
||||
|
||||
// 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,""
|
||||
//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,""
|
||||
@ -2617,6 +2776,11 @@
|
||||
//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,""
|
||||
//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,""
|
||||
//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,""
|
||||
|
@ -8198,6 +8198,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>};
|
||||
|
||||
Place quest of <ID> in the users quest log, the state of which is "active".
|
||||
|
@ -14,4 +14,5 @@ npc: npc/pre-re/jobs/1-1/thief.txt
|
||||
npc: npc/pre-re/jobs/novice/novice.txt
|
||||
|
||||
// ------------------------ 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
|
||||
|
@ -17,75 +17,75 @@
|
||||
|
||||
// Izlude
|
||||
//============================================================
|
||||
izlude,197,205,1 duplicate(Sailor_izlude) Sailor#izlude 100
|
||||
izlude_a,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_a 100
|
||||
izlude_b,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_b 100
|
||||
izlude_c,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_c 100
|
||||
izlude_d,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_d 100
|
||||
izlude,197,205,1 duplicate(Sailor_izlude) Sailor#izlude 4W_SAILOR
|
||||
izlude_a,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_a 4W_SAILOR
|
||||
izlude_b,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_b 4W_SAILOR
|
||||
izlude_c,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_c 4W_SAILOR
|
||||
izlude_d,197,205,1 duplicate(Sailor_izlude) Sailor#izlude_d 4W_SAILOR
|
||||
|
||||
izlude,71,92,2 duplicate(Bonne_izlude) Bonne#izlude 90
|
||||
izlude_a,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_a 90
|
||||
izlude_b,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_b 90
|
||||
izlude_c,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_c 90
|
||||
izlude_d,71,92,2 duplicate(Bonne_izlude) Bonne#izlude_d 90
|
||||
izlude,71,92,2 duplicate(Bonne_izlude) Bonne#izlude 4_F_01
|
||||
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 4_F_01
|
||||
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 4_F_01
|
||||
|
||||
izlude,172,215,4 duplicate(Charfri_izlude) Charfri#izlude 91
|
||||
izlude_a,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_a 91
|
||||
izlude_b,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_b 91
|
||||
izlude_c,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_c 91
|
||||
izlude_d,172,215,4 duplicate(Charfri_izlude) Charfri#izlude_d 91
|
||||
izlude,172,215,4 duplicate(Charfri_izlude) Charfri#izlude 4_F_02
|
||||
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 4_F_02
|
||||
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 4_F_02
|
||||
|
||||
izlude,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude 124
|
||||
izlude_a,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_a 124
|
||||
izlude_b,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_b 124
|
||||
izlude_c,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_c 124
|
||||
izlude_d,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude_d 124
|
||||
izlude,174,164,4 duplicate(Cuskoal_izlude) Cuskoal#izlude 4_F_TELEPORTER
|
||||
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 4_F_TELEPORTER
|
||||
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 4_F_TELEPORTER
|
||||
|
||||
izlude,85,103,4 duplicate(Dega_izlude) Dega#izlude 84
|
||||
izlude_a,85,103,4 duplicate(Dega_izlude) Dega#izlude_a 84
|
||||
izlude_b,85,103,4 duplicate(Dega_izlude) Dega#izlude_b 84
|
||||
izlude_c,85,103,4 duplicate(Dega_izlude) Dega#izlude_c 84
|
||||
izlude_d,85,103,4 duplicate(Dega_izlude) Dega#izlude_d 84
|
||||
izlude,85,103,4 duplicate(Dega_izlude) Dega#izlude 4_M_02
|
||||
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 4_M_02
|
||||
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 4_M_02
|
||||
|
||||
izlude,140,186,4 duplicate(Kylick_izlude) Kylick#izlude 97
|
||||
izlude_a,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_a 97
|
||||
izlude_b,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_b 97
|
||||
izlude_c,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_c 97
|
||||
izlude_d,140,186,4 duplicate(Kylick_izlude) Kylick#izlude_d 97
|
||||
izlude,140,186,4 duplicate(Kylick_izlude) Kylick#izlude 4W_M_01
|
||||
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 4W_M_01
|
||||
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 4W_M_01
|
||||
|
||||
izlude,57,159,2 duplicate(Red_izlude) Red#izlude 85
|
||||
izlude_a,57,159,2 duplicate(Red_izlude) Red#izlude_a 85
|
||||
izlude_b,57,159,2 duplicate(Red_izlude) Red#izlude_b 85
|
||||
izlude_c,57,159,2 duplicate(Red_izlude) Red#izlude_c 85
|
||||
izlude_d,57,159,2 duplicate(Red_izlude) Red#izlude_d 85
|
||||
izlude,57,159,2 duplicate(Red_izlude) Red#izlude 4_M_03
|
||||
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 4_M_03
|
||||
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 4_M_03
|
||||
|
||||
izlude,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude 98
|
||||
izlude_a,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_a 98
|
||||
izlude_b,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_b 98
|
||||
izlude_c,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_c 98
|
||||
izlude_d,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude_d 98
|
||||
izlude,55,159,2 duplicate(Cebalis_izlude) Cebalis#izlude 4W_M_02
|
||||
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 4W_M_02
|
||||
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 4W_M_02
|
||||
|
||||
izlude,165,156,2 duplicate(Soldier_izlude) Soldier#izlude 105
|
||||
izlude_a,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_a 105
|
||||
izlude_b,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_b 105
|
||||
izlude_c,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_c 105
|
||||
izlude_d,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_d 105
|
||||
izlude,165,156,2 duplicate(Soldier_izlude) Soldier#izlude 8W_SOLDIER
|
||||
izlude_a,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_a 8W_SOLDIER
|
||||
izlude_b,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_b 8W_SOLDIER
|
||||
izlude_c,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_c 8W_SOLDIER
|
||||
izlude_d,165,156,2 duplicate(Soldier_izlude) Soldier#izlude_d 8W_SOLDIER
|
||||
|
||||
- script ::Guard_izlude -1,{
|
||||
mes "[Izlude Guard]";
|
||||
mes "Welcome to Izlude.";
|
||||
close;
|
||||
}
|
||||
prt_fild08,350,219,4 duplicate(Guard_izlude) Guard#izlude 105
|
||||
prt_fild08a,350,219,4 duplicate(Guard_izlude) Guard#izlude_a 105
|
||||
prt_fild08b,350,219,4 duplicate(Guard_izlude) Guard#izlude_b 105
|
||||
prt_fild08c,350,219,4 duplicate(Guard_izlude) Guard#izlude_c 105
|
||||
prt_fild08d,350,219,4 duplicate(Guard_izlude) Guard#izlude_d 105
|
||||
prt_fild08,350,219,4 duplicate(Guard_izlude) Guard#izlude 8W_SOLDIER
|
||||
prt_fild08a,350,219,4 duplicate(Guard_izlude) Guard#izlude_a 8W_SOLDIER
|
||||
prt_fild08b,350,219,4 duplicate(Guard_izlude) Guard#izlude_b 8W_SOLDIER
|
||||
prt_fild08c,350,219,4 duplicate(Guard_izlude) Guard#izlude_c 8W_SOLDIER
|
||||
prt_fild08d,350,219,4 duplicate(Guard_izlude) Guard#izlude_d 8W_SOLDIER
|
||||
|
||||
// Channel Warper :: channel
|
||||
//============================================================
|
||||
function script F_IzludeChannel {
|
||||
mes "[Izlude Copy Warper]";
|
||||
mes "[Channel Warp Official]";
|
||||
mes "Izlude is a verly lively place is it not?";
|
||||
mes "I am here to help make Izlude feel more smooth!";
|
||||
mes "I can send you to another copy of Izlude.";
|
||||
@ -100,8 +100,177 @@ function script F_IzludeChannel {
|
||||
}
|
||||
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_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_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_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_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,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 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 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 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 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
14175
npc/re/jobs/novice/academy.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -3,13 +3,12 @@
|
||||
//===== By: ==================================================
|
||||
//= Athena (1.0)
|
||||
//===== Current Version: =====================================
|
||||
//= 1.3
|
||||
//===== Compatible With: =====================================
|
||||
//= rAthena Project
|
||||
//= 1.4
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.1 Official kRO 10.1 spawns [Playtester]
|
||||
//= 1.2 More accurate spawns [Playtester]
|
||||
//= 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,0,0,0,0 monster Ghostring 1120,1,1980000,1200000,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
|
||||
|
@ -4,8 +4,6 @@
|
||||
//= Athena (1.0)
|
||||
//===== Current Version: =====================================
|
||||
//= 1.6
|
||||
//===== Compatible With: =====================================
|
||||
//= rAthena Project
|
||||
//===== Additional Comments: =================================
|
||||
//= 1.2 fixed some map name typos [Lupus]
|
||||
//= 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 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_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 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_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 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_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 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_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 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_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 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_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 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_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 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_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 Lunatic 1063,40,5000,0,0
|
||||
prt_fild08,0,0,0,0 monster Fabre 1007,40,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,100,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_fild08b,0,0,0,0 monster Poring 1002,140,5000,0,0
|
||||
prt_fild08c,0,0,0,0 monster Poring 1002,140,5000,0,0
|
||||
prt_fild08d,0,0,0,0 monster Poring 1002,140,5000,0,0
|
||||
prt_fild08a,0,0,0,0 monster Lunatic 1063,40,5000,0,0
|
||||
prt_fild08b,0,0,0,0 monster Lunatic 1063,40,5000,0,0
|
||||
prt_fild08c,0,0,0,0 monster Lunatic 1063,40,5000,0,0
|
||||
prt_fild08d,0,0,0,0 monster Lunatic 1063,40,5000,0,0
|
||||
prt_fild08a,0,0,0,0 monster Fabre 1007,40,5000,0,0
|
||||
prt_fild08b,0,0,0,0 monster Fabre 1007,40,5000,0,0
|
||||
prt_fild08c,0,0,0,0 monster Fabre 1007,40,5000,0,0
|
||||
prt_fild08d,0,0,0,0 monster Fabre 1007,40,5000,0,0
|
||||
prt_fild08a,0,0,0,0 monster Poring 1002,110,5000,0,0
|
||||
prt_fild08a,0,0,0,0 monster Lunatic 1063,100,5000,0,0
|
||||
prt_fild08a,0,0,0,0 monster Fabre 1007,100,5000,0,0
|
||||
prt_fild08a,0,0,0,0 monster Little Poring 2398,30,50000,0,0
|
||||
prt_fild08b,0,0,0,0 monster Poring 1002,110,5000,0,0
|
||||
prt_fild08b,0,0,0,0 monster Lunatic 1063,100,5000,0,0
|
||||
prt_fild08b,0,0,0,0 monster Fabre 1007,100,5000,0,0
|
||||
prt_fild08b,0,0,0,0 monster Little Poring 2398,30,50000,0,0
|
||||
prt_fild08c,0,0,0,0 monster Poring 1002,110,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,100,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 Metaller 1058,60,5000,0,0
|
||||
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 Poporing 1031,20,5000,0,0
|
||||
|
@ -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/wanderer.txt
|
||||
// - 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
|
||||
// - Job Repairs
|
||||
npc: npc/re/jobs/repair.txt
|
||||
|
@ -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_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
|
||||
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_a,125,257,0 warp #to_ac01_a 2,2,iz_ac01_a,99,29
|
||||
|
@ -60,7 +60,7 @@ npc: npc/quests/skills/knight_skills.txt
|
||||
npc: npc/quests/skills/mage_skills.txt
|
||||
npc: npc/quests/skills/merchant_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/rogue_skills.txt
|
||||
npc: npc/quests/skills/sage_skills.txt
|
||||
|
@ -6887,8 +6887,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 (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 (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 (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 (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,'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 (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);
|
||||
|
@ -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 (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 (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 (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);
|
||||
|
@ -2634,9 +2634,16 @@ void char_set_defaults(){
|
||||
charserv_config.log_inter = 1; // loggin inter or not [devil]
|
||||
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.x = 53; //MAP_DEFAULT_X
|
||||
charserv_config.start_point.y = 111; //MAP_DEFAULT_Y
|
||||
#endif
|
||||
|
||||
charserv_config.console = 0;
|
||||
charserv_config.max_connect_user = -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;
|
||||
} else if (strcmpi(w1, "save_log") == 0) {
|
||||
charserv_config.save_log = config_switch(w2);
|
||||
#ifdef RENEWAL
|
||||
} else if (strcmpi(w1, "start_point") == 0) {
|
||||
#else
|
||||
} else if (strcmpi(w1, "start_point_pre") == 0) {
|
||||
#endif
|
||||
char map[MAP_NAME_LENGTH_EXT];
|
||||
short x, y;
|
||||
if (sscanf(w2, "%15[^,],%6hd,%6hd", map, &x, &y) < 3){
|
||||
|
@ -9759,7 +9759,6 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd)
|
||||
/// 007d
|
||||
void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
|
||||
{
|
||||
int i;
|
||||
bool guild_notice = false;
|
||||
|
||||
if(sd->bl.prev != NULL)
|
||||
@ -10101,19 +10100,9 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
|
||||
if(!battle_config.pc_invincible_time)
|
||||
skill_unit_move(&sd->bl,gettick(),1);
|
||||
|
||||
// NPC Quest / Event Icon Check [Kisuka]
|
||||
#if PACKETVER >= 20090218
|
||||
for(i = 0; i < map[sd->bl.m].qi_count; i++) {
|
||||
struct questinfo *qi = &map[sd->bl.m].qi_data[i];
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
pc_show_questinfo_reinit(sd);
|
||||
pc_show_questinfo(sd);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -2435,6 +2435,8 @@ static int map_instancemap_clean(struct block_list *bl, va_list ap)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void map_free_questinfo(int m);
|
||||
|
||||
/*==========================================
|
||||
* Deleting an instance map
|
||||
*------------------------------------------*/
|
||||
@ -2456,8 +2458,7 @@ int map_delinstancemap(int m)
|
||||
aFree(map[m].cell);
|
||||
aFree(map[m].block);
|
||||
aFree(map[m].block_mob);
|
||||
if( map[m].qi_data )
|
||||
aFree(map[m].qi_data);
|
||||
map_free_questinfo(m);
|
||||
|
||||
mapindex_removemap( map[m].index );
|
||||
map_removemapdb(&map[m]);
|
||||
@ -3247,11 +3248,7 @@ void map_flags_init(void)
|
||||
if( battle_config.pk_mode )
|
||||
map[i].flag.pvp = 1; // make all maps pvp for pk_mode [Valaris]
|
||||
|
||||
if( map[i].qi_data )
|
||||
aFree(map[i].qi_data);
|
||||
|
||||
map[i].qi_data = NULL;
|
||||
map[i].qi_count = 0;
|
||||
map_free_questinfo(i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3884,35 +3881,105 @@ int log_sql_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void map_add_questinfo(int m, struct questinfo *qi) {
|
||||
struct questinfo *map_add_questinfo(int m, struct questinfo *qi) {
|
||||
unsigned short i;
|
||||
|
||||
/* duplicate, override */
|
||||
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;
|
||||
}
|
||||
|
||||
if( i == 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));
|
||||
return &map[m].qi_data[i];
|
||||
}
|
||||
|
||||
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++) {
|
||||
struct questinfo *qi = &map[m].qi_data[i];
|
||||
if( qi->nd == nd ) {
|
||||
memset(&map[m].qi_data[i], 0, sizeof(struct questinfo));
|
||||
if( i != --map[m].qi_count )
|
||||
memmove(&map[m].qi_data[i],&map[m].qi_data[i+1],sizeof(struct questinfo)*(map[m].qi_count-i));
|
||||
return true;
|
||||
if (qi->jobid)
|
||||
aFree(qi->jobid);
|
||||
qi->jobid = NULL;
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -4111,13 +4178,13 @@ void do_final(void)
|
||||
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(map[i].qi_data) aFree(map[i].qi_data);
|
||||
if(battle_config.dynamic_mobs) { //Dynamic mobs flag by [random]
|
||||
if(map[i].mob_delete_timer != INVALID_TIMER)
|
||||
delete_timer(map[i].mob_delete_timer, map_removemobs_timer);
|
||||
for (j=0; j<MAX_MOB_LIST_PER_MAP; j++)
|
||||
if (map[i].moblist[j]) aFree(map[i].moblist[j]);
|
||||
}
|
||||
map_free_questinfo(i);
|
||||
#ifdef ADJUST_SKILL_DAMAGE
|
||||
if (map[i].skill_damage.count)
|
||||
map_skill_damage_free(&map[i]);
|
||||
|
@ -620,13 +620,22 @@ struct s_skill_damage {
|
||||
struct eri *map_skill_damage_ers;
|
||||
#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 npc_data *nd;
|
||||
unsigned short icon;
|
||||
unsigned char color;
|
||||
int quest_id;
|
||||
bool hasJob;
|
||||
unsigned short job;/* perhaps a mapid mask would be most flexible? */
|
||||
unsigned short min_level,
|
||||
max_level;
|
||||
uint8 req_count;
|
||||
uint8 jobid_count;
|
||||
struct questinfo_req *req;
|
||||
unsigned short *jobid;
|
||||
};
|
||||
|
||||
struct map_data {
|
||||
@ -880,8 +889,9 @@ struct mob_data * map_id2boss(int id);
|
||||
// reload config file looking only for npcs
|
||||
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);
|
||||
struct questinfo *map_has_questinfo(int m, struct npc_data *nd, int quest_id);
|
||||
|
||||
/// Bitfield of flags for the iterator.
|
||||
enum e_mapitflags
|
||||
|
135
src/map/pc.c
135
src/map/pc.c
@ -30,6 +30,7 @@
|
||||
#include "pet.h" // pet_unlocktarget()
|
||||
#include "party.h" // party_search()
|
||||
#include "storage.h"
|
||||
#include "quest.h"
|
||||
|
||||
#include <stdlib.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_received = 0x0;
|
||||
|
||||
sd->qi_display = NULL;
|
||||
sd->qi_count = 0;
|
||||
|
||||
//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) {
|
||||
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);
|
||||
@ -6257,6 +6261,9 @@ void pc_baselevelchanged(struct map_session_data *sd) {
|
||||
pc_unequipitem(sd, sd->equip_index[i], 3);
|
||||
}
|
||||
}
|
||||
#if PACKETVER >= 20090218
|
||||
pc_show_questinfo(sd);
|
||||
#endif
|
||||
}
|
||||
|
||||
int pc_checkjoblevelup(struct map_session_data *sd)
|
||||
@ -8251,6 +8258,10 @@ bool pc_jobchange(struct map_session_data *sd,int job, char upper)
|
||||
pc_checkallowskill(sd);
|
||||
pc_equiplookall(sd);
|
||||
|
||||
#if PACKETVER >= 20090218
|
||||
pc_show_questinfo(sd);
|
||||
#endif
|
||||
|
||||
//if you were previously famous, not anymore.
|
||||
if (fame_flag) {
|
||||
chrif_save(sd,0);
|
||||
@ -11681,6 +11692,130 @@ 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;
|
||||
|
||||
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);
|
||||
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);
|
||||
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;
|
||||
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;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!failed)
|
||||
continue;
|
||||
pc_show_questinfo_sub(sd, &sd->qi_display[i], qi, false);
|
||||
}
|
||||
else {
|
||||
pc_show_questinfo_sub(sd, &sd->qi_display[i], qi, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*------------------------------------------*/
|
||||
|
@ -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
|
||||
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]
|
||||
const char* debug_file;
|
||||
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);
|
||||
|
||||
#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)
|
||||
int pc_level_penalty_mod(struct map_session_data *sd, int mob_level, uint32 mob_class, int type);
|
||||
#endif
|
||||
|
138
src/map/script.c
138
src/map/script.c
@ -18597,7 +18597,16 @@ BUILDIN_FUNC(readbook)
|
||||
/******************
|
||||
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>}};
|
||||
**/
|
||||
@ -18605,7 +18614,7 @@ BUILDIN_FUNC(questinfo)
|
||||
{
|
||||
TBL_NPC* nd = map_id2nd(st->oid);
|
||||
int quest_id, icon;
|
||||
struct questinfo qi;
|
||||
struct questinfo qi, *q2;
|
||||
|
||||
if( nd == NULL || nd->bl.m == -1 ) {
|
||||
ShowError("buildin_questinfo: No NPC attached.\n");
|
||||
@ -18639,7 +18648,14 @@ BUILDIN_FUNC(questinfo)
|
||||
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)) {
|
||||
int job = script_getnum(st, 5);
|
||||
@ -18647,13 +18663,10 @@ BUILDIN_FUNC(questinfo)
|
||||
if (!pcdb_checkid(job))
|
||||
ShowError("buildin_questinfo: Nonexistant Job Class.\n");
|
||||
else {
|
||||
qi.hasJob = true;
|
||||
qi.job = (unsigned short)job;
|
||||
buildin_questinfo_setjob(q2, job);
|
||||
}
|
||||
}
|
||||
|
||||
map_add_questinfo(nd->bl.m,&qi);
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
@ -18663,7 +18676,6 @@ BUILDIN_FUNC(questinfo)
|
||||
BUILDIN_FUNC(setquest)
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
unsigned short i;
|
||||
int quest_id;
|
||||
|
||||
quest_id = script_getnum(st, 2);
|
||||
@ -18673,17 +18685,9 @@ BUILDIN_FUNC(setquest)
|
||||
|
||||
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
|
||||
clif_quest_show_event(sd, &qi->nd->bl, 9999, 0);
|
||||
#else
|
||||
clif_quest_show_event(sd, &qi->nd->bl, 0, 0);
|
||||
pc_show_questinfo(sd);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
@ -18712,6 +18716,9 @@ BUILDIN_FUNC(completequest)
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
|
||||
quest_update_status(sd, script_getnum(st, 2), Q_COMPLETE);
|
||||
#if PACKETVER >= 20120410
|
||||
pc_show_questinfo(sd);
|
||||
#endif
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
@ -18726,6 +18733,9 @@ BUILDIN_FUNC(changequest)
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
|
||||
quest_change(sd, script_getnum(st, 2),script_getnum(st, 3));
|
||||
#if PACKETVER >= 20120410
|
||||
pc_show_questinfo(sd);
|
||||
#endif
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
@ -21170,6 +21180,97 @@ BUILDIN_FUNC(geteleminfo) {
|
||||
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 ID '%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 ID '%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 ID '%d' is not found in Quest DB.\n", quest_id);
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
if ((num+1)%2 != 0) {
|
||||
ShowError("buildin_setquestinfo_req: Odd number of parameters(%d) - pairs of requirements are expected.\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 ID '%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 id '%d' in Quest with ID %d.\n", job_id, quest_id);
|
||||
continue;
|
||||
}
|
||||
buildin_questinfo_setjob(qi, job_id);
|
||||
}
|
||||
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
#include "../custom/script.inc"
|
||||
|
||||
// declarations that were supposed to be exported from npc_chat.c
|
||||
@ -21732,6 +21833,9 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(showscript,"s?"),
|
||||
BUILDIN_DEF(ignoretimeout,"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"
|
||||
|
||||
|
@ -3194,6 +3194,12 @@ int unit_free(struct block_list *bl, clr_type clrtype)
|
||||
sd->num_quests = sd->avail_quests = 0;
|
||||
}
|
||||
|
||||
if (sd->qi_display) {
|
||||
aFree(sd->qi_display);
|
||||
sd->qi_display = NULL;
|
||||
}
|
||||
sd->qi_count = 0;
|
||||
|
||||
// Clearing...
|
||||
if (sd->bonus_script.head)
|
||||
pc_bonus_script_clear(sd, BSF_REM_ALL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user