summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/char/char-server.conf1
-rw-r--r--conf/map/battle/client.conf8
-rw-r--r--conf/map/battle/drops.conf9
-rw-r--r--conf/map/battle/items.conf3
-rw-r--r--conf/messages.conf9
-rw-r--r--db/constants.conf3
-rw-r--r--db/pre-re/item_db.conf29
-rw-r--r--db/re/exp.txt4
-rw-r--r--db/re/item_db.conf29
-rw-r--r--doc/constants.md35
-rw-r--r--doc/item_db.txt3
-rw-r--r--doc/script_commands.txt94
-rw-r--r--npc/quests/quests_ein.txt2720
-rw-r--r--sql-files/item_db.sql12
-rw-r--r--sql-files/item_db_re.sql12
-rw-r--r--src/common/mmo.h3
-rw-r--r--src/map/atcommand.c73
-rw-r--r--src/map/battle.c4
-rw-r--r--src/map/battle.h4
-rw-r--r--src/map/channel.c10
-rw-r--r--src/map/channel.h3
-rw-r--r--src/map/clif.c40
-rw-r--r--src/map/itemdb.c3
-rw-r--r--src/map/itemdb.h16
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/mob.c29
-rw-r--r--src/map/packets.h1324
-rw-r--r--src/map/pc.c53
-rw-r--r--src/map/script.c145
-rw-r--r--src/map/status.c101
-rw-r--r--src/map/status.h4
-rwxr-xr-xtools/configconverter.pl1
32 files changed, 2445 insertions, 2340 deletions
diff --git a/conf/char/char-server.conf b/conf/char/char-server.conf
index c512f1fb7..47506e324 100644
--- a/conf/char/char-server.conf
+++ b/conf/char/char-server.conf
@@ -50,6 +50,7 @@ char_configuration: {
// Server Communication username and password.
userid: "s1"
passwd: "p1"
+
// Login Server IP
// The character server connects to the login server using this IP address.
// NOTE: This is useful when you are running behind a firewall or are on
diff --git a/conf/map/battle/client.conf b/conf/map/battle/client.conf
index c3409b578..32f1324be 100644
--- a/conf/map/battle/client.conf
+++ b/conf/map/battle/client.conf
@@ -126,6 +126,14 @@ summer_ignorepalette: false
// Set this to true if your cloth palettes pack doesn't has Hanbok palettes (or has less than the other jobs)
hanbok_ignorepalette: false
+// Do not display cloth colors for the Oktoberfest costume?
+// Set this to true if your cloth palettes pack doesn't has Oktoberfest palettes (or has less than the other jobs)
+oktoberfest_ignorepalette: false
+
+// Do not display cloth colors for the Summer 2 costume?
+// Set this to true if your cloth palettes pack doesn't has Summer 2 palettes (or has less than the other jobs)
+summer2_ignorepalette: false
+
// Show Hercules version to users when the login?
display_version: false
diff --git a/conf/map/battle/drops.conf b/conf/map/battle/drops.conf
index 547a4ae4e..4dbbf8fd5 100644
--- a/conf/map/battle/drops.conf
+++ b/conf/map/battle/drops.conf
@@ -146,12 +146,3 @@ drops_by_luk2: 0
// 1: Only marine spheres drop items.
// 2: All alchemist summons drop items.
alchemist_summon_reward: 1
-
-// Make broadcast ** Player1 won Pupa's Pupa Card (chance 0.01%) ***
-// This can be set to any value between 0~10000.
-// Note: It also announces STEAL skill usage with rare items
-// 0 = don't show announces at all
-// 1 = show announces for 0.01% drop chance items
-// 333 = show announces for 3.33% or lower drop chance items
-// 10000 = show announces for all items
-rare_drop_announce: 0
diff --git a/conf/map/battle/items.conf b/conf/map/battle/items.conf
index c7aa99245..f7ffd3f32 100644
--- a/conf/map/battle/items.conf
+++ b/conf/map/battle/items.conf
@@ -86,9 +86,6 @@ item_check: false
// On officials this is 0, but it's set to 100ms as a measure against bots/macros.
item_use_interval: 100
-// How much time must pass between cash food uses? Default: 60000 (1 min)
-cashfood_use_interval: 60000
-
// Required level of bNoMagicDamage before Status Changes are blocked (Golden Thief Bug card).
// For example, if left at 50. An item can give bNoMagicDamage,40;
// which reduces magic damage by 40%, but does not blocks status changes.
diff --git a/conf/messages.conf b/conf/messages.conf
index 3af1d450e..abf1f5042 100644
--- a/conf/messages.conf
+++ b/conf/messages.conf
@@ -60,7 +60,7 @@
32: PvP: On.
33: GvG: Off.
34: GvG: On.
-//35 FREE
+35: This job has no alternate body styles.
36: Appearance changed.
37: An invalid number was specified.
38: Invalid location number, or name.
@@ -469,12 +469,7 @@
538: Hack on trade: character '%s' (account: %d) try to trade more items that he has.
539: This player has %d of a kind of item (id: %d), and tried to trade %d of them.
540: This player has been definitively blocked.
-// Rare Items Drop/Steal announce
-541: '%s' got %s's %s (chance: %0.02f%%)
-//541: %.0s%.0sSomeone got %s
-542: '%s' stole %s's %s (chance: %0.02f%%)
-//542: %.0s%.0sSomeone stole %s
-//543-545 FREE
+//541-545 FREE
// @showmobs
546: Please enter a mob name/id (usage: @showmobs <mob name/id>)
547: Invalid mob name %s!
diff --git a/db/constants.conf b/db/constants.conf
index d108e0976..dd280612c 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -1394,6 +1394,9 @@ constants_db: {
SC_TUNAPARTY: 649
SC_SHRIMP: 650
SC_FRESHSHRIMP: 651
+
+ // Summer 2 Costume
+ SC_DRESS_UP: 652
comment__: "Emotes"
e_gasp: 0
diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf
index cfa7cb7d1..b17e57252 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -70,7 +70,7 @@ item_db: (
Taekwon: true/false (boolean, defaults to false)
Star_Gladiator: true/false (boolean, defaults to false)
Soul_Linker: true/false (boolean, defaults to false)
- Gunslinger: true/false (boolean, defaults to false)
+ Gunslinger: true/false (boolean, defaults to false)
Ninja: true/false (boolean, defaults to false)
Gangsi: true/false (boolean, defaults to false)
Death_Knight: true/false (boolean, defaults to false)
@@ -93,6 +93,7 @@ item_db: (
BuyingStore: true/false (boolean, defaults to false)
Delay: Delay to use item (int, defaults to 0)
KeepAfterUse: true/false (boolean, defaults to false)
+ DropAnnounce: true/false (boolean, defaults to false)
Trade: { (defaults to no restrictions)
override: GroupID (int, defaults to 100)
nodrop: true/false (boolean, defaults to false)
@@ -63262,6 +63263,7 @@ item_db: (
Name: "Episode 13.1 Poporing Key"
Type: 3
Weight: 10
+ DropAnnounce: true
},
{
Id: 7783
@@ -63269,6 +63271,7 @@ item_db: (
Name: "Episode 13.2 Poring Key"
Type: 3
Weight: 10
+ DropAnnounce: true
},
{
Id: 7784
@@ -69799,8 +69802,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_STR,1800000,10;
- percentheal 20,10;
+ sc_start(SC_FOOD_STR_CASH, 1800000, 10);
+ percentheal(20, 10);
">
},
{
@@ -69820,8 +69823,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_AGI,1800000,10;
- percentheal 15,5;
+ sc_start(SC_FOOD_AGI_CASH, 1800000, 10);
+ percentheal(15, 5);
">
},
{
@@ -69841,8 +69844,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_INT,1800000,10;
- percentheal 10,20;
+ sc_start(SC_FOOD_INT_CASH, 1800000, 10);
+ percentheal(10, 20);
">
},
{
@@ -69862,8 +69865,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_DEX,1800000,10;
- percentheal 10,10;
+ sc_start(SC_FOOD_DEX_CASH, 1800000, 10);
+ percentheal(10, 10);
">
},
{
@@ -69883,8 +69886,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_LUK,1800000,10;
- percentheal 14,8;
+ sc_start(SC_FOOD_LUK_CASH, 1800000, 10);
+ percentheal(14, 8);
">
},
{
@@ -69904,8 +69907,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_VIT,1800000,10;
- percentheal 25,0;
+ sc_start(SC_FOOD_VIT_CASH, 1800000, 10);
+ percentheal(25, 0);
">
},
{
diff --git a/db/re/exp.txt b/db/re/exp.txt
index b26bc7809..790542419 100644
--- a/db/re/exp.txt
+++ b/db/re/exp.txt
@@ -32,10 +32,10 @@
10,4001,1,4,11,20,31,44,100,166,226,295,374
//Job - Adv First Classes
-50,4002:4003:4004:4005:4006:4007,1,150,340,550,760,990,1250,1600,1980,2340,2740,3140,3950,4510,5210,5950,7000,8150,9130,10220,11480,12780,14090,15560,16980,18620,20280,21780,24510,27000,29000,31000,36000,39000,41000,45000,49000,51900,55000,59450,64630,70030,74940,79800,84630,89610,95170,100420,107250,112070,118120,120482,122891,125348,127854,130411,133019,135679,138392,141159,143982,146861,149798,152793,155848,158964,162143,165385,168692,172065,175506,179016,182596,186247,189971,193770,197645,201597,205628,209740,213934,218212,222576,227027,231567,236198,240921,245739,250653,255666,260779,265994,271313,276739,282273,287918,293676,299549,305539,311649,317881,324238,330722,337336,344082,350963,357982,365141,372443,379891,387488,395237,403141,411203,419427,427815,436371,445098,453999,463078,472339,481785,491420,501248,511272,521497,531926,542564,553415,564483,575772,587287,599032,611012,623232,635696,648409,661377,674604,688096,701857,715894,730211,744815,759711,774905,790403,806211,822335,838781,855556,872667,890120,907922,926080,944601,963493,982762,1002417,1022465,1042914,1063772,1085047,1106747,1128881,1151458,1174487,1197976,1221935,1246373,1271300,1296725,1322659,1349112,1376094,1403615,1431687,1460320,1489526,1519316,1549702,1580696,1612309,1644555,1677446,1710994,1745213,1780117,1815719,1852033,1889073,1926854,1965391,2004698,2044791,2085686,2127399,2169946,2213344,2257610,2302762,2348817,2395793,2443708,2492582,2542433,2593281,2645146,2698048,2752008,2807048,2863188,2920451,2978859,3038436,3099204,3161188,3224411,3288899,3354676,3421769,3490204,3560008,3631208,3703832,3777908,3853466,3930535,4009145,4089327,4171113,4254535,4339625,4426417,4514945,4605243,4697347,4791293,4887118,4984860,5084557,5186248,5289972,5395771,5503686,5613759,5726034,5840554,5957364,6076511,6198041,6322001,6448440,6577408,6708956,6843134
+50,4002:4003:4004:4005:4006:4007,1,50,100,200,350,550,800,1100,1450,1850,2300,2800,3350,3950,4600,5300,6050,6850,7700,8600,9550,10550,11600,12700,13850,15050,16300,17600,18950,20350,21800,23300,24850,26450,28100,29800,31550,33350,35200,37100,39050,41050,43100,45200,47350,49550,51800,54100,56450,58850,61300,120482,122891,125348,127854,130411,133019,135679,138392,141159,143982,146861,149798,152793,155848,158964,162143,165385,168692,172065,175506,179016,182596,186247,189971,193770,197645,201597,205628,209740,213934,218212,222576,227027,231567,236198,240921,245739,250653,255666,260779,265994,271313,276739,282273,287918,293676,299549,305539,311649,317881,324238,330722,337336,344082,350963,357982,365141,372443,379891,387488,395237,403141,411203,419427,427815,436371,445098,453999,463078,472339,481785,491420,501248,511272,521497,531926,542564,553415,564483,575772,587287,599032,611012,623232,635696,648409,661377,674604,688096,701857,715894,730211,744815,759711,774905,790403,806211,822335,838781,855556,872667,890120,907922,926080,944601,963493,982762,1002417,1022465,1042914,1063772,1085047,1106747,1128881,1151458,1174487,1197976,1221935,1246373,1271300,1296725,1322659,1349112,1376094,1403615,1431687,1460320,1489526,1519316,1549702,1580696,1612309,1644555,1677446,1710994,1745213,1780117,1815719,1852033,1889073,1926854,1965391,2004698,2044791,2085686,2127399,2169946,2213344,2257610,2302762,2348817,2395793,2443708,2492582,2542433,2593281,2645146,2698048,2752008,2807048,2863188,2920451,2978859,3038436,3099204,3161188,3224411,3288899,3354676,3421769,3490204,3560008,3631208,3703832,3777908,3853466,3930535,4009145,4089327,4171113,4254535,4339625,4426417,4514945,4605243,4697347,4791293,4887118,4984860,5084557,5186248,5289972,5395771,5503686,5613759,5726034,5840554,5957364,6076511,6198041,6322001,6448440,6577408,6708956,6843134
//Job - Adv Second Classes
-70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,2400,3800,6200,10400,15200,22900,27100,30000,32500,35700,41300,45000,45800,47600,50300,58700,63900,67100,70300,73500,90600,96200,102700,110200,121400,144700,152900,163100,173300,183500,213500,224700,236000,247200,260700,299800,324800,343600,362300,374800,474400,497000,512100,542200,564800,644300,678200,712100,754500,796900,949300,988100,1026800,1065600,1104300,1334800,1391400,1425300,1470600,1515800,2003800,2032800,2119900,2236100,2323200,3025300,3433300,3776600,4436900,6758400,6893567,7031438,7172066,7315507,7461817,7611053,7763273,7918538,8076908,8238446,8403214,8571278,8742703,8917556,9095906,9277823,9463379,9652646,9845698,10042611,10243463,10448332,10657298,10870443,11087851,11309607,11535798,11766513,12001843,12241879,12486716,12736450,12991178,13251001,13516020,13786340,14062066,14343307,14630172,14922775,15221230,15525654,15836166,16152889,16475946,16805464,17141572,17484403,17834091,18190773,18554587,18925679,19304193,19690275,20084081,20485761,20895474,21313383,21739651,22174444,22617932,23070290,23531695,24002329,24482374,24972021,25471459,25980888,26500505,27030513,27571121,28122541,28684990,29258689,29843861,30440736,31049550,31670540,32303950,32950028,33609027,34281207,34966831,35666167,36379490,37107077,37849216,38606199,39378323,40165889,40969204,41788587,42624358,43476846,44346384,45233310,46137977,47060734,48001949,48961986,49941222,50940047,51958847,52998023,54057983,55139142,56241925,57366761,58514094,59684376,60878062,62095624,63337535,64604285,65896368,67214294,68558580,69929746,71328337,72754901,74210000,75694198,77208082,78752240,80327283,81933824,83572498,85243944,86948821,88687798,90461554,92270781,94116197,95998522,97918488,99876855,101874391,103911877,105990115,108109912,110272108,112477552,114727100,117021643,119362070,121749311,124184295,126667979,129201333,131785360,134421064,137109474,139851658,142648694,145501659,148411694,151379927,154407515,157495667,160645574,163858476,167135646,170478357,173887915,177365675,180912990,184531248,188221869,191986305,195826026,199742548,203737391,207812135,211968366,216207731,220531878,224942505,229441357,234030182,238710775,243484978,248354670,253321760,258388190,263555950
+70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,2400,3800,6200,10400,15200,22900,27100,30000,32500,35700,41300,45000,45800,47600,50300,58700,63900,67100,70300,73500,90600,96200,102700,110200,121400,144700,152900,163100,173300,183500,213500,224700,236000,247200,260700,299800,324800,343600,362300,374800,474400,497000,512100,542200,564800,644300,678200,712100,754500,796900,873100,911900,950600,989400,1028100,1143300,1199900,1233800,1279100,1324300,1486900,1515900,1603000,1719200,1806300,2040300,2244300,2415900,2746000,3326000,6893567,7031438,7172066,7315507,7461817,7611053,7763273,7918538,8076908,8238446,8403214,8571278,8742703,8917556,9095906,9277823,9463379,9652646,9845698,10042611,10243463,10448332,10657298,10870443,11087851,11309607,11535798,11766513,12001843,12241879,12486716,12736450,12991178,13251001,13516020,13786340,14062066,14343307,14630172,14922775,15221230,15525654,15836166,16152889,16475946,16805464,17141572,17484403,17834091,18190773,18554587,18925679,19304193,19690275,20084081,20485761,20895474,21313383,21739651,22174444,22617932,23070290,23531695,24002329,24482374,24972021,25471459,25980888,26500505,27030513,27571121,28122541,28684990,29258689,29843861,30440736,31049550,31670540,32303950,32950028,33609027,34281207,34966831,35666167,36379490,37107077,37849216,38606199,39378323,40165889,40969204,41788587,42624358,43476846,44346384,45233310,46137977,47060734,48001949,48961986,49941222,50940047,51958847,52998023,54057983,55139142,56241925,57366761,58514094,59684376,60878062,62095624,63337535,64604285,65896368,67214294,68558580,69929746,71328337,72754901,74210000,75694198,77208082,78752240,80327283,81933824,83572498,85243944,86948821,88687798,90461554,92270781,94116197,95998522,97918488,99876855,101874391,103911877,105990115,108109912,110272108,112477552,114727100,117021643,119362070,121749311,124184295,126667979,129201333,131785360,134421064,137109474,139851658,142648694,145501659,148411694,151379927,154407515,157495667,160645574,163858476,167135646,170478357,173887915,177365675,180912990,184531248,188221869,191986305,195826026,199742548,203737391,207812135,211968366,216207731,220531878,224942505,229441357,234030182,238710775,243484978,248354670,253321760,258388190,263555950
//Job - 3rd Jobs, Baby 3rds, Expanded Super Novice
60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112,1,106000,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,,134178935,135520724,136875925,138244677,139627117,141023389,142433624,143857966,145296546,146749508,148216997,149699160,151196158,152708120,154235207,155777550,157335326,158908679,160497757,162102736,163723761,165360996,167014600,168684736,170371581,172075298,173796047,175534006,177289338,179062235,180852860,182661390,184488004,186332878,188196207,190078168,191978955,193898747,195837737,197796119,199774071,201771802,203789524,205827413,207885680,209964534,212064171,214184815,216326662,218489920,220674817,222881562,225110381,227361485,229635100,231931452,234250768,236593273,238959210,241348805,243762285,246199908,248661900,251148520,253659994,256196597,258758555,261346143,263959602,266599193,269265189,271957833,274677399,277424179,280198431,283000413,285830417,288688733,291575620,294491369,297436270,300410615,303414727,306448864,309513349,312608474,315734561,318891902,322080819,325301637,328554645,331840199,335158590,338510174,341895274,345314213,348767346,352255030,355777587,359335372,362928710,366557987,370223560,373925783,377665046,381441702,385256109,389108653,392999722,396929705,400898989,404907961,408957043,413046622,417177086,421348854,425562348,429817955,434116127,438457285,442841848,447270270,451742970,456260401,460823015,465431233,470085539,474786386,479534259,484329610,489172891,494064620,499005249,503995295,509035244,514125579,519266818,524459479,529704077,535001099,540351093,545754609,551212165,556724276,562291525,567914429,573593570,579329530,585122825,590974038,596883750,602852608,608881128,614969957,621119677,627330870,633604182,639940195,646339620,652803038,659331031,665924311,672583524,679309381,686102463,692963482,699893083,706891979,713960880,721100498,728311477,735594595,742950563,750380090,757883889,765462735,773117339,780848477,788656925,796543457,804508915,812554009,820679516,828886275,837175126,845546847,854002276,862542318,871167751,879879413,888678209,897564981,906540633,915606005
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index d1f416b08..514337801 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -70,7 +70,7 @@ item_db: (
Taekwon: true/false (boolean, defaults to false)
Star_Gladiator: true/false (boolean, defaults to false)
Soul_Linker: true/false (boolean, defaults to false)
- Gunslinger: true/false (boolean, defaults to false)
+ Gunslinger: true/false (boolean, defaults to false)
Ninja: true/false (boolean, defaults to false)
Gangsi: true/false (boolean, defaults to false)
Death_Knight: true/false (boolean, defaults to false)
@@ -93,6 +93,7 @@ item_db: (
BuyingStore: true/false (boolean, defaults to false)
Delay: Delay to use item (int, defaults to 0)
KeepAfterUse: true/false (boolean, defaults to false)
+ DropAnnounce: true/false (boolean, defaults to false)
Trade: { (defaults to no restrictions)
override: GroupID (int, defaults to 100)
nodrop: true/false (boolean, defaults to false)
@@ -80968,12 +80969,14 @@ item_db: (
AegisName: "Gold_Key77"
Name: "Episode 13.1 Poporing Key"
Weight: 10
+ DropAnnounce: true
},
{
Id: 7783
AegisName: "Silver_Key77"
Name: "Episode 13.2 Poring Key"
Weight: 10
+ DropAnnounce: true
},
{
Id: 7784
@@ -87601,8 +87604,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_STR,1800000,10;
- percentheal 20,10;
+ sc_start(SC_FOOD_STR_CASH, 1800000, 10);
+ percentheal(20, 10);
">
},
{
@@ -87622,8 +87625,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_AGI,1800000,10;
- percentheal 15,5;
+ sc_start(SC_FOOD_AGI_CASH, 1800000, 10);
+ percentheal(15, 5);
">
},
{
@@ -87643,8 +87646,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_INT,1800000,10;
- percentheal 10,20;
+ sc_start(SC_FOOD_INT_CASH, 1800000, 10);
+ percentheal(10, 20);
">
},
{
@@ -87664,8 +87667,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_DEX,1800000,10;
- percentheal 10,10;
+ sc_start(SC_FOOD_DEX_CASH, 1800000, 10);
+ percentheal(10, 10);
">
},
{
@@ -87685,8 +87688,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_LUK,1800000,10;
- percentheal 14,8;
+ sc_start(SC_FOOD_LUK_CASH, 1800000, 10);
+ percentheal(14, 8);
">
},
{
@@ -87706,8 +87709,8 @@ item_db: (
nogstorage: true
}
Script: <"
- sc_start SC_FOOD_VIT,1800000,10;
- percentheal 25,0;
+ sc_start(SC_FOOD_VIT_CASH, 1800000, 10);
+ percentheal(25, 0);
">
},
{
diff --git a/doc/constants.md b/doc/constants.md
index 22521a60c..0ecb527dc 100644
--- a/doc/constants.md
+++ b/doc/constants.md
@@ -1316,6 +1316,7 @@
- `SC_TUNAPARTY`: 649
- `SC_SHRIMP`: 650
- `SC_FRESHSHRIMP`: 651
+- `SC_DRESS_UP`: 652
### Emotes
@@ -3797,6 +3798,7 @@
- `MAX_CART`: 100
- `MAX_INVENTORY`: 100
- `MAX_ZENY`: 2147483647
+- `MAX_BANK_ZENY`: 2147483647
- `MAX_BG_MEMBERS`: 30
- `MAX_CHAT_USERS`: 20
- `MAX_REFINE`: 20
@@ -3827,11 +3829,12 @@
- `Option_Dragon5`: 67108864
- `Option_Hanbok`: 134217728
- `Option_Oktoberfest`: 268435456
+- `Option_Summer2`: 536870912
### status option compounds
- `Option_Dragon`: 126353408
-- `Option_Costume`: 402984960
+- `Option_Costume`: 939855872
### send_target
@@ -3945,6 +3948,35 @@
- `BL_CHAR`: 539
- `BL_ALL`: 4095
+### Player permissions
+
+- `PERM_TRADE`: 1
+- `PERM_PARTY`: 2
+- `PERM_ALL_SKILL`: 4
+- `PERM_USE_ALL_EQUIPMENT`: 8
+- `PERM_SKILL_UNCONDITIONAL`: 16
+- `PERM_JOIN_ALL_CHAT`: 32
+- `PERM_NO_CHAT_KICK`: 64
+- `PERM_HIDE_SESSION`: 128
+- `PERM_RECEIVE_HACK_INFO`: 512
+- `PERM_WARP_ANYWHERE`: 1024
+- `PERM_VIEW_HPMETER`: 2048
+- `PERM_VIEW_EQUIPMENT`: 4096
+- `PERM_USE_CHECK`: 8192
+- `PERM_USE_CHANGEMAPTYPE`: 16384
+- `PERM_USE_ALL_COMMANDS`: 32768
+- `PERM_RECEIVE_REQUESTS`: 65536
+- `PERM_SHOW_BOSS`: 131072
+- `PERM_DISABLE_PVM`: 262144
+- `PERM_DISABLE_PVP`: 524288
+- `PERM_DISABLE_CMD_DEAD`: 1048576
+- `PERM_HCHSYS_ADMIN`: 2097152
+- `PERM_TRADE_BOUND`: 4194304
+- `PERM_DISABLE_PICK_UP`: 8388608
+- `PERM_DISABLE_STORE`: 16777216
+- `PERM_DISABLE_EXP`: 33554432
+- `PERM_DISABLE_SKILL_USAGE`: 67108864
+
### Renewal
- `RENEWAL`: 1
@@ -3974,6 +4006,7 @@
- `SkillPoint`: [param]
- `Class`: [param]
- `Zeny`: [param]
+- `BankVault`: [param]
- `Sex`: [param]
- `NextBaseExp`: [param]
- `NextJobExp`: [param]
diff --git a/doc/item_db.txt b/doc/item_db.txt
index 6ffc8a52b..86e397636 100644
--- a/doc/item_db.txt
+++ b/doc/item_db.txt
@@ -71,6 +71,7 @@ item_db: (
BuyingStore: true/false (boolean, defaults to false)
Delay: Delay to use item (int, defaults to 0)
KeepAfterUse: true/false (boolean, defaults to false)
+ DropAnnounce: true/false (boolean, defaults to false)
Trade: { (defaults to no restrictions)
override: GroupID (int, defaults to 100)
nodrop: true/false (boolean, defaults to false)
@@ -290,6 +291,8 @@ ForceSerial: Whether the item will be given new unique id or not. When the item
BuyingStore: Whether the item can be sold via buyingstore, one must also edit
data\buyingstoreitemlist.txt for client to accept item.
+DropAnnounce: Enables global announcement of the selected item when dropped by monster.
+
Delay: Delay for an item to be used again. Value is in milliseconds.
There is a max concurrent number of entries modifiable in
src/map/itemdb.h as MAX_ITEMDELAYS.
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index b68ac5c64..0ba350ad1 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -540,7 +540,8 @@ allows you to replace lots of numbered arguments for many commands with
easier to read text. The special variables most commonly used are all
permanent character-based variables:
-Zeny - Amount of Zeny.
+Zeny - Amount of Zeny in the inventory.
+BankVault - Amount of Zeny in the bank.
Hp - Current amount of hit points.
MaxHp - Maximum amount of hit points.
Sp - Current spell points.
@@ -707,7 +708,8 @@ MAX_STORAGE - Maximum storage items
MAX_GUILD_STORAGE - Maximum guild storage items
MAX_CART - Maximum cart items
MAX_INVENTORY - Maximum inventory items
-MAX_ZENY - Maximum Zeny
+MAX_ZENY - Maximum Zeny in the inventory
+MAX_BANK_ZENY - Maximum Zeny in the bank
MAX_BG_MEMBERS - Maximum BattleGround members
MAX_CHAT_USERS - Maximum Chat users
MAX_REFINE - Maximum Refine level
@@ -4290,8 +4292,9 @@ if <color> field is left out.
*showscript("<message>"{, <GID>})
-Makes attached player or GID says a message like shouting a skill name, the message
-will be seen to everyone around but not in chat window.
+Makes the attached player or GID, display a message similiar to a chat,
+this will be seen by everyone near the invoking character but will not
+be displayed in the chat window.
---------------------------------------
@@ -7447,6 +7450,27 @@ no RID is attached), false will be returned. In case of success, true is
returned.
---------------------------------------
+
+*addchannelhandler("<#channel>", "<NPC::OnEvent>")
+
+This command will trigger the specified event every time a player
+talks in the specified channel, with said player as attached rid.
+It assigns the message to @channelmes$
+
+OnChannelMessage:
+ channelmes("#chan", "Echo: " + @channelmes$);
+ end;
+
+OnInit:
+ addchannelhandler("#chan", "NPC::OnChannelMessage");
+
+---------------------------------------
+
+*removechannelhandler("<#channel>", "<NPC::OnEvent>")
+
+Removes a channel handler added by addchannelhandler()
+
+---------------------------------------
*rand(<number>{, <number>})
This function returns a number ...
@@ -7763,6 +7787,68 @@ scripts-atcommands this way.
---------------------------------------
+*can_use_command("<command>"{, <account id>})
+
+Checks if the attached or specified player can use the specified
+atcommand and returns true or false accordingly.
+
+---------------------------------------
+
+*has_permission(<permission>{, <account id>})
+*has_permission("<permission>"{, <account id>})
+
+Check if the attached or specified player has the specified permission
+and returns true or false accordingly. See doc/permissions.txt for
+details about permissions.
+
+Valid <permission> are:
+
+ PERM_TRADE
+ PERM_PARTY
+ PERM_ALL_SKILL
+ PERM_USE_ALL_EQUIPMENT
+ PERM_SKILL_UNCONDITIONAL
+ PERM_JOIN_ALL_CHAT
+ PERM_NO_CHAT_KICK
+ PERM_HIDE_SESSION
+ PERM_WHO_DISPLAY_AID
+ PERM_RECEIVE_HACK_INFO
+ PERM_WARP_ANYWHERE
+ PERM_VIEW_HPMETER
+ PERM_VIEW_EQUIPMENT
+ PERM_USE_CHECK
+ PERM_USE_CHANGEMAPTYPE
+ PERM_USE_ALL_COMMANDS
+ PERM_RECEIVE_REQUESTS
+ PERM_SHOW_BOSS
+ PERM_DISABLE_PVM
+ PERM_DISABLE_PVP
+ PERM_DISABLE_CMD_DEAD
+ PERM_HCHSYS_ADMIN
+ PERM_TRADE_BOUND
+ PERM_DISABLE_PICK_UP
+ PERM_DISABLE_STORE
+ PERM_DISABLE_EXP
+ PERM_DISABLE_SKILL_USAGE
+
+Example:
+
+ if (has_permission(PERM_WARP_ANYWHERE)) {
+ //do something
+ }
+
+It is also possible to pass a string for plugin permissions:
+
+ if (has_permission("show_version")) {
+ //do something
+ }
+
+** Passing a string is slower than passing a constant because
+ the engine has to loop through the array to find the permission.
+ In most cases you should use the PERM_ constants.
+
+---------------------------------------
+
*unitskilluseid(<GID>, <skill id>, <skill lvl>{, <target id>})
*unitskilluseid(<GID>, "<skill name>", <skill lvl>{, <target id>})
*unitskillusepos(<GID>, <skill id>, <skill lvl>, <x>, <y>)
diff --git a/npc/quests/quests_ein.txt b/npc/quests/quests_ein.txt
index f7d702277..f5b2e14a6 100644
--- a/npc/quests/quests_ein.txt
+++ b/npc/quests/quests_ein.txt
@@ -474,20 +474,479 @@ einbech,97,167,5 script Cavitar 4_M_EINOLD,{
//== Uwe Kleine :: ein_anoz ================================
einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
+ function F_AboutEinbroch {
+ mes "[Uwe]";
+ mes "Einbroch was originally";
+ mes "built to support Einbech's";
+ mes "mining efforts. Because it's";
+ mes "small and crowded with people,";
+ mes "there's no room to build the ore refining factories over there.";
+ next;
+ mes "[Uwe]";
+ mes "Since Einbroch used to be";
+ mes "an empty lot, it was perfect";
+ mes "for building factories. That's";
+ mes "what my grandfather told me a";
+ mes "long time ago. Anyway, Einbroch quickly grew into a major city.";
+ next;
+ mes "[Uwe]";
+ mes "Now people think that this";
+ mes "city was never planned to be";
+ mes "just an extension of Einbech.";
+ mes "See that rampart over there?";
+ mes "It doesn't connect to Einbech at all! No protection for them...";
+ next;
+ mes "[Uwe]";
+ mes "It's like the government";
+ mes "lost all interest in Einbech.";
+ mes "Even the miners there have";
+ mes "been moving here to work in ";
+ mes "the factories. But more people hasn't made this city more lively.";
+ next;
+ mes "[Uwe]";
+ mes "Einbroch may look modern";
+ mes "and exciting now, but soon";
+ mes "you'll see that there's no sign";
+ mes "of warmth or life. So... Just don't live here in your old age.";
+ next;
+ .@choice2$ = "I won't. Thanks for the advice.";
+ if (BaseClass == Job_Blacksmith)
+ .@choice2$ = "But I like the city life~";
+ switch (select("Then why are you here?", .@choice2$)) {
+ case 1:
+ if (BaseClass == Job_Blacksmith) {
+ mes "[Uwe]";
+ mes "Well, sugar honey,";
+ mes "I've been waiting for";
+ mes "someone. But... It looks";
+ mes "like that person won't be";
+ mes "coming back anyway.";
+ next;
+ mes "[Uwe]";
+ mes "Oooh, but let's not talk";
+ mes "about that. Next time you";
+ mes "drop by, we'll talk about";
+ mes "something more fun, 'kay?";
+ close;
+ }
+ mes "[Uwe]";
+ mes "Well, I have some";
+ mes "precious memories of";
+ mes "this place. Once, there was";
+ mes "a man who lived here who";
+ mes "was just like a father to me.";
+ next;
+ mes "[Uwe]";
+ mes "Oh, but I'm sure that";
+ mes "you don't want to hear";
+ mes "about that. Next time you";
+ mes "drop by, we'll talk about";
+ mes "something more fun, 'kay?";
+ mes "Buhbye for now, cutie~";
+ close;
+ case 2:
+ if (BaseClass != Job_Blacksmith) {
+ mes "[Uwe]";
+ mes "Oh, that is such";
+ mes "a good decision,";
+ mes "sugar honey! Oh, you";
+ mes "cutie adventurers are";
+ mes "so precious, so lovable.";
+ mes "^333333*Tee hee hee~*^000000";
+ next;
+ mes "[Uwe]";
+ mes "Well, that was";
+ mes "a fun talk. Come";
+ mes "back and visit, 'kay?";
+ mes "I'll miss you until";
+ mes "the next time~";
+ close;
+ }
+ mes "[Uwe]";
+ mes "Big cities can be nice,";
+ mes "but you never get to enjoy";
+ mes "the sensation of stepping";
+ mes "barefoot through the grass,";
+ mes "or the magnificent sight of";
+ mes "the shining stars at night.";
+ next;
+ mes "[Uwe]";
+ mes "And the people who live";
+ mes "in the cities can be so";
+ mes "uptight! I've known more";
+ mes "than a few who look down";
+ mes "on people from smaller towns.";
+ next;
+ mes "[Uwe]";
+ mes "It's sad to see some";
+ mes "people will always be";
+ mes "that ignorant. I... I just";
+ mes "can't believe those people";
+ mes "can be sooo close minded!";
+ next;
+ mes "[Uwe]";
+ mes "Oh...!";
+ mes "I'm sorry, I guess";
+ mes "I went a little overboard.";
+ mes "^666666*Titter*^000000 Next time you drop";
+ mes "by, we'll talk about something";
+ mes "more fun, 'kay? Buhbye~";
+ close;
+ }
+ }
+
+ function F_ForgeWeapon {
+ mes "[Uwe]";
+ mes "Well...";
+ mes "I actually just";
+ mes "do smithing work";
+ mes "to create my own";
+ mes "cooking tools.";
+ next;
+ mes "[Uwe]";
+ mes "Oh, I understand";
+ mes "that somebody needs";
+ mes "to fight the monsters,";
+ mes "but I'm the wrong person";
+ mes "to ask for forging weapons.";
+ mes "I... am a strict pacifist~";
+ next;
+ mes "[Uwe]";
+ mes "Just go look";
+ mes "around for a little";
+ mes "bit, I'm sure you'll";
+ mes "find a Blacksmith";
+ mes "who's willing to forge";
+ mes "you a good weapon~";
+ close;
+ }
+
+ function F_Cancel {
+ mes "[Uwe]";
+ mes "Oh...?";
+ mes "Well, feel";
+ mes "free to visit";
+ mes "me whenever";
+ mes "you want, 'kay?";
+ close;
+ }
+
+ function F_RandCloseMsg {
+ switch (rand(1, 3)) {
+ case 1:
+ mes "...Ho ho~";
+ close;
+ case 2:
+ mes "...*Tee Hee~*";
+ close;
+ case 3:
+ mes "...Behbie~";
+ close;
+ }
+ }
+
+ function F_Ingredients {
+ mes "[Uwe]";
+ mes "Now for beginners,";
+ mes "learning to select";
+ mes "and use ingredients";
+ mes "is one of the most";
+ mes "important fundamentals.";
+ next;
+ mes "[Uwe]";
+ mes "Cooking is like forging";
+ mes "since specific ingredients";
+ mes "are needed to make specialty";
+ mes "items or dishes. You can't just";
+ mes "skip them if you really need";
+ mes "them, right? Right!";
+ next;
+ mes "[Uwe]";
+ mes "Once you make up your";
+ mes "mind to do something,";
+ mes "focus on finishing it, 'kay?";
+ mes "Never cut corners and always";
+ mes "dedicate yourself to make the";
+ mes "very best finished product~";
+ if (ein_cook == 7 && BaseClass == Job_Blacksmith)
+ ein_cook += 10;
+ next;
+ mes "[Uwe]";
+ mes "Well, that was";
+ mes "a fun talk. Come";
+ mes "back and visit, 'kay?";
+ mes "I'll miss you until";
+ mes "the next time~";
+ F_RandCloseMsg();
+ }
+
+ function F_Cooking {
+ mes "[Uwe]";
+ mes "Mm...?";
+ mes "Did you just";
+ mes "say that you";
+ mes "want to learn";
+ mes "the art of cooking?";
+ next;
+ mes "[Uwe]";
+ mes "I'm sorry, but I can't";
+ mes "really give culinary";
+ mes "lessons. But I will";
+ mes "give good advice for";
+ mes "hopeful beginners.";
+ next;
+ mes "[Uwe]";
+ mes "Now...";
+ mes "For your tuition";
+ mes "I'll need-- Gosh,";
+ mes "there's just so many";
+ mes "things. Get some paper,";
+ mes "and a pen for this list...";
+ next;
+ ein_cook += 100;
+ mes "[Uwe]";
+ mes "Just kidding!";
+ mes "^333333*Titter~*^000000 I don't need";
+ mes "much to make some";
+ mes "cooking utensils. Bring";
+ mes "6 ^0000FFLarge Jellopy^000000. That's it!";
+ next;
+ mes "[Uwe]";
+ mes "In return, I will give you";
+ mes "1 Coal and some useful";
+ mes "cooking advice for novices.";
+ mes "I give this advice for free to";
+ mes "my smithing colleages, though...";
+ next;
+ mes "[Uwe]";
+ mes "Why ^EEA9B8don't^000000 you";
+ mes "become a Blacksmith?";
+ mes "I'm much more confident";
+ mes "in that field. ^333333*Tee hee~*^000000";
+ next;
+ mes "[Uwe]";
+ mes "Well, I'll be";
+ mes "waiting right";
+ mes "here until you";
+ mes "come back.";
+ F_RandCloseMsg();
+ }
+
+ function F_Heart {
+ mes "[Uwe]";
+ mes "Ah, heart. Just like forging,";
+ mes "you need passion and desire";
+ mes "to create something special.";
+ mes "Every smith and cook knows that";
+ mes "you can do anything if you have";
+ mes "the will and the commitment.";
+ next;
+ mes "[Uwe]";
+ mes "Well, that's all";
+ mes "I really have to";
+ mes "say about that. But";
+ mes "come back and chat";
+ mes "whenever you please.";
+ F_RandCloseMsg();
+ }
+
+ function F_Skills {
+ mes "[Uwe]";
+ mes "When you're beginning to learn";
+ mes "skills, you can't let yourself be discouraged! Practice makes";
+ mes "perfect, you know? But never";
+ mes "use your lack of skills as an";
+ mes "excuse if you happen to fail...";
+ next;
+ mes "[Uwe]";
+ mes "Effort is also an essential";
+ mes "in forging and cooking! Now,";
+ mes "on the other hand, if you put";
+ mes "in all the effort but didn't learn any of the skills, you'll still get nowhere fast, right? Right!";
+ next;
+ mes "[Uwe]";
+ mes "The key is to always";
+ mes "give 100% effort and work";
+ mes "on improving your skills.";
+ mes "Before you know it, you'll";
+ mes "be a respected master!";
+ next;
+ mes "[Uwe]";
+ mes "Well, that was";
+ mes "a fun talk. Come";
+ mes "back and visit, 'kay?";
+ mes "I'll miss you until";
+ mes "the next time~";
+ F_RandCloseMsg();
+ }
+
+ function F_Tools {
+ mes "[Uwe]";
+ mes "Cooking is a little";
+ mes "easier if you have";
+ mes "nicer tools to use,";
+ mes "but that's it. Tools by";
+ mes "themselves can't make";
+ mes "just anybody a master.";
+ next;
+ mes "[Uwe]";
+ mes "In the end, the best";
+ mes "tools are the ones you're";
+ mes "most comfortable with using.";
+ mes "In fact, I still use the old knife I used back when I was just";
+ mes "a little novice chef~";
+ next;
+ mes "[Uwe]";
+ mes "Oh, while we're on";
+ mes "the subject of tools,";
+ mes "I just received some";
+ mes "new hammers today.";
+ mes "Would you like a couple?";
+ next;
+ if (checkweight(Spawn, 50) == 0) {
+ mes "[Uwe]";
+ mes "Mmmm...?";
+ mes "You're holding too many";
+ mes "things. I can't give you any";
+ mes "hammers if you don't have";
+ mes "room. Hurry, put your extra";
+ mes "stuff in your Kafra Storage~";
+ close;
+ }
+ ein_cook += 10;
+ getitem Golden_Hammer, 1;
+ getitem Iron_Hammer, 1;
+ next;
+ mes "[Uwe]";
+ mes "Well, I hope";
+ mes "you like them~";
+ F_RandCloseMsg();
+ }
+
+ function F_ToolsWithoutReward {
+ mes "[Uwe]";
+ mes "Cooking is a little";
+ mes "easier if you have";
+ mes "nicer tools to use,";
+ mes "but that's it. Tools by";
+ mes "themselves can't make";
+ mes "just anybody a master.";
+ next;
+ mes "[Uwe]";
+ mes "In the end, the best";
+ mes "tools are the ones you're";
+ mes "most comfortable with using.";
+ mes "In fact, I still use the old knife I used back when I was just";
+ mes "a little novice chef~";
+ next;
+ mes "[Uwe]";
+ mes "Well, that was";
+ mes "a fun talk. Come";
+ mes "back and visit, 'kay?";
+ mes "I'll miss you until";
+ mes "the next time~";
+ F_RandCloseMsg();
+ }
+
+ function F_OverWeight {
+ mes "[Uwe]";
+ mes "Oh, I was going to give";
+ mes "you a little something,";
+ mes "but you've carrying too";
+ mes "many things. Why don't";
+ mes "you put some of it away";
+ mes "in your Kafra Storage?";
+ close;
+ }
+
+ function F_LargeJellopyForCoal {
+ if (countitem(Large_Jellopy) > 5) {
+ if (checkweight(Spawn, 199) == 0)
+ F_OverWeight();
+ mes "[Uwe]";
+ mes "Thank you ^EEA9B8so^000000 much!";
+ mes "Here's the Coal I promised~";
+ mes "Oh, and take these Mini Furnaces. They were just lying around, so you know, I thought, well, why don't you take them? *Tee hee hee~*";
+ delitem Large_Jellopy, 6;
+ ein_cook = 219;
+ getitem Coal, 1;
+ getitem Portable_Furnace, 10;
+ next;
+ mes "[Uwe]";
+ mes "I hope you enjoy!";
+ mes "Personally, I think the";
+ mes "best part of smithing";
+ mes "is standing over the flaming";
+ mes "heat and getting all ^EEA9B8hot and";
+ mes "sweaty^000000. Ooh, how exciting~!";
+ close;
+ } else if (countitem(Large_Jellopy) > 0) {
+ mes "[Uwe]";
+ mes "Ooh, you're missing";
+ mes "some. I guess you can";
+ mes "still give them to me, but";
+ mes "you'd get less of a reward";
+ if (Sex == SEX_MALE) {
+ mes "...you ^EEA9B8naughty boy^000000.";
+ } else {
+ mes "...you ^EEA9B8naughty girl^000000.";
+ }
+ next;
+ .@choice = select("Give him all.", "Cancel.");
+ if (.@choice == 1) {
+ mes "[Uwe]";
+ mes "Just kidding~";
+ mes "Don't be so nervous, I don't really need those anymore. But since I know you're hard working, I'll throw in a little something extra...";
+ next;
+ mes "[Uwe]";
+ mesf("I usually give you cutie %ss 10 Mini Furnaces, but you can have ^EEA9B811^000000." /* TODO: HULD Plural Table for jobname() */
+ "There's the little something extra I was talking about.", jobname(Class));
+ } else {
+ mes "[Uwe]";
+ mes "Well... Then... Anyway,";
+ mes "Congratulation to becoming";
+ mesf("a %s!!", jobname(Class));
+ mes "This is my present for it.";
+ if (Sex == SEX_MALE) {
+ mes "...you ^EEA9B8naughty boy^000000.";
+ } else {
+ mes "...you ^EEA9B8naughty girl^000000.";
+ }
+ }
+ if (checkweight(Knife, 1) == 0 ||
+ checkweight(Spawn, (.@choice == 1 ? 220 : 200)) == 0)
+ F_OverWeight();
+ ein_cook = 219;
+ getitem Portable_Furnace, (.@choice == 1 ? 11 : 10);
+ next;
+ mes "[Uwe]";
+ mes "I know it's not very extravagant, but these will come in handy next time you're smithing. So make the best use of them, 'kay?";
+ close;
+ } else {
+ mes "[Uwe]";
+ mes "^666666You didn't bring";
+ mes "any Large Jellopy...?^000000.";
+ ein_cook = 219;
+ next;
+ mes "[Uwe]";
+ mes "It's fine! It's not like I feel ^EEA9B8betrayed^000000 or anything, but I don't need them anymore! Since we're both in the business of smithing, I just hope that you remember to follow through on your favors, 'kay? Buhbye~";
+ close;
+ }
+ }
+
EinUwe = 0;
if (BaseClass == Job_Blacksmith) {
if (ein_cook > 999) {
- .@ccc = ein_cook-1000;
- if (.@ccc > 199) {
+ if (ein_cook > 1199) {
mes "[Uwe]";
mes "Oh hello hello~";
mes "It's been a long";
mes "time since we've talked,";
mes "you cutie adventurer~";
next;
- switch(select("So... You're a chef.", "Yes, I tried my best.")) {
+ switch (select("So... You're a chef.", "Yes, I tried my best.")) {
case 1:
- mes "["+ strcharinfo(PC_NAME) +"]";
+ mesf("[%s]", strcharinfo(PC_NAME));
mes "So...";
mes "You're a chef.";
next;
@@ -505,18 +964,10 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
next;
break;
}
- if (checkweight(Spawn,200) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
+ if (checkweight(Spawn, 200) == 0)
+ F_OverWeight();
ein_cook = 219;
- getitem Portable_Furnace,10;
+ getitem Portable_Furnace, 10;
mes "[Uwe]";
mes "I had these lying";
mes "around, so why don't";
@@ -529,13 +980,8 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "Alright then~";
mes "Hope you enjoy";
mes "your Mini Furances";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
- }
- else if (.@ccc > 99) {
+ F_RandCloseMsg();
+ } else if (ein_cook > 1099) { //6 Large Jellopy for Coal Part
mes "[Uwe]";
mes "Oh hello hello~";
mes "It's been a long";
@@ -550,155 +996,12 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "Did you already forget";
mes "the 6 Large Jellopy?";
next;
- switch(select("There you go.", "I want to quit.", "Can I do it later?")) {
+ switch (select("There you go.", "I want to quit.", "Can I do it later?")) {
case 1:
- if (countitem(Large_Jellopy) > 5) {
- if (checkweight(Spawn,199) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
- mes "[Uwe]";
- mes "Thank you ^EEA9B8so^000000 much!";
- mes "Here's the Coal I promised~";
- mes "Oh, and take these Mini Furnaces. They were just lying around, so you know, I thought, well, why don't you take them? *Tee hee hee~*";
- delitem Large_Jellopy,6;
- ein_cook = 219;
- getitem Coal,1;
- getitem Portable_Furnace,10;
- next;
- mes "[Uwe]";
- mes "I hope you enjoy!";
- mes "Personally, I think the";
- mes "best part of smithing";
- mes "is standing over the flaming";
- mes "heat and getting all ^EEA9B8hot and";
- mes "sweaty^000000. Ooh, how exciting~!";
- close;
- }
- else if (countitem(Large_Jellopy) > 0) {
- mes "[Uwe]";
- mes "Ooh, you're missing";
- mes "some. I guess you can";
- mes "still give them to me, but";
- mes "you'd get less of a reward";
- if (Sex == SEX_MALE) {
- mes "...you ^EEA9B8naughty boy^000000.";
- }
- else {
- mes "...you ^EEA9B8naughty girl^000000.";
- }
- switch(select("Give him all.", "Cancel.")) {
- case 1:
- if (checkweight(Knife,1) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
- mes "[Uwe]";
- mes "Just kidding~";
- mes "Don't be so nervous, I don't really need those anymore. But since I know you're hard working, I'll throw in a little something extra...";
- next;
- if (checkweight(Spawn,220) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
- mes "[Uwe]";
- if (Class == Job_Whitesmith) {
- mes "I usually give you cutie MasterSmiths 10 Mini Furnaces, but you can have ^EEA9B811^000000. There's the little something extra I was talking about.";
- }
- else {
- mes "I usually give you cutie Blacksmiths 10 Mini Furnaces, but you can have ^EEA9B811^000000. There's the little something extra I was talking about.";
- }
- ein_cook = 219;
- getitem Portable_Furnace,11;
- next;
- mes "[Uwe]";
- mes "I know it's not very extravagant, but these will come in handy next time you're smithing. So make the best use of them, 'kay?";
- close;
- case 2:
- if (checkweight(Knife,1) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
- mes "[Uwe]";
- mes "Well... Then... Anyway,";
- mes "Congratulation to became";
- if (Class == Job_Whitesmith) {
- mes "a Master Smith!!";
- }
- else {
- mes "a Black Smith!!";
- }
- mes "This is my present for it.";
- if (Sex == SEX_MALE) {
- mes "...you ^EEA9B8naughty boy^000000.";
- }
- else {
- mes "...you ^EEA9B8naughty girl^000000.";
- }
- break;
- }
- if (checkweight(Spawn,100) == 0) {
- next;
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
- ein_cook = 219;
- getitem Portable_Furnace,5;
- next;
- mes "[Uwe]";
- mes "I know it's not very extravagant, but these will come in handy next time you're smithing. So make the best use of them, 'kay?";
- close;
- }
- else {
- mes "[Uwe]";
- mes "^666666You didn't bring";
- mes "any Large Jellopy...?^000000.";
- ein_cook = 219;
- next;
- mes "[Uwe]";
- mes "It's fine! It's not like I feel ^EEA9B8betrayed^000000 or anything, but I don't need them anymore! Since we're both in the business of smithing, I just hope that you remember to follow through on your favors, 'kay? Buhbye~";
- close;
- }
+ F_LargeJellopyForCoal();
case 2:
- if (checkweight(Spawn,200) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
+ if (checkweight(Spawn, 200) == 0)
+ F_OverWeight();
mes "[Uwe]";
mes "Quit...?";
mes "Oh well, at least you're honest. But let me give you a little something, since we're both fellow smiths.";
@@ -710,12 +1013,11 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "been very, very bad.";
if (Sex == SEX_MALE) {
mes "...You ^EEA9B8naughty boy^000000.";
- }
- else {
+ } else {
mes "...You ^EEA9B8naughty girl^000000.";
}
ein_cook = 219;
- getitem Portable_Furnace,10;
+ getitem Portable_Furnace, 10;
next;
mes "[Uwe]";
mes "I know it's not very extravagant, but these will come in handy next time you're smithing. So make the best use of them, 'kay?";
@@ -724,144 +1026,26 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "[Uwe]";
mes "Oooh, you came back later than I thought, so I don't need really need them anymore. Then again, just holding onto them doesn't sound right either...";
next;
- switch(select("Here you go~", "I want to quit.")) {
+ switch (select("Here you go~", "I want to quit.")) {
case 1:
- if (checkweight(Spawn,199) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
- if (countitem(Large_Jellopy) > 5) {
- mes "[Uwe]";
- mes "Thank you ^EEA9B8so^000000 much!";
- mes "Here's the Coal I promised~";
- mes "Oh, and take these Mini Furnaces. They were just lying around, so you know, I thought, well, why don't you take them? *Tee hee hee~*";
- delitem Large_Jellopy,6;
- ein_cook = 219;
- getitem Coal,1;
- getitem Portable_Furnace,10;
- close;
- }
- else if (countitem(Large_Jellopy) > 0) {
- mes "[Uwe]";
- mes "Ooh, you're missing";
- mes "some. I guess you can";
- mes "still give them to me, but";
- mes "you'd get less of a reward";
- if (Sex == SEX_MALE) {
- mes "...You ^EEA9B8naughty boy^000000.";
- }
- else {
- mes "...You ^EEA9B8naughty girl^000000.";
- }
- switch(select("Give them all.", "Cancel.")) {
- case 1:
- if (checkweight(Spawn,220) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
- mes "[Uwe]";
- mes "Just kidding~";
- mes "Don't be so nervous, I don't really need those anymore. But since I know you're hard working, I'll throw in a little something extra...";
- next;
- mes "[Uwe]";
- if (Class == Job_Whitesmith) {
- mes "I usually give you cutie MasterSmiths 10 Mini Furnaces, but you can have ^EEA9B811^000000. There's the little something extra I was talking about.";
- }
- else {
- mes "I usually give you cutie Blacksmiths 10 Mini Furnaces, but you can have ^EEA9B811^000000. There's the little something extra I was talking about.";
- }
- ein_cook = 219;
- getitem Portable_Furnace,11;
- next;
- mes "[Uwe]";
- mes "I know it's not very extravagant, but these will come in handy next time you're smithing. So make the best use of them, 'kay?";
- close;
- case 2:
- if (checkweight(Spawn,200) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
- mes "[Uwe]";
- mes "Okay.";
- mes "Anyway~!";
- mes "When you do get all";
- mes "that Large Jellopy,";
- mes "just come back to me.";
- if (Sex == SEX_MALE) {
- mes "...you ^EEA9B8naughty boy^000000.";
- }
- else {
- mes "...you ^EEA9B8naughty girl^000000.";
- }
- ein_cook = 219;
- getitem Portable_Furnace,10;
- next;
- mes "[Uwe]";
- mes "This Portable Furnace is not expensive";
- mes "but very important item for smiths, right?";
- mes "Use it!";
- mes "And visit me someday again. Huhuhu..";
- close;
- }
- }
- else {
- mes "[Uwe]";
- mes "^666666You didn't bring";
- mes "any Large Jellopy...?^000000.";
- ein_cook = 219;
- next;
- mes "[Uwe]";
- mes "It's fine! It's not like I feel ^EEA9B8betrayed^000000 or anything, but I don't need them anymore! Since we're both in the business of smithing, I just hope that you remember to follow through on your favors, 'kay? Buhbye~";
- close;
- }
+ F_LargeJellopyForCoal();
case 2:
- if (checkweight(Spawn,200) == 0) {
- mes "[Uwe]";
- mes "Oh, I was going to give";
- mes "you a little something,";
- mes "but you've carrying too";
- mes "many things. Why don't";
- mes "you put some of it away";
- mes "in your Kafra Storage?";
- close;
- }
+ if (checkweight(Spawn, 200) == 0)
+ F_OverWeight();
mes "[Uwe]";
mes "Well... Then... Anyway,";
- mes "Congratulation to became";
- if (Class == Job_Whitesmith) {
- mes "a Master Smith!!";
- mes "This is my present for it. Huhuhu.";
- }
- else {
- mes "a Black Smith!!";
+ mes "Congratulation to becoming";
+ mesf("a %s!!", jobname(Class));
mes "This is my present for it. Huhuhu.";
+ if (Class != Job_Whitesmith) {
if (Sex == SEX_MALE) {
mes "...You ^EEA9B8naughty boy^000000.";
- }
- else {
+ } else {
mes "...You ^EEA9B8naughty girl^000000.";
}
}
ein_cook = 219;
- getitem Portable_Furnace,10;
+ getitem Portable_Furnace, 10;
next;
mes "[Uwe]";
mes "I know it's not very extravagant, but these will come in handy next time you're smithing. So make the best use of them, 'kay?";
@@ -875,7 +1059,7 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "Cooking is such a joy~!";
mes "The scents, the flavors, the sensation of sheer ^EEA9B8satiation^000000...";
next;
- switch(select("Um, isn't this a forge?", "Ignore him.")) {
+ switch (select("Um, isn't this a forge?", "Ignore him.")) {
case 1:
mes "[Uwe]";
mes "Is this a forge?";
@@ -898,12 +1082,11 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "important factor in cooking,";
if (Sex == SEX_MALE) {
mes "you ^EEA9B8naughty little man^000000?";
- }
- else {
+ } else {
mes "you ^EEA9B8naughty, naughty girl^000000?";
}
next;
- switch(select("Heart.", "Ingredients.", "Skills.", "Tools.")) {
+ switch (select("Heart.", "Ingredients.", "Skills.", "Tools.")) {
case 1:
mes "[Uwe]";
mes "...";
@@ -935,7 +1118,7 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "so please have one, 'kay?";
mes "Welcome to Einbroch, cutie~";
ein_cook = 1;
- getitem Emveretarcon,1;
+ getitem Emveretarcon, 1;
break;
case 2:
mes "[Uwe]";
@@ -959,7 +1142,7 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "Steel. Why don't you have 2 of";
mes "them as my little way of saying, ''Welcome to Einbroch, cutie~!''";
ein_cook = 3;
- getitem Iron,2;
+ getitem Iron, 2;
break;
case 3:
mes "[Uwe]";
@@ -996,7 +1179,7 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "so please have one, 'kay?";
mes "Welcome to Einbroch, cutie~";
ein_cook = 5;
- getitem Emveretarcon,1;
+ getitem Emveretarcon, 1;
break;
case 4:
mes "[Uwe]";
@@ -1025,7 +1208,7 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "my way of saying ''Welcome";
mes "to Einbroch, sugar honey~''";
ein_cook = 7;
- getitem Iron_Hammer,1;
+ getitem Iron_Hammer, 1;
break;
}
next;
@@ -1035,11 +1218,7 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "come and see me";
mes "anytime, alright?";
mes "So don't be shy";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_RandCloseMsg();
case 2:
mes "[Uwe]";
mes "Hmmm...?";
@@ -1049,438 +1228,62 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "and people to see. Ah well~";
close;
}
- }
- else if (ein_cook < 10) {
+ } else if (ein_cook < 10) {
mes "[Uwe]";
mes "Oh! Hello again,";
mes "you cutie adventurer.";
mes "So tell me, what brings";
- mes "you here, "+strcharinfo(PC_NAME)+"?";
+ mesf("you here, %s?", strcharinfo(PC_NAME));
next;
- switch(select("Ask about Cooking.", "Ask about Einbroch.", "Cancel.")) {
+ switch (select("Ask about Cooking.", "Ask about Einbroch.", "Cancel.")) {
case 1:
+ if (ein_cook % 2 == 0)
+ close; //Yes, there's really nothing defined for this in the Aegis Script
+ mes "[Uwe]";
+ mes "Ooh, cooking!";
+ mes "So what did you";
+ mes "want to ask me...?";
+ next;
if (ein_cook == 1) {
- mes "[Uwe]";
- mes "Ooh, cooking!";
- mes "So what did you";
- mes "want to ask me...?";
- next;
- switch(select("Ingredients", "Skills", "Tools", "Cancel")) {
+ switch (select("Ingredients", "Skills", "Tools", "Cancel")) {
case 1:
- mes "[Uwe]";
- mes "Now for beginners,";
- mes "learning to select";
- mes "and use ingredients";
- mes "is one of the most";
- mes "important fundamentals.";
- next;
- mes "[Uwe]";
- mes "Cooking is like forging";
- mes "since specific ingredients";
- mes "are needed to make specialty";
- mes "items or dishes. You can't just";
- mes "skip them if you really need";
- mes "them, right? Right!";
- next;
- mes "[Uwe]";
- mes "Once you make up your";
- mes "mind to do something,";
- mes "focus on finishing it, 'kay?";
- mes "Never cut corners and always";
- mes "dedicate yourself to make the";
- mes "very best finished product~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Ingredients();
case 2:
- mes "[Uwe]";
- mes "When you're beginning to learn";
- mes "skills, you can't let yourself be discouraged! Practice makes";
- mes "perfect, you know? But never";
- mes "use your lack of skills as an";
- mes "excuse if you happen to fail...";
- next;
- mes "[Uwe]";
- mes "Effort is also an essential";
- mes "in forging and cooking! Now,";
- mes "on the other hand, if you put";
- mes "in all the effort but didn't learn any of the skills, you'll still get nowhere fast, right? Right!";
- next;
- mes "[Uwe]";
- mes "The key is to always";
- mes "give 100% effort and work";
- mes "on improving your skills.";
- mes "Before you know it, you'll";
- mes "be a respected master!";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "Hohohohoho."; close;
- case 2: mes "Umhohohoho.*"; close;
- case 3: mes "Umho."; close;
- }
+ F_Skills();
case 3:
- mes "[Uwe]";
- mes "Cooking is a little";
- mes "easier if you have";
- mes "nicer tools to use,";
- mes "but that's it. Tools by";
- mes "themselves can't make";
- mes "just anybody a master.";
- next;
- mes "[Uwe]";
- mes "In the end, the best";
- mes "tools are the ones you're";
- mes "most comfortable with using.";
- mes "In fact, I still use the old knife I used back when I was just";
- mes "a little novice chef~";
- next;
- mes "[Uwe]";
- mes "Oh, while we're on";
- mes "the subject of tools,";
- mes "I just received some";
- mes "new hammers today.";
- mes "Would you like a couple?";
- next;
- if (checkweight(Spawn,50) == 0) {
- mes "[Uwe]";
- mes "Mmmm...?";
- mes "You're holding too many";
- mes "things. I can't give you any";
- mes "hammers if you don't have";
- mes "room. Hurry, put your extra";
- mes "stuff in your Kafra Storage~";
- close;
- }
- ein_cook = 11;
- getitem Golden_Hammer,1;
- getitem Iron_Hammer,1;
- mes "[Uwe]";
- mes "Well, I hope";
- mes "you like them~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Tools();
case 4:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
- }
- else if (ein_cook == 3) {
- mes "[Uwe]";
- mes "Ooh, cooking!";
- mes "So what did you";
- mes "want to ask me...?";
- next;
- switch(select("Heart", "Skills", "Tools", "Cancel.")) {
+ } else if (ein_cook == 3) {
+ switch (select("Heart", "Skills", "Tools", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Ah, heart. Just like forging,";
- mes "you need passion and desire";
- mes "to create something special.";
- mes "Every smith and cook knows that";
- mes "you can do anything if you have";
- mes "the will and the commitment.";
- next;
- mes "[Uwe]";
- mes "Well, that's all";
- mes "I really have to";
- mes "say about that. But";
- mes "come back and chat";
- mes "whenever you please.";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Heart();
case 2:
- mes "[Uwe]";
- mes "When you're beginning to learn";
- mes "skills, you can't let yourself be discouraged! Practice makes";
- mes "perfect, you know? But never";
- mes "use your lack of skills as an";
- mes "excuse if you happen to fail...";
- next;
- mes "[Uwe]";
- mes "Effort is also an essential";
- mes "in forging and cooking! Now,";
- mes "on the other hand, if you put";
- mes "in all the effort but didn't learn any of the skills, you'll still get nowhere fast, right? Right!";
- next;
- mes "[Uwe]";
- mes "The key is to always";
- mes "give 100% effort and work";
- mes "on improving your skills.";
- mes "Before you know it, you'll";
- mes "be a respected master!";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "Hohohohoho."; close;
- case 2: mes "Umhohohoho.*"; close;
- case 3: mes "Umho."; close;
- }
+ F_Skills();
case 3:
- mes "[Uwe]";
- mes "Cooking is a little";
- mes "easier if you have";
- mes "nicer tools to use,";
- mes "but that's it. Tools by";
- mes "themselves can't make";
- mes "just anybody a master.";
- next;
- mes "[Uwe]";
- mes "In the end, the best";
- mes "tools are the ones you're";
- mes "most comfortable with using.";
- mes "In fact, I still use the old knife I used back when I was just";
- mes "a little novice chef~";
- next;
- mes "[Uwe]";
- mes "Oh, while we're on";
- mes "the subject of tools,";
- mes "I just received some";
- mes "new hammers today.";
- mes "Would you like a couple?";
- next;
- if (checkweight(Spawn,50) == 0) {
- mes "[Uwe]";
- mes "Mmmm...?";
- mes "You're holding too many";
- mes "things. I can't give you any";
- mes "hammers if you don't have";
- mes "room. Hurry, put your extra";
- mes "stuff in your Kafra Storage~";
- close;
- }
- ein_cook = 13;
- getitem Golden_Hammer,1;
- getitem Iron_Hammer,1;
- mes "[Uwe]";
- mes "Well, I hope";
- mes "you like them~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Tools();
case 4:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
- }
- else if (ein_cook == 5) {
- mes "[Uwe]";
- mes "Ooh, cooking!";
- mes "So what did you";
- mes "want to ask me...?";
- next;
- switch(select("Heart", "Ingredients", "Tools", "Cancel")) {
+ } else if (ein_cook == 5) {
+ switch (select("Heart", "Ingredients", "Tools", "Cancel")) {
case 1:
- mes "[Uwe]";
- mes "Ah, heart. Just like forging,";
- mes "you need passion and desire";
- mes "to create something special.";
- mes "Every smith and cook knows that";
- mes "you can do anything if you have";
- mes "the will and the commitment.";
- next;
- mes "[Uwe]";
- mes "Well, that's all";
- mes "I really have to";
- mes "say about that. But";
- mes "come back and chat";
- mes "whenever you please.";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Heart();
case 2:
- mes "[Uwe]";
- mes "Now for beginners,";
- mes "learning to select";
- mes "and use ingredients";
- mes "is one of the most";
- mes "important fundamentals.";
- next;
- mes "[Uwe]";
- mes "Cooking is like forging";
- mes "since specific ingredients";
- mes "are needed to make specialty";
- mes "items or dishes. You can't just";
- mes "skip them if you really need";
- mes "them, right? Right!";
- next;
- mes "[Uwe]";
- mes "Once you make up your";
- mes "mind to do something,";
- mes "focus on finishing it, 'kay?";
- mes "Never cut corners and always";
- mes "dedicate yourself to make the";
- mes "very best finished product~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Ingredients();
case 3:
- mes "[Uwe]";
- mes "Cooking is a little";
- mes "easier if you have";
- mes "nicer tools to use,";
- mes "but that's it. Tools by";
- mes "themselves can't make";
- mes "just anybody a master.";
- next;
- mes "[Uwe]";
- mes "In the end, the best";
- mes "tools are the ones you're";
- mes "most comfortable with using.";
- mes "In fact, I still use the old knife I used back when I was just";
- mes "a little novice chef~";
- next;
- mes "[Uwe]";
- mes "Oh, while we're on";
- mes "the subject of tools,";
- mes "I just received some";
- mes "new hammers today.";
- mes "Would you like a couple?";
- next;
- if (checkweight(Spawn,50) == 0) {
- mes "[Uwe]";
- mes "Mmmm...?";
- mes "You're holding too many";
- mes "things. I can't give you any";
- mes "hammers if you don't have";
- mes "room. Hurry, put your extra";
- mes "stuff in your Kafra Storage~";
- close;
- }
- ein_cook = 15;
- getitem Golden_Hammer,1;
- getitem Iron_Hammer,1;
- next;
- mes "[Uwe]";
- mes "Well, I hope";
- mes "you like them~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Tools();
case 4:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
- }
- else if (ein_cook == 7) {
- mes "[Uwe]";
- mes "Ooh, cooking!";
- mes "So what did you";
- mes "want to ask me...?";
- next;
- switch(select("Heart", "Ingredients", "Skills", "Cancel.")) {
+ } else if (ein_cook == 7) {
+ switch (select("Heart", "Ingredients", "Skills", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Ah, heart. Just like forging,";
- mes "you need passion and desire";
- mes "to create something special.";
- mes "Every smith and cook knows that";
- mes "you can do anything if you have";
- mes "the will and the commitment.";
- next;
- mes "[Uwe]";
- mes "Well, that's all";
- mes "I really have to";
- mes "say about that. But";
- mes "come back and chat";
- mes "whenever you please.";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Heart();
case 2:
- mes "[Uwe]";
- mes "Now for beginners,";
- mes "learning to select";
- mes "and use ingredients";
- mes "is one of the most";
- mes "important fundamentals.";
- next;
- mes "[Uwe]";
- mes "Cooking is like forging";
- mes "since specific ingredients";
- mes "are needed to make specialty";
- mes "items or dishes. You can't just";
- mes "skip them if you really need";
- mes "them, right? Right!";
- next;
- mes "[Uwe]";
- mes "Once you make up your";
- mes "mind to do something,";
- mes "focus on finishing it, 'kay?";
- mes "Never cut corners and always";
- mes "dedicate yourself to make the";
- mes "very best finished product~";
- ein_cook = 17;
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
- case 3:
+ F_Ingredients();
+ case 3: //Yes, the part is suddenly different here in the Aegis Script as well.
mes "[Uwe]";
mes "'I couldn't do it cuz";
mes "I'm not skillful with it.'";
@@ -1518,458 +1321,56 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "[Uwe]";
mes "Well, I hope";
mes "you like them~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_RandCloseMsg();
case 4:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
- }
- else if (ein_cook == 9) {
- mes "[Uwe]";
- mes "Ooh, cooking!";
- mes "So what did you";
- mes "want to ask me...?";
- next;
- switch(select("Heart", "Ingredients", "Skills", "Tools", "Cancel.")) {
+ } else if (ein_cook == 9) {
+ switch (select("Heart", "Ingredients", "Skills", "Tools", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Ah, heart. Just like forging,";
- mes "you need passion and desire";
- mes "to create something special.";
- mes "Every smith and cook knows that";
- mes "you can do anything if you have";
- mes "the will and the commitment.";
- next;
- mes "[Uwe]";
- mes "Well, that's all";
- mes "I really have to";
- mes "say about that. But";
- mes "come back and chat";
- mes "whenever you please.";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Heart();
case 2:
- mes "[Uwe]";
- mes "Now for beginners,";
- mes "learning to select";
- mes "and use ingredients";
- mes "is one of the most";
- mes "important fundamentals.";
- next;
- mes "[Uwe]";
- mes "Cooking is like forging";
- mes "since specific ingredients";
- mes "are needed to make specialty";
- mes "items or dishes. You can't just";
- mes "skip them if you really need";
- mes "them, right? Right!";
- next;
- mes "[Uwe]";
- mes "Once you make up your";
- mes "mind to do something,";
- mes "focus on finishing it, 'kay?";
- mes "Never cut corners and always";
- mes "dedicate yourself to make the";
- mes "very best finished product~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Ingredients();
case 3:
- mes "[Uwe]";
- mes "When you're beginning to learn";
- mes "skills, you can't let yourself be discouraged! Practice makes";
- mes "perfect, you know? But never";
- mes "use your lack of skills as an";
- mes "excuse if you happen to fail...";
- next;
- mes "[Uwe]";
- mes "Effort is also an essential";
- mes "in forging and cooking! Now,";
- mes "on the other hand, if you put";
- mes "in all the effort but didn't learn any of the skills, you'll still get nowhere fast, right? Right!";
- next;
- mes "[Uwe]";
- mes "The key is to always";
- mes "give 100% effort and work";
- mes "on improving your skills.";
- mes "Before you know it, you'll";
- mes "be a respected master!";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "Hohohohoho."; close;
- case 2: mes "Umhohohoho.*"; close;
- case 3: mes "Umho."; close;
- }
+ F_Skills();
case 4:
- mes "[Uwe]";
- mes "Cooking is a little";
- mes "easier if you have";
- mes "nicer tools to use,";
- mes "but that's it. Tools by";
- mes "themselves can't make";
- mes "just anybody a master.";
- next;
- mes "[Uwe]";
- mes "In the end, the best";
- mes "tools are the ones you're";
- mes "most comfortable with using.";
- mes "In fact, I still use the old knife I used back when I was just";
- mes "a little novice chef~";
- next;
- mes "[Uwe]";
- mes "Oh, while we're on";
- mes "the subject of tools,";
- mes "I just received some";
- mes "new hammers today.";
- mes "Would you like a couple?";
- next;
- if (checkweight(Spawn,50) == 0) {
- mes "[Uwe]";
- mes "Mmmm...?";
- mes "You're holding too many";
- mes "things. I can't give you any";
- mes "hammers if you don't have";
- mes "room. Hurry, put your extra";
- mes "stuff in your Kafra Storage~";
- close;
- }
- ein_cook = 19;
- getitem Golden_Hammer,1;
- getitem Iron_Hammer,1;
- next;
- mes "[Uwe]";
- mes "Well, I hope";
- mes "you like them~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Tools();
case 5:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
}
case 2:
- mes "[Uwe]";
- mes "Einbroch was originally";
- mes "built to support Einbech's";
- mes "mining efforts. Because it's";
- mes "small and crowded with people,";
- mes "there's no room to build the ore refining factories over there.";
- next;
- mes "[Uwe]";
- mes "Since Einbroch used to be";
- mes "an empty lot, it was perfect";
- mes "for building factories. That's";
- mes "what my grandfather told me a";
- mes "long time ago. Anyway, Einbroch quickly grew into a major city.";
- next;
- mes "[Uwe]";
- mes "Now people think that this";
- mes "city was never planned to be";
- mes "just an extension of Einbech.";
- mes "See that rampart over there?";
- mes "It doesn't connect to Einbech at all! No protection for them...";
- next;
- mes "[Uwe]";
- mes "It's like the government";
- mes "lost all interest in Einbech.";
- mes "Even the miners there have";
- mes "been moving here to work in ";
- mes "the factories. But more people hasn't made this city more lively.";
- next;
- mes "[Uwe]";
- mes "Einbroch may look modern";
- mes "and exciting now, but soon";
- mes "you'll see that there's no sign";
- mes "of warmth or life. So... Just don't live here in your old age.";
- next;
- switch(select("Then why are you here?", "But I like the city life~")) {
- case 1:
- mes "[Uwe]";
- mes "Well, sugar honey,";
- mes "I've been waiting for";
- mes "someone. But... It looks";
- mes "like that person won't be";
- mes "coming back anyway.";
- next;
- mes "[Uwe]";
- mes "Oooh, but let's not talk";
- mes "about that. Next time you";
- mes "drop by, we'll talk about";
- mes "something more fun, 'kay?";
- close;
- case 2:
- mes "[Uwe]";
- mes "Big cities can be nice,";
- mes "but you never get to enjoy";
- mes "the sensation of stepping";
- mes "barefoot through the grass,";
- mes "or the magnificent sight of";
- mes "the shining stars at night.";
- next;
- mes "[Uwe]";
- mes "And the people who live";
- mes "in the cities can be so";
- mes "uptight! I've known more";
- mes "than a few who look down";
- mes "on people from smaller towns.";
- next;
- mes "[Uwe]";
- mes "It's sad to see some";
- mes "people will always be";
- mes "that ignorant. I... I just";
- mes "can't believe those people";
- mes "can be sooo close minded!";
- next;
- mes "[Uwe]";
- mes "Oh...!";
- mes "I'm sorry, I guess";
- mes "I went a little overboard.";
- mes "^666666*Titter*^000000 Next time you drop";
- mes "by, we'll talk about something";
- mes "more fun, 'kay? Buhbye~";
- close;
- }
+ F_AboutEinbroch();
case 3:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
- }
- else if ((ein_cook < 20) || (ein_cook == 219)) {
+ } else if (ein_cook < 20 || ein_cook == 219) {
mes "[Uwe]";
mes "Oh, welcome back.";
mes "So how's the weapon";
mes "forging coming along?";
next;
- switch(select("Talk about Cooking", "Talk about Einbroch", "Talk about Cooking Utensils", "Cancel")) {
+ switch (select("Talk about Cooking", "Talk about Einbroch", "Talk about Cooking Utensils", "Cancel")) {
case 1:
mes "[Uwe]";
mes "Ooh, cooking!";
mes "So what did you";
mes "want to ask me...?";
next;
- switch(select("Heart", "Ingredients", "Skills", "Tools", "Cancel.")) {
+ switch (select("Heart", "Ingredients", "Skills", "Tools", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Ah, heart. Just like forging,";
- mes "you need passion and desire";
- mes "to create something special.";
- mes "Every smith and cook knows that";
- mes "you can do anything if you have";
- mes "the will and the commitment.";
- next;
- mes "[Uwe]";
- mes "Well, that's all";
- mes "I really have to";
- mes "say about that. But";
- mes "come back and chat";
- mes "whenever you please.";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Heart();
case 2:
- mes "[Uwe]";
- mes "Now for beginners,";
- mes "learning to select";
- mes "and use ingredients";
- mes "is one of the most";
- mes "important fundamentals.";
- next;
- mes "[Uwe]";
- mes "Cooking is like forging";
- mes "since specific ingredients";
- mes "are needed to make specialty";
- mes "items or dishes. You can't just";
- mes "skip them if you really need";
- mes "them, right? Right!";
- next;
- mes "[Uwe]";
- mes "Once you make up your";
- mes "mind to do something,";
- mes "focus on finishing it, 'kay?";
- mes "Never cut corners and always";
- mes "dedicate yourself to make the";
- mes "very best finished product~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Ingredients();
case 3:
- mes "[Uwe]";
- mes "When you're beginning to learn";
- mes "skills, you can't let yourself be discouraged! Practice makes";
- mes "perfect, you know? But never";
- mes "use your lack of skills as an";
- mes "excuse if you happen to fail...";
- next;
- mes "[Uwe]";
- mes "Effort is also an essential";
- mes "in forging and cooking! Now,";
- mes "on the other hand, if you put";
- mes "in all the effort but didn't learn any of the skills, you'll still get nowhere fast, right? Right!";
- next;
- mes "[Uwe]";
- mes "The key is to always";
- mes "give 100% effort and work";
- mes "on improving your skills.";
- mes "Before you know it, you'll";
- mes "be a respected master!";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Skills();
case 4:
- mes "[Uwe]";
- mes "Cooking is a little";
- mes "easier if you have";
- mes "nicer tools to use,";
- mes "but that's it. Tools by";
- mes "themselves can't make";
- mes "just anybody a master.";
- next;
- mes "[Uwe]";
- mes "In the end, the best";
- mes "tools are the ones you're";
- mes "most comfortable with using.";
- mes "In fact, I still use the old knife I used back when I was just";
- mes "a little novice chef~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_ToolsWithoutReward();
case 5:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
case 2:
- mes "[Uwe]";
- mes "Einbroch was originally";
- mes "built to support Einbech's";
- mes "mining efforts. Because it's";
- mes "small and crowded with people,";
- mes "there's no room to build the ore refining factories over there.";
- next;
- mes "[Uwe]";
- mes "Since Einbroch used to be";
- mes "an empty lot, it was perfect";
- mes "for building factories. That's";
- mes "what my grandfather told me a";
- mes "long time ago. Anyway, Einbroch quickly grew into a major city.";
- next;
- mes "[Uwe]";
- mes "Now people think that this";
- mes "city was never planned to be";
- mes "just an extension of Einbech.";
- mes "See that rampart over there?";
- mes "It doesn't connect to Einbech at all! No protection for them...";
- next;
- mes "[Uwe]";
- mes "It's like the government";
- mes "lost all interest in Einbech.";
- mes "Even the miners there have";
- mes "been moving here to work in ";
- mes "the factories. But more people hasn't made this city more lively.";
- next;
- mes "[Uwe]";
- mes "Einbroch may look modern";
- mes "and exciting now, but soon";
- mes "you'll see that there's no sign";
- mes "of warmth or life. So... Just don't live here in your old age.";
- next;
- switch(select("Then why are you here?", "But I like the city life~")) {
- case 1:
- mes "[Uwe]";
- mes "Well, sugar honey,";
- mes "I've been waiting for someone. But... It looks like that person won't be coming back anyway.";
- next;
- mes "[Uwe]";
- mes "Oooh, but let's not talk about that. Next time you drop by, we'll talk about something more fun, 'kay? Buhbye~";
- close;
- case 2:
- mes "[Uwe]";
- mes "Well, big cities are nice, but you never get to enjoy the sensation of stepping barefoot through the grass, or the clear sight of the stars at night.";
- next;
- mes "[Uwe]";
- mes "And the people who live in cities can be so uptight! I've known more than a few who look down on people who live in smaller towns.";
- next;
- mes "[Uwe]";
- mes "It's sad to see some people will always be that ignorant. I... I just can't believe people can be sooo close minded!";
- next;
- mes "[Uwe]";
- mes "Oh...!";
- mes "I'm sorry, I guess I went a little overboard. ^666666*Titter*^000000 Next time you drop by, we'll talk about something more fun, 'kay? Buhbye~";
- close;
- }
+ F_AboutEinbroch();
case 3:
mes "[Uwe]";
mes "Cooking utensils?";
@@ -1995,19 +1396,18 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "30 ^0000FFJubilee^000000 and 4 ^0000FFLarge Jellopy^000000.";
mes "Then, I'll trade you 1 Coal for all of those. How does it sound?";
next;
- switch(select("Sure.", "No, thanks.")) {
+ switch (select("Sure.", "No, thanks.")) {
case 1:
- if ((countitem(Jubilee) > 29) && (countitem(Large_Jellopy) > 3)) {
- delitem Jubilee,30;
- delitem Large_Jellopy,4;
- getitem Coal,1;
+ if (countitem(Jubilee) > 29 && countitem(Large_Jellopy) > 3) {
+ delitem Jubilee, 30;
+ delitem Large_Jellopy, 4;
+ getitem Coal, 1;
mes "[Uwe]";
mes "Hooray!";
mes "Thank you";
mes "^EEA9B8soooo^000000 much!";
close;
- }
- else {
+ } else {
mes "[Uwe]";
mes "Hmmm...?";
mes "You don't have";
@@ -2031,22 +1431,15 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
close;
}
case 4:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
- }
- else if (ein_cook > 299) {
+ } else if (ein_cook > 299) {
if (Class == Job_Whitesmith) {
mes "[Uwe]";
mes "Oooh...!";
mes "Congratulations!";
mes "You finally became";
- mes "a cutie MasterSmith!";
+ mesf("a cutie %s!", jobname(Class));
next;
mes "[Uwe]";
mes "Mmmm...";
@@ -2057,14 +1450,13 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "cookies I just baked~";
next;
ein_cook = 9;
- getitem Well_Baked_Cookie,5;
+ getitem Well_Baked_Cookie, 5;
mes "[Uwe]";
mes "Okay, enjoy!";
mes "I hope you have";
mes "a good time smithing!";
close;
- }
- else {
+ } else {
mes "[Uwe]";
mes "Hmmm?";
mes "Oh, it's you~";
@@ -2082,40 +1474,24 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
close;
}
}
- }
- else {
- .@aaa = ein_cook % 2;
- if (.@aaa == 1) {
- .@bbb = ein_cook;
- if (.@bbb > 99) {
- .@bbb -= 100;
- if (.@bbb > 99) {
- .@bbb -= 100;
- if (.@bbb > 99) {
- .@ccc = 3;
- }
- else {
- .@ccc = 2;
- }
- }
- else {
- .@ccc = 1;
- }
- }
- else {
- .@ccc = 0;
- }
- if (.@ccc < 3) {
+ } else {
+ if (ein_cook % 2 == 1) {
+ if (ein_cook >= 300) {
+ mes "[Uwe]";
+ mes "Ah, hello again,";
+ mes "cutie adventurer.";
+ mes "How can I help you?";
+ next;
+ } else {
mes "[Uwe]";
mes "Hm...?";
mes "I never forget a face,";
mes "but somehow I feel like";
mes "we've met somewhere before...";
next;
- if (.@ccc == 0) {
+ if (ein_cook < 100) {
ein_cook += 300;
- }
- else if (.@ccc == 2) {
+ } else if (ein_cook < 300) {
ein_cook += 100;
}
mes "[Uwe]";
@@ -2129,442 +1505,66 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "What brings to";
if (Sex == SEX_MALE) {
mes "me, you ^EEA9B8naughty boy^000000?";
- }
- else {
+ } else {
mes "me, you ^EEA9B8naughty girl^000000?";
}
next;
}
- else if (.@ccc == 3) {
- mes "[Uwe]";
- mes "Ah, hello again,";
- mes "cutie adventurer.";
- mes "How can I help you?";
- next;
- }
- switch(select("Ask about Einbroch.", "Ask about Cooking.", "Cancel.")) {
+ switch (select("Ask about Einbroch.", "Ask about Cooking.", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Einbroch was originally";
- mes "built to support Einbech's";
- mes "mining efforts. Because it's";
- mes "small and crowded with people,";
- mes "there's no room to build the ore refining factories over there.";
- next;
- mes "[Uwe]";
- mes "Since Einbroch used to be";
- mes "an empty lot, it was perfect";
- mes "for building factories. That's";
- mes "what my grandfather told me a";
- mes "long time ago. Anyway, Einbroch quickly grew into a major city.";
- next;
- mes "[Uwe]";
- mes "Now people think that this";
- mes "city was never planned to be";
- mes "just an extension of Einbech.";
- mes "See that rampart over there?";
- mes "It doesn't connect to Einbech at all! No protection for them...";
- next;
- mes "[Uwe]";
- mes "It's like the government";
- mes "lost all interest in Einbech.";
- mes "Even the miners there have";
- mes "been moving here to work in ";
- mes "the factories. But more people hasn't made this city more lively.";
- next;
- mes "[Uwe]";
- mes "Einbroch may look modern";
- mes "and exciting now, but soon";
- mes "you'll see that there's no sign";
- mes "of warmth or life. So... Just don't live here in your old age.";
- next;
- switch(select("Then why are you here?", "I won't. Thanks for the advice.")) {
- case 1:
- mes "[Uwe]";
- mes "Well, I have some";
- mes "precious memories of";
- mes "this place. Once, there was";
- mes "a man who lived here who";
- mes "was just like a father to me.";
- next;
- mes "[Uwe]";
- mes "Oh, but I'm sure that";
- mes "you don't want to hear";
- mes "about that. Next time you";
- mes "drop by, we'll talk about";
- mes "something more fun, 'kay?";
- mes "Buhbye for now, cutie~";
- close;
- case 2:
- mes "[Uwe]";
- mes "Oh, that is such";
- mes "a good decision,";
- mes "sugar honey! Oh, you";
- mes "cutie adventurers are";
- mes "so precious, so lovable.";
- mes "^333333*Tee hee hee~*^000000";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- close;
- }
+ F_AboutEinbroch();
case 2:
mes "[Uwe]";
mes "Ooh, cooking!";
mes "So what did you";
mes "want to ask me...?";
next;
- switch(select("Heart", "Ingredients", "Skills", "Tools", "Cancel.")) {
+ switch (select("Heart", "Ingredients", "Skills", "Tools", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Ah, heart. Just like forging,";
- mes "you need passion and desire";
- mes "to create something special.";
- mes "Every smith and cook knows that";
- mes "you can do anything if you have";
- mes "the will and the commitment.";
- next;
- mes "[Uwe]";
- mes "Well, that's all";
- mes "I really have to";
- mes "say about that. But";
- mes "come back and chat";
- mes "whenever you please.";
- break;
+ F_Heart();
case 2:
- mes "[Uwe]";
- mes "Now for beginners,";
- mes "learning to select";
- mes "and use ingredients";
- mes "is one of the most";
- mes "important fundamentals.";
- next;
- mes "[Uwe]";
- mes "Cooking is like forging";
- mes "since specific ingredients";
- mes "are needed to make specialty";
- mes "items or dishes. You can't just";
- mes "skip them if you really need";
- mes "them, right? Right!";
- next;
- mes "[Uwe]";
- mes "Once you make up your";
- mes "mind to do something,";
- mes "focus on finishing it, 'kay?";
- mes "Never cut corners and always";
- mes "dedicate yourself to make the";
- mes "very best finished product~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- break;
+ F_Ingredients();
case 3:
- mes "[Uwe]";
- mes "When you're beginning to learn";
- mes "skills, you can't let yourself be discouraged! Practice makes";
- mes "perfect, you know? But never";
- mes "use your lack of skills as an";
- mes "excuse if you happen to fail...";
- next;
- mes "[Uwe]";
- mes "Effort is also an essential";
- mes "in forging and cooking! Now,";
- mes "on the other hand, if you put";
- mes "in all the effort but didn't learn any of the skills, you'll still get nowhere fast, right? Right!";
- next;
- mes "[Uwe]";
- mes "The key is to always";
- mes "give 100% effort and work";
- mes "on improving your skills.";
- mes "Before you know it, you'll";
- mes "be a respected master!";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- break;
+ F_Skills();
case 4:
- mes "[Uwe]";
- mes "Cooking is a little";
- mes "easier if you have";
- mes "nicer tools to use,";
- mes "but that's it. Tools by";
- mes "themselves can't make";
- mes "just anybody a master.";
- next;
- mes "[Uwe]";
- mes "In the end, the best";
- mes "tools are the ones you're";
- mes "most comfortable with using.";
- mes "In fact, I still use the old knife I used back when I was just";
- mes "a little novice chef~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- break;
+ F_ToolsWithoutReward();
case 5:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
- }
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; break;
- case 2: mes "...*Tee Hee~*"; break;
- case 3: mes "...Behbie~";
+ F_Cancel();
}
- close;
-
case 3:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
+ F_Cancel();
}
}
if (ein_cook > 999) {
- .@eee = ein_cook-1000;
- if (.@eee > 199) {
+ if (ein_cook > 1199) {
mes "[Uwe]";
mes "Ah, hello again,";
mes "cutie adventurer.";
mes "How can I help you?";
next;
- switch(select("Talk about Einbroch.", "Ask him to forge a Weapon.", "Talk about Cooking.", "Cancel.")) {
+ switch (select("Talk about Einbroch.", "Ask him to forge a Weapon.", "Talk about Cooking.", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Einbroch was originally";
- mes "built to support Einbech's";
- mes "mining efforts. Because it's";
- mes "small and crowded with people,";
- mes "there's no room to build the ore refining factories over there.";
- next;
- mes "[Uwe]";
- mes "Since Einbroch used to be";
- mes "an empty lot, it was perfect";
- mes "for building factories. That's";
- mes "what my grandfather told me a";
- mes "long time ago. Anyway, Einbroch quickly grew into a major city.";
- next;
- mes "[Uwe]";
- mes "Now people think that this";
- mes "city was never planned to be";
- mes "just an extension of Einbech.";
- mes "See that rampart over there?";
- mes "It doesn't connect to Einbech at all! No protection for them...";
- next;
- mes "[Uwe]";
- mes "It's like the government";
- mes "lost all interest in Einbech.";
- mes "Even the miners there have";
- mes "been moving here to work in ";
- mes "the factories. But more people hasn't made this city more lively.";
- next;
- mes "[Uwe]";
- mes "Einbroch may look modern";
- mes "and exciting now, but soon";
- mes "you'll see that there's no sign";
- mes "of warmth or life. So... Just don't live here in your old age.";
- next;
- switch(select("Then why are you here?", "I won't. Thanks for the advice.")) {
- case 1:
- mes "[Uwe]";
- mes "Well, I have some";
- mes "precious memories of";
- mes "this place. Once, there was";
- mes "a man who lived here who";
- mes "was just like a father to me.";
- next;
- mes "[Uwe]";
- mes "Oh, but I'm sure that";
- mes "you don't want to hear";
- mes "about that. Next time you";
- mes "drop by, we'll talk about";
- mes "something more fun, 'kay?";
- mes "Buhbye for now, cutie~";
- close;
- case 2:
- mes "[Uwe]";
- mes "Oh, that is such";
- mes "a good decision,";
- mes "sugar honey! Oh, you";
- mes "cutie adventurers are";
- mes "so precious, so lovable.";
- mes "^333333*Tee hee hee~*^000000";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- close;
- }
+ F_AboutEinbroch();
case 2:
- mes "[Uwe]";
- mes "Well...";
- mes "I actually just";
- mes "do smithing work";
- mes "to create my own";
- mes "cooking tools.";
- next;
- mes "[Uwe]";
- mes "Oh, I understand";
- mes "that somebody needs";
- mes "to fight the monsters,";
- mes "but I'm the wrong person";
- mes "to ask for forging weapons.";
- mes "I... am a strict pacifist~";
- next;
- mes "[Uwe]";
- mes "Just go look";
- mes "around for a little";
- mes "bit, I'm sure you'll";
- mes "find a Blacksmith";
- mes "who's willing to forge";
- mes "you a good weapon~";
- close;
+ F_ForgeWeapon();
case 3:
mes "[Uwe]";
mes "Ooh, cooking!";
mes "So what did you";
mes "want to ask me...?";
next;
- switch(select("Heart", "Ingredients", "Skills", "Tools", "Cancel.")) {
+ switch (select("Heart", "Ingredients", "Skills", "Tools", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Ah, heart. Just like forging,";
- mes "you need passion and desire";
- mes "to create something special.";
- mes "Every smith and cook knows that";
- mes "you can do anything if you have";
- mes "the will and the commitment.";
- next;
- mes "[Uwe]";
- mes "Well, that's all";
- mes "I really have to";
- mes "say about that. But";
- mes "come back and chat";
- mes "whenever you please.";
- break;
+ F_Heart();
case 2:
- mes "[Uwe]";
- mes "Now for beginners,";
- mes "learning to select";
- mes "and use ingredients";
- mes "is one of the most";
- mes "important fundamentals.";
- next;
- mes "[Uwe]";
- mes "Cooking is like forging";
- mes "since specific ingredients";
- mes "are needed to make specialty";
- mes "items or dishes. You can't just";
- mes "skip them if you really need";
- mes "them, right? Right!";
- next;
- mes "[Uwe]";
- mes "Once you make up your";
- mes "mind to do something,";
- mes "focus on finishing it, 'kay?";
- mes "Never cut corners and always";
- mes "dedicate yourself to make the";
- mes "very best finished product~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- break;
+ F_Ingredients();
case 3:
- mes "[Uwe]";
- mes "When you're beginning to learn";
- mes "skills, you can't let yourself be discouraged! Practice makes";
- mes "perfect, you know? But never";
- mes "use your lack of skills as an";
- mes "excuse if you happen to fail...";
- next;
- mes "[Uwe]";
- mes "Effort is also an essential";
- mes "in forging and cooking! Now,";
- mes "on the other hand, if you put";
- mes "in all the effort but didn't learn any of the skills, you'll still get nowhere fast, right? Right!";
- next;
- mes "[Uwe]";
- mes "The key is to always";
- mes "give 100% effort and work";
- mes "on improving your skills.";
- mes "Before you know it, you'll";
- mes "be a respected master!";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- break;
+ F_Skills();
case 4:
- mes "[Uwe]";
- mes "Cooking is a little";
- mes "easier if you have";
- mes "nicer tools to use,";
- mes "but that's it. Tools by";
- mes "themselves can't make";
- mes "just anybody a master.";
- next;
- mes "[Uwe]";
- mes "In the end, the best";
- mes "tools are the ones you're";
- mes "most comfortable with using.";
- mes "In fact, I still use the old knife I used back when I was just";
- mes "a little novice chef~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- break;
+ F_ToolsWithoutReward();
case 5:
- mes "[Uwe]";
- mes "Oh...?";
- mes "Well, feel";
- mes "free to visit";
- mes "me whenever";
- mes "you want, 'kay?";
- close;
- }
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
+ F_Cancel();
}
-
case 4:
mes "[Uwe]";
mes "Alright then,";
@@ -2573,8 +1573,7 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "Hohohohoho~";
close;
}
- }
- else if (.@eee > 99) {
+ } else if (ein_cook > 1099) {
mes "[Uwe]";
mes "Oh hello hello~";
mes "It's been a long";
@@ -2589,118 +1588,27 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "Did you already forget";
mes "the 6 Large Jellopy?";
next;
- switch(select("Talk about Einbroch.", "Ask him to forge a Weapon.", "Give him the Materials.", "Cancel.")) {
+ switch (select("Talk about Einbroch.", "Ask him to forge a Weapon.", "Give him the Materials.", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Einbroch was originally";
- mes "built to support Einbech's";
- mes "mining efforts. Because it's";
- mes "small and crowded with people,";
- mes "there's no room to build the ore refining factories over there.";
- next;
- mes "[Uwe]";
- mes "Since Einbroch used to be";
- mes "an empty lot, it was perfect";
- mes "for building factories. That's";
- mes "what my grandfather told me a";
- mes "long time ago. Anyway, Einbroch quickly grew into a major city.";
- next;
- mes "[Uwe]";
- mes "Now people think that this";
- mes "city was never planned to be";
- mes "just an extension of Einbech.";
- mes "See that rampart over there?";
- mes "It doesn't connect to Einbech at all! No protection for them...";
- next;
- mes "[Uwe]";
- mes "It's like the government";
- mes "lost all interest in Einbech.";
- mes "Even the miners there have";
- mes "been moving here to work in ";
- mes "the factories. But more people hasn't made this city more lively.";
- next;
- mes "[Uwe]";
- mes "Einbroch may look modern";
- mes "and exciting now, but soon";
- mes "you'll see that there's no sign";
- mes "of warmth or life. So... Just don't live here in your old age.";
- next;
- switch(select("Then why are you here?", "I won't. Thanks for the advice.")) {
- case 1:
- mes "[Uwe]";
- mes "Well, I have some";
- mes "precious memories of";
- mes "this place. Once, there was";
- mes "a man who lived here who";
- mes "was just like a father to me.";
- next;
- mes "[Uwe]";
- mes "Oh, but I'm sure that";
- mes "you don't want to hear";
- mes "about that. Next time you";
- mes "drop by, we'll talk about";
- mes "something more fun, 'kay?";
- mes "Buhbye for now, cutie~";
- close;
- case 2:
- mes "[Uwe]";
- mes "Oh, that is such";
- mes "a good decision,";
- mes "sugar honey! Oh, you";
- mes "cutie adventurers are";
- mes "so precious, so lovable.";
- mes "^333333*Tee hee hee~*^000000";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- close;
- }
+ F_AboutEinbroch();
case 2:
- mes "[Uwe]";
- mes "Well...";
- mes "I actually just";
- mes "do smithing work";
- mes "to create my own";
- mes "cooking tools.";
- next;
- mes "[Uwe]";
- mes "Oh, I understand";
- mes "that somebody needs";
- mes "to fight the monsters,";
- mes "but I'm the wrong person";
- mes "to ask for forging weapons.";
- mes "I... am a strict pacifist~";
- next;
- mes "[Uwe]";
- mes "Just go look";
- mes "around for a little";
- mes "bit, I'm sure you'll";
- mes "find a Blacksmith";
- mes "who's willing to forge";
- mes "you a good weapon~";
- close;
+ F_ForgeWeapon();
case 3:
if (countitem(Large_Jellopy) > 5) {
mes "[Uwe]";
mes "Thank you ^EEA9B8so^000000 much!";
mes "Here's the Coal I promised~";
- delitem Large_Jellopy,6;
+ delitem Large_Jellopy, 6;
ein_cook += 100;
- getitem Coal,1;
+ getitem Coal, 1;
next;
- }
- else {
+ } else {
mes "[Uwe]";
mes "Huh...?";
if (countitem(Large_Jellopy) == 0) {
mes "You brought";
mes "none at all...?";
- }
- else {
+ } else {
mes "This isn't enough";
mes "Large Jellopy...!";
}
@@ -2715,121 +1623,15 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "honey. Now what would you like";
mes "to hear more about? Hmm...?";
next;
- switch(select("Heart", "Materials", "Skills", "Tools", "Cancel.")) {
+ switch (select("Heart", "Materials", "Skills", "Tools", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Ah, heart. Just like forging,";
- mes "you need passion and desire";
- mes "to create something special.";
- mes "Every smith and cook knows that";
- mes "you can do anything if you have";
- mes "the will and the commitment.";
- next;
- mes "[Uwe]";
- mes "Well, that's all";
- mes "I really have to";
- mes "say about that. But";
- mes "come back and chat";
- mes "whenever you please.";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Heart();
case 2:
- mes "[Uwe]";
- mes "Now for beginners,";
- mes "learning to select";
- mes "and use ingredients";
- mes "is one of the most";
- mes "important fundamentals.";
- next;
- mes "[Uwe]";
- mes "Cooking is like forging";
- mes "since specific ingredients";
- mes "are needed to make specialty";
- mes "items or dishes. You can't just";
- mes "skip them if you really need";
- mes "them, right? Right!";
- next;
- mes "[Uwe]";
- mes "Once you make up your";
- mes "mind to do something,";
- mes "focus on finishing it, 'kay?";
- mes "Never cut corners and always";
- mes "dedicate yourself to make the";
- mes "very best finished product~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Ingredients();
case 3:
- mes "[Uwe]";
- mes "When you're beginning to learn";
- mes "skills, you can't let yourself be discouraged! Practice makes";
- mes "perfect, you know? But never";
- mes "use your lack of skills as an";
- mes "excuse if you happen to fail...";
- next;
- mes "[Uwe]";
- mes "Effort is also an essential";
- mes "in forging and cooking! Now,";
- mes "on the other hand, if you put";
- mes "in all the effort but didn't learn any of the skills, you'll still get nowhere fast, right? Right!";
- next;
- mes "[Uwe]";
- mes "The key is to always";
- mes "give 100% effort and work";
- mes "on improving your skills.";
- mes "Before you know it, you'll";
- mes "be a respected master!";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "Hohohohoho."; close;
- case 2: mes "Umhohohoho.*"; close;
- case 3: mes "Umho."; close;
- }
+ F_Skills();
case 4:
- mes "[Uwe]";
- mes "Cooking is a little";
- mes "easier if you have";
- mes "nicer tools to use,";
- mes "but that's it. Tools by";
- mes "themselves can't make";
- mes "just anybody a master.";
- next;
- mes "[Uwe]";
- mes "In the end, the best";
- mes "tools are the ones you're";
- mes "most comfortable with using.";
- mes "In fact, I still use the old knife I used back when I was just";
- mes "a little novice chef~";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_ToolsWithoutReward();
case 5:
mes "[Uwe]";
mes "Alright then,";
@@ -2847,160 +1649,18 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "Hohohohoho~";
close;
}
- }
- else {
+ } else {
mes "[Uwe]";
mes "Hello, cutie~";
mes "How can I help you?";
next;
- switch(select("Talk about Einbroch.", "Ask him to forge a Weapon.", "Master, I want to learn cooking.", "Cancel.")) {
+ switch (select("Talk about Einbroch.", "Ask him to forge a Weapon.", "Master, I want to learn cooking.", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Einbroch was originally";
- mes "built to support Einbech's";
- mes "mining efforts. Because it's";
- mes "small and crowded with people,";
- mes "there's no room to build the ore refining factories over there.";
- next;
- mes "[Uwe]";
- mes "Since Einbroch used to be";
- mes "an empty lot, it was perfect";
- mes "for building factories. That's";
- mes "what my grandfather told me a";
- mes "long time ago. Anyway, Einbroch quickly grew into a major city.";
- next;
- mes "[Uwe]";
- mes "Now people think that this";
- mes "city was never planned to be";
- mes "just an extension of Einbech.";
- mes "See that rampart over there?";
- mes "It doesn't connect to Einbech at all! No protection for them...";
- next;
- mes "[Uwe]";
- mes "It's like the government";
- mes "lost all interest in Einbech.";
- mes "Even the miners there have";
- mes "been moving here to work in ";
- mes "the factories. But more people hasn't made this city more lively.";
- next;
- mes "[Uwe]";
- mes "Einbroch may look modern";
- mes "and exciting now, but soon";
- mes "you'll see that there's no sign";
- mes "of warmth or life. So... Just don't live here in your old age.";
- next;
- switch(select("Then why are you here?", "I won't. Thanks for the advice.")) {
- case 1:
- mes "[Uwe]";
- mes "Well, I have some";
- mes "precious memories of";
- mes "this place. Once, there was";
- mes "a man who lived here who";
- mes "was just like a father to me.";
- next;
- mes "[Uwe]";
- mes "Oh, but I'm sure that";
- mes "you don't want to hear";
- mes "about that. Next time you";
- mes "drop by, we'll talk about";
- mes "something more fun, 'kay?";
- mes "Buhbye for now, cutie~";
- close;
- case 2:
- mes "[Uwe]";
- mes "Oh, that is such";
- mes "a good decision,";
- mes "sugar honey! Oh, you";
- mes "cutie adventurers are";
- mes "so precious, so lovable.";
- mes "^333333*Tee hee hee~*^000000";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- close;
- }
+ F_AboutEinbroch();
case 2:
- mes "[Uwe]";
- mes "Well...";
- mes "I actually just";
- mes "do smithing work";
- mes "to create my own";
- mes "cooking tools.";
- next;
- mes "[Uwe]";
- mes "Oh, I understand";
- mes "that somebody needs";
- mes "to fight the monsters,";
- mes "but I'm the wrong person";
- mes "to ask for forging weapons.";
- mes "I... am a strict pacifist~";
- next;
- mes "[Uwe]";
- mes "Just go look";
- mes "around for a little";
- mes "bit, I'm sure you'll";
- mes "find a Blacksmith";
- mes "who's willing to forge";
- mes "you a good weapon~";
- close;
+ F_ForgeWeapon();
case 3:
- mes "[Uwe]";
- mes "Mm...?";
- mes "Did you just";
- mes "say that you";
- mes "want to learn";
- mes "the art of cooking?";
- next;
- mes "[Uwe]";
- mes "I'm sorry, but I can't";
- mes "really give culinary";
- mes "lessons. But I will";
- mes "give good advice for";
- mes "hopeful beginners.";
- next;
- mes "[Uwe]";
- mes "Now...";
- mes "For your tuition";
- mes "I'll need-- Gosh,";
- mes "there's just so many";
- mes "things. Get some paper,";
- mes "and a pen for this list...";
- next;
- ein_cook += 100;
- mes "[Uwe]";
- mes "Just kidding!";
- mes "^333333*Titter~*^000000 I don't need";
- mes "much to make some";
- mes "cooking utensils. Bring";
- mes "6 ^0000FFLarge Jellopy^000000. That's it!";
- next;
- mes "[Uwe]";
- mes "In return, I will give you";
- mes "1 Coal and some useful";
- mes "cooking advice for novices.";
- mes "I give this advice for free to";
- mes "my smithing colleages, though...";
- next;
- mes "[Uwe]";
- mes "Why ^EEA9B8don't^000000 you";
- mes "become a Blacksmith?";
- mes "I'm much more confident";
- mes "in that field. ^333333*Tee hee~*^000000";
- next;
- mes "[Uwe]";
- mes "Well, I'll be";
- mes "waiting right";
- mes "here until you";
- mes "come back.";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Cooking();
case 4:
mes "[Uwe]";
mes "Take care,";
@@ -3009,13 +1669,12 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
close;
}
}
- }
- else if (ein_cook == 0) {
+ } else if (ein_cook == 0) {
mes "[Uwe]";
mes "Cooking is such a joy~!";
mes "The scents, the flavors, the sensation of sheer ^EEA9B8satiation^000000...";
next;
- switch(select("Um, isn't this a forge?", "Ignore him.")) {
+ switch (select("Um, isn't this a forge?", "Ignore him.")) {
case 1:
mes "[Uwe]";
ein_cook = 1000;
@@ -3037,159 +1696,17 @@ einbroch,215,180,6 script Uwe Kleine#ein 4_M_03,{
mes "adooooooooorable";
if (Sex == SEX_MALE) {
mes "hunk of a man?";
- }
- else {
+ } else {
mes "womanly woman?";
}
next;
- switch(select("Talk about Einbroch.", "Ask him to forge a Weapon.", "Master, I want to learn cooking.", "Cancel.")) {
+ switch (select("Talk about Einbroch.", "Ask him to forge a Weapon.", "Master, I want to learn cooking.", "Cancel.")) {
case 1:
- mes "[Uwe]";
- mes "Einbroch was originally";
- mes "built to support Einbech's";
- mes "mining efforts. Because it's";
- mes "small and crowded with people,";
- mes "there's no room to build the ore refining factories over there.";
- next;
- mes "[Uwe]";
- mes "Since Einbroch used to be";
- mes "an empty lot, it was perfect";
- mes "for building factories. That's";
- mes "what my grandfather told me a";
- mes "long time ago. Anyway, Einbroch quickly grew into a major city.";
- next;
- mes "[Uwe]";
- mes "Now people think that this";
- mes "city was never planned to be";
- mes "just an extension of Einbech.";
- mes "See that rampart over there?";
- mes "It doesn't connect to Einbech at all! No protection for them...";
- next;
- mes "[Uwe]";
- mes "It's like the government";
- mes "lost all interest in Einbech.";
- mes "Even the miners there have";
- mes "been moving here to work in ";
- mes "the factories. But more people hasn't made this city more lively.";
- next;
- mes "[Uwe]";
- mes "Einbroch may look modern";
- mes "and exciting now, but soon";
- mes "you'll see that there's no sign";
- mes "of warmth or life. So... Just don't live here in your old age.";
- next;
- switch(select("Then why are you here?", "I won't. Thanks for the advice.")) {
- case 1:
- mes "[Uwe]";
- mes "Well, I have some";
- mes "precious memories of";
- mes "this place. Once, there was";
- mes "a man who lived here who";
- mes "was just like a father to me.";
- next;
- mes "[Uwe]";
- mes "Oh, but I'm sure that";
- mes "you don't want to hear";
- mes "about that. Next time you";
- mes "drop by, we'll talk about";
- mes "something more fun, 'kay?";
- mes "Buhbye for now, cutie~";
- close;
- case 2:
- mes "[Uwe]";
- mes "Oh, that is such";
- mes "a good decision,";
- mes "sugar honey! Oh, you";
- mes "cutie adventurers are";
- mes "so precious, so lovable.";
- mes "^333333*Tee hee hee~*^000000";
- next;
- mes "[Uwe]";
- mes "Well, that was";
- mes "a fun talk. Come";
- mes "back and visit, 'kay?";
- mes "I'll miss you until";
- mes "the next time~";
- close;
- }
+ F_AboutEinbroch();
case 2:
- mes "[Uwe]";
- mes "Well...";
- mes "I actually just";
- mes "do smithing work";
- mes "to create my own";
- mes "cooking tools.";
- next;
- mes "[Uwe]";
- mes "Oh, I understand";
- mes "that somebody needs";
- mes "to fight the monsters,";
- mes "but I'm the wrong person";
- mes "to ask for forging weapons.";
- mes "I... am a strict pacifist~";
- next;
- mes "[Uwe]";
- mes "Just go look";
- mes "around for a little";
- mes "bit, I'm sure you'll";
- mes "find a Blacksmith";
- mes "who's willing to forge";
- mes "you a good weapon~";
- close;
+ F_ForgeWeapon();
case 3:
- mes "[Uwe]";
- mes "Mm...?";
- mes "Did you just";
- mes "say that you";
- mes "want to learn";
- mes "the art of cooking?";
- next;
- mes "[Uwe]";
- mes "I'm sorry, but I can't";
- mes "really give culinary";
- mes "lessons. But I will";
- mes "give good advice for";
- mes "hopeful beginners.";
- next;
- mes "[Uwe]";
- mes "Now...";
- mes "For your tuition";
- mes "I'll need-- Gosh,";
- mes "there's just so many";
- mes "things. Get some paper,";
- mes "and a pen for this list...";
- next;
- ein_cook += 100;
- mes "[Uwe]";
- mes "Just kidding!";
- mes "^333333*Titter~*^000000 I don't need";
- mes "much to make some";
- mes "cooking utensils. Bring";
- mes "6 ^0000FFLarge Jellopy^000000. That's it!";
- next;
- mes "[Uwe]";
- mes "In return, I will give you";
- mes "1 Coal and some useful";
- mes "cooking advice for novices.";
- mes "I give this advice for free to";
- mes "my smithing colleages, though...";
- next;
- mes "[Uwe]";
- mes "Why ^EEA9B8don't^000000 you";
- mes "become a Blacksmith?";
- mes "I'm much more confident";
- mes "in that field. ^333333*Tee hee~*^000000";
- next;
- mes "[Uwe]";
- mes "Well, I'll be";
- mes "waiting right";
- mes "here until you";
- mes "come back.";
- switch(rand(1,3)) {
- case 1: mes "...Ho ho~"; close;
- case 2: mes "...*Tee Hee~*"; close;
- case 3: mes "...Behbie~"; close;
- }
+ F_Cooking();
case 4:
mes "[Uwe]";
mes "Take care,";
@@ -3216,7 +1733,7 @@ einbroch,1,1,0 script Einbroch Smog Alert FAKE_NPC,{
OnEnable:
$@AlrdEinPoll = 1;
- mapannounce "einbroch","This is a state of emercency! Harmful smog is reaching high levels of saturation. Residents of Einbroch must find shelter immediately.",bc_map;
+ mapannounce "einbroch","This is a state of emergency! Harmful smog is reaching high levels of saturation. Residents of Einbroch must find shelter immediately.",bc_map;
enablenpc "Einbroch Smog Alert";
hideonnpc "Centzu#ein";
hideonnpc "Khowropher#ein";
@@ -3576,7 +2093,7 @@ ein_in01,67,242,3 script Zelmeto 4_M_REPAIR,{
mes "[Zelmeto]";
mes "^333333*Whew*^000000";
mes "I haven't given that much";
- mes "inspriration in a while, but";
+ mes "inspiration in a while, but";
mes "your help was well worth it.";
mes "I'm going to start the repairs, but once again, I'd like to thank you.";
close;
@@ -3616,7 +2133,7 @@ ein_in01,67,242,3 script Zelmeto 4_M_REPAIR,{
mes "^333333*Sigh*^000000";
mes "My proposal was rejected";
mes "by our superintendant. But";
- mes "maintainance and repairs";
+ mes "maintenance and repairs";
mes "are crucial for peak operating";
mes "efficiency and worker safety!";
next;
@@ -3791,7 +2308,7 @@ ein_in01,67,242,3 script Zelmeto 4_M_REPAIR,{
mes "[Zelmeto]";
mes "Now, the pipe I want";
mes "you to inspect is located";
- mes "near those large caultrons";
+ mes "near those large cauldrons";
mes "of molten metal. You should";
mes "be able to find it pretty easily.";
next;
@@ -4260,7 +2777,7 @@ einbech,165,105,7 script Buender Hikeman#ein 4_M_EINOLD,{
case 1:
mes "[Buender Hikeman]";
mes "How dare you...";
- mes "How dare you treat ";
+ mes "How dare you treat me";
mes "after destroying all the";
mes "happiness in my life!";
next;
@@ -4741,7 +3258,6 @@ ein_in01,231,163,7 script Sick Old Man#ein 4_M_DIEMAN,{
close;
}
else if (Shinokas_Quest == 2) {
- einbech = 0;
mes "[Sick Old Man]";
mes "...!";
next;
@@ -4787,7 +3303,7 @@ ein_in01,231,163,7 script Sick Old Man#ein 4_M_DIEMAN,{
mes "^3355FFIt doesn't seem";
mes "like this old man";
mes "is telling the truth...^000000";
- einbech = 0;
+ .@einbech = 0;
next;
}
else {
@@ -4924,7 +3440,7 @@ ein_in01,231,163,7 script Sick Old Man#ein 4_M_DIEMAN,{
next;
mes "[Shinokas]";
mes "After I destroyed the tunnel,";
- mes "they targeted me and I ended";
+ mes "they targeted me and I ended up";
mes "spending the rest of my life being pursued and running from place to place. What the hell was that ^3131FFore^000000 and why was it so important?";
next;
mes "[Shinokas]";
@@ -7131,7 +5647,7 @@ ein_in01,191,102,5 script Kaijeta#ein 4_F_EINOLD,{
mes "[Kaijeta]";
mes "I can't bear to see the";
mes "petty hatred between our";
- mes "two towns stop my son from";
+ mes "two towns stopping my son from";
mes "seeing the woman he loves...";
changequest 8081,8082;
close;
diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql
index 4ff49624c..113176fdb 100644
--- a/sql-files/item_db.sql
+++ b/sql-files/item_db.sql
@@ -4543,12 +4543,12 @@ REPLACE INTO `item_db` VALUES ('12198','Lucky_Rice_Cake','Lucky Rice Cake','2','
REPLACE INTO `item_db` VALUES ('12199','Rice_Scroll','Scroll of Magic','2','0','0','0','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('12200','Event_Cake','X-mas Cake','11','20','10','50','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemskill PR_MAGNIFICAT,3;','','');
REPLACE INTO `item_db` VALUES ('12201','Red_Box_C','Commonplace Red Box','2','20','10','200','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('12202','Str_Dish10_','Steamed Tongue','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_STR,1800000,10; percentheal 20,10;','','');
-REPLACE INTO `item_db` VALUES ('12203','Agi_Dish10_','Steamed Scorpion','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_AGI,1800000,10; percentheal 15,5;','','');
-REPLACE INTO `item_db` VALUES ('12204','Int_Dish10_','Dragon Breath Cocktail','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_INT,1800000,10; percentheal 10,20;','','');
-REPLACE INTO `item_db` VALUES ('12205','Dex_Dish10_','Hwergelmir\'s Tonic','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_DEX,1800000,10; percentheal 10,10;','','');
-REPLACE INTO `item_db` VALUES ('12206','Luk_Dish10_','Cooked Nine Tail\'s Tails','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_LUK,1800000,10; percentheal 14,8;','','');
-REPLACE INTO `item_db` VALUES ('12207','Vit_Dish10_','Stew Of Immortality','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_VIT,1800000,10; percentheal 25,0;','','');
+REPLACE INTO `item_db` VALUES ('12202','Str_Dish10_','Steamed Tongue','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_STR_CASH, 1800000, 10); percentheal(20, 10);','','');
+REPLACE INTO `item_db` VALUES ('12203','Agi_Dish10_','Steamed Scorpion','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_AGI_CASH, 1800000, 10); percentheal(15, 5);','','');
+REPLACE INTO `item_db` VALUES ('12204','Int_Dish10_','Dragon Breath Cocktail','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_INT_CASH, 1800000, 10); percentheal(10, 20);','','');
+REPLACE INTO `item_db` VALUES ('12205','Dex_Dish10_','Hwergelmir\'s Tonic','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_DEX_CASH, 1800000, 10); percentheal(10, 10);','','');
+REPLACE INTO `item_db` VALUES ('12206','Luk_Dish10_','Cooked Nine Tail\'s Tails','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_LUK_CASH, 1800000, 10); percentheal(14, 8);','','');
+REPLACE INTO `item_db` VALUES ('12207','Vit_Dish10_','Stew Of Immortality','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_VIT_CASH, 1800000, 10); percentheal(25, 0);','','');
REPLACE INTO `item_db` VALUES ('12208','Battle_Manual','Battle Manual','2','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','60000','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_CASH_PLUSEXP,1800000,50;','','');
REPLACE INTO `item_db` VALUES ('12209','Insurance','Life Insurance','2','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_CASH_DEATHPENALTY,1800000,0;','','');
REPLACE INTO `item_db` VALUES ('12210','Bubble_Gum','Bubble Gum','2','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','60000','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_CASH_RECEIVEITEM,1800000,200;','','');
diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql
index 2cf498356..f6ca7678f 100644
--- a/sql-files/item_db_re.sql
+++ b/sql-files/item_db_re.sql
@@ -5981,12 +5981,12 @@ REPLACE INTO `item_db` VALUES ('12198','Lucky_Rice_Cake','Lucky Rice Cake','2','
REPLACE INTO `item_db` VALUES ('12199','Rice_Scroll','Scroll of Magic','2','0','0','0','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','507',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('12200','Event_Cake','X-mas Cake','11','20','10','50','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','itemskill PR_MAGNIFICAT,3;','','');
REPLACE INTO `item_db` VALUES ('12201','Red_Box_C','Commonplace Red Box','2','20','10','200','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
-REPLACE INTO `item_db` VALUES ('12202','Str_Dish10_','Steamed Tongue','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_STR,1800000,10; percentheal 20,10;','','');
-REPLACE INTO `item_db` VALUES ('12203','Agi_Dish10_','Steamed Scorpion','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_AGI,1800000,10; percentheal 15,5;','','');
-REPLACE INTO `item_db` VALUES ('12204','Int_Dish10_','Dragon Breath Cocktail','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_INT,1800000,10; percentheal 10,20;','','');
-REPLACE INTO `item_db` VALUES ('12205','Dex_Dish10_','Hwergelmir\'s Tonic','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_DEX,1800000,10; percentheal 10,10;','','');
-REPLACE INTO `item_db` VALUES ('12206','Luk_Dish10_','Cooked Nine Tail\'s Tails','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_LUK,1800000,10; percentheal 14,8;','','');
-REPLACE INTO `item_db` VALUES ('12207','Vit_Dish10_','Stew Of Immortality','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_FOOD_VIT,1800000,10; percentheal 25,0;','','');
+REPLACE INTO `item_db` VALUES ('12202','Str_Dish10_','Steamed Tongue','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_STR_CASH, 1800000, 10); percentheal(20, 10);','','');
+REPLACE INTO `item_db` VALUES ('12203','Agi_Dish10_','Steamed Scorpion','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_AGI_CASH, 1800000, 10); percentheal(15, 5);','','');
+REPLACE INTO `item_db` VALUES ('12204','Int_Dish10_','Dragon Breath Cocktail','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_INT_CASH, 1800000, 10); percentheal(10, 20);','','');
+REPLACE INTO `item_db` VALUES ('12205','Dex_Dish10_','Hwergelmir\'s Tonic','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_DEX_CASH, 1800000, 10); percentheal(10, 10);','','');
+REPLACE INTO `item_db` VALUES ('12206','Luk_Dish10_','Cooked Nine Tail\'s Tails','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_LUK_CASH, 1800000, 10); percentheal(14, 8);','','');
+REPLACE INTO `item_db` VALUES ('12207','Vit_Dish10_','Stew Of Immortality','0','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start(SC_FOOD_VIT_CASH, 1800000, 10); percentheal(25, 0);','','');
REPLACE INTO `item_db` VALUES ('12208','Battle_Manual','Battle Manual','2','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','60000','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_CASH_PLUSEXP,1800000,50;','','');
REPLACE INTO `item_db` VALUES ('12209','Insurance','Life Insurance','2','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_CASH_DEATHPENALTY,1800000,0;','','');
REPLACE INTO `item_db` VALUES ('12210','Bubble_Gum','Bubble Gum','2','2','1','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','1','0','0','0','0','60000','475',NULL,'0',NULL,'0',NULL,'0','sc_start SC_CASH_RECEIVEITEM,1800000,200;','','');
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 204e70dd1..276e0eb08 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -437,6 +437,7 @@ enum {
OPTION_DRAGON5 = 0x04000000,
OPTION_HANBOK = 0x08000000,
OPTION_OKTOBERFEST = 0x10000000,
+ OPTION_SUMMER2 = 0x20000000,
#ifndef NEW_CARTS
OPTION_CART1 = 0x00000008,
OPTION_CART2 = 0x00000080,
@@ -448,7 +449,7 @@ enum {
#endif
// compound constants
OPTION_DRAGON = OPTION_DRAGON1|OPTION_DRAGON2|OPTION_DRAGON3|OPTION_DRAGON4|OPTION_DRAGON5,
- OPTION_COSTUME = OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER|OPTION_HANBOK|OPTION_OKTOBERFEST,
+ OPTION_COSTUME = OPTION_WEDDING | OPTION_XMAS | OPTION_SUMMER | OPTION_HANBOK | OPTION_OKTOBERFEST | OPTION_SUMMER2,
};
struct s_skill {
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 4c3d114a5..4d3a82ee2 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1714,7 +1714,21 @@ ACMD(bodystyle)
memset(atcmd_output, '\0', sizeof(atcmd_output));
- if (!*message || sscanf(message, "%d", &body_style) < 1) {
+ if ((sd->job & MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS
+ && (sd->job & MAPID_THIRDMASK) != MAPID_GENETIC
+ && (sd->job & MAPID_THIRDMASK) != MAPID_MECHANIC
+ && (sd->job & MAPID_THIRDMASK) != MAPID_ROYAL_GUARD
+ && (sd->job & MAPID_THIRDMASK) != MAPID_ARCH_BISHOP
+ && (sd->job & MAPID_THIRDMASK) != MAPID_RANGER
+ && (sd->job & MAPID_THIRDMASK) != MAPID_WARLOCK
+ && (sd->job & MAPID_THIRDMASK) != MAPID_SHADOW_CHASER
+ && (sd->job & MAPID_THIRDMASK) != MAPID_MINSTRELWANDERER
+ ) {
+ clif->message(fd, msg_fd(fd, 35)); // This job has no alternate body styles.
+ return false;
+ }
+
+ if (*message == '\0' || sscanf(message, "%d", &body_style) < 1) {
sprintf(atcmd_output, "Please, enter a body style (usage: @bodystyle <body ID: %d-%d>).", MIN_BODY_STYLE, MAX_BODY_STYLE);
clif->message(fd, atcmd_output);
return false;
@@ -1722,9 +1736,9 @@ ACMD(bodystyle)
if (body_style >= MIN_BODY_STYLE && body_style <= MAX_BODY_STYLE) {
pc->changelook(sd, LOOK_BODY2, body_style);
- clif->message(fd, msg_txt(36)); // Appearence changed.
+ clif->message(fd, msg_fd(fd, 36)); // Appearence changed.
} else {
- clif->message(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_fd(fd, 37)); // An invalid number was specified.
return false;
}
@@ -9263,7 +9277,12 @@ ACMD(searchstore){
searchstore->open(sd, 99, val);
return true;
}
-ACMD(costume){
+
+/*==========================================
+* @costume
+*------------------------------------------*/
+ACMD(costume)
+{
const char* names[] = {
"Wedding",
"Xmas",
@@ -9272,6 +9291,9 @@ ACMD(costume){
#if PACKETVER >= 20131218
"Oktoberfest",
#endif
+#if PACKETVER >= 20141022
+ "Summer2",
+#endif
};
const int name2id[] = {
SC_WEDDING,
@@ -9281,41 +9303,47 @@ ACMD(costume){
#if PACKETVER >= 20131218
SC_OKTOBERFEST,
#endif
+#if PACKETVER >= 20141022
+ SC_DRESS_UP,
+#endif
};
unsigned short k = 0, len = ARRAYLENGTH(names);
if (!*message) {
- for( k = 0; k < len; k++ ) {
- if( sd->sc.data[name2id[k]] ) {
- safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1473),names[k]);//Costume '%s' removed.
- clif->message(sd->fd,atcmd_output);
- status_change_end(&sd->bl,name2id[k],INVALID_TIMER);
+ for (k = 0; k < len; k++) {
+ if (sd->sc.data[name2id[k]]) {
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1473), names[k]); // Costume '%s' removed.
+ clif->message(sd->fd, atcmd_output);
+ status_change_end(&sd->bl, name2id[k], INVALID_TIMER);
return true;
}
}
- clif->message(sd->fd,msg_fd(fd,1472));
- for( k = 0; k < len; k++ ) {
- safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1471),names[k]);//-- %s
- clif->message(sd->fd,atcmd_output);
+
+ clif->message(sd->fd, msg_fd(fd, 1472)); // - Available Costumes
+
+ for (k = 0; k < len; k++) {
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1471), names[k]); //-- %s
+ clif->message(sd->fd, atcmd_output);
}
return false;
}
- for( k = 0; k < len; k++ ) {
- if( sd->sc.data[name2id[k]] ) {
- safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1470),names[k]);// You're already with a '%s' costume, type '@costume' to remove it.
- clif->message(sd->fd,atcmd_output);
+ for (k = 0; k < len; k++) {
+ if (sd->sc.data[name2id[k]]) {
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1470), names[k]); // You're already with a '%s' costume, type '@costume' to remove it.
+ clif->message(sd->fd, atcmd_output);
return false;
}
}
- for( k = 0; k < len; k++ ) {
- if( strcmpi(message,names[k]) == 0 )
+ for (k = 0; k < len; k++) {
+ if (strcmpi(message,names[k]) == 0)
break;
}
- if( k == len ) {
- safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1469),message);// '%s' is not a known costume
- clif->message(sd->fd,atcmd_output);
+
+ if (k == len) {
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1469), message); // '%s' is not a known costume
+ clif->message(sd->fd, atcmd_output);
return false;
}
@@ -9323,6 +9351,7 @@ ACMD(costume){
return true;
}
+
/* for debugging purposes (so users can easily provide us with debug info) */
/* should be trashed as soon as its no longer necessary */
ACMD(skdebug)
diff --git a/src/map/battle.c b/src/map/battle.c
index 69dd36fc3..57a74bba4 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -7036,12 +7036,13 @@ static const struct battle_data {
{ "combo_delay_rate", &battle_config.combo_delay_rate, 100, 0, INT_MAX, },
{ "item_check", &battle_config.item_check, 0, 0, 0xF, },
{ "item_use_interval", &battle_config.item_use_interval, 100, 0, INT_MAX, },
- { "cashfood_use_interval", &battle_config.cashfood_use_interval, 60000, 0, INT_MAX, },
{ "wedding_modifydisplay", &battle_config.wedding_modifydisplay, 0, 0, 1, },
{ "wedding_ignorepalette", &battle_config.wedding_ignorepalette, 0, 0, 1, },
{ "xmas_ignorepalette", &battle_config.xmas_ignorepalette, 0, 0, 1, },
{ "summer_ignorepalette", &battle_config.summer_ignorepalette, 0, 0, 1, },
{ "hanbok_ignorepalette", &battle_config.hanbok_ignorepalette, 0, 0, 1, },
+ { "oktoberfest_ignorepalette", &battle_config.oktoberfest_ignorepalette, 0, 0, 1, },
+ { "summer2_ignorepalette", &battle_config.summer2_ignorepalette, 0, 0, 1, },
{ "natural_healhp_interval", &battle_config.natural_healhp_interval, 6000, NATURAL_HEAL_INTERVAL, INT_MAX, },
{ "natural_healsp_interval", &battle_config.natural_healsp_interval, 8000, NATURAL_HEAL_INTERVAL, INT_MAX, },
{ "natural_heal_skill_interval", &battle_config.natural_heal_skill_interval, 10000, NATURAL_HEAL_INTERVAL, INT_MAX, },
@@ -7210,7 +7211,6 @@ static const struct battle_data {
{ "mob_npc_event_type", &battle_config.mob_npc_event_type, 1, 0, 1, },
{ "character_size", &battle_config.character_size, 1|2, 0, 1|2, },
{ "retaliate_to_master", &battle_config.retaliate_to_master, 1, 0, 1, },
- { "rare_drop_announce", &battle_config.rare_drop_announce, 0, 0, 10000, },
{ "duel_allow_pvp", &battle_config.duel_allow_pvp, 0, 0, 1, },
{ "duel_allow_gvg", &battle_config.duel_allow_gvg, 0, 0, 1, },
{ "duel_allow_teleport", &battle_config.duel_allow_teleport, 0, 0, 1, },
diff --git a/src/map/battle.h b/src/map/battle.h
index d582f3c92..a73c6dc44 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -240,12 +240,13 @@ struct Battle_Config {
int combo_delay_rate;
int item_check;
int item_use_interval; //[Skotlex]
- int cashfood_use_interval;
int wedding_modifydisplay;
int wedding_ignorepalette; //[Skotlex]
int xmas_ignorepalette; // [Valaris]
int summer_ignorepalette; // [Zephyrus]
int hanbok_ignorepalette;
+ int oktoberfest_ignorepalette;
+ int summer2_ignorepalette;
int natural_healhp_interval;
int natural_healsp_interval;
int natural_heal_skill_interval;
@@ -407,7 +408,6 @@ struct Battle_Config {
int mob_npc_event_type; //Determines on who the npc_event is executed. [Skotlex]
int character_size; // if riders have size=2, and baby class riders size=1 [Lupus]
- int rare_drop_announce; // chance <= to show rare drops global announces
int retaliate_to_master; //Whether when a mob is attacked by another mob, it will retaliate versus the mob or the mob's master. [Skotlex]
diff --git a/src/map/channel.c b/src/map/channel.c
index ee8242b23..9ec415883 100644
--- a/src/map/channel.c
+++ b/src/map/channel.c
@@ -26,6 +26,7 @@
#include "map/instance.h"
#include "map/irc-bot.h"
#include "map/map.h"
+#include "map/npc.h"
#include "map/pc.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
@@ -278,12 +279,21 @@ void channel_send(struct channel_data *chan, struct map_session_data *sd, const
clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd,1455));
return;
} else if (sd) {
+ int i;
+
safesnprintf(message, 150, "[ #%s ] %s : %s", chan->name, sd->status.name, msg);
clif->channel_msg(chan,sd,message);
if (chan->type == HCS_TYPE_IRC)
ircbot->relay(sd->status.name,msg);
if (chan->msg_delay != 0)
sd->hchsysch_tick = timer->gettick();
+
+ for (i = 0; i < MAX_EVENTQUEUE; i++) {
+ if (chan->handlers[i][0] != '\0') {
+ pc->setregstr(sd, script->add_str("@channelmes$"), msg);
+ npc->event(sd, chan->handlers[i], 0);
+ }
+ }
} else {
safesnprintf(message, 150, "[ #%s ] %s", chan->name, msg);
clif->channel_msg2(chan, message);
diff --git a/src/map/channel.h b/src/map/channel.h
index e8696fd90..4ac3c6037 100644
--- a/src/map/channel.h
+++ b/src/map/channel.h
@@ -23,6 +23,8 @@
#include "common/hercules.h"
#include "common/mmo.h"
+#include "map/map.h" // EVENT_NAME_LENGTH, MAX_EVENTQUEUE
+
/**
* Declarations
**/
@@ -85,6 +87,7 @@ struct channel_data {
unsigned char color;
struct DBMap *users;
struct DBMap *banned;
+ char handlers[MAX_EVENTQUEUE][EVENT_NAME_LENGTH];
unsigned int options;
unsigned int owner;
enum channel_types type;
diff --git a/src/map/clif.c b/src/map/clif.c
index d31cc70e9..524378439 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -3194,31 +3194,31 @@ void clif_changelook(struct block_list *bl,int type,int val)
vd->shield = val;
break;
case LOOK_BASE:
- if( !sd ) break;
+ if (sd == NULL)
+ break;
- if ( val == INVISIBLE_CLASS ) /* nothing to change look */
+ if (val == INVISIBLE_CLASS) /* nothing to change look */
return;
- if( sd->sc.option&OPTION_COSTUME )
+ if (sd->sc.option & OPTION_COSTUME)
vd->weapon = vd->shield = 0;
- if( !vd->cloth_color )
+ if (!vd->cloth_color)
break;
- if (sd->sc.option&OPTION_WEDDING && battle_config.wedding_ignorepalette)
+ if ((sd->sc.option & OPTION_WEDDING) != 0 && battle_config.wedding_ignorepalette == true)
+ vd->cloth_color = 0;
+ if ((sd->sc.option & OPTION_XMAS) != 0 && battle_config.xmas_ignorepalette == true)
vd->cloth_color = 0;
- if (sd->sc.option&OPTION_XMAS && battle_config.xmas_ignorepalette)
+ if ((sd->sc.option & OPTION_SUMMER) != 0 && battle_config.summer_ignorepalette == true)
vd->cloth_color = 0;
- if (sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette)
+ if ((sd->sc.option & OPTION_HANBOK) != 0 && battle_config.hanbok_ignorepalette == true)
vd->cloth_color = 0;
- if (sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette)
+ if ((sd->sc.option & OPTION_OKTOBERFEST) != 0 && battle_config.oktoberfest_ignorepalette == true)
vd->cloth_color = 0;
- if (sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */)
+ if ((sd->sc.option & OPTION_SUMMER2) != 0 && battle_config.summer2_ignorepalette == true)
vd->cloth_color = 0;
- if (vd->body_style && (
- sd->sc.option&OPTION_WEDDING || sd->sc.option&OPTION_XMAS ||
- sd->sc.option&OPTION_SUMMER || sd->sc.option&OPTION_HANBOK ||
- sd->sc.option&OPTION_OKTOBERFEST))
+ if (vd->body_style != 0 && (sd->sc.option & OPTION_COSTUME) != 0)
vd->body_style = 0;
break;
case LOOK_HAIR:
@@ -3237,16 +3237,18 @@ void clif_changelook(struct block_list *bl,int type,int val)
vd->hair_color = val;
break;
case LOOK_CLOTHES_COLOR:
- if( val && sd ) {
- if( sd->sc.option&OPTION_WEDDING && battle_config.wedding_ignorepalette )
+ if (val && sd != NULL) {
+ if ((sd->sc.option & OPTION_WEDDING) != 0 && battle_config.wedding_ignorepalette == true)
+ val = 0;
+ if ((sd->sc.option & OPTION_XMAS) != 0 && battle_config.xmas_ignorepalette == true)
val = 0;
- if( sd->sc.option&OPTION_XMAS && battle_config.xmas_ignorepalette )
+ if ((sd->sc.option & OPTION_SUMMER) != 0 && battle_config.summer_ignorepalette == true)
val = 0;
- if( sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette )
+ if ((sd->sc.option & OPTION_HANBOK) != 0 && battle_config.hanbok_ignorepalette == true)
val = 0;
- if( sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette )
+ if ((sd->sc.option & OPTION_OKTOBERFEST) != 0 && battle_config.oktoberfest_ignorepalette == true)
val = 0;
- if( sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */ )
+ if ((sd->sc.option & OPTION_SUMMER2) != 0 && battle_config.summer2_ignorepalette == true)
val = 0;
}
vd->cloth_color = val;
diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index 8b374c2bf..9a43bae14 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -2073,6 +2073,9 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char *
if ((t = libconfig->setting_get_member(it, "KeepAfterUse")))
id.flag.keepafteruse = libconfig->setting_get_bool(t) ? 1 : 0;
+ if ((t = libconfig->setting_get_member(it, "DropAnnounce")))
+ id.flag.drop_announce = libconfig->setting_get_bool(t) ? 1 : 0;
+
if (itemdb->lookup_const(it, "Delay", &i32) && i32 >= 0)
id.delay = i32;
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index 138a783ae..35cd154cb 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -111,8 +111,6 @@ enum item_itemid {
ITEMID_FRAGMENT_OF_CRYSTAL = 7321,
ITEMID_SKULL_ = 7420,
ITEMID_TOKEN_OF_SIEGFRIED = 7621,
- ITEMID_GOLD_KEY77 = 7782,
- ITEMID_SILVER_KEY77 = 7783,
ITEMID_SPECIAL_ALLOY_TRAP = 7940,
ITEMID_CATNIP_FRUIT = 11602,
ITEMID_RED_POUCH_OF_SURPRISE = 12024,
@@ -268,18 +266,6 @@ enum mercenary_scroll_item_list {
};
/**
- * Cash Food
- */
-enum cash_food_item_list {
- ITEMID_STR_DISH10_ = 12202,
- ITEMID_AGI_DISH10_, // 12203
- ITEMID_INT_DISH10_, // 12204
- ITEMID_DEX_DISH10_, // 12205
- ITEMID_LUK_DISH10_, // 12206
- ITEMID_VIT_DISH10_, // 12207
-};
-
-/**
* Geneticist
*/
enum geneticist_item_list {
@@ -510,6 +496,7 @@ struct item_data {
unsigned keepafteruse : 1;
unsigned force_serial : 1;
unsigned no_options: 1; // < disallows use of item options on the item. (non-equippable items are automatically flagged) [Smokexyz]
+ unsigned drop_announce : 1; // Official Drop Announce [Jedzkie]
} flag;
struct {// item stacking limitation
unsigned short amount;
@@ -557,7 +544,6 @@ struct item_data {
#define itemdb_is_spellbook(n) ((n) >= ITEMID_MAGIC_BOOK_FB && (n) <= ITEMID_MAGIC_BOOK_DL)
#define itemdb_is_poison(n) ((n) >= ITEMID_POISON_PARALYSIS && (n) <= ITEMID_POISON_FATIGUE)
#define itemid_isgemstone(n) ((n) >= ITEMID_YELLOW_GEMSTONE && (n) <= ITEMID_BLUE_GEMSTONE)
-#define itemdb_iscashfood(n) ((n) >= ITEMID_STR_DISH10_ && (n) <= ITEMID_VIT_DISH10_)
#define itemdb_is_GNbomb(n) ((n) >= ITEMID_APPLE_BOMB && (n) <= ITEMID_VERY_HARD_LUMP)
#define itemdb_is_GNthrowable(n) ((n) >= ITEMID_MYSTERIOUS_POWDER && (n) <= ITEMID_BLACK_THING_TO_THROW)
#define itemid_is_pilebunker(n) ((n) == ITEMID_PILEBUNCKER || (n) == ITEMID_PILEBUNCKER_P || (n) == ITEMID_PILEBUNCKER_S || (n) == ITEMID_PILEBUNCKER_T)
diff --git a/src/map/map.h b/src/map/map.h
index 8c5372093..d4284b3f7 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -553,6 +553,7 @@ enum status_point_types { //we better clean up this enum and change it name [Hem
SP_MOD_EXP=125,
SP_MOD_DROP=126,
SP_MOD_DEATH=127,
+ SP_BANKVAULT=128,
// Mercenaries
SP_MERCFLEE=165, SP_MERCKILLS=189, SP_MERCFAITH=190,
diff --git a/src/map/mob.c b/src/map/mob.c
index 74d25b805..52705cf4d 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -2151,6 +2151,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
struct map_session_data *sd = BL_CAST(BL_PC, src);
struct map_session_data *tmpsd[DAMAGELOG_SIZE] = { NULL };
struct map_session_data *mvp_sd = sd, *second_sd = NULL, *third_sd = NULL;
+ struct item_data *id = NULL;
struct {
struct party_data *p;
@@ -2439,23 +2440,13 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
ditem = mob->setdropitem(md->db->dropitem[i].nameid, 1, it);
- //A Rare Drop Global Announce by Lupus
- if( mvp_sd && drop_rate <= battle_config.rare_drop_announce ) {
- char message[128];
- sprintf (message, msg_txt(541), mvp_sd->status.name, md->name, it->jname, (float)drop_rate/100);
- //MSG: "'%s' won %s's %s (chance: %0.02f%%)"
- intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT);
+ // Official Drop Announce [Jedzkie]
+ if (mvp_sd != NULL) {
+ if ((id = itemdb->search(it->nameid)) != NULL && id->flag.drop_announce) {
+ clif->item_drop_announce(mvp_sd, it->nameid, md->name);
+ }
}
- /* heres the thing we got the feature set up however we're still discussing how to best define the ids,
- * so while we discuss, for a small period of time, the list is hardcoded (yes officially only those 2 use it,
- * thus why we're unsure on how to best place the setting) */
- /* temp, will not be hardcoded for long thudu. */
- // TODO: This should be a field in the item db.
- if (mvp_sd != NULL
- && (it->nameid == ITEMID_GOLD_KEY77 || it->nameid == ITEMID_SILVER_KEY77)) /* for when not hardcoded: add a check on mvp bonus drop as well */
- clif->item_drop_announce(mvp_sd, it->nameid, md->name);
-
// Announce first, or else ditem will be freed. [Lance]
// By popular demand, use base drop rate for autoloot code. [Skotlex]
mob->item_drop(md, dlist, ditem, 0, md->db->dropitem[i].p, homkillonly);
@@ -2592,14 +2583,6 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
clif->mvp_item(mvp_sd, item.nameid);
log_mvp[0] = item.nameid;
- //A Rare MVP Drop Global Announce by Lupus
- if (rate <= battle_config.rare_drop_announce) {
- char message[128];
- sprintf(message, msg_txt(541), mvp_sd->status.name, md->name, data->jname, rate/100.);
- //MSG: "'%s' won %s's %s (chance: %0.02f%%)"
- intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT);
- }
-
if((temp = pc->additem(mvp_sd,&item,1,LOG_TYPE_PICKDROP_PLAYER)) != 0) {
clif->additem(mvp_sd,0,0,temp);
map->addflooritem(&md->bl, &item, 1, mvp_sd->bl.m, mvp_sd->bl.x, mvp_sd->bl.y, mvp_sd->status.char_id, (second_sd?second_sd->status.char_id : 0), (third_sd ? third_sd->status.char_id : 0), 1);
diff --git a/src/map/packets.h b/src/map/packets.h
index cc2312356..d1875f2f0 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -4564,6 +4564,1229 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0967,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
+// 2016-01-27aRagexeRE
+#if PACKETVER >= 20160127
+// new packets
+ packet(0x0a4d,-1);
+// changed packet sizes
+#endif
+
+// 2016-01-27bRagexeRE
+#if PACKETVER == 20160127
+// shuffle packets
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0922,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x095a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-02-03aRagexeRE
+#if PACKETVER == 20160203
+// shuffle packets
+ packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x088c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0918,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x093e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0940,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0947,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0954,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-02-17cRagexeRE
+#if PACKETVER == 20160217
+// shuffle packets
+ packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0362,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0864,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0870,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0873,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x087a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0888,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x088f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0899,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a0,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a9,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x08ac,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08ad,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x091d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0920,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0926,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x092e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x093b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0941,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x094a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0966,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+#endif
+
+// 2016-03-02bRagexeRE
+#if PACKETVER == 20160302
+// shuffle packets
+ packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0819,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0864,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0865,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0873,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x087a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x087d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0883,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a6,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x08a9,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x091a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0927,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0945,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0950,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0957,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0968,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+#endif
+
+// 2016-03-02bRagexeRE
+#if PACKETVER >= 20160302
+// new packets
+ packet(0x0a4e,4);
+ packet(0x0a4f,-1,clif->pDull/*,XXX*/);
+ packet(0x0a50,6);
+ packet(0x0a51,34);
+// changed packet sizes
+#endif
+
+// 2016-03-09aRagexeRE
+#if PACKETVER == 20160309
+// shuffle packets
+ packet(0x023b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0281,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0838,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x083c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0873,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x087e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x089b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0920,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0922,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0929,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x092e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0932,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x094f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0956,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x096a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2016-03-16aRagexeRE
+#if PACKETVER >= 20160316
+// new packets
+ packet(0x0a52,20,clif->pDull/*,XXX*/);
+ packet(0x0a53,10);
+ packet(0x0a54,-1);
+ packet(0x0a55,2);
+ packet(0x0a56,6,clif->pDull/*,XXX*/);
+ packet(0x0a57,6);
+ packet(0x0a58,8);
+ packet(0x0a59,-1);
+ packet(0x0a5a,2,clif->pDull/*,XXX*/);
+ packet(0x0a5b,7);
+ packet(0x0a5c,18,clif->pDull/*,XXX*/);
+ packet(0x0a5d,6);
+// changed packet sizes
+#endif
+
+// 2016-03-23aRagexeRE
+#if PACKETVER >= 20160323
+// new packets
+ packet(0x0a68,3);
+ packet(0x0a69,6);
+ packet(0x0a6a,12);
+ packet(0x0a6b,-1);
+// changed packet sizes
+#endif
+
+// 2016-03-30aRagexeRE
+#if PACKETVER == 20160330
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x086d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0878,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0889,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0918,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0925,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x092a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x092c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0930,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0939,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x093b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-03-30aRagexeRE
+#if PACKETVER >= 20160330
+// new packets
+ packet(0x0a6c,7,clif->pDull/*,XXX*/);
+ packet(0x0a6d,-1);
+ packet(0x0a6e,-1);
+ packet(0x0a6f,-1);
+// changed packet sizes
+#endif
+
+// 2016-04-20aRagexeRE
+#if PACKETVER == 20160420
+// shuffle packets
+ packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0870,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0872,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0874,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0884,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a5,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0935,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x094e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-04-27aRagexeRE
+#if PACKETVER >= 20160427
+// new packets
+// changed packet sizes
+ packet(0x0a50,4);
+#endif
+
+// 2016-05-04aRagexeRE
+#if PACKETVER >= 20160504
+// new packets
+ packet(0x0a70,2,clif->pDull/*,XXX*/);
+ packet(0x0a71,-1);
+ packet(0x0a72,61);
+// changed packet sizes
+#endif
+
+// 2016-05-11aRagexeRE
+#if PACKETVER == 20160511
+// shuffle packets
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0894,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x089b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0918,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0940,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-05-11aRagexeRE
+#if PACKETVER >= 20160511
+// new packets
+ packet(0x0a73,6);
+ packet(0x0a74,8);
+// changed packet sizes
+#endif
+
+// 2016-05-18aRagexeRE
+#if PACKETVER >= 20160518
+// new packets
+ packet(0x0a76,80);
+// changed packet sizes
+ packet(0x0a73,2);
+#endif
+
+// 2016-05-25aRagexeRE
+#if PACKETVER == 20160525
+// shuffle packets
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x085e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x086a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x091d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x092c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0945,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x094a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0951,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0956,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-05-25aRagexeRE
+#if PACKETVER >= 20160525
+// new packets
+ packet(0x0a77,15);
+ packet(0x0a78,15);
+// changed packet sizes
+#endif
+
+// 2016-06-01aRagexeRE
+#if PACKETVER >= 20160601
+// new packets
+ packet(0x0a79,-1);
+ packet(0x0a7b,-1);
+ packet(0x0a7c,-1);
+ packet(0x0a7d,-1);
+// changed packet sizes
+#endif
+
+// 2016-06-08aRagexeRE
+#if PACKETVER == 20160608
+// shuffle packets
+ packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0437,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0802,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0889,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08a6,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x093b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x094d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x095b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0969,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-06-15aRagexeRE
+#if PACKETVER == 20160615
+// shuffle packets
+ packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0369,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x083c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0866,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0870,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x087e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x087f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0888,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x088a,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0891,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x092f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0947,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0948,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x094a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x094b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0954,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0957,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0958,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x095c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x095e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0961,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+#endif
+
+// 2016-06-15aRagexeRE
+#if PACKETVER >= 20160615
+// new packets
+ packet(0x0a7e,4);
+ packet(0x0a7f,-1);
+ packet(0x0a80,2);
+ packet(0x0a81,3);
+// changed packet sizes
+#endif
+
+// 2016-06-22aRagexeRE
+#if PACKETVER >= 20160622
+// new packets
+ packet(0x0a82,46);
+ packet(0x0a83,46);
+ packet(0x0a84,94);
+ packet(0x0a85,82);
+ packet(0x0a86,-1);
+ packet(0x0a87,4);
+ packet(0x0a88,2);
+// changed packet sizes
+#endif
+
+// 2016-06-29aRagexeRE
+#if PACKETVER >= 20160629
+// new packets
+ packet(0x0a89,32);
+ packet(0x0a8a,6);
+ packet(0x0a8b,2);
+ packet(0x0a8c,2);
+ packet(0x0a8d,-1);
+// changed packet sizes
+ packet(0x0a80,6);
+#endif
+
+// 2016-06-30aRagexeRE
+#if PACKETVER == 20160630
+// shuffle packets
+ packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x022d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0363,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x085e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0860,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0861,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0863,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0867,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x086b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0881,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x088e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0893,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0925,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x093e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0946,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0948,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x095a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0968,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0969,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+#endif
+
+// 2016-07-06cRagexeRE
+#if PACKETVER == 20160706
+// shuffle packets
+ packet(0x0362,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x085f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0860,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0869,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x086b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0884,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0886,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0892,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0899,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a5,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x08a8,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0918,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x091b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0924,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0926,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0927,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x092d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0939,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x093d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0944,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0945,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+#endif
+
+// 2016-07-06cRagexeRE
+#if PACKETVER >= 20160706
+// new packets
+ packet(0x0a81,3);
+// changed packet sizes
+ packet(0x0a7e,-1);
+ packet(0x0a89,57);
+#endif
+
+// 2016-07-13bRagexeRE
+#if PACKETVER == 20160713
+// shuffle packets
+ packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0363,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0838,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0860,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0865,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0877,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x087b,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0883,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x088d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0892,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0922,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0931,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0939,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0944,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0945,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0947,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0957,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x095b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+#endif
+
+// 2016-07-13aRagexeRE
+#if PACKETVER >= 20160713
+// new packets
+// changed packet sizes
+ packet(0x0a87,-1);
+#endif
+
+// 2016-07-20aRagexeRE
+#if PACKETVER == 20160720
+// shuffle packets
+ packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0365,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x07e4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0838,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x085b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x086a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0883,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0897,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x089e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08a0,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x08aa,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0917,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x093e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0946,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x094d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0953,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+#endif
+
+// 2016-07-20aRagexeRE
+#if PACKETVER >= 20160720
+// new packets
+ packet(0x0a8e,2);
+ packet(0x0a8f,2);
+ packet(0x0a90,3);
+// changed packet sizes
+#endif
+
+// 2016-07-27aRagexeRE
+#if PACKETVER >= 20160727
+// new packets
+ packet(0x0a91,-1);
+ packet(0x0a92,-1);
+ packet(0x0a93,3);
+// changed packet sizes
+#endif
+
+// 2016-07-27bRagexeRE
+#if PACKETVER == 20160727
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0363,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0436,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x07ec,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0869,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0874,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0877,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0883,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0887,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x089f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a4,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x08a7,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x092e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0936,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0941,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0946,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0949,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0951,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0966,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+#endif
+
+// 2016-08-03bRagexeRE
+#if PACKETVER >= 20160803
+// new packets
+ packet(0x0a94,2);
+// changed packet sizes
+ packet(0x0a81,4);
+#endif
+
+// 2016-08-31bRagexeRE
+#if PACKETVER == 20160831
+// shuffle packets
+ packet(0x022d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0366,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0835,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0876,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x087c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x08a8,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x08a9,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0917,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0938,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0946,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x094f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0950,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0954,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0957,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x095e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0960,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0964,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+#endif
+
+// 2016-09-07aRagexeRE
+#if PACKETVER == 20160907
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x091c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-09-07aRagexeRE
+#if PACKETVER >= 20160907
+// new packets
+ packet(0x0a95,4);
+// changed packet sizes
+#endif
+
+// 2016-09-21bRagexeRE
+#if PACKETVER == 20160921
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x094a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-09-21bRagexeRE
+#if PACKETVER >= 20160921
+// new packets
+ packet(0x0a96,51);
+// changed packet sizes
+ packet(0x0a37,59); // ZC_ITEM_PICKUP_ACK_V7
+#endif
+
+// 2016-09-28cRagexeRE
+#if PACKETVER >= 20160928
+// new packets
+ packet(0x0a97,8);
+ packet(0x0a98,12);
+ packet(0x0a99,8);
+ packet(0x0a9a,10);
+ packet(0x0a9b,-1);
+ packet(0x0a9c,2);
+ packet(0x0a9d,4);
+ packet(0x0a9e,2);
+ packet(0x0a9f,2);
+// changed packet sizes
+#endif
+
+// 2016-10-05aRagexeRE
+#if PACKETVER >= 20161005
+// new packets
+ packet(0x0aa0,2,clif->pDull/*,XXX*/);
+ packet(0x0aa1,4);
+ packet(0x0aa2,-1);
+ packet(0x0aa3,7);
+ packet(0x0aa4,2);
+// changed packet sizes
+#endif
+
+// 2016-10-12aRagexeRE
+#if PACKETVER == 20161012
+// shuffle packets
+ packet(0x023b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0365,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0369,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x07ec,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0819,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x085b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0863,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0868,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0872,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0875,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0880,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0893,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x08a0,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x092d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0937,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0939,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0943,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0944,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0951,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x095c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0966,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+#endif
+
+// 2016-10-26bRagexeRE
+#if PACKETVER == 20161026
+// shuffle packets
+ packet(0x0363,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0862,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x086a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x086c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x086e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x087a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x087c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x087f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0886,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0891,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0894,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0898,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x091a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0926,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x092e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x092f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0930,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x094b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0953,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x095c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x095e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0962,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2016-10-26bRagexeRE
+#if PACKETVER >= 20161026
+// new packets
+ packet(0x0aa5,-1);
+ packet(0x0aa6,36);
+// changed packet sizes
+#endif
+
+// 2016-11-09bRagexeRE
+#if PACKETVER == 20161109
+// shuffle packets
+ packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0362,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x085d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x085e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x086a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x086d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0870,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0876,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0881,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x088e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0891,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0898,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x089a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x08a7,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0937,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x093c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x093f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0954,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2016-11-30aRagexeRE
+#if PACKETVER >= 20161130
+// new packets
+ packet(0x0aa7,6);
+ packet(0x0aa8,5);
+ packet(0x0aa9,-1);
+ packet(0x0aaa,-1);
+ packet(0x0aab,-1);
+// changed packet sizes
+#endif
+
+// 2016-12-07eRagexeRE
+#if PACKETVER == 20161207
+// shuffle packets
+ packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0867,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0868,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0875,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0886,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x08a2,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0943,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0965,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-12-07cRagexeRE
+#if PACKETVER >= 20161207
+// new packets
+ packet(0x0aac,67);
+// changed packet sizes
+#endif
+
+// 2016-12-14bRagexeRE
+#if PACKETVER == 20161214
+// shuffle packets
+ packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x02c4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x085a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x0862,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x086d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0887,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0899,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x08a6,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x092e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x093d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2016-12-21aRagexeRE
+#if PACKETVER == 20161221
+// shuffle packets
+ packet(0x035f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0366,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x085b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0866,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0876,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x0881,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x088c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0890,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0899,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x089a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x089b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x08aa,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x091e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x092c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x092e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0943,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x094b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+#endif
+
+// 2016-12-21aRagexeRE
+#if PACKETVER >= 20161221
+// new packets
+ packet(0x0aad,47);
+ packet(0x0aae,2);
+ packet(0x0aaf,6);
+ packet(0x0ab0,6);
+ packet(0x0ab1,10);
+// changed packet sizes
+#endif
+
+// 2016-12-28aRagexeRE
+#if PACKETVER >= 20161228
+// new packets
+// changed packet sizes
+ packet(0x0ab1,14);
+#endif
+
+// 2017-01-04bRagexeRE
+#if PACKETVER >= 20170104
+// new packets
+ packet(0x0ab2,7);
+ packet(0x0ab3,15);
+// changed packet sizes
+#endif
+
+// 2017-01-11aRagexeRE
+#if PACKETVER >= 20170111
+// new packets
+ packet(0x0ab4,4);
+ packet(0x0ab5,2);
+ packet(0x0ab6,6);
+ packet(0x0ab7,4);
+ packet(0x0ab8,2);
+ packet(0x0ab9,39);
+// changed packet sizes
+#endif
+
+// 2017-01-18aRagexeRE
+#if PACKETVER >= 20170118
+// new packets
+ packet(0x0aba,2);
+ packet(0x0abb,2);
+// changed packet sizes
+ packet(0x0aad,51);
+ packet(0x0ab3,19);
+#endif
+
+// 2017-02-01aRagexeRE
+#if PACKETVER >= 20170201
+// new packets
+ packet(0x0abc,-1);
+// changed packet sizes
+#endif
+
+// 2017-02-15aRagexeRE
+#if PACKETVER >= 20170215
+// new packets
+ packet(0x0abd,10);
+// changed packet sizes
+#endif
+
+// 2017-02-22aRagexeRE
+#if PACKETVER >= 20170222
+// new packets
+ packet(0x0abe,116);
+ packet(0x0abf,114);
+// changed packet sizes
+#endif
+
+// 2017-02-28aRagexeRE
+#if PACKETVER >= 20170228
+// new packets
+ packet(0x0ac0,26);
+ packet(0x0ac1,26);
+ packet(0x0ac2,-1);
+ packet(0x0ac3,2);
+ packet(0x0ac4,-1);
+ packet(0x0ac5,156,clif->pDull/*,XXX*/);
+ packet(0x0ac6,156);
+ packet(0x0ac7,156);
+// changed packet sizes
+ packet(0x0abe,-1);
+ packet(0x0abf,-1);
+#endif
+
+// 2017-03-08bRagexeRE
+#if PACKETVER >= 20170308
+// new packets
+ packet(0x0ac8,2);
+ packet(0x0ac9,-1);
+// changed packet sizes
+#endif
+
+// 2017-03-22aRagexeRE
+#if PACKETVER >= 20170322
+// new packets
+ packet(0x0aca,3);
+// changed packet sizes
+#endif
+
+// 2017-03-29cRagexeRE
+#if PACKETVER >= 20170329
+// new packets
+// changed packet sizes
+ packet(0x0aac,69);
+#endif
+
+// 2017-04-05bRagexeRE
+#if PACKETVER >= 20170405
+// new packets
+ packet(0x0acb,12);
+ packet(0x0acc,18);
+// changed packet sizes
+#endif
+
+// 2017-04-19bRagexeRE
+#if PACKETVER >= 20170419
+// new packets
+ packet(0x0acd,23);
+// changed packet sizes
+ packet(0x0a99,4);
+#endif
+
/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */
#if PACKETVER >= 20110817
packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); /* Thanks to Shakto */
@@ -4917,6 +6140,107 @@ packet(0x96e,-1,clif->ackmergeitems);
packetKeys(0x347D68D0,0x2C705320,0x7B4A199D); /* 4144 */
#endif
+#if PACKETVER == 20160127
+ packetKeys(0x6B1E7146,0x612C47E6,0x274E56EE); /* 4144 */
+#endif
+
+#if PACKETVER == 20160203
+ packetKeys(0x3E1411AF,0x6C744497,0x7CFA1BDE); /* 4144 */
+#endif
+
+#if PACKETVER == 20160217
+ packetKeys(0x25895A8E,0x09421C19,0x763A2D7A); /* 4144 */
+#endif
+
+#if PACKETVER == 20160302
+ packetKeys(0x7B4441B9,0x5BBC63AF,0x45DA0E71); /* 4144 */
+#endif
+
+#if PACKETVER == 20160309
+ packetKeys(0x21587520,0x353A7706,0x1B722B25); /* 4144 */
+#endif
+
+#if PACKETVER == 20160330
+ packetKeys(0x02050940,0x545336FF,0x7E7D4902); /* 4144 */
+#endif
+
+#if PACKETVER == 20160420
+ packetKeys(0x67D2163A,0x3068215B,0x4835474D); /* 4144 */
+#endif
+
+#if PACKETVER == 20160511
+ packetKeys(0x3C666FE2,0x27E84E3E,0x53E11BA5); /* 4144 */
+#endif
+
+#if PACKETVER == 20160525
+ packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); /* 4144 */
+#endif
+
+#if PACKETVER == 20160608
+ packetKeys(0x11D74609,0x77C43E8A,0x44290F53); /* 4144 */
+#endif
+
+#if PACKETVER == 20160615
+ packetKeys(0x062C5C26,0x6CF47E82,0x4DD53480); /* 4144 */
+#endif
+
+#if PACKETVER == 20160630
+ packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855); /* 4144 */
+#endif
+
+#if PACKETVER == 20160706
+ packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C); /* 4144 */
+#endif
+
+#if PACKETVER == 20160713
+ packetKeys(0x714F2495,0x7DDC6F32,0x3FD8533D); /* 4144 */
+#endif
+
+#if PACKETVER == 20160720
+ packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); /* 4144 */
+#endif
+
+#if PACKETVER == 20160727
+ packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7); /* 4144 */
+#endif
+
+#if PACKETVER == 20160831
+ packetKeys(0x564E13B0,0x7F680549,0x382D273B); /* 4144 */
+#endif
+
+#if PACKETVER == 20160907
+ packetKeys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD); /* 4144 */
+#endif
+
+#if PACKETVER == 20160921
+ packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD); /* 4144 */
+#endif
+
+#if PACKETVER == 20161012
+ packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6); /* 4144 */
+#endif
+
+#if PACKETVER == 20161026
+ packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB); /* 4144 */
+#endif
+
+#if PACKETVER == 20161109
+ packetKeys(0x0A5277C0,0x2DB17506,0x0E8F26DA); /* 4144 */
+#endif
+
+#if PACKETVER == 20161207
+ packetKeys(0x52D267AA,0x4FE42156,0x1292153E); /* 4144 */
+#endif
+
+#if PACKETVER == 20161214
+ packetKeys(0x4DDE217B,0x07863AE0,0x5B591656); /* 4144 */
+#endif
+
+#if PACKETVER == 20161221
+ packetKeys(0x69CB4F56,0x793C165E,0x673A2354); /* 4144 */
+#endif
+
+
#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3);
#endif
diff --git a/src/map/pc.c b/src/map/pc.c
index 854913c28..2303a83ca 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4907,25 +4907,6 @@ int pc_isUseitem(struct map_session_data *sd,int n)
if( map->list[sd->bl.m].flag.nobranch || map_flag_gvg2(sd->bl.m) )
return 0;
break;
- case ITEMID_BUBBLE_GUM:
- case ITEMID_COMP_BUBBLE_GUM:
- if( sd->sc.data[SC_CASH_RECEIVEITEM] )
- return 0;
- break;
- case ITEMID_BATTLE_MANUAL:
- case ITEMID_COMP_BATTLE_MANUAL:
- case ITEMID_THICK_MANUAL50:
- case ITEMID_NOBLE_NAMEPLATE:
- case ITEMID_BATTLE_MANUAL25:
- case ITEMID_BATTLE_MANUAL100:
- case ITEMID_BATTLE_MANUAL_X3:
- if( sd->sc.data[SC_CASH_PLUSEXP] )
- return 0;
- break;
- case ITEMID_JOB_MANUAL50:
- if( sd->sc.data[SC_CASH_PLUSONLYJOBEXP] )
- return 0;
- break;
// Mercenary Items
case ITEMID_MERCENARY_RED_POTION:
@@ -5043,7 +5024,7 @@ int pc_useitem(struct map_session_data *sd,int n) {
#if PACKETVER >= 20110309
clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS);
#else
- clif->messagecolor_self(fd, COLOR_WHITE, msg_fd(fd, 48));
+ clif->messagecolor_self(sd->fd, COLOR_WHITE, msg_sd(sd, 48));
#endif
return 0;
}
@@ -5079,10 +5060,8 @@ int pc_useitem(struct map_session_data *sd,int n) {
))
return 0;
- //Prevent mass item usage. [Skotlex]
- if( DIFF_TICK(sd->canuseitem_tick, tick) > 0 ||
- (itemdb_iscashfood(nameid) && DIFF_TICK(sd->canusecashfood_tick, tick) > 0)
- )
+ // Prevent mass item usage. [Skotlex]
+ if (DIFF_TICK(sd->canuseitem_tick, tick) > 0)
return 0;
/* Items with delayed consume are not meant to work while in mounts except reins of mount(12622) */
@@ -5175,10 +5154,8 @@ int pc_useitem(struct map_session_data *sd,int n) {
script->potion_flag = 3; //Even more effective potions.
}
- //Update item use time.
+ // Update item use time.
sd->canuseitem_tick = tick + battle_config.item_use_interval;
- if( itemdb_iscashfood(nameid) )
- sd->canusecashfood_tick = tick + battle_config.cashfood_use_interval;
script->run_use_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id);
script->potion_flag = 0;
@@ -5495,13 +5472,6 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil
//Logs items, Stolen from mobs [Lupus]
logs->pick_mob(md, LOG_TYPE_STEAL, -1, &tmp_item, data);
- //A Rare Steal Global Announce by Lupus
- if(md->db->dropitem[i].p<=battle_config.rare_drop_announce) {
- char message[128];
- sprintf (message, msg_txt(542), sd->status.name, md->db->jname, data->jname, (float)md->db->dropitem[i].p / 100);
- //MSG: "'%s' stole %s's %s (chance: %0.02f%%)"
- intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT);
- }
return 1;
}
@@ -8145,6 +8115,7 @@ int pc_readparam(const struct map_session_data *sd, int type)
case SP_SKILLPOINT: val = sd->status.skill_point; break;
case SP_STATUSPOINT: val = sd->status.status_point; break;
case SP_ZENY: val = sd->status.zeny; break;
+ case SP_BANKVAULT: val = sd->status.bank_vault; break;
case SP_BASELEVEL: val = sd->status.base_level; break;
case SP_JOBLEVEL: val = sd->status.job_level; break;
case SP_CLASS: val = sd->status.class; break;
@@ -8289,6 +8260,7 @@ int pc_readparam(const struct map_session_data *sd, int type)
*------------------------------------------*/
int pc_setparam(struct map_session_data *sd,int type,int val)
{
+ int delta;
nullpo_ret(sd);
switch(type){
@@ -8339,6 +8311,19 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
logs->zeny(sd, LOG_TYPE_SCRIPT, sd, -(sd->status.zeny - cap_value(val, 0, MAX_ZENY)));
sd->status.zeny = cap_value(val, 0, MAX_ZENY);
break;
+ case SP_BANKVAULT:
+ val = cap_value(val, 0, MAX_BANK_ZENY);
+ delta = (val - sd->status.bank_vault);
+ sd->status.bank_vault = val;
+ if (map->save_settings & 256) {
+ chrif->save(sd, 0); // send to char server
+ }
+ if (delta > 0) {
+ clif->bank_deposit(sd, BDA_SUCCESS);
+ } else if (delta < 0) {
+ clif->bank_withdraw(sd, BWA_SUCCESS);
+ }
+ return 1; // the vault uses a different packet
case SP_BASEEXP:
if(pc->nextbaseexp(sd) > 0) {
sd->status.base_exp = val;
diff --git a/src/map/script.c b/src/map/script.c
index 7f3b3f9a2..75f747fb6 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -2384,6 +2384,7 @@ void script_load_parameters(void)
{"SkillPoint", SP_SKILLPOINT},
{"Class", SP_CLASS},
{"Zeny", SP_ZENY},
+ {"BankVault", SP_BANKVAULT},
{"Sex", SP_SEX},
{"NextBaseExp", SP_NEXTBASEEXP},
{"NextJobExp", SP_NEXTJOBEXP},
@@ -21632,6 +21633,67 @@ BUILDIN(useatcmd)
return true;
}
+BUILDIN(has_permission)
+{
+ struct map_session_data *sd;
+ enum e_pc_permission perm;
+
+ if (script_hasdata(st, 3)) {
+ sd = map->id2sd(script_getnum(st, 3));
+ } else {
+ sd = script->rid2sd(st);
+ }
+
+ if (sd == NULL) {
+ script_pushint(st, 0);
+ return false;
+ }
+
+ if (script_isstringtype(st, 2)) {
+ // to check for plugin permissions
+ int i = 0, j = -1;
+ const char *name = script_getstr(st, 2);
+ for (; i < pcg->permission_count; ++i) {
+ if (strcmp(pcg->permissions[i].name, name) == 0) {
+ j = i;
+ break;
+ }
+ }
+ if (j < 0) {
+ ShowError("script:has_permission: unknown permission: %s\n", name);
+ script_pushint(st, 0);
+ return false;
+ }
+ script_pushint(st, pc_has_permission(sd, pcg->permissions[j].permission));
+ return true;
+ }
+
+ // to ckeck for built-in permission
+ perm = script_getnum(st, 2);
+ script_pushint(st, pc_has_permission(sd, perm));
+ return true;
+}
+
+BUILDIN(can_use_command)
+{
+ struct map_session_data *sd;
+ const char *cmd = script_getstr(st, 2);
+
+ if (script_hasdata(st, 3)) {
+ sd = map->id2sd(script_getnum(st, 3));
+ } else {
+ sd = script->rid2sd(st);
+ }
+
+ if (sd == NULL) {
+ script_pushint(st, 0);
+ return false;
+ }
+
+ script_pushint(st, pc->can_use_command(sd, cmd));
+ return true;
+}
+
/* getrandgroupitem <container_item_id>,<quantity> */
BUILDIN(getrandgroupitem)
{
@@ -22871,6 +22933,55 @@ BUILDIN(channelmes)
return true;
}
+BUILDIN(addchannelhandler)
+{
+ int i;
+ const char *channelname = script_getstr(st, 2);
+ const char *eventname = script_getstr(st, 3);
+ struct channel_data *chan = channel->search(channelname, NULL);
+
+ if (!chan) {
+ script_pushint(st, 0);
+ return true;
+ }
+
+ ARR_FIND(0, MAX_EVENTQUEUE, i, chan->handlers[i][0] == '\0');
+
+ if (i < MAX_EVENTQUEUE) {
+ safestrncpy(chan->handlers[i], eventname, EVENT_NAME_LENGTH); //Event enqueued.
+ script_pushint(st, 1);
+ return true;
+ }
+
+ ShowWarning("script:addchannelhandler: too many handlers for channel %s.\n", channelname);
+ script_pushint(st, 0);
+ return true;
+}
+
+BUILDIN(removechannelhandler)
+{
+ int i;
+ const char *channelname = script_getstr(st, 2);
+ const char *eventname = script_getstr(st, 3);
+ struct channel_data *chan = channel->search(channelname, NULL);
+
+ if (!chan) {
+ script_pushint(st, 0);
+ return true;
+ }
+
+ for (i = 0; i < MAX_EVENTQUEUE; i++) {
+ if (strcmp(chan->handlers[i], eventname) == 0) {
+ chan->handlers[i][0] = '\0';
+ script_pushint(st, 1);
+ return true;
+ }
+ }
+
+ script_pushint(st, 0);
+ return true;
+}
+
/** By Cydh
Display script message
showscript "<message>"{,<GID>};
@@ -23606,6 +23717,8 @@ void script_parse_builtin(void) {
BUILDIN_DEF(bindatcmd, "ss???"),
BUILDIN_DEF(unbindatcmd, "s"),
BUILDIN_DEF(useatcmd, "s"),
+ BUILDIN_DEF(has_permission, "v?"),
+ BUILDIN_DEF(can_use_command, "s?"),
/**
* Item bound [Xantara] [Akinari] [Mhalicot/Hercules]
@@ -23665,6 +23778,8 @@ void script_parse_builtin(void) {
BUILDIN_DEF(navigateto, "s??????"),
BUILDIN_DEF(channelmes, "ss"),
+ BUILDIN_DEF(addchannelhandler, "ss"),
+ BUILDIN_DEF(removechannelhandler, "ss"),
BUILDIN_DEF(showscript, "s?"),
BUILDIN_DEF(mergeitem,""),
BUILDIN_DEF(_,"s"),
@@ -23711,6 +23826,7 @@ void script_hardcoded_constants(void)
script->set_constant("MAX_CART",MAX_INVENTORY,false, false);
script->set_constant("MAX_INVENTORY",MAX_INVENTORY,false, false);
script->set_constant("MAX_ZENY",MAX_ZENY,false, false);
+ script->set_constant("MAX_BANK_ZENY", MAX_BANK_ZENY, false, false);
script->set_constant("MAX_BG_MEMBERS",MAX_BG_MEMBERS,false, false);
script->set_constant("MAX_CHAT_USERS",MAX_CHAT_USERS,false, false);
script->set_constant("MAX_REFINE",MAX_REFINE,false, false);
@@ -23740,6 +23856,7 @@ void script_hardcoded_constants(void)
script->set_constant("Option_Dragon5",OPTION_DRAGON5,false, false);
script->set_constant("Option_Hanbok",OPTION_HANBOK,false, false);
script->set_constant("Option_Oktoberfest",OPTION_OKTOBERFEST,false, false);
+ script->set_constant("Option_Summer2", OPTION_SUMMER2, false, false);
script->constdb_comment("status option compounds");
script->set_constant("Option_Dragon",OPTION_DRAGON,false, false);
@@ -23850,6 +23967,34 @@ void script_hardcoded_constants(void)
script->set_constant("BL_CHAR",BL_CHAR,false, false);
script->set_constant("BL_ALL",BL_ALL,false, false);
+ script->constdb_comment("Player permissions");
+ script->set_constant("PERM_TRADE", PC_PERM_TRADE, false, false);
+ script->set_constant("PERM_PARTY", PC_PERM_PARTY, false, false);
+ script->set_constant("PERM_ALL_SKILL", PC_PERM_ALL_SKILL, false, false);
+ script->set_constant("PERM_USE_ALL_EQUIPMENT", PC_PERM_USE_ALL_EQUIPMENT, false, false);
+ script->set_constant("PERM_SKILL_UNCONDITIONAL", PC_PERM_SKILL_UNCONDITIONAL, false, false);
+ script->set_constant("PERM_JOIN_ALL_CHAT", PC_PERM_JOIN_ALL_CHAT, false, false);
+ script->set_constant("PERM_NO_CHAT_KICK", PC_PERM_NO_CHAT_KICK, false, false);
+ script->set_constant("PERM_HIDE_SESSION", PC_PERM_HIDE_SESSION, false, false);
+ script->set_constant("PERM_RECEIVE_HACK_INFO", PC_PERM_RECEIVE_HACK_INFO, false, false);
+ script->set_constant("PERM_WARP_ANYWHERE", PC_PERM_WARP_ANYWHERE, false, false);
+ script->set_constant("PERM_VIEW_HPMETER", PC_PERM_VIEW_HPMETER, false, false);
+ script->set_constant("PERM_VIEW_EQUIPMENT", PC_PERM_VIEW_EQUIPMENT, false, false);
+ script->set_constant("PERM_USE_CHECK", PC_PERM_USE_CHECK, false, false);
+ script->set_constant("PERM_USE_CHANGEMAPTYPE", PC_PERM_USE_CHANGEMAPTYPE, false, false);
+ script->set_constant("PERM_USE_ALL_COMMANDS", PC_PERM_USE_ALL_COMMANDS, false, false);
+ script->set_constant("PERM_RECEIVE_REQUESTS", PC_PERM_RECEIVE_REQUESTS, false, false);
+ script->set_constant("PERM_SHOW_BOSS", PC_PERM_SHOW_BOSS, false, false);
+ script->set_constant("PERM_DISABLE_PVM", PC_PERM_DISABLE_PVM, false, false);
+ script->set_constant("PERM_DISABLE_PVP", PC_PERM_DISABLE_PVP, false, false);
+ script->set_constant("PERM_DISABLE_CMD_DEAD", PC_PERM_DISABLE_CMD_DEAD, false, false);
+ script->set_constant("PERM_HCHSYS_ADMIN", PC_PERM_HCHSYS_ADMIN, false, false);
+ script->set_constant("PERM_TRADE_BOUND", PC_PERM_TRADE_BOUND, false, false);
+ script->set_constant("PERM_DISABLE_PICK_UP", PC_PERM_DISABLE_PICK_UP, false, false);
+ script->set_constant("PERM_DISABLE_STORE", PC_PERM_DISABLE_STORE, false, false);
+ script->set_constant("PERM_DISABLE_EXP", PC_PERM_DISABLE_EXP, false, false);
+ script->set_constant("PERM_DISABLE_SKILL_USAGE", PC_PERM_DISABLE_SKILL_USAGE, false, false);
+
script->constdb_comment("Renewal");
#ifdef RENEWAL
script->set_constant("RENEWAL", 1, false, false);
diff --git a/src/map/status.c b/src/map/status.c
index d8fb9a350..c3e5a3f40 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -1000,6 +1000,7 @@ void initChangeTables(void)
status->dbs->IconChangeTable[SC_MONSTER_TRANSFORM] = SI_MONSTER_TRANSFORM;
// Costumes
+ status->dbs->IconChangeTable[SC_DRESS_UP] = SI_DRESS_UP;
status->dbs->IconChangeTable[SC_MOONSTAR] = SI_MOONSTAR;
status->dbs->IconChangeTable[SC_SUPER_STAR] = SI_SUPER_STAR;
status->dbs->IconChangeTable[SC_STRANGELIGHTS] = SI_STRANGELIGHTS;
@@ -1178,6 +1179,7 @@ void initChangeTables(void)
status->dbs->ChangeFlagTable[SC_MVPCARD_ORCLORD] |= SCB_ALL;
// Costumes
+ status->dbs->ChangeFlagTable[SC_DRESS_UP] |= SCB_NONE;
status->dbs->ChangeFlagTable[SC_MOONSTAR] |= SCB_NONE;
status->dbs->ChangeFlagTable[SC_SUPER_STAR] |= SCB_NONE;
status->dbs->ChangeFlagTable[SC_STRANGELIGHTS] |= SCB_NONE;
@@ -6873,23 +6875,20 @@ void status_set_viewdata(struct block_list *bl, int class_)
sd->vd.sex = sd->status.sex;
if (sd->vd.cloth_color) {
- if (sd->sc.option&OPTION_WEDDING && battle_config.wedding_ignorepalette)
- sd->vd.cloth_color = 0;
- if (sd->sc.option&OPTION_XMAS && battle_config.xmas_ignorepalette)
- sd->vd.cloth_color = 0;
- if (sd->sc.option&OPTION_SUMMER && battle_config.summer_ignorepalette)
- sd->vd.cloth_color = 0;
- if (sd->sc.option&OPTION_HANBOK && battle_config.hanbok_ignorepalette)
- sd->vd.cloth_color = 0;
- if (sd->sc.option&OPTION_OKTOBERFEST /* TODO: config? */)
+ if ((sd->sc.option & OPTION_WEDDING) != 0 && battle_config.wedding_ignorepalette == true)
+ sd->vd.cloth_color = 0;
+ if ((sd->sc.option & OPTION_XMAS) != 0 && battle_config.xmas_ignorepalette == true)
+ sd->vd.cloth_color = 0;
+ if ((sd->sc.option & OPTION_SUMMER) != 0 && battle_config.summer_ignorepalette == true)
+ sd->vd.cloth_color = 0;
+ if ((sd->sc.option & OPTION_HANBOK) != 0 && battle_config.hanbok_ignorepalette == true)
+ sd->vd.cloth_color = 0;
+ if ((sd->sc.option & OPTION_OKTOBERFEST) != 0 && battle_config.oktoberfest_ignorepalette == true)
+ sd->vd.cloth_color = 0;
+ if ((sd->sc.option & OPTION_SUMMER2) != 0 && battle_config.summer2_ignorepalette == true)
sd->vd.cloth_color = 0;
}
- if (sd->vd.body_style
- && (sd->sc.option&OPTION_WEDDING
- || sd->sc.option&OPTION_XMAS
- || sd->sc.option&OPTION_SUMMER
- || sd->sc.option&OPTION_HANBOK
- || sd->sc.option&OPTION_OKTOBERFEST))
+ if (sd->vd.body_style != 0 && (sd->sc.option & OPTION_COSTUME) != 0)
sd->vd.body_style = 0;
} else if (vd != NULL) {
memcpy(&sd->vd, vd, sizeof(struct view_data));
@@ -7767,30 +7766,6 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
if (sc->data[SC_FOOD_LUK_CASH] && sc->data[SC_FOOD_LUK_CASH]->val1 > val1)
return 0;
break;
- case SC_FOOD_STR_CASH:
- if (sc->data[SC_FOOD_STR] && sc->data[SC_FOOD_STR]->val1 > val1)
- return 0;
- break;
- case SC_FOOD_AGI_CASH:
- if (sc->data[SC_FOOD_AGI] && sc->data[SC_FOOD_AGI]->val1 > val1)
- return 0;
- break;
- case SC_FOOD_VIT_CASH:
- if (sc->data[SC_FOOD_VIT] && sc->data[SC_FOOD_VIT]->val1 > val1)
- return 0;
- break;
- case SC_FOOD_INT_CASH:
- if (sc->data[SC_FOOD_INT] && sc->data[SC_FOOD_INT]->val1 > val1)
- return 0;
- break;
- case SC_FOOD_DEX_CASH:
- if (sc->data[SC_FOOD_DEX] && sc->data[SC_FOOD_DEX]->val1 > val1)
- return 0;
- break;
- case SC_FOOD_LUK_CASH:
- if (sc->data[SC_FOOD_LUK] && sc->data[SC_FOOD_LUK]->val1 > val1)
- return 0;
- break;
case SC_CAMOUFLAGE:
if( sd && pc->checkskill(sd, RA_CAMOUFLAGE) < 3 && !skill->check_camouflage(bl,NULL) )
return 0;
@@ -8009,40 +7984,46 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
status_change_end(bl, SC_INC_AGI, INVALID_TIMER);
break;
case SC_FOOD_STR:
- status_change_end(bl, SC_FOOD_STR_CASH, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_STR, INVALID_TIMER);
break;
case SC_FOOD_AGI:
- status_change_end(bl, SC_FOOD_AGI_CASH, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_AGI, INVALID_TIMER);
break;
case SC_FOOD_VIT:
- status_change_end(bl, SC_FOOD_VIT_CASH, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_VIT, INVALID_TIMER);
break;
case SC_FOOD_INT:
- status_change_end(bl, SC_FOOD_INT_CASH, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_INT, INVALID_TIMER);
break;
case SC_FOOD_DEX:
- status_change_end(bl, SC_FOOD_DEX_CASH, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_DEX, INVALID_TIMER);
break;
case SC_FOOD_LUK:
- status_change_end(bl, SC_FOOD_LUK_CASH, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_LUK, INVALID_TIMER);
break;
case SC_FOOD_STR_CASH:
status_change_end(bl, SC_FOOD_STR, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_STR_CASH, INVALID_TIMER);
break;
case SC_FOOD_AGI_CASH:
status_change_end(bl, SC_FOOD_AGI, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_AGI_CASH, INVALID_TIMER);
break;
case SC_FOOD_VIT_CASH:
status_change_end(bl, SC_FOOD_VIT, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_VIT_CASH, INVALID_TIMER);
break;
case SC_FOOD_INT_CASH:
status_change_end(bl, SC_FOOD_INT, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_INT_CASH, INVALID_TIMER);
break;
case SC_FOOD_DEX_CASH:
status_change_end(bl, SC_FOOD_DEX, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_DEX_CASH, INVALID_TIMER);
break;
case SC_FOOD_LUK_CASH:
status_change_end(bl, SC_FOOD_LUK, INVALID_TIMER);
+ status_change_end(bl, SC_FOOD_LUK_CASH, INVALID_TIMER);
break;
case SC_GM_BATTLE:
status_change_end(bl, SC_GM_BATTLE2, INVALID_TIMER);
@@ -8493,8 +8474,10 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_SUMMER:
case SC_HANBOK:
case SC_OKTOBERFEST:
- if (!vd) return 0;
- //Store previous values as they could be removed.
+ case SC_DRESS_UP:
+ if (vd == NULL)
+ return 0;
+ // Store previous values as they could be removed.
unit->stop_attack(bl);
break;
case SC_NOCHAT:
@@ -9889,19 +9872,21 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
return 0;
}
}
- } else { //Special considerations when loading SC data.
- switch( type ) {
+ } else { // Special considerations when loading SC data.
+ switch (type) {
case SC_WEDDING:
case SC_XMAS:
case SC_SUMMER:
case SC_HANBOK:
case SC_OKTOBERFEST:
- if( !vd ) break;
+ case SC_DRESS_UP:
+ if (vd == NULL)
+ break;
clif->changelook(bl, LOOK_BASE, vd->class);
- clif->changelook(bl,LOOK_WEAPON,0);
- clif->changelook(bl,LOOK_SHIELD,0);
- clif->changelook(bl,LOOK_CLOTHES_COLOR,vd->cloth_color);
- clif->changelook(bl,LOOK_BODY2,0);
+ clif->changelook(bl, LOOK_WEAPON, 0);
+ clif->changelook(bl, LOOK_SHIELD, 0);
+ clif->changelook(bl, LOOK_CLOTHES_COLOR, vd->cloth_color);
+ clif->changelook(bl, LOOK_BODY2, 0);
break;
case SC_KAAHI:
val4 = INVALID_TIMER;
@@ -10284,6 +10269,10 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
sc->option |= OPTION_OKTOBERFEST;
opt_flag |= 0x4;
break;
+ case SC_DRESS_UP:
+ sc->option |= OPTION_SUMMER2;
+ opt_flag |= 0x4;
+ break;
case SC__FEINTBOMB_MASTER:
sc->option |= OPTION_INVISIBLE;
opt_flag |= 0x4;
@@ -11092,6 +11081,10 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
sc->option &= ~OPTION_OKTOBERFEST;
opt_flag |= 0x4;
break;
+ case SC_DRESS_UP:
+ sc->option &= ~OPTION_SUMMER2;
+ opt_flag |= 0x4;
+ break;
case SC__FEINTBOMB_MASTER:
sc->option &= ~OPTION_INVISIBLE;
opt_flag |= 0x4;
diff --git a/src/map/status.h b/src/map/status.h
index 06e7e07b8..1496429a8 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -840,6 +840,8 @@ typedef enum sc_type {
SC_TUNAPARTY,
SC_SHRIMP, // 650
SC_FRESHSHRIMP,
+
+ SC_DRESS_UP,
#ifndef SC_MAX
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
#endif
@@ -1722,7 +1724,7 @@ enum si_type {
//SI_SUMMEREVENT04 = 853,
//SI_SUMMEREVENT05 = 854,
//SI_MINIGAME_ROULETTE_BONUS_ITEM = 855,
- //SI_DRESS_UP = 856,
+ SI_DRESS_UP = 856,
SI_MAPLE_FALLS = 857,
//SI_ALL_NIFLHEIM_RECALL = 858,
//SI_ = 859,
diff --git a/tools/configconverter.pl b/tools/configconverter.pl
index 4fafd1f64..dc511aaef 100755
--- a/tools/configconverter.pl
+++ b/tools/configconverter.pl
@@ -677,7 +677,6 @@ my @defaults = (
drops_by_luk => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 0},
drops_by_luk2 => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 0},
alchemist_summon_reward => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 1},
- rare_drop_announce => {parse => \&parsecfg_int, print => \&printcfg_int, path => "drops:", default => 0},
base_exp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 100},
job_exp_rate => {parse => \&parsecfg_int, print => \&printcfg_int, path => "exp:", default => 100},
multi_level_up => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "exp:", default => "false"},