diff options
53 files changed, 8125 insertions, 1321 deletions
diff --git a/conf/battle/misc.conf b/conf/battle/misc.conf index b9aaa2356..7d797d2eb 100644 --- a/conf/battle/misc.conf +++ b/conf/battle/misc.conf @@ -90,6 +90,10 @@ duel_only_on_same_map: no official_cell_stack_limit: 1 custom_cell_stack_limit: 1 +// If 0 while walking not check occupied cells +// If 1 while walking check occupied cells +check_occupied_cells: 1 + // Allow autotrade only in map with autotrade flag? // Set this to "no" will allow autotrade where no "autotrade" mapflag is set // Set this to "yes" to only allow autotrade on maps with "autotrade" mapflag diff --git a/conf/map-server.conf b/conf/map-server.conf index a3afde66c..7f37a05da 100644 --- a/conf/map-server.conf +++ b/conf/map-server.conf @@ -104,6 +104,10 @@ minsave_time: 100 // these off. save_settings: 511 +//When employing more than one language (see db/translations.conf), +//this setting is used as a fallback +default_language: English + // When @help or @h is typed when you are a gm, this is displayed for helping new gms understand gm commands. help_txt: conf/help.txt help2_txt: conf/help2.txt @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in 35e1da2. +# From configure.in bc3bdec. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69. # diff --git a/db/pre-re/skill_cast_db.txt b/db/pre-re/skill_cast_db.txt index 5021ad6e9..cbe004662 100644 --- a/db/pre-re/skill_cast_db.txt +++ b/db/pre-re/skill_cast_db.txt @@ -962,6 +962,8 @@ //========================================== //===== New Monster Skills ================= +//-- NPC_EARTHQUAKE +653,0,0,0,900,0,0 //-- NPC_ICEBREATH 655,0,0,0,0,12000,0 //-- NPC_ACIDBREATH diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index 739a453ae..13a08d7c4 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -590,7 +590,7 @@ 544,-5,6,1,0,0x40,0,10,1,no,0,0,0,weapon,0, NJ_ISSEN,Final Strike // Additional NPC Skills (Episode 11.3) -653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x2,0,magic,0, NPC_EARTHQUAKE,Earthquake +653,0,8,4,0,0x26,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x2002,0,weapon,0, NPC_EARTHQUAKE,Earthquake 654,9,6,1,3,0,5,10,1,no,0,0x2,14,weapon,0, NPC_FIREBREATH,Fire Breath 655,9,6,1,1,0,5,10,1,no,0,0x2,14,weapon,0, NPC_ICEBREATH,Ice Breath 656,9,6,1,4,0,5,10,1,no,0,0x2,14,weapon,0, NPC_THUNDERBREATH,Thunder Breath @@ -726,11 +726,11 @@ 2038,11,8,1,6,0x2,3,5,-3,yes,0,0,0,magic,0, AB_JUDEX,Judex 2039,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0, AB_ANCILLA,Ancilla 2040,11,8,1,6,0,0,10,-10,yes,0,0,0,magic,0, AB_ADORAMUS,Adoramus -2041,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CLEMENTIA,Crementia -2042,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CANTO,Canto Candidus +2041,0,6,4,0,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CLEMENTIA,Crementia +2042,0,6,4,0,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CANTO,Canto Candidus 2043,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CHEAL,Coluceo Heal 2044,11,6,2,6,0x1,0,5,1,yes,0,0,1,magic,0, AB_EPICLESIS,Epiclesis -2045,0,6,4,6,0x3,15,10,1,yes,0,0,0,magic,0, AB_PRAEFATIO,Praefatio +2045,0,6,4,0,0x3,15,10,1,yes,0,0,0,magic,0, AB_PRAEFATIO,Praefatio 2046,0,6,4,6,0x3,15,10,1,yes,0,0,0,magic,0, AB_ORATIO,Oratio 2047,0,6,4,6,0x3,15,4,1,yes,0,0,0,magic,0, AB_LAUDAAGNUS,Lauda Agnus 2048,0,6,4,6,0x3,15,4,1,yes,0,0,0,magic,0, AB_LAUDARAMUS,Lauda Ramus diff --git a/db/pre-re/skill_unit_db.txt b/db/pre-re/skill_unit_db.txt index 2bdb0a7f3..f91ccf2b9 100644 --- a/db/pre-re/skill_unit_db.txt +++ b/db/pre-re/skill_unit_db.txt @@ -95,6 +95,7 @@ 527,0xbc, , -1, 0,2000,enemy, 0x018 //NJ_TATAMIGAESHI 535,0xbd, , -1, 0, 20,enemy, 0x010 //NJ_KAENSIN 538,0xbb, , 1:1:1:2:2:2:3:3:3:4,0,-1,all,0x010 //NJ_SUITON +653,0xc6, , 0, 5:7:9:11:13:5:7:9:11:13, 300,enemy, 0x010 //NPC_EARTHQUAKE 670,0xc7, , 1, 4:7:10:13:16:19:22:25:28:31,1000,all,0x008 //NPC_EVILLAND //706,0xfd, , 0, 0,1000,all, 0x000 //NPC_VENOMFOG diff --git a/db/re/item_db.conf b/db/re/item_db.conf index e977e2160..796297709 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -26983,6 +26983,8 @@ item_db: ( bonus bInt,10; bonus bLuk,10; bonus bMdef,5; + bonus2 bSkillHeal,PR_SANCTUARY,6; + bonus2 bSkillHeal,AL_HEAL,6; "> }, { @@ -38345,7 +38347,7 @@ item_db: ( Weight: 10 Loc: 64 Script: <" - .@rate = (getrefine() > 14) ? 7 : 5); + .@rate = (getrefine() > 14) ? 7 : 5; bonus bMaxHPrate,.@rate; bonus bMaxSPrate,.@rate; bonus2 bHPRegenRate,50,10000; @@ -56863,6 +56865,17 @@ item_db: ( bonus bUnbreakableHelm,0; "> }, +{ + Id: 5921 + AegisName: "Fish_Monster's_Grill" + Name: "Fish Monster's Grill" + Type: 5 + Weight: 200 + Def: 1 + Loc: 512 + EquipLv: 10 + View: 1218 +}, // More Etc Items // =================================================================== { @@ -115860,6 +115873,18 @@ item_db: ( View: 919 }, { + Id: 18804 + AegisName: "Thornwood_Band" + Name: "Thornwood Band" + Type: 5 + Weight: 300 + Def: 5 + Slots: 1 + Loc: 256 + EquipLv: 10 + View: 921 +}, +{ Id: 18805 AegisName: "Eclipse_Hat" Name: "Eclipse Hat" @@ -116141,6 +116166,16 @@ item_db: ( View: 946 }, { + Id: 18837 + AegisName: "Cheering_Whistle" + Name: "Cheering Whistle" + Type: 5 + Weight: 100 + Loc: 1 + EquipLv: 1 + View: 952 +}, +{ Id: 18839 AegisName: "Poring_Sunglasses" Name: "Poring Sunglasses" @@ -116296,6 +116331,18 @@ item_db: ( "> }, { + Id: 18860 + AegisName: "Preschool_Hat" + Name: "Preschool Hat" + Type: 5 + Weight: 100 + Def: 8 + Slots: 1 + Loc: 256 + EquipLv: 1 + View: 977 +}, +{ Id: 18870 AegisName: "Very_Sweet_Candy_Bar" Name: "Very Sweet Candy Bar" @@ -116597,6 +116644,133 @@ item_db: ( View: 897 }, { + Id: 18934 + AegisName: "Fox_Ears_Drop_Ribbon" + Name: "Fox Ears Drop Ribbon" + Type: 5 + Weight: 400 + Def: 4 + Loc: 256 + EquipLv: 50 + View: 1070 +}, +{ + Id: 18937 + AegisName: "Memories_of_Lover" + Name: "Memories of Lover" + Type: 5 + Weight: 100 + Def: 0 + Loc: 256 + EquipLv: 1 + View: 1072 +}, +{ + Id: 18938 + AegisName: "Astro_Circle" + Name: "Astro Circle" + Type: 5 + Weight: 300 + Def: 1 + Loc: 256 + EquipLv: 1 + View: 1073 +}, +{ + Id: 18942 + AegisName: "Knit_Cap_of_Water" + Name: "Knit Cap of Water" + Type: 5 + Weight: 1000 + Def: 0 + Loc: 256 + EquipLv: 90 + View: 1077 +}, +{ + Id: 18943 + AegisName: "Silk_Hat_of_Earth" + Name: "Silk Hat of Earth" + Type: 5 + Weight: 1000 + Def: 0 + Loc: 256 + EquipLv: 90 + View: 1078 +}, +{ + Id: 18969 + AegisName: "Boss_Beret" + Name: "Boss Beret_J" + Type: 5 + Loc: 256 + View: 1134 +}, +{ + Id: 19014 + AegisName: "Gravekeeper_Blinker" + Name: "Gravekeeper Blinker" + Type: 5 + Weight: 100 + Def: 1 + Loc: 512 + EquipLv: 10 + View: 1210 +}, +{ + Id: 19019 + AegisName: "Elemental_Crown" + Name: "Elemental Crown" + Type: 5 + Weight: 500 + Def: 10 + Slots: 1 + Loc: 256 + EquipLv: 50 + View: 1219 + Script: <" + bonus bDex,3; + bonus bLongAtkRate,4; + bonus bDex,(getrefine()/2); + if(BaseLevel>130) { + bonus bDex,getrefine(); + } + "> +}, +{ + Id: 19027 + AegisName: "Type-10_Glasses" + Name: "Type-10 Glasses" + Type: 5 + Weight: 200 + Loc: 512 + EquipLv: 10 + View: 1237 +}, +{ + Id: 19028 + AegisName: "Kid_Deviling" + Name: "Kid Deviling" + Type: 5 + Weight: 200 + Loc: 512 + EquipLv: 40 + View: 1036 +}, +{ + Id: 19029 + AegisName: "Alice_Friesinger_Hat_69" + Name: "Alice Friesinger Hat 69" + Type: 5 + Weight: 300 + Loc: 256 + EquipLv: 1 + View: 1249 + Script: <" + bonus2 bAddRace,RC_Boss,15; + "> +}, +{ Id: 19500 AegisName: "T_Mr_Smile" Name: "Costume: Mr. Smile" @@ -117614,6 +117788,22 @@ item_db: ( View: 907 }, { + Id: 19596 + AegisName: "Costume_Flapping_Angel_Wing" + Name: "Costume Flapping Angel Wing" + Type: 5 + Loc: 1024 + View: 264 +}, +{ + Id: 19597 + AegisName: "Costume_Magic_Eyes" + Name: "Costume Magic Eyes" + Type: 5 + Loc: 1024 + View: 209 +}, +{ Id: 19598 AegisName: "Costume_Wandering_Wolf_Hat" Name: "Costume Wandering Wolf Hat" @@ -117656,6 +117846,14 @@ item_db: ( View: 910 }, { + Id: 19602 + AegisName: "Costume_Invisible_Cap" + Name: "Costume Invisible Cap" + Type: 5 + Loc: 4096 + View: 0 +}, +{ Id: 19603 AegisName: "C_Invisible_Sunglasses" Name: "Costume Koneko Hat" @@ -117666,16 +117864,102 @@ item_db: ( View: 378 }, { + Id: 19604 + AegisName: "Costume_Invisible_Mask" + Name: "Costume Invisible Mask" + Type: 5 + Loc: 4096 + View: 0 +}, +{ Id: 19605 - AegisName: "Spellcaster's_Supply_Crate" - Name: "Spellcaster's Supply Crate" + AegisName: "Costume_Gang_Scarf" + Name: "Costume Gang Scarf" Type: 5 - Buy: 1000 - Slots: 1 - Loc: 1024 + Loc: 4096 View: 369 }, { + Id: 19606 + AegisName: "Costume_Ninja_Scroll" + Name: "Costume Ninja Scroll" + Type: 5 + Loc: 4096 + View: 370 +}, +{ + Id: 19607 + AegisName: "Costume_Chicken_Love_Hat" + Name: "Costume Chicken Love Hat" + Type: 5 + Loc: 1024 + View: 500 +}, +{ + Id: 19608 + AegisName: "Costume_Chick_Hat" + Name: "Costume Chick Hat" + Type: 5 + Loc: 1024 + View: 311 +}, +{ + Id: 19609 + AegisName: "Costume_Red_Glasses" + Name: "Costume Red Glasses" + Type: 5 + Loc: 2048 + View: 316 +}, +{ + Id: 19610 + AegisName: "Costume_Whisper_Mask" + Name: "Costume Whisper Mask" + Type: 5 + Loc: 7168 + View: 321 +}, +{ + Id: 19611 + AegisName: "Costume_Peco_Ears" + Name: "Costume Peco Ears" + Type: 5 + Loc: 2048 + View: 366 +}, +{ + Id: 19612 + AegisName: "Costume_Note_Headphone" + Name: "Costume Note Headphone" + Type: 5 + Loc: 3072 + View: 220 +}, +{ + Id: 19613 + AegisName: "Costume_Valkyrie_Feather_Band" + Name: "Costume Valkyrie Feather Band" + Type: 5 + Loc: 1024 + View: 300 +}, +{ + Id: 19614 + AegisName: "Costume_Super_Novice_Hat" + Name: "Costume Super Novice Hat" + Type: 5 + Loc: 1024 + View: 193 +}, +{ + Id: 19615 + AegisName: "Costume_Loki_Mask" + Name: "Costume Loki Mask" + Type: 5 + Loc: 6144 + View: 346 +}, +{ Id: 19616 AegisName: "Costume_Wickebine's_Black_Cat_Ears" Name: "Costume Wickebine's Black Cat Ears" @@ -117686,6 +117970,14 @@ item_db: ( View: 368 }, { + Id: 19617 + AegisName: "Costume_Puppy_Headband" + Name: "Costume Puppy Headband" + Type: 5 + Loc: 1024 + View: 199 +}, +{ Id: 19619 AegisName: "Costume_Corsair" Name: "Costume Corsair" @@ -117696,6 +117988,46 @@ item_db: ( View: 105 }, { + Id: 19620 + AegisName: "Costume_Detective_Hat" + Name: "Costume Detective Hat" + Type: 5 + Loc: 1024 + View: 189 +}, +{ + Id: 19621 + AegisName: "Costume_Evil_Wing_Ears" + Name: "Costume Evil Wing Ears" + Type: 5 + Loc: 2048 + View: 152 +}, +{ + Id: 19622 + AegisName: "Costume_Crescent_Hairpin" + Name: "Costume Crescent Hairpin" + Type: 5 + Loc: 1024 + View: 132 +}, +{ + Id: 19623 + AegisName: "Costume_Bijofnil_Wings" + Name: "Costume Bijofnil Wings" + Type: 5 + Loc: 1024 + View: 477 +}, +{ + Id: 19624 + AegisName: "Costume_Blank_Eyes" + Name: "Costume Blank Eyes" + Type: 5 + Loc: 2048 + View: 185 +}, +{ Id: 19625 AegisName: "Costume_Refined_Bunny_Band" Name: "Costume Refined Bunny Band" @@ -117715,6 +118047,14 @@ item_db: ( View: 266 }, { + Id: 19628 + AegisName: "Costume_Headset" + Name: "Costume Headset" + Type: 5 + Loc: 1024 + View: 97 +}, +{ Id: 19629 AegisName: "C_Tiara" Name: "Costume Tiara" @@ -117733,6 +118073,14 @@ item_db: ( View: 45 }, { + Id: 19631 + AegisName: "Costume_Poring_Fedora_Hat" + Name: "Costume Poring Fedora Hat" + Type: 5 + Loc: 1024 + View: 919 +}, +{ Id: 19632 AegisName: "Costume_Hat" Name: "Costume Hat" @@ -117787,6 +118135,14 @@ item_db: ( View: 64 }, { + Id: 19638 + AegisName: "Costume_Mr_Smile" + Name: "Costume Mr Smile" + Type: 5 + Loc: 6144 + View: 65 +}, +{ Id: 19639 AegisName: "Costume_Sakkat" Name: "Costume Sakkat" @@ -117796,6 +118152,86 @@ item_db: ( View: 67 }, { + Id: 19640 + AegisName: "Costume_Charming_Ribbon" + Name: "Costume Charming Ribbon" + Type: 5 + Loc: 1024 + View: 211 +}, +{ + Id: 19641 + AegisName: "Costume_Helm_of_Darkness" + Name: "Costume Helm of Darkness" + Type: 5 + Loc: 3072 + View: 233 +}, +{ + Id: 19642 + AegisName: "Costume_Moonlight_Flower_Hat" + Name: "Costume Moonlight Flower Hat" + Type: 5 + Loc: 3072 + View: 268 +}, +{ + Id: 19643 + AegisName: "Costume_Wickebine_Ears" + Name: "Costume Wickebine Ears" + Type: 5 + Loc: 1024 + View: 368 +}, +{ + Id: 19644 + AegisName: "Costume_Takius_Blindfold" + Name: "Costume Takius Blindfold" + Type: 5 + Loc: 2048 + View: 184 +}, +{ + Id: 19645 + AegisName: "Costume_Phoenix Crown" + Name: "Costume Phoenix Crown" + Type: 5 + Loc: 3072 + View: 221 +}, +{ + Id: 19646 + AegisName: "Costume_Ramen_Hat" + Name: "Costume Ramen Hat" + Type: 5 + Loc: 1024 + View: 271 +}, +{ + Id: 19647 + AegisName: "Costume_Red_Deviruchi_Hat" + Name: "Costume Red Deviruchi Hat" + Type: 5 + Loc: 1024 + View: 271 +}, +{ + Id: 19648 + AegisName: "Costume_Autumn_Leaves" + Name: "Costume Autumn Leaves" + Type: 5 + Loc: 1024 + View: 241 +}, +{ + Id: 19649 + AegisName: "Costume_White_Kitten_Ears" + Name: "Costume White Kitten Ears" + Type: 5 + Loc: 1024 + View: 926 +}, +{ Id: 19650 AegisName: "C_Rainbow_Feather_Deco" Name: "Costume: Five Colored Feathers" @@ -117817,6 +118253,30 @@ item_db: ( View: 194 }, { + Id: 19652 + AegisName: "Costume_Rabbit_Magic_Hat" + Name: "Costume Rabbit Magic Hat" + Type: 5 + Loc: 1024 + View: 497 +}, +{ + Id: 19653 + AegisName: "Costume_Marcher_Hat" + Name: "Costume Marcher Hat" + Type: 5 + Loc: 1024 + View: 269 +}, +{ + Id: 19654 + AegisName: "Costume_Master's_Hat" + Name: "Costume Master's Hat" + Type: 5 + Loc: 1024 + View: 367 +}, +{ Id: 19655 AegisName: "C_Tiraya_Bonnet" Name: "C Tiraya Bonnet" @@ -117828,6 +118288,214 @@ item_db: ( View: 398 }, { + Id: 19656 + AegisName: "Costume_Minstrel_Hat" + Name: "Costume Minstrel Hat" + Type: 5 + Loc: 1024 + View: 240 +}, +{ + Id: 19657 + AegisName: "Costume_Captain_Hat" + Name: "Costume Captain Hat" + Type: 5 + Loc: 1024 + View: 236 +}, +{ + Id: 19658 + AegisName: "Costume_Vacation_Hat" + Name: "Costume Vacation Hat" + Type: 5 + Loc: 1024 + View: 315 +}, +{ + Id: 19659 + AegisName: "Costume_Brown Beanie" + Name: "Costume Brown Beanie" + Type: 5 + Loc: 1024 + View: 279 +}, +{ + Id: 19660 + AegisName: "Costume_Coppola" + Name: "Costume Coppola" + Type: 5 + Loc: 1024 + View: 252 +}, +{ + Id: 19661 + AegisName: "Costume_Sweet_Bonnet" + Name: "Costume Sweet Bonnet" + Type: 5 + Loc: 1024 + View: 938 +}, +{ + Id: 19662 + AegisName: "Costume_Magician_Hat" + Name: "Costume Magician Hat" + Type: 5 + Loc: 1024 + View: 130 +}, +{ + Id: 19663 + AegisName: "Costume_Wish_Lamp" + Name: "Costume Wish Lamp" + Type: 5 + Loc: 1024 + View: 947 +}, +{ + Id: 19664 + AegisName: "Costume_Campus_Festival" + Name: "Costume Campus Festival" + Type: 5 + Loc: 1024 + View: 721 +}, +{ + Id: 19665 + AegisName: "Costume_Poring_Cake_Hat" + Name: "Costume Poring Cake Hat" + Type: 5 + Loc: 1024 + View: 417 +}, +{ + Id: 19666 + AegisName: "Costume_Cookie_Hat" + Name: "Costume Cookie Hat" + Type: 5 + Loc: 1024 + View: 217 +}, +{ + Id: 19667 + AegisName: "Costume_Dragon_Helm" + Name: "Costume Dragon Helm" + Type: 5 + Loc: 1024 + View: 464 +}, +{ + Id: 19668 + AegisName: "Costume_Wind_Milestone" + Name: "Costume Wind Milestone" + Type: 5 + Loc: 1024 + View: 463 +}, +{ + Id: 19669 + AegisName: "Costume_Reginrev's_Wings" + Name: "Costume Reginrev's Wings" + Type: 5 + Loc: 2048 + View: 468 +}, +{ + Id: 19670 + AegisName: "Costume_Southern_Cross" + Name: "Costume Southern Cross" + Type: 5 + Loc: 1024 + View: 601 +}, +{ + Id: 19671 + AegisName: "Costume_Piggie_Bank" + Name: "Costume Piggie Bank" + Type: 5 + Loc: 1024 + View: 603 +}, +{ + Id: 19672 + AegisName: "Costume_Poring_Letter" + Name: "Costume Poring Letter" + Type: 5 + Loc: 4096 + View: 604 +}, +{ + Id: 19673 + AegisName: "Costume_Benevolent_Guardian" + Name: "Costume Benevolent Guardian" + Type: 5 + Loc: 3072 + View: 716 +}, +{ + Id: 19674 + AegisName: "Costume_Demon_Mask" + Name: "Costume Demon Mask" + Type: 5 + Loc: 6144 + View: 714 +}, +{ + Id: 19675 + AegisName: "Costume_Jumping_Poring" + Name: "Costume Jumping Poring" + Type: 5 + Loc: 1024 + View: 349 +}, +{ + Id: 19676 + AegisName: "Costume_Rainbow_Poring_Hat" + Name: "Costume Rainbow Poring Hat" + Type: 5 + Loc: 1024 + View: 900 +}, +{ + Id: 19677 + AegisName: "Costume_Soulless_Wing" + Name: "Costume Soulless Wing" + Type: 5 + Loc: 1024 + View: 301 +}, +{ + Id: 19678 + AegisName: "Costume_Bell_Ribbon" + Name: "Costume Bell Ribbon" + Type: 5 + Loc: 1024 + View: 388 +}, +{ + Id: 19679 + AegisName: "Costume_Round_Eyes_J" + Name: "Costume Round Eyes J" + Type: 5 + Loc: 2048 + View: 185 +}, +{ + Id: 19680 + AegisName: "Costume_Tongue_Mask" + Name: "Costume Tongue Mask" + Type: 5 + Loc: 6144 + View: 253 +}, +{ + Id: 19681 + AegisName: "Costume_Silver_Tiara" + Name: "Costume Silver Tiara" + Type: 5 + Loc: 1024 + View: 218 +}, +{ Id: 19682 AegisName: "C_Santa_Poring_Hat" Name: "Costume SantaPoring Cap" @@ -117838,6 +118506,30 @@ item_db: ( View: 387 }, { + Id: 19683 + AegisName: "Costume_Sweet_Candy" + Name: "Costume Sweet Candy" + Type: 5 + Loc: 4096 + View: 414 +}, +{ + Id: 19684 + AegisName: "Costume_Happy_Wig" + Name: "Costume Happy Wig" + Type: 5 + Loc: 1024 + View: 305 +}, +{ + Id: 19685 + AegisName: "Costume_Shine_Stanta_Poring" + Name: "Costume Shine Stanta Poring" + Type: 5 + Loc: 1024 + View: 981 +}, +{ Id: 19686 AegisName: "Costume_Santa_Doll_Headband" Name: "Costume Santa Doll Headband" @@ -117856,6 +118548,110 @@ item_db: ( View: 963 }, { + Id: 19688 + AegisName: "Costume_Katusa" + Name: "Costume Katusa" + Type: 5 + Loc: 1024 + View: 533 +}, +{ + Id: 19689 + AegisName: "Costume_Ati_Atihan" + Name: "Costume Ati Atihan" + Type: 5 + Loc: 7168 + View: 303 +}, +{ + Id: 19690 + AegisName: "Costume_Dark_Snake_Lord_Hat_J" + Name: "Costume Dark Snake Lord Hat J" + Type: 5 + Loc: 1024 + View: 372 +}, +{ + Id: 19691 + AegisName: "Costume_Blue_Ribbon" + Name: "Costume Blue Ribbon" + Type: 5 + Loc: 1024 + View: 407 +}, +{ + Id: 19692 + AegisName: "Costume_Antique_Pipe_J" + Name: "Costume Antique Pipe J" + Type: 5 + Loc: 4096 + View: 383 +}, +{ + Id: 19693 + AegisName: "Costume_Triple_Poring_Hat" + Name: "Costume Triple Poring Hat" + Type: 5 + Loc: 1024 + View: 299 +}, +{ + Id: 19694 + AegisName: "Costume_Vane_Hairpin" + Name: "Costume Vane Hairpin" + Type: 5 + Loc: 1024 + View: 313 +}, +{ + Id: 19695 + AegisName: "Costume_Kettle_Hat" + Name: "Costume Kettle Hat" + Type: 5 + Loc: 1024 + View: 318 +}, +{ + Id: 19696 + AegisName: "Costume_Friend_Mochiring_Hat" + Name: "Costume Friend Mochiring Hat" + Type: 5 + Loc: 1024 + View: 965 +}, +{ + Id: 19697 + AegisName: "Costume_Rudolph_Santa_Hat" + Name: "Costume Rudolph Santa Hat" + Type: 5 + Loc: 1024 + View: 919 +}, +{ + Id: 19698 + AegisName: "Costume_Bf_Recruiter_Hat" + Name: "Costume Bf Recruiter Hat" + Type: 5 + Loc: 1024 + View: 352 +}, +{ + Id: 19699 + AegisName: "Costume_Gf_Recruiter_Hat" + Name: "Costume Gf Recruiter Hat" + Type: 5 + Loc: 1024 + View: 360 +}, +{ + Id: 19700 + AegisName: "Costume_RWC_Champ_Crown_2nd" + Name: "Costume RWC Champ Crown 2nd" + Type: 5 + Loc: 1024 + View: 903 +}, +{ Id: 19701 AegisName: "Costumes_Red_Bonnet" Name: "Costumes Red Bonnet" @@ -117902,6 +118698,166 @@ item_db: ( View: 413 }, { + Id: 19709 + AegisName: "Costume_Yellow_Ribbon" + Name: "Costume Yellow Ribbon" + Type: 5 + Loc: 1024 + View: 310 +}, +{ + Id: 19710 + AegisName: "Costume_Wings_of_Victory" + Name: "Costume Wings of Victory" + Type: 5 + Loc: 1024 + View: 365 +}, +{ + Id: 19712 + AegisName: "Costume_Little_Angel_Doll" + Name: "Costume Little Angel Doll" + Type: 5 + Loc: 1024 + View: 344 +}, +{ + Id: 19713 + AegisName: "Costume_Lucky_Clover" + Name: "Costume Lucky Clover" + Type: 5 + Loc: 2048 + View: 571 +}, +{ + Id: 19714 + AegisName: "Costume_Lady_Tanee_Doll" + Name: "Costume Lady Tanee Doll" + Type: 5 + Loc: 1024 + View: 520 +}, +{ + Id: 19715 + AegisName: "Costume_Scarf" + Name: "Costume Scarf" + Type: 5 + Loc: 1024 + View: 343 +}, +{ + Id: 19716 + AegisName: "Costume_Alice_Doll" + Name: "Costume Alice Doll" + Type: 5 + Loc: 1024 + View: 208 +}, +{ + Id: 19717 + AegisName: "Costume_Pink_Ribbon" + Name: "Costume Pink Ribbon" + Type: 5 + Loc: 1024 + View: 245 +}, +{ + Id: 19718 + AegisName: "Costume_Gothic_Head_Dress" + Name: "Costume Gothic Head Dress" + Type: 5 + Loc: 1024 + View: 978 +}, +{ + Id: 19719 + AegisName: "Costume_Coronet" + Name: "Costume Coronet" + Type: 5 + Loc: 1024 + View: 33 +}, +{ + Id: 19720 + AegisName: "Costume_Romantic_Gent" + Name: "Costume Romantic Gent" + Type: 5 + Loc: 1024 + View: 31 +}, +{ + Id: 19721 + AegisName: "Costume_Darkness_Helm" + Name: "Costume Darkness Helm" + Type: 5 + Loc: 1024 + View: 586 +}, +{ + Id: 19722 + AegisName: "Costume_Black_Glasses" + Name: "Costume Black Glasses" + Type: 5 + Loc: 2048 + View: 404 +}, +{ + Id: 19723 + AegisName: "Costume_Sacred_Torch_Coronet" + Name: "Costume Sacred Torch Coronet" + Type: 5 + Loc: 1024 + View: 431 +}, +{ + Id: 19724 + AegisName: "Costume_Deprotai_Doll" + Name: "Costume Deprotai Doll" + Type: 5 + Loc: 1024 + View: 354 +}, +{ + Id: 19725 + AegisName: "Costume_Bread_Bag2" + Name: "Costume Bread Bag2" + Type: 5 + Loc: 7168 + View: 412 +}, +{ + Id: 19726 + AegisName: "Costume_Scarlet_Rose" + Name: "Costume Scarlet Rose" + Type: 5 + Loc: 4096 + View: 534 +}, +{ + Id: 19727 + AegisName: "Costume_Deviling_Hat" + Name: "Costume Deviling Hat" + Type: 5 + Loc: 1024 + View: 298 +}, +{ + Id: 19728 + AegisName: "Costume_Tare_Zonda" + Name: "Costume Tare Zonda" + Type: 5 + Loc: 1024 + View: 985 +}, +{ + Id: 19729 + AegisName: "Costume_Neko_Mimi_Kafra" + Name: "Costume Neko Mimi Kafra" + Type: 5 + Loc: 1024 + View: 392 +}, +{ Id: 19730 AegisName: "C_Snake_Hat" Name: "C Snake Hat" @@ -117995,13 +118951,192 @@ item_db: ( View: 838 }, { + Id: 19741 + AegisName: "Costume_Majestic_Devil_Horns" + Name: "Costume Majestic Devil Horns" + Type: 5 + Loc: 1024 + View: 562 +}, +{ Id: 19742 - AegisName: "C_Small_Golden_Wings" + AegisName: "Costume_Small_Golden_Wings" Name: "Costume Small Golden Wings" Type: 5 - Buy: 1000 - Loc: 1024 + Loc: 2048 View: 724 + Script: <" + bonus2 bExpAddRace,RC_NonBoss,1; + bonus2 bExpAddRace,RC_Boss,1; + "> +}, +{ + Id: 19743 + AegisName: "Costume_Anubis_Helm_J" + Name: "Costume Anubis Helm J" + Type: 5 + Loc: 1024 + View: 485 +}, +{ + Id: 19744 + AegisName: "Costume_Black_Tail_Ribbon" + Name: "Costume Black Tail Ribbon" + Type: 5 + Loc: 1024 + View: 642 +}, +{ + Id: 19745 + AegisName: "Costume_Holy Marching_Hat_J" + Name: "Costume Holy Marching Hat J" + Type: 5 + Loc: 1024 + View: 587 +}, +{ + Id: 19746 + AegisName: "Costume_Executioner_Hood" + Name: "Costume Executioner Hood" + Type: 5 + Loc: 7168 + View: 326 +}, +{ + Id: 19747 + AegisName: "Costume_Tha_Despero_Mask_J" + Name: "Costume Tha Despero Mask J" + Type: 5 + Loc: 6144 + View: 693 +}, +{ + Id: 19748 + AegisName: "Costume_Diadem" + Name: "Costume Diadem" + Type: 5 + Loc: 3072 + View: 335 +}, +{ + Id: 19749 + AegisName: "Costume_Gold_Spirit_Chain" + Name: "Costume Gold Spirit Chain" + Type: 5 + Loc: 1024 + View: 260 +}, +{ + Id: 19750 + AegisName: "Costume_Saint_Frill_Ribbon" + Name: "Costume Saint Frill Ribbon" + Type: 5 + Loc: 1024 + View: 987 +}, +{ + Id: 19751 + AegisName: "Costume_Light_Darkness_Crown" + Name: "Costume Light Darkness Crown" + Type: 5 + Loc: 1024 + View: 988 +}, +{ + Id: 19752 + AegisName: "Costume_Shelter_Wing_Ears" + Name: "Costume Shelter Wing Ears" + Type: 5 + Loc: 2048 + View: 990 +}, +{ + Id: 19753 + AegisName: "Costume_Celestial_Hat" + Name: "Costume Celestial Hat" + Type: 5 + Loc: 1024 + View: 462 +}, +{ + Id: 19754 + AegisName: "Costume_Good_Wedding_Veil" + Name: "Costume Good Wedding Veil" + Type: 5 + Loc: 3072 + View: 489 +}, +{ + Id: 19755 + AegisName: "Costume_YinYang_Earring" + Name: "Costume YinYang Earring" + Type: 5 + Loc: 2048 + View: 744 +}, +{ + Id: 19756 + AegisName: "Costume_Holy_Mom_Love" + Name: "Costume Holy Mom Love" + Type: 5 + Loc: 1024 + View: 610 +}, +{ + Id: 19757 + AegisName: "Costume_Water_Lily_Crown" + Name: "Costume Water Lily Crown" + Type: 5 + Loc: 1024 + View: 312 +}, +{ + Id: 19758 + AegisName: "Costume_Frog_King_Hat" + Name: "Costume Frog King Hat" + Type: 5 + Loc: 1024 + View: 522 +}, +{ + Id: 19759 + AegisName: "Costume_Umbrella_Hat" + Name: "Costume Umbrella Hat" + Type: 5 + Loc: 1024 + View: 338 +}, +{ + Id: 19760 + AegisName: "Costume_Rainbow_Veil" + Name: "Costume Rainbow Veil" + Type: 5 + Loc: 3072 + View: 992 +}, +{ + Id: 19761 + AegisName: "Costume_White_Lily" + Name: "Costume White Lily" + Type: 5 + Loc: 1024 + View: 993 +}, +{ + Id: 19762 + AegisName: "Costume_Happy_Peace_Proof" + Name: "Costume Happy Peace Proof" + Type: 5 + Loc: 1024 + View: 994 +}, +{ + Id: 19763 + AegisName: "Costume_Leaf_Cat_Hat" + Name: "Costume Leaf Cat Hat" + Type: 5 + Loc: 1024 + View: 539 }, { Id: 19764 @@ -118022,6 +119157,174 @@ item_db: ( View: 158 }, { + Id: 19766 + AegisName: "Costume_Yggdrasil_Hat" + Name: "Costume Yggdrasil Hat" + Type: 5 + Loc: 1024 + View: 997 +}, +{ + Id: 19767 + AegisName: "Costume_Home_Cherry_Blossom" + Name: "Costume Home Cherry Blossom" + Type: 5 + Loc: 1024 + View: 602 +}, +{ + Id: 19768 + AegisName: "Costume_Sakura_Coronet" + Name: "Costume Sakura Coronet" + Type: 5 + Loc: 1024 + View: 645 +}, +{ + Id: 19769 + AegisName: "Costume_Mischievous_Fairy" + Name: "Costume Mischievous Fairy" + Type: 5 + Loc: 2048 + View: 405 +}, +{ + Id: 19770 + AegisName: "Costume_Japan_Winecup" + Name: "Costume Japan Winecup" + Type: 5 + Loc: 4096 + View: 557 +}, +{ + Id: 19771 + AegisName: "Costume_Butterfly_Hairpin" + Name: "Costume Butterfly Hairpin" + Type: 5 + Loc: 1024 + View: 723 +}, +{ + Id: 19772 + AegisName: "Costume_Honeybee_Hat" + Name: "Costume Honeybee Hat" + Type: 5 + Loc: 1024 + View: 709 +}, +{ + Id: 19773 + AegisName: "Costume_Angeling_Hairpin" + Name: "Costume Angeling Hairpin" + Type: 5 + Loc: 1024 + View: 222 +}, +{ + Id: 19774 + AegisName: "Costume_Emperor_Wreath_J" + Name: "Costume Emperor Wreath J" + Type: 5 + Loc: 1024 + View: 261 +}, +{ + Id: 19775 + AegisName: "Costume_Afro_Wig" + Name: "Costume Afro Wig" + Type: 5 + Loc: 1024 + View: 307 +}, +{ + Id: 19776 + AegisName: "Costume_Tomboy_Fairy" + Name: "Costume Tomboy Fairy" + Type: 5 + Loc: 2048 + View: 998 +}, +{ + Id: 19777 + AegisName: "Costume_Twinkle_Little_Star" + Name: "Costume Twinkle Little Star" + Type: 5 + Loc: 1024 + View: 1005 +}, +{ + Id: 19778 + AegisName: "Costume_King_Strawberry" + Name: "Costume King Strawberry" + Type: 5 + Loc: 1024 + View: 968 +}, +{ + Id: 19779 + AegisName: "Costume_Persica" + Name: "Costume Persica" + Type: 5 + Loc: 1024 + View: 659 +}, +{ + Id: 19780 + AegisName: "Costume_Knit_Rabbit_Ears" + Name: "Costume Knit Rabbit Ears" + Type: 5 + Loc: 1024 + View: 867 +}, +{ + Id: 19781 + AegisName: "Costume_Angel_Wing_Ears" + Name: "Costume Angel Wing Ears" + Type: 5 + Loc: 2048 + View: 158 +}, +{ + Id: 19782 + AegisName: "Costume_Drooping_Cat" + Name: "Costume Drooping Cat" + Type: 5 + Loc: 1024 + View: 142 +}, +{ + Id: 19783 + AegisName: "Costume_Grampa_Beard" + Name: "Costume Grampa Beard" + Type: 5 + Loc: 4096 + View: 25 +}, +{ + Id: 19784 + AegisName: "Costume_Morrigane's_Helm" + Name: "Costume Morrigane's Helm" + Type: 5 + Loc: 1024 + View: 257 +}, +{ + Id: 19785 + AegisName: "Costume_Crunch_Toast" + Name: "Costume Crunch Toast" + Type: 5 + Loc: 4096 + View: 188 +}, +{ + Id: 19786 + AegisName: "Costume_Crown_of_Mistress" + Name: "Costume Crown of Mistress" + Type: 5 + Loc: 1024 + View: 165 +}, +{ Id: 19787 AegisName: "C_Devoted_Eyes" Name: "Costume: Devoted Eyes" @@ -118044,6 +119347,318 @@ item_db: ( View: 779 }, { + Id: 19789 + AegisName: "Costume_Sweet_Gents" + Name: "Costume Sweet Gents" + Type: 5 + Loc: 1024 + View: 29 +}, +{ + Id: 19790 + AegisName: "Costume_Veil" + Name: "Costume Veil" + Type: 5 + Loc: 1024 + View: 44 +}, +{ + Id: 19791 + AegisName: "Costume_Alarm_Mask" + Name: "Costume Alarm Mask" + Type: 5 + Loc: 6144 + View: 170 +}, +{ + Id: 19792 + AegisName: "Costume_Poker_Mask" + Name: "Costume Poker Mask" + Type: 5 + Loc: 6144 + View: 171 +}, +{ + Id: 19793 + AegisName: "Costume_Surprised_Mask" + Name: "Costume Surprised Mask" + Type: 5 + Loc: 6144 + View: 172 +}, +{ + Id: 19794 + AegisName: "Costume_Annoyed_Mask" + Name: "Costume Annoyed Mask" + Type: 5 + Loc: 6144 + View: 173 +}, +{ + Id: 19795 + AegisName: "Costume_Grand_Circlet" + Name: "Costume Grand Circlet" + Type: 5 + Loc: 1024 + View: 93 +}, +{ + Id: 19796 + AegisName: "Costume_Bone_Helm" + Name: "Costume Bone Helm" + Type: 5 + Loc: 1024 + View: 103 +}, +{ + Id: 19797 + AegisName: "Costume_Apple_of_Archer" + Name: "Costume Apple of Archer" + Type: 5 + Loc: 1024 + View: 72 +}, +{ + Id: 19798 + AegisName: "Costume_Angry_Snarl" + Name: "Costume Angry Snarl" + Type: 5 + Loc: 4096 + View: 194 +}, +{ + Id: 19799 + AegisName: "Costume_Golden_Gear" + Name: "Costume Golden Gear" + Type: 5 + Loc: 1024 + View: 30 +}, +{ + Id: 19800 + AegisName: "Costume_Carnation_Headband" + Name: "Costume Carnation Headband" + Type: 5 + Loc: 1024 + View: 878 +}, +{ + Id: 19801 + AegisName: "Costume_Fox_Hat" + Name: "Costume Fox Hat" + Type: 5 + Loc: 6144 + View: 403 +}, +{ + Id: 19802 + AegisName: "Costume_Drooping_Nine_Tail" + Name: "Costume Drooping Nine Tail" + Type: 5 + Loc: 1024 + View: 296 +}, +{ + Id: 19803 + AegisName: "Costume_Pinwheel_Cap" + Name: "Costume Pinwheel Cap" + Type: 5 + Loc: 1024 + View: 456 +}, +{ + Id: 19804 + AegisName: "Costume_Red_Vane_Hairpin" + Name: "Costume Red Vane Hairpin" + Type: 5 + Loc: 1024 + View: 1044 +}, +{ + Id: 19805 + AegisName: "Costume_Taboo_Curse_Scroll" + Name: "Costume Taboo Curse Scroll" + Type: 5 + Loc: 1024 + View: 1045 +}, +{ + Id: 19806 + AegisName: "Costume_Full_Bloom_Hairpin" + Name: "Costume Full Bloom Hairpin" + Type: 5 + Loc: 1024 + View: 1046 +}, +{ + Id: 19807 + AegisName: "Costume_Majestic_Helmet" + Name: "Costume Majestic Helmet" + Type: 5 + Loc: 1024 + View: 1047 +}, +{ + Id: 19808 + AegisName: "Costume_Blazing_Sun" + Name: "Costume Blazing Sun" + Type: 5 + Loc: 1024 + View: 654 +}, +{ + Id: 19809 + AegisName: "Costume_Purple_Cowboy_Hat" + Name: "Costume Purple Cowboy Hat" + Type: 5 + Loc: 1024 + View: 411 +}, +{ + Id: 19810 + AegisName: "Costume_Ifrit's_Ear" + Name: "Costume Ifrit's Ear" + Type: 5 + Loc: 2048 + View: 422 +}, +{ + Id: 19811 + AegisName: "Costume_Beer_Cap" + Name: "Costume Beer Cap" + Type: 5 + Loc: 1024 + View: 418 +}, +{ + Id: 19812 + AegisName: "Costume_Large_Hibiscus" + Name: "Costume Large Hibiscus" + Type: 5 + Loc: 1024 + View: 333 +}, +{ + Id: 19813 + AegisName: "Costume_Icecream_Hat" + Name: "Costume Icecream Hat" + Type: 5 + Loc: 1024 + View: 488 +}, +{ + Id: 19814 + AegisName: "Costume_Shiny_Wig" + Name: "Costume Shiny Wig" + Type: 5 + Loc: 1024 + View: 306 +}, +{ + Id: 19815 + AegisName: "Costume_Lolita_Ten_Gallon_Hat" + Name: "Costume Lolita Ten Gallon Hat" + Type: 5 + Loc: 1024 + View: 1048 +}, +{ + Id: 19816 + AegisName: "Costume_Pecopeco_Cap" + Name: "Costume Pecopeco Cap" + Type: 5 + Loc: 1024 + View: 1049 +}, +{ + Id: 19817 + AegisName: "Costume_Ifrit's_Breath" + Name: "Costume Ifrit's Breath" + Type: 5 + Loc: 4096 + View: 1050 +}, +{ + Id: 19818 + AegisName: "Costume_Drooping_Morocc_Minion" + Name: "Costume Drooping Morocc Minion" + Type: 5 + Loc: 1024 + View: 600 +}, +{ + Id: 19820 + AegisName: "Costume_Necromencer_Hood" + Name: "Costume Necromencer Hood" + Type: 5 + Loc: 3072 + View: 491 +}, +{ + Id: 19821 + AegisName: "Costume_Hyegun_Hat" + Name: "Costume Hyegun Hat" + Type: 5 + Loc: 7168 + View: 375 +}, +{ + Id: 19822 + AegisName: "Costume_Yellow_Bandana" + Name: "Costume Yellow Bandana" + Type: 5 + Loc: 1024 + View: 309 +}, +{ + Id: 19823 + AegisName: "Costume_White_Cat_Hood" + Name: "Costume White Cat Hood" + Type: 5 + Loc: 3072 + View: 1052 +}, +{ + Id: 19824 + AegisName: "Costume_Evil_Druid_Hat" + Name: "Costume Evil Druid Hat" + Type: 5 + Loc: 1024 + View: 1053 +}, +{ + Id: 19825 + AegisName: "Costume_Vicious_Stop_Bandage" + Name: "Costume Vicious Stop Bandage" + Type: 5 + Loc: 1024 + View: 1054 +}, +{ + Id: 19826 + AegisName: "Costume_Ice_Wings_Ears" + Name: "Costume Ice Wings Ears" + Type: 5 + Loc: 2048 + View: 584 +}, +{ + Id: 19827 + AegisName: "Costume_Amistr_Cap" + Name: "Costume Amistr Cap" + Type: 5 + Loc: 1024 + View: 643 +}, +{ + Id: 19828 + AegisName: "Costume_Fedora" + Name: "Costume Fedora" + Type: 5 + Loc: 1024 + View: 195 +}, +{ Id: 19829 AegisName: "C_Straw_Hat" Name: "C Straw Hat" @@ -118055,6 +119670,294 @@ item_db: ( View: 146 }, { + Id: 19830 + AegisName: "Costume_Sunglasses" + Name: "Costume Sunglasses" + Type: 5 + Loc: 2048 + View: 12 +}, +{ + Id: 19831 + AegisName: "Costume_Filir_Hat" + Name: "Costume Filir Hat" + Type: 5 + Loc: 1024 + View: 408 +}, +{ + Id: 19832 + AegisName: "Costume_Poring_Hat" + Name: "Costume Poring Hat" + Type: 5 + Loc: 1024 + View: 120 +}, +{ + Id: 19833 + AegisName: "Costume_Cute_Ribbon" + Name: "Costume Cute Ribbon" + Type: 5 + Loc: 1024 + View: 34 +}, +{ + Id: 19834 + AegisName: "Costume_Baseball_Cap" + Name: "Costume Baseball Cap" + Type: 5 + Loc: 1024 + View: 216 +}, +{ + Id: 19835 + AegisName: "Costume_Lif_Doll_Hat" + Name: "Costume Lif Doll Hat" + Type: 5 + Loc: 1024 + View: 297 +}, +{ + Id: 19836 + AegisName: "Costume_Large_Majestic_Horns" + Name: "Costume Large Majestic Horns" + Type: 5 + Loc: 1024 + View: 380 +}, +{ + Id: 19837 + AegisName: "Costume_Asara_Fairy_Hat" + Name: "Costume Asara Fairy Hat" + Type: 5 + Loc: 1024 + View: 492 +}, +{ + Id: 19838 + AegisName: "Costume_Fox_Hatt" + Name: "Costume Fox Hatt" + Type: 5 + Loc: 6144 + View: 403 +}, +{ + Id: 19839 + AegisName: "Costume_Vanilmirth_Hat" + Name: "Costume Vanilmirth Hat" + Type: 5 + Loc: 1024 + View: 317 +}, +{ + Id: 19841 + AegisName: "Costume_Dragonhelm_Copper" + Name: "Costume Dragonhelm Copper" + Type: 5 + Loc: 1024 + View: 454 +}, +{ + Id: 19842 + AegisName: "Costume_Puppy_Hat" + Name: "Costume Puppy Hat" + Type: 5 + Loc: 1024 + View: 234 +}, +{ + Id: 19843 + AegisName: "Costume_Kitty_Band" + Name: "Costume Kitty Band" + Type: 5 + Loc: 1024 + View: 2 +}, +{ + Id: 19844 + AegisName: "Costume_Turban" + Name: "Costume Turban" + Type: 5 + Loc: 1024 + View: 7 +}, +{ + Id: 19845 + AegisName: "Costume_Bao_Bao" + Name: "Costume Bao Bao" + Type: 5 + Loc: 1024 + View: 127 +}, +{ + Id: 19846 + AegisName: "Costume_Opera_Phantom_Mask" + Name: "Costume Opera Phantom Mask" + Type: 5 + Loc: 2048 + View: 128 +}, +{ + Id: 19847 + AegisName: "Costume_Big_Ribbon" + Name: "Costume Big Ribbon" + Type: 5 + Loc: 1024 + View: 28 +}, +{ + Id: 19848 + AegisName: "Costume_Angeling_Hat" + Name: "Costume Angeling Hat" + Type: 5 + Loc: 1024 + View: 204 +}, +{ + Id: 19849 + AegisName: "Costume_Munak_Hat" + Name: "Costume Munak Hat" + Type: 5 + Loc: 7168 + View: 51 +}, +{ + Id: 19850 + AegisName: "Costume_Bongun_Hat" + Name: "Costume Bongun Hat" + Type: 5 + Loc: 7168 + View: 139 +}, +{ + Id: 19851 + AegisName: "Costume_Teddybear_Hat" + Name: "Costume Teddybear Hat" + Type: 5 + Loc: 1024 + View: 143 +}, +{ + Id: 19853 + AegisName: "Costume_Filir_Wings" + Name: "Costume Filir Wings" + Type: 5 + Loc: 1024 + View: 595 +}, +{ + Id: 19856 + AegisName: "Costume_Snow_Cone_Hat" + Name: "Costume Snow Cone Hat" + Type: 5 + Loc: 1024 + View: 1080 +}, +{ + Id: 19857 + AegisName: "Costume_Crayfish_Hat" + Name: "Costume Crayfish Hat" + Type: 5 + Loc: 1024 + View: 728 +}, +{ + Id: 19858 + AegisName: "Costume_Smokie_Leaf" + Name: "Costume Smokie Leaf" + Type: 5 + Loc: 1024 + View: 148 +}, +{ + Id: 19859 + AegisName: "Costume_Flying_Angel" + Name: "Costume Flying Angel" + Type: 5 + Loc: 1024 + View: 264 +}, +{ + Id: 19860 + AegisName: "Costume_School_Criatura_Hat" + Name: "Costume School Criatura Hat" + Type: 5 + Loc: 1024 + View: 872 +}, +{ + Id: 19861 + AegisName: "Costume_Heart_Hairpin" + Name: "Costume Heart Hairpin" + Type: 5 + Loc: 1024 + View: 126 +}, +{ + Id: 19862 + AegisName: "Costume_Succubus_Horn" + Name: "Costume Succubus Horn" + Type: 5 + Loc: 1024 + View: 150 +}, +{ + Id: 19863 + AegisName: "Costume_Incubus_Horn" + Name: "Costume Incubus Horn" + Type: 5 + Loc: 1024 + View: 156 +}, +{ + Id: 19864 + AegisName: "Costume_Dokebi's_Wig" + Name: "Costume Dokebi's Wig" + Type: 5 + Loc: 1024 + View: 302 +}, +{ + Id: 19865 + AegisName: "Costume_Joker_Jester" + Name: "Costume Joker Jester" + Type: 5 + Loc: 1024 + View: 89 +}, +{ + Id: 19866 + AegisName: "Costume_Blue_Pajamas" + Name: "Costume Blue Pajamas" + Type: 5 + Loc: 1024 + View: 501 +}, +{ + Id: 19867 + AegisName: "Costume_Red_Pajamas" + Name: "Costume Red Pajamas" + Type: 5 + Loc: 1024 + View: 501 +}, +{ + Id: 19868 + AegisName: "Costume_Showy_High_Cap" + Name: "Costume Showy High Cap" + Type: 5 + Loc: 1024 + View: 830 +}, +{ + Id: 19869 + AegisName: "Costume_Boss_Beret" + Name: "Costume Boss Beret" + Type: 5 + Loc: 1024 + View: 1134 +}, +{ Id: 19871 AegisName: "C_DecorationOfMusic_Accessory" Name: "Decoration of Music" @@ -118067,75 +119970,2091 @@ item_db: ( OnUnequipScript: <" sc_end SC_DECORATION_OF_MUSIC; "> }, { + Id: 19873 + AegisName: "Costume_Carnival_Hat" + Name: "Costume Carnival Hat" + Type: 5 + Loc: 1024 + View: 505 +}, +{ + Id: 19874 + AegisName: "Costume_Carnival_Circlet" + Name: "Costume Carnival Circlet" + Type: 5 + Loc: 1024 + View: 506 +}, +{ + Id: 19875 + AegisName: "Costume_Love_Rabbit_Hood" + Name: "Costume Love Rabbit Hood" + Type: 5 + Loc: 7168 + View: 549 +}, +{ + Id: 19876 + AegisName: "Costume_Rabbit_Ear_Hat" + Name: "Costume Rabbit Ear Hat" + Type: 5 + Loc: 1024 + View: 384 +}, +{ + Id: 19877 + AegisName: "Costume_Eyes_Of_Darkness" + Name: "Costume Eyes Of Darkness" + Type: 5 + Loc: 2048 + View: 467 +}, +{ + Id: 19878 + AegisName: "Costume_Drooping_Bunny" + Name: "Costume Drooping Bunny" + Type: 5 + Loc: 1024 + View: 249 +}, +{ + Id: 19879 + AegisName: "Costume_Black_Bunny_Band" + Name: "Costume Black Bunny Band" + Type: 5 + Loc: 1024 + View: 267 +}, +{ + Id: 19880 + AegisName: "Costume_Golden_Tiara" + Name: "Costume Golden Tiara" + Type: 5 + Loc: 1024 + View: 232 +}, +{ + Id: 19881 + AegisName: "Costume_Pretty_Rabbit_Hood" + Name: "Costume Pretty Rabbit Hood" + Type: 5 + Loc: 1024 + View: 1085 +}, +{ + Id: 19882 + AegisName: "Costume_Flowerpot_Mask" + Name: "Costume Flowerpot Mask" + Type: 5 + Loc: 6144 + View: 1086 +}, +{ + Id: 19883 + AegisName: "Costume_Piamette_Hood" + Name: "Costume Piamette Hood" + Type: 5 + Loc: 1024 + View: 1087 +}, +{ + Id: 19884 + AegisName: "Costume_Vanargand_Helm" + Name: "Costume Vanargand Helm" + Type: 5 + Loc: 1024 + View: 804 +}, +{ + Id: 19885 + AegisName: "Costume_Blinker" + Name: "Costume Blinker" + Type: 5 + Loc: 2048 + View: 82 +}, +{ + Id: 19886 + AegisName: "Costume_Purple_Glasses" + Name: "Costume Purple Glasses" + Type: 5 + Loc: 2048 + View: 26 +}, +{ + Id: 19887 + AegisName: "Costume_Cyclops_Glasses" + Name: "Costume Cyclops Glasses" + Type: 5 + Loc: 2048 + View: 23 +}, +{ + Id: 19888 + AegisName: "Costume_Glasses" + Name: "Costume Glasses" + Type: 5 + Loc: 2048 + View: 3 +}, +{ + Id: 19889 + AegisName: "Costume_Small_Ribbon" + Name: "Costume Small Ribbon" + Type: 5 + Loc: 2048 + View: 169 +}, +{ + Id: 19890 + AegisName: "Costume_Mage_Hat" + Name: "Costume Mage Hat" + Type: 5 + Loc: 1024 + View: 112 +}, +{ + Id: 19891 + AegisName: "Costume_Magnolia_Hat" + Name: "Costume Magnolia Hat" + Type: 5 + Loc: 1024 + View: 373 +}, +{ + Id: 19892 + AegisName: "Costume_Night_Sparrow_Hat" + Name: "Costume Night Sparrow Hat" + Type: 5 + Loc: 1024 + View: 913 +}, +{ + Id: 19893 + AegisName: "Costume_Ordinary_Black_Magician_Hat" + Name: "Costume Ordinary Black Magician Hat" + Type: 5 + Loc: 1024 + View: 912 +}, +{ + Id: 19894 + AegisName: "Costume_Shrine_Maiden_Hat" + Name: "Costume Shrine Maiden Hat" + Type: 5 + Loc: 1024 + View: 908 +}, +{ + Id: 19895 + AegisName: "Costume_Magician's_Night_Cap" + Name: "Costume Magician's Night Cap" + Type: 5 + Loc: 1024 + View: 911 +}, +{ + Id: 19896 + AegisName: "Costume_PRO_10th_Cap" + Name: "Costume PRO 10th Cap" + Type: 5 + Loc: 1024 + View: 1094 +}, +{ + Id: 19897 + AegisName: "Costume_RPC13_1ST_Wreath" + Name: "Costume RPC13 1ST Wreath" + Type: 5 + Loc: 1024 + View: 261 + Script: <" + bonus bAllStats,3; + bonus bMdef,3; + "> +}, +{ + Id: 19898 + AegisName: "Costume_RPC13_2ND_Wreath" + Name: "Costume RPC13 2ND Wreath" + Type: 5 + Loc: 1024 + View: 261 + Script: <" + bonus bAllStats,2; + bonus bMdef,2; + "> +}, +{ + Id: 19899 + AegisName: "Costume_RPC13_3RD_Wreath" + Name: "Costume RPC13 3RD Wreath" + Type: 5 + Loc: 1024 + View: 261 + Script: <" + bonus bAllStats,1; + bonus bMdef,1; + "> +}, +{ + Id: 19902 + AegisName: "Costume_Cigarette" + Name: "Costume Cigarette" + Type: 5 + Loc: 4096 + View: 54 +}, +{ Id: 19903 - AegisName: "C_Witchs_Hat" - Name: "C Witchs Hat" + AegisName: "Costume_Witch's_Pumpkin_Hat" + Name: "Costume Witch's Pumpkin Hat" Type: 5 Loc: 1024 EquipLv: 1 Refine: false View: 717 - Script: <" bonus bCastrate,-10; "> +}, +{ + Id: 19904 + AegisName: "Costume_Skull_Cap" + Name: "Costume Skull Cap" + Type: 5 + Loc: 1024 + View: 713 +}, +{ + Id: 19905 + AegisName: "Costume_Secret_Society_Hood" + Name: "Costume Secret Society Hood" + Type: 5 + Loc: 3072 + View: 806 +}, +{ + Id: 19906 + AegisName: "Costume_Screw_stuck_in_head" + Name: "Costume Screw stuck in head" + Type: 5 + Loc: 2048 + View: 696 +}, +{ + Id: 19907 + AegisName: "Costume_Fascinating_Phantom_Mask" + Name: "Costume Fascinating Phantom Mask" + Type: 5 + Loc: 3072 + View: 710 +}, +{ + Id: 19908 + AegisName: "Costume_Flag_Crown_Hat" + Name: "Costume Flag Crown Hat" + Type: 5 + Loc: 1024 + View: 219 +}, +{ + Id: 19909 + AegisName: "Costume_White_Deviruchi_Hat" + Name: "Costume White Deviruchi Hat" + Type: 5 + Loc: 1024 + View: 272 +}, +{ + Id: 19910 + AegisName: "Costume_Halloween_Hat" + Name: "Costume Halloween Hat" + Type: 5 + Loc: 1024 + View: 1098 +}, +{ + Id: 19911 + AegisName: "Costume_Triangle_Roof_Hat" + Name: "Costume Triangle Roof Hat" + Type: 5 + Loc: 1024 + View: 1099 +}, +{ + Id: 19912 + AegisName: "Costume_Cat_Eye" + Name: "Costume Cat Eye" + Type: 5 + Loc: 2048 + View: 1100 +}, +{ + Id: 19913 + AegisName: "Costume_Poo_Poo_Hat" + Name: "Costume Poo Poo Hat" + Type: 5 + Loc: 1024 + View: 76 +}, +{ + Id: 19914 + AegisName: "Costume_Tarlock's_Hat" + Name: "Costume Tarlock's Hat" + Type: 5 + Loc: 1024 + View: 1101 }, { Id: 19917 - AegisName: "C_Gloomy_Pumpkin_Hat" - Name: "C Gloomy Pumpkin Hat" + AegisName: "Costume_Dark_Pumpkin_Hat" + Name: "Costume Dark Pumpkin Hat" Type: 5 Loc: 1024 EquipLv: 1 Refine: false View: 691 - Script: <" bonus bSpeedRate,25; "> }, { Id: 19918 - AegisName: "C_Lude_Mask" - Name: "C Lude Mask" + AegisName: "Costume_Lude_Mask" + Name: "Costume Lude Mask" Type: 5 Loc: 6144 EquipLv: 1 Refine: false View: 802 - Script: <" bonus bHealPower2,20; bonus bAddItemHealRate,20; "> }, { Id: 19919 - AegisName: "C_Cube_Mask_" - Name: "C Cube Mask " + AegisName: "Costume_Quve_Mask" + Name: "Costume Quve Mask" Type: 5 Loc: 6144 EquipLv: 1 Refine: false View: 472 - Script: <" bonus bAspdRate,10; "> }, { Id: 19920 - AegisName: "C_Adv_Whisper_Mask" - Name: "C Adv Whisper Mask" + AegisName: "Costume_Evolved_Whisper_Mask" + Name: "Costume Evolved Whisper Mask" Type: 5 Loc: 7168 EquipLv: 1 Refine: false View: 458 - Script: <" bonus bFlee,20; "> }, { - Id: 22067 - AegisName: "Witch_Shoes" - Name: "Witch Shoes" + Id: 19922 + AegisName: "Costume_Noah's_Hat" + Name: "Costume Noah's Hat" Type: 5 - Buy: 3500 - Weight: 400 - Def: 10 - Job: 0xFFFFFFFE - Loc: 64 - Script: <" - skill ALL_CATCRY, 1; - bonus bUnbreakableShoes,0; - autobonus3 "{ }",1000,7000,ALL_CATCRY,"{ montransform 1505,420000; }"; - "> + Loc: 1024 + View: 636 +}, +{ + Id: 19925 + AegisName: "Costume_Monocle" + Name: "Costume Monocle" + Type: 5 + Loc: 2048 + View: 23 +}, +{ + Id: 19928 + AegisName: "Costume_Gothic_Heart_Wing" + Name: "Costume Gothic Heart Wing" + Type: 5 + Loc: 1024 + View: 1111 +}, +{ + Id: 19929 + AegisName: "Costume_Classical_Ribbon" + Name: "Costume Classical Ribbon" + Type: 5 + Loc: 1024 + View: 1112 +}, +{ + Id: 19930 + AegisName: "Costume_Angel_Mini_Silk_Hat" + Name: "Costume Angel Mini Silk Hat" + Type: 5 + Loc: 1024 + View: 1113 +}, +{ + Id: 19931 + AegisName: "Costume_Lazy_Smokie" + Name: "Costume Lazy Smokie" + Type: 5 + Loc: 1024 + View: 168 +}, +{ + Id: 19932 + AegisName: "Costume_Model_Training_Hat" + Name: "Costume Model Training Hat" + Type: 5 + Loc: 1024 + View: 157 +}, +{ + Id: 19934 + AegisName: "Costume_Flaming_Ten_Gallon_Hat" + Name: "Costume Flaming Ten Gallon Hat" + Type: 5 + Loc: 1024 + View: 1075 +}, +{ + Id: 19935 + AegisName: "Costume_Hunting_Cap_Of_Gust" + Name: "Costume Hunting Cap Of Gust" + Type: 5 + Loc: 1024 + View: 1076 +}, +{ + Id: 19936 + AegisName: "Costume_Knit_Cap_Of_Water" + Name: "Costume Knit Cap Of Water" + Type: 5 + Loc: 1024 + View: 1077 +}, +{ + Id: 19938 + AegisName: "Costume_Love_Bunny_Hood" + Name: "Costume Love Bunny Hood" + Type: 5 + Loc: 1024 + View: 549 +}, +{ + Id: 19939 + AegisName: "Costume_Antlers" + Name: "Costume Antlers" + Type: 5 + Loc: 1024 + View: 71 +}, +{ + Id: 19941 + AegisName: "Costume_Ear_Muffs" + Name: "Costume Ear Muffs" + Type: 5 + Loc: 1024 + View: 70 +}, +{ + Id: 19949 + AegisName: "Costume_RWC2013_Japan_Hat" + Name: "Costume RWC2013 Japan Hat" + Type: 5 + Loc: 1024 + View: 1136 +}, +{ + Id: 19952 + AegisName: "Costume_Bubble_Gum_in_Mouth" + Name: "Costume Bubble Gum in Mouth" + Type: 5 + Loc: 4096 + View: 572 +}, +{ + Id: 19953 + AegisName: "Costume_Parade_Cap" + Name: "Costume Parade Cap" + Type: 5 + Loc: 1024 + View: 465 +}, +{ + Id: 19954 + AegisName: "Costume_3D_Glasses" + Name: "Costume 3D Glasses" + Type: 5 + Loc: 2048 + View: 661 +}, +{ + Id: 19955 + AegisName: "Costume_Mini_Tree" + Name: "Costume Mini Tree" + Type: 5 + Loc: 1024 + View: 727 +}, +{ + Id: 19956 + AegisName: "Costume_Soldier_Hat" + Name: "Costume Soldier Hat" + Type: 5 + Loc: 1024 + View: 420 +}, +{ + Id: 19957 + AegisName: "Costume_Scooter_Hat" + Name: "Costume Scooter Hat" + Type: 5 + Loc: 1024 + View: 588 +}, +{ + Id: 19958 + AegisName: "Costume_Choir_Hat" + Name: "Costume Choir Hat" + Type: 5 + Loc: 1024 + View: 1137 +}, +{ + Id: 19959 + AegisName: "Costume_Drooping_Argiope" + Name: "Costume Drooping Argiope" + Type: 5 + Loc: 1024 + View: 1138 +}, +{ + Id: 19960 + AegisName: "Costume_Chain_Puppet" + Name: "Costume Chain Puppet" + Type: 5 + Loc: 1024 + View: 1139 +}, +{ + Id: 19961 + AegisName: "Costume_Rune_Circlet" + Name: "Costume Rune Circlet" + Type: 5 + Loc: 1024 + View: 623 +}, +{ + Id: 19962 + AegisName: "Costume_Mitra" + Name: "Costume Mitra" + Type: 5 + Loc: 1024 + View: 624 +}, +{ + Id: 19963 + AegisName: "Costume_Driver_Band_Red" + Name: "Costume Driver Band Red" + Type: 5 + Loc: 1024 + View: 626 +}, +{ + Id: 19964 + AegisName: "Costume_Driver_Band_Yellow" + Name: "Costume Driver Band Yellow" + Type: 5 + Loc: 1024 + View: 637 +}, +{ + Id: 19965 + AegisName: "Costume_Shadow_Handicraft" + Name: "Costume Shadow Handicraft" + Type: 5 + Loc: 1024 + View: 627 +}, +{ + Id: 19966 + AegisName: "Costume_Minstrel_Song's_Hat" + Name: "Costume Minstrel Song's Hat" + Type: 5 + Loc: 1024 + View: 628 +}, +{ + Id: 19967 + AegisName: "Costume_Midas_Whisper" + Name: "Costume Midas Whisper" + Type: 5 + Loc: 1024 + View: 629 +}, +{ + Id: 19968 + AegisName: "Costume_Magic_Stone_Hat" + Name: "Costume Magic Stone Hat" + Type: 5 + Loc: 1024 + View: 630 +}, +{ + Id: 19969 + AegisName: "Costume_Blazing_Soul" + Name: "Costume Blazing Soul" + Type: 5 + Loc: 1024 + View: 631 +}, +{ + Id: 19970 + AegisName: "Costume_Wind_Whisper" + Name: "Costume Wind Whisper" + Type: 5 + Loc: 1024 + View: 633 +}, +{ + Id: 19971 + AegisName: "Costume_Dying_Swan" + Name: "Costume Dying Swan" + Type: 5 + Loc: 1024 + View: 635 +}, +{ + Id: 19972 + AegisName: "Costume_Protect_Of_Crown" + Name: "Costume Protect Of Crown" + Type: 5 + Loc: 1024 + View: 1140 +}, +{ + Id: 19973 + AegisName: "Costume_Circlet_Of_Bones" + Name: "Costume Circlet Of Bones" + Type: 5 + Loc: 1024 + View: 1141 +}, +{ + Id: 19974 + AegisName: "Costume_Camouflage_Rabbit_Hood" + Name: "Costume Camouflage Rabbit Hood" + Type: 5 + Loc: 1024 + View: 1142 +}, +{ + Id: 19976 + AegisName: "Costume_Cat_Santa_Hat" + Name: "Costume Cat Santa Hat" + Type: 5 + Loc: 1024 + View: 1144 +}, +{ + Id: 19977 + AegisName: "Costume_Golden_Exclamation_Mark" + Name: "Costume Golden Exclamation Mark" + Type: 5 + Loc: 1024 + View: 1145 +}, +{ + Id: 19978 + AegisName: "Costume_Silver_Exclamation_Mark" + Name: "Costume Silver Exclamation Mark" + Type: 5 + Loc: 1024 + View: 1146 +}, +{ + Id: 19979 + AegisName: "Costume_Golden_Question_Mark" + Name: "Costume Golden Question Mark" + Type: 5 + Loc: 1024 + View: 1147 +}, +{ + Id: 19980 + AegisName: "Costume_Silver_Question_Mark" + Name: "Costume Silver Question Mark" + Type: 5 + Loc: 1024 + View: 1148 +}, +{ + Id: 19982 + AegisName: "Costume_Santa_Hat" + Name: "Costume Santa Hat" + Type: 5 + Loc: 1024 + View: 727 +}, +{ + Id: 19983 + AegisName: "Costume_Flower_Hairpin" + Name: "Costume Flower Hairpin" + Type: 5 + Loc: 1024 + View: 145 +}, +{ + Id: 19984 + AegisName: "Costume_Winter_Hat" + Name: "Costume Winter Hat" + Type: 5 + Loc: 1024 + View: 196 +}, +{ + Id: 19985 + AegisName: "Costume_Aura_Quartz" + Name: "Costume Aura Quartz" + Type: 5 + Loc: 1024 + View: 866 +}, +{ + Id: 19986 + AegisName: "Costume_Lunatic_Hat" + Name: "Costume Lunatic Hat" + Type: 5 + Loc: 1024 + View: 521 +}, +{ + Id: 19987 + AegisName: "Costume_Blue_Fur_Hat" + Name: "Costume Blue Fur Hat" + Type: 5 + Loc: 1024 + View: 280 +}, +{ + Id: 19988 + AegisName: "Costume_Elder_Crown" + Name: "Costume Elder Crown" + Type: 5 + Loc: 1024 + View: 933 +}, +{ + Id: 19989 + AegisName: "Costume_Mouton_Life" + Name: "Costume Mouton Life" + Type: 5 + Loc: 2048 + View: 1156 +}, +{ + Id: 19990 + AegisName: "Costume_Rabbit_Knit_Hat" + Name: "Costume Rabbit Knit Hat" + Type: 5 + Loc: 1024 + View: 1157 +}, +{ + Id: 19991 + AegisName: "Costume_Galanthus_Guard" + Name: "Costume Galanthus Guard" + Type: 5 + Loc: 1024 + View: 1158 +}, +{ + Id: 19992 + AegisName: "Costume_Chilly_Breath" + Name: "Costume Chilly Breath" + Type: 5 + Loc: 4096 + View: 885 +}, +{ + Id: 19994 + AegisName: "Costume_saLUsalo_Hat" + Name: "Costume saLUsalo Hat" + Type: 5 + Loc: 1024 + View: 1171 +}, +{ + Id: 19996 + AegisName: "Costume_Horse_King" + Name: "Costume Horse King" + Type: 5 + Loc: 7168 + View: 1189 +}, +{ + Id: 19997 + AegisName: "Costume_Bomb_Hat" + Name: "Costume Bomb Hat" + Type: 5 + Loc: 1024 + View: 1191 +}, +{ + Id: 19998 + AegisName: "Costume_Dragon_Turtle_Hat" + Name: "Costume Dragon Turtle Hat" + Type: 5 + Loc: 1024 + View: 1192 +}, +{ + Id: 19999 + AegisName: "Costume_Mouse_Hat1" + Name: "Costume Mouse Hat1" + Type: 5 + Loc: 1024 + View: 1193 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20000 + AegisName: "Costume_Mouse_Hat2" + Name: "Costume Mouse Hat2" + Type: 5 + Loc: 1024 + View: 1194 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20001 + AegisName: "Costume_Mouse_Hat3" + Name: "Costume Mouse Hat3" + Type: 5 + Loc: 1024 + View: 1195 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20002 + AegisName: "Costume_Mouse_Hat4" + Name: "Costume Mouse Hat4" + Type: 5 + Loc: 1024 + View: 1196 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20003 + AegisName: "Costume_Mouse_Hat5" + Name: "Costume Mouse Hat5" + Type: 5 + Loc: 1024 + View: 1197 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20004 + AegisName: "Costume_Big_Golden_Bell" + Name: "Costume Big Golden Bell" + Type: 5 + Loc: 1024 + View: 175 +}, +{ + Id: 20005 + AegisName: "Costume_Sigrun_Wing" + Name: "Costume Sigrun Wing" + Type: 5 + Loc: 1024 + View: 568 +}, +{ + Id: 20006 + AegisName: "Costume_Dark_Knight_Mask" + Name: "Costume Dark Knight Mask" + Type: 5 + Loc: 3072 + View: 479 +}, +{ + Id: 20007 + AegisName: "Costume_Horned_Hat" + Name: "Costume Horned Hat" + Type: 5 + Loc: 1024 + View: 322 +}, +{ + Id: 20008 + AegisName: "Costume_Dragon_General_Helm" + Name: "Costume Dragon General Helm" + Type: 5 + Loc: 1024 + View: 729 +}, +{ + Id: 20009 + AegisName: "Costume_Dragon_Skull_Hat" + Name: "Costume Dragon Skull Hat" + Type: 5 + Loc: 1024 + View: 319 +}, +{ + Id: 20010 + AegisName: "Costume_Rainbow_Ears_Feather" + Name: "Costume Rainbow Ears Feather" + Type: 5 + Loc: 2048 + View: 1198 +}, +{ + Id: 20011 + AegisName: "Costume_Lightning_Speed" + Name: "Costume Lightning Speed" + Type: 5 + Loc: 1024 + View: 1199 +}, +{ + Id: 20012 + AegisName: "Costume_Double_Horn_Helm" + Name: "Costume Double Horn Helm" + Type: 5 + Loc: 1024 + View: 1200 +}, +{ + Id: 20013 + AegisName: "Costume_Chef_Hat" + Name: "Costume Chef Hat" + Type: 5 + Loc: 1024 + View: 111 +}, +{ + Id: 20014 + AegisName: "Costume_Lincoln_Hat" + Name: "Costume Lincoln Hat" + Type: 5 + Loc: 1024 + View: 1204 +}, +{ + Id: 20015 + AegisName: "Costume_Lincoln_Beard" + Name: "Costume Lincoln Beard" + Type: 5 + Loc: 4096 + View: 1205 +}, +{ + Id: 20016 + AegisName: "Costume_Cool_Dinner_Hat" + Name: "Costume Cool Dinner Hat" + Type: 5 + Loc: 1024 + View: 1206 +}, +{ + Id: 20017 + AegisName: "Costume_Marionette_Doll" + Name: "Costume Marionette Doll" + Type: 5 + Loc: 1024 + View: 212 +}, +{ + Id: 20019 + AegisName: "Costume_Artisant_Beret" + Name: "Costume Artisant Beret" + Type: 5 + Loc: 1024 + View: 1209 +}, +{ + Id: 20020 + AegisName: "Costume_Zaha_Doll_Hat" + Name: "Costume Zaha Doll Hat" + Type: 5 + Loc: 1024 + View: 461 +}, +{ + Id: 20021 + AegisName: "Costume_Heart_Ribbon_Hairband" + Name: "Costume Heart Ribbon Hairband" + Type: 5 + Loc: 1024 + View: 708 +}, +{ + Id: 20022 + AegisName: "Costume_Love_Fragment" + Name: "Costume Love Fragment" + Type: 5 + Loc: 4096 + View: 734 +}, +{ + Id: 20023 + AegisName: "Costume_Red_Beret" + Name: "Costume Red Beret" + Type: 5 + Loc: 1024 + View: 559 +}, +{ + Id: 20024 + AegisName: "Costume_Orange_Ribbon" + Name: "Costume Orange Ribbon" + Type: 5 + Loc: 1024 + View: 247 +}, +{ + Id: 20025 + AegisName: "Costume_Cow_Hat1" + Name: "Costume Cow Hat1" + Type: 5 + Loc: 1024 + View: 1211 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20026 + AegisName: "Costume_Cow_Hat2" + Name: "Costume Cow Hat2" + Type: 5 + Loc: 1024 + View: 1212 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20027 + AegisName: "Costume_Cow_Hat3" + Name: "Costume Cow Hat3" + Type: 5 + Loc: 1024 + View: 1213 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20028 + AegisName: "Costume_Cow_Hat4" + Name: "Costume Cow Hat4" + Type: 5 + Loc: 1024 + View: 1214 + Trade: { + nodrop: true + notrade: true + noselltonpc: true + nocart: true + nogstorage: true + nomail: true + noauction: true + } +}, +{ + Id: 20029 + AegisName: "Costume_Donut_in_Mouth" + Name: "Costume Donut in Mouth" + Type: 5 + Loc: 4096 + View: 569 +}, +{ + Id: 20030 + AegisName: "Costume_Choco_Donut_in_Mouth" + Name: "Costume Choco Donut in Mouth" + Type: 5 + Loc: 4096 + View: 653 +}, +{ + Id: 20031 + AegisName: "Costume_Bunny_Headress" + Name: "Costume Bunny Headress" + Type: 5 + Loc: 1024 + View: 1215 +}, +{ + Id: 20032 + AegisName: "Costume_Firinto_Scarf" + Name: "Costume Firinto Scarf" + Type: 5 + Loc: 1024 + View: 1216 +}, +{ + Id: 20033 + AegisName: "Costume_Monk_Crown" + Name: "Costume Monk Crown" + Type: 5 + Loc: 1024 + View: 1217 +}, +{ + Id: 20034 + AegisName: "Costume_Jack_Castle_Bat" + Name: "Costume Jack Castle Bat" + Type: 5 + Loc: 4096 + View: 1041 +}, +{ + Id: 20035 + AegisName: "Costume_Miracle_Blue_Rose" + Name: "Costume Miracle Blue Rose" + Type: 5 + Loc: 4096 + View: 1064 +}, +{ + Id: 20036 + AegisName: "Costume_Crown_of_Victory" + Name: "Costume Crown of Victory" + Type: 5 + Loc: 1024 + View: 981 +}, +{ + Id: 20037 + AegisName: "Costume_Owlduke_Silk_Hat" + Name: "Costume Owlduke Silk Hat" + Type: 5 + Loc: 1024 + View: 982 +}, +{ + Id: 20038 + AegisName: "Costume_Alphonse_Helm" + Name: "Costume Alphonse Helm" + Type: 5 + Loc: 1024 + View: 1214 +}, +{ + Id: 20039 + AegisName: "Costume_Butterfly_Wing_Ears" + Name: "Costume Butterfly Wing Ears" + Type: 5 + Loc: 2048 + View: 695 +}, +{ + Id: 20040 + AegisName: "Costume_Chung_Hairpin" + Name: "Costume Chung Hairpin" + Type: 5 + Loc: 1024 + View: 583 +}, +{ + Id: 20041 + AegisName: "Costume_Rose_Headband" + Name: "Costume Rose Headband" + Type: 5 + Loc: 1024 + View: 864 +}, +{ + Id: 20042 + AegisName: "Costume_Hermos_Cap" + Name: "Costume Hermos Cap" + Type: 5 + Loc: 1024 + View: 478 +}, +{ + Id: 20043 + AegisName: "Costume_Cherryblossom_in_Mouth" + Name: "Costume Cherryblossom in Mouth" + Type: 5 + Loc: 4096 + View: 823 +}, +{ + Id: 20044 + AegisName: "Costume_Carmen_Miranda's_Hat" + Name: "Costume Carmen Miranda's Hat" + Type: 5 + Loc: 1024 + View: 329 +}, +{ + Id: 20045 + AegisName: "Costume_Samambaia" + Name: "Costume Samambaia" + Type: 5 + Loc: 1024 + View: 508 +}, +{ + Id: 20046 + AegisName: "Costume_Blue_Ribbon_Band" + Name: "Costume Blue Ribbon Band" + Type: 5 + Loc: 1024 + View: 1222 +}, +{ + Id: 20047 + AegisName: "Costume_Prayer_Cherry_Blossom" + Name: "Costume Prayer Cherry Blossom" + Type: 5 + Loc: 1024 + View: 1223 +}, +{ + Id: 20048 + AegisName: "Costume_Wind_Prairie" + Name: "Costume Wind Prairie" + Type: 5 + Loc: 1024 + View: 1224 +}, +{ + Id: 20049 + AegisName: "Costume_Giant_Aid_Band" + Name: "Costume Giant Aid Band" + Type: 5 + Loc: 1024 + View: 147 +}, +{ + Id: 20050 + AegisName: "Costume_Ph.D_Hat" + Name: "Costume Ph.D Hat" + Type: 5 + Loc: 1024 + View: 98 +}, +{ + Id: 20053 + AegisName: "Costume_WKing_Tiger_Doll_Hat" + Name: "Costume WKing Tiger Doll Hat" + Type: 5 + Loc: 1024 + View: 973 +}, +{ + Id: 20054 + AegisName: "Costume_Pacifier" + Name: "Costume Pacifier" + Type: 5 + Loc: 4096 + View: 191 +}, +{ + Id: 20055 + AegisName: "Costume_Ghost_Bandana" + Name: "Costume Ghost Bandana" + Type: 5 + Loc: 1024 + View: 61 +}, +{ + Id: 20056 + AegisName: "Costume_Bride's_Corolla" + Name: "Costume Bride's Corolla" + Type: 5 + Loc: 1024 + View: 437 +}, +{ + Id: 20057 + AegisName: "Costume_Feather_Bonnet" + Name: "Costume Feather Bonnet" + Type: 5 + Loc: 1024 + View: 104 +}, +{ + Id: 20063 + AegisName: "Costume_Yellow_Brain_Hat" + Name: "Costume Yellow Brain Hat" + Type: 5 + Loc: 1024 + View: 1228 +}, +{ + Id: 20064 + AegisName: "Costume_Blue_Brain_Hat" + Name: "Costume Blue Brain Hat" + Type: 5 + Loc: 1024 + View: 1229 +}, +{ + Id: 20067 + AegisName: "Costume_White_Rabbit_Headband" + Name: "Costume White Rabbit Headband" + Type: 5 + Loc: 1024 + View: 719 +}, +{ + Id: 20068 + AegisName: "Costume_Black_Rabbit_Headband" + Name: "Costume Black Rabbit Headband" + Type: 5 + Loc: 1024 + View: 718 +}, +{ + Id: 20070 + AegisName: "Costume_Alpaca_Hood" + Name: "Costume Alpaca Hood" + Type: 5 + Loc: 7168 + View: 1234 +}, +{ + Id: 20073 + AegisName: "Costume_Hair_Band" + Name: "Costume Hair Band" + Type: 5 + Loc: 1024 + View: 9 +}, +{ + Id: 20074 + AegisName: "Costume_Biretta" + Name: "Costume Biretta" + Type: 5 + Loc: 1024 + View: 11 +}, +{ + Id: 20084 + AegisName: "Costume_Ceremonial_Hat" + Name: "Costume Ceremonial Hat" + Type: 5 + Loc: 1024 + View: 325 +}, +{ + Id: 20085 + AegisName: "Costume_St_Patrick's_Hat" + Name: "Costume St Patrick's Hat" + Type: 5 + Loc: 1024 + View: 735 +}, +{ + Id: 20086 + AegisName: "Costume_Dragon_Cintamani_Hat1" + Name: "Costume Dragon Cintamani Hat1" + Type: 5 + Loc: 1024 + View: 1245 +}, +{ + Id: 20087 + AegisName: "Costume_Dragon_Cintamani_Hat2" + Name: "Costume Dragon Cintamani Hat2" + Type: 5 + Loc: 1024 + View: 1246 +}, +{ + Id: 20091 + AegisName: "Costume_Smoking_Pipe" + Name: "Costume Smoking Pipe" + Type: 5 + Loc: 4096 + View: 55 +}, +{ + Id: 20092 + AegisName: "Costume_Sale_Banner" + Name: "Costume Sale Banner" + Type: 5 + Loc: 1024 + View: 183 +}, +{ + Id: 20093 + AegisName: "Costume_Wizard_Hat" + Name: "Costume Wizard Hat" + Type: 5 + Loc: 1024 + View: 36 +}, +{ + Id: 20094 + AegisName: "Costume_Green_Ribbon" + Name: "Costume Green Ribbon" + Type: 5 + Loc: 1024 + View: 439 +}, +{ + Id: 20095 + AegisName: "Costume_Red_Ribbon" + Name: "Costume Red Ribbon" + Type: 5 + Loc: 1024 + View: 440 +}, +{ + Id: 20096 + AegisName: "Costume_Blue_Ribbonn" + Name: "Costume Blue Ribbonn" + Type: 5 + Loc: 1024 + View: 441 +}, +{ + Id: 20097 + AegisName: "Costume_White_Ribbon" + Name: "Costume White Ribbon" + Type: 5 + Loc: 1024 + View: 442 +}, +{ + Id: 20099 + AegisName: "Costume_Ljosalfar" + Name: "Costume Ljosalfar" + Type: 5 + Loc: 1024 + View: 1239 +}, +{ + Id: 20100 + AegisName: "Costume_Volume_Fhat" + Name: "Costume Volume Fhat" + Type: 5 + Loc: 1024 + View: 1240 +}, +{ + Id: 20102 + AegisName: "Costume_Horse_King_J" + Name: "Costume Horse King_J" + Type: 5 + Loc: 7168 + View: 1189 +}, +{ + Id: 20103 + AegisName: "Costume_Drooping_Panda" + Name: "Costume Drooping Panda" + Type: 5 + Loc: 1024 + View: 1029 +}, +{ + Id: 20104 + AegisName: "Costume_Picky_Egg_Shell" + Name: "Costume Picky Egg Shell" + Type: 5 + Loc: 1024 + View: 1001 +}, +{ + Id: 20105 + AegisName: "Costume_Fish_Head" + Name: "Costume Fish Head" + Type: 5 + Loc: 1024 + View: 386 +}, +{ + Id: 20106 + AegisName: "Costume_Classic_Hat" + Name: "Costume Classic Hat" + Type: 5 + Loc: 1024 + View: 475 +}, +{ + Id: 20107 + AegisName: "Costume_Fish_in_mouth" + Name: "Costume Fish in mouth" + Type: 5 + Loc: 4096 + View: 406 +}, +{ + Id: 20108 + AegisName: "Costume_Blind_Glasses" + Name: "Costume Blind Glasses" + Type: 5 + Loc: 2048 + View: 813 +}, +{ + Id: 20109 + AegisName: "Costume_Jolly_Roger_Hat" + Name: "Costume Jolly Roger Hat" + Type: 5 + Loc: 1024 + View: 962 +}, +{ + Id: 20110 + AegisName: "Costume_Coiledup_Snake_Hat1" + Name: "Costume Coiledup Snake Hat1" + Type: 5 + Loc: 1024 + View: 1258 +}, +{ + Id: 20111 + AegisName: "Costume_Coiledup_Snake_Hat2" + Name: "Costume Coiledup Snake Hat2" + Type: 5 + Loc: 1024 + View: 1259 +}, +{ + Id: 20112 + AegisName: "Costume_Aqua_Ten_Gallon_Hat" + Name: "Costume Aqua Ten Gallon Hat" + Type: 5 + Loc: 1024 + View: 1256 +}, +{ + Id: 20113 + AegisName: "Costume_Star_Reading_Hat" + Name: "Costume Star Reading Hat" + Type: 5 + Loc: 1024 + View: 1253 +}, +{ + Id: 20114 + AegisName: "Costume_Funeral_Hat" + Name: "Costume Funeral Hat" + Type: 5 + Loc: 1024 + View: 77 +}, +{ + Id: 20115 + AegisName: "Costume_Under_Rim_Glasses" + Name: "Costume Under Rim Glasses" + Type: 5 + Loc: 2048 + View: 1255 +}, +{ + Id: 20116 + AegisName: "Costume_Mermaid_Headphones" + Name: "Costume Mermaid Headphones" + Type: 5 + Loc: 2048 + View: 1254 +}, +{ + Id: 20117 + AegisName: "Costume_Raspberry_Mousse_Hat" + Name: "Costume Raspberry Mousse Hat" + Type: 5 + Loc: 1024 + View: 1257 +}, +{ + Id: 20118 + AegisName: "Costume_Cake_Hat" + Name: "Costume Cake Hat" + Type: 5 + Loc: 1024 + View: 109 +}, +{ + Id: 20119 + AegisName: "Costume_Beanie" + Name: "Costume Beanie" + Type: 5 + Loc: 1024 + View: 160 +}, +{ + Id: 20120 + AegisName: "Costume_Antenna" + Name: "Costume Antenna" + Type: 5 + Loc: 1024 + View: 97 +}, +{ + Id: 20121 + AegisName: "Costume_Water_Lily_Hat" + Name: "Costume Water Lily Hat" + Type: 5 + Loc: 1024 + View: 324 +}, +{ + Id: 20122 + AegisName: "Costume_Happy_Summer_Ribbon" + Name: "Costume Happy Summer Ribbon" + Type: 5 + Loc: 1024 + View: 1260 +}, +{ + Id: 20123 + AegisName: "Costume_Eagle_Eyes" + Name: "Costume Eagle Eyes" + Type: 5 + Loc: 2048 + View: 63 +}, +{ + Id: 20124 + AegisName: "Costume_Masquerade" + Name: "Costume Masquerade" + Type: 5 + Loc: 2048 + View: 78 +}, +{ + Id: 20125 + AegisName: "Costume_Mini_Glasses" + Name: "Costume Mini Glasses" + Type: 5 + Loc: 2048 + View: 47 +}, +{ + Id: 20126 + AegisName: "Costume_Odium_Thanatos_Mask" + Name: "Costume Odium Thanatos Mask" + Type: 5 + Loc: 6144 + View: 667 +}, +{ + Id: 20127 + AegisName: "Costume_Abysmal_Knight_Helm" + Name: "Costume Abysmal Knight Helm" + Type: 5 + Loc: 1024 + View: 371 +}, +{ + Id: 20128 + AegisName: "Costume_Remover_Hat" + Name: "Costume Remover Hat" + Type: 5 + Loc: 1024 + View: 655 +}, +{ + Id: 20129 + AegisName: "Costume_Poporing_Cap" + Name: "Costume Poporing Cap" + Type: 5 + Loc: 1024 + View: 361 +}, +{ + Id: 20130 + AegisName: "Costume_Whisper_Tall_Hat" + Name: "Costume Whisper Tall Hat" + Type: 5 + Loc: 1024 + View: 1265 +}, +{ + Id: 20131 + AegisName: "Costume_Clock_Tower_Manager_Incom" + Name: "Costume Clock Tower Manager Incom" + Type: 5 + Loc: 2048 + View: 1266 +}, +{ + Id: 20132 + AegisName: "Costume_Subject_Aura" + Name: "Costume Subject Aura" + Type: 5 + Loc: 4096 + View: 1267 +}, +{ + Id: 20133 + AegisName: "Costume_Poring_Mascot" + Name: "Costume Poring Mascot" + Type: 5 + Loc: 1024 + View: 1268 +}, +{ + Id: 20134 + AegisName: "Costume_White_Helm_Of_Abyss" + Name: "Costume White Helm Of Abyss" + Type: 5 + Loc: 1024 + View: 1269 +}, +{ + Id: 20135 + AegisName: "Costume_12th_Anniversary_Crown" + Name: "Costume 12th Anniversary Crown" + Type: 5 + Loc: 1024 + View: 1117 +}, +{ + Id: 20136 + AegisName: "Costume_12th_Anniversary_Fairy_Ears" + Name: "Costume 12th Anniversary Fairy Ears" + Type: 5 + Loc: 2048 + View: 875 +}, +{ + Id: 20139 + AegisName: "Costume_Mini_Horse_Hairpin1" + Name: "Costume Mini Horse Hairpin1" + Type: 5 + Loc: 1024 + View: 1271 +}, +{ + Id: 20140 + AegisName: "Costume_Mini_Horse_Hairpin2" + Name: "Costume Mini Horse Hairpin2" + Type: 5 + Loc: 1024 + View: 1272 +}, +{ + Id: 20145 + AegisName: "Costume_Robo_Eye" + Name: "Costume Robo Eye" + Type: 5 + Loc: 2048 + View: 345 +}, +{ + Id: 20146 + AegisName: "Costume_Angel_Of_Ghost" + Name: "Costume Angel Of Ghost" + Type: 5 + Loc: 2048 + View: 394 +}, +{ + Id: 20147 + AegisName: "Costume_Pigeon_On_Shoulder" + Name: "Costume Pigeon On Shoulder" + Type: 5 + Loc: 2048 + View: 1034 +}, +{ + Id: 20152 + AegisName: "Costume_Straw_Rice_Bag" + Name: "Costume Straw Rice Bag" + Type: 5 + Loc: 7168 + View: 1273 +}, +{ + Id: 20153 + AegisName: "Costume_Monochrome_Cap" + Name: "Costume Monochrome Cap" + Type: 5 + Loc: 1024 + View: 1274 +}, +{ + Id: 20154 + AegisName: "Costume_Falling_Maple_leafs" + Name: "Costume Falling Maple leafs" + Type: 5 + Loc: 4096 + View: 1275 +}, +{ + Id: 20155 + AegisName: "Costume_Lady_Feather_Hat" + Name: "Costume Lady Feather Hat" + Type: 5 + Loc: 1024 + View: 1276 +}, +{ + Id: 20156 + AegisName: "Costume_Fan_in_Mouth" + Name: "Costume Fan in Mouth" + Type: 5 + Loc: 1024 + View: 857 +}, +{ + Id: 20157 + AegisName: "Costume_Blue_Fish" + Name: "Costume Blue Fish" + Type: 5 + Loc: 1024 + View: 149 +}, +{ + Id: 20158 + AegisName: "Costume_Circlet" + Name: "Costume Circlet" + Type: 5 + Loc: 1024 + View: 18 +}, +{ + Id: 20159 + AegisName: "Costume_Blue_Hairband" + Name: "Costume Blue Hairband" + Type: 5 + Loc: 1024 + View: 136 +}, +{ + Id: 20160 + AegisName: "Costume_Magnolia_Hat_J" + Name: "Costume Magnolia Hat_J" + Type: 5 + Loc: 1024 + View: 373 +}, +{ + Id: 20161 + AegisName: "Costume_Army_Cap" + Name: "Costume Army Cap" + Type: 5 + Loc: 1024 + View: 48 +}, +{ + Id: 20162 + AegisName: "Costume_Lamb_Hat1" + Name: "Costume Lamb Hat1" + Type: 5 + Loc: 1024 + View: 1277 +}, +{ + Id: 20163 + AegisName: "Costume_Lamb_Hat2" + Name: "Costume Lamb Hat2" + Type: 5 + Loc: 1024 + View: 1278 +}, +{ + Id: 20164 + AegisName: "Costume_Duneyrr_Hat" + Name: "Costume Duneyrr Hat" + Type: 5 + Loc: 1024 + View: 639 +}, +{ + Id: 20165 + AegisName: "Costume_Tendrilion_Hat" + Name: "Costume Tendrilion Hat" + Type: 5 + Loc: 1024 + View: 658 +}, +{ + Id: 20166 + AegisName: "Costume_Hockey_Mask" + Name: "Costume Hockey Mask" + Type: 5 + Loc: 6144 + View: 336 +}, +{ + Id: 20167 + AegisName: "Costume_Deviruchi_Headphone" + Name: "Costume Deviruchi Headphone" + Type: 5 + Loc: 1024 + View: 805 +}, +{ + Id: 20168 + AegisName: "Costume_Skull_Hood" + Name: "Costume Skull Hood" + Type: 5 + Loc: 3072 + View: 598 +}, +{ + Id: 20169 + AegisName: "Costume_Long_Tongue" + Name: "Costume Long Tongue" + Type: 5 + Loc: 4096 + View: 773 +}, +{ + Id: 20170 + AegisName: "Costume_Brown_Deviruchi_Cap" + Name: "Costume Brown Deviruchi Cap" + Type: 5 + Loc: 1024 + View: 273 +}, +{ + Id: 20171 + AegisName: "Costume_Sepia_Cap" + Name: "Costume Sepia Cap" + Type: 5 + Loc: 1024 + View: 1280 +}, +{ + Id: 20172 + AegisName: "Costume_Pumpkin_Hat" + Name: "Costume Pumpkin Hat" + Type: 5 + Loc: 1024 + View: 1281 +}, +{ + Id: 20173 + AegisName: "Costume_Lude_Hood" + Name: "Costume Lude Hood" + Type: 5 + Loc: 1024 + View: 1282 +}, +{ + Id: 20174 + AegisName: "Costume_Orange_Halloween_Hat" + Name: "Costume Orange Halloween Hat" + Type: 5 + Loc: 1024 + View: 1283 +}, +{ + Id: 20175 + AegisName: "Costume_Diabolic_Headphone" + Name: "Costume Diabolic Headphone" + Type: 5 + Loc: 1024 + View: 1284 +}, +{ + Id: 20176 + AegisName: "Costume_Happy_Pierrot_Mask" + Name: "Costume Happy Pierrot Mask" + Type: 5 + Loc: 6144 + View: 1288 +}, +{ + Id: 20177 + AegisName: "Costume_Drooping_Dorasuke" + Name: "Costume Drooping Dorasuke" + Type: 5 + Loc: 1024 + View: 1290 +}, +{ + Id: 20178 + AegisName: "Costume_Puppy_Love" + Name: "Costume Puppy Love" + Type: 5 + Loc: 1024 + View: 94 +}, +{ + Id: 20179 + AegisName: "Costume_Monkey_Fur_Hat" + Name: "Costume Monkey Fur Hat" + Type: 5 + Loc: 1024 + View: 858 +}, +{ + Id: 20180 + AegisName: "Costume_Western_Grace" + Name: "Costume Western Grace" + Type: 5 + Loc: 1024 + View: 32 +}, +{ + Id: 20181 + AegisName: "Costume_Mystic_Rose" + Name: "Costume Mystic Rose" + Type: 5 + Loc: 1024 + View: 198 +}, +{ + Id: 20182 + AegisName: "Costume_Rainbow_Eggshell" + Name: "Costume Rainbow Eggshell" + Type: 5 + Loc: 1024 + View: 124 }, { Id: 20183 @@ -118148,6 +122067,550 @@ item_db: ( View: 1091 }, { + Id: 20184 + AegisName: "Costume_Party_Hat" + Name: "Costume Party Hat" + Type: 5 + Loc: 1024 + View: 144 +}, +{ + Id: 20186 + AegisName: "Costume_Magni's_Cap" + Name: "Costume Magni's Cap" + Type: 5 + Loc: 1024 + View: 250 +}, +{ + Id: 20190 + AegisName: "Costume_Chick_Hat_J" + Name: "Costume Chick Hat J" + Type: 5 + Loc: 1024 + View: 432 +}, +{ + Id: 20191 + AegisName: "Costume_Black_Cat_Ears_Beret" + Name: "Costume Black Cat Ears Beret" + Type: 5 + Loc: 1024 + View: 1071 +}, +{ + Id: 20192 + AegisName: "Costume_Green_Foxtail" + Name: "Costume Green Foxtail" + Type: 5 + Loc: 4096 + View: 1058 +}, +{ + Id: 20193 + AegisName: "Costume_Puppy_Grass" + Name: "Costume Puppy Grass" + Type: 5 + Loc: 4096 + View: 711 +}, +{ + Id: 20194 + AegisName: "Costume_Lion_Mask" + Name: "Costume Lion Mask" + Type: 5 + Loc: 1024 + View: 202 +}, +{ + Id: 20195 + AegisName: "Costume_Scratching_Cat" + Name: "Costume Scratching Cat" + Type: 5 + Loc: 6144 + View: 1292 +}, +{ + Id: 20196 + AegisName: "Costume_Leopard_Ear_Hat" + Name: "Costume Leopard Ear Hat" + Type: 5 + Loc: 1024 + View: 1293 +}, +{ + Id: 20197 + AegisName: "Costume_Amistr_Beret" + Name: "Costume Amistr Beret" + Type: 5 + Loc: 1024 + View: 1294 +}, +{ + Id: 20198 + AegisName: "Costume_Misty_Ears" + Name: "Costume Misty Ears" + Type: 5 + Loc: 1024 + View: 1295 +}, +{ + Id: 20199 + AegisName: "Costume_Evil_Marching_Hat" + Name: "Costume Evil Marching Hat" + Type: 5 + Loc: 1024 + View: 687 +}, +{ + Id: 20200 + AegisName: "Costume_Rabbit_Headdress" + Name: "Costume Rabbit Headdress" + Type: 5 + Loc: 1024 + View: 1095 +}, +{ + Id: 20201 + AegisName: "Costume_Banshee_Master_Kiss" + Name: "Costume Banshee Master Kiss" + Type: 5 + Loc: 4096 + View: 959 +}, +{ + Id: 20202 + AegisName: "Costume_Deviruchi_Balloon" + Name: "Costume Deviruchi Balloon" + Type: 5 + Loc: 4096 + View: 1082 +}, +{ + Id: 20203 + AegisName: "Costume_Bandana" + Name: "Costume Bandana" + Type: 5 + Loc: 1024 + View: 6 +}, +{ + Id: 20204 + AegisName: "Costume_Hunting_Cap" + Name: "Costume Hunting Cap" + Type: 5 + Loc: 1024 + View: 389 +}, +{ + Id: 20205 + AegisName: "Costume_Fancy_Flower" + Name: "Costume Fancy Flower" + Type: 5 + Loc: 1024 + View: 4 +}, +{ + Id: 20206 + AegisName: "Costume_Chicken_Hat1" + Name: "Costume Chicken Hat1" + Type: 5 + Loc: 7168 + View: 1296 +}, +{ + Id: 20207 + AegisName: "Costume_Striped_Hairband" + Name: "Costume Striped Hairband" + Type: 5 + Loc: 1024 + View: 133 +}, +{ + Id: 20208 + AegisName: "Costume_Necktie" + Name: "Costume Necktie" + Type: 5 + Loc: 1024 + View: 443 +}, +{ + Id: 20209 + AegisName: "Costume_Mermaid_Bubbles" + Name: "Costume Mermaid Bubbles" + Type: 5 + Loc: 1024 + View: 1299 +}, +{ + Id: 20210 + AegisName: "Costume_Chicken_Hat2" + Name: "Costume Chicken Hat2" + Type: 5 + Loc: 7168 + View: 1297 +}, +{ + Id: 20211 + AegisName: "Costume_Chicken_Hat3" + Name: "Costume Chicken Hat3" + Type: 5 + Loc: 7168 + View: 1298 +}, +{ + Id: 20212 + AegisName: "Costume_Loki_&_Nidhoggur_dolls" + Name: "Costume Loki & Nidhoggur dolls" + Type: 5 + Loc: 1024 + View: 1304 +}, +{ + Id: 20213 + AegisName: "Costume_Robot_Eyes" + Name: "Costume Robot Eyes" + Type: 5 + Loc: 2048 + View: 345 +}, +{ + Id: 20214 + AegisName: "Costume_Evil_Marcher_Hat_J" + Name: "Costume Evil Marcher Hat J" + Type: 5 + Loc: 1024 + View: 1002 +}, +{ + Id: 20215 + AegisName: "Costume_Black_Devil_Mask" + Name: "Costume Black Devil Mask" + Type: 5 + Loc: 2048 + View: 760 +}, +{ + Id: 20216 + AegisName: "Costume_Rideword_Hat" + Name: "Costume Rideword Hat" + Type: 5 + Loc: 1024 + View: 890 +}, +{ + Id: 20217 + AegisName: "Costume_Arabian_Veil" + Name: "Costume Arabian Veil" + Type: 5 + Loc: 1024 + View: 1300 +}, +{ + Id: 20218 + AegisName: "Costume_Spell_Circuit" + Name: "Costume Spell Circuit" + Type: 5 + Loc: 1024 + View: 1301 +}, +{ + Id: 20219 + AegisName: "Costume_Angel_Marcher_Hat" + Name: "Costume Angel Marcher Hat" + Type: 5 + Loc: 1024 + View: 1302 +}, +{ + Id: 20220 + AegisName: "Costume_Dark_Night_Veil" + Name: "Costume Dark Night Veil" + Type: 5 + Loc: 1024 + View: 1303 +}, +{ + Id: 20221 + AegisName: "Costume_Ifrit_Eyes" + Name: "Costume Ifrit Eyes" + Type: 5 + Loc: 2048 + View: 886 +}, +{ + Id: 20222 + AegisName: "Costume_Blue_Santa_Hat" + Name: "Costume Blue Santa Hat" + Type: 5 + Loc: 1024 + View: 395 +}, +{ + Id: 20223 + AegisName: "Costume_Romantic_Leaf" + Name: "Costume Romantic Leaf" + Type: 5 + Loc: 4096 + View: 57 +}, +{ + Id: 20224 + AegisName: "Costume_Red_Tailed_Ribbon" + Name: "Costume Red Tailed Ribbon" + Type: 5 + Loc: 1024 + View: 167 +}, +{ + Id: 20225 + AegisName: "Costume_Pumpkin_Head" + Name: "Costume Pumpkin Head" + Type: 5 + Loc: 1024 + View: 206 +}, +{ + Id: 20226 + AegisName: "Costume_Red_Comb" + Name: "Costume Red Comb" + Type: 5 + Loc: 1024 + View: 445 +}, +{ + Id: 20227 + AegisName: "Costume_Husky_Hat" + Name: "Costume Husky Hat" + Type: 5 + Loc: 1024 + View: 1016 +}, +{ + Id: 20228 + AegisName: "Costume_Piggie_Bank_J" + Name: "Costume Piggie Bank J" + Type: 5 + Loc: 1024 + View: 603 +}, +{ + Id: 20230 + AegisName: "Costume_Bankruptcy_Mask" + Name: "Costume Bankruptcy Mask" + Type: 5 + Loc: 6144 + View: 936 +}, +{ + Id: 20231 + AegisName: "Costume_Snowman_Hat" + Name: "Costume Snowman Hat" + Type: 5 + Loc: 1024 + View: 616 +}, +{ + Id: 20232 + AegisName: "Costume_Celines_Ribbon" + Name: "Costume Celines Ribbon" + Type: 5 + Loc: 1024 + View: 967 +}, +{ + Id: 20233 + AegisName: "Costume_Golden_Statue_of_Baby_Angel" + Name: "Costume Golden Statue of Baby Angel" + Type: 5 + Loc: 1024 + View: 646 +}, +{ + Id: 20234 + AegisName: "Costume_Baphomet_Hat" + Name: "Costume Baphomet Hat" + Type: 5 + Loc: 1024 + View: 1311 +}, +{ + Id: 20239 + AegisName: "Costume_Large_Ribbon_Muffler" + Name: "Costume Large Ribbon Muffler" + Type: 5 + Loc: 4096 + View: 1312 +}, +{ + Id: 20241 + AegisName: "Costume_Eclipse_Hat" + Name: "Costume Eclipse Hat" + Type: 5 + Loc: 1024 + View: 922 +}, +{ + Id: 20242 + AegisName: "Costume_Snownow_Hat" + Name: "Costume Snownow Hat" + Type: 5 + Loc: 1024 + View: 1313 +}, +{ + Id: 20243 + AegisName: "Costume_Choco_Mint_Bonnet" + Name: "Costume Choco Mint Bonnet" + Type: 5 + Loc: 1024 + View: 1314 +}, +{ + Id: 20244 + AegisName: "Costume_Zealotus_Mask" + Name: "Costume Zealotus Mask" + Type: 5 + Loc: 3072 + View: 200 +}, +{ + Id: 20245 + AegisName: "Costume_Cat_Paw_Hairpin" + Name: "Costume Cat Paw Hairpin" + Type: 5 + Loc: 1024 + View: 447 +}, +{ + Id: 20246 + AegisName: "Costume_Decoration_of_Time" + Name: "Costume Decoration of Time" + Type: 5 + Loc: 2048 + View: 1309 +}, +{ + Id: 20247 + AegisName: "Costume_Black_Hand_of_Fate" + Name: "Costume Black Hand of Fate" + Type: 5 + Loc: 1024 + View: 1310 +}, +{ + Id: 20248 + AegisName: "Costume_Black_Strong_Hair" + Name: "Costume Black Hand of Fate" + Type: 5 + Loc: 1024 + View: 1315 +}, +{ + Id: 20249 + AegisName: "Costume_Red_Strong_Hair" + Name: "Costume Red Hand of Fate" + Type: 5 + Loc: 1024 + View: 1316 +}, +{ + Id: 20250 + AegisName: "Costume_White_Strong_Hair" + Name: "Costume White Hand of Fate" + Type: 5 + Loc: 1024 + View: 1317 +}, +{ + Id: 20251 + AegisName: "Costume_Rose_Cascade" + Name: "Costume Rose Cascade" + Type: 5 + Loc: 1024 + View: 920 +}, +{ + Id: 20252 + AegisName: "Costume_Mage_Decoration" + Name: "Costume Mage Decoration" + Type: 5 + Loc: 1024 + View: 1150 +}, +{ + Id: 20253 + AegisName: "Costume_Drooping_Alicel" + Name: "Costume Drooping Alicel" + Type: 5 + Loc: 1024 + View: 784 +}, +{ + Id: 20254 + AegisName: "Costume_Yellow_Ribbonn" + Name: "Costume Yellow Ribbonn" + Type: 5 + Loc: 1024 + View: 243 +}, +{ + Id: 20255 + AegisName: "Costume_Love_Cheeks" + Name: "Costume Love Cheeks" + Type: 5 + Loc: 2048 + View: 1318 +}, +{ + Id: 20256 + AegisName: "Costume_Honey_Pancake" + Name: "Costume Honey Pancake" + Type: 5 + Loc: 1024 + View: 1319 +}, +{ + Id: 20257 + AegisName: "Costume_Black_Rabbit_Bonnet" + Name: "Costume Black Rabbit Bonnet" + Type: 5 + Loc: 1024 + View: 1320 +}, +{ + Id: 20258 + AegisName: "Costume_Blue_Headdress" + Name: "Costume Blue Headdress" + Type: 5 + Loc: 1024 + View: 1321 +}, +{ + Id: 20259 + AegisName: "Costume_Pink_Clover" + Name: "Costume Pink Clover" + Type: 5 + Loc: 4096 + View: 1322 +}, +{ + Id: 20271 + AegisName: "Costume_Sunflower" + Name: "Costume Sunflower" + Type: 5 + Loc: 1024 + View: 37 +}, +{ + Id: 20272 + AegisName: "Costume_Unicorn_Horn" + Name: "Costume Unicorn Horn" + Type: 5 + Loc: 1024 + View: 42 +}, +{ Id: 20500 AegisName: "T_Archangel_Wing" Name: "T Archangel's Wings" @@ -118188,6 +122651,29 @@ item_db: ( "> }, { + Id: 20706 + AegisName: "Amistr_Bag" + Name: "Amistr Bag" + Type: 5 + Weight: 500 + Def: 18 + Loc: 4 + View: 4 + Script: <" + bonus bAllStats,1; + bonus2 bSubEle,Ele_Neutral,5; + bonus2 bSubEle,Ele_Water,5; + bonus2 bSubEle,Ele_Earth,5; + bonus2 bSubEle,Ele_Fire,5; + bonus2 bSubEle,Ele_Wind,5; + bonus2 bSubEle,Ele_Poison,5; + bonus2 bSubEle,Ele_Holy,5; + bonus2 bSubEle,Ele_Dark,5; + bonus2 bSubEle,Ele_Ghost,5; + bonus2 bSubEle,Ele_Undead,5; + "> +}, +{ Id: 20707 AegisName: "Kirin_Wing" Name: "Kirin Wing" @@ -118223,15 +122709,146 @@ item_db: ( }, { Id: 20724 - AegisName: "Love_Dad_Wings_2012" - Name: "Love Dad Wings 2012" + AegisName: "Love_Dad_Wing_2012" + Name: "Love Dad Wing 2012" Type: 5 - Buy: 0 Weight: 100 Def: 15 Slots: 1 Loc: 4 View: 5 + Script: <" + if(readparam(bStr)>=90) { + bonus bAllStats,1; + bonus bMaxHPrate,1; + bonus bMaxSPrate,1; + bonus bStr,getrefine(); + } + if(readparam(bAgi)>=90) { + bonus bAllStats,1; + bonus bMaxHPrate,1; + bonus bMaxSPrate,1; + bonus bAgi,getrefine(); + } + if(readparam(bVit)>=90) { + bonus bAllStats,1; + bonus bMaxHPrate,1; + bonus bMaxSPrate,1; + bonus bVit,getrefine(); + } + if(readparam(bInt)>=90) { + bonus bAllStats,1; + bonus bMaxHPrate,1; + bonus bMaxSPrate,1; + bonus bInt,getrefine(); + } + if(readparam(bDex)>=90) { + bonus bAllStats,1; + bonus bMaxHPrate,1; + bonus bMaxSPrate,1; + bonus bDex,getrefine(); + } + if(readparam(bLuk)>=90) { + bonus bAllStats,1; + bonus bMaxHPrate,1; + bonus bMaxSPrate,1; + bonus bLuk,getrefine(); + } + "> +}, +{ + Id: 20727 + AegisName: "Costume_Brilliant_Golden_Wings" + Name: "Brilliant Golden Wings" + Type: 5 + Loc: 8192 + View: 5 +}, +{ + Id: 20737 + AegisName: "Costume_Kirin_Wings" + Name: "Costume Kirin Wings" + Type: 5 + Loc: 8192 + View: 6 +}, +{ + Id: 20746 + AegisName: "Costume_Rudra_Wings" + Name: "Costume Rudra Wings" + Type: 5 + Loc: 8192 + View: 8 +}, +{ + Id: 20757 + AegisName: "Heavenly_Wings1" + Name: "Heavenly Wings1" + Type: 5 + Def: 10 + Slots: 1 + Loc: 4 + View: 9 + Script: <" + bonus bAllStats,3; + skill AL_INCAGI,3; + "> +}, +{ + Id: 20758 + AegisName: "Heavenly_Wings2" + Name: "Heavenly Wings2" + Type: 5 + Def: 10 + Slots: 1 + Loc: 4 + View: 9 + Script: <" + bonus bAllStats,3; + skill AL_INCAGI,3; + "> +}, +{ + Id: 20761 + AegisName: "Costume_Wing_of_Happiness" + Name: "Costume Wing of Happiness" + Type: 5 + Loc: 8192 + View: 9 +}, +{ + Id: 20763 + AegisName: "Costume_Amistr_Bag" + Name: "Costume Amistr Bag" + Type: 5 + Loc: 8192 + View: 4 +}, +{ + Id: 20764 + AegisName: "Costume_Fallen_Angel_Wing" + Name: "Costume Fallen Angel Wing" + Type: 5 + Loc: 8192 + View: 3 +}, +{ + Id: 20765 + AegisName: "Costume_Archangel_Wing" + Name: "Costume Archangel Wing" + Type: 5 + Loc: 8192 + View: 1 +}, +{ + Id: 20768 + AegisName: "Arch_Angel_Wing" + Name: "Arch Angel Wing" + Type: 5 + Weight: 200 + Def: 18 + Loc: 4 + View: 10 }, { Id: 21000 @@ -118347,6 +122964,22 @@ item_db: ( View: 3 }, { + Id: 22067 + AegisName: "Witch_Shoes" + Name: "Witch Shoes" + Type: 5 + Buy: 3500 + Weight: 400 + Def: 10 + Job: 0xFFFFFFFE + Loc: 64 + Script: <" + skill ALL_CATCRY, 1; + bonus bUnbreakableShoes,0; + autobonus3 "{ }",1000,7000,ALL_CATCRY,"{ montransform 1505,420000; }"; + "> +}, +{ Id: 22514 AegisName: "Candy_Holder" Name: "Candy Holder" @@ -118441,7 +123074,6 @@ item_db: ( Script: <" TmpRouletteBronze += 1; "> }, { - Id: 22838 AegisName: "Something_Candy_Holder" Name: "Something Candy Holder" diff --git a/db/re/item_group.conf b/db/re/item_group.conf index 3a25d92b8..69cedfdd1 100644 --- a/db/re/item_group.conf +++ b/db/re/item_group.conf @@ -3192,6 +3192,7 @@ Old_Gift_Box: ( ("Fallen_Leaves_",45), ) Magic_Card_Album: ( + "Ghostring_Card", "Angeling_Card", "Gryphon_Card", "Dark_Illusion_Card", diff --git a/db/re/skill_cast_db.txt b/db/re/skill_cast_db.txt index d57982486..a9b2c6140 100644 --- a/db/re/skill_cast_db.txt +++ b/db/re/skill_cast_db.txt @@ -964,6 +964,8 @@ //========================================== //===== New Monster Skills ================= +//-- NPC_EARTHQUAKE +653,0,0,0,900,0,0,-1 //-- NPC_ICEBREATH 655,0,0,0,0,12000,0,-1 //-- NPC_ACIDBREATH diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index e4712aad4..100db6997 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -590,7 +590,7 @@ 544,-5,8,1,0,0x40,0,10,1,no,0,0,0,weapon,0, NJ_ISSEN,Final Strike // Additional NPC Skills (Episode 11.3) -653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x2,0,magic,0, NPC_EARTHQUAKE,Earthquake +653,0,8,4,0,0x26,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x2002,0,weapon,0, NPC_EARTHQUAKE,Earthquake 654,9,6,1,3,0,5,10,1,no,0,0x2,14,weapon,0, NPC_FIREBREATH,Fire Breath 655,9,6,1,1,0,5,10,1,no,0,0x2,14,weapon,0, NPC_ICEBREATH,Ice Breath 656,9,6,1,4,0,5,10,1,no,0,0x2,14,weapon,0, NPC_THUNDERBREATH,Thunder Breath @@ -738,11 +738,11 @@ 2038,11,8,1,6,0x2,3,5,-3,yes,0,0,0,magic,0, AB_JUDEX,Judex 2039,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0, AB_ANCILLA,Ancilla 2040,11,8,1,6,0,0,10,-10,yes,0,0,0,magic,0, AB_ADORAMUS,Adoramus -2041,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CLEMENTIA,Crementia -2042,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CANTO,Canto Candidus +2041,0,6,4,0,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CLEMENTIA,Crementia +2042,0,6,4,0,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CANTO,Canto Candidus 2043,0,6,4,6,0x3,3:7:15,3,1,yes,0,0,0,magic,0, AB_CHEAL,Coluceo Heal 2044,11,6,2,6,0x1,0,5,1,yes,0,0,1,magic,0, AB_EPICLESIS,Epiclesis -2045,0,6,4,6,0x3,15,10,1,yes,0,0,0,magic,0, AB_PRAEFATIO,Praefatio +2045,0,6,4,0,0x3,15,10,1,yes,0,0,0,magic,0, AB_PRAEFATIO,Praefatio 2046,0,6,4,6,0x3,15,10,1,yes,0,0,0,magic,0, AB_ORATIO,Oratio 2047,0,6,4,6,0x3,15,4,1,yes,0,0,0,magic,0, AB_LAUDAAGNUS,Lauda Agnus 2048,0,6,4,6,0x3,15,4,1,yes,0,0,0,magic,0, AB_LAUDARAMUS,Lauda Ramus diff --git a/db/re/skill_unit_db.txt b/db/re/skill_unit_db.txt index c75683333..ffc451a0e 100644 --- a/db/re/skill_unit_db.txt +++ b/db/re/skill_unit_db.txt @@ -97,6 +97,7 @@ 535,0xbd, , -1, 0, 20,enemy, 0x010 //NJ_KAENSIN 538,0xbb, , 1:1:1:2:2:2:3:3:3:4,0,-1,all,0x010 //NJ_SUITON 541,0x86, , 0, 3:3:4:4:5, 100,enemy, 0x018 //NJ_RAIGEKISAI +653,0xc6, , 0, 5:7:9:11:13:5:7:9:11:13, 300,enemy, 0x010 //NPC_EARTHQUAKE 670,0xc7, , 1, 4:7:10:13:16:19:22:25:28:31,1000,all,0x008 //NPC_EVILLAND //706,0xfd, , 0, 0,1000,all, 0x000 //NPC_VENOMFOG diff --git a/db/translations.conf b/db/translations.conf new file mode 100644 index 000000000..3b16a8c23 --- /dev/null +++ b/db/translations.conf @@ -0,0 +1,20 @@ +//==================================================== +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//= +//= http://hercules.ws/board/ +//================= More Information ================= +//= http://hercules.ws/board/topic/8687-hercules-ultimate-localization-design/ +//==================================================== +// Translations generated with —-generate-translations +// should be pointed to here +//==================================================== + +translations: ( + //"path/to/my/Language.po", + //"db/Spanish.po", //(Example) +)
\ No newline at end of file diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 3784667cb..54d62b045 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -5286,7 +5286,9 @@ This command will destroy whatever is currently equipped in the invoking character's specified equipment slot. For a full list of possible equipment slots see 'getequipid'. -This command will return 1 if an item was deleted and 0 otherwise. +It is always a good idea to check if the player actually has the item you want +before you use this command. If you try to delete in a position that the player +has no gear, script will be terminated with an error. --------------------------------------- //===================================== diff --git a/npc/merchants/shops.txt b/npc/merchants/shops.txt index 81125c6fd..a45ec6adb 100644 --- a/npc/merchants/shops.txt +++ b/npc/merchants/shops.txt @@ -282,6 +282,14 @@ OnInit: sellitem Ice_Stone; sellitem Wind_Stone; sellitem Shadow_Orb; + sellitem Charm_Fire; + sellitem Charm_Ice; + sellitem Charm_Wind; + sellitem Charm_Earth; + if (checkre(0)){ + sellitem Fox_Armguard; + sellitem Special_Ninja_Suit; + } } diff --git a/npc/merchants/socket_enchant2.txt b/npc/merchants/socket_enchant2.txt index 08fe62ed9..afd19eba6 100644 --- a/npc/merchants/socket_enchant2.txt +++ b/npc/merchants/socket_enchant2.txt @@ -169,10 +169,11 @@ mes "A class? You seem to want little too much. But, no problem."; mes "So, what kind of armor do you have?"; next; - switch(select("Pirate Bandana:Black Leather Boots")) + switch(select("Pirate Bandana:Black Leather Boots"+(checkre(0)?":Special Ninja Suit":""))) { case 1: callfunc "Func_Socket2",2287,5350,50,61,500,985,1; // 50,61 - it's not a typo case 2: callfunc "Func_Socket2",2425,2434,40,51,500,985,1; + case 3: callfunc "Func_Socket2",15053,15056,50,61,500,985,1; } case 4: mes "[Leablem]"; diff --git a/npc/quests/lvl4_weapon_quest.txt b/npc/quests/lvl4_weapon_quest.txt index 5f2514068..a2839d0cc 100644 --- a/npc/quests/lvl4_weapon_quest.txt +++ b/npc/quests/lvl4_weapon_quest.txt @@ -3273,13 +3273,13 @@ niflheim,331,72,3 script Waltboughst#lv4 4_M_NFDEADMAN,{ mes "[Waltboughst]"; mes "Okay..."; mes "I wrote down..."; - if (.@npchand == 1) { + if (.@npchand1 == 1) { mes "Scissors"; } - else if (.@npchand == 2) { + else if (.@npchand1 == 2) { mes "Rock"; } - else if (.@npchand == 3) { + else if (.@npchand1 == 3) { mes "Paper"; } if (.@npchand2 == 1) { diff --git a/npc/re/merchants/ninja_craftsman.txt b/npc/re/merchants/ninja_craftsman.txt new file mode 100644 index 000000000..b9025f3aa --- /dev/null +++ b/npc/re/merchants/ninja_craftsman.txt @@ -0,0 +1,351 @@ +//===== Hercules Script ====================================== +//= Ninja Weapon and Armor +//===== By: ================================================== +//= Dastgir +//===== Current Version: ===================================== +//= 1.0 +//===== Description: ========================================= +//= Ninja Armor and Weapon Craftsman +//===== Additional Comments: ================================= +//= 1.0 Official Conversion. [Dastgir] +//============================================================ +que_ng,21,72,6 script Master Craftsman Gyo#arm 4_M_RASWORD,{ + mes "[Gyo]"; + mes "How would you define victory?"; + mes "To fell the enemy..."; + mes "However, the most important thing is..."; + mes "Never to fall yourself!"; + next; + mes "[Gyo]"; + mes "For that, you must better protect yourself."; + mes "You cannot protect 'others' while you hinder your 'own' protection."; + next; + if (select("Combine armor.:End conversation.") == 2) { + mes "[Gyo]"; + mes "Prudence is also an important virtue in battle."; + close; + } + switch (select("Wolf Armguard:Crescent Armguard:Ninja Scale Armor:Shadow King's Armor:Quit.")) { + case 1: + mes "[Gyo]"; + mes "Wolf Armguard... One beastly piece of armor."; + next; + callsub L_Menu,Wolf_Armguard; + close; + case 2: + mes "[Gyo]"; + mes "Crescent Armguard... A thing of beauty and strength... With none the lesser."; + next; + callsub L_Menu,Crescent_Armguard; + close; + case 3: + mes "[Gyo]"; + mes "Ninja Scale Armor... It's said that a legendary Ninja once wore it."; + next; + callsub L_Menu,Ninja_Scale_Armor; + close; + case 4: + mes "[Gyo]"; + mes "Shadow King's Armor... It was made to protect others."; + next; + callsub L_Menu,Tenebris_Latitantes; + close; + case 5: + mes "[Gyo]"; + mes "Looks like you need more time to decide."; + close; + } + +L_Menu: + .@item_make = getarg(0); + while(1){ + switch(select("Check Ingredients.:Check Stats.:Combine.:Quit.")){ + case 1: + mes "[Gyo]"; + mes "To make a ^ff0000"+getitemname(.@item_make)+", "+callsub(L_Ingredients,.@item_make)+".^000000"; + if (.@item_make==Wolf_Armguard) + mes "Can you feel it? The throbbing of the wolf blood¡¦"; + else if (.@item_make==Crescent_Armguard) + mes "A crescent as beautiful and clear as a crystal will be engraved on it."; + else if (.@item_make==Ninja_Scale_Armor) + mes "You can feel its legendary powers."; + else if (.@item_make==Tenebris_Latitantes) + mes "With the darkness it erases existence itself..."; + break; + case 2: + mes "["+ getitemname(getarg(0)) +"]"; + if (.@item_make == Wolf_Armguard){ + mes "Chance to have 5 sec. of ATK +100, FLEE -50 upon melee attack."; + mes "Shield Type, Defense 45, Slot 1"; + mes "Required Level 100, Ninja Type Only"; + } + else if (.@item_make == Crescent_Armguard){ + mes "Decreases post skill delay for 2% for every enhancement."; + mes "Shield Type, Defense 70, Slot 1"; + mes "Required Level 100, Ninja Type Only"; + } + else if (.@item_make == Ninja_Scale_Armor){ + mes "MHP+15%, MSP-30%."; + mes "Armor Type, Defense 90, Slot 1"; + mes "Required Level 100, Ninja Type Only"; + } + else if (.@item_make == Tenebris_Latitantes){ + mes "Chance to activate Lvl. 1 Illusion - Shadow when attacked by melee attacks."; + mes "Armor Type, Defense 60, Slot 1"; + mes "Required Level 100, Ninja Type Only"; + } + break; + case 3: + mes "[Gyo]"; + mes "Make sure that ^ff0000you have the correct ingredients and equipment at hand.^000000"; + mes "No use crying over it later."; + next; + if (select("Combine.:Quit.") == 2) { + mes "[Gyo]"; + mes "Looks like you need more time to decide."; + close; + } + if (checkweight(1201,1) == 0 || (MaxWeight - Weight) < 2000) { + mes "- Hold on!! -"; + mes "- You cannot receive items -"; + mes "- because you carry too much. -"; + mes "- Please try again -"; + mes "- after lightening your burden. -"; + close; + } + mes "[Gyo]"; + switch(.@item_make){ + case 2172: //Wolf_Armguard + if (countitem(Fox_Armguard) && countitem(Wolf_Blood) > 9) { + delitem Fox_Armguard,1; //Fox_Armguard + delitem Wolf_Blood,10; //Wolf_Blood + getitem Wolf_Armguard,1; //Wolf_Armguard + mes "Can you feel the wolfish instinct?"; + mes "Wild, but beautiful¡¦"; + } + else { + mes "You don't have enough ingredients."; + mes "Look again......"; + } + break; + case 2173: //Crescent_Armguard + if (countitem(Fox_Armguard) && countitem(Fragment_Of_Crystal) > 99) { + delitem Fox_Armguard,1; //Fox_Armguard + delitem Fragment_Of_Crystal,100; //Fragment_Of_Crystal + getitem Crescent_Armguard,1; //Crescent_Armguard + mes "B-e-a-utiful......"; + mes "Feel the overwhelming magic within."; + } + else { + mes "You don't have enough ingredients."; + mes "Look again......"; + } + break; + case 15054: //Ninja_Scale_Armor + if (countitem(Scale_Of_Red_Dragon) > 29 && countitem(Ice_Scale) > 29 && countitem(Dark_Red_Scale) > 29) { + delitem Scale_Of_Red_Dragon,30; //Scale_Of_Red_Dragon + delitem Ice_Scale,30; //Ice_Scale + delitem Dark_Red_Scale,30; //Dark_Red_Scale + getitem Ninja_Scale_Armor,1; //Ninja_Scale_Armor + mes "This armor holds a legend..."; + mes "Though I don't believe in them..."; + } + else { + mes "You don't have enough ingredients."; + mes "Look again......"; + } + break; + case 15055: //Tenebris_Latitantes + if (countitem(Special_Ninja_Suit_) && countitem(Piece_Of_Darkness) > 9) { + delitem Special_Ninja_Suit_,1; //Special_Ninja_Suit_ + delitem Piece_Of_Darkness,10; //Piece_Of_Darkness + getitem Tenebris_Latitantes,1; //Tenebris_Latitantes + mes "How about it?"; + mes "It looks like two sets of them, doesn't it?"; + } + else { + mes "You don't have enough ingredients."; + mes "Look again......"; + } + break; + } + close; + case 4: + mes "[Gyo]"; + mes "Looks like you need more time to decide."; + close; + } + next; + } + +L_Ingredients: + switch(getarg(0)){ + case 2172: //Wolf_Armguard + return "you need 1 Fox Armguard and 10 Blood of Wolf"; + case 2173: //Crescent_Armguard + return "you need 1 Fox Armguard and 100 Crystal Fragments"; + case 15054: //Ninja_Scale_Armor + return "you need 30 Fire Dragon Scales, 30 Ice Scales and 30 Darkred Scale Pieces"; + case 15055: //Tenebris_Latitantes + return "you'll need a Special Ninja Suit with a slot and 10 Dark Pieces"; + } + end; + +} + +que_ng,21,72,6 script Master Craftsman Ki#weap 4_M_RASWORD,{ + mes "[Ki]"; + mes "To attack is the best means of defense."; + mes "A powerful weapon will make you truly complete."; + next; + mes "[Ki]"; + mes "Of course, it would be better to have something special at hand."; + next; + if (select("Combine weapon.:End conversation.") == 2) { + mes "[Ki]"; + mes "Being too careful could sometimes be lethal."; + close; + } + switch (select("Raksasa Dagger:Mikatsuki:Petal Shuriken:Quit.")) { + case 1: + mes "[Ki]"; + mes "Raksasa Dagger can only be used after plenty of training."; + next; + callsub L_Menu,Raksasa_Dagger; + close; + case 2: + mes "[Ki]"; + mes "Mikatsuki... A beautiful curve like the crescent moon..."; + mes "There aren't many who can make them."; + next; + callsub L_Menu,Mikatsuki; + close; + case 3: + mes "[Ki]"; + mes "Petal Shuriken... Have you every seen petals swirl?"; + next; + callsub L_Menu,Huuma_Swirling_Petal; + close; + case 4: + mes "[Ki]"; + mes "Think carefully~~"; + close; + } + +L_Menu: + .@item_make = getarg(0); + while(1){ + switch(select("Check Ingredients.:Check Stats.:Combine.:Quit.")){ + case 1: + mes "[Ki]"; + mes "To make a ^ff0000"+getitemname(.@item_make)+", "+callsub(L_Ingredients,.@item_make)+".^000000"; + if (.@item_make==Raksasa_Dagger) + mes "The garnet gives the Raksasa Dagger its unique color."; + else if (.@item_make==Mikatsuki) + mes "The opal is what gives off the translucent glow."; + else if (.@item_make==Huuma_Swirling_Petal) + mes "It may seem like too many shurikens are needed... But it is essential for the beautiful fluttering effect."; + break; + case 2: + mes "["+ getitemname(getarg(0)) +"]"; + if (.@item_make == Raksasa_Dagger){ + mes "INT+3 MATK+100."; + mes "Dagger Type, ATK 120, Slot 1"; + mes "Required Level 110, Ninja Type Only"; + } + else if (.@item_make == Mikatsuki){ + mes "MATK + 120, Fluctuated Casting and SP use decreased by 5% upon skill use."; + mes "Dagger Type, ATK 50, Weapon Lvl. 4"; + mes "Slot 1"; + mes "Required Level 100, Ninja Type Only"; + } + else if (.@item_make == Huuma_Swirling_Petal){ + mes "MATK + 50, Petal Shuriken skill damage increased by 20%."; + mes "Shuriken Type, ATK 150"; + mes "Weapon Lvl. 3, Slot 2"; + mes "Required Level 110, Ninja Type Only"; + } + break; + case 3: + mes "[Ki]"; + mes "Make sure that ^ff0000you have the correct ingredients and equipment at hand.^000000"; + mes "No use crying over it later."; + next; + if (select("Combine.:Quit.") == 2) { + mes "[Ki]"; + mes "Think carefully~~"; + close; + } + if (checkweight(1201,1) == 0 || (MaxWeight - Weight) < 2000) { + mes "- Hold on!! -"; + mes "- You cannot receive items -"; + mes "- because you carry too much. -"; + mes "- Please try again -"; + mes "- after lightening your burden. -"; + close; + } + mes "[Ki]"; + switch(.@item_make){ + case 13076: //Raksasa_Dagger + if (countitem(Murasame_) && countitem(Dark_Red_Jewel)) { + delitem Murasame_,1; //Murasame_ + delitem Dark_Red_Jewel,1; //Dark_Red_Jewel + getitem Raksasa_Dagger,1; //Raksasa_Dagger + mes "Oh yes..."; + mes "It is a beautiful glow..."; + } + else { + mes "Hmm... You do not have enough to make a Raksasa Dagger."; + mes "Why don't you check again?"; + mes "Some just can't give up what they hold."; + } + break; + case 13078: //Mikatsuki + if (countitem(Hakujin_) && countitem(White_Jewel)) { + delitem Hakujin_,1; //Hakujin_ + delitem White_Jewel,1; //White_Jewel + getitem Mikatsuki,1; //Mikatsuki + mes "Splendid¡¦"; + mes "It is always mesmerizing to look upon such a beautiful weapon¡¦"; + } + else { + mes "Hmm... You do not have enough to make a Mikatsuki."; + mes "Why don't you check again?"; + mes "Some just can't give up what they hold."; + } + break; + case 13313: //Huuma_Swirling_Petal + if (countitem(Huuma_Calm_Mind) && countitem(Broken_Shuriken) > 99) { + delitem Huuma_Calm_Mind,1; //Huuma_Calm_Mind + delitem Broken_Shuriken,100; //Broken_Shuriken + getitem Huuma_Swirling_Petal,1; //Huuma_Swirling_Petal + mes "Swirling Petal!!"; + } + else { + mes "Hmm... You do not have enough to make Petal Shurikens."; + mes "Why don't you check again?"; + mes "Some just can't give up what they hold."; + } + break; + } + close; + case 4: + mes "[Ki]"; + mes "Looks like you need more time to decide."; + close; + } + next; + } + +L_Ingredients: + switch(getarg(0)){ + case 13076: //Raksasa_Dagger + return "you need 1 Murasame with 2 sockets and 1 Garnet"; + case 13078: //Mikatsuki + return "you need a Hakujin with a Slot and an Opal"; + case 13313: //Huuma_Swirling_Petal + return "you need one Huuma Calm Mind Shuriken and 100 Broken Shurikens"; + } + end; + +} diff --git a/npc/re/quests/quests_eclage.txt b/npc/re/quests/quests_eclage.txt index 4e75f8943..ab8651c92 100644 --- a/npc/re/quests/quests_eclage.txt +++ b/npc/re/quests/quests_eclage.txt @@ -44,25 +44,24 @@ ecl_fild01,118,311,4 script Teleport Cat No.1#1 4_M_BOSSCAT,{ mes "I'll see you later then"; close; } + .@i = (.@menu/2)-1; if (.@menu%2){ - .@menu = (.@menu/2)-1; - if (Zeny < (.price[.@pindex[.@menu]]*1000)){ + if (Zeny < (.price[.@pindex[.@i]]*1000)){ mes "[Teleport Cat]"; mes "I'm afraid it's not enough. Sorry, but it can't be done for free~"; close; } - Zeny -= .price[.@pindex[.@menu]]*1000; + Zeny -= .price[.@pindex[.@i]]*1000; } else{ - .@menu = (.@menu/2)-1; - if (countitem(Malang_Sp_Can) < .price[.@pindex[(.@menu/2)]] ){ + if (countitem(Malang_Sp_Can) < .price[.@pindex[.@i]] ){ mes "[Teleport Cat]"; mes "I'm afraid it's not enough. Sorry, but it can't be done for free~"; close; } - delitem Malang_Sp_Can,.price[.@pindex[(.@menu/2)]]; + delitem Malang_Sp_Can,.price[.@pindex[.@i]]; } - warp .maps$[.@mindex],.x[.@mindex],.y[.@mindex]; + warp .maps$[.@mindex[.@i]],.x[.@mindex[.@i]],.y[.@mindex[.@i]]; end; OnInit: diff --git a/npc/re/scripts.conf b/npc/re/scripts.conf index 2f980265e..518cfdc94 100644 --- a/npc/re/scripts.conf +++ b/npc/re/scripts.conf @@ -88,6 +88,7 @@ npc: npc/re/merchants/renters.txt npc: npc/re/merchants/shops.txt //npc: npc/re/merchants/ticket_refiner.txt //npc: npc/re/merchants/enchan_upg.txt +npc: npc/re/merchants/ninja_craftsman.txt // --------------------------- Others --------------------------- npc: npc/re/other/bulletin_boards.txt diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index 74b2a637e..cbfaa8b98 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -1663,7 +1663,7 @@ REPLACE INTO `item_db` VALUES ('2626','Rosary_','Rosary','5','15000','7500','200 REPLACE INTO `item_db` VALUES ('2627','Belt','Belt','5','20000','10000','1200','0','0','0','0','1','4294967295','63','2','136','0','25',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('2628','Novice_Armlet','Novice Armlet','5','400','200','200','0','0','0','0','1','1','47','2','136','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('2629','Magingiorde','Magingiorde','5','20','10','8000','0','0','2','0','0','4294967295','63','2','136','0','94',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,40+BaseLevel/5; bonus bMdef,7; if(readparam(bStr)==120) bonus2 bAddRace,RC_Boss,10;','',''); -REPLACE INTO `item_db` VALUES ('2630','Brysinggamen','Brysinggamen','5','20','10','1500','0','0','1','0','0','4294967295','63','2','136','0','94',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,6; bonus bStr,6; bonus bAgi,6; bonus bVit,6; bonus bInt,10; bonus bLuk,10; bonus bMdef,5;','',''); +REPLACE INTO `item_db` VALUES ('2630','Brysinggamen','Brysinggamen','5','20','10','1500','0','0','1','0','0','4294967295','63','2','136','0','94',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,6; bonus bStr,6; bonus bAgi,6; bonus bVit,6; bonus bInt,10; bonus bLuk,10; bonus bMdef,5; bonus2 bSkillHeal,PR_SANCTUARY,6; bonus2 bSkillHeal,AL_HEAL,6;','',''); REPLACE INTO `item_db` VALUES ('2631','First_Age_Ring','Celebration Ring','5','1','0','10','0','0','0','0','0','4294967295','63','2','136','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('2632','Korean_Trinket','Korean Trinket','5','125000','62500','100','0','0','1','0','0','2147483646','63','2','136','0','65',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,1; bonus bDex,1; bonus bLuk,1;','',''); REPLACE INTO `item_db` VALUES ('2633','Jade_Ring','Jade Ring','5','204000','102000','100','0','0','0','0','0','2147483646','63','2','136','0','80',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2; bonus bInt,1;','',''); @@ -2454,7 +2454,7 @@ REPLACE INTO `item_db` VALUES ('4478','Light_Up_Card3','Lie Card','6','20','10', REPLACE INTO `item_db` VALUES ('4479','Light_Up_Card4','Lie Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','4','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('4480','Sealed_Kiel_Card','Sealed Kiel Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','769','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDelayrate,((getrefine()>14)?-20:-15);','',''); REPLACE INTO `item_db` VALUES ('4481','Sealed_Ktullanux_Card','Sealed Ktullanux Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddEle,Ele_Fire,((getrefine()>14)?35:25); bonus5 bAutoSpellWhenHit,WZ_FROSTNOVA,10,10,BF_WEAPON|BF_MAGIC,0;','',''); -REPLACE INTO `item_db` VALUES ('4482','Sealed_B_Ygnizem_Card','Sealed B Ygnizem Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','64','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','.@rate = (getrefine() > 14) ? 7 : 5); bonus bMaxHPrate,.@rate; bonus bMaxSPrate,.@rate; bonus2 bHPRegenRate,50,10000; bonus2 bSPRegenRate,10,10000;','',''); +REPLACE INTO `item_db` VALUES ('4482','Sealed_B_Ygnizem_Card','Sealed B Ygnizem Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','64','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','.@rate = (getrefine() > 14) ? 7 : 5; bonus bMaxHPrate,.@rate; bonus bMaxSPrate,.@rate; bonus2 bHPRegenRate,50,10000; bonus2 bSPRegenRate,10,10000;','',''); REPLACE INTO `item_db` VALUES ('4483','Sealed_Dracula_Card','Sealed Dracula Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','2','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSPDrainRate,((getrefine()>14)?70:50),5;','',''); REPLACE INTO `item_db` VALUES ('4484','Sealed_Mistress_Card','Sealed Mistress Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','769','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bNoGemStone,0; bonus bUseSPrate,((getrefine()>14)?35:50);','',''); REPLACE INTO `item_db` VALUES ('4485','Sealed_Gloom_Card','Sealed Gloom Card','6','20','10','10','0','0','0','0','0','4294967295','63','2','16','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','.@rate = (getrefine() > 14) ? 30 : 20; bonus2 bAddEle,Ele_Holy,.@rate; bonus2 bAddEle,Ele_Dark,.@rate; bonus2 bAddRace,RC_Angel,.@rate; bonus2 bAddRace,RC_Demon,.@rate;','',''); @@ -3572,6 +3572,7 @@ REPLACE INTO `item_db` VALUES ('5869','Mimic_Egg_Shell','Mimic Egg Shell','5','1 REPLACE INTO `item_db` VALUES ('5870','Bunny_Egg_Shell','Bunny Egg Shell','5','10','5','100','0','0','5','0','0','4294967295','63','2','256','0','0',NULL,'1','1000','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAgi,3; bonus bAspd,1;','',''); REPLACE INTO `item_db` VALUES ('5871','Picky_Egg_Shell','Picky Egg Shell','5','10','5','100','0','0','2','0','0','4294967295','63','2','256','0','0',NULL,'1','1001','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,3; bonus bMdef,2;','',''); REPLACE INTO `item_db` VALUES ('5873','Helmet_Of_Siegfried','Helmet Of Siegfried','5','20','10','600','0','0','7','0','1','279714','63','2','256','0','60',NULL,'1','1055','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,5; bonus bUnbreakableHelm,0;','',''); +REPLACE INTO `item_db` VALUES ('5921','Fish_Monster\'s_Grill','Fish Monster\'s Grill','5','0','0','200','0','0','1','0','0','4294967295','63','2','512','0','10',NULL,'1','1218','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('6000','Dark_Ashes','Ashes of Darkness','3','0','0','0','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('6001','Essence_Of_Fire','Essence of Fire','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('6002','Token_Of_Apostle','Token of Apostle','3','0','0','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','1','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); @@ -8168,6 +8169,7 @@ REPLACE INTO `item_db` VALUES ('18794','Plain_Black_Mage_Hat','Plain Black Mage REPLACE INTO `item_db` VALUES ('18795','Night_Sparrow_Hat','Night Sparrow Hat','5','0','0','200','0','0','5','0','0','1048576','63','2','256','0','100',NULL,'1','913','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18796','RWC_Crown_Of_Victory(8th)','RWC Crown Of Victory(8th)','5','0','0','0','0','0','0','0','1','4294967295','63','2','256','0','1',NULL,'0','914','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18802','Poring_Fedora_Hat','Poring Fedora Hat','5','0','0','100','0','0','10','0','1','4294967295','63','2','256','0','1',NULL,'1','919','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('18804','Thornwood_Band','Thornwood Band','5','0','0','300','0','0','5','0','1','4294967295','63','2','256','0','10',NULL,'1','921','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18805','Eclipse_Hat','Eclipse Hat','5','20','10','300','0','0','2','0','0','4294967295','63','2','256','0','0',NULL,'1','922','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bLuk,3; bonus bMdef,5;','',''); REPLACE INTO `item_db` VALUES ('18806','Black_Rabbit_Hat','Black Rabbit Hat','5','20','10','300','0','0','2','0','1','4294967295','63','2','256','0','0',NULL,'1','923','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,2; bonus bAgi,3;','',''); REPLACE INTO `item_db` VALUES ('18807','Yellow_Yuzu_Hat','White Citron Hat','5','20','10','400','0','0','3','0','1','2147483646','63','2','256','0','0',NULL,'1','924','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bVit,2; bonus bLuk,3;','',''); @@ -8186,6 +8188,7 @@ REPLACE INTO `item_db` VALUES ('18829','2012RMSCNO2','RMSC2012 1st Runner Headge REPLACE INTO `item_db` VALUES ('18830','2012RMSCNO3','RMSC2012 2nd Runner Headgear','5','0','0','1000','0','0','20','0','1','4294967295','63','2','256','0','95',NULL,'0','944','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0; bonus bAllStats,3; bonus bMdef,5;','',''); REPLACE INTO `item_db` VALUES ('18831','2012RMSCNO4','RMSC2012 Special Headgear','5','0','0','1000','0','0','20','0','1','4294967295','63','2','256','0','95',NULL,'0','945','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0; bonus bAllStats,2; bonus bMdef,5;','',''); REPLACE INTO `item_db` VALUES ('18832','Rolf_Von_Gigue_666','Rolf Von Gigue 666','5','20','10','300','0','0','0','0','0','4294967295','63','2','256','0','0',NULL,'1','946','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('18837','Cheering_Whistle','Cheering Whistle','5','0','0','100','0','0','0','0','0','4294967295','63','2','1','0','1',NULL,'1','952','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18839','Poring_Sunglasses','Poring Sunglasses','5','0','0','100','0','0','10','0','1','4294967295','63','2','512','0','0',NULL,'0','954','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1;','',''); REPLACE INTO `item_db` VALUES ('18841','Small_Poring_Band','Small Poring Band','5','20','10','350','0','0','8','0','1','4294967295','63','2','256','0','0',NULL,'1','955','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18842','Hat_Of_Girl','Hat Of Girl','5','20','10','350','0','0','8','0','1','4294967295','63','2','256','0','0',NULL,'1','956','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); @@ -8197,6 +8200,7 @@ REPLACE INTO `item_db` VALUES ('18849','Celine_Ribbon','Celine Ribbon','5','0',' REPLACE INTO `item_db` VALUES ('18850','Polar_Bear_Cap','Polar Bear Cap','5','20','10','300','0','0','7','0','0','4294967295','63','2','256','0','0',NULL,'0','966','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,3; bonus bUnbreakableHelm,0; bonus bDex,1; bonus bAgi,1;','',''); REPLACE INTO `item_db` VALUES ('18858','Pink_Angeling_Bubble','Pink Angeling Bubble','5','0','0','50','0','0','5','0','0','4294967295','63','2','1','0','1',NULL,'0','975','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP,200; bonus bAspd,1;','',''); REPLACE INTO `item_db` VALUES ('18859','Angeling_Bubble','Angeling Bubble','5','0','0','50','0','0','5','0','0','4294967295','63','2','1','0','1',NULL,'0','976','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,1; bonus bMatkRate,2; bonus bMaxHP,100;','',''); +REPLACE INTO `item_db` VALUES ('18860','Preschool_Hat','Preschool Hat','5','0','0','100','0','0','8','0','1','4294967295','63','2','256','0','1',NULL,'1','977','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18870','Very_Sweet_Candy_Bar','Very Sweet Candy Bar','5','0','0','0','0','0','0','0','0','4294967295','63','2','1','0','1',NULL,'0','446','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18871','Very_Sweet_Candy','Very Sweet Candy','5','0','0','0','0','0','0','0','0','4294967295','63','2','1','0','1',NULL,'0','446','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18872','Snake_Hat','Snake Hat','5','20','10','100','0','0','5','0','1','4294967295','63','2','256','0','0',NULL,'1','986','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,3; bonus bInt,3; bonus bMdef,5; bonus bUnbreakableHelm,0;','',''); @@ -8220,6 +8224,17 @@ REPLACE INTO `item_db` VALUES ('18898','Yggdrasil_Herald_Crown','Yggdrasil Heral REPLACE INTO `item_db` VALUES ('18900','Weisswurst','Weisswurst','5','20','10','100','0','0','1','0','0','4294967295','63','2','1','0','60',NULL,'0','1022','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18901','Seppl_Hat','Seppl Hat','5','20','10','500','0','0','5','0','1','4294967295','63','2','1','0','60',NULL,'1','1023','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('18921','Costume_Tarnished_Lamp','Costume: Tarnished Lamp','5','0','0','200','0','0','0','0','0','4294967295','63','2','1024','0','50',NULL,'0','897','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('18934','Fox_Ears_Drop_Ribbon','Fox Ears Drop Ribbon','5','0','0','400','0','0','4','0','0','4294967295','63','2','256','0','50',NULL,'1','1070','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('18937','Memories_of_Lover','Memories of Lover','5','0','0','100','0','0','0','0','0','4294967295','63','2','256','0','1',NULL,'1','1072','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('18938','Astro_Circle','Astro Circle','5','0','0','300','0','0','1','0','0','4294967295','63','2','256','0','1',NULL,'1','1073','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('18942','Knit_Cap_of_Water','Knit Cap of Water','5','0','0','1000','0','0','0','0','0','4294967295','63','2','256','0','90',NULL,'1','1077','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('18943','Silk_Hat_of_Earth','Silk Hat of Earth','5','0','0','1000','0','0','0','0','0','4294967295','63','2','256','0','90',NULL,'1','1078','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('18969','Boss_Beret','Boss Beret_J','5','0','0','0','0','0','0','0','0','4294967295','63','2','256','0','0',NULL,'1','1134','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19014','Gravekeeper_Blinker','Gravekeeper Blinker','5','0','0','100','0','0','1','0','0','4294967295','63','2','512','0','10',NULL,'1','1210','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19019','Elemental_Crown','Elemental Crown','5','0','0','500','0','0','10','0','1','4294967295','63','2','256','0','50',NULL,'1','1219','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bDex,3; bonus bLongAtkRate,4; bonus bDex,(getrefine()/2); if(BaseLevel>130) { bonus bDex,getrefine(); }','',''); +REPLACE INTO `item_db` VALUES ('19027','Type-10_Glasses','Type-10 Glasses','5','0','0','200','0','0','0','0','0','4294967295','63','2','512','0','10',NULL,'1','1237','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19028','Kid_Deviling','Kid Deviling','5','0','0','200','0','0','0','0','0','4294967295','63','2','512','0','40',NULL,'1','1036','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19029','Alice_Friesinger_Hat_69','Alice Friesinger Hat 69','5','0','0','300','0','0','0','0','0','4294967295','63','2','256','0','1',NULL,'1','1249','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_Boss,15;','',''); REPLACE INTO `item_db` VALUES ('19500','T_Mr_Smile','Costume: Mr. Smile','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'0','65','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,2;','',''); REPLACE INTO `item_db` VALUES ('19501','T_Spinx_Helm','Costume: Sphinx Hat','5','0','0','0','0','0','0','0','1','4294967295','63','2','5120','0','0',NULL,'0','137','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19502','T_Goggle','Costume: Goggles','5','20','10','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'0','1','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); @@ -8308,36 +8323,134 @@ REPLACE INTO `item_db` VALUES ('19585','C_Feather_Beret','Costume Feather Beret' REPLACE INTO `item_db` VALUES ('19586','Costume_Pink_Bunny_Hair_Band','Costume Pink Bunny Hair Band','5','100','50','0','0','0','0','0','0','4294967295','2','2','1024','0','1',NULL,'1','898','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19587','C_King_Poring_Hat','Costume: King Poring','5','0','0','100','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','905','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0;','',''); REPLACE INTO `item_db` VALUES ('19589','C_Fallen_Angel_Lost_J','C Fallen Angel Lost J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','907','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19596','Costume_Flapping_Angel_Wing','Costume Flapping Angel Wing','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','264','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19597','Costume_Magic_Eyes','Costume Magic Eyes','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','209','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19598','Costume_Wandering_Wolf_Hat','Costume Wandering Wolf Hat','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','490','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19599','Costume_Imp_Hat','Costume Imp Hat','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','589','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19600','Costume_Drooping_Kiehl','Costume: Drooping Kiehl','5','0','0','400','0','0','0','0','0','4294967295','63','2','1024','0','30',NULL,'0','909','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19601','Costume_Drooping_Aliot','Costume: Drooping Aliot','5','0','0','100','0','0','0','0','0','4294967295','63','2','1024','0','1',NULL,'0','910','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19602','Costume_Invisible_Cap','Costume Invisible Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19603','C_Invisible_Sunglasses','Costume Koneko Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','378','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('19605','Spellcaster\'s_Supply_Crate','Spellcaster\'s Supply Crate','5','1000','500','0','0','0','0','0','1','4294967295','63','2','1024','0','0',NULL,'1','369','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19604','Costume_Invisible_Mask','Costume Invisible Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19605','Costume_Gang_Scarf','Costume Gang Scarf','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','369','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19606','Costume_Ninja_Scroll','Costume Ninja Scroll','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','370','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19607','Costume_Chicken_Love_Hat','Costume Chicken Love Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','500','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19608','Costume_Chick_Hat','Costume Chick Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','311','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19609','Costume_Red_Glasses','Costume Red Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','316','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19610','Costume_Whisper_Mask','Costume Whisper Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','321','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19611','Costume_Peco_Ears','Costume Peco Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','366','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19612','Costume_Note_Headphone','Costume Note Headphone','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','220','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19613','Costume_Valkyrie_Feather_Band','Costume Valkyrie Feather Band','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','300','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19614','Costume_Super_Novice_Hat','Costume Super Novice Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','193','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19615','Costume_Loki_Mask','Costume Loki Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','346','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19616','Costume_Wickebine\'s_Black_Cat_Ears','Costume Wickebine\'s Black Cat Ears','5','1000','500','0','0','0','0','0','1','4294967295','63','2','1024','0','0',NULL,'1','368','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19617','Costume_Puppy_Headband','Costume Puppy Headband','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','199','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19619','Costume_Corsair','Costume Corsair','5','1000','500','0','0','0','0','0','1','4294967295','63','2','1024','0','0',NULL,'1','105','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19620','Costume_Detective_Hat','Costume Detective Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','189','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19621','Costume_Evil_Wing_Ears','Costume Evil Wing Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','152','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19622','Costume_Crescent_Hairpin','Costume Crescent Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','132','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19623','Costume_Bijofnil_Wings','Costume Bijofnil Wings','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','477','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19624','Costume_Blank_Eyes','Costume Blank Eyes','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','185','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19625','Costume_Refined_Bunny_Band','Costume Refined Bunny Band','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','15','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19627','Costume_Satellite_Hairband','Costume Satellite Hairband','5','1000','500','0','0','0','0','0','1','4294967295','63','2','1024','0','0',NULL,'1','266','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19628','Costume_Headset','Costume Headset','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','97','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19629','C_Tiara','Costume Tiara','5','20','10','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','19','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19630','Costume_Crown','Costume Crown','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','45','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19631','Costume_Poring_Fedora_Hat','Costume Poring Fedora Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','919','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19632','Costume_Hat','Costume Hat','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','16','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19633','Costume_Flower_Band','Costume Flower Band','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','5','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19634','Costume_Flu_Mask','Costume Flu Mask','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','8','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19635','Costume_Mini_Propeller','Costume Mini Propeller','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','46','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19636','Costume_Clown_Nose','Costume Clown Nose','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','49','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19637','Costume_Nurse_Cap','Costume Nurse Cap','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','64','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19638','Costume_Mr_Smile','Costume Mr Smile','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','65','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19639','Costume_Sakkat','Costume Sakkat','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','67','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19640','Costume_Charming_Ribbon','Costume Charming Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','211','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19641','Costume_Helm_of_Darkness','Costume Helm of Darkness','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','233','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19642','Costume_Moonlight_Flower_Hat','Costume Moonlight Flower Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','268','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19643','Costume_Wickebine_Ears','Costume Wickebine Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','368','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19644','Costume_Takius_Blindfold','Costume Takius Blindfold','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','184','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19645','Costume_Phoenix Crown','Costume Phoenix Crown','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','221','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19646','Costume_Ramen_Hat','Costume Ramen Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','271','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19647','Costume_Red_Deviruchi_Hat','Costume Red Deviruchi Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','271','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19648','Costume_Autumn_Leaves','Costume Autumn Leaves','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','241','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19649','Costume_White_Kitten_Ears','Costume White Kitten Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','926','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19650','C_Rainbow_Feather_Deco','Costume: Five Colored Feathers','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','934','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19651','Costume_RWC_Shouting_Mouth','Costume RWC Shouting Mouth','5','1000','500','0','0','0','0','0','0','4294967295','2','2','4096','0','1',NULL,'1','194','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19652','Costume_Rabbit_Magic_Hat','Costume Rabbit Magic Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','497','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19653','Costume_Marcher_Hat','Costume Marcher Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','269','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19654','Costume_Master\'s_Hat','Costume Master\'s Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','367','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19655','C_Tiraya_Bonnet','C Tiraya Bonnet','5','20','10','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','398','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19656','Costume_Minstrel_Hat','Costume Minstrel Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','240','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19657','Costume_Captain_Hat','Costume Captain Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','236','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19658','Costume_Vacation_Hat','Costume Vacation Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','315','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19659','Costume_Brown Beanie','Costume Brown Beanie','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','279','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19660','Costume_Coppola','Costume Coppola','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','252','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19661','Costume_Sweet_Bonnet','Costume Sweet Bonnet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','938','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19662','Costume_Magician_Hat','Costume Magician Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','130','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19663','Costume_Wish_Lamp','Costume Wish Lamp','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','947','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19664','Costume_Campus_Festival','Costume Campus Festival','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','721','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19665','Costume_Poring_Cake_Hat','Costume Poring Cake Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','417','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19666','Costume_Cookie_Hat','Costume Cookie Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','217','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19667','Costume_Dragon_Helm','Costume Dragon Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','464','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19668','Costume_Wind_Milestone','Costume Wind Milestone','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','463','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19669','Costume_Reginrev\'s_Wings','Costume Reginrev\'s Wings','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','468','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19670','Costume_Southern_Cross','Costume Southern Cross','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','601','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19671','Costume_Piggie_Bank','Costume Piggie Bank','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','603','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19672','Costume_Poring_Letter','Costume Poring Letter','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','604','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19673','Costume_Benevolent_Guardian','Costume Benevolent Guardian','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','716','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19674','Costume_Demon_Mask','Costume Demon Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','714','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19675','Costume_Jumping_Poring','Costume Jumping Poring','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','349','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19676','Costume_Rainbow_Poring_Hat','Costume Rainbow Poring Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','900','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19677','Costume_Soulless_Wing','Costume Soulless Wing','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','301','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19678','Costume_Bell_Ribbon','Costume Bell Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','388','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19679','Costume_Round_Eyes_J','Costume Round Eyes J','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','185','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19680','Costume_Tongue_Mask','Costume Tongue Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','253','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19681','Costume_Silver_Tiara','Costume Silver Tiara','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','218','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19682','C_Santa_Poring_Hat','Costume SantaPoring Cap','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','387','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19683','Costume_Sweet_Candy','Costume Sweet Candy','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','414','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19684','Costume_Happy_Wig','Costume Happy Wig','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','305','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19685','Costume_Shine_Stanta_Poring','Costume Shine Stanta Poring','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','981','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19686','Costume_Santa_Doll_Headband','Costume Santa Doll Headband','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','964','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19687','Costume_Fresh_Roses','Costume Fresh Roses','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','963','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19688','Costume_Katusa','Costume Katusa','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','533','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19689','Costume_Ati_Atihan','Costume Ati Atihan','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','303','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19690','Costume_Dark_Snake_Lord_Hat_J','Costume Dark Snake Lord Hat J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','372','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19691','Costume_Blue_Ribbon','Costume Blue Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','407','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19692','Costume_Antique_Pipe_J','Costume Antique Pipe J','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','383','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19693','Costume_Triple_Poring_Hat','Costume Triple Poring Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','299','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19694','Costume_Vane_Hairpin','Costume Vane Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','313','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19695','Costume_Kettle_Hat','Costume Kettle Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','318','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19696','Costume_Friend_Mochiring_Hat','Costume Friend Mochiring Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','965','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19697','Costume_Rudolph_Santa_Hat','Costume Rudolph Santa Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','919','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19698','Costume_Bf_Recruiter_Hat','Costume Bf Recruiter Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','352','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19699','Costume_Gf_Recruiter_Hat','Costume Gf Recruiter Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','360','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19700','Costume_RWC_Champ_Crown_2nd','Costume RWC Champ Crown 2nd','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','903','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19701','Costumes_Red_Bonnet','Costumes Red Bonnet','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','190','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19702','Costume_Twin_Pompom_By_JB','Costume Twin Pompom By JB','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','390','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19706','Costume_Red_Dress_Hat','Costume Red Dress Hat','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','670','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19707','C_Polar_Bear_Cap','Costume Polar Bear Cap','5','20','10','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','966','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19708','C_Withe_Snake_Hat','Costume Withe Snake Hat','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','413','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19709','Costume_Yellow_Ribbon','Costume Yellow Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','310','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19710','Costume_Wings_of_Victory','Costume Wings of Victory','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','365','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19712','Costume_Little_Angel_Doll','Costume Little Angel Doll','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','344','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19713','Costume_Lucky_Clover','Costume Lucky Clover','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','571','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19714','Costume_Lady_Tanee_Doll','Costume Lady Tanee Doll','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','520','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19715','Costume_Scarf','Costume Scarf','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','343','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19716','Costume_Alice_Doll','Costume Alice Doll','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','208','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19717','Costume_Pink_Ribbon','Costume Pink Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','245','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19718','Costume_Gothic_Head_Dress','Costume Gothic Head Dress','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','978','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19719','Costume_Coronet','Costume Coronet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','33','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19720','Costume_Romantic_Gent','Costume Romantic Gent','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','31','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19721','Costume_Darkness_Helm','Costume Darkness Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','586','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19722','Costume_Black_Glasses','Costume Black Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','404','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19723','Costume_Sacred_Torch_Coronet','Costume Sacred Torch Coronet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','431','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19724','Costume_Deprotai_Doll','Costume Deprotai Doll','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','354','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19725','Costume_Bread_Bag2','Costume Bread Bag2','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','412','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19726','Costume_Scarlet_Rose','Costume Scarlet Rose','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','534','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19727','Costume_Deviling_Hat','Costume Deviling Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','298','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19728','Costume_Tare_Zonda','Costume Tare Zonda','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','985','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19729','Costume_Neko_Mimi_Kafra','Costume Neko Mimi Kafra','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','392','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19730','C_Snake_Hat','C Snake Hat','5','20','10','10','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','986','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19731','C_Evolved_Evil_Wing','Costume Evolved Evil Wing','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','39','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19732','C_Goblin_Leader_Mask','Costume Goblin Leader Mask','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','174','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); @@ -8348,32 +8461,472 @@ REPLACE INTO `item_db` VALUES ('19736','C_Gas_Mask','Costume Gas Mask','5','1000 REPLACE INTO `item_db` VALUES ('19737','C_Corsair_K','Costume Refined Corsair','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','105','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19738','C_Renown_Detective\'s_Cap','Costume Renown Detective\'s Cap','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','189','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19739','C_Sleeping_Cat_Hat','Costume Sleeping Cat Hat','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','838','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); -REPLACE INTO `item_db` VALUES ('19742','C_Small_Golden_Wings','Costume Small Golden Wings','5','1000','500','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','724','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19741','Costume_Majestic_Devil_Horns','Costume Majestic Devil Horns','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','562','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19742','Costume_Small_Golden_Wings','Costume Small Golden Wings','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','724','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bExpAddRace,RC_NonBoss,1; bonus2 bExpAddRace,RC_Boss,1;','',''); +REPLACE INTO `item_db` VALUES ('19743','Costume_Anubis_Helm_J','Costume Anubis Helm J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','485','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19744','Costume_Black_Tail_Ribbon','Costume Black Tail Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','642','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19745','Costume_Holy Marching_Hat_J','Costume Holy Marching Hat J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','587','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19746','Costume_Executioner_Hood','Costume Executioner Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','326','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19747','Costume_Tha_Despero_Mask_J','Costume Tha Despero Mask J','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','693','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19748','Costume_Diadem','Costume Diadem','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','335','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19749','Costume_Gold_Spirit_Chain','Costume Gold Spirit Chain','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','260','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19750','Costume_Saint_Frill_Ribbon','Costume Saint Frill Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','987','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19751','Costume_Light_Darkness_Crown','Costume Light Darkness Crown','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','988','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19752','Costume_Shelter_Wing_Ears','Costume Shelter Wing Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','990','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19753','Costume_Celestial_Hat','Costume Celestial Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','462','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19754','Costume_Good_Wedding_Veil','Costume Good Wedding Veil','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','489','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19755','Costume_YinYang_Earring','Costume YinYang Earring','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','744','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19756','Costume_Holy_Mom_Love','Costume Holy Mom Love','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','610','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19757','Costume_Water_Lily_Crown','Costume Water Lily Crown','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','312','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19758','Costume_Frog_King_Hat','Costume Frog King Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','522','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19759','Costume_Umbrella_Hat','Costume Umbrella Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','338','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19760','Costume_Rainbow_Veil','Costume Rainbow Veil','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','992','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19761','Costume_White_Lily','Costume White Lily','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','993','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19762','Costume_Happy_Peace_Proof','Costume Happy Peace Proof','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','994','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19763','Costume_Leaf_Cat_Hat','Costume Leaf Cat Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','539','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19764','C_Monster_Card','Costume Monster Card','5','1000','500','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','526','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19765','C_Wing_Angels_Ears','Costume Wing Angels Ears','5','1000','500','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','158','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19766','Costume_Yggdrasil_Hat','Costume Yggdrasil Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','997','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19767','Costume_Home_Cherry_Blossom','Costume Home Cherry Blossom','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','602','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19768','Costume_Sakura_Coronet','Costume Sakura Coronet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','645','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19769','Costume_Mischievous_Fairy','Costume Mischievous Fairy','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','405','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19770','Costume_Japan_Winecup','Costume Japan Winecup','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','557','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19771','Costume_Butterfly_Hairpin','Costume Butterfly Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','723','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19772','Costume_Honeybee_Hat','Costume Honeybee Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','709','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19773','Costume_Angeling_Hairpin','Costume Angeling Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','222','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19774','Costume_Emperor_Wreath_J','Costume Emperor Wreath J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','261','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19775','Costume_Afro_Wig','Costume Afro Wig','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','307','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19776','Costume_Tomboy_Fairy','Costume Tomboy Fairy','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','998','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19777','Costume_Twinkle_Little_Star','Costume Twinkle Little Star','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1005','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19778','Costume_King_Strawberry','Costume King Strawberry','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','968','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19779','Costume_Persica','Costume Persica','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','659','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19780','Costume_Knit_Rabbit_Ears','Costume Knit Rabbit Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','867','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19781','Costume_Angel_Wing_Ears','Costume Angel Wing Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','158','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19782','Costume_Drooping_Cat','Costume Drooping Cat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','142','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19783','Costume_Grampa_Beard','Costume Grampa Beard','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','25','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19784','Costume_Morrigane\'s_Helm','Costume Morrigane\'s Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','257','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19785','Costume_Crunch_Toast','Costume Crunch Toast','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','188','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19786','Costume_Crown_of_Mistress','Costume Crown of Mistress','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','165','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19787','C_Devoted_Eyes','Costume: Devoted Eyes','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','1',NULL,'0','1021','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19788','C_Heart_Eyepatch','Costume: Heart Eyepatch','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','1',NULL,'0','779','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19789','Costume_Sweet_Gents','Costume Sweet Gents','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','29','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19790','Costume_Veil','Costume Veil','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','44','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19791','Costume_Alarm_Mask','Costume Alarm Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','170','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19792','Costume_Poker_Mask','Costume Poker Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','171','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19793','Costume_Surprised_Mask','Costume Surprised Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','172','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19794','Costume_Annoyed_Mask','Costume Annoyed Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','173','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19795','Costume_Grand_Circlet','Costume Grand Circlet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','93','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19796','Costume_Bone_Helm','Costume Bone Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','103','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19797','Costume_Apple_of_Archer','Costume Apple of Archer','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','72','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19798','Costume_Angry_Snarl','Costume Angry Snarl','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','194','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19799','Costume_Golden_Gear','Costume Golden Gear','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','30','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19800','Costume_Carnation_Headband','Costume Carnation Headband','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','878','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19801','Costume_Fox_Hat','Costume Fox Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','403','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19802','Costume_Drooping_Nine_Tail','Costume Drooping Nine Tail','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','296','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19803','Costume_Pinwheel_Cap','Costume Pinwheel Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','456','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19804','Costume_Red_Vane_Hairpin','Costume Red Vane Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1044','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19805','Costume_Taboo_Curse_Scroll','Costume Taboo Curse Scroll','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1045','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19806','Costume_Full_Bloom_Hairpin','Costume Full Bloom Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1046','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19807','Costume_Majestic_Helmet','Costume Majestic Helmet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1047','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19808','Costume_Blazing_Sun','Costume Blazing Sun','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','654','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19809','Costume_Purple_Cowboy_Hat','Costume Purple Cowboy Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','411','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19810','Costume_Ifrit\'s_Ear','Costume Ifrit\'s Ear','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','422','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19811','Costume_Beer_Cap','Costume Beer Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','418','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19812','Costume_Large_Hibiscus','Costume Large Hibiscus','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','333','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19813','Costume_Icecream_Hat','Costume Icecream Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','488','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19814','Costume_Shiny_Wig','Costume Shiny Wig','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','306','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19815','Costume_Lolita_Ten_Gallon_Hat','Costume Lolita Ten Gallon Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1048','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19816','Costume_Pecopeco_Cap','Costume Pecopeco Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1049','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19817','Costume_Ifrit\'s_Breath','Costume Ifrit\'s Breath','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1050','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19818','Costume_Drooping_Morocc_Minion','Costume Drooping Morocc Minion','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','600','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19820','Costume_Necromencer_Hood','Costume Necromencer Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','491','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19821','Costume_Hyegun_Hat','Costume Hyegun Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','375','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19822','Costume_Yellow_Bandana','Costume Yellow Bandana','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','309','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19823','Costume_White_Cat_Hood','Costume White Cat Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','1052','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19824','Costume_Evil_Druid_Hat','Costume Evil Druid Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1053','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19825','Costume_Vicious_Stop_Bandage','Costume Vicious Stop Bandage','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1054','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19826','Costume_Ice_Wings_Ears','Costume Ice Wings Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','584','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19827','Costume_Amistr_Cap','Costume Amistr Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','643','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19828','Costume_Fedora','Costume Fedora','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','195','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19829','C_Straw_Hat','C Straw Hat','5','20','10','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'0','146','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19830','Costume_Sunglasses','Costume Sunglasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','12','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19831','Costume_Filir_Hat','Costume Filir Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','408','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19832','Costume_Poring_Hat','Costume Poring Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','120','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19833','Costume_Cute_Ribbon','Costume Cute Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','34','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19834','Costume_Baseball_Cap','Costume Baseball Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','216','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19835','Costume_Lif_Doll_Hat','Costume Lif Doll Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','297','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19836','Costume_Large_Majestic_Horns','Costume Large Majestic Horns','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','380','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19837','Costume_Asara_Fairy_Hat','Costume Asara Fairy Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','492','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19838','Costume_Fox_Hatt','Costume Fox Hatt','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','403','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19839','Costume_Vanilmirth_Hat','Costume Vanilmirth Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','317','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19841','Costume_Dragonhelm_Copper','Costume Dragonhelm Copper','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','454','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19842','Costume_Puppy_Hat','Costume Puppy Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','234','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19843','Costume_Kitty_Band','Costume Kitty Band','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','2','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19844','Costume_Turban','Costume Turban','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','7','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19845','Costume_Bao_Bao','Costume Bao Bao','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','127','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19846','Costume_Opera_Phantom_Mask','Costume Opera Phantom Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','128','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19847','Costume_Big_Ribbon','Costume Big Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','28','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19848','Costume_Angeling_Hat','Costume Angeling Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','204','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19849','Costume_Munak_Hat','Costume Munak Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','51','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19850','Costume_Bongun_Hat','Costume Bongun Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','139','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19851','Costume_Teddybear_Hat','Costume Teddybear Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','143','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19853','Costume_Filir_Wings','Costume Filir Wings','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','595','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19856','Costume_Snow_Cone_Hat','Costume Snow Cone Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1080','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19857','Costume_Crayfish_Hat','Costume Crayfish Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','728','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19858','Costume_Smokie_Leaf','Costume Smokie Leaf','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','148','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19859','Costume_Flying_Angel','Costume Flying Angel','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','264','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19860','Costume_School_Criatura_Hat','Costume School Criatura Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','872','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19861','Costume_Heart_Hairpin','Costume Heart Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','126','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19862','Costume_Succubus_Horn','Costume Succubus Horn','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','150','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19863','Costume_Incubus_Horn','Costume Incubus Horn','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','156','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19864','Costume_Dokebi\'s_Wig','Costume Dokebi\'s Wig','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','302','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19865','Costume_Joker_Jester','Costume Joker Jester','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','89','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19866','Costume_Blue_Pajamas','Costume Blue Pajamas','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','501','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19867','Costume_Red_Pajamas','Costume Red Pajamas','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','501','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19868','Costume_Showy_High_Cap','Costume Showy High Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','830','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19869','Costume_Boss_Beret','Costume Boss Beret','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1134','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('19871','C_DecorationOfMusic_Accessory','Decoration of Music','5','20','10','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'0','1074','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','sc_start SC_DECORATION_OF_MUSIC,-1,0;','sc_end SC_DECORATION_OF_MUSIC;'); -REPLACE INTO `item_db` VALUES ('19903','C_Witchs_Hat','C Witchs Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','1',NULL,'0','717','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bCastrate,-10;','',''); -REPLACE INTO `item_db` VALUES ('19917','C_Gloomy_Pumpkin_Hat','C Gloomy Pumpkin Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','1',NULL,'0','691','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bSpeedRate,25;','',''); -REPLACE INTO `item_db` VALUES ('19918','C_Lude_Mask','C Lude Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','1',NULL,'0','802','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bHealPower2,20; bonus bAddItemHealRate,20;','',''); -REPLACE INTO `item_db` VALUES ('19919','C_Cube_Mask_','C Cube Mask ','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','1',NULL,'0','472','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAspdRate,10;','',''); -REPLACE INTO `item_db` VALUES ('19920','C_Adv_Whisper_Mask','C Adv Whisper Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','1',NULL,'0','458','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bFlee,20;','',''); -REPLACE INTO `item_db` VALUES ('22067','Witch_Shoes','Witch Shoes','5','3500','1750','400','0','0','10','0','0','2147483646','63','2','64','0','0',NULL,'1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','skill ALL_CATCRY, 1; bonus bUnbreakableShoes,0; autobonus3 \"{ }\",1000,7000,ALL_CATCRY,\"{ montransform 1505,420000; }\";','',''); +REPLACE INTO `item_db` VALUES ('19873','Costume_Carnival_Hat','Costume Carnival Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','505','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19874','Costume_Carnival_Circlet','Costume Carnival Circlet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','506','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19875','Costume_Love_Rabbit_Hood','Costume Love Rabbit Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','549','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19876','Costume_Rabbit_Ear_Hat','Costume Rabbit Ear Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','384','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19877','Costume_Eyes_Of_Darkness','Costume Eyes Of Darkness','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','467','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19878','Costume_Drooping_Bunny','Costume Drooping Bunny','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','249','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19879','Costume_Black_Bunny_Band','Costume Black Bunny Band','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','267','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19880','Costume_Golden_Tiara','Costume Golden Tiara','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','232','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19881','Costume_Pretty_Rabbit_Hood','Costume Pretty Rabbit Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1085','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19882','Costume_Flowerpot_Mask','Costume Flowerpot Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','1086','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19883','Costume_Piamette_Hood','Costume Piamette Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1087','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19884','Costume_Vanargand_Helm','Costume Vanargand Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','804','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19885','Costume_Blinker','Costume Blinker','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','82','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19886','Costume_Purple_Glasses','Costume Purple Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','26','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19887','Costume_Cyclops_Glasses','Costume Cyclops Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','23','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19888','Costume_Glasses','Costume Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','3','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19889','Costume_Small_Ribbon','Costume Small Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','169','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19890','Costume_Mage_Hat','Costume Mage Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','112','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19891','Costume_Magnolia_Hat','Costume Magnolia Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','373','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19892','Costume_Night_Sparrow_Hat','Costume Night Sparrow Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','913','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19893','Costume_Ordinary_Black_Magician_Hat','Costume Ordinary Black Magician Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','912','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19894','Costume_Shrine_Maiden_Hat','Costume Shrine Maiden Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','908','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19895','Costume_Magician\'s_Night_Cap','Costume Magician\'s Night Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','911','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19896','Costume_PRO_10th_Cap','Costume PRO 10th Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1094','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19897','Costume_RPC13_1ST_Wreath','Costume RPC13 1ST Wreath','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','261','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,3; bonus bMdef,3;','',''); +REPLACE INTO `item_db` VALUES ('19898','Costume_RPC13_2ND_Wreath','Costume RPC13 2ND Wreath','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','261','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,2; bonus bMdef,2;','',''); +REPLACE INTO `item_db` VALUES ('19899','Costume_RPC13_3RD_Wreath','Costume RPC13 3RD Wreath','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','261','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,1; bonus bMdef,1;','',''); +REPLACE INTO `item_db` VALUES ('19902','Costume_Cigarette','Costume Cigarette','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','54','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19903','Costume_Witch\'s_Pumpkin_Hat','Costume Witch\'s Pumpkin Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','1',NULL,'0','717','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19904','Costume_Skull_Cap','Costume Skull Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','713','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19905','Costume_Secret_Society_Hood','Costume Secret Society Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','806','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19906','Costume_Screw_stuck_in_head','Costume Screw stuck in head','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','696','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19907','Costume_Fascinating_Phantom_Mask','Costume Fascinating Phantom Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','710','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19908','Costume_Flag_Crown_Hat','Costume Flag Crown Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','219','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19909','Costume_White_Deviruchi_Hat','Costume White Deviruchi Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','272','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19910','Costume_Halloween_Hat','Costume Halloween Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1098','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19911','Costume_Triangle_Roof_Hat','Costume Triangle Roof Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1099','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19912','Costume_Cat_Eye','Costume Cat Eye','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1100','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19913','Costume_Poo_Poo_Hat','Costume Poo Poo Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','76','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19914','Costume_Tarlock\'s_Hat','Costume Tarlock\'s Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1101','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19917','Costume_Dark_Pumpkin_Hat','Costume Dark Pumpkin Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','1',NULL,'0','691','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19918','Costume_Lude_Mask','Costume Lude Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','1',NULL,'0','802','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19919','Costume_Quve_Mask','Costume Quve Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','1',NULL,'0','472','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19920','Costume_Evolved_Whisper_Mask','Costume Evolved Whisper Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','1',NULL,'0','458','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19922','Costume_Noah\'s_Hat','Costume Noah\'s Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','636','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19925','Costume_Monocle','Costume Monocle','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','23','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19928','Costume_Gothic_Heart_Wing','Costume Gothic Heart Wing','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1111','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19929','Costume_Classical_Ribbon','Costume Classical Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1112','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19930','Costume_Angel_Mini_Silk_Hat','Costume Angel Mini Silk Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1113','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19931','Costume_Lazy_Smokie','Costume Lazy Smokie','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','168','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19932','Costume_Model_Training_Hat','Costume Model Training Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','157','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19934','Costume_Flaming_Ten_Gallon_Hat','Costume Flaming Ten Gallon Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1075','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19935','Costume_Hunting_Cap_Of_Gust','Costume Hunting Cap Of Gust','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1076','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19936','Costume_Knit_Cap_Of_Water','Costume Knit Cap Of Water','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1077','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19938','Costume_Love_Bunny_Hood','Costume Love Bunny Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','549','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19939','Costume_Antlers','Costume Antlers','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','71','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19941','Costume_Ear_Muffs','Costume Ear Muffs','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','70','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19949','Costume_RWC2013_Japan_Hat','Costume RWC2013 Japan Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1136','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19952','Costume_Bubble_Gum_in_Mouth','Costume Bubble Gum in Mouth','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','572','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19953','Costume_Parade_Cap','Costume Parade Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','465','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19954','Costume_3D_Glasses','Costume 3D Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','661','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19955','Costume_Mini_Tree','Costume Mini Tree','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','727','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19956','Costume_Soldier_Hat','Costume Soldier Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','420','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19957','Costume_Scooter_Hat','Costume Scooter Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','588','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19958','Costume_Choir_Hat','Costume Choir Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1137','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19959','Costume_Drooping_Argiope','Costume Drooping Argiope','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1138','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19960','Costume_Chain_Puppet','Costume Chain Puppet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1139','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19961','Costume_Rune_Circlet','Costume Rune Circlet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','623','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19962','Costume_Mitra','Costume Mitra','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','624','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19963','Costume_Driver_Band_Red','Costume Driver Band Red','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','626','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19964','Costume_Driver_Band_Yellow','Costume Driver Band Yellow','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','637','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19965','Costume_Shadow_Handicraft','Costume Shadow Handicraft','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','627','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19966','Costume_Minstrel_Song\'s_Hat','Costume Minstrel Song\'s Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','628','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19967','Costume_Midas_Whisper','Costume Midas Whisper','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','629','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19968','Costume_Magic_Stone_Hat','Costume Magic Stone Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','630','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19969','Costume_Blazing_Soul','Costume Blazing Soul','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','631','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19970','Costume_Wind_Whisper','Costume Wind Whisper','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','633','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19971','Costume_Dying_Swan','Costume Dying Swan','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','635','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19972','Costume_Protect_Of_Crown','Costume Protect Of Crown','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1140','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19973','Costume_Circlet_Of_Bones','Costume Circlet Of Bones','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1141','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19974','Costume_Camouflage_Rabbit_Hood','Costume Camouflage Rabbit Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1142','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19976','Costume_Cat_Santa_Hat','Costume Cat Santa Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1144','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19977','Costume_Golden_Exclamation_Mark','Costume Golden Exclamation Mark','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1145','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19978','Costume_Silver_Exclamation_Mark','Costume Silver Exclamation Mark','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1146','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19979','Costume_Golden_Question_Mark','Costume Golden Question Mark','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1147','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19980','Costume_Silver_Question_Mark','Costume Silver Question Mark','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1148','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19982','Costume_Santa_Hat','Costume Santa Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','727','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19983','Costume_Flower_Hairpin','Costume Flower Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','145','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19984','Costume_Winter_Hat','Costume Winter Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','196','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19985','Costume_Aura_Quartz','Costume Aura Quartz','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','866','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19986','Costume_Lunatic_Hat','Costume Lunatic Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','521','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19987','Costume_Blue_Fur_Hat','Costume Blue Fur Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','280','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19988','Costume_Elder_Crown','Costume Elder Crown','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','933','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19989','Costume_Mouton_Life','Costume Mouton Life','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1156','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19990','Costume_Rabbit_Knit_Hat','Costume Rabbit Knit Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1157','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19991','Costume_Galanthus_Guard','Costume Galanthus Guard','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1158','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19992','Costume_Chilly_Breath','Costume Chilly Breath','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','885','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19994','Costume_saLUsalo_Hat','Costume saLUsalo Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1171','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19996','Costume_Horse_King','Costume Horse King','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','1189','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19997','Costume_Bomb_Hat','Costume Bomb Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1191','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19998','Costume_Dragon_Turtle_Hat','Costume Dragon Turtle Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1192','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('19999','Costume_Mouse_Hat1','Costume Mouse Hat1','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1193','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20000','Costume_Mouse_Hat2','Costume Mouse Hat2','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1194','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20001','Costume_Mouse_Hat3','Costume Mouse Hat3','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1195','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20002','Costume_Mouse_Hat4','Costume Mouse Hat4','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1196','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20003','Costume_Mouse_Hat5','Costume Mouse Hat5','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1197','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20004','Costume_Big_Golden_Bell','Costume Big Golden Bell','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','175','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20005','Costume_Sigrun_Wing','Costume Sigrun Wing','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','568','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20006','Costume_Dark_Knight_Mask','Costume Dark Knight Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','479','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20007','Costume_Horned_Hat','Costume Horned Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','322','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20008','Costume_Dragon_General_Helm','Costume Dragon General Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','729','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20009','Costume_Dragon_Skull_Hat','Costume Dragon Skull Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','319','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20010','Costume_Rainbow_Ears_Feather','Costume Rainbow Ears Feather','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1198','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20011','Costume_Lightning_Speed','Costume Lightning Speed','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1199','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20012','Costume_Double_Horn_Helm','Costume Double Horn Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1200','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20013','Costume_Chef_Hat','Costume Chef Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','111','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20014','Costume_Lincoln_Hat','Costume Lincoln Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1204','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20015','Costume_Lincoln_Beard','Costume Lincoln Beard','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1205','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20016','Costume_Cool_Dinner_Hat','Costume Cool Dinner Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1206','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20017','Costume_Marionette_Doll','Costume Marionette Doll','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','212','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20019','Costume_Artisant_Beret','Costume Artisant Beret','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1209','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20020','Costume_Zaha_Doll_Hat','Costume Zaha Doll Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','461','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20021','Costume_Heart_Ribbon_Hairband','Costume Heart Ribbon Hairband','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','708','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20022','Costume_Love_Fragment','Costume Love Fragment','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','734','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20023','Costume_Red_Beret','Costume Red Beret','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','559','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20024','Costume_Orange_Ribbon','Costume Orange Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','247','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20025','Costume_Cow_Hat1','Costume Cow Hat1','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1211','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20026','Costume_Cow_Hat2','Costume Cow Hat2','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1212','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20027','Costume_Cow_Hat3','Costume Cow Hat3','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1213','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20028','Costume_Cow_Hat4','Costume Cow Hat4','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1214','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20029','Costume_Donut_in_Mouth','Costume Donut in Mouth','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','569','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20030','Costume_Choco_Donut_in_Mouth','Costume Choco Donut in Mouth','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','653','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20031','Costume_Bunny_Headress','Costume Bunny Headress','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1215','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20032','Costume_Firinto_Scarf','Costume Firinto Scarf','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1216','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20033','Costume_Monk_Crown','Costume Monk Crown','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1217','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20034','Costume_Jack_Castle_Bat','Costume Jack Castle Bat','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1041','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20035','Costume_Miracle_Blue_Rose','Costume Miracle Blue Rose','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1064','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20036','Costume_Crown_of_Victory','Costume Crown of Victory','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','981','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20037','Costume_Owlduke_Silk_Hat','Costume Owlduke Silk Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','982','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20038','Costume_Alphonse_Helm','Costume Alphonse Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1214','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20039','Costume_Butterfly_Wing_Ears','Costume Butterfly Wing Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','695','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20040','Costume_Chung_Hairpin','Costume Chung Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','583','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20041','Costume_Rose_Headband','Costume Rose Headband','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','864','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20042','Costume_Hermos_Cap','Costume Hermos Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','478','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20043','Costume_Cherryblossom_in_Mouth','Costume Cherryblossom in Mouth','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','823','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20044','Costume_Carmen_Miranda\'s_Hat','Costume Carmen Miranda\'s Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','329','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20045','Costume_Samambaia','Costume Samambaia','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','508','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20046','Costume_Blue_Ribbon_Band','Costume Blue Ribbon Band','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1222','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20047','Costume_Prayer_Cherry_Blossom','Costume Prayer Cherry Blossom','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1223','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20048','Costume_Wind_Prairie','Costume Wind Prairie','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1224','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20049','Costume_Giant_Aid_Band','Costume Giant Aid Band','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','147','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20050','Costume_Ph.D_Hat','Costume Ph.D Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','98','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20053','Costume_WKing_Tiger_Doll_Hat','Costume WKing Tiger Doll Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','973','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20054','Costume_Pacifier','Costume Pacifier','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','191','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20055','Costume_Ghost_Bandana','Costume Ghost Bandana','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','61','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20056','Costume_Bride\'s_Corolla','Costume Bride\'s Corolla','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','437','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20057','Costume_Feather_Bonnet','Costume Feather Bonnet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','104','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20063','Costume_Yellow_Brain_Hat','Costume Yellow Brain Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1228','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20064','Costume_Blue_Brain_Hat','Costume Blue Brain Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1229','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20067','Costume_White_Rabbit_Headband','Costume White Rabbit Headband','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','719','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20068','Costume_Black_Rabbit_Headband','Costume Black Rabbit Headband','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','718','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20070','Costume_Alpaca_Hood','Costume Alpaca Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','1234','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20073','Costume_Hair_Band','Costume Hair Band','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','9','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20074','Costume_Biretta','Costume Biretta','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','11','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20084','Costume_Ceremonial_Hat','Costume Ceremonial Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','325','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20085','Costume_St_Patrick\'s_Hat','Costume St Patrick\'s Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','735','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20086','Costume_Dragon_Cintamani_Hat1','Costume Dragon Cintamani Hat1','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1245','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20087','Costume_Dragon_Cintamani_Hat2','Costume Dragon Cintamani Hat2','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1246','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20091','Costume_Smoking_Pipe','Costume Smoking Pipe','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','55','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20092','Costume_Sale_Banner','Costume Sale Banner','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','183','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20093','Costume_Wizard_Hat','Costume Wizard Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','36','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20094','Costume_Green_Ribbon','Costume Green Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','439','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20095','Costume_Red_Ribbon','Costume Red Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','440','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20096','Costume_Blue_Ribbonn','Costume Blue Ribbonn','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','441','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20097','Costume_White_Ribbon','Costume White Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','442','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20099','Costume_Ljosalfar','Costume Ljosalfar','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1239','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20100','Costume_Volume_Fhat','Costume Volume Fhat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1240','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20102','Costume_Horse_King_J','Costume Horse King_J','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','1189','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20103','Costume_Drooping_Panda','Costume Drooping Panda','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1029','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20104','Costume_Picky_Egg_Shell','Costume Picky Egg Shell','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1001','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20105','Costume_Fish_Head','Costume Fish Head','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','386','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20106','Costume_Classic_Hat','Costume Classic Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','475','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20107','Costume_Fish_in_mouth','Costume Fish in mouth','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','406','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20108','Costume_Blind_Glasses','Costume Blind Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','813','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20109','Costume_Jolly_Roger_Hat','Costume Jolly Roger Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','962','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20110','Costume_Coiledup_Snake_Hat1','Costume Coiledup Snake Hat1','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1258','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20111','Costume_Coiledup_Snake_Hat2','Costume Coiledup Snake Hat2','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1259','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20112','Costume_Aqua_Ten_Gallon_Hat','Costume Aqua Ten Gallon Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1256','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20113','Costume_Star_Reading_Hat','Costume Star Reading Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1253','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20114','Costume_Funeral_Hat','Costume Funeral Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','77','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20115','Costume_Under_Rim_Glasses','Costume Under Rim Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1255','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20116','Costume_Mermaid_Headphones','Costume Mermaid Headphones','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1254','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20117','Costume_Raspberry_Mousse_Hat','Costume Raspberry Mousse Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1257','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20118','Costume_Cake_Hat','Costume Cake Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','109','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20119','Costume_Beanie','Costume Beanie','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','160','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20120','Costume_Antenna','Costume Antenna','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','97','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20121','Costume_Water_Lily_Hat','Costume Water Lily Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','324','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20122','Costume_Happy_Summer_Ribbon','Costume Happy Summer Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1260','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20123','Costume_Eagle_Eyes','Costume Eagle Eyes','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','63','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20124','Costume_Masquerade','Costume Masquerade','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','78','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20125','Costume_Mini_Glasses','Costume Mini Glasses','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','47','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20126','Costume_Odium_Thanatos_Mask','Costume Odium Thanatos Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','667','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20127','Costume_Abysmal_Knight_Helm','Costume Abysmal Knight Helm','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','371','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20128','Costume_Remover_Hat','Costume Remover Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','655','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20129','Costume_Poporing_Cap','Costume Poporing Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','361','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20130','Costume_Whisper_Tall_Hat','Costume Whisper Tall Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1265','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20131','Costume_Clock_Tower_Manager_Incom','Costume Clock Tower Manager Incom','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1266','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20132','Costume_Subject_Aura','Costume Subject Aura','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1267','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20133','Costume_Poring_Mascot','Costume Poring Mascot','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1268','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20134','Costume_White_Helm_Of_Abyss','Costume White Helm Of Abyss','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1269','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20135','Costume_12th_Anniversary_Crown','Costume 12th Anniversary Crown','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1117','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20136','Costume_12th_Anniversary_Fairy_Ears','Costume 12th Anniversary Fairy Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','875','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20139','Costume_Mini_Horse_Hairpin1','Costume Mini Horse Hairpin1','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1271','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20140','Costume_Mini_Horse_Hairpin2','Costume Mini Horse Hairpin2','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1272','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20145','Costume_Robo_Eye','Costume Robo Eye','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','345','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20146','Costume_Angel_Of_Ghost','Costume Angel Of Ghost','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','394','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20147','Costume_Pigeon_On_Shoulder','Costume Pigeon On Shoulder','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1034','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20152','Costume_Straw_Rice_Bag','Costume Straw Rice Bag','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','1273','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20153','Costume_Monochrome_Cap','Costume Monochrome Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1274','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20154','Costume_Falling_Maple_leafs','Costume Falling Maple leafs','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1275','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20155','Costume_Lady_Feather_Hat','Costume Lady Feather Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1276','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20156','Costume_Fan_in_Mouth','Costume Fan in Mouth','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','857','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20157','Costume_Blue_Fish','Costume Blue Fish','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','149','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20158','Costume_Circlet','Costume Circlet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','18','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20159','Costume_Blue_Hairband','Costume Blue Hairband','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','136','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20160','Costume_Magnolia_Hat_J','Costume Magnolia Hat_J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','373','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20161','Costume_Army_Cap','Costume Army Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','48','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20162','Costume_Lamb_Hat1','Costume Lamb Hat1','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1277','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20163','Costume_Lamb_Hat2','Costume Lamb Hat2','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1278','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20164','Costume_Duneyrr_Hat','Costume Duneyrr Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','639','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20165','Costume_Tendrilion_Hat','Costume Tendrilion Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','658','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20166','Costume_Hockey_Mask','Costume Hockey Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','336','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20167','Costume_Deviruchi_Headphone','Costume Deviruchi Headphone','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','805','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20168','Costume_Skull_Hood','Costume Skull Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','598','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20169','Costume_Long_Tongue','Costume Long Tongue','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','773','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20170','Costume_Brown_Deviruchi_Cap','Costume Brown Deviruchi Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','273','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20171','Costume_Sepia_Cap','Costume Sepia Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1280','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20172','Costume_Pumpkin_Hat','Costume Pumpkin Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1281','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20173','Costume_Lude_Hood','Costume Lude Hood','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1282','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20174','Costume_Orange_Halloween_Hat','Costume Orange Halloween Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1283','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20175','Costume_Diabolic_Headphone','Costume Diabolic Headphone','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1284','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20176','Costume_Happy_Pierrot_Mask','Costume Happy Pierrot Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','1288','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20177','Costume_Drooping_Dorasuke','Costume Drooping Dorasuke','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1290','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20178','Costume_Puppy_Love','Costume Puppy Love','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','94','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20179','Costume_Monkey_Fur_Hat','Costume Monkey Fur Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','858','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20180','Costume_Western_Grace','Costume Western Grace','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','32','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20181','Costume_Mystic_Rose','Costume Mystic Rose','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','198','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20182','Costume_Rainbow_Eggshell','Costume Rainbow Eggshell','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','124','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('20183','C_There_Is_Something','C There Is Something','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','1',NULL,'0','1091','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20184','Costume_Party_Hat','Costume Party Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','144','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20186','Costume_Magni\'s_Cap','Costume Magni\'s Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','250','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20190','Costume_Chick_Hat_J','Costume Chick Hat J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','432','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20191','Costume_Black_Cat_Ears_Beret','Costume Black Cat Ears Beret','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1071','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20192','Costume_Green_Foxtail','Costume Green Foxtail','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1058','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20193','Costume_Puppy_Grass','Costume Puppy Grass','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','711','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20194','Costume_Lion_Mask','Costume Lion Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','202','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20195','Costume_Scratching_Cat','Costume Scratching Cat','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','1292','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20196','Costume_Leopard_Ear_Hat','Costume Leopard Ear Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1293','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20197','Costume_Amistr_Beret','Costume Amistr Beret','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1294','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20198','Costume_Misty_Ears','Costume Misty Ears','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1295','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20199','Costume_Evil_Marching_Hat','Costume Evil Marching Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','687','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20200','Costume_Rabbit_Headdress','Costume Rabbit Headdress','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1095','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20201','Costume_Banshee_Master_Kiss','Costume Banshee Master Kiss','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','959','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20202','Costume_Deviruchi_Balloon','Costume Deviruchi Balloon','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1082','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20203','Costume_Bandana','Costume Bandana','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','6','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20204','Costume_Hunting_Cap','Costume Hunting Cap','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','389','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20205','Costume_Fancy_Flower','Costume Fancy Flower','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','4','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20206','Costume_Chicken_Hat1','Costume Chicken Hat1','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','1296','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20207','Costume_Striped_Hairband','Costume Striped Hairband','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','133','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20208','Costume_Necktie','Costume Necktie','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','443','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20209','Costume_Mermaid_Bubbles','Costume Mermaid Bubbles','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1299','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20210','Costume_Chicken_Hat2','Costume Chicken Hat2','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','1297','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20211','Costume_Chicken_Hat3','Costume Chicken Hat3','5','0','0','0','0','0','0','0','0','4294967295','63','2','7168','0','0',NULL,'1','1298','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20212','Costume_Loki_&_Nidhoggur_dolls','Costume Loki & Nidhoggur dolls','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1304','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20213','Costume_Robot_Eyes','Costume Robot Eyes','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','345','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20214','Costume_Evil_Marcher_Hat_J','Costume Evil Marcher Hat J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1002','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20215','Costume_Black_Devil_Mask','Costume Black Devil Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','760','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20216','Costume_Rideword_Hat','Costume Rideword Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','890','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20217','Costume_Arabian_Veil','Costume Arabian Veil','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1300','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20218','Costume_Spell_Circuit','Costume Spell Circuit','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1301','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20219','Costume_Angel_Marcher_Hat','Costume Angel Marcher Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1302','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20220','Costume_Dark_Night_Veil','Costume Dark Night Veil','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1303','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20221','Costume_Ifrit_Eyes','Costume Ifrit Eyes','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','886','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20222','Costume_Blue_Santa_Hat','Costume Blue Santa Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','395','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20223','Costume_Romantic_Leaf','Costume Romantic Leaf','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','57','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20224','Costume_Red_Tailed_Ribbon','Costume Red Tailed Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','167','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20225','Costume_Pumpkin_Head','Costume Pumpkin Head','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','206','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20226','Costume_Red_Comb','Costume Red Comb','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','445','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20227','Costume_Husky_Hat','Costume Husky Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1016','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20228','Costume_Piggie_Bank_J','Costume Piggie Bank J','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','603','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20230','Costume_Bankruptcy_Mask','Costume Bankruptcy Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','6144','0','0',NULL,'1','936','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20231','Costume_Snowman_Hat','Costume Snowman Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','616','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20232','Costume_Celines_Ribbon','Costume Celines Ribbon','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','967','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20233','Costume_Golden_Statue_of_Baby_Angel','Costume Golden Statue of Baby Angel','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','646','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20234','Costume_Baphomet_Hat','Costume Baphomet Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1311','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20239','Costume_Large_Ribbon_Muffler','Costume Large Ribbon Muffler','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1312','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20241','Costume_Eclipse_Hat','Costume Eclipse Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','922','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20242','Costume_Snownow_Hat','Costume Snownow Hat','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1313','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20243','Costume_Choco_Mint_Bonnet','Costume Choco Mint Bonnet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1314','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20244','Costume_Zealotus_Mask','Costume Zealotus Mask','5','0','0','0','0','0','0','0','0','4294967295','63','2','3072','0','0',NULL,'1','200','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20245','Costume_Cat_Paw_Hairpin','Costume Cat Paw Hairpin','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','447','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20246','Costume_Decoration_of_Time','Costume Decoration of Time','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1309','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20247','Costume_Black_Hand_of_Fate','Costume Black Hand of Fate','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1310','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20248','Costume_Black_Strong_Hair','Costume Black Hand of Fate','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1315','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20249','Costume_Red_Strong_Hair','Costume Red Hand of Fate','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1316','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20250','Costume_White_Strong_Hair','Costume White Hand of Fate','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1317','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20251','Costume_Rose_Cascade','Costume Rose Cascade','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','920','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20252','Costume_Mage_Decoration','Costume Mage Decoration','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1150','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20253','Costume_Drooping_Alicel','Costume Drooping Alicel','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','784','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20254','Costume_Yellow_Ribbonn','Costume Yellow Ribbonn','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','243','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20255','Costume_Love_Cheeks','Costume Love Cheeks','5','0','0','0','0','0','0','0','0','4294967295','63','2','2048','0','0',NULL,'1','1318','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20256','Costume_Honey_Pancake','Costume Honey Pancake','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1319','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20257','Costume_Black_Rabbit_Bonnet','Costume Black Rabbit Bonnet','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1320','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20258','Costume_Blue_Headdress','Costume Blue Headdress','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','1321','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20259','Costume_Pink_Clover','Costume Pink Clover','5','0','0','0','0','0','0','0','0','4294967295','63','2','4096','0','0',NULL,'1','1322','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20271','Costume_Sunflower','Costume Sunflower','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','37','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20272','Costume_Unicorn_Horn','Costume Unicorn Horn','5','0','0','0','0','0','0','0','0','4294967295','63','2','1024','0','0',NULL,'1','42','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('20500','T_Archangel_Wing','T Archangel\'s Wings','5','0','0','100','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'0','1','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0;','',''); REPLACE INTO `item_db` VALUES ('20600','Fantastic_Aura','Fantastic Aura','5','0','0','0','0','0','0','0','0','4294967295','63','2','16384','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0;','',''); REPLACE INTO `item_db` VALUES ('20700','Egir_Manteau','Aegir Mantle','5','200000','100000','300','0','0','10','0','1','4294967295','63','2','4','0','110',NULL,'1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableGarment,0; bonus bUnbreakableHelm,0;','',''); +REPLACE INTO `item_db` VALUES ('20706','Amistr_Bag','Amistr Bag','5','0','0','500','0','0','18','0','0','4294967295','63','2','4','0','0',NULL,'1','4','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,1; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Wind,5; bonus2 bSubEle,Ele_Poison,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5; bonus2 bSubEle,Ele_Ghost,5; bonus2 bSubEle,Ele_Undead,5;','',''); REPLACE INTO `item_db` VALUES ('20707','Kirin_Wing','Kirin Wing','5','20','10','0','0','0','18','0','0','4294967295','63','2','4','0','0',NULL,'1','6','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1; bonus bInt,1; bonus bVit,1; bonus bDex,1; bonus bAgi,1; bonus bLuk,1;','',''); REPLACE INTO `item_db` VALUES ('20711','Manteau_Of_Diego','Manteau Of Diego','5','20','10','600','0','0','15','0','1','4294967295','63','2','4','0','0',NULL,'1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bInt,1; bonus bDex,1; bonus bMdef,3;','',''); -REPLACE INTO `item_db` VALUES ('20724','Love_Dad_Wings_2012','Love Dad Wings 2012','5','0','0','100','0','0','15','0','1','4294967295','63','2','4','0','0',NULL,'1','5','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20724','Love_Dad_Wing_2012','Love Dad Wing 2012','5','0','0','100','0','0','15','0','1','4294967295','63','2','4','0','0',NULL,'1','5','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','if(readparam(bStr)>=90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bStr,getrefine(); } if(readparam(bAgi)>=90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bAgi,getrefine(); } if(readparam(bVit)>=90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bVit,getrefine(); } if(readparam(bInt)>=90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bInt,getrefine(); } if(readparam(bDex)>=90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bDex,getrefine(); } if(readparam(bLuk)>=90) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bLuk,getrefine(); }','',''); +REPLACE INTO `item_db` VALUES ('20727','Costume_Brilliant_Golden_Wings','Brilliant Golden Wings','5','0','0','0','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'1','5','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20737','Costume_Kirin_Wings','Costume Kirin Wings','5','0','0','0','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'1','6','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20746','Costume_Rudra_Wings','Costume Rudra Wings','5','0','0','0','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'1','8','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20757','Heavenly_Wings1','Heavenly Wings1','5','0','0','0','0','0','10','0','1','4294967295','63','2','4','0','0',NULL,'1','9','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,3; skill AL_INCAGI,3;','',''); +REPLACE INTO `item_db` VALUES ('20758','Heavenly_Wings2','Heavenly Wings2','5','0','0','0','0','0','10','0','1','4294967295','63','2','4','0','0',NULL,'1','9','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,3; skill AL_INCAGI,3;','',''); +REPLACE INTO `item_db` VALUES ('20761','Costume_Wing_of_Happiness','Costume Wing of Happiness','5','0','0','0','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'1','9','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20763','Costume_Amistr_Bag','Costume Amistr Bag','5','0','0','0','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'1','4','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20764','Costume_Fallen_Angel_Wing','Costume Fallen Angel Wing','5','0','0','0','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'1','3','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20765','Costume_Archangel_Wing','Costume Archangel Wing','5','0','0','0','0','0','0','0','0','4294967295','63','2','8192','0','0',NULL,'1','1','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('20768','Arch_Angel_Wing','Arch Angel Wing','5','0','0','200','0','0','18','0','0','4294967295','63','2','4','0','0',NULL,'1','10','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('21000','Upg_Twohand_Sword','Upgrade Two-Hand Sword','4','20','10','1500','100','0','0','1','1','16514','63','2','34','3','0',NULL,'1','3','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk,(getrefine()*12); bonus bMatk,(getrefine()*5); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10);','',''); REPLACE INTO `item_db` VALUES ('21001','Velum_Claymore','Vellum Claymore','4','20','10','3500','260','0','0','2','0','16514','63','2','34','4','95',NULL,'1','3','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddRace,RC_DemiHuman,80; bonus2 bIgnoreDefRate,RC_DemiHuman,30; if(getrefine()>=6) { bonus2 bAddRace,RC_DemiHuman,40; } if(getrefine()>=9) { autobonus2 \"{ bonus bShortWeaponDamageReturn,20; bonus bMagicDamageReturn,20; }\",200,1000,BF_WEAPON,\"{ specialeffect2 EF_REFLECTSHIELD; }\"; }','',''); REPLACE INTO `item_db` VALUES ('21002','Velum_Katzbalger','Vellum Katzbalger','4','20','10','2500','100','0','0','1','0','16514','63','2','34','4','95',NULL,'1','3','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus3 bSPVanishRate,10000,8,BF_NORMAL;','',''); REPLACE INTO `item_db` VALUES ('21003','Muramasa_','Muramasa','4','20','10','1000','155','0','0','1','2','16514','63','2','34','4','48',NULL,'1','3','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('21004','Alca_Bringer_','Alca Bringer','4','20','10','3400','280','0','0','2','2','128','56','2','34','3','100',NULL,'1','3','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('21005','Metal_Two_Hand_Sword','Metal Two-Handed Sword','4','20','10','0','95','0','0','1','1','16514','63','2','34','3','0',NULL,'1','3','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); +REPLACE INTO `item_db` VALUES ('22067','Witch_Shoes','Witch Shoes','5','3500','1750','400','0','0','10','0','0','2147483646','63','2','64','0','0',NULL,'1','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','skill ALL_CATCRY, 1; bonus bUnbreakableShoes,0; autobonus3 \"{ }\",1000,7000,ALL_CATCRY,\"{ montransform 1505,420000; }\";','',''); REPLACE INTO `item_db` VALUES ('22514','Candy_Holder','Candy Holder','11','20','10','10','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','',''); REPLACE INTO `item_db` VALUES ('22540','Runstone_Lux','Lux Anima Rune','11','2','1','100','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','60000','0',NULL,'0',NULL,'20','1','0','itemskill RK_LUXANIMA,1;','',''); REPLACE INTO `item_db` VALUES ('22669','HALLOWEEN_G_BOX','Halloween Box','2','0','0','20','0','0','0','0','0','4294967295','63','2','0','0','0',NULL,'0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','getrandgroupitem 22669,1;','',''); diff --git a/src/map/atcommand.c b/src/map/atcommand.c index a6e4d7265..560848c5b 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -74,13 +74,34 @@ struct atcmd_binding_data* get_atcommandbind_byname(const char* name) { return ( i < atcommand->binding_count ) ? atcommand->binding[i] : NULL; } +const char* atcommand_msgsd(struct map_session_data *sd, int msg_number) { + if( !(msg_number >= 0 && msg_number < MAX_MSG) ) + return "??"; + if( !sd || sd->lang_id >= atcommand->max_message_table || !atcommand->msg_table[sd->lang_id][msg_number] ) + return atcommand->msg_table[0][msg_number]; + return atcommand->msg_table[sd->lang_id][msg_number]; +} + +const char* atcommand_msgfd(int fd, int msg_number) { + struct map_session_data *sd = session_isValid(fd) ? session[fd]->session_data : NULL; + if( !(msg_number >= 0 && msg_number < MAX_MSG) ) + return "??"; + if( !sd || sd->lang_id >= atcommand->max_message_table || !atcommand->msg_table[sd->lang_id][msg_number] ) + return atcommand->msg_table[0][msg_number]; + return atcommand->msg_table[sd->lang_id][msg_number]; +} + //----------------------------------------------------------- // Return the message string of the specified number by [Yor] //----------------------------------------------------------- const char* atcommand_msg(int msg_number) { - if (msg_number >= 0 && msg_number < MAX_MSG && - atcommand->msg_table[msg_number] != NULL && atcommand->msg_table[msg_number][0] != '\0') - return atcommand->msg_table[msg_number]; + if (msg_number >= 0 && msg_number < MAX_MSG) { + if(atcommand->msg_table[map->default_lang_id][msg_number] != NULL && atcommand->msg_table[map->default_lang_id][msg_number][0] != '\0') + return atcommand->msg_table[map->default_lang_id][msg_number]; + + if(atcommand->msg_table[0][msg_number] != NULL && atcommand->msg_table[0][msg_number][0] != '\0') + return atcommand->msg_table[0][msg_number]; + } return "??"; } @@ -102,9 +123,9 @@ bool msg_config_read(const char *cfg_name, bool allow_override) { ShowError("Messages file not found: %s\n", cfg_name); return false; } - - if ((--called) == 0) - memset(atcommand->msg_table, 0, sizeof(atcommand->msg_table[0]) * MAX_MSG); + + if( !atcommand->max_message_table ) + atcommand->expand_message_table(); while(fgets(line, sizeof(line), fp)) { if (line[0] == '/' && line[1] == '/') @@ -117,22 +138,37 @@ bool msg_config_read(const char *cfg_name, bool allow_override) { } else { msg_number = atoi(w1); if (msg_number >= 0 && msg_number < MAX_MSG) { - if (atcommand->msg_table[msg_number] != NULL) { + if (atcommand->msg_table[0][msg_number] != NULL) { if (!allow_override) { ShowError("Duplicate message: ID '%d' was already used for '%s'. Message '%s' will be ignored.\n", - msg_number, w2, atcommand->msg_table[msg_number]); + msg_number, w2, atcommand->msg_table[0][msg_number]); continue; } - aFree(atcommand->msg_table[msg_number]); + aFree(atcommand->msg_table[0][msg_number]); } /* this could easily become consecutive memory like get_str() and save the malloc overhead for over 1k calls [Ind] */ - atcommand->msg_table[msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char)); - strcpy(atcommand->msg_table[msg_number],w2); + atcommand->msg_table[0][msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char)); + strcpy(atcommand->msg_table[0][msg_number],w2); } } } fclose(fp); + + if( ++called == 1 ) { //Original + if( script->lang_export_fp ) { + int i; + for(i = 0; i < MAX_MSG;i++) { + if( atcommand->msg_table[0][i] != NULL ) { + fprintf(script->lang_export_fp, "msgctxt \"messages.conf\"\n" + "msgid \"%s\"\n" + "msgstr \"\"\n", + atcommand->msg_table[0][i] + ); + } + } + } + } return true; } @@ -140,11 +176,19 @@ bool msg_config_read(const char *cfg_name, bool allow_override) { /*========================================== * Cleanup Message Data *------------------------------------------*/ -void do_final_msg(void) -{ - int i; - for (i = 0; i < MAX_MSG; i++) +void do_final_msg(void) { + int i, j; + + for(i = 0; i < atcommand->max_message_table; i++) { + for (j = 0; j < MAX_MSG; j++) { + if( atcommand->msg_table[i][j] ) + aFree(atcommand->msg_table[i][j]); + } aFree(atcommand->msg_table[i]); + } + + if( atcommand->msg_table ) + aFree(atcommand->msg_table); } /** @@ -168,10 +212,10 @@ ACMD(send) if(!message || !*message || !((sscanf(message, "len %x", &type)==1 && (len=1)) || sscanf(message, "%x", &type)==1) ) { - clif->message(fd, msg_txt(900)); // Usage: - clif->message(fd, msg_txt(901)); // @send len <packet hex number> - clif->message(fd, msg_txt(902)); // @send <packet hex number> {<value>}* - clif->message(fd, msg_txt(903)); // Value: <type=B(default),W,L><number> or S<length>"<string>" + clif->message(fd, msg_fd(fd,900)); // Usage: + clif->message(fd, msg_fd(fd,901)); // @send len <packet hex number> + clif->message(fd, msg_fd(fd,902)); // @send <packet hex number> {<value>}* + clif->message(fd, msg_fd(fd,903)); // Value: <type=B(default),W,L><number> or S<length>"<string>" return false; } @@ -204,7 +248,7 @@ ACMD(send) int off = 2; if (len) { // show packet length - sprintf(atcmd_output, msg_txt(904), type, packet_db[type].len); // Packet 0x%x length: %d + sprintf(atcmd_output, msg_fd(fd,904), type, packet_db[type].len); // Packet 0x%x length: %d clif->message(fd, atcmd_output); return true; } @@ -212,7 +256,7 @@ ACMD(send) len=packet_db[type].len; if (len == 0) { // unknown packet - ERROR - sprintf(atcmd_output, msg_txt(905), type); // Unknown packet: 0x%x + sprintf(atcmd_output, msg_fd(fd,905), type); // Unknown packet: 0x%x clif->message(fd, atcmd_output); return false; } else if (len == -1) { @@ -261,7 +305,7 @@ ACMD(send) while(*message != '"') {// find start of string if(*message == 0 || ISSPACE(*message)){ - PARSE_ERROR(msg_txt(906),message); // Not a string: + PARSE_ERROR(msg_fd(fd,906),message); // Not a string: return false; } ++message; @@ -291,7 +335,7 @@ ACMD(send) ++message; CHECK_EOS(message); if(!ISXDIGIT(*message)){ - PARSE_ERROR(msg_txt(907),message); // Not a hexadecimal digit: + PARSE_ERROR(msg_fd(fd,907),message); // Not a hexadecimal digit: return false; } num=(ISDIGIT(*message)?*message-'0':TOLOWER(*message)-'a'+10); @@ -354,7 +398,7 @@ ACMD(send) } } else {// unknown - PARSE_ERROR(msg_txt(908),message); // Unknown type of value in: + PARSE_ERROR(msg_fd(fd,908),message); // Unknown type of value in: return false; } SKIP_VALUE(message); @@ -369,10 +413,10 @@ ACMD(send) WFIFOSET(sd->fd,len); } } else { - clif->message(fd, msg_txt(259)); // Invalid packet + clif->message(fd, msg_fd(fd,259)); // Invalid packet return false; } - sprintf (atcmd_output, msg_txt(258), type, type); // Sent packet 0x%x (%d) + sprintf (atcmd_output, msg_fd(fd,258), type, type); // Sent packet 0x%x (%d) clif->message(fd, atcmd_output); return true; #undef PARSE_ERROR @@ -395,7 +439,7 @@ ACMD(mapmove) { if (!message || !*message || (sscanf(message, "%15s %hd %hd", map_name, &x, &y) < 3 && sscanf(message, "%15[^,],%hd,%hd", map_name, &x, &y) < 1)) { - clif->message(fd, msg_txt(909)); // Please enter a map (usage: @warp/@rura/@mapmove <mapname> <x> <y>). + clif->message(fd, msg_fd(fd,909)); // Please enter a map (usage: @warp/@rura/@mapmove <mapname> <x> <y>). return false; } @@ -404,35 +448,35 @@ ACMD(mapmove) { m = map->mapindex2mapid(map_index); if (!map_index || m < 0) { // m < 0 means on different server or that map is disabled! [Kevin] - clif->message(fd, msg_txt(1)); // Map not found. + clif->message(fd, msg_fd(fd,1)); // Map not found. return false; } if( sd->bl.m == m && sd->bl.x == x && sd->bl.y == y ) { - clif->message(fd, msg_txt(253)); // You already are at your destination! + clif->message(fd, msg_fd(fd,253)); // You already are at your destination! return false; } if ((x || y) && map->getcell(m, x, y, CELL_CHKNOPASS) && pc_get_group_level(sd) < battle_config.gm_ignore_warpable_area) { //This is to prevent the pc->setpos call from printing an error. - clif->message(fd, msg_txt(2)); + clif->message(fd, msg_fd(fd,2)); if (!map->search_freecell(NULL, m, &x, &y, 10, 10, 1)) x = y = 0; //Invalid cell, use random spot. } if (map->list[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(247)); + clif->message(fd, msg_fd(fd,247)); return false; } if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(248)); + clif->message(fd, msg_fd(fd,248)); return false; } if (pc->setpos(sd, map_index, x, y, CLR_TELEPORT) != 0) { - clif->message(fd, msg_txt(1)); // Map not found. + clif->message(fd, msg_fd(fd,1)); // Map not found. return false; } - clif->message(fd, msg_txt(0)); // Warped. + clif->message(fd, msg_fd(fd,0)); // Warped. return true; } @@ -445,7 +489,7 @@ ACMD(where) { memset(atcmd_player_name, '\0', sizeof atcmd_player_name); if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { - clif->message(fd, msg_txt(910)); // Please enter a player name (usage: @where <char name>). + clif->message(fd, msg_fd(fd,910)); // Please enter a player name (usage: @where <char name>). return false; } @@ -454,7 +498,7 @@ ACMD(where) { strncmp(pl_sd->status.name, atcmd_player_name, NAME_LENGTH) != 0 || (pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) && pc_get_group_level(pl_sd) > pc_get_group_level(sd) && !pc_has_permission(sd, PC_PERM_WHO_DISPLAY_AID)) ) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -471,37 +515,37 @@ ACMD(jumpto) { struct map_session_data *pl_sd = NULL; if (!message || !*message) { - clif->message(fd, msg_txt(911)); // Please enter a player name (usage: @jumpto/@warpto/@goto <char name/ID>). + clif->message(fd, msg_fd(fd,911)); // Please enter a player name (usage: @jumpto/@warpto/@goto <char name/ID>). return false; } if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map. + clif->message(fd, msg_fd(fd,248)); // You are not authorized to warp from your current map. return false; } if( pc_isdead(sd) ) { - clif->message(fd, msg_txt(864)); // "You cannot use this command when dead." + clif->message(fd, msg_fd(fd,864)); // "You cannot use this command when dead." return false; } if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if (pl_sd->bl.m >= 0 && map->list[pl_sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(247)); // You are not authorized to warp to this map. + clif->message(fd, msg_fd(fd,247)); // You are not authorized to warp to this map. return false; } if( pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y ) { - clif->message(fd, msg_txt(253)); // You already are at your destination! + clif->message(fd, msg_fd(fd,253)); // You already are at your destination! return false; } pc->setpos(sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT); - sprintf(atcmd_output, msg_txt(4), pl_sd->status.name); // Jumped to %s + sprintf(atcmd_output, msg_fd(fd,4), pl_sd->status.name); // Jumped to %s clif->message(fd, atcmd_output); return true; @@ -519,29 +563,29 @@ ACMD(jump) sscanf(message, "%hd %hd", &x, &y); if (map->list[sd->bl.m].flag.noteleport && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map. + clif->message(fd, msg_fd(fd,248)); // You are not authorized to warp from your current map. return false; } if( pc_isdead(sd) ) { - clif->message(fd, msg_txt(864)); // "You cannot use this command when dead." + clif->message(fd, msg_fd(fd,864)); // "You cannot use this command when dead." return false; } if ((x || y) && map->getcell(sd->bl.m, x, y, CELL_CHKNOPASS)) { //This is to prevent the pc->setpos call from printing an error. - clif->message(fd, msg_txt(2)); + clif->message(fd, msg_fd(fd,2)); if (!map->search_freecell(NULL, sd->bl.m, &x, &y, 10, 10, 1)) x = y = 0; //Invalid cell, use random spot. } if( x && y && sd->bl.x == x && sd->bl.y == y ) { - clif->message(fd, msg_txt(253)); // You already are at your destination! + clif->message(fd, msg_fd(fd,253)); // You already are at your destination! return false; } pc->setpos(sd, sd->mapindex, x, y, CLR_TELEPORT); - sprintf(atcmd_output, msg_txt(5), sd->bl.x, sd->bl.y); // Jumped to %d %d + sprintf(atcmd_output, msg_fd(fd,5), sd->bl.x, sd->bl.y); // Jumped to %d %d clif->message(fd, atcmd_output); return true; } @@ -589,33 +633,33 @@ ACMD(who) { continue; switch (display_type) { case 2: { - StrBuf->Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s " + StrBuf->Printf(&buf, msg_fd(fd,343), pl_sd->status.name); // "Name: %s " if (pc_get_group_id(pl_sd) > 0) // Player title, if exists - StrBuf->Printf(&buf, msg_txt(344), pcg->get_name(pl_sd->group)); // "(%s) " - StrBuf->Printf(&buf, msg_txt(347), pl_sd->status.base_level, pl_sd->status.job_level, + StrBuf->Printf(&buf, msg_fd(fd,344), pcg->get_name(pl_sd->group)); // "(%s) " + StrBuf->Printf(&buf, msg_fd(fd,347), pl_sd->status.base_level, pl_sd->status.job_level, pc->job_name(pl_sd->status.class_)); // "| Lv:%d/%d | Job: %s" break; } case 3: { if (pc_has_permission(sd, PC_PERM_WHO_DISPLAY_AID)) - StrBuf->Printf(&buf, msg_txt(912), pl_sd->status.char_id, pl_sd->status.account_id); // "(CID:%d/AID:%d) " - StrBuf->Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s " + StrBuf->Printf(&buf, msg_fd(fd,912), pl_sd->status.char_id, pl_sd->status.account_id); // "(CID:%d/AID:%d) " + StrBuf->Printf(&buf, msg_fd(fd,343), pl_sd->status.name); // "Name: %s " if (pc_get_group_id(pl_sd) > 0) // Player title, if exists - StrBuf->Printf(&buf, msg_txt(344), pcg->get_name(pl_sd->group)); // "(%s) " - StrBuf->Printf(&buf, msg_txt(348), mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y); // "| Location: %s %d %d" + StrBuf->Printf(&buf, msg_fd(fd,344), pcg->get_name(pl_sd->group)); // "(%s) " + StrBuf->Printf(&buf, msg_fd(fd,348), mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y); // "| Location: %s %d %d" break; } default: { struct party_data *p = party->search(pl_sd->status.party_id); struct guild *g = pl_sd->guild; - StrBuf->Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s " + StrBuf->Printf(&buf, msg_fd(fd,343), pl_sd->status.name); // "Name: %s " if (pc_get_group_id(pl_sd) > 0) // Player title, if exists - StrBuf->Printf(&buf, msg_txt(344), pcg->get_name(pl_sd->group)); // "(%s) " + StrBuf->Printf(&buf, msg_fd(fd,344), pcg->get_name(pl_sd->group)); // "(%s) " if (p != NULL) - StrBuf->Printf(&buf, msg_txt(345), p->party.name); // " | Party: '%s'" + StrBuf->Printf(&buf, msg_fd(fd,345), p->party.name); // " | Party: '%s'" if (g != NULL) - StrBuf->Printf(&buf, msg_txt(346), g->name); // " | Guild: '%s'" + StrBuf->Printf(&buf, msg_fd(fd,346), g->name); // " | Guild: '%s'" break; } } @@ -628,18 +672,18 @@ ACMD(who) { if (map_id < 0) { if (count == 0) - StrBuf->AppendStr(&buf, msg_txt(28)); // No player found. + StrBuf->AppendStr(&buf, msg_fd(fd,28)); // No player found. else if (count == 1) - StrBuf->AppendStr(&buf, msg_txt(29)); // 1 player found. + StrBuf->AppendStr(&buf, msg_fd(fd,29)); // 1 player found. else - StrBuf->Printf(&buf, msg_txt(30), count); // %d players found. + StrBuf->Printf(&buf, msg_fd(fd,30), count); // %d players found. } else { if (count == 0) - StrBuf->Printf(&buf, msg_txt(54), map->list[map_id].name); // No player found in map '%s'. + StrBuf->Printf(&buf, msg_fd(fd,54), map->list[map_id].name); // No player found in map '%s'. else if (count == 1) - StrBuf->Printf(&buf, msg_txt(55), map->list[map_id].name); // 1 player found in map '%s'. + StrBuf->Printf(&buf, msg_fd(fd,55), map->list[map_id].name); // 1 player found in map '%s'. else - StrBuf->Printf(&buf, msg_txt(56), count, map->list[map_id].name); // %d players found in map '%s'. + StrBuf->Printf(&buf, msg_fd(fd,56), count, map->list[map_id].name); // %d players found in map '%s'. } clif->message(fd, StrBuf->Value(&buf)); StrBuf->Destroy(&buf); @@ -689,18 +733,18 @@ ACMD(whogm) if (pl_level > level) { if (pc_isinvisible(pl_sd)) continue; - sprintf(atcmd_output, msg_txt(913), pl_sd->status.name); // Name: %s (GM) + sprintf(atcmd_output, msg_fd(fd,913), pl_sd->status.name); // Name: %s (GM) clif->message(fd, atcmd_output); count++; continue; } - sprintf(atcmd_output, msg_txt(914), // Name: %s (GM:%d) | Location: %s %d %d + sprintf(atcmd_output, msg_fd(fd,914), // Name: %s (GM:%d) | Location: %s %d %d pl_sd->status.name, pl_level, mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y); clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(915), // BLvl: %d | Job: %s (Lvl: %d) + sprintf(atcmd_output, msg_fd(fd,915), // BLvl: %d | Job: %s (Lvl: %d) pl_sd->status.base_level, pc->job_name(pl_sd->status.class_), pl_sd->status.job_level); clif->message(fd, atcmd_output); @@ -708,8 +752,8 @@ ACMD(whogm) p = party->search(pl_sd->status.party_id); g = pl_sd->guild; - sprintf(atcmd_output,msg_txt(916), // Party: '%s' | Guild: '%s' - p?p->party.name:msg_txt(917), g?g->name:msg_txt(917)); // None. + sprintf(atcmd_output,msg_fd(fd,916), // Party: '%s' | Guild: '%s' + p?p->party.name:msg_fd(fd,917), g?g->name:msg_fd(fd,917)); // None. clif->message(fd, atcmd_output); count++; @@ -717,11 +761,11 @@ ACMD(whogm) mapit->free(iter); if (count == 0) - clif->message(fd, msg_txt(150)); // No GM found. + clif->message(fd, msg_fd(fd,150)); // No GM found. else if (count == 1) - clif->message(fd, msg_txt(151)); // 1 GM found. + clif->message(fd, msg_fd(fd,151)); // 1 GM found. else { - sprintf(atcmd_output, msg_txt(152), count); // %d GMs found. + sprintf(atcmd_output, msg_fd(fd,152), count); // %d GMs found. clif->message(fd, atcmd_output); } @@ -739,7 +783,7 @@ ACMD(save) chrif->save(sd,0); - clif->message(fd, msg_txt(6)); // Your save point has been changed. + clif->message(fd, msg_fd(fd,6)); // Your save point has been changed. return true; } @@ -752,16 +796,16 @@ ACMD(load) { m = map->mapindex2mapid(sd->status.save_point.map); if (m >= 0 && map->list[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(249)); // You are not authorized to warp to your save map. + clif->message(fd, msg_fd(fd,249)); // You are not authorized to warp to your save map. return false; } if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map. + clif->message(fd, msg_fd(fd,248)); // You are not authorized to warp from your current map. return false; } pc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_OUTSIGHT); - clif->message(fd, msg_txt(7)); // Warping to save point.. + clif->message(fd, msg_fd(fd,7)); // Warping to save point.. return true; } @@ -776,7 +820,7 @@ ACMD(speed) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%d", &speed) < 1) { - sprintf(atcmd_output, msg_txt(918), MIN_WALK_SPEED, MAX_WALK_SPEED); // Please enter a speed value (usage: @speed <%d-%d>). + sprintf(atcmd_output, msg_fd(fd,918), MIN_WALK_SPEED, MAX_WALK_SPEED); // Please enter a speed value (usage: @speed <%d-%d>). clif->message(fd, atcmd_output); return false; } @@ -790,9 +834,9 @@ ACMD(speed) if( sd->base_status.speed != DEFAULT_WALK_SPEED ) { sd->state.permanent_speed = 1; // Set lock when set to non-default speed. - clif->message(fd, msg_txt(8)); // Speed changed. + clif->message(fd, msg_fd(fd,8)); // Speed changed. } else - clif->message(fd, msg_txt(172)); //Speed returned to normal. + clif->message(fd, msg_fd(fd,172)); //Speed returned to normal. status_calc_bl(&sd->bl, SCB_SPEED); @@ -808,11 +852,11 @@ ACMD(storage) return false; if (storage->open(sd) == 1) { //Already open. - clif->message(fd, msg_txt(250)); + clif->message(fd, msg_fd(fd,250)); return false; } - clif->message(fd, msg_txt(919)); // Storage opened. + clif->message(fd, msg_fd(fd,919)); // Storage opened. return true; } @@ -824,7 +868,7 @@ ACMD(storage) ACMD(guildstorage) { if (!sd->status.guild_id) { - clif->message(fd, msg_txt(252)); + clif->message(fd, msg_fd(fd,252)); return false; } @@ -832,21 +876,21 @@ ACMD(guildstorage) return false; if (sd->state.storage_flag == 1) { - clif->message(fd, msg_txt(250)); + clif->message(fd, msg_fd(fd,250)); return false; } if (sd->state.storage_flag == 2) { - clif->message(fd, msg_txt(251)); + clif->message(fd, msg_fd(fd,251)); return false; } if( gstorage->open(sd) ) { - clif->message(fd, msg_txt(1201)); // Your guild's storage has already been opened by another member, try again later. + clif->message(fd, msg_fd(fd,1201)); // Your guild's storage has already been opened by another member, try again later. return false; } - clif->message(fd, msg_txt(920)); // Guild storage opened. + clif->message(fd, msg_fd(fd,920)); // Guild storage opened. return true; } @@ -865,7 +909,7 @@ ACMD(option) text = atcommand_help_string( info ); // notify the user of the requirement to enter an option - clif->message(fd, msg_txt(921)); // Please enter at least one option. + clif->message(fd, msg_fd(fd,921)); // Please enter at least one option. if( text ) {// send the help text associated with this command clif->messageln( fd, text ); @@ -878,7 +922,7 @@ ACMD(option) sd->sc.opt2 = param2; pc->setoption(sd, param3); - clif->message(fd, msg_txt(9)); // Options changed. + clif->message(fd, msg_fd(fd,9)); // Options changed. return true; } @@ -893,7 +937,7 @@ ACMD(hide) { status->set_viewdata(&sd->bl, sd->disguise); else status->set_viewdata(&sd->bl, sd->status.class_); - clif->message(fd, msg_txt(10)); // Invisible: Off + clif->message(fd, msg_fd(fd,10)); // Invisible: Off // increment the number of pvp players on the map map->list[sd->bl.m].users_pvp++; @@ -907,7 +951,7 @@ ACMD(hide) { } else { sd->sc.option |= OPTION_INVISIBLE; sd->vd.class_ = INVISIBLE_CLASS; - clif->message(fd, msg_txt(11)); // Invisible: On + clif->message(fd, msg_fd(fd,11)); // Invisible: On // decrement the number of pvp players on the map map->list[sd->bl.m].users_pvp--; @@ -967,15 +1011,15 @@ ACMD(jobchange) { || job == JOB_LORD_KNIGHT2 || job == JOB_PALADIN2 || job == JOB_BABY_KNIGHT2 || job == JOB_BABY_CRUSADER2 || job == JOB_STAR_GLADIATOR2 || (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2) || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2) ) { - clif->message(fd, msg_txt(923)); //"You can not change to this job by command." + clif->message(fd, msg_fd(fd,923)); //"You can not change to this job by command." return true; } if (pc->db_checkid(job)) { if (pc->jobchange(sd, job, upper) == 0) - clif->message(fd, msg_txt(12)); // Your job has been changed. + clif->message(fd, msg_fd(fd,12)); // Your job has been changed. else { - clif->message(fd, msg_txt(155)); // You are unable to change your job. + clif->message(fd, msg_fd(fd,155)); // You are unable to change your job. return false; } } else { @@ -994,9 +1038,9 @@ ACMD(jobchange) { ACMD(kill) { status_kill(&sd->bl); - clif->message(sd->fd, msg_txt(13)); // A pity! You've died. + clif->message(sd->fd, msg_fd(fd,13)); // A pity! You've died. if (fd != sd->fd) - clif->message(fd, msg_txt(14)); // Character killed. + clif->message(fd, msg_fd(fd,14)); // Character killed. return true; } @@ -1006,11 +1050,11 @@ ACMD(kill) ACMD(alive) { if (!status->revive(&sd->bl, 100, 100)) { - clif->message(fd, msg_txt(867)); // "You're not dead." + clif->message(fd, msg_fd(fd,867)); // "You're not dead." return false; } clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1); - clif->message(fd, msg_txt(16)); // You've been revived! It's a miracle! + clif->message(fd, msg_fd(fd,16)); // You've been revived! It's a miracle! return true; } @@ -1025,7 +1069,7 @@ ACMD(kami) if(*(info->command + 4) != 'c' && *(info->command + 4) != 'C') { if (!message || !*message) { - clif->message(fd, msg_txt(980)); // Please enter a message (usage: @kami <message>). + clif->message(fd, msg_fd(fd,980)); // Please enter a message (usage: @kami <message>). return false; } @@ -1036,12 +1080,12 @@ ACMD(kami) intif->broadcast(atcmd_output, strlen(atcmd_output) + 1, (*(info->command + 4) == 'b' || *(info->command + 4) == 'B') ? BC_BLUE : BC_YELLOW); } else { if(!message || !*message || (sscanf(message, "%u %199[^\n]", &color, atcmd_output) < 2)) { - clif->message(fd, msg_txt(981)); // Please enter color and message (usage: @kamic <color> <message>). + clif->message(fd, msg_fd(fd,981)); // Please enter color and message (usage: @kamic <color> <message>). return false; } if(color > 0xFFFFFF) { - clif->message(fd, msg_txt(982)); // Invalid color. + clif->message(fd, msg_fd(fd,982)); // Invalid color. return false; } intif->broadcast2(atcmd_output, strlen(atcmd_output) + 1, color, 0x190, 12, 0, 0); @@ -1061,27 +1105,27 @@ ACMD(heal) // some overflow checks if( hp == INT_MIN ) hp++; if( sp == INT_MIN ) sp++; - + if ( hp == 0 && sp == 0 ) { if (!status_percent_heal(&sd->bl, 100, 100)) - clif->message(fd, msg_txt(157)); // HP and SP have already been recovered. + clif->message(fd, msg_fd(fd,157)); // HP and SP have already been recovered. else - clif->message(fd, msg_txt(17)); // HP, SP recovered. + clif->message(fd, msg_fd(fd,17)); // HP, SP recovered. return true; } if ( hp > 0 && sp >= 0 ) { if(!status->heal(&sd->bl, hp, sp, 0)) - clif->message(fd, msg_txt(157)); // HP and SP are already with the good value. + clif->message(fd, msg_fd(fd,157)); // HP and SP are already with the good value. else - clif->message(fd, msg_txt(17)); // HP, SP recovered. + clif->message(fd, msg_fd(fd,17)); // HP, SP recovered. return true; } if ( hp < 0 && sp <= 0 ) { status->damage(NULL, &sd->bl, -hp, -sp, 0, 0); clif->damage(&sd->bl,&sd->bl, 0, 0, -hp, 0, 4, 0); - clif->message(fd, msg_txt(156)); // HP or/and SP modified. + clif->message(fd, msg_fd(fd,156)); // HP or/and SP modified. return true; } @@ -1102,7 +1146,7 @@ ACMD(heal) status->damage(NULL, &sd->bl, 0, -sp, 0, 0); } - clif->message(fd, msg_txt(156)); // HP or/and SP modified. + clif->message(fd, msg_fd(fd,156)); // HP or/and SP modified. return true; } @@ -1124,13 +1168,13 @@ ACMD(item) sscanf(message, "\"%99[^\"]\" %d %d", item_name, &number, &bound) < 2 && sscanf(message, "%99s %d %d", item_name, &number, &bound) < 2 ))) { - clif->message(fd, msg_txt(295)); // Please enter an item name or ID (usage: @itembound <item name/ID> <quantity> <bound_type>). + clif->message(fd, msg_fd(fd,295)); // Please enter an item name or ID (usage: @itembound <item name/ID> <quantity> <bound_type>). return false; } else if (!message || !*message || ( sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1 && sscanf(message, "%99s %d", item_name, &number) < 1 )) { - clif->message(fd, msg_txt(983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>). + clif->message(fd, msg_fd(fd,983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>). return false; } @@ -1140,13 +1184,13 @@ ACMD(item) if ((item_data = itemdb->search_name(item_name)) == NULL && (item_data = itemdb->exists(atoi(item_name))) == NULL) { - clif->message(fd, msg_txt(19)); // Invalid item ID or name. + clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name. return false; } if(!strcmpi(info->command,"itembound") ) { if( !(bound >= IBT_MIN && bound <= IBT_MAX) ) { - clif->message(fd, msg_txt(298)); // Invalid bound type + clif->message(fd, msg_fd(fd,298)); // Invalid bound type return false; } switch( (enum e_item_bound_type)bound ) { @@ -1155,13 +1199,13 @@ ACMD(item) break; /* no restrictions */ case IBT_PARTY: if( !sd->status.party_id ) { - clif->message(fd, msg_txt(1498)); //You can't add a party bound item to a character without party! + clif->message(fd, msg_fd(fd,1498)); //You can't add a party bound item to a character without party! return false; } break; case IBT_GUILD: if( !sd->status.guild_id ) { - clif->message(fd, msg_txt(1499)); //You can't add a guild bound item to a character without guild! + clif->message(fd, msg_fd(fd,1499)); //You can't add a guild bound item to a character without guild! return false; } break; @@ -1173,7 +1217,7 @@ ACMD(item) //Check if it's stackable. if (!itemdb->isstackable2(item_data)) { if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) ) { - clif->message(fd, msg_txt(498)); // Cannot create bounded pet eggs or pet armors. + clif->message(fd, msg_fd(fd,498)); // Cannot create bounded pet eggs or pet armors. return false; } get_count = 1; @@ -1193,7 +1237,7 @@ ACMD(item) } if (flag == 0) - clif->message(fd, msg_txt(18)); // Item created. + clif->message(fd, msg_fd(fd,18)); // Item created. return true; } @@ -1214,15 +1258,15 @@ ACMD(item2) if (!strcmpi(info->command,"itembound2") && (!message || !*message || ( sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 && sscanf(message, "%99s %d %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 ))) { - clif->message(fd, msg_txt(296)); // Please enter all parameters (usage: @itembound2 <item name/ID> <quantity> - clif->message(fd, msg_txt(297)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4> <bound_type>). + clif->message(fd, msg_fd(fd,296)); // Please enter all parameters (usage: @itembound2 <item name/ID> <quantity> + clif->message(fd, msg_fd(fd,297)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4> <bound_type>). return false; } else if ( !message || !*message || ( sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 && sscanf(message, "%99s %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 )) { - clif->message(fd, msg_txt(984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity> - clif->message(fd, msg_txt(985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>). + clif->message(fd, msg_fd(fd,984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity> + clif->message(fd, msg_fd(fd,985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>). return false; } @@ -1230,7 +1274,7 @@ ACMD(item2) number = 1; if( !strcmpi(info->command,"itembound2") && !(bound >= IBT_MIN && bound <= IBT_MAX) ) { - clif->message(fd, msg_txt(298)); // Invalid bound type + clif->message(fd, msg_fd(fd,298)); // Invalid bound type return false; } @@ -1248,7 +1292,7 @@ ACMD(item2) bound = 1; if( !itemdb->isstackable2(item_data) ) { if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) ) { - clif->message(fd, msg_txt(498)); // Cannot create bounded pet eggs or pet armors. + clif->message(fd, msg_fd(fd,498)); // Cannot create bounded pet eggs or pet armors. return false; } loop = number; @@ -1282,9 +1326,9 @@ ACMD(item2) } if (flag == 0) - clif->message(fd, msg_txt(18)); // Item created. + clif->message(fd, msg_fd(fd,18)); // Item created. } else { - clif->message(fd, msg_txt(19)); // Invalid item ID or name. + clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name. return false; } @@ -1303,7 +1347,7 @@ ACMD(itemreset) pc->delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_COMMAND); } } - clif->message(fd, msg_txt(20)); // All of your items have been removed. + clif->message(fd, msg_fd(fd,20)); // All of your items have been removed. return true; } @@ -1316,13 +1360,13 @@ ACMD(baselevelup) int level=0, i=0, status_point=0; if (!message || !*message || !(level = atoi(message))) { - clif->message(fd, msg_txt(986)); // Please enter a level adjustment (usage: @lvup/@blevel/@baselvlup <number of levels>). + clif->message(fd, msg_fd(fd,986)); // Please enter a level adjustment (usage: @lvup/@blevel/@baselvlup <number of levels>). return false; } if (level > 0) { if (sd->status.base_level >= pc->maxbaselv(sd)) { // check for max level by Valaris - clif->message(fd, msg_txt(47)); // Base level can't go any higher. + clif->message(fd, msg_fd(fd,47)); // Base level can't go any higher. return false; } // End Addition if ((unsigned int)level > pc->maxbaselv(sd) || (unsigned int)level > pc->maxbaselv(sd) - sd->status.base_level) // fix positive overflow @@ -1335,10 +1379,10 @@ ACMD(baselevelup) status_calc_pc(sd, SCO_FORCE); status_percent_heal(&sd->bl, 100, 100); clif->misceffect(&sd->bl, 0); - clif->message(fd, msg_txt(21)); // Base level raised. + clif->message(fd, msg_fd(fd,21)); // Base level raised. } else { if (sd->status.base_level == 1) { - clif->message(fd, msg_txt(158)); // Base level can't go any lower. + clif->message(fd, msg_fd(fd,158)); // Base level can't go any lower. return false; } level*=-1; @@ -1353,7 +1397,7 @@ ACMD(baselevelup) else sd->status.status_point -= status_point; sd->status.base_level -= (unsigned int)level; - clif->message(fd, msg_txt(22)); // Base level lowered. + clif->message(fd, msg_fd(fd,22)); // Base level lowered. status_calc_pc(sd, SCO_FORCE); } sd->status.base_exp = 0; @@ -1375,12 +1419,12 @@ ACMD(joblevelup) int level=0; if (!message || !*message || !(level = atoi(message))) { - clif->message(fd, msg_txt(987)); // Please enter a level adjustment (usage: @joblvup/@jlevel/@joblvlup <number of levels>). + clif->message(fd, msg_fd(fd,987)); // Please enter a level adjustment (usage: @joblvup/@jlevel/@joblvlup <number of levels>). return false; } if (level > 0) { if (sd->status.job_level >= pc->maxjoblv(sd)) { - clif->message(fd, msg_txt(23)); // Job level can't go any higher. + clif->message(fd, msg_fd(fd,23)); // Job level can't go any higher. return false; } if ((unsigned int)level > pc->maxjoblv(sd) || (unsigned int)level > pc->maxjoblv(sd) - sd->status.job_level) // fix positive overflow @@ -1388,10 +1432,10 @@ ACMD(joblevelup) sd->status.job_level += (unsigned int)level; sd->status.skill_point += level; clif->misceffect(&sd->bl, 1); - clif->message(fd, msg_txt(24)); // Job level raised. + clif->message(fd, msg_fd(fd,24)); // Job level raised. } else { if (sd->status.job_level == 1) { - clif->message(fd, msg_txt(159)); // Job level can't go any lower. + clif->message(fd, msg_fd(fd,159)); // Job level can't go any lower. return false; } level *=-1; @@ -1404,7 +1448,7 @@ ACMD(joblevelup) sd->status.skill_point = 0; else sd->status.skill_point -= level; - clif->message(fd, msg_txt(25)); // Job level lowered. + clif->message(fd, msg_fd(fd,25)); // Job level lowered. } sd->status.job_exp = 0; clif->updatestatus(sd, SP_JOBLEVEL); @@ -1433,7 +1477,7 @@ ACMD(help) { } if (!atcommand->can_use2(sd, command_name, COMMAND_ATCOMMAND)) { - sprintf(atcmd_output, msg_txt(153), message); // "%s is Unknown Command" + sprintf(atcmd_output, msg_fd(fd,153), message); // "%s is Unknown Command" clif->message(fd, atcmd_output); atcommand->get_suggestions(sd, command_name, true); return false; @@ -1442,13 +1486,13 @@ ACMD(help) { tinfo = atcommand->get_info_byname(atcommand->check_alias(command_name)); if ( !tinfo || tinfo->help == NULL ) { - sprintf(atcmd_output, msg_txt(988), atcommand->at_symbol, command_name); // There is no help for %c%s. + sprintf(atcmd_output, msg_fd(fd,988), atcommand->at_symbol, command_name); // There is no help for %c%s. clif->message(fd, atcmd_output); atcommand->get_suggestions(sd, command_name, true); return false; } - sprintf(atcmd_output, msg_txt(989), atcommand->at_symbol, command_name); // Help for command %c%s: + sprintf(atcmd_output, msg_fd(fd,989), atcommand->at_symbol, command_name); // Help for command %c%s: clif->message(fd, atcmd_output); { // Display aliases @@ -1459,7 +1503,7 @@ ACMD(help) { bool has_aliases = false; StrBuf->Init(&buf); - StrBuf->AppendStr(&buf, msg_txt(990)); // Available aliases: + StrBuf->AppendStr(&buf, msg_fd(fd,990)); // Available aliases: command_info = atcommand->get_info_byname(command_name); iter = db_iterator(atcommand->alias_db); for (alias_info = dbi_first(iter); dbi_exists(iter); alias_info = dbi_next(iter)) { @@ -1509,7 +1553,7 @@ int atcommand_pvpoff_sub(struct block_list *bl,va_list ap) ACMD(pvpoff) { if (!map->list[sd->bl.m].flag.pvp) { - clif->message(fd, msg_txt(160)); // PvP is already Off. + clif->message(fd, msg_fd(fd,160)); // PvP is already Off. return false; } @@ -1522,7 +1566,7 @@ ACMD(pvpoff) } map->foreachinmap(atcommand->pvpoff_sub,sd->bl.m, BL_PC); map->foreachinmap(atcommand->stopattack,sd->bl.m, BL_CHAR, 0); - clif->message(fd, msg_txt(31)); // PvP: Off. + clif->message(fd, msg_fd(fd,31)); // PvP: Off. return true; } @@ -1546,7 +1590,7 @@ int atcommand_pvpon_sub(struct block_list *bl,va_list ap) ACMD(pvpon) { if (map->list[sd->bl.m].flag.pvp) { - clif->message(fd, msg_txt(161)); // PvP is already On. + clif->message(fd, msg_fd(fd,161)); // PvP is already On. return false; } @@ -1559,7 +1603,7 @@ ACMD(pvpon) map->foreachinmap(atcommand->pvpon_sub,sd->bl.m, BL_PC); } - clif->message(fd, msg_txt(32)); // PvP: On. + clif->message(fd, msg_fd(fd,32)); // PvP: On. return true; } @@ -1570,7 +1614,7 @@ ACMD(pvpon) ACMD(gvgoff) { if (!map->list[sd->bl.m].flag.gvg) { - clif->message(fd, msg_txt(162)); // GvG is already Off. + clif->message(fd, msg_fd(fd,162)); // GvG is already Off. return false; } @@ -1579,7 +1623,7 @@ ACMD(gvgoff) { clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); map->foreachinmap(atcommand->stopattack,sd->bl.m, BL_CHAR, 0); - clif->message(fd, msg_txt(33)); // GvG: Off. + clif->message(fd, msg_fd(fd,33)); // GvG: Off. return true; } @@ -1590,7 +1634,7 @@ ACMD(gvgoff) { ACMD(gvgon) { if (map->list[sd->bl.m].flag.gvg) { - clif->message(fd, msg_txt(163)); // GvG is already On. + clif->message(fd, msg_fd(fd,163)); // GvG is already On. return false; } @@ -1598,7 +1642,7 @@ ACMD(gvgon) map->list[sd->bl.m].flag.gvg = 1; clif->map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); - clif->message(fd, msg_txt(34)); // GvG: On. + clif->message(fd, msg_fd(fd,34)); // GvG: On. return true; } @@ -1613,7 +1657,7 @@ ACMD(model) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%d %d %d", &hair_style, &hair_color, &cloth_color) < 1) { - sprintf(atcmd_output, msg_txt(991), // Please enter at least one value (usage: @model <hair ID: %d-%d> <hair color: %d-%d> <clothes color: %d-%d>). + sprintf(atcmd_output, msg_fd(fd,991), // Please enter at least one value (usage: @model <hair ID: %d-%d> <hair color: %d-%d> <clothes color: %d-%d>). MIN_HAIR_STYLE, MAX_HAIR_STYLE, MIN_HAIR_COLOR, MAX_HAIR_COLOR, MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); clif->message(fd, atcmd_output); return false; @@ -1625,9 +1669,9 @@ ACMD(model) pc->changelook(sd, LOOK_HAIR, hair_style); pc->changelook(sd, LOOK_HAIR_COLOR, hair_color); pc->changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); - clif->message(fd, msg_txt(36)); // Appearance changed. + clif->message(fd, msg_fd(fd,36)); // Appearance 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; } @@ -1644,16 +1688,16 @@ ACMD(dye) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%d", &cloth_color) < 1) { - sprintf(atcmd_output, msg_txt(992), MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); // Please enter a clothes color (usage: @dye/@ccolor <clothes color: %d-%d>). + sprintf(atcmd_output, msg_fd(fd,992), MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); // Please enter a clothes color (usage: @dye/@ccolor <clothes color: %d-%d>). clif->message(fd, atcmd_output); return false; } if (cloth_color >= MIN_CLOTH_COLOR && cloth_color <= MAX_CLOTH_COLOR) { pc->changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); - clif->message(fd, msg_txt(36)); // Appearance changed. + clif->message(fd, msg_fd(fd,36)); // Appearance 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; } @@ -1670,16 +1714,16 @@ ACMD(hair_style) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%d", &hair_style) < 1) { - sprintf(atcmd_output, msg_txt(993), MIN_HAIR_STYLE, MAX_HAIR_STYLE); // Please enter a hair style (usage: @hairstyle/@hstyle <hair ID: %d-%d>). + sprintf(atcmd_output, msg_fd(fd,993), MIN_HAIR_STYLE, MAX_HAIR_STYLE); // Please enter a hair style (usage: @hairstyle/@hstyle <hair ID: %d-%d>). clif->message(fd, atcmd_output); return false; } if (hair_style >= MIN_HAIR_STYLE && hair_style <= MAX_HAIR_STYLE) { pc->changelook(sd, LOOK_HAIR, hair_style); - clif->message(fd, msg_txt(36)); // Appearance changed. + clif->message(fd, msg_fd(fd,36)); // Appearance 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; } @@ -1696,16 +1740,16 @@ ACMD(hair_color) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%d", &hair_color) < 1) { - sprintf(atcmd_output, msg_txt(994), MIN_HAIR_COLOR, MAX_HAIR_COLOR); // Please enter a hair color (usage: @haircolor/@hcolor <hair color: %d-%d>). + sprintf(atcmd_output, msg_fd(fd,994), MIN_HAIR_COLOR, MAX_HAIR_COLOR); // Please enter a hair color (usage: @haircolor/@hcolor <hair color: %d-%d>). clif->message(fd, atcmd_output); return false; } if (hair_color >= MIN_HAIR_COLOR && hair_color <= MAX_HAIR_COLOR) { pc->changelook(sd, LOOK_HAIR_COLOR, hair_color); - clif->message(fd, msg_txt(36)); // Appearance changed. + clif->message(fd, msg_fd(fd,36)); // Appearance 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; } @@ -1776,7 +1820,7 @@ ACMD(go) { // attempt to find the text help string text = atcommand_help_string( info ); - clif->message(fd, msg_txt(38)); // Invalid location number, or name. + clif->message(fd, msg_fd(fd,38)); // Invalid location number, or name. if( text ) {// send the text to the client clif->messageln( fd, text ); @@ -1829,21 +1873,21 @@ ACMD(go) { if (town >= 0 && town < ARRAYLENGTH(data)) { int16 m = map->mapname2mapid(data[town].map); if (m >= 0 && map->list[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(247)); + clif->message(fd, msg_fd(fd,247)); return false; } if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(248)); + clif->message(fd, msg_fd(fd,248)); return false; } if (pc->setpos(sd, mapindex->name2id(data[town].map), data[town].x, data[town].y, CLR_TELEPORT) == 0) { - clif->message(fd, msg_txt(0)); // Warped. + clif->message(fd, msg_fd(fd,0)); // Warped. } else { - clif->message(fd, msg_txt(1)); // Map not found. + clif->message(fd, msg_fd(fd,1)); // Map not found. return false; } } else { - clif->message(fd, msg_txt(38)); // Invalid location number or name. + clif->message(fd, msg_fd(fd,38)); // Invalid location number or name. return false; } @@ -1870,7 +1914,7 @@ ACMD(monster) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message) { - clif->message(fd, msg_txt(80)); // Please specify a display name or monster name/id. + clif->message(fd, msg_fd(fd,80)); // Please specify a display name or monster name/id. return false; } if (sscanf(message, "\"%23[^\"]\" %23s %d", name, monster, &number) > 1 || @@ -1886,7 +1930,7 @@ ACMD(monster) //As before, name may be already filled. name[0] = '\0'; } else { - clif->message(fd, msg_txt(80)); // Give a display name and monster name/id please. + clif->message(fd, msg_fd(fd,80)); // Give a display name and monster name/id please. return false; } @@ -1894,7 +1938,7 @@ ACMD(monster) mob_id = mob->db_checkid(atoi(monster)); if (mob_id == 0) { - clif->message(fd, msg_txt(40)); // Invalid monster ID or name. + clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name. return false; } @@ -1929,13 +1973,13 @@ ACMD(monster) if (count != 0) if (number == count) - clif->message(fd, msg_txt(39)); // All monster summoned! + clif->message(fd, msg_fd(fd,39)); // All monster summoned! else { - sprintf(atcmd_output, msg_txt(240), count); // %d monster(s) summoned! + sprintf(atcmd_output, msg_fd(fd,240), count); // %d monster(s) summoned! clif->message(fd, atcmd_output); } else { - clif->message(fd, msg_txt(40)); // Invalid monster ID or name. + clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name. return false; } @@ -1980,7 +2024,7 @@ ACMD(killmonster) { map->foreachinmap(atcommand->atkillmonster_sub, map_id, BL_MOB, -drop_flag); - clif->message(fd, msg_txt(165)); // All monsters killed! + clif->message(fd, msg_fd(fd,165)); // All monsters killed! return true; } @@ -1996,26 +2040,26 @@ ACMD(refine) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%d %d", &position, &refine) < 2) { - clif->message(fd, msg_txt(996)); // Please enter a position and an amount (usage: @refine <equip position> <+/- amount>). - sprintf(atcmd_output, msg_txt(997), EQP_HEAD_LOW); // %d: Lower Headgear + clif->message(fd, msg_fd(fd,996)); // Please enter a position and an amount (usage: @refine <equip position> <+/- amount>). + sprintf(atcmd_output, msg_fd(fd,997), EQP_HEAD_LOW); // %d: Lower Headgear clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(998), EQP_HAND_R); // %d: Right Hand + sprintf(atcmd_output, msg_fd(fd,998), EQP_HAND_R); // %d: Right Hand clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(999), EQP_GARMENT); // %d: Garment + sprintf(atcmd_output, msg_fd(fd,999), EQP_GARMENT); // %d: Garment clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1000), EQP_ACC_L); // %d: Left Accessory + sprintf(atcmd_output, msg_fd(fd,1000), EQP_ACC_L); // %d: Left Accessory clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1001), EQP_ARMOR); // %d: Body Armor + sprintf(atcmd_output, msg_fd(fd,1001), EQP_ARMOR); // %d: Body Armor clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1002), EQP_HAND_L); // %d: Left Hand + sprintf(atcmd_output, msg_fd(fd,1002), EQP_HAND_L); // %d: Left Hand clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1003), EQP_SHOES); // %d: Shoes + sprintf(atcmd_output, msg_fd(fd,1003), EQP_SHOES); // %d: Shoes clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1004), EQP_ACC_R); // %d: Right Accessory + sprintf(atcmd_output, msg_fd(fd,1004), EQP_ACC_R); // %d: Right Accessory clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1005), EQP_HEAD_TOP); // %d: Top Headgear + sprintf(atcmd_output, msg_fd(fd,1005), EQP_HEAD_TOP); // %d: Top Headgear clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1006), EQP_HEAD_MID); // %d: Mid Headgear + sprintf(atcmd_output, msg_fd(fd,1006), EQP_HEAD_MID); // %d: Mid Headgear clif->message(fd, atcmd_output); return false; } @@ -2053,11 +2097,11 @@ ACMD(refine) } if (count == 0) - clif->message(fd, msg_txt(166)); // No item has been refined. + clif->message(fd, msg_fd(fd,166)); // No item has been refined. else if (count == 1) - clif->message(fd, msg_txt(167)); // 1 item has been refined. + clif->message(fd, msg_fd(fd,167)); // 1 item has been refined. else { - sprintf(atcmd_output, msg_txt(168), count); // %d items have been refined. + sprintf(atcmd_output, msg_fd(fd,168), count); // %d items have been refined. clif->message(fd, atcmd_output); } @@ -2081,13 +2125,13 @@ ACMD(produce) sscanf(message, "\"%99[^\"]\" %d %d", item_name, &attribute, &star) < 1 && sscanf(message, "%99s %d %d", item_name, &attribute, &star) < 1 )) { - clif->message(fd, msg_txt(1007)); // Please enter at least one item name/ID (usage: @produce <equip name/ID> <element> <# of very's>). + clif->message(fd, msg_fd(fd,1007)); // Please enter at least one item name/ID (usage: @produce <equip name/ID> <element> <# of very's>). return false; } if ( (item_data = itemdb->search_name(item_name)) == NULL && (item_data = itemdb->exists(atoi(item_name))) == NULL ) { - clif->message(fd, msg_txt(170)); //This item is not an equipment. + clif->message(fd, msg_fd(fd,170)); //This item is not an equipment. return false; } @@ -2114,7 +2158,7 @@ ACMD(produce) if ((flag = pc->additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND))) clif->additem(sd, 0, 0, flag); } else { - sprintf(atcmd_output, msg_txt(169), item_id, item_data->name); // The item (%d: '%s') is not equipable. + sprintf(atcmd_output, msg_fd(fd,169), item_id, item_data->name); // The item (%d: '%s') is not equipable. clif->message(fd, atcmd_output); return false; } @@ -2134,13 +2178,13 @@ ACMD(memo) if( !message || !*message || sscanf(message, "%d", &position) < 1 ) { int i; - clif->message(sd->fd, msg_txt(868)); // "Your current memo positions are:" + clif->message(sd->fd, msg_fd(fd,868)); // "Your current memo positions are:" for( i = 0; i < MAX_MEMOPOINTS; i++ ) { if( sd->status.memo_point[i].map ) sprintf(atcmd_output, "%d - %s (%d,%d)", i, mapindex_id2name(sd->status.memo_point[i].map), sd->status.memo_point[i].x, sd->status.memo_point[i].y); else - sprintf(atcmd_output, msg_txt(171), i); // %d - void + sprintf(atcmd_output, msg_fd(fd,171), i); // %d - void clif->message(sd->fd, atcmd_output); } return true; @@ -2148,7 +2192,7 @@ ACMD(memo) if( position < 0 || position >= MAX_MEMOPOINTS ) { - sprintf(atcmd_output, msg_txt(1008), 0, MAX_MEMOPOINTS-1); // Please enter a valid position (usage: @memo <memo_position:%d-%d>). + sprintf(atcmd_output, msg_fd(fd,1008), 0, MAX_MEMOPOINTS-1); // Please enter a valid position (usage: @memo <memo_position:%d-%d>). clif->message(fd, atcmd_output); return false; } @@ -2188,7 +2232,7 @@ ACMD(displaystatus) int i, type, flag, tick, val1 = 0, val2 = 0, val3 = 0; if (!message || !*message || (i = sscanf(message, "%d %d %d %d %d %d", &type, &flag, &tick, &val1, &val2, &val3)) < 1) { - clif->message(fd, msg_txt(1009)); // Please enter a status type/flag (usage: @displaystatus <status type> <flag> <tick> {<val1> {<val2> {<val3>}}}). + clif->message(fd, msg_fd(fd,1009)); // Please enter a status type/flag (usage: @displaystatus <status type> <flag> <tick> {<val1> {<val2> {<val3>}}}). return false; } if (i < 2) flag = 1; @@ -2211,7 +2255,7 @@ ACMD(statuspoint) unsigned int new_status_point; if (!message || !*message || (point = atoi(message)) == 0) { - clif->message(fd, msg_txt(1010)); // Please enter a number (usage: @stpoint <number of points>). + clif->message(fd, msg_fd(fd,1010)); // Please enter a number (usage: @stpoint <number of points>). return false; } @@ -2238,12 +2282,12 @@ ACMD(statuspoint) if (new_status_point != sd->status.status_point) { sd->status.status_point = new_status_point; clif->updatestatus(sd, SP_STATUSPOINT); - clif->message(fd, msg_txt(174)); // Number of status points changed. + clif->message(fd, msg_fd(fd,174)); // Number of status points changed. } else { if (point < 0) - clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. + clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value. else - clif->message(fd, msg_txt(149)); // Unable to increase the number/value. + clif->message(fd, msg_fd(fd,149)); // Unable to increase the number/value. return false; } @@ -2259,7 +2303,7 @@ ACMD(skillpoint) unsigned int new_skill_point; if (!message || !*message || (point = atoi(message)) == 0) { - clif->message(fd, msg_txt(1011)); // Please enter a number (usage: @skpoint <number of points>). + clif->message(fd, msg_fd(fd,1011)); // Please enter a number (usage: @skpoint <number of points>). return false; } @@ -2286,12 +2330,12 @@ ACMD(skillpoint) if (new_skill_point != sd->status.skill_point) { sd->status.skill_point = new_skill_point; clif->updatestatus(sd, SP_SKILLPOINT); - clif->message(fd, msg_txt(175)); // Number of skill points changed. + clif->message(fd, msg_fd(fd,175)); // Number of skill points changed. } else { if (point < 0) - clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. + clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value. else - clif->message(fd, msg_txt(149)); // Unable to increase the number/value. + clif->message(fd, msg_fd(fd,149)); // Unable to increase the number/value. return false; } @@ -2306,24 +2350,24 @@ ACMD(zeny) int zeny=0, ret=-1; if (!message || !*message || (zeny = atoi(message)) == 0) { - clif->message(fd, msg_txt(1012)); // Please enter an amount (usage: @zeny <amount>). + clif->message(fd, msg_fd(fd,1012)); // Please enter an amount (usage: @zeny <amount>). return false; } if(zeny > 0){ if((ret=pc->getzeny(sd,zeny,LOG_TYPE_COMMAND,NULL)) == 1) - clif->message(fd, msg_txt(149)); // Unable to increase the number/value. + clif->message(fd, msg_fd(fd,149)); // Unable to increase the number/value. } else { if( sd->status.zeny < -zeny ) zeny = -sd->status.zeny; if((ret=pc->payzeny(sd,-zeny,LOG_TYPE_COMMAND,NULL)) == 1) - clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. + clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value. } if( ret ) //ret != 0 means cmd failure return false; - clif->message(fd, msg_txt(176)); + clif->message(fd, msg_fd(fd,176)); return true; } @@ -2339,14 +2383,14 @@ ACMD(param) { memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) { - clif->message(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>). + clif->message(fd, msg_fd(fd,1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>). return false; } ARR_FIND( 0, ARRAYLENGTH(param), i, strcmpi(info->command, param[i]) == 0 ); if( i == ARRAYLENGTH(param) || i > MAX_STATUS_TYPE) { // normally impossible... - clif->message(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>). + clif->message(fd, msg_fd(fd,1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>). return false; } @@ -2375,12 +2419,12 @@ ACMD(param) { clif->updatestatus(sd, SP_STR + i); clif->updatestatus(sd, SP_USTR + i); status_calc_pc(sd, SCO_FORCE); - clif->message(fd, msg_txt(42)); // Stat changed. + clif->message(fd, msg_fd(fd,42)); // Stat changed. } else { if (value < 0) - clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. + clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value. else - clif->message(fd, msg_txt(149)); // Unable to increase the number/value. + clif->message(fd, msg_fd(fd,149)); // Unable to increase the number/value. return false; } @@ -2431,12 +2475,12 @@ ACMD(stat_all) { if (count > 0) { // if at least 1 stat modified status_calc_pc(sd, SCO_FORCE); - clif->message(fd, msg_txt(84)); // All stats changed! + clif->message(fd, msg_fd(fd,84)); // All stats changed! } else { if (value < 0) - clif->message(fd, msg_txt(177)); // You cannot decrease that stat anymore. + clif->message(fd, msg_fd(fd,177)); // You cannot decrease that stat anymore. else - clif->message(fd, msg_txt(178)); // You cannot increase that stat anymore. + clif->message(fd, msg_fd(fd,178)); // You cannot increase that stat anymore. return false; } @@ -2452,17 +2496,17 @@ ACMD(guildlevelup) { struct guild *guild_info; if (!message || !*message || sscanf(message, "%d", &level) < 1 || level == 0) { - clif->message(fd, msg_txt(1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>). + clif->message(fd, msg_fd(fd,1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>). return false; } if (sd->status.guild_id <= 0 || (guild_info = sd->guild) == NULL) { - clif->message(fd, msg_txt(43)); // You're not in a guild. + clif->message(fd, msg_fd(fd,43)); // You're not in a guild. return false; } #if 0 // By enabling this, only the guild leader can use this command if (strcmp(sd->status.name, guild_info->master) != 0) { - clif->message(fd, msg_txt(44)); // You're not the master of your guild. + clif->message(fd, msg_fd(fd,44)); // You're not the master of your guild. return false; } #endif // 0 @@ -2475,9 +2519,9 @@ ACMD(guildlevelup) { if (added_level != 0) { intif->guild_change_basicinfo(guild_info->guild_id, GBI_GUILDLV, &added_level, sizeof(added_level)); - clif->message(fd, msg_txt(179)); // Guild level changed. + clif->message(fd, msg_fd(fd,179)); // Guild level changed. } else { - clif->message(fd, msg_txt(45)); // Guild level change failed. + clif->message(fd, msg_fd(fd,45)); // Guild level change failed. return false; } @@ -2493,7 +2537,7 @@ ACMD(makeegg) int id, pet_id; if (!message || !*message) { - clif->message(fd, msg_txt(1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>). + clif->message(fd, msg_fd(fd,1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>). return false; } @@ -2516,7 +2560,7 @@ ACMD(makeegg) (short)pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate, 100, 0, 1, pet->db[pet_id].jname); } else { - clif->message(fd, msg_txt(180)); // The monster/egg name/id doesn't exist. + clif->message(fd, msg_fd(fd,180)); // The monster/egg name/id doesn't exist. return false; } @@ -2531,7 +2575,7 @@ ACMD(hatch) if (sd->status.pet_id <= 0) clif->sendegg(sd); else { - clif->message(fd, msg_txt(181)); // You already have a pet. + clif->message(fd, msg_fd(fd,181)); // You already have a pet. return false; } @@ -2547,30 +2591,30 @@ ACMD(petfriendly) struct pet_data *pd; if (!message || !*message || (friendly = atoi(message)) < 0) { - clif->message(fd, msg_txt(1016)); // Please enter a valid value (usage: @petfriendly <0-1000>). + clif->message(fd, msg_fd(fd,1016)); // Please enter a valid value (usage: @petfriendly <0-1000>). return false; } pd = sd->pd; if (!pd) { - clif->message(fd, msg_txt(184)); // Sorry, but you have no pet. + clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet. return false; } if (friendly < 0 || friendly > 1000) { - 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; } if (friendly == pd->pet.intimate) { - clif->message(fd, msg_txt(183)); // Pet intimacy is already at maximum. + clif->message(fd, msg_fd(fd,183)); // Pet intimacy is already at maximum. return false; } pet->set_intimate(pd, friendly); clif->send_petstatus(sd); - clif->message(fd, msg_txt(182)); // Pet intimacy changed. + clif->message(fd, msg_fd(fd,182)); // Pet intimacy changed. return true; } @@ -2583,27 +2627,27 @@ ACMD(pethungry) struct pet_data *pd; if (!message || !*message || (hungry = atoi(message)) < 0) { - clif->message(fd, msg_txt(1017)); // Please enter a valid number (usage: @pethungry <0-100>). + clif->message(fd, msg_fd(fd,1017)); // Please enter a valid number (usage: @pethungry <0-100>). return false; } pd = sd->pd; if (!sd->status.pet_id || !pd) { - clif->message(fd, msg_txt(184)); // Sorry, but you have no pet. + clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet. return false; } if (hungry < 0 || hungry > 100) { - 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; } if (hungry == pd->pet.hungry) { - clif->message(fd, msg_txt(186)); // Pet hunger is already at maximum. + clif->message(fd, msg_fd(fd,186)); // Pet hunger is already at maximum. return false; } pd->pet.hungry = hungry; clif->send_petstatus(sd); - clif->message(fd, msg_txt(185)); // Pet hunger changed. + clif->message(fd, msg_fd(fd,185)); // Pet hunger changed. return true; } @@ -2615,19 +2659,19 @@ ACMD(petrename) { struct pet_data *pd; if (!sd->status.pet_id || !sd->pd) { - clif->message(fd, msg_txt(184)); // Sorry, but you have no pet. + clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet. return false; } pd = sd->pd; if (!pd->pet.rename_flag) { - clif->message(fd, msg_txt(188)); // You can already rename your pet. + clif->message(fd, msg_fd(fd,188)); // You can already rename your pet. return false; } pd->pet.rename_flag = 0; intif->save_petdata(sd->status.account_id, &pd->pet); clif->send_petstatus(sd); - clif->message(fd, msg_txt(187)); // You can now rename your pet. + clif->message(fd, msg_fd(fd,187)); // You can now rename your pet. return true; } @@ -2639,34 +2683,34 @@ ACMD(recall) { struct map_session_data *pl_sd = NULL; if (!message || !*message) { - clif->message(fd, msg_txt(1018)); // Please enter a player name (usage: @recall <char name/ID>). + clif->message(fd, msg_fd(fd,1018)); // Please enter a player name (usage: @recall <char name/ID>). return false; } if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) { - clif->message(fd, msg_txt(81)); // Your GM level doesn't authorize you to preform this action on the specified player. + clif->message(fd, msg_fd(fd,81)); // Your GM level doesn't authorize you to preform this action on the specified player. return false; } if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(1019)); // You are not authorized to warp someone to this map. + clif->message(fd, msg_fd(fd,1019)); // You are not authorized to warp someone to this map. return false; } if (pl_sd->bl.m >= 0 && map->list[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(1020)); // You are not authorized to warp this player from their map. + clif->message(fd, msg_fd(fd,1020)); // You are not authorized to warp this player from their map. return false; } if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) { return false; } pc->setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); - sprintf(atcmd_output, msg_txt(46), pl_sd->status.name); // %s recalled! + sprintf(atcmd_output, msg_fd(fd,46), pl_sd->status.name); // %s recalled! clif->message(fd, atcmd_output); return true; @@ -2682,12 +2726,12 @@ ACMD(char_block) memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { - clif->message(fd, msg_txt(1021)); // Please enter a player name (usage: @block <char name>). + clif->message(fd, msg_fd(fd,1021)); // Please enter a player name (usage: @block <char name>). return false; } chrif->char_ask_name(sd->status.account_id, atcmd_player_name, 1, 0, 0, 0, 0, 0, 0); // type: 1 - block - clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it. + clif->message(fd, msg_fd(fd,88)); // Character name sent to char-server to ask it. return true; } @@ -2718,7 +2762,7 @@ ACMD(char_ban) memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); if (!message || !*message || sscanf(message, "%255s %23[^\n]", atcmd_output, atcmd_player_name) < 2) { - clif->message(fd, msg_txt(1022)); // Please enter ban time and a player name (usage: @ban <time> <char name>). + clif->message(fd, msg_fd(fd,1022)); // Please enter ban time and a player name (usage: @ban <time> <char name>). return false; } @@ -2762,7 +2806,7 @@ ACMD(char_ban) } } if (year == 0 && month == 0 && day == 0 && hour == 0 && minute == 0 && second == 0) { - clif->message(fd, msg_txt(85)); // Invalid time for ban command. + clif->message(fd, msg_fd(fd,85)); // Invalid time for ban command. return false; } /** @@ -2778,12 +2822,12 @@ ACMD(char_ban) tmtime->tm_sec = tmtime->tm_sec + second; timestamp = mktime(tmtime); if( timestamp <= time(NULL) && !pc->can_use_command(sd, "@unban") ) { - clif->message(fd,msg_txt(1023)); // You are not allowed to reduce the length of a ban. + clif->message(fd,msg_fd(fd,1023)); // You are not allowed to reduce the length of a ban. return false; } chrif->char_ask_name(sd->status.account_id, atcmd_player_name, !strcmpi(info->command,"charban") ? 6 : 2, year, month, day, hour, minute, second); // type: 2 - ban; 6 - charban - clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it. + clif->message(fd, msg_fd(fd,88)); // Character name sent to char-server to ask it. return true; } @@ -2796,13 +2840,13 @@ ACMD(char_unblock) memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { - clif->message(fd, msg_txt(1024)); // Please enter a player name (usage: @unblock <char name>). + clif->message(fd, msg_fd(fd,1024)); // Please enter a player name (usage: @unblock <char name>). return false; } // send answer to login server via char-server chrif->char_ask_name(sd->status.account_id, atcmd_player_name, 3, 0, 0, 0, 0, 0, 0); // type: 3 - unblock - clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it. + clif->message(fd, msg_fd(fd,88)); // Character name sent to char-server to ask it. return true; } @@ -2815,13 +2859,13 @@ ACMD(char_unban) memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { - clif->message(fd, msg_txt(1025)); // Please enter a player name (usage: @unban <char name>). + clif->message(fd, msg_fd(fd,1025)); // Please enter a player name (usage: @unban <char name>). return false; } // send answer to login server via char-server chrif->char_ask_name(sd->status.account_id, atcmd_player_name, !strcmpi(info->command,"charunban") ? 7 : 4, 0, 0, 0, 0, 0, 0); // type: 4 - unban account; type 7 - unban character - clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it. + clif->message(fd, msg_fd(fd,88)); // Character name sent to char-server to ask it. return true; } @@ -2834,7 +2878,7 @@ ACMD(night) if (map->night_flag != 1) { pc->map_night_timer(pc->night_timer_tid, 0, 0, 1); } else { - clif->message(fd, msg_txt(89)); // Night mode is already enabled. + clif->message(fd, msg_fd(fd,89)); // Night mode is already enabled. return false; } @@ -2849,7 +2893,7 @@ ACMD(day) if (map->night_flag != 0) { pc->map_day_timer(pc->day_timer_tid, 0, 0, 1); } else { - clif->message(fd, msg_txt(90)); // Day mode is already enabled. + clif->message(fd, msg_fd(fd,90)); // Day mode is already enabled. return false; } @@ -2871,12 +2915,12 @@ ACMD(doom) { status_kill(&pl_sd->bl); clif->specialeffect(&pl_sd->bl,450,AREA); - clif->message(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgment. + clif->message(pl_sd->fd, msg_fd(fd,61)); // The holy messenger has given judgment. } } mapit->free(iter); - clif->message(fd, msg_txt(62)); // Judgment was made. + clif->message(fd, msg_fd(fd,62)); // Judgment was made. return true; } @@ -2896,12 +2940,12 @@ ACMD(doommap) { status_kill(&pl_sd->bl); clif->specialeffect(&pl_sd->bl,450,AREA); - clif->message(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgment. + clif->message(pl_sd->fd, msg_fd(fd,61)); // The holy messenger has given judgment. } } mapit->free(iter); - clif->message(fd, msg_txt(62)); // Judgment was made. + clif->message(fd, msg_fd(fd,62)); // Judgment was made. return true; } @@ -2914,7 +2958,7 @@ void atcommand_raise_sub(struct map_session_data* sd) status->revive(&sd->bl, 100, 100); clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1); - clif->message(sd->fd, msg_txt(63)); // Mercy has been shown. + clif->message(sd->fd, msg_sd(sd,63)); // Mercy has been shown. } /*========================================== @@ -2931,7 +2975,7 @@ ACMD(raise) atcommand->raise_sub(pl_sd); mapit->free(iter); - clif->message(fd, msg_txt(64)); // Mercy has been granted. + clif->message(fd, msg_fd(fd,64)); // Mercy has been granted. return true; } @@ -2950,7 +2994,7 @@ ACMD(raisemap) atcommand->raise_sub(pl_sd); mapit->free(iter); - clif->message(fd, msg_txt(64)); // Mercy has been granted. + clif->message(fd, msg_fd(fd,64)); // Mercy has been granted. return true; } @@ -2965,18 +3009,18 @@ ACMD(kick) memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); if (!message || !*message) { - clif->message(fd, msg_txt(1026)); // Please enter a player name (usage: @kick <char name/ID>). + clif->message(fd, msg_fd(fd,1026)); // Please enter a player name (usage: @kick <char name/ID>). return false; } if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) { - clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player. + clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player. return false; } @@ -3003,7 +3047,7 @@ ACMD(kickall) } mapit->free(iter); - clif->message(fd, msg_txt(195)); // All players have been kicked! + clif->message(fd, msg_fd(fd,195)); // All players have been kicked! return true; } @@ -3016,7 +3060,7 @@ ACMD(allskill) pc->allskillup(sd); // all skills sd->status.skill_point = 0; // 0 skill points clif->updatestatus(sd, SP_SKILLPOINT); // update - clif->message(fd, msg_txt(76)); // All skills have been added to your skill tree. + clif->message(fd, msg_fd(fd,76)); // All skills have been added to your skill tree. return true; } @@ -3036,7 +3080,7 @@ ACMD(questskill) text = atcommand_help_string( info ); // send the error message as always - clif->message(fd, msg_txt(1027)); // Please enter a quest skill number. + clif->message(fd, msg_fd(fd,1027)); // Please enter a quest skill number. if( text ) {// send the skill ID list associated with this command clif->messageln( fd, text ); @@ -3045,20 +3089,20 @@ ACMD(questskill) return false; } if( !(index = skill->get_index(skill_id)) ) { - clif->message(fd, msg_txt(198)); // This skill number doesn't exist. + clif->message(fd, msg_fd(fd,198)); // This skill number doesn't exist. return false; } if (!(skill->get_inf2(skill_id) & INF2_QUEST_SKILL)) { - clif->message(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill. + clif->message(fd, msg_fd(fd,197)); // This skill number doesn't exist or isn't a quest skill. return false; } if (pc->checkskill2(sd, index) > 0) { - clif->message(fd, msg_txt(196)); // You already have this quest skill. + clif->message(fd, msg_fd(fd,196)); // You already have this quest skill. return false; } pc->skill(sd, skill_id, 1, 0); - clif->message(fd, msg_txt(70)); // You have learned the skill. + clif->message(fd, msg_fd(fd,70)); // You have learned the skill. return true; } @@ -3078,7 +3122,7 @@ ACMD(lostskill) text = atcommand_help_string( info ); // send the error message as always - clif->message(fd, msg_txt(1027)); // Please enter a quest skill number. + clif->message(fd, msg_fd(fd,1027)); // Please enter a quest skill number. if( text ) {// send the skill ID list associated with this command clif->messageln( fd, text ); @@ -3087,22 +3131,22 @@ ACMD(lostskill) return false; } if ( !( index = skill->get_index(skill_id) ) ) { - clif->message(fd, msg_txt(198)); // This skill number doesn't exist. + clif->message(fd, msg_fd(fd,198)); // This skill number doesn't exist. return false; } if (!(skill->get_inf2(skill_id) & INF2_QUEST_SKILL)) { - clif->message(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill. + clif->message(fd, msg_fd(fd,197)); // This skill number doesn't exist or isn't a quest skill. return false; } if (pc->checkskill2(sd, index) == 0) { - clif->message(fd, msg_txt(201)); // You don't have this quest skill. + clif->message(fd, msg_fd(fd,201)); // You don't have this quest skill. return false; } sd->status.skill[index].lv = 0; sd->status.skill[index].flag = 0; clif->deleteskill(sd,skill_id); - clif->message(fd, msg_txt(71)); // You have forgotten the skill. + clif->message(fd, msg_fd(fd,71)); // You have forgotten the skill. return true; } @@ -3120,7 +3164,7 @@ ACMD(spiritball) if( !message || !*message || (number = atoi(message)) < 0 || number > max_spiritballs ) { char msg[CHAT_SIZE_MAX]; - safesnprintf(msg, sizeof(msg), msg_txt(1028), max_spiritballs); // Please enter an amount (usage: @spiritball <number: 0-%d>). + safesnprintf(msg, sizeof(msg), msg_fd(fd,1028), max_spiritballs); // Please enter an amount (usage: @spiritball <number: 0-%d>). clif->message(fd, msg); return false; } @@ -3144,7 +3188,7 @@ ACMD(party) memset(party_name, '\0', sizeof(party_name)); if (!message || !*message || sscanf(message, "%23[^\n]", party_name) < 1) { - clif->message(fd, msg_txt(1029)); // Please enter a party name (usage: @party <party_name>). + clif->message(fd, msg_fd(fd,1029)); // Please enter a party name (usage: @party <party_name>). return false; } @@ -3164,7 +3208,7 @@ ACMD(guild) memset(guild_name, '\0', sizeof(guild_name)); if (!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) { - clif->message(fd, msg_txt(1030)); // Please enter a guild name (usage: @guild <guild_name>). + clif->message(fd, msg_fd(fd,1030)); // Please enter a guild name (usage: @guild <guild_name>). return false; } @@ -3191,15 +3235,15 @@ ACMD(breakguild) return false; // Something went wrong } } else { // Not guild master - clif->message(fd, msg_txt(1181)); // You need to be a Guild Master to use this command. + clif->message(fd, msg_fd(fd,1181)); // You need to be a Guild Master to use this command. return false; } } else { // Guild was not found. HOW? - clif->message(fd, msg_txt(252)); // You are not in a guild. + clif->message(fd, msg_fd(fd,252)); // You are not in a guild. return false; } } else { // Player does not have a guild - clif->message(fd, msg_txt(252)); // You are not in a guild. + clif->message(fd, msg_fd(fd,252)); // You are not in a guild. return false; } return true; @@ -3210,13 +3254,13 @@ ACMD(breakguild) *------------------------------------------*/ ACMD(agitstart) { if (map->agit_flag == 1) { - clif->message(fd, msg_txt(73)); // War of Emperium is currently in progress. + clif->message(fd, msg_fd(fd,73)); // War of Emperium is currently in progress. return false; } map->agit_flag = 1; guild->agit_start(); - clif->message(fd, msg_txt(72)); // War of Emperium has been initiated. + clif->message(fd, msg_fd(fd,72)); // War of Emperium has been initiated. return true; } @@ -3226,13 +3270,13 @@ ACMD(agitstart) { *------------------------------------------*/ ACMD(agitstart2) { if (map->agit2_flag == 1) { - clif->message(fd, msg_txt(404)); // "War of Emperium SE is currently in progress." + clif->message(fd, msg_fd(fd,404)); // "War of Emperium SE is currently in progress." return false; } map->agit2_flag = 1; guild->agit2_start(); - clif->message(fd, msg_txt(403)); // "War of Emperium SE has been initiated." + clif->message(fd, msg_fd(fd,403)); // "War of Emperium SE has been initiated." return true; } @@ -3242,13 +3286,13 @@ ACMD(agitstart2) { *------------------------------------------*/ ACMD(agitend) { if (map->agit_flag == 0) { - clif->message(fd, msg_txt(75)); // War of Emperium is currently not in progress. + clif->message(fd, msg_fd(fd,75)); // War of Emperium is currently not in progress. return false; } map->agit_flag = 0; guild->agit_end(); - clif->message(fd, msg_txt(74)); // War of Emperium has been ended. + clif->message(fd, msg_fd(fd,74)); // War of Emperium has been ended. return true; } @@ -3258,13 +3302,13 @@ ACMD(agitend) { *------------------------------------------*/ ACMD(agitend2) { if (map->agit2_flag == 0) { - clif->message(fd, msg_txt(406)); // "War of Emperium SE is currently not in progress." + clif->message(fd, msg_fd(fd,406)); // "War of Emperium SE is currently not in progress." return false; } map->agit2_flag = 0; guild->agit2_end(); - clif->message(fd, msg_txt(405)); // "War of Emperium SE has been ended." + clif->message(fd, msg_fd(fd,405)); // "War of Emperium SE has been ended." return true; } @@ -3290,23 +3334,23 @@ ACMD(idsearch) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%99s", item_name) < 0) { - clif->message(fd, msg_txt(1031)); // Please enter part of an item name (usage: @idsearch <part_of_item_name>). + clif->message(fd, msg_fd(fd,1031)); // Please enter part of an item name (usage: @idsearch <part_of_item_name>). return false; } - sprintf(atcmd_output, msg_txt(77), item_name); // Search results for '%s' (name: id): + sprintf(atcmd_output, msg_fd(fd,77), item_name); // Search results for '%s' (name: id): clif->message(fd, atcmd_output); match = itemdb->search_name_array(item_array, MAX_SEARCH, item_name, 0); if (match > MAX_SEARCH) { - sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, match); + sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, match); clif->message(fd, atcmd_output); match = MAX_SEARCH; } for(i = 0; i < match; i++) { - sprintf(atcmd_output, msg_txt(78), item_array[i]->jname, item_array[i]->nameid); // %s: %d + sprintf(atcmd_output, msg_fd(fd,78), item_array[i]->jname, item_array[i]->nameid); // %s: %d clif->message(fd, atcmd_output); } - sprintf(atcmd_output, msg_txt(79), match); // %d results found. + sprintf(atcmd_output, msg_fd(fd,79), match); // %d results found. clif->message(fd, atcmd_output); return true; @@ -3324,7 +3368,7 @@ ACMD(recallall) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(1032)); // You are not authorized to warp someone to your current map. + clif->message(fd, msg_fd(fd,1032)); // You are not authorized to warp someone to your current map. return false; } @@ -3347,9 +3391,9 @@ ACMD(recallall) } mapit->free(iter); - clif->message(fd, msg_txt(92)); // All characters recalled! + clif->message(fd, msg_fd(fd,92)); // All characters recalled! if (count) { - sprintf(atcmd_output, msg_txt(1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled. + sprintf(atcmd_output, msg_fd(fd,1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled. clif->message(fd, atcmd_output); } @@ -3371,19 +3415,19 @@ ACMD(guildrecall) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) { - clif->message(fd, msg_txt(1034)); // Please enter a guild name/ID (usage: @guildrecall <guild_name/ID>). + clif->message(fd, msg_fd(fd,1034)); // Please enter a guild name/ID (usage: @guildrecall <guild_name/ID>). return false; } if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(1032)); // You are not authorized to warp someone to your current map. + clif->message(fd, msg_fd(fd,1032)); // You are not authorized to warp someone to your current map. return false; } if ((g = guild->searchname(guild_name)) == NULL && // name first to avoid error when name begin with a number (g = guild->search(atoi(message))) == NULL) { - clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online. + clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the guild is online. return false; } @@ -3403,10 +3447,10 @@ ACMD(guildrecall) } mapit->free(iter); - sprintf(atcmd_output, msg_txt(93), g->name); // All online characters of the %s guild have been recalled to your position. + sprintf(atcmd_output, msg_fd(fd,93), g->name); // All online characters of the %s guild have been recalled to your position. clif->message(fd, atcmd_output); if (count) { - sprintf(atcmd_output, msg_txt(1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled. + sprintf(atcmd_output, msg_fd(fd,1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled. clif->message(fd, atcmd_output); } @@ -3428,19 +3472,19 @@ ACMD(partyrecall) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message || sscanf(message, "%23[^\n]", party_name) < 1) { - clif->message(fd, msg_txt(1035)); // Please enter a party name/ID (usage: @partyrecall <party_name/ID>). + clif->message(fd, msg_fd(fd,1035)); // Please enter a party name/ID (usage: @partyrecall <party_name/ID>). return false; } if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { - clif->message(fd, msg_txt(1032)); // You are not authorized to warp someone to your current map. + clif->message(fd, msg_fd(fd,1032)); // You are not authorized to warp someone to your current map. return false; } if ((p = party->searchname(party_name)) == NULL && // name first to avoid error when name begin with a number (p = party->search(atoi(message))) == NULL) { - clif->message(fd, msg_txt(96)); // Incorrect name or ID, or no one from the party is online. + clif->message(fd, msg_fd(fd,96)); // Incorrect name or ID, or no one from the party is online. return false; } @@ -3459,10 +3503,10 @@ ACMD(partyrecall) } mapit->free(iter); - sprintf(atcmd_output, msg_txt(95), p->party.name); // All online characters of the %s party have been recalled to your position. + sprintf(atcmd_output, msg_fd(fd,95), p->party.name); // All online characters of the %s party have been recalled to your position. clif->message(fd, atcmd_output); if (count) { - sprintf(atcmd_output, msg_txt(1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled. + sprintf(atcmd_output, msg_fd(fd,1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled. clif->message(fd, atcmd_output); } @@ -3475,7 +3519,7 @@ ACMD(partyrecall) ACMD(reloaditemdb) { itemdb->reload(); - clif->message(fd, msg_txt(97)); // Item database has been reloaded. + clif->message(fd, msg_fd(fd,97)); // Item database has been reloaded. return true; } @@ -3490,7 +3534,7 @@ ACMD(reloadmobdb) { mercenary->read_db(); mercenary->read_skilldb(); elemental->reload_db(); - clif->message(fd, msg_txt(98)); // Monster database has been reloaded. + clif->message(fd, msg_fd(fd,98)); // Monster database has been reloaded. return true; } @@ -3504,7 +3548,7 @@ ACMD(reloadskilldb) homun->reload_skill(); elemental->reload_skilldb(); mercenary->read_skilldb(); - clif->message(fd, msg_txt(99)); // Skill database has been reloaded. + clif->message(fd, msg_fd(fd,99)); // Skill database has been reloaded. return true; } @@ -3516,14 +3560,14 @@ ACMD(reloadatcommand) { config_t run_test; if (libconfig->read_file(&run_test, "conf/groups.conf")) { - clif->message(fd, msg_txt(1036)); // Error reading groups.conf, reload failed. + clif->message(fd, msg_fd(fd,1036)); // Error reading groups.conf, reload failed. return false; } libconfig->destroy(&run_test); if (libconfig->read_file(&run_test, map->ATCOMMAND_CONF_FILENAME)) { - clif->message(fd, msg_txt(1037)); // Error reading atcommand.conf, reload failed. + clif->message(fd, msg_fd(fd,1037)); // Error reading atcommand.conf, reload failed. return false; } @@ -3531,7 +3575,7 @@ ACMD(reloadatcommand) { atcommand->doload(); pcg->reload(); - clif->message(fd, msg_txt(254)); + clif->message(fd, msg_fd(fd,254)); return true; } /*========================================== @@ -3578,7 +3622,7 @@ ACMD(reloadbattleconf) mob->reload(); //Needed as well so rate changes take effect. chrif->ragsrvinfo(battle_config.base_exp_rate, battle_config.job_exp_rate, battle_config.item_rate_common); } - clif->message(fd, msg_txt(255)); + clif->message(fd, msg_fd(fd,255)); return true; } /*========================================== @@ -3586,7 +3630,7 @@ ACMD(reloadbattleconf) *------------------------------------------*/ ACMD(reloadstatusdb) { status->readdb(); - clif->message(fd, msg_txt(256)); + clif->message(fd, msg_fd(fd,256)); return true; } /*========================================== @@ -3595,7 +3639,7 @@ ACMD(reloadstatusdb) { ACMD(reloadpcdb) { pc->readdb(); - clif->message(fd, msg_txt(257)); + clif->message(fd, msg_fd(fd,257)); return true; } @@ -3634,7 +3678,7 @@ ACMD(reloadscript) { script->reload(); npc->reload(); - clif->message(fd, msg_txt(100)); // Scripts have been reloaded. + clif->message(fd, msg_fd(fd,100)); // Scripts have been reloaded. return true; } @@ -3664,7 +3708,7 @@ ACMD(mapinfo) { sscanf(message, "%d %23[^\n]", &list, mapname); if (list < 0 || list > 3) { - clif->message(fd, msg_txt(1038)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>). + clif->message(fd, msg_fd(fd,1038)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>). return false; } @@ -3676,12 +3720,12 @@ ACMD(mapinfo) { } if (m_id < 0) { - clif->message(fd, msg_txt(1)); // Map not found. + clif->message(fd, msg_fd(fd,1)); // Map not found. return false; } m_index = mapindex->name2id(mapname); //This one shouldn't fail since the previous seek did not. - clif->message(fd, msg_txt(1039)); // ------ Map Info ------ + clif->message(fd, msg_fd(fd,1039)); // ------ Map Info ------ // count chats (for initial message) chat_num = 0; @@ -3696,130 +3740,130 @@ ACMD(mapinfo) { } mapit->free(iter); - sprintf(atcmd_output, msg_txt(1040), mapname, map->list[m_id].zone->name, map->list[m_id].users, map->list[m_id].npc_num, chat_num, vend_num); // Map: %s (Zone:%s) | Players: %d | NPCs: %d | Chats: %d | Vendings: %d + sprintf(atcmd_output, msg_fd(fd,1040), mapname, map->list[m_id].zone->name, map->list[m_id].users, map->list[m_id].npc_num, chat_num, vend_num); // Map: %s (Zone:%s) | Players: %d | NPCs: %d | Chats: %d | Vendings: %d clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1041)); // ------ Map Flags ------ + clif->message(fd, msg_fd(fd,1041)); // ------ Map Flags ------ if (map->list[m_id].flag.town) - clif->message(fd, msg_txt(1042)); // Town Map + clif->message(fd, msg_fd(fd,1042)); // Town Map if (battle_config.autotrade_mapflag == map->list[m_id].flag.autotrade) - clif->message(fd, msg_txt(1043)); // Autotrade Enabled + clif->message(fd, msg_fd(fd,1043)); // Autotrade Enabled else - clif->message(fd, msg_txt(1044)); // Autotrade Disabled + clif->message(fd, msg_fd(fd,1044)); // Autotrade Disabled if (map->list[m_id].flag.battleground) - clif->message(fd, msg_txt(1045)); // Battlegrounds ON + clif->message(fd, msg_fd(fd,1045)); // Battlegrounds ON - strcpy(atcmd_output,msg_txt(1046)); // PvP Flags: + strcpy(atcmd_output,msg_fd(fd,1046)); // PvP Flags: if (map->list[m_id].flag.pvp) - strcat(atcmd_output, msg_txt(1047)); // Pvp ON | + strcat(atcmd_output, msg_fd(fd,1047)); // Pvp ON | if (map->list[m_id].flag.pvp_noguild) - strcat(atcmd_output, msg_txt(1048)); // NoGuild | + strcat(atcmd_output, msg_fd(fd,1048)); // NoGuild | if (map->list[m_id].flag.pvp_noparty) - strcat(atcmd_output, msg_txt(1049)); // NoParty | + strcat(atcmd_output, msg_fd(fd,1049)); // NoParty | if (map->list[m_id].flag.pvp_nightmaredrop) - strcat(atcmd_output, msg_txt(1050)); // NightmareDrop | + strcat(atcmd_output, msg_fd(fd,1050)); // NightmareDrop | if (map->list[m_id].flag.pvp_nocalcrank) - strcat(atcmd_output, msg_txt(1051)); // NoCalcRank | + strcat(atcmd_output, msg_fd(fd,1051)); // NoCalcRank | clif->message(fd, atcmd_output); - strcpy(atcmd_output,msg_txt(1052)); // GvG Flags: + strcpy(atcmd_output,msg_fd(fd,1052)); // GvG Flags: if (map->list[m_id].flag.gvg) - strcat(atcmd_output, msg_txt(1053)); // GvG ON | + strcat(atcmd_output, msg_fd(fd,1053)); // GvG ON | if (map->list[m_id].flag.gvg_dungeon) - strcat(atcmd_output, msg_txt(1054)); // GvG Dungeon | + strcat(atcmd_output, msg_fd(fd,1054)); // GvG Dungeon | if (map->list[m_id].flag.gvg_castle) - strcat(atcmd_output, msg_txt(1055)); // GvG Castle | + strcat(atcmd_output, msg_fd(fd,1055)); // GvG Castle | if (map->list[m_id].flag.gvg_noparty) - strcat(atcmd_output, msg_txt(1056)); // NoParty | + strcat(atcmd_output, msg_fd(fd,1056)); // NoParty | clif->message(fd, atcmd_output); - strcpy(atcmd_output,msg_txt(1057)); // Teleport Flags: + strcpy(atcmd_output,msg_fd(fd,1057)); // Teleport Flags: if (map->list[m_id].flag.noteleport) - strcat(atcmd_output, msg_txt(1058)); // NoTeleport | + strcat(atcmd_output, msg_fd(fd,1058)); // NoTeleport | if (map->list[m_id].flag.monster_noteleport) - strcat(atcmd_output, msg_txt(1059)); // Monster NoTeleport | + strcat(atcmd_output, msg_fd(fd,1059)); // Monster NoTeleport | if (map->list[m_id].flag.nowarp) - strcat(atcmd_output, msg_txt(1060)); // NoWarp | + strcat(atcmd_output, msg_fd(fd,1060)); // NoWarp | if (map->list[m_id].flag.nowarpto) - strcat(atcmd_output, msg_txt(1061)); // NoWarpTo | + strcat(atcmd_output, msg_fd(fd,1061)); // NoWarpTo | if (map->list[m_id].flag.noreturn) - strcat(atcmd_output, msg_txt(1062)); // NoReturn | + strcat(atcmd_output, msg_fd(fd,1062)); // NoReturn | if (map->list[m_id].flag.nomemo) - strcat(atcmd_output, msg_txt(1064)); // NoMemo | + strcat(atcmd_output, msg_fd(fd,1064)); // NoMemo | clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1065), // No Exp Penalty: %s | No Zeny Penalty: %s - (map->list[m_id].flag.noexppenalty) ? msg_txt(1066) : msg_txt(1067), - (map->list[m_id].flag.nozenypenalty) ? msg_txt(1066) : msg_txt(1067)); // On / Off + sprintf(atcmd_output, msg_fd(fd,1065), // No Exp Penalty: %s | No Zeny Penalty: %s + (map->list[m_id].flag.noexppenalty) ? msg_fd(fd,1066) : msg_fd(fd,1067), + (map->list[m_id].flag.nozenypenalty) ? msg_fd(fd,1066) : msg_fd(fd,1067)); // On / Off clif->message(fd, atcmd_output); if (map->list[m_id].flag.nosave) { if (!map->list[m_id].save.map) - clif->message(fd, msg_txt(1068)); // No Save (Return to last Save Point) + clif->message(fd, msg_fd(fd,1068)); // No Save (Return to last Save Point) else if (map->list[m_id].save.x == -1 || map->list[m_id].save.y == -1 ) { - sprintf(atcmd_output, msg_txt(1069), mapindex_id2name(map->list[m_id].save.map)); // No Save, Save Point: %s,Random + sprintf(atcmd_output, msg_fd(fd,1069), mapindex_id2name(map->list[m_id].save.map)); // No Save, Save Point: %s,Random clif->message(fd, atcmd_output); } else { - sprintf(atcmd_output, msg_txt(1070), // No Save, Save Point: %s,%d,%d + sprintf(atcmd_output, msg_fd(fd,1070), // No Save, Save Point: %s,%d,%d mapindex_id2name(map->list[m_id].save.map),map->list[m_id].save.x,map->list[m_id].save.y); clif->message(fd, atcmd_output); } } - strcpy(atcmd_output,msg_txt(1071)); // Weather Flags: + strcpy(atcmd_output,msg_fd(fd,1071)); // Weather Flags: if (map->list[m_id].flag.snow) - strcat(atcmd_output, msg_txt(1072)); // Snow | + strcat(atcmd_output, msg_fd(fd,1072)); // Snow | if (map->list[m_id].flag.fog) - strcat(atcmd_output, msg_txt(1073)); // Fog | + strcat(atcmd_output, msg_fd(fd,1073)); // Fog | if (map->list[m_id].flag.sakura) - strcat(atcmd_output, msg_txt(1074)); // Sakura | + strcat(atcmd_output, msg_fd(fd,1074)); // Sakura | if (map->list[m_id].flag.clouds) - strcat(atcmd_output, msg_txt(1075)); // Clouds | + strcat(atcmd_output, msg_fd(fd,1075)); // Clouds | if (map->list[m_id].flag.clouds2) - strcat(atcmd_output, msg_txt(1076)); // Clouds2 | + strcat(atcmd_output, msg_fd(fd,1076)); // Clouds2 | if (map->list[m_id].flag.fireworks) - strcat(atcmd_output, msg_txt(1077)); // Fireworks | + strcat(atcmd_output, msg_fd(fd,1077)); // Fireworks | if (map->list[m_id].flag.leaves) - strcat(atcmd_output, msg_txt(1078)); // Leaves | + strcat(atcmd_output, msg_fd(fd,1078)); // Leaves | if (map->list[m_id].flag.nightenabled) - strcat(atcmd_output, msg_txt(1080)); // Displays Night | + strcat(atcmd_output, msg_fd(fd,1080)); // Displays Night | clif->message(fd, atcmd_output); - strcpy(atcmd_output,msg_txt(1081)); // Other Flags: + strcpy(atcmd_output,msg_fd(fd,1081)); // Other Flags: if (map->list[m_id].flag.nobranch) - strcat(atcmd_output, msg_txt(1082)); // NoBranch | + strcat(atcmd_output, msg_fd(fd,1082)); // NoBranch | if (map->list[m_id].flag.notrade) - strcat(atcmd_output, msg_txt(1083)); // NoTrade | + strcat(atcmd_output, msg_fd(fd,1083)); // NoTrade | if (map->list[m_id].flag.novending) - strcat(atcmd_output, msg_txt(1084)); // NoVending | + strcat(atcmd_output, msg_fd(fd,1084)); // NoVending | if (map->list[m_id].flag.nodrop) - strcat(atcmd_output, msg_txt(1085)); // NoDrop | + strcat(atcmd_output, msg_fd(fd,1085)); // NoDrop | if (map->list[m_id].flag.noskill) - strcat(atcmd_output, msg_txt(1086)); // NoSkill | + strcat(atcmd_output, msg_fd(fd,1086)); // NoSkill | if (map->list[m_id].flag.noicewall) - strcat(atcmd_output, msg_txt(1087)); // NoIcewall | + strcat(atcmd_output, msg_fd(fd,1087)); // NoIcewall | if (map->list[m_id].flag.allowks) - strcat(atcmd_output, msg_txt(1088)); // AllowKS | + strcat(atcmd_output, msg_fd(fd,1088)); // AllowKS | if (map->list[m_id].flag.reset) - strcat(atcmd_output, msg_txt(1089)); // Reset | + strcat(atcmd_output, msg_fd(fd,1089)); // Reset | clif->message(fd, atcmd_output); - strcpy(atcmd_output,msg_txt(1090)); // Other Flags: + strcpy(atcmd_output,msg_fd(fd,1090)); // Other Flags: if (map->list[m_id].nocommand) - strcat(atcmd_output, msg_txt(1091)); // NoCommand | + strcat(atcmd_output, msg_fd(fd,1091)); // NoCommand | if (map->list[m_id].flag.nobaseexp) - strcat(atcmd_output, msg_txt(1092)); // NoBaseEXP | + strcat(atcmd_output, msg_fd(fd,1092)); // NoBaseEXP | if (map->list[m_id].flag.nojobexp) - strcat(atcmd_output, msg_txt(1093)); // NoJobEXP | + strcat(atcmd_output, msg_fd(fd,1093)); // NoJobEXP | if (map->list[m_id].flag.nomobloot) - strcat(atcmd_output, msg_txt(1094)); // NoMobLoot | + strcat(atcmd_output, msg_fd(fd,1094)); // NoMobLoot | if (map->list[m_id].flag.nomvploot) - strcat(atcmd_output, msg_txt(1095)); // NoMVPLoot | + strcat(atcmd_output, msg_fd(fd,1095)); // NoMVPLoot | if (map->list[m_id].flag.partylock) - strcat(atcmd_output, msg_txt(1096)); // PartyLock | + strcat(atcmd_output, msg_fd(fd,1096)); // PartyLock | if (map->list[m_id].flag.guildlock) - strcat(atcmd_output, msg_txt(1097)); // GuildLock | + strcat(atcmd_output, msg_fd(fd,1097)); // GuildLock | clif->message(fd, atcmd_output); switch (list) { @@ -3827,12 +3871,12 @@ ACMD(mapinfo) { // Do nothing. It's list 0, no additional display. break; case 1: - clif->message(fd, msg_txt(1098)); // ----- Players in Map ----- + clif->message(fd, msg_fd(fd,1098)); // ----- Players in Map ----- iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { if (pl_sd->mapindex == m_index) { - sprintf(atcmd_output, msg_txt(1099), // Player '%s' (session #%d) | Location: %d,%d + sprintf(atcmd_output, msg_fd(fd,1099), // Player '%s' (session #%d) | Location: %d,%d pl_sd->status.name, pl_sd->fd, pl_sd->bl.x, pl_sd->bl.y); clif->message(fd, atcmd_output); } @@ -3840,32 +3884,32 @@ ACMD(mapinfo) { mapit->free(iter); break; case 2: - clif->message(fd, msg_txt(1100)); // ----- NPCs in Map ----- + clif->message(fd, msg_fd(fd,1100)); // ----- NPCs in Map ----- for (i = 0; i < map->list[m_id].npc_num;) { struct npc_data *nd = map->list[m_id].npc[i]; switch(nd->dir) { - case 0: strcpy(direction, msg_txt(1101)); break; // North - case 1: strcpy(direction, msg_txt(1102)); break; // North West - case 2: strcpy(direction, msg_txt(1103)); break; // West - case 3: strcpy(direction, msg_txt(1104)); break; // South West - case 4: strcpy(direction, msg_txt(1105)); break; // South - case 5: strcpy(direction, msg_txt(1106)); break; // South East - case 6: strcpy(direction, msg_txt(1107)); break; // East - case 7: strcpy(direction, msg_txt(1108)); break; // North East - case 9: strcpy(direction, msg_txt(1109)); break; // North - default: strcpy(direction, msg_txt(1110)); break; // Unknown + case 0: strcpy(direction, msg_fd(fd,1101)); break; // North + case 1: strcpy(direction, msg_fd(fd,1102)); break; // North West + case 2: strcpy(direction, msg_fd(fd,1103)); break; // West + case 3: strcpy(direction, msg_fd(fd,1104)); break; // South West + case 4: strcpy(direction, msg_fd(fd,1105)); break; // South + case 5: strcpy(direction, msg_fd(fd,1106)); break; // South East + case 6: strcpy(direction, msg_fd(fd,1107)); break; // East + case 7: strcpy(direction, msg_fd(fd,1108)); break; // North East + case 9: strcpy(direction, msg_fd(fd,1109)); break; // North + default: strcpy(direction, msg_fd(fd,1110)); break; // Unknown } if(strcmp(nd->name,nd->exname) == 0) - sprintf(atcmd_output, msg_txt(1111), // NPC %d: %s | Direction: %s | Sprite: %d | Location: %d %d + sprintf(atcmd_output, msg_fd(fd,1111), // NPC %d: %s | Direction: %s | Sprite: %d | Location: %d %d ++i, nd->name, direction, nd->class_, nd->bl.x, nd->bl.y); else - sprintf(atcmd_output, msg_txt(1112), // NPC %d: %s::%s | Direction: %s | Sprite: %d | Location: %d %d + sprintf(atcmd_output, msg_fd(fd,1112), // NPC %d: %s::%s | Direction: %s | Sprite: %d | Location: %d %d ++i, nd->name, nd->exname, direction, nd->class_, nd->bl.x, nd->bl.y); clif->message(fd, atcmd_output); } break; case 3: - clif->message(fd, msg_txt(1113)); // ----- Chats in Map ----- + clif->message(fd, msg_fd(fd,1113)); // ----- Chats in Map ----- iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { @@ -3873,18 +3917,18 @@ ACMD(mapinfo) { pl_sd->mapindex == m_index && cd->usersd[0] == pl_sd) { - sprintf(atcmd_output, msg_txt(1114), // Chat: %s | Player: %s | Location: %d %d + sprintf(atcmd_output, msg_fd(fd,1114), // Chat: %s | Player: %s | Location: %d %d cd->title, pl_sd->status.name, cd->bl.x, cd->bl.y); clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1115), // Users: %d/%d | Password: %s | Public: %s - cd->users, cd->limit, cd->pass, (cd->pub) ? msg_txt(1116) : msg_txt(1117)); // Yes / No + sprintf(atcmd_output, msg_fd(fd,1115), // Users: %d/%d | Password: %s | Public: %s + cd->users, cd->limit, cd->pass, (cd->pub) ? msg_fd(fd,1116) : msg_fd(fd,1117)); // Yes / No clif->message(fd, atcmd_output); } } mapit->free(iter); break; default: // normally impossible to arrive here - clif->message(fd, msg_txt(1118)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>). + clif->message(fd, msg_fd(fd,1118)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>). return false; } @@ -3897,51 +3941,51 @@ ACMD(mapinfo) { ACMD(mount_peco) { if (sd->disguise != -1) { - clif->message(fd, msg_txt(212)); // Cannot mount while in disguise. + clif->message(fd, msg_fd(fd,212)); // Cannot mount while in disguise. return false; } if( sd->sc.data[SC_ALL_RIDING] ) { - clif->message(fd, msg_txt(1476)); // You are already mounting something else + clif->message(fd, msg_fd(fd,1476)); // You are already mounting something else return false; } if( (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT ) { if( !pc->checkskill(sd,RK_DRAGONTRAINING) ) { - sprintf(atcmd_output, msg_txt(213), skill->get_desc(RK_DRAGONTRAINING)); // You need %s to mount! + sprintf(atcmd_output, msg_fd(fd,213), skill->get_desc(RK_DRAGONTRAINING)); // You need %s to mount! clif->message(fd, atcmd_output); return false; } if (!pc_isridingdragon(sd)) { - clif->message(sd->fd,msg_txt(1119)); // You have mounted your Dragon. + clif->message(sd->fd,msg_fd(fd,1119)); // You have mounted your Dragon. pc->setridingdragon(sd, OPTION_DRAGON1); } else { - clif->message(sd->fd,msg_txt(1120)); // You have released your Dragon. + clif->message(sd->fd,msg_fd(fd,1120)); // You have released your Dragon. pc->setridingdragon(sd, 0); } return true; } if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER ) { if( !pc->checkskill(sd,RA_WUGRIDER) ) { - sprintf(atcmd_output, msg_txt(213), skill->get_desc(RA_WUGRIDER)); // You need %s to mount! + sprintf(atcmd_output, msg_fd(fd,213), skill->get_desc(RA_WUGRIDER)); // You need %s to mount! clif->message(fd, atcmd_output); return false; } if( !pc_isridingwug(sd) ) { - clif->message(sd->fd,msg_txt(1121)); // You have mounted your Warg. + clif->message(sd->fd,msg_fd(fd,1121)); // You have mounted your Warg. pc->setridingwug(sd, true); } else { - clif->message(sd->fd,msg_txt(1122)); // You have released your Warg. + clif->message(sd->fd,msg_fd(fd,1122)); // You have released your Warg. pc->setridingwug(sd, false); } return true; } if( (sd->class_&MAPID_THIRDMASK) == MAPID_MECHANIC ) { if( !pc_ismadogear(sd) ) { - clif->message(sd->fd,msg_txt(1123)); // You have mounted your Mado Gear. + clif->message(sd->fd,msg_fd(fd,1123)); // You have mounted your Mado Gear. pc->setmadogear(sd, true); } else { - clif->message(sd->fd,msg_txt(1124)); // You have released your Mado Gear. + clif->message(sd->fd,msg_fd(fd,1124)); // You have released your Mado Gear. pc->setmadogear(sd, false); } return true; @@ -3949,19 +3993,19 @@ ACMD(mount_peco) if( sd->class_&MAPID_SWORDMAN && sd->class_&JOBL_2 ) { if (!pc_isridingpeco(sd)) { // if actually no peco if (!pc->checkskill(sd, KN_RIDING)) { - sprintf(atcmd_output, msg_txt(213), skill->get_desc(KN_RIDING)); // You need %s to mount! + sprintf(atcmd_output, msg_fd(fd,213), skill->get_desc(KN_RIDING)); // You need %s to mount! clif->message(fd, atcmd_output); return false; } pc->setridingpeco(sd, true); - clif->message(fd, msg_txt(102)); // You have mounted a Peco Peco. + clif->message(fd, msg_fd(fd,102)); // You have mounted a Peco Peco. } else {//Dismount pc->setridingpeco(sd, false); - clif->message(fd, msg_txt(214)); // You have released your Peco Peco. + clif->message(fd, msg_fd(fd,214)); // You have released your Peco Peco. } return true; } - clif->message(fd, msg_txt(215)); // Your class can't mount! + clif->message(fd, msg_fd(fd,215)); // Your class can't mount! return false; } @@ -3977,11 +4021,11 @@ ACMD(guildspy) { if (!map->enable_spy) { - clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled. + clif->message(fd, msg_fd(fd,1125)); // The mapserver has spy command support disabled. return false; } if (!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) { - clif->message(fd, msg_txt(1126)); // Please enter a guild name/ID (usage: @guildspy <guild_name/ID>). + clif->message(fd, msg_fd(fd,1126)); // Please enter a guild name/ID (usage: @guildspy <guild_name/ID>). return false; } @@ -3989,15 +4033,15 @@ ACMD(guildspy) { (g = guild->search(atoi(message))) != NULL) { if (sd->guildspy == g->guild_id) { sd->guildspy = 0; - sprintf(atcmd_output, msg_txt(103), g->name); // No longer spying on the %s guild. + sprintf(atcmd_output, msg_fd(fd,103), g->name); // No longer spying on the %s guild. clif->message(fd, atcmd_output); } else { sd->guildspy = g->guild_id; - sprintf(atcmd_output, msg_txt(104), g->name); // Spying on the %s guild. + sprintf(atcmd_output, msg_fd(fd,104), g->name); // Spying on the %s guild. clif->message(fd, atcmd_output); } } else { - clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the specified guild is online. + clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the specified guild is online. return false; } @@ -4016,12 +4060,12 @@ ACMD(partyspy) { if (!map->enable_spy) { - clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled. + clif->message(fd, msg_fd(fd,1125)); // The mapserver has spy command support disabled. return false; } if (!message || !*message || sscanf(message, "%23[^\n]", party_name) < 1) { - clif->message(fd, msg_txt(1127)); // Please enter a party name/ID (usage: @partyspy <party_name/ID>). + clif->message(fd, msg_fd(fd,1127)); // Please enter a party name/ID (usage: @partyspy <party_name/ID>). return false; } @@ -4029,15 +4073,15 @@ ACMD(partyspy) { (p = party->search(atoi(message))) != NULL) { if (sd->partyspy == p->party.party_id) { sd->partyspy = 0; - sprintf(atcmd_output, msg_txt(105), p->party.name); // No longer spying on the %s party. + sprintf(atcmd_output, msg_fd(fd,105), p->party.name); // No longer spying on the %s party. clif->message(fd, atcmd_output); } else { sd->partyspy = p->party.party_id; - sprintf(atcmd_output, msg_txt(106), p->party.name); // Spying on the %s party. + sprintf(atcmd_output, msg_fd(fd,106), p->party.name); // Spying on the %s party. clif->message(fd, atcmd_output); } } else { - clif->message(fd, msg_txt(96)); // Incorrect name/ID, or no one from the specified party is online. + clif->message(fd, msg_fd(fd,96)); // Incorrect name/ID, or no one from the specified party is online. return false; } @@ -4063,9 +4107,9 @@ ACMD(repairall) if (count > 0) { clif->misceffect(&sd->bl, 3); clif->equiplist(sd); - clif->message(fd, msg_txt(107)); // All items have been repaired. + clif->message(fd, msg_fd(fd,107)); // All items have been repaired. } else { - clif->message(fd, msg_txt(108)); // No item need to be repaired. + clif->message(fd, msg_fd(fd,108)); // No item need to be repaired. return false; } @@ -4081,20 +4125,20 @@ ACMD(nuke) { memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { - clif->message(fd, msg_txt(1128)); // Please enter a player name (usage: @nuke <char name>). + clif->message(fd, msg_fd(fd,1128)); // Please enter a player name (usage: @nuke <char name>). return false; } if ((pl_sd = map->nick2sd(atcmd_player_name)) != NULL) { if (pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { // you can kill only lower or same GM level skill->castend_nodamage_id(&pl_sd->bl, &pl_sd->bl, NPC_SELFDESTRUCTION, 99, timer->gettick(), 0); - clif->message(fd, msg_txt(109)); // Player has been nuked! + clif->message(fd, msg_fd(fd,109)); // Player has been nuked! } else { - clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player. + clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player. return false; } } else { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -4111,17 +4155,17 @@ ACMD(tonpc) { memset(npcname, 0, sizeof(npcname)); if (!message || !*message || sscanf(message, "%23[^\n]", npcname) < 1) { - clif->message(fd, msg_txt(1129)); // Please enter a NPC name (usage: @tonpc <NPC_name>). + clif->message(fd, msg_fd(fd,1129)); // Please enter a NPC name (usage: @tonpc <NPC_name>). return false; } if ((nd = npc->name2id(npcname)) != NULL) { if (nd->bl.m != -1 && pc->setpos(sd, map_id2index(nd->bl.m), nd->bl.x, nd->bl.y, CLR_TELEPORT) == 0) - clif->message(fd, msg_txt(0)); // Warped. + clif->message(fd, msg_fd(fd,0)); // Warped. else return false; } else { - clif->message(fd, msg_txt(111)); // This NPC doesn't exist. + clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist. return false; } @@ -4138,15 +4182,15 @@ ACMD(shownpc) memset(NPCname, '\0', sizeof(NPCname)); if (!message || !*message || sscanf(message, "%23[^\n]", NPCname) < 1) { - clif->message(fd, msg_txt(1130)); // Please enter a NPC name (usage: @enablenpc <NPC_name>). + clif->message(fd, msg_fd(fd,1130)); // Please enter a NPC name (usage: @enablenpc <NPC_name>). return false; } if (npc->name2id(NPCname) != NULL) { npc->enable(NPCname, 1); - clif->message(fd, msg_txt(110)); // Npc Enabled. + clif->message(fd, msg_fd(fd,110)); // Npc Enabled. } else { - clif->message(fd, msg_txt(111)); // This NPC doesn't exist. + clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist. return false; } @@ -4163,17 +4207,17 @@ ACMD(hidenpc) memset(NPCname, '\0', sizeof(NPCname)); if (!message || !*message || sscanf(message, "%23[^\n]", NPCname) < 1) { - clif->message(fd, msg_txt(1131)); // Please enter a NPC name (usage: @hidenpc <NPC_name>). + clif->message(fd, msg_fd(fd,1131)); // Please enter a NPC name (usage: @hidenpc <NPC_name>). return false; } if (npc->name2id(NPCname) == NULL) { - clif->message(fd, msg_txt(111)); // This NPC doesn't exist. + clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist. return false; } npc->enable(NPCname, 0); - clif->message(fd, msg_txt(112)); // Npc Disabled. + clif->message(fd, msg_fd(fd,112)); // Npc Disabled. return true; } @@ -4182,13 +4226,13 @@ ACMD(loadnpc) FILE *fp; if (!message || !*message) { - clif->message(fd, msg_txt(1132)); // Please enter a script file name (usage: @loadnpc <file name>). + clif->message(fd, msg_fd(fd,1132)); // Please enter a script file name (usage: @loadnpc <file name>). return false; } // check if script file exists if ((fp = fopen(message, "r")) == NULL) { - clif->message(fd, msg_txt(261)); + clif->message(fd, msg_fd(fd,261)); return false; } fclose(fp); @@ -4198,7 +4242,7 @@ ACMD(loadnpc) npc->parsesrcfile(message,true); npc->read_event_script(); - clif->message(fd, msg_txt(262)); + clif->message(fd, msg_fd(fd,262)); return true; } @@ -4211,27 +4255,26 @@ ACMD(unloadnpc) memset(NPCname, '\0', sizeof(NPCname)); if (!message || !*message || sscanf(message, "%24[^\n]", NPCname) < 1) { - clif->message(fd, msg_txt(1133)); // Please enter a NPC name (usage: @npcoff <NPC_name>). + clif->message(fd, msg_fd(fd,1133)); // Please enter a NPC name (usage: @npcoff <NPC_name>). return false; } if ((nd = npc->name2id(NPCname)) == NULL) { - clif->message(fd, msg_txt(111)); // This NPC doesn't exist. + clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist. return false; } npc->unload_duplicates(nd); npc->unload(nd,true); npc->read_event_script(); - clif->message(fd, msg_txt(112)); // Npc Disabled. + clif->message(fd, msg_fd(fd,112)); // Npc Disabled. return true; } /*========================================== * time in txt for time command (by [Yor]) *------------------------------------------*/ -char* txt_time(unsigned int duration) -{ +char* txt_time(int fd, unsigned int duration) { int days, hours, minutes, seconds; static char temp1[CHAT_SIZE_MAX]; int tlen = 0; @@ -4246,21 +4289,21 @@ char* txt_time(unsigned int duration) seconds = duration - (60 * minutes); if (days == 1) - tlen += sprintf(tlen + temp1, msg_txt(219), days); // %d day + tlen += sprintf(tlen + temp1, msg_fd(fd,219), days); // %d day else if (days > 1) - tlen += sprintf(tlen + temp1, msg_txt(220), days); // %d days + tlen += sprintf(tlen + temp1, msg_fd(fd,220), days); // %d days if (hours == 1) - tlen += sprintf(tlen + temp1, msg_txt(221), hours); // %d hour + tlen += sprintf(tlen + temp1, msg_fd(fd,221), hours); // %d hour else if (hours > 1) - tlen += sprintf(tlen + temp1, msg_txt(222), hours); // %d hours + tlen += sprintf(tlen + temp1, msg_fd(fd,222), hours); // %d hours if (minutes < 2) - tlen += sprintf(tlen + temp1, msg_txt(223), minutes); // %d minute + tlen += sprintf(tlen + temp1, msg_fd(fd,223), minutes); // %d minute else - tlen += sprintf(tlen + temp1, msg_txt(224), minutes); // %d minutes + tlen += sprintf(tlen + temp1, msg_fd(fd,224), minutes); // %d minutes if (seconds == 1) - sprintf(tlen + temp1, msg_txt(225), seconds); // and %d second + sprintf(tlen + temp1, msg_fd(fd,225), seconds); // and %d second else if (seconds > 1) - sprintf(tlen + temp1, msg_txt(226), seconds); // and %d seconds + sprintf(tlen + temp1, msg_fd(fd,226), seconds); // and %d seconds return temp1; } @@ -4279,7 +4322,7 @@ ACMD(servertime) { time(&time_server); // get time in seconds since 1/1/1970 datetime = localtime(&time_server); // convert seconds in structure // like sprintf, but only for date/time (Sunday, November 02 2003 15:12:52) - strftime(temp, sizeof(temp)-1, msg_txt(230), datetime); // Server time (normal time): %A, %B %d %Y %X. + strftime(temp, sizeof(temp)-1, msg_fd(fd,230), datetime); // Server time (normal time): %A, %B %d %Y %X. clif->message(fd, temp); if (pc->day_timer_tid != INVALID_TIMER && pc->night_timer_tid != INVALID_TIMER) { @@ -4287,35 +4330,35 @@ ACMD(servertime) { const struct TimerData * timer_data2 = timer->get(pc->day_timer_tid); if (map->night_flag == 0) { - sprintf(temp, msg_txt(235), // Game time: The game is actually in daylight for %s. - txt_time((unsigned int)(DIFF_TICK(timer_data->tick,timer->gettick())/1000))); + sprintf(temp, msg_fd(fd,235), // Game time: The game is actually in daylight for %s. + txt_time(fd,(unsigned int)(DIFF_TICK(timer_data->tick,timer->gettick())/1000))); clif->message(fd, temp); if (DIFF_TICK(timer_data->tick, timer_data2->tick) > 0) - sprintf(temp, msg_txt(237), // Game time: After, the game will be in night for %s. - txt_time((unsigned int)(DIFF_TICK(timer_data->interval,DIFF_TICK(timer_data->tick,timer_data2->tick)) / 1000))); + sprintf(temp, msg_fd(fd,237), // Game time: After, the game will be in night for %s. + txt_time(fd,(unsigned int)(DIFF_TICK(timer_data->interval,DIFF_TICK(timer_data->tick,timer_data2->tick)) / 1000))); else - sprintf(temp, msg_txt(237), // Game time: After, the game will be in night for %s. - txt_time((unsigned int)(DIFF_TICK(timer_data2->tick,timer_data->tick)/1000))); + sprintf(temp, msg_fd(fd,237), // Game time: After, the game will be in night for %s. + txt_time(fd,(unsigned int)(DIFF_TICK(timer_data2->tick,timer_data->tick)/1000))); clif->message(fd, temp); } else { - sprintf(temp, msg_txt(233), // Game time: The game is actually in night for %s. - txt_time((unsigned int)(DIFF_TICK(timer_data2->tick,timer->gettick()) / 1000))); + sprintf(temp, msg_fd(fd,233), // Game time: The game is actually in night for %s. + txt_time(fd,(unsigned int)(DIFF_TICK(timer_data2->tick,timer->gettick()) / 1000))); clif->message(fd, temp); if (DIFF_TICK(timer_data2->tick,timer_data->tick) > 0) - sprintf(temp, msg_txt(239), // Game time: After, the game will be in daylight for %s. - txt_time((unsigned int)((timer_data2->interval - DIFF_TICK(timer_data2->tick, timer_data->tick)) / 1000))); + sprintf(temp, msg_fd(fd,239), // Game time: After, the game will be in daylight for %s. + txt_time(fd,(unsigned int)((timer_data2->interval - DIFF_TICK(timer_data2->tick, timer_data->tick)) / 1000))); else - sprintf(temp, msg_txt(239), // Game time: After, the game will be in daylight for %s. - txt_time((unsigned int)(DIFF_TICK(timer_data->tick, timer_data2->tick) / 1000))); + sprintf(temp, msg_fd(fd,239), // Game time: After, the game will be in daylight for %s. + txt_time(fd,(unsigned int)(DIFF_TICK(timer_data->tick, timer_data2->tick) / 1000))); clif->message(fd, temp); } - sprintf(temp, msg_txt(238), txt_time(timer_data2->interval / 1000)); // Game time: A day cycle has a normal duration of %s. + sprintf(temp, msg_fd(fd,238), txt_time(fd,timer_data2->interval / 1000)); // Game time: A day cycle has a normal duration of %s. clif->message(fd, temp); } else { if (map->night_flag == 0) - clif->message(fd, msg_txt(231)); // Game time: The game is in permanent daylight. + clif->message(fd, msg_fd(fd,231)); // Game time: The game is in permanent daylight. else - clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night. + clif->message(fd, msg_fd(fd,232)); // Game time: The game is in permanent night. } return true; @@ -4361,24 +4404,24 @@ ACMD(jail) { memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { - clif->message(fd, msg_txt(1134)); // Please enter a player name (usage: @jail <char_name>). + clif->message(fd, msg_fd(fd,1134)); // Please enter a player name (usage: @jail <char_name>). return false; } if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if (pc_get_group_level(sd) < pc_get_group_level(pl_sd)) { // you can jail only lower or same GM - clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player. + clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player. return false; } if (pl_sd->sc.data[SC_JAILED]) { - clif->message(fd, msg_txt(118)); // Player warped in jails. + clif->message(fd, msg_fd(fd,118)); // Player warped in jails. return false; } @@ -4397,8 +4440,8 @@ ACMD(jail) { //Duration of INT_MAX to specify infinity. sc_start4(NULL,&pl_sd->bl,SC_JAILED,100,INT_MAX,m_index,x,y,1000); - clif->message(pl_sd->fd, msg_txt(117)); // You have been jailed by a GM. - clif->message(fd, msg_txt(118)); // Player warped in jails. + clif->message(pl_sd->fd, msg_fd(fd,117)); // You have been jailed by a GM. + clif->message(fd, msg_fd(fd,118)); // Player warped in jails. return true; } @@ -4412,31 +4455,31 @@ ACMD(unjail) { memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) { - clif->message(fd, msg_txt(1135)); // Please enter a player name (usage: @unjail/@discharge <char_name>). + clif->message(fd, msg_fd(fd,1135)); // Please enter a player name (usage: @unjail/@discharge <char_name>). return false; } if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if (pc_get_group_level(sd) < pc_get_group_level(pl_sd)) { // you can jail only lower or same GM - clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player. + clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player. return false; } if (!pl_sd->sc.data[SC_JAILED]) { - clif->message(fd, msg_txt(119)); // This player is not in jails. + clif->message(fd, msg_fd(fd,119)); // This player is not in jails. return false; } //Reset jail time to 1 sec. sc_start(NULL,&pl_sd->bl,SC_JAILED,100,1,1000); - clif->message(pl_sd->fd, msg_txt(120)); // A GM has discharged you from jail. - clif->message(fd, msg_txt(121)); // Player unjailed. + clif->message(pl_sd->fd, msg_fd(fd,120)); // A GM has discharged you from jail. + clif->message(fd, msg_fd(fd,121)); // Player unjailed. return true; } @@ -4448,7 +4491,7 @@ ACMD(jailfor) { short m_index = 0; if (!message || !*message || sscanf(message, "%255s %23[^\n]",atcmd_output,atcmd_player_name) < 2) { - clif->message(fd, msg_txt(400)); //Usage: @jailfor <time> <character name> + clif->message(fd, msg_fd(fd,400)); //Usage: @jailfor <time> <character name> return false; } @@ -4490,24 +4533,24 @@ ACMD(jailfor) { } if (year == 0 && month == 0 && day == 0 && hour == 0 && minute == 0) { - clif->message(fd, msg_txt(1136)); // Invalid time for jail command. + clif->message(fd, msg_fd(fd,1136)); // Invalid time for jail command. return false; } if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if (pc_get_group_level(pl_sd) > pc_get_group_level(sd)) { - clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player. + clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player. return false; } jailtime = year*12*30*24*60 + month*30*24*60 + day*24*60 + hour*60 + minute; //In minutes if(jailtime==0) { - clif->message(fd, msg_txt(1136)); // Invalid time for jail command. + clif->message(fd, msg_fd(fd,1136)); // Invalid time for jail command. return false; } @@ -4517,17 +4560,17 @@ ACMD(jailfor) { jailtime += pl_sd->sc.data[SC_JAILED]->val1; if (jailtime <= 0) { jailtime = 0; - clif->message(pl_sd->fd, msg_txt(120)); // GM has discharge you. - clif->message(fd, msg_txt(121)); // Player unjailed + clif->message(pl_sd->fd, msg_fd(fd,120)); // GM has discharge you. + clif->message(fd, msg_fd(fd,121)); // Player unjailed } else { atcommand->get_jail_time(jailtime,&year,&month,&day,&hour,&minute); - sprintf(atcmd_output,msg_txt(402),msg_txt(1137),year,month,day,hour,minute); //%s in jail for %d years, %d months, %d days, %d hours and %d minutes + sprintf(atcmd_output,msg_fd(fd,402),msg_fd(fd,1137),year,month,day,hour,minute); //%s in jail for %d years, %d months, %d days, %d hours and %d minutes clif->message(pl_sd->fd, atcmd_output); - sprintf(atcmd_output,msg_txt(402),msg_txt(1138),year,month,day,hour,minute); //This player is now in jail for %d years, %d months, %d days, %d hours and %d minutes + sprintf(atcmd_output,msg_fd(fd,402),msg_fd(fd,1138),year,month,day,hour,minute); //This player is now in jail for %d years, %d months, %d days, %d hours and %d minutes clif->message(fd, atcmd_output); } } else if (jailtime < 0) { - clif->message(fd, msg_txt(1136)); + clif->message(fd, msg_fd(fd,1136)); return false; } @@ -4555,23 +4598,23 @@ ACMD(jailtime) int year, month, day, hour, minute; if (!sd->sc.data[SC_JAILED]) { - clif->message(fd, msg_txt(1139)); // You are not in jail. + clif->message(fd, msg_fd(fd,1139)); // You are not in jail. return false; } if (sd->sc.data[SC_JAILED]->val1 == INT_MAX) { - clif->message(fd, msg_txt(1140)); // You have been jailed indefinitely. + clif->message(fd, msg_fd(fd,1140)); // You have been jailed indefinitely. return true; } if (sd->sc.data[SC_JAILED]->val1 <= 0) { // Was not jailed with @jailfor (maybe @jail? or warped there? or got recalled?) - clif->message(fd, msg_txt(1141)); // You have been jailed for an unknown amount of time. + clif->message(fd, msg_fd(fd,1141)); // You have been jailed for an unknown amount of time. return false; } //Get remaining jail time atcommand->get_jail_time(sd->sc.data[SC_JAILED]->val1,&year,&month,&day,&hour,&minute); - sprintf(atcmd_output,msg_txt(402),msg_txt(1142),year,month,day,hour,minute); // You will remain in jail for %d years, %d months, %d days, %d hours and %d minutes + sprintf(atcmd_output,msg_fd(fd,402),msg_fd(fd,1142),year,month,day,hour,minute); // You will remain in jail for %d years, %d months, %d days, %d hours and %d minutes clif->message(fd, atcmd_output); @@ -4586,7 +4629,7 @@ ACMD(disguise) int id = 0; if (!message || !*message) { - clif->message(fd, msg_txt(1143)); // Please enter a Monster/NPC name/ID (usage: @disguise <name/ID>). + clif->message(fd, msg_fd(fd,1143)); // Please enter a Monster/NPC name/ID (usage: @disguise <name/ID>). return false; } @@ -4606,23 +4649,23 @@ ACMD(disguise) if (id == 0) { - clif->message(fd, msg_txt(123)); // Invalid Monster/NPC name/ID specified. + clif->message(fd, msg_fd(fd,123)); // Invalid Monster/NPC name/ID specified. return false; } if (pc_hasmount(sd)) { - clif->message(fd, msg_txt(1144)); // Character cannot be disguised while mounted. + clif->message(fd, msg_fd(fd,1144)); // Character cannot be disguised while mounted. return false; } if(sd->sc.data[SC_MONSTER_TRANSFORM]) { - clif->message(fd, msg_txt(1487)); // Character cannot be disguised while in monster form. + clif->message(fd, msg_fd(fd,1487)); // Character cannot be disguised while in monster form. return false; } pc->disguise(sd, id); - clif->message(fd, msg_txt(122)); // Disguise applied. + clif->message(fd, msg_fd(fd,122)); // Disguise applied. return true; } @@ -4637,7 +4680,7 @@ ACMD(disguiseall) struct s_mapiterator* iter; if (!message || !*message) { - clif->message(fd, msg_txt(1145)); // Please enter a Monster/NPC name/ID (usage: @disguiseall <name/ID>). + clif->message(fd, msg_fd(fd,1145)); // Please enter a Monster/NPC name/ID (usage: @disguiseall <name/ID>). return false; } @@ -4645,7 +4688,7 @@ ACMD(disguiseall) mob_id = atoi(message); if (!mob->db_checkid(mob_id) && !npc->db_checkid(mob_id)) { //if mob or npc... - clif->message(fd, msg_txt(123)); // Monster/NPC name/id not found. + clif->message(fd, msg_fd(fd,123)); // Monster/NPC name/id not found. return false; } @@ -4654,7 +4697,7 @@ ACMD(disguiseall) pc->disguise(pl_sd, mob_id); mapit->free(iter); - clif->message(fd, msg_txt(122)); // Disguise applied. + clif->message(fd, msg_fd(fd,122)); // Disguise applied. return true; } @@ -4671,7 +4714,7 @@ ACMD(disguiseguild) memset(guild_name, '\0', sizeof(guild_name)); if( !message || !*message || sscanf(message, "%23[^,], %23[^\r\n]", monster, guild_name) < 2 ) { - clif->message(fd, msg_txt(1146)); // Please enter a mob name/ID and guild name/ID (usage: @disguiseguild <mob name/ID>, <guild name/ID>). + clif->message(fd, msg_fd(fd,1146)); // Please enter a mob name/ID and guild name/ID (usage: @disguiseguild <mob name/ID>, <guild name/ID>). return false; } @@ -4687,12 +4730,12 @@ ACMD(disguiseguild) } if( id == 0 ) { - clif->message(fd, msg_txt(123)); // Monster/NPC name/id hasn't been found. + clif->message(fd, msg_fd(fd,123)); // Monster/NPC name/id hasn't been found. return false; } if( (g = guild->searchname(guild_name)) == NULL && (g = guild->search(atoi(guild_name))) == NULL ) { - clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online. + clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the guild is online. return false; } @@ -4702,7 +4745,7 @@ ACMD(disguiseguild) pc->disguise(pl_sd, id); } - clif->message(fd, msg_txt(122)); // Disguise applied. + clif->message(fd, msg_fd(fd,122)); // Disguise applied. return true; } @@ -4714,9 +4757,9 @@ ACMD(undisguise) { if (sd->disguise != -1) { pc->disguise(sd, -1); - clif->message(fd, msg_txt(124)); // Disguise removed. + clif->message(fd, msg_fd(fd,124)); // Disguise removed. } else { - clif->message(fd, msg_txt(125)); // You're not disguised. + clif->message(fd, msg_fd(fd,125)); // You're not disguised. return false; } @@ -4736,7 +4779,7 @@ ACMD(undisguiseall) { pc->disguise(pl_sd, -1); mapit->free(iter); - clif->message(fd, msg_txt(124)); // Disguise removed. + clif->message(fd, msg_fd(fd,124)); // Disguise removed. return true; } @@ -4753,12 +4796,12 @@ ACMD(undisguiseguild) memset(guild_name, '\0', sizeof(guild_name)); if(!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) { - clif->message(fd, msg_txt(1147)); // Please enter guild name/ID (usage: @undisguiseguild <guild name/ID>). + clif->message(fd, msg_fd(fd,1147)); // Please enter guild name/ID (usage: @undisguiseguild <guild name/ID>). return false; } if( (g = guild->searchname(guild_name)) == NULL && (g = guild->search(atoi(message))) == NULL ) { - clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online. + clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the guild is online. return false; } @@ -4768,7 +4811,7 @@ ACMD(undisguiseguild) pc->disguise(pl_sd, -1); } - clif->message(fd, msg_txt(124)); // Disguise removed. + clif->message(fd, msg_fd(fd,124)); // Disguise removed. return true; } @@ -4791,7 +4834,7 @@ ACMD(exp) if (nextj) nextj = sd->status.job_exp*100.0/nextj; - sprintf(output, msg_txt(1148), sd->status.base_level, nextb, sd->status.job_level, nextj); // Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%) + sprintf(output, msg_fd(fd,1148), sd->status.base_level, nextb, sd->status.job_level, nextj); // Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%) clif->message(fd, output); return true; } @@ -4805,7 +4848,7 @@ ACMD(broadcast) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message) { - clif->message(fd, msg_txt(1149)); // Please enter a message (usage: @broadcast <message>). + clif->message(fd, msg_fd(fd,1149)); // Please enter a message (usage: @broadcast <message>). return false; } @@ -4823,7 +4866,7 @@ ACMD(localbroadcast) memset(atcmd_output, '\0', sizeof(atcmd_output)); if (!message || !*message) { - clif->message(fd, msg_txt(1150)); // Please enter a message (usage: @localbroadcast <message>). + clif->message(fd, msg_fd(fd,1150)); // Please enter a message (usage: @localbroadcast <message>). return false; } @@ -4846,26 +4889,26 @@ ACMD(email) memset(new_email, '\0', sizeof(new_email)); if (!message || !*message || sscanf(message, "%99s %99s", actual_email, new_email) < 2) { - clif->message(fd, msg_txt(1151)); // Please enter two e-mail addresses (usage: @email <current@email> <new@email>). + clif->message(fd, msg_fd(fd,1151)); // Please enter two e-mail addresses (usage: @email <current@email> <new@email>). return false; } if (e_mail_check(actual_email) == 0) { - clif->message(fd, msg_txt(144)); // Invalid e-mail. If your email hasn't been set, use a@a.com. + clif->message(fd, msg_fd(fd,144)); // Invalid e-mail. If your email hasn't been set, use a@a.com. return false; } else if (e_mail_check(new_email) == 0) { - clif->message(fd, msg_txt(145)); // Invalid new email. Please enter a real e-mail address. + clif->message(fd, msg_fd(fd,145)); // Invalid new email. Please enter a real e-mail address. return false; } else if (strcmpi(new_email, "a@a.com") == 0) { - clif->message(fd, msg_txt(146)); // New email must be a real e-mail address. + clif->message(fd, msg_fd(fd,146)); // New email must be a real e-mail address. return false; } else if (strcmpi(actual_email, new_email) == 0) { - clif->message(fd, msg_txt(147)); // New e-mail must be different from the current e-mail address. + clif->message(fd, msg_fd(fd,147)); // New e-mail must be different from the current e-mail address. return false; } chrif->changeemail(sd->status.account_id, actual_email, new_email); - clif->message(fd, msg_txt(148)); // Information sended to login-server via char-server. + clif->message(fd, msg_fd(fd,148)); // Information sended to login-server via char-server. return true; } @@ -4877,12 +4920,12 @@ ACMD(effect) int type = 0, flag = 0; if (!message || !*message || sscanf(message, "%d", &type) < 1) { - clif->message(fd, msg_txt(1152)); // Please enter an effect number (usage: @effect <effect number>). + clif->message(fd, msg_fd(fd,1152)); // Please enter an effect number (usage: @effect <effect number>). return false; } clif->specialeffect(&sd->bl, type, (send_target)flag); - clif->message(fd, msg_txt(229)); // Your effect has changed. + clif->message(fd, msg_fd(fd,229)); // Your effect has changed. return true; } @@ -4895,9 +4938,9 @@ ACMD(killer) sd->state.killer = !sd->state.killer; if(sd->state.killer) - clif->message(fd, msg_txt(241)); + clif->message(fd, msg_fd(fd,241)); else { - clif->message(fd, msg_txt(292)); + clif->message(fd, msg_fd(fd,292)); pc_stop_attack(sd); } return true; @@ -4911,9 +4954,9 @@ ACMD(killable) { sd->state.killable = !sd->state.killable; if(sd->state.killable) - clif->message(fd, msg_txt(242)); + clif->message(fd, msg_fd(fd,242)); else { - clif->message(fd, msg_txt(288)); + clif->message(fd, msg_fd(fd,288)); map->foreachinrange(atcommand->stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id); } return true; @@ -4925,7 +4968,7 @@ ACMD(killable) { *------------------------------------------*/ ACMD(skillon) { map->list[sd->bl.m].flag.noskill = 0; - clif->message(fd, msg_txt(244)); + clif->message(fd, msg_fd(fd,244)); return true; } @@ -4935,7 +4978,7 @@ ACMD(skillon) { *------------------------------------------*/ ACMD(skilloff) { map->list[sd->bl.m].flag.noskill = 1; - clif->message(fd, msg_txt(243)); + clif->message(fd, msg_fd(fd,243)); return true; } @@ -4950,17 +4993,17 @@ ACMD(npcmove) { memset(atcmd_player_name, '\0', sizeof atcmd_player_name); if (!message || !*message || sscanf(message, "%d %d %23[^\n]", &x, &y, atcmd_player_name) < 3) { - clif->message(fd, msg_txt(1153)); // Usage: @npcmove <X> <Y> <npc_name> + clif->message(fd, msg_fd(fd,1153)); // Usage: @npcmove <X> <Y> <npc_name> return false; } if ((nd = npc->name2id(atcmd_player_name)) == NULL) { - clif->message(fd, msg_txt(111)); // This NPC doesn't exist. + clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist. return false; } if ((m=nd->bl.m) < 0 || nd->bl.prev == NULL) { - clif->message(fd, msg_txt(1154)); // NPC is not in this map. + clif->message(fd, msg_fd(fd,1154)); // NPC is not in this map. return false; //Not on a map. } @@ -4969,7 +5012,7 @@ ACMD(npcmove) { map->foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); map->moveblock(&nd->bl, x, y, timer->gettick()); map->foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); - clif->message(fd, msg_txt(1155)); // NPC moved. + clif->message(fd, msg_fd(fd,1155)); // NPC moved. return true; } @@ -4988,14 +5031,14 @@ ACMD(addwarp) memset(warpname, '\0', sizeof(warpname)); if (!message || !*message || sscanf(message, "%31s %d %d %23[^\n]", mapname, &x, &y, warpname) < 4) { - clif->message(fd, msg_txt(1156)); // Usage: @addwarp <mapname> <X> <Y> <npc name> + clif->message(fd, msg_fd(fd,1156)); // Usage: @addwarp <mapname> <X> <Y> <npc name> return false; } m = mapindex->name2id(mapname); if( m == 0 ) { - sprintf(atcmd_output, msg_txt(1157), mapname); // Unknown map '%s'. + sprintf(atcmd_output, msg_fd(fd,1157), mapname); // Unknown map '%s'. clif->message(fd, atcmd_output); return false; } @@ -5004,7 +5047,7 @@ ACMD(addwarp) if( nd == NULL ) return false; - sprintf(atcmd_output, msg_txt(1158), nd->exname); // New warp NPC '%s' created. + sprintf(atcmd_output, msg_fd(fd,1158), nd->exname); // New warp NPC '%s' created. clif->message(fd, atcmd_output); return true; } @@ -5020,22 +5063,22 @@ ACMD(follow) { if (sd->followtarget == -1) return false; pc->stop_following (sd); - clif->message(fd, msg_txt(1159)); // Follow mode OFF. + clif->message(fd, msg_fd(fd,1159)); // Follow mode OFF. return true; } if ( (pl_sd = map->nick2sd((char *)message)) == NULL ) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if (sd->followtarget == pl_sd->bl.id) { pc->stop_following (sd); - clif->message(fd, msg_txt(1159)); // Follow mode OFF. + clif->message(fd, msg_fd(fd,1159)); // Follow mode OFF. } else { pc->follow(sd, pl_sd->bl.id); - clif->message(fd, msg_txt(1160)); // Follow mode ON. + clif->message(fd, msg_fd(fd,1160)); // Follow mode ON. } return true; @@ -5071,7 +5114,7 @@ ACMD(storeall) if (sd->state.storage_flag != 1) { //Open storage. if( storage->open(sd) == 1 ) { - clif->message(fd, msg_txt(1161)); // You currently cannot open your storage. + clif->message(fd, msg_fd(fd,1161)); // You currently cannot open your storage. return false; } } @@ -5085,7 +5128,7 @@ ACMD(storeall) } storage->close(sd); - clif->message(fd, msg_txt(1162)); // All items stored. + clif->message(fd, msg_fd(fd,1162)); // All items stored. return true; } @@ -5094,7 +5137,7 @@ ACMD(clearstorage) int i, j; if (sd->state.storage_flag == 1) { - clif->message(fd, msg_txt(250)); + clif->message(fd, msg_fd(fd,250)); return false; } @@ -5104,7 +5147,7 @@ ACMD(clearstorage) } storage->close(sd); - clif->message(fd, msg_txt(1394)); // Your storage was cleaned. + clif->message(fd, msg_fd(fd,1394)); // Your storage was cleaned. return true; } @@ -5117,17 +5160,17 @@ ACMD(cleargstorage) g = sd->guild; if (g == NULL) { - clif->message(fd, msg_txt(43)); + clif->message(fd, msg_fd(fd,43)); return false; } if (sd->state.storage_flag == 1) { - clif->message(fd, msg_txt(250)); + clif->message(fd, msg_fd(fd,250)); return false; } if (sd->state.storage_flag == 2) { - clif->message(fd, msg_txt(251)); + clif->message(fd, msg_fd(fd,251)); return false; } @@ -5144,7 +5187,7 @@ ACMD(cleargstorage) gstorage->close(sd); guild_storage->lock = 0; // Cleaning done, release lock - clif->message(fd, msg_txt(1395)); // Your guild storage was cleaned. + clif->message(fd, msg_fd(fd,1395)); // Your guild storage was cleaned. return true; } @@ -5153,12 +5196,12 @@ ACMD(clearcart) int i; if (pc_iscarton(sd) == 0) { - clif->message(fd, msg_txt(1396)); // You do not have a cart to be cleaned. + clif->message(fd, msg_fd(fd,1396)); // You do not have a cart to be cleaned. return false; } if( sd->state.vending == 1 ) { - clif->message(fd, msg_txt(548)); // You can't clean a cart while vending! + clif->message(fd, msg_fd(fd,548)); // You can't clean a cart while vending! return false; } @@ -5169,7 +5212,7 @@ ACMD(clearcart) clif->clearcart(fd); clif->updatestatus(sd,SP_CARTINFO); - clif->message(fd, msg_txt(1397)); // Your cart was cleaned. + clif->message(fd, msg_fd(fd,1397)); // Your cart was cleaned. return true; } @@ -5188,7 +5231,7 @@ ACMD(skillid) { char partials[MAX_SKILLID_PARTIAL_RESULTS][MAX_SKILLID_PARTIAL_RESULTS_LEN]; if (!message || !*message) { - clif->message(fd, msg_txt(1163)); // Please enter a skill name to look up (usage: @skillid <skill name>). + clif->message(fd, msg_fd(fd,1163)); // Please enter a skill name to look up (usage: @skillid <skill name>). return false; } @@ -5199,10 +5242,10 @@ ACMD(skillid) { for (data = iter->first(iter,&key); iter->exists(iter); data = iter->next(iter,&key)) { int idx = skill->get_index(DB->data2i(data)); if (strnicmp(key.str, message, skillen) == 0 || strnicmp(skill->db[idx].desc, message, skillen) == 0) { - sprintf(atcmd_output, msg_txt(1164), DB->data2i(data), skill->db[idx].desc, key.str); // skill %d: %s (%s) + sprintf(atcmd_output, msg_fd(fd,1164), DB->data2i(data), skill->db[idx].desc, key.str); // skill %d: %s (%s) clif->message(fd, atcmd_output); } else if ( found < MAX_SKILLID_PARTIAL_RESULTS && ( stristr(key.str,message) || stristr(skill->db[idx].desc,message) ) ) { - snprintf(partials[found], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_txt(1164), DB->data2i(data), skill->db[idx].desc, key.str); + snprintf(partials[found], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_fd(fd,1164), DB->data2i(data), skill->db[idx].desc, key.str); found++; } } @@ -5210,7 +5253,7 @@ ACMD(skillid) { dbi_destroy(iter); if( found ) { - sprintf(atcmd_output, msg_txt(1398), found); // -- Displaying first %d partial matches + sprintf(atcmd_output, msg_fd(fd,1398), found); // -- Displaying first %d partial matches clif->message(fd, atcmd_output); } @@ -5233,20 +5276,20 @@ ACMD(useskill) { char target[100]; if(!message || !*message || sscanf(message, "%hu %hu %23[^\n]", &skill_id, &skill_lv, target) != 3) { - clif->message(fd, msg_txt(1165)); // Usage: @useskill <skill ID> <skill level> <target> + clif->message(fd, msg_fd(fd,1165)); // Usage: @useskill <skill ID> <skill level> <target> return false; } if(!strcmp(target,"self")) pl_sd = sd; //quick keyword else if ( (pl_sd = map->nick2sd(target)) == NULL ) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) { - clif->message(fd, msg_txt(81)); // Your GM level don't authorized you to do this action on this player. + clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorized you to do this action on this player. return false; } @@ -5278,7 +5321,7 @@ ACMD(displayskill) { uint16 skill_lv = 1; if (!message || !*message || sscanf(message, "%hu %hu", &skill_id, &skill_lv) < 1) { - clif->message(fd, msg_txt(1166)); // Usage: @displayskill <skill ID> {<skill level>} + clif->message(fd, msg_fd(fd,1166)); // Usage: @displayskill <skill ID> {<skill level>} return false; } st = status->get_status_data(&sd->bl); @@ -5301,25 +5344,25 @@ ACMD(skilltree) { struct skill_tree_entry *ent; if(!message || !*message || sscanf(message, "%hu %23[^\r\n]", &skill_id, target) != 2) { - clif->message(fd, msg_txt(1167)); // Usage: @skilltree <skill ID> <target> + clif->message(fd, msg_fd(fd,1167)); // Usage: @skilltree <skill ID> <target> return false; } if ( (pl_sd = map->nick2sd(target)) == NULL ) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } c = pc->calc_skilltree_normalize_job(pl_sd); c = pc->mapid2jobid(c, pl_sd->status.sex); - sprintf(atcmd_output, msg_txt(1168), pc->job_name(c), pc->checkskill(pl_sd, NV_BASIC)); // Player is using %s skill tree (%d basic points). + sprintf(atcmd_output, msg_fd(fd,1168), pc->job_name(c), pc->checkskill(pl_sd, NV_BASIC)); // Player is using %s skill tree (%d basic points). clif->message(fd, atcmd_output); ARR_FIND( 0, MAX_SKILL_TREE, j, pc->skill_tree[c][j].id == 0 || pc->skill_tree[c][j].id == skill_id ); if( j == MAX_SKILL_TREE || pc->skill_tree[c][j].id == 0 ) { - clif->message(fd, msg_txt(1169)); // The player cannot use that skill. + clif->message(fd, msg_fd(fd,1169)); // The player cannot use that skill. return false; } @@ -5330,13 +5373,13 @@ ACMD(skilltree) { { if( ent->need[j].id && pc->checkskill(sd,ent->need[j].id) < ent->need[j].lv) { - sprintf(atcmd_output, msg_txt(1170), ent->need[j].lv, skill->db[ent->need[j].id].desc); // Player requires level %d of skill %s. + sprintf(atcmd_output, msg_fd(fd,1170), ent->need[j].lv, skill->db[ent->need[j].id].desc); // Player requires level %d of skill %s. clif->message(fd, atcmd_output); meets = 0; } } if (meets == 1) { - clif->message(fd, msg_txt(1171)); // The player meets all the requirements for that skill. + clif->message(fd, msg_fd(fd,1171)); // The player meets all the requirements for that skill. } return true; @@ -5370,24 +5413,24 @@ ACMD(marry) { char player_name[NAME_LENGTH] = ""; if (!message || !*message || sscanf(message, "%23s", player_name) != 1) { - clif->message(fd, msg_txt(1172)); // Usage: @marry <char name> + clif->message(fd, msg_fd(fd,1172)); // Usage: @marry <char name> return false; } if ((pl_sd = map->nick2sd(player_name)) == NULL) { - clif->message(fd, msg_txt(3)); + clif->message(fd, msg_fd(fd,3)); return false; } if (pc->marriage(sd, pl_sd) == 0) { - clif->message(fd, msg_txt(1173)); // They are married... wish them well. + clif->message(fd, msg_fd(fd,1173)); // They are married... wish them well. clif->wedding_effect(&pl_sd->bl); //wedding effect and music [Lupus] getring(sd); // Auto-give named rings (Aru) getring(pl_sd); return true; } - clif->message(fd, msg_txt(1174)); // The two cannot wed because one is either a baby or already married. + clif->message(fd, msg_fd(fd,1174)); // The two cannot wed because one is either a baby or already married. return false; } @@ -5398,12 +5441,12 @@ ACMD(marry) { ACMD(divorce) { if (pc->divorce(sd) != 0) { - sprintf(atcmd_output, msg_txt(1175), sd->status.name); // '%s' is not married. + sprintf(atcmd_output, msg_fd(fd,1175), sd->status.name); // '%s' is not married. clif->message(fd, atcmd_output); return false; } - sprintf(atcmd_output, msg_txt(1176), sd->status.name); // '%s' and his/her partner are now divorced. + sprintf(atcmd_output, msg_fd(fd,1176), sd->status.name); // '%s' and his/her partner are now divorced. clif->message(fd, atcmd_output); return true; } @@ -5417,8 +5460,8 @@ ACMD(changelook) int pos[7] = { LOOK_HEAD_TOP,LOOK_HEAD_MID,LOOK_HEAD_BOTTOM,LOOK_WEAPON,LOOK_SHIELD,LOOK_SHOES,LOOK_ROBE }; if((i = sscanf(message, "%d %d", &j, &k)) < 1) { - clif->message(fd, msg_txt(1177)); // Usage: @changelook {<position>} <view id> - clif->message(fd, msg_txt(1178)); // Position: 1-Top 2-Middle 3-Bottom 4-Weapon 5-Shield 6-Shoes 7-Robe + clif->message(fd, msg_fd(fd,1177)); // Usage: @changelook {<position>} <view id> + clif->message(fd, msg_fd(fd,1178)); // Position: 1-Top 2-Middle 3-Bottom 4-Weapon 5-Shield 6-Shoes 7-Robe return false; } else if ( i == 2 ) { if (j < 1 || j > 7) @@ -5441,17 +5484,17 @@ ACMD(changelook) ACMD(autotrade) { if( map->list[sd->bl.m].flag.autotrade != battle_config.autotrade_mapflag ) { - clif->message(fd, msg_txt(1179)); // Autotrade is not allowed in this map. + clif->message(fd, msg_fd(fd,1179)); // Autotrade is not allowed in this map. return false; } if( pc_isdead(sd) ) { - clif->message(fd, msg_txt(1180)); // You cannot autotrade when dead. + clif->message(fd, msg_fd(fd,1180)); // You cannot autotrade when dead. return false; } if( !sd->state.vending && !sd->state.buyingstore ) { //check if player is vending or buying - clif->message(fd, msg_txt(549)); // "You should have a shop open in order to use @autotrade." + clif->message(fd, msg_fd(fd,549)); // "You should have a shop open in order to use @autotrade." return false; } @@ -5489,22 +5532,22 @@ ACMD(changegm) { struct map_session_data *pl_sd; if (sd->status.guild_id == 0 || (g = sd->guild) == NULL || strcmp(g->master,sd->status.name)) { - clif->message(fd, msg_txt(1181)); // You need to be a Guild Master to use this command. + clif->message(fd, msg_fd(fd,1181)); // You need to be a Guild Master to use this command. return false; } if( map->list[sd->bl.m].flag.guildlock || map->list[sd->bl.m].flag.gvg_castle ) { - clif->message(fd, msg_txt(1182)); // You cannot change guild leaders in this map. + clif->message(fd, msg_fd(fd,1182)); // You cannot change guild leaders in this map. return false; } if( !message[0] ) { - clif->message(fd, msg_txt(1183)); // Usage: @changegm <guild_member_name> + clif->message(fd, msg_fd(fd,1183)); // Usage: @changegm <guild_member_name> return false; } if((pl_sd=map->nick2sd((char *) message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) { - clif->message(fd, msg_txt(1184)); // Target character must be online and be a guild member. + clif->message(fd, msg_fd(fd,1184)); // Target character must be online and be a guild member. return false; } @@ -5519,7 +5562,7 @@ ACMD(changegm) { ACMD(changeleader) { if( !message[0] ) { - clif->message(fd, msg_txt(1185)); // Usage: @changeleader <party_member_name> + clif->message(fd, msg_fd(fd,1185)); // Usage: @changeleader <party_member_name> return false; } @@ -5540,7 +5583,7 @@ ACMD(partyoption) if (sd->status.party_id == 0 || (p = party->search(sd->status.party_id)) == NULL) { - clif->message(fd, msg_txt(282)); + clif->message(fd, msg_fd(fd,282)); return false; } @@ -5550,13 +5593,13 @@ ACMD(partyoption) if (!p->party.member[mi].leader) { - clif->message(fd, msg_txt(282)); + clif->message(fd, msg_fd(fd,282)); return false; } if(!message || !*message || sscanf(message, "%15s %15s", w1, w2) < 2) { - clif->message(fd, msg_txt(1186)); // Usage: @partyoption <pickup share: yes/no> <item distribution: yes/no> + clif->message(fd, msg_fd(fd,1186)); // Usage: @partyoption <pickup share: yes/no> <item distribution: yes/no> return false; } @@ -5566,7 +5609,7 @@ ACMD(partyoption) if (option != p->party.item) party->changeoption(sd, p->party.exp, option); else - clif->message(fd, msg_txt(286)); + clif->message(fd, msg_fd(fd,286)); return true; } @@ -5596,10 +5639,10 @@ ACMD(autoloot) sd->state.autoloot = rate; if (sd->state.autoloot) { - snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1187),((double)sd->state.autoloot)/100.); // Autolooting items with drop rates of %0.02f%% and below. + snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1187),((double)sd->state.autoloot)/100.); // Autolooting items with drop rates of %0.02f%% and below. clif->message(fd, atcmd_output); }else - clif->message(fd, msg_txt(1188)); // Autoloot is now off. + clif->message(fd, msg_fd(fd,1188)); // Autoloot is now off. return true; } @@ -5631,7 +5674,7 @@ ACMD(autolootitem) item_data = itemdb->search_name(message); if (!item_data) { // No items founds in the DB with Id or Name - clif->message(fd, msg_txt(1189)); // Item not found. + clif->message(fd, msg_fd(fd,1189)); // Item not found. return false; } } @@ -5641,27 +5684,27 @@ ACMD(autolootitem) case 1: ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] == item_data->nameid); if (i != AUTOLOOTITEM_SIZE) { - clif->message(fd, msg_txt(1190)); // You're already autolooting this item. + clif->message(fd, msg_fd(fd,1190)); // You're already autolooting this item. return false; } ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] == 0); if (i == AUTOLOOTITEM_SIZE) { - clif->message(fd, msg_txt(1191)); // Your autolootitem list is full. Remove some items first with @autolootid -<item name or ID>. + clif->message(fd, msg_fd(fd,1191)); // Your autolootitem list is full. Remove some items first with @autolootid -<item name or ID>. return false; } sd->state.autolootid[i] = item_data->nameid; // Autoloot Activated - sprintf(atcmd_output, msg_txt(1192), item_data->name, item_data->jname, item_data->nameid); // Autolooting item: '%s'/'%s' {%d} + sprintf(atcmd_output, msg_fd(fd,1192), item_data->name, item_data->jname, item_data->nameid); // Autolooting item: '%s'/'%s' {%d} clif->message(fd, atcmd_output); sd->state.autolooting = 1; break; case 2: ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] == item_data->nameid); if (i == AUTOLOOTITEM_SIZE) { - clif->message(fd, msg_txt(1193)); // You're currently not autolooting this item. + clif->message(fd, msg_fd(fd,1193)); // You're currently not autolooting this item. return false; } sd->state.autolootid[i] = 0; - sprintf(atcmd_output, msg_txt(1194), item_data->name, item_data->jname, item_data->nameid); // Removed item: '%s'/'%s' {%d} from your autolootitem list. + sprintf(atcmd_output, msg_fd(fd,1194), item_data->name, item_data->jname, item_data->nameid); // Removed item: '%s'/'%s' {%d} from your autolootitem list. clif->message(fd, atcmd_output); ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] != 0); if (i == AUTOLOOTITEM_SIZE) { @@ -5669,15 +5712,15 @@ ACMD(autolootitem) } break; case 3: - sprintf(atcmd_output, msg_txt(1195), AUTOLOOTITEM_SIZE); // You can have %d items on your autolootitem list. + sprintf(atcmd_output, msg_fd(fd,1195), AUTOLOOTITEM_SIZE); // You can have %d items on your autolootitem list. clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1196)); // To add an item to the list, use "@alootid +<item name or ID>". To remove an item, use "@alootid -<item name or ID>". - clif->message(fd, msg_txt(1197)); // "@alootid reset" will clear your autolootitem list. + clif->message(fd, msg_fd(fd,1196)); // To add an item to the list, use "@alootid +<item name or ID>". To remove an item, use "@alootid -<item name or ID>". + clif->message(fd, msg_fd(fd,1197)); // "@alootid reset" will clear your autolootitem list. ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] != 0); if (i == AUTOLOOTITEM_SIZE) { - clif->message(fd, msg_txt(1198)); // Your autolootitem list is empty. + clif->message(fd, msg_fd(fd,1198)); // Your autolootitem list is empty. } else { - clif->message(fd, msg_txt(1199)); // Items on your autolootitem list: + clif->message(fd, msg_fd(fd,1199)); // Items on your autolootitem list: for(i = 0; i < AUTOLOOTITEM_SIZE; i++) { if (sd->state.autolootid[i] == 0) @@ -5693,7 +5736,7 @@ ACMD(autolootitem) break; case 4: memset(sd->state.autolootid, 0, sizeof(sd->state.autolootid)); - clif->message(fd, msg_txt(1200)); // Your autolootitem list has been reset. + clif->message(fd, msg_fd(fd,1200)); // Your autolootitem list has been reset. sd->state.autolooting = 0; break; } @@ -5742,7 +5785,7 @@ ACMD(autoloottype) { else if (strncmp(message, "ammo", 3) == 0) type = IT_AMMO; else { - clif->message(fd, msg_txt(1491)); // Item type not found. + clif->message(fd, msg_fd(fd,1491)); // Item type not found. return false; } } @@ -5751,24 +5794,24 @@ ACMD(autoloottype) { switch (action) { case 1: if (sd->state.autoloottype&(1<<type)) { - clif->message(fd, msg_txt(1490)); // You're already autolooting this item type. + clif->message(fd, msg_fd(fd,1490)); // You're already autolooting this item type. return false; } sd->state.autoloottype |= (1<<type); // Stores the type - sprintf(atcmd_output, msg_txt(1492), itemdb->typename(type)); // Autolooting item type: '%s' + sprintf(atcmd_output, msg_fd(fd,1492), itemdb->typename(type)); // Autolooting item type: '%s' clif->message(fd, atcmd_output); break; case 2: if (!(sd->state.autoloottype&(1<<type))) { - clif->message(fd, msg_txt(1493)); // You're currently not autolooting this item type. + clif->message(fd, msg_fd(fd,1493)); // You're currently not autolooting this item type. return false; } sd->state.autoloottype &= ~(1<<type); - sprintf(atcmd_output, msg_txt(1494), itemdb->typename(type)); // Removed item type: '%s' from your autoloottype list. + sprintf(atcmd_output, msg_fd(fd,1494), itemdb->typename(type)); // Removed item type: '%s' from your autoloottype list. clif->message(fd, atcmd_output); break; case 3: - clif->message(fd, msg_txt(38)); // Invalid location number, or name. + clif->message(fd, msg_fd(fd,38)); // Invalid location number, or name. { // attempt to find the text help string @@ -5777,10 +5820,10 @@ ACMD(autoloottype) { } if (sd->state.autoloottype == ITEM_NONE) { - clif->message(fd, msg_txt(1495)); // Your autoloottype list is empty. + clif->message(fd, msg_fd(fd,1495)); // Your autoloottype list is empty. } else { int i; - clif->message(fd, msg_txt(1496)); // Item types on your autoloottype list: + clif->message(fd, msg_fd(fd,1496)); // Item types on your autoloottype list: for(i=0; i < IT_MAX; i++) { if (sd->state.autoloottype&(1<<i)) { sprintf(atcmd_output, " '%s'", itemdb->typename(i)); @@ -5791,7 +5834,7 @@ ACMD(autoloottype) { break; case 4: sd->state.autoloottype = ITEM_NONE; - clif->message(fd, msg_txt(1497)); // Your autoloottype list has been reset. + clif->message(fd, msg_fd(fd,1497)); // Your autoloottype list has been reset. break; } return true; @@ -5805,11 +5848,11 @@ ACMD(snow) if (map->list[sd->bl.m].flag.snow) { map->list[sd->bl.m].flag.snow=0; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1203)); // Snow has stopped falling. + clif->message(fd, msg_fd(fd,1203)); // Snow has stopped falling. } else { map->list[sd->bl.m].flag.snow=1; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1204)); // It has started to snow. + clif->message(fd, msg_fd(fd,1204)); // It has started to snow. } return true; @@ -5823,11 +5866,11 @@ ACMD(sakura) { if (map->list[sd->bl.m].flag.sakura) { map->list[sd->bl.m].flag.sakura=0; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1205)); // Cherry tree leaves no longer fall. + clif->message(fd, msg_fd(fd,1205)); // Cherry tree leaves no longer fall. } else { map->list[sd->bl.m].flag.sakura=1; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1206)); // Cherry tree leaves have begun to fall. + clif->message(fd, msg_fd(fd,1206)); // Cherry tree leaves have begun to fall. } return true; } @@ -5840,11 +5883,11 @@ ACMD(clouds) { if (map->list[sd->bl.m].flag.clouds) { map->list[sd->bl.m].flag.clouds=0; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1207)); // The clouds has disappear. + clif->message(fd, msg_fd(fd,1207)); // The clouds has disappear. } else { map->list[sd->bl.m].flag.clouds=1; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1208)); // Clouds appear. + clif->message(fd, msg_fd(fd,1208)); // Clouds appear. } return true; @@ -5858,11 +5901,11 @@ ACMD(clouds2) { if (map->list[sd->bl.m].flag.clouds2) { map->list[sd->bl.m].flag.clouds2=0; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1209)); // The alternative clouds disappear. + clif->message(fd, msg_fd(fd,1209)); // The alternative clouds disappear. } else { map->list[sd->bl.m].flag.clouds2=1; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1210)); // Alternative clouds appear. + clif->message(fd, msg_fd(fd,1210)); // Alternative clouds appear. } return true; @@ -5876,11 +5919,11 @@ ACMD(fog) { if (map->list[sd->bl.m].flag.fog) { map->list[sd->bl.m].flag.fog=0; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1211)); // The fog has gone. + clif->message(fd, msg_fd(fd,1211)); // The fog has gone. } else { map->list[sd->bl.m].flag.fog=1; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1212)); // Fog hangs over. + clif->message(fd, msg_fd(fd,1212)); // Fog hangs over. } return true; } @@ -5893,11 +5936,11 @@ ACMD(leaves) { if (map->list[sd->bl.m].flag.leaves) { map->list[sd->bl.m].flag.leaves=0; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1213)); // Leaves no longer fall. + clif->message(fd, msg_fd(fd,1213)); // Leaves no longer fall. } else { map->list[sd->bl.m].flag.leaves=1; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1214)); // Fallen leaves fall. + clif->message(fd, msg_fd(fd,1214)); // Fallen leaves fall. } return true; @@ -5911,11 +5954,11 @@ ACMD(fireworks) { if (map->list[sd->bl.m].flag.fireworks) { map->list[sd->bl.m].flag.fireworks=0; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1215)); // Fireworks have ended. + clif->message(fd, msg_fd(fd,1215)); // Fireworks have ended. } else { map->list[sd->bl.m].flag.fireworks=1; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(1216)); // Fireworks have launched. + clif->message(fd, msg_fd(fd,1216)); // Fireworks have launched. } return true; @@ -5934,7 +5977,7 @@ ACMD(clearweather) map->list[sd->bl.m].flag.fireworks=0; map->list[sd->bl.m].flag.leaves=0; clif->weather(sd->bl.m); - clif->message(fd, msg_txt(291)); // "Weather effects will disappear after teleporting or refreshing." + clif->message(fd, msg_fd(fd,291)); // "Weather effects will disappear after teleporting or refreshing." return true; } @@ -5949,7 +5992,7 @@ ACMD(sound) memset(sound_file, '\0', sizeof(sound_file)); if(!message || !*message || sscanf(message, "%99[^\n]", sound_file) < 1) { - clif->message(fd, msg_txt(1217)); // Please enter a sound filename (usage: @sound <filename>). + clif->message(fd, msg_fd(fd,1217)); // Please enter a sound filename (usage: @sound <filename>). return false; } @@ -5972,14 +6015,14 @@ ACMD(mobsearch) struct s_mapiterator* it; if (!message || !*message || sscanf(message, "%99[^\n]", mob_name) < 1) { - clif->message(fd, msg_txt(1218)); // Please enter a monster name (usage: @mobsearch <monster name>). + clif->message(fd, msg_fd(fd,1218)); // Please enter a monster name (usage: @mobsearch <monster name>). return false; } if ((mob_id = atoi(mob_name)) == 0) mob_id = mob->db_searchname(mob_name); if(mob_id > 0 && mob->db_checkid(mob_id) == 0){ - snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1219),mob_name); // Invalid mob ID %s! + snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1219),mob_name); // Invalid mob ID %s! clif->message(fd, atcmd_output); return false; } @@ -5987,7 +6030,7 @@ ACMD(mobsearch) strcpy(mob_name,mob->db(mob_id)->jname); // --ja-- //strcpy(mob_name,mob_db(mob_id)->name); // --en-- - snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1220), mob_name, mapindex_id2name(sd->mapindex)); // Mob Search... %s %s + snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1220), mob_name, mapindex_id2name(sd->mapindex)); // Mob Search... %s %s clif->message(fd, atcmd_output); it = mapit_geteachmob(); @@ -6027,7 +6070,7 @@ int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) { ACMD(cleanmap) { map->foreachinmap(atcommand->cleanfloor_sub, sd->bl.m, BL_ITEM); - clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up. + clif->message(fd, msg_fd(fd,1221)); // All dropped items have been cleaned up. return true; } @@ -6042,7 +6085,7 @@ ACMD(cleanarea) { map->foreachinarea(atcommand->cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM); } - clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up. + clif->message(fd, msg_fd(fd,1221)); // All dropped items have been cleaned up. return true; } @@ -6064,19 +6107,19 @@ ACMD(npctalk) if(!ifcolor) { if (!message || !*message || sscanf(message, "%23[^,], %99[^\n]", name, mes) < 2) { - clif->message(fd, msg_txt(1222)); // Please enter the correct parameters (usage: @npctalk <npc name>, <message>). + clif->message(fd, msg_fd(fd,1222)); // Please enter the correct parameters (usage: @npctalk <npc name>, <message>). return false; } } else { if (!message || !*message || sscanf(message, "%u %23[^,], %99[^\n]", &color, name, mes) < 3) { - clif->message(fd, msg_txt(1223)); // Please enter the correct parameters (usage: @npctalkc <color> <npc name>, <message>). + clif->message(fd, msg_fd(fd,1223)); // Please enter the correct parameters (usage: @npctalkc <color> <npc name>, <message>). return false; } } if (!(nd = npc->name2id(name))) { - clif->message(fd, msg_txt(111)); // This NPC doesn't exist + clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist return false; } @@ -6102,7 +6145,7 @@ ACMD(pettalk) if(!sd->status.pet_id || !(pd=sd->pd)) { - clif->message(fd, msg_txt(184)); + clif->message(fd, msg_fd(fd,184)); return false; } @@ -6112,7 +6155,7 @@ ACMD(pettalk) return false; if (!message || !*message || sscanf(message, "%99[^\n]", mes) < 1) { - clif->message(fd, msg_txt(1224)); // Please enter a message (usage: @pettalk <message>). + clif->message(fd, msg_fd(fd,1224)); // Please enter a message (usage: @pettalk <message>). return false; } @@ -6205,7 +6248,7 @@ ACMD(reset) { pc->resetstate(sd); pc->resetskill(sd,1); - sprintf(atcmd_output, msg_txt(208), sd->status.name); // '%s' skill and stats points reseted! + sprintf(atcmd_output, msg_fd(fd,208), sd->status.name); // '%s' skill and stats points reseted! clif->message(fd, atcmd_output); return true; } @@ -6223,7 +6266,7 @@ ACMD(summon) if (!message || !*message || sscanf(message, "%23s %d", name, &duration) < 1) { - clif->message(fd, msg_txt(1225)); // Please enter a monster name (usage: @summon <monster name> {duration}). + clif->message(fd, msg_fd(fd,1225)); // Please enter a monster name (usage: @summon <monster name> {duration}). return false; } @@ -6236,7 +6279,7 @@ ACMD(summon) mob_id = mob->db_searchname(name); if(mob_id == 0 || mob->db_checkid(mob_id) == 0) { - clif->message(fd, msg_txt(40)); // Invalid monster ID or name. + clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name. return false; } @@ -6252,7 +6295,7 @@ ACMD(summon) mob->spawn(md); sc_start4(NULL,&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000); clif->skill_poseffect(&sd->bl,AM_CALLHOMUN,1,md->bl.x,md->bl.y,tick); - clif->message(fd, msg_txt(39)); // All monster summoned! + clif->message(fd, msg_fd(fd,39)); // All monster summoned! return true; } @@ -6267,17 +6310,17 @@ ACMD(adjgroup) int new_group = 0; if (!message || !*message || sscanf(message, "%d", &new_group) != 1) { - clif->message(fd, msg_txt(1226)); // Usage: @adjgroup <group_id> + clif->message(fd, msg_fd(fd,1226)); // Usage: @adjgroup <group_id> return false; } if (pc->set_group(sd, new_group) != 0) { - clif->message(fd, msg_txt(1227)); // Specified group does not exist. + clif->message(fd, msg_fd(fd,1227)); // Specified group does not exist. return false; } - clif->message(fd, msg_txt(1228)); // Group changed successfully. - clif->message(sd->fd, msg_txt(1229)); // Your group has changed. + clif->message(fd, msg_fd(fd,1228)); // Group changed successfully. + clif->message(sd->fd, msg_fd(fd,1229)); // Your group has changed. return true; } @@ -6289,12 +6332,12 @@ ACMD(trade) { struct map_session_data *pl_sd = NULL; if (!message || !*message) { - clif->message(fd, msg_txt(1230)); // Please enter a player name (usage: @trade <char name>). + clif->message(fd, msg_fd(fd,1230)); // Please enter a player name (usage: @trade <char name>). return false; } if ( (pl_sd = map->nick2sd((char *)message)) == NULL ) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -6311,16 +6354,16 @@ ACMD(setbattleflag) char flag[128], value[128]; if (!message || !*message || sscanf(message, "%127s %127s", flag, value) != 2) { - clif->message(fd, msg_txt(1231)); // Usage: @setbattleflag <flag> <value> + clif->message(fd, msg_fd(fd,1231)); // Usage: @setbattleflag <flag> <value> return false; } if (battle->config_set_value(flag, value) == 0) { - clif->message(fd, msg_txt(1232)); // Unknown battle_config flag. + clif->message(fd, msg_fd(fd,1232)); // Unknown battle_config flag. return false; } - clif->message(fd, msg_txt(1233)); // Set battle_config as requested. + clif->message(fd, msg_fd(fd,1233)); // Set battle_config as requested. return true; } @@ -6332,24 +6375,24 @@ ACMD(unmute) { struct map_session_data *pl_sd = NULL; if (!message || !*message) { - clif->message(fd, msg_txt(1234)); // Please enter a player name (usage: @unmute <char name>). + clif->message(fd, msg_fd(fd,1234)); // Please enter a player name (usage: @unmute <char name>). return false; } if ( (pl_sd = map->nick2sd((char *)message)) == NULL ) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if(!pl_sd->sc.data[SC_NOCHAT]) { - clif->message(sd->fd,msg_txt(1235)); // Player is not muted. + clif->message(sd->fd,msg_fd(fd,1235)); // Player is not muted. return false; } pl_sd->status.manner = 0; status_change_end(&pl_sd->bl, SC_NOCHAT, INVALID_TIMER); - clif->message(sd->fd,msg_txt(1236)); // Player unmuted. + clif->message(sd->fd,msg_fd(fd,1236)); // Player unmuted. return true; } @@ -6370,7 +6413,7 @@ ACMD(uptime) minutes = seconds/minute; seconds -= (seconds/minute>0)?(seconds/minute)*minute:0; - snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(245), days, hours, minutes, seconds); + snprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,245), days, hours, minutes, seconds); clif->message(fd, atcmd_output); return true; @@ -6400,18 +6443,18 @@ ACMD(mute) { int manner; if (!message || !*message || sscanf(message, "%d %23[^\n]", &manner, atcmd_player_name) < 1) { - clif->message(fd, msg_txt(1237)); // Usage: @mute <time> <char name> + clif->message(fd, msg_fd(fd,1237)); // Usage: @mute <time> <char name> return false; } if ( (pl_sd = map->nick2sd(atcmd_player_name)) == NULL ) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) { - clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player. + clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player. return false; } @@ -6468,7 +6511,7 @@ ACMD(identify) if (num > 0) { clif->item_identify_list(sd); } else { - clif->message(fd,msg_txt(1238)); // There are no items to appraise. + clif->message(fd,msg_fd(fd,1238)); // There are no items to appraise. } return true; } @@ -6513,7 +6556,7 @@ ACMD(mobinfo) memset(atcmd_output2, '\0', sizeof(atcmd_output2)); if (!message || !*message) { - clif->message(fd, msg_txt(1239)); // Please enter a monster name/ID (usage: @mobinfo <monster_name_or_monster_ID>). + clif->message(fd, msg_fd(fd,1239)); // Please enter a monster name/ID (usage: @mobinfo <monster_name_or_monster_ID>). return false; } @@ -6525,12 +6568,12 @@ ACMD(mobinfo) count = mob->db_searchname_array(mob_array, MAX_SEARCH, message, 0); if (!count) { - clif->message(fd, msg_txt(40)); // Invalid monster ID or name. + clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name. return false; } if (count > MAX_SEARCH) { - sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count); + sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, count); clif->message(fd, atcmd_output); count = MAX_SEARCH; } @@ -6553,27 +6596,27 @@ ACMD(mobinfo) // stats if (monster->mexp) - sprintf(atcmd_output, msg_txt(1240), monster->name, monster->jname, monster->sprite, monster->vd.class_); // MVP Monster: '%s'/'%s'/'%s' (%d) + sprintf(atcmd_output, msg_fd(fd,1240), monster->name, monster->jname, monster->sprite, monster->vd.class_); // MVP Monster: '%s'/'%s'/'%s' (%d) else - sprintf(atcmd_output, msg_txt(1241), monster->name, monster->jname, monster->sprite, monster->vd.class_); // Monster: '%s'/'%s'/'%s' (%d) + sprintf(atcmd_output, msg_fd(fd,1241), monster->name, monster->jname, monster->sprite, monster->vd.class_); // Monster: '%s'/'%s'/'%s' (%d) clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1242), monster->lv, monster->status.max_hp, base_exp, job_exp, MOB_HIT(monster), MOB_FLEE(monster)); // Lv:%d HP:%d Base EXP:%u Job EXP:%u HIT:%d FLEE:%d + sprintf(atcmd_output, msg_fd(fd,1242), monster->lv, monster->status.max_hp, base_exp, job_exp, MOB_HIT(monster), MOB_FLEE(monster)); // Lv:%d HP:%d Base EXP:%u Job EXP:%u HIT:%d FLEE:%d clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1243), // DEF:%d MDEF:%d STR:%d AGI:%d VIT:%d INT:%d DEX:%d LUK:%d + sprintf(atcmd_output, msg_fd(fd,1243), // DEF:%d MDEF:%d STR:%d AGI:%d VIT:%d INT:%d DEX:%d LUK:%d monster->status.def, monster->status.mdef, monster->status.str, monster->status.agi, monster->status.vit, monster->status.int_, monster->status.dex, monster->status.luk); clif->message(fd, atcmd_output); #ifdef RENEWAL - sprintf(atcmd_output, msg_txt(1291), // ATK : %d~%d MATK : %d~%d Range : %d~%d~%d Size : %s Race : %s Element : %s(Lv : %d) + sprintf(atcmd_output, msg_fd(fd,1291), // ATK : %d~%d MATK : %d~%d Range : %d~%d~%d Size : %s Race : %s Element : %s(Lv : %d) MOB_ATK1(monster), MOB_ATK2(monster), MOB_MATK1(monster), MOB_MATK2(monster), monster->status.rhw.range, monster->range2 , monster->range3, msize[monster->status.size], mrace[monster->status.race], melement[monster->status.def_ele], monster->status.ele_lv); #else - sprintf(atcmd_output, msg_txt(1244), // ATK:%d~%d Range:%d~%d~%d Size:%s Race: %s Element: %s (Lv:%d) + sprintf(atcmd_output, msg_fd(fd,1244), // ATK:%d~%d Range:%d~%d~%d Size:%s Race: %s Element: %s (Lv:%d) monster->status.rhw.atk, monster->status.rhw.atk2, monster->status.rhw.range, monster->range2 , monster->range3, msize[monster->status.size], mrace[monster->status.race], melement[monster->status.def_ele], monster->status.ele_lv); @@ -6581,7 +6624,7 @@ ACMD(mobinfo) clif->message(fd, atcmd_output); // drops - clif->message(fd, msg_txt(1245)); // Drops: + clif->message(fd, msg_fd(fd,1245)); // Drops: strcpy(atcmd_output, " "); j = 0; for (i = 0; i < MAX_MOB_DROP; i++) { @@ -6615,15 +6658,15 @@ ACMD(mobinfo) } if (j == 0) - clif->message(fd, msg_txt(1246)); // This monster has no drops. + clif->message(fd, msg_fd(fd,1246)); // This monster has no drops. else if (j % 3 != 0) clif->message(fd, atcmd_output); // mvp if (monster->mexp) { - sprintf(atcmd_output, msg_txt(1247), monster->mexp); // MVP Bonus EXP:%u + sprintf(atcmd_output, msg_fd(fd,1247), monster->mexp); // MVP Bonus EXP:%u clif->message(fd, atcmd_output); - safestrncpy(atcmd_output, msg_txt(1248), sizeof(atcmd_output)); // MVP Items: + safestrncpy(atcmd_output, msg_fd(fd,1248), sizeof(atcmd_output)); // MVP Items: j = 0; for (i = 0; i < MAX_MVP_DROP; i++) { if (monster->mvpitem[i].nameid <= 0 || (item_data = itemdb->exists(monster->mvpitem[i].nameid)) == NULL) @@ -6638,7 +6681,7 @@ ACMD(mobinfo) } } if (j == 0) - clif->message(fd, msg_txt(1249)); // This monster has no MVP prizes. + clif->message(fd, msg_fd(fd,1249)); // This monster has no MVP prizes. else clif->message(fd, atcmd_output); } @@ -6658,7 +6701,7 @@ ACMD(showmobs) struct s_mapiterator* it; if( sscanf(message, "%99[^\n]", mob_name) < 0 ) { - clif->message(fd, msg_txt(546)); // Please enter a mob name/id (usage: @showmobs <mob name/id>) + clif->message(fd, msg_fd(fd,546)); // Please enter a mob name/id (usage: @showmobs <mob name/id>) return false; } @@ -6666,20 +6709,20 @@ ACMD(showmobs) mob_id = mob->db_searchname(mob_name); if( mob_id == 0 ) { - snprintf(atcmd_output, sizeof atcmd_output, msg_txt(547), mob_name); // Invalid mob name %s! + snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,547), mob_name); // Invalid mob name %s! clif->message(fd, atcmd_output); return false; } if(mob_id > 0 && mob->db_checkid(mob_id) == 0){ - snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1250),mob_name); // Invalid mob id %s! + snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1250),mob_name); // Invalid mob id %s! clif->message(fd, atcmd_output); return false; } if (mob->db(mob_id)->status.mode&MD_BOSS && !pc_has_permission(sd, PC_PERM_SHOW_BOSS)) { // If player group does not have access to boss mobs. - clif->message(fd, msg_txt(1251)); // Can't show boss mobs! + clif->message(fd, msg_fd(fd,1251)); // Can't show boss mobs! return false; } @@ -6687,7 +6730,7 @@ ACMD(showmobs) strcpy(mob_name,mob->db(mob_id)->jname); // --ja-- //strcpy(mob_name,mob_db(mob_id)->name); // --en-- - snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1252), // Mob Search... %s %s + snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1252), // Mob Search... %s %s mob_name, mapindex_id2name(sd->mapindex)); clif->message(fd, atcmd_output); @@ -6724,12 +6767,12 @@ ACMD(homlevel) { enum homun_type htype; if( !message || !*message || ( level = atoi(message) ) < 1 ) { - clif->message(fd, msg_txt(1253)); // Please enter a level adjustment (usage: @homlevel <number of levels>). + clif->message(fd, msg_fd(fd,1253)); // Please enter a level adjustment (usage: @homlevel <number of levels>). return false; } if( !homun_alive(sd->hd) ) { - clif->message(fd, msg_txt(1254)); // You do not have a homunculus. + clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus. return false; } @@ -6744,14 +6787,14 @@ ACMD(homlevel) { case HT_REG: case HT_EVO: if( hd->homunculus.level >= battle_config.hom_max_level ) { - snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(1478), hd->homunculus.level); // Homun reached its maximum level of '%d' + snprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1478), hd->homunculus.level); // Homun reached its maximum level of '%d' clif->message(fd, atcmd_output); return true; } break; case HT_S: if( hd->homunculus.level >= battle_config.hom_S_max_level ) { - snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(1478), hd->homunculus.level); // Homun reached its maximum level of '%d' + snprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1478), hd->homunculus.level); // Homun reached its maximum level of '%d' clif->message(fd, atcmd_output); return true; } @@ -6777,12 +6820,12 @@ ACMD(homlevel) { ACMD(homevolution) { if ( !homun_alive(sd->hd) ) { - clif->message(fd, msg_txt(1254)); // You do not have a homunculus. + clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus. return false; } if ( !homun->evolve(sd->hd) ) { - clif->message(fd, msg_txt(1255)); // Your homunculus doesn't evolve. + clif->message(fd, msg_fd(fd,1255)); // Your homunculus doesn't evolve. return false; } clif->homskillinfoblock(sd); @@ -6794,7 +6837,7 @@ ACMD(hommutate) { enum homun_type m_class, m_id; if( !homun_alive(sd->hd) ) { - clif->message(fd, msg_txt(1254)); // You do not have a homunculus. + clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus. return false; } @@ -6822,7 +6865,7 @@ ACMD(makehomun) { int homunid; if (!message || !*message) { - clif->message(fd, msg_txt(1256)); // Please enter a homunculus ID (usage: @makehomun <homunculus id>). + clif->message(fd, msg_fd(fd,1256)); // Please enter a homunculus ID (usage: @makehomun <homunculus id>). return false; } @@ -6839,13 +6882,13 @@ ACMD(makehomun) { } if ( sd->status.hom_id ) { - clif->message(fd, msg_txt(450)); + clif->message(fd, msg_fd(fd,450)); return false; } if( homunid < HM_CLASS_BASE || homunid > HM_CLASS_BASE + MAX_HOMUNCULUS_CLASS - 1 ) { - clif->message(fd, msg_txt(1257)); // Invalid Homunculus ID. + clif->message(fd, msg_fd(fd,1257)); // Invalid Homunculus ID. return false; } @@ -6861,12 +6904,12 @@ ACMD(homfriendly) int friendly = 0; if ( !homun_alive(sd->hd) ) { - clif->message(fd, msg_txt(1254)); // You do not have a homunculus. + clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus. return false; } if (!message || !*message) { - clif->message(fd, msg_txt(1258)); // Please enter a friendly value (usage: @homfriendly <friendly value [0-1000]>). + clif->message(fd, msg_fd(fd,1258)); // Please enter a friendly value (usage: @homfriendly <friendly value [0-1000]>). return false; } @@ -6886,12 +6929,12 @@ ACMD(homhungry) int hungry = 0; if ( !homun_alive(sd->hd) ) { - clif->message(fd, msg_txt(1254)); // You do not have a homunculus. + clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus. return false; } if (!message || !*message) { - clif->message(fd, msg_txt(1259)); // Please enter a hunger value (usage: @homhungry <hunger value [0-100]>). + clif->message(fd, msg_fd(fd,1259)); // Please enter a hunger value (usage: @homhungry <hunger value [0-100]>). return false; } @@ -6922,12 +6965,12 @@ ACMD(homtalk) return false; if ( !homun_alive(sd->hd) ) { - clif->message(fd, msg_txt(1254)); // You do not have a homunculus. + clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus. return false; } if (!message || !*message || sscanf(message, "%99[^\n]", mes) < 1) { - clif->message(fd, msg_txt(1260)); // Please enter a message (usage: @homtalk <message>). + clif->message(fd, msg_fd(fd,1260)); // Please enter a message (usage: @homtalk <message>). return false; } @@ -6945,28 +6988,28 @@ ACMD(hominfo) { struct status_data *st; if ( !homun_alive(sd->hd) ) { - clif->message(fd, msg_txt(1254)); // You do not have a homunculus. + clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus. return false; } hd = sd->hd; st = status->get_status_data(&hd->bl); - clif->message(fd, msg_txt(1261)); // Homunculus stats: + clif->message(fd, msg_fd(fd,1261)); // Homunculus stats: - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1262), // HP: %d/%d - SP: %d/%d + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1262), // HP: %d/%d - SP: %d/%d st->hp, st->max_hp, st->sp, st->max_sp); clif->message(fd, atcmd_output); - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1263), // ATK: %d - MATK: %d~%d + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1263), // ATK: %d - MATK: %d~%d st->rhw.atk2 +st->batk, st->matk_min, st->matk_max); clif->message(fd, atcmd_output); - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1264), // Hungry: %d - Intimacy: %u + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1264), // Hungry: %d - Intimacy: %u hd->homunculus.hunger, hd->homunculus.intimacy/100); clif->message(fd, atcmd_output); snprintf(atcmd_output, sizeof(atcmd_output) , - msg_txt(1265), // Stats: Str %d / Agi %d / Vit %d / Int %d / Dex %d / Luk %d + msg_fd(fd,1265), // Stats: Str %d / Agi %d / Vit %d / Int %d / Dex %d / Luk %d st->str, st->agi, st->vit, st->int_, st->dex, st->luk); clif->message(fd, atcmd_output); @@ -6982,7 +7025,7 @@ ACMD(homstats) int lv, min, max, evo; if ( !homun_alive(sd->hd) ) { - clif->message(fd, msg_txt(1254)); // You do not have a homunculus. + clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus. return false; } @@ -6993,49 +7036,49 @@ ACMD(homstats) lv = hom->level; snprintf(atcmd_output, sizeof(atcmd_output) , - msg_txt(1266), lv, db->name); // Homunculus growth stats (Lv %d %s): + msg_fd(fd,1266), lv, db->name); // Homunculus growth stats (Lv %d %s): clif->message(fd, atcmd_output); lv--; //Since the first increase is at level 2. evo = (hom->class_ == db->evo_class); min = db->base.HP +lv*db->gmin.HP +(evo?db->emin.HP:0); max = db->base.HP +lv*db->gmax.HP +(evo?db->emax.HP:0);; - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1267), hom->max_hp, min, max); // Max HP: %d (%d~%d) + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1267), hom->max_hp, min, max); // Max HP: %d (%d~%d) clif->message(fd, atcmd_output); min = db->base.SP +lv*db->gmin.SP +(evo?db->emin.SP:0); max = db->base.SP +lv*db->gmax.SP +(evo?db->emax.SP:0);; - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1268), hom->max_sp, min, max); // Max SP: %d (%d~%d) + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1268), hom->max_sp, min, max); // Max SP: %d (%d~%d) clif->message(fd, atcmd_output); min = db->base.str +lv*(db->gmin.str/10) +(evo?db->emin.str:0); max = db->base.str +lv*(db->gmax.str/10) +(evo?db->emax.str:0);; - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1269), hom->str/10, min, max); // Str: %d (%d~%d) + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1269), hom->str/10, min, max); // Str: %d (%d~%d) clif->message(fd, atcmd_output); min = db->base.agi +lv*(db->gmin.agi/10) +(evo?db->emin.agi:0); max = db->base.agi +lv*(db->gmax.agi/10) +(evo?db->emax.agi:0);; - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1270), hom->agi/10, min, max); // Agi: %d (%d~%d) + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1270), hom->agi/10, min, max); // Agi: %d (%d~%d) clif->message(fd, atcmd_output); min = db->base.vit +lv*(db->gmin.vit/10) +(evo?db->emin.vit:0); max = db->base.vit +lv*(db->gmax.vit/10) +(evo?db->emax.vit:0);; - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1271), hom->vit/10, min, max); // Vit: %d (%d~%d) + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1271), hom->vit/10, min, max); // Vit: %d (%d~%d) clif->message(fd, atcmd_output); min = db->base.int_ +lv*(db->gmin.int_/10) +(evo?db->emin.int_:0); max = db->base.int_ +lv*(db->gmax.int_/10) +(evo?db->emax.int_:0);; - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1272), hom->int_/10, min, max); // Int: %d (%d~%d) + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1272), hom->int_/10, min, max); // Int: %d (%d~%d) clif->message(fd, atcmd_output); min = db->base.dex +lv*(db->gmin.dex/10) +(evo?db->emin.dex:0); max = db->base.dex +lv*(db->gmax.dex/10) +(evo?db->emax.dex:0);; - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1273), hom->dex/10, min, max); // Dex: %d (%d~%d) + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1273), hom->dex/10, min, max); // Dex: %d (%d~%d) clif->message(fd, atcmd_output); min = db->base.luk +lv*(db->gmin.luk/10) +(evo?db->emin.luk:0); max = db->base.luk +lv*(db->gmax.luk/10) +(evo?db->emax.luk:0);; - snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1274), hom->luk/10, min, max); // Luk: %d (%d~%d) + snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1274), hom->luk/10, min, max); // Luk: %d (%d~%d) clif->message(fd, atcmd_output); return true; @@ -7049,7 +7092,7 @@ ACMD(homshuffle) if(!homun->shuffle(sd->hd)) return false; - clif->message(sd->fd, msg_txt(1275)); // Homunculus stats altered. + clif->message(sd->fd, msg_fd(fd,1275)); // Homunculus stats altered. atcommand_homstats(fd, sd, command, message, info); //Print out the new stats return true; } @@ -7064,41 +7107,41 @@ ACMD(iteminfo) int i, count = 1; if (!message || !*message) { - clif->message(fd, msg_txt(1276)); // Please enter an item name/ID (usage: @ii/@iteminfo <item name/ID>). + clif->message(fd, msg_fd(fd,1276)); // Please enter an item name/ID (usage: @ii/@iteminfo <item name/ID>). return false; } if ((item_array[0] = itemdb->exists(atoi(message))) == NULL) count = itemdb->search_name_array(item_array, MAX_SEARCH, message, 0); if (!count) { - clif->message(fd, msg_txt(19)); // Invalid item ID or name. + clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name. return false; } if (count > MAX_SEARCH) { - sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count); // Displaying first %d out of %d matches + sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, count); // Displaying first %d out of %d matches clif->message(fd, atcmd_output); count = MAX_SEARCH; } for (i = 0; i < count; i++) { struct item_data *item_data = item_array[i]; - sprintf(atcmd_output, msg_txt(1277), // Item: '%s'/'%s'[%d] (%d) Type: %s | Extra Effect: %s + sprintf(atcmd_output, msg_fd(fd,1277), // Item: '%s'/'%s'[%d] (%d) Type: %s | Extra Effect: %s item_data->name,item_data->jname,item_data->slot,item_data->nameid, itemdb->typename(item_data->type), - (item_data->script==NULL)? msg_txt(1278) : msg_txt(1279) // None / With script + (item_data->script==NULL)? msg_fd(fd,1278) : msg_fd(fd,1279) // None / With script ); clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1280), item_data->value_buy, item_data->value_sell, item_data->weight/10. ); // NPC Buy:%dz, Sell:%dz | Weight: %.1f + sprintf(atcmd_output, msg_fd(fd,1280), item_data->value_buy, item_data->value_sell, item_data->weight/10. ); // NPC Buy:%dz, Sell:%dz | Weight: %.1f clif->message(fd, atcmd_output); if (item_data->maxchance == -1) - safestrncpy(atcmd_output, msg_txt(1281), sizeof(atcmd_output)); // - Available in the shops only. + safestrncpy(atcmd_output, msg_fd(fd,1281), sizeof(atcmd_output)); // - Available in the shops only. else if ( !battle_config.atcommand_mobinfo_type ) { if( item_data->maxchance ) - sprintf(atcmd_output, msg_txt(1282), (float)item_data->maxchance / 100 ); // - Maximal monsters drop chance: %02.02f%% + sprintf(atcmd_output, msg_fd(fd,1282), (float)item_data->maxchance / 100 ); // - Maximal monsters drop chance: %02.02f%% else - safestrncpy(atcmd_output, msg_txt(1283), sizeof(atcmd_output)); // - Monsters don't drop this item. + safestrncpy(atcmd_output, msg_fd(fd,1283), sizeof(atcmd_output)); // - Monsters don't drop this item. } clif->message(fd, atcmd_output); @@ -7115,32 +7158,32 @@ ACMD(whodrops) int i,j, count = 1; if (!message || !*message) { - clif->message(fd, msg_txt(1284)); // Please enter item name/ID (usage: @whodrops <item name/ID>). + clif->message(fd, msg_fd(fd,1284)); // Please enter item name/ID (usage: @whodrops <item name/ID>). return false; } if ((item_array[0] = itemdb->exists(atoi(message))) == NULL) count = itemdb->search_name_array(item_array, MAX_SEARCH, message, 0); if (!count) { - clif->message(fd, msg_txt(19)); // Invalid item ID or name. + clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name. return false; } if (count > MAX_SEARCH) { - sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count); // Displaying first %d out of %d matches + sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, count); // Displaying first %d out of %d matches clif->message(fd, atcmd_output); count = MAX_SEARCH; } for (i = 0; i < count; i++) { struct item_data *item_data = item_array[i]; - sprintf(atcmd_output, msg_txt(1285), item_data->jname,item_data->slot); // Item: '%s'[%d] + sprintf(atcmd_output, msg_fd(fd,1285), item_data->jname,item_data->slot); // Item: '%s'[%d] clif->message(fd, atcmd_output); if (item_data->mob[0].chance == 0) { - safestrncpy(atcmd_output, msg_txt(1286), sizeof(atcmd_output)); // - Item is not dropped by mobs. + safestrncpy(atcmd_output, msg_fd(fd,1286), sizeof(atcmd_output)); // - Item is not dropped by mobs. clif->message(fd, atcmd_output); } else { - sprintf(atcmd_output, msg_txt(1287), MAX_SEARCH); // - Common mobs with highest drop chance (only max %d are listed): + sprintf(atcmd_output, msg_fd(fd,1287), MAX_SEARCH); // - Common mobs with highest drop chance (only max %d are listed): clif->message(fd, atcmd_output); for (j=0; j < MAX_SEARCH && item_data->mob[j].chance > 0; j++) @@ -7160,7 +7203,7 @@ ACMD(whereis) int i, j, k; if (!message || !*message) { - clif->message(fd, msg_txt(1288)); // Please enter a monster name/ID (usage: @whereis <monster_name_or_monster_ID>). + clif->message(fd, msg_fd(fd,1288)); // Please enter a monster name/ID (usage: @whereis <monster_name_or_monster_ID>). return false; } @@ -7173,18 +7216,18 @@ ACMD(whereis) count = mob->db_searchname_array(mob_array, MAX_SEARCH, message, 0); if (!count) { - clif->message(fd, msg_txt(40)); // Invalid monster ID or name. + clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name. return false; } if (count > MAX_SEARCH) { - sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count); + sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, count); clif->message(fd, atcmd_output); count = MAX_SEARCH; } for (k = 0; k < count; k++) { struct mob_db *monster = mob_array[k]; - snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1289), monster->jname); // %s spawns in: + snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1289), monster->jname); // %s spawns in: clif->message(fd, atcmd_output); for (i = 0; i < ARRAYLENGTH(monster->spawn) && monster->spawn[i].qty; i++) { @@ -7194,16 +7237,16 @@ ACMD(whereis) clif->message(fd, atcmd_output); } if (i == 0) - clif->message(fd, msg_txt(1290)); // This monster does not spawn normally. + clif->message(fd, msg_fd(fd,1290)); // This monster does not spawn normally. } return true; } ACMD(version) { - sprintf(atcmd_output, msg_txt(1296), sysinfo->is64bit() ? 64 : 32, sysinfo->platform()); // Hercules %d-bit for %s + sprintf(atcmd_output, msg_fd(fd,1296), sysinfo->is64bit() ? 64 : 32, sysinfo->platform()); // Hercules %d-bit for %s clif->message(fd, atcmd_output); - sprintf(atcmd_output, msg_txt(1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts) + sprintf(atcmd_output, msg_fd(fd,1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts) clif->message(fd, atcmd_output); return true; @@ -7237,7 +7280,7 @@ ACMD(mutearea) { int time; if (!message || !*message) { - clif->message(fd, msg_txt(1297)); // Please enter a time in minutes (usage: @mutearea/@stfu <time in minutes>). + clif->message(fd, msg_fd(fd,1297)); // Please enter a time in minutes (usage: @mutearea/@stfu <time in minutes>). return false; } @@ -7257,16 +7300,16 @@ ACMD(rates) memset(buf, '\0', sizeof(buf)); - snprintf(buf, CHAT_SIZE_MAX, msg_txt(1298), // Experience rates: Base %.2fx / Job %.2fx + snprintf(buf, CHAT_SIZE_MAX, msg_fd(fd,1298), // Experience rates: Base %.2fx / Job %.2fx battle_config.base_exp_rate/100., battle_config.job_exp_rate/100.); clif->message(fd, buf); - snprintf(buf, CHAT_SIZE_MAX, msg_txt(1299), // Normal Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx + snprintf(buf, CHAT_SIZE_MAX, msg_fd(fd,1299), // Normal Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx battle_config.item_rate_common/100., battle_config.item_rate_heal/100., battle_config.item_rate_use/100., battle_config.item_rate_equip/100., battle_config.item_rate_card/100.); clif->message(fd, buf); - snprintf(buf, CHAT_SIZE_MAX, msg_txt(1300), // Boss Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx + snprintf(buf, CHAT_SIZE_MAX, msg_fd(fd,1300), // Boss Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx battle_config.item_rate_common_boss/100., battle_config.item_rate_heal_boss/100., battle_config.item_rate_use_boss/100., battle_config.item_rate_equip_boss/100., battle_config.item_rate_card_boss/100.); clif->message(fd, buf); - snprintf(buf, CHAT_SIZE_MAX, msg_txt(1301), // Other Drop Rates: MvP %.2fx / Card-Based %.2fx / Treasure %.2fx + snprintf(buf, CHAT_SIZE_MAX, msg_fd(fd,1301), // Other Drop Rates: MvP %.2fx / Card-Based %.2fx / Treasure %.2fx battle_config.item_rate_mvp/100., battle_config.item_rate_adddrop/100., battle_config.item_rate_treasure/100.); clif->message(fd, buf); @@ -7290,11 +7333,11 @@ ACMD(me) return false; if (!message || !*message || sscanf(message, "%199[^\n]", tempmes) < 0) { - clif->message(fd, msg_txt(1302)); // Please enter a message (usage: @me <message>). + clif->message(fd, msg_fd(fd,1302)); // Please enter a message (usage: @me <message>). return false; } - sprintf(atcmd_output, msg_txt(270), sd->status.name, tempmes); // *%s %s* + sprintf(atcmd_output, msg_fd(fd,270), sd->status.name, tempmes); // *%s %s* clif->disp_overhead(&sd->bl, atcmd_output); return true; @@ -7321,7 +7364,7 @@ ACMD(size) else if( size == SZ_BIG ) clif->specialeffect(&sd->bl,422,AREA); - clif->message(fd, msg_txt(1303)); // Size change applied. + clif->message(fd, msg_fd(fd,1303)); // Size change applied. return true; } @@ -7351,7 +7394,7 @@ ACMD(sizeall) } mapit->free(iter); - clif->message(fd, msg_txt(1303)); // Size change applied. + clif->message(fd, msg_fd(fd,1303)); // Size change applied. return true; } @@ -7365,12 +7408,12 @@ ACMD(sizeguild) memset(guild_name, '\0', sizeof(guild_name)); if( !message || !*message || sscanf(message, "%d %23[^\n]", &size, guild_name) < 2 ) { - clif->message(fd, msg_txt(1304)); // Please enter guild name/ID (usage: @sizeguild <size> <guild name/ID>). + clif->message(fd, msg_fd(fd,1304)); // Please enter guild name/ID (usage: @sizeguild <size> <guild name/ID>). return false; } if( (g = guild->searchname(guild_name)) == NULL && (g = guild->search(atoi(guild_name))) == NULL ) { - clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online. + clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the guild is online. return false; } @@ -7391,7 +7434,7 @@ ACMD(sizeguild) } } - clif->message(fd, msg_txt(1303)); // Size change applied. + clif->message(fd, msg_fd(fd,1303)); // Size change applied. return true; } @@ -7403,10 +7446,10 @@ ACMD(monsterignore) { if (!sd->state.monster_ignore) { sd->state.monster_ignore = 1; - clif->message(sd->fd, msg_txt(1305)); // You are now immune to attacks. + clif->message(sd->fd, msg_fd(fd,1305)); // You are now immune to attacks. } else { sd->state.monster_ignore = 0; - clif->message(sd->fd, msg_txt(1306)); // Returned to normal state. + clif->message(sd->fd, msg_fd(fd,1306)); // Returned to normal state. } return true; @@ -7425,17 +7468,17 @@ ACMD(fakename) clif->charnameack(0, &sd->bl); if( sd->disguise ) clif->charnameack(sd->fd, &sd->bl); - clif->message(sd->fd, msg_txt(1307)); // Returned to real name. + clif->message(sd->fd, msg_fd(fd,1307)); // Returned to real name. return true; } - clif->message(sd->fd, msg_txt(1308)); // You must enter a name. + clif->message(sd->fd, msg_fd(fd,1308)); // You must enter a name. return false; } if( strlen(message) < 2 ) { - clif->message(sd->fd, msg_txt(1309)); // Fake name must be at least two characters. + clif->message(sd->fd, msg_fd(fd,1309)); // Fake name must be at least two characters. return false; } @@ -7443,7 +7486,7 @@ ACMD(fakename) clif->charnameack(0, &sd->bl); if( sd->disguise ) // Another packet should be sent so the client updates the name for sd clif->charnameack(sd->fd, &sd->bl); - clif->message(sd->fd, msg_txt(1310)); // Fake name enabled. + clif->message(sd->fd, msg_fd(fd,1310)); // Fake name enabled. return true; } @@ -7468,7 +7511,7 @@ ACMD(mapflag) { memset(flag_name, '\0', sizeof(flag_name)); if (!message || !*message || (sscanf(message, "%99s %hd", flag_name, &flag) < 1)) { - clif->message(sd->fd,msg_txt(1311)); // Enabled Mapflags in this map: + clif->message(sd->fd,msg_fd(fd,1311)); // Enabled Mapflags in this map: clif->message(sd->fd,"----------------------------------"); CHECKFLAG(autotrade); CHECKFLAG(allowks); CHECKFLAG(nomemo); CHECKFLAG(noteleport); CHECKFLAG(noreturn); CHECKFLAG(monster_noteleport); CHECKFLAG(nosave); CHECKFLAG(nobranch); @@ -7484,8 +7527,8 @@ ACMD(mapflag) { CHECKFLAG(nochat); CHECKFLAG(partylock); CHECKFLAG(guildlock); CHECKFLAG(src4instance); CHECKFLAG(notomb); CHECKFLAG(nocashshop); clif->message(sd->fd," "); - clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On) - clif->message(sd->fd,msg_txt(1313)); // Type "@mapflag available" to list the available mapflags. + clif->message(sd->fd,msg_fd(fd,1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On) + clif->message(sd->fd,msg_fd(fd,1313)); // Type "@mapflag available" to list the available mapflags. return true; } for (i = 0; flag_name[i]; i++) flag_name[i] = TOLOWER(flag_name[i]); //lowercase @@ -7521,9 +7564,9 @@ ACMD(mapflag) { SETFLAG(nochat); SETFLAG(partylock); SETFLAG(guildlock); SETFLAG(src4instance); SETFLAG(notomb); SETFLAG(nocashshop); - clif->message(sd->fd,msg_txt(1314)); // Invalid flag name or flag. - clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On) - clif->message(sd->fd,msg_txt(1315)); // Available Flags: + clif->message(sd->fd,msg_fd(fd,1314)); // Invalid flag name or flag. + clif->message(sd->fd,msg_fd(fd,1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On) + clif->message(sd->fd,msg_fd(fd,1315)); // Available Flags: clif->message(sd->fd,"----------------------------------"); clif->message(sd->fd,"town, autotrade, allowks, nomemo, noteleport, noreturn, monster_noteleport, nosave,"); clif->message(sd->fd,"nobranch, noexppenalty, pvp, pvp_noparty, pvp_noguild, pvp_nightmaredrop,"); @@ -7545,12 +7588,12 @@ ACMD(showexp) { if (sd->state.showexp) { sd->state.showexp = 0; - clif->message(fd, msg_txt(1316)); // Gained exp will not be shown. + clif->message(fd, msg_fd(fd,1316)); // Gained exp will not be shown. return true; } sd->state.showexp = 1; - clif->message(fd, msg_txt(1317)); // Gained exp is now shown. + clif->message(fd, msg_fd(fd,1317)); // Gained exp is now shown. return true; } @@ -7558,12 +7601,12 @@ ACMD(showzeny) { if (sd->state.showzeny) { sd->state.showzeny = 0; - clif->message(fd, msg_txt(1318)); // Gained zeny will not be shown. + clif->message(fd, msg_fd(fd,1318)); // Gained zeny will not be shown. return true; } sd->state.showzeny = 1; - clif->message(fd, msg_txt(1319)); // Gained zeny is now shown. + clif->message(fd, msg_fd(fd,1319)); // Gained zeny is now shown. return true; } @@ -7571,12 +7614,12 @@ ACMD(showdelay) { if (sd->state.showdelay) { sd->state.showdelay = 0; - clif->message(fd, msg_txt(1320)); // Skill delay failures will not be shown. + clif->message(fd, msg_fd(fd,1320)); // Skill delay failures will not be shown. return true; } sd->state.showdelay = 1; - clif->message(fd, msg_txt(1321)); // Skill delay failures are now shown. + clif->message(fd, msg_fd(fd,1321)); // Skill delay failures are now shown. return true; } @@ -7596,40 +7639,40 @@ ACMD(invite) { if(did == 0) { // "Duel: @invite without @duel." - clif->message(fd, msg_txt(350)); + clif->message(fd, msg_fd(fd,350)); return false; } if(duel->list[did].max_players_limit > 0 && duel->list[did].members_count >= duel->list[did].max_players_limit) { // "Duel: Limit of players is reached." - clif->message(fd, msg_txt(351)); + clif->message(fd, msg_fd(fd,351)); return false; } if(target_sd == NULL) { // "Duel: Player not found." - clif->message(fd, msg_txt(352)); + clif->message(fd, msg_fd(fd,352)); return false; } if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) { // "Duel: Player already in duel." - clif->message(fd, msg_txt(353)); + clif->message(fd, msg_fd(fd,353)); return false; } if(battle_config.duel_only_on_same_map && target_sd->bl.m != sd->bl.m) { // "Duel: You can't invite %s because he/she isn't in the same map." - sprintf(atcmd_output, msg_txt(364), message); + sprintf(atcmd_output, msg_fd(fd,364), message); clif->message(fd, atcmd_output); return false; } duel->invite(did, sd, target_sd); // "Duel: Invitation has been sent." - clif->message(fd, msg_txt(354)); + clif->message(fd, msg_fd(fd,354)); return true; } @@ -7643,14 +7686,14 @@ ACMD(duel) { if(sd->duel_invite > 0) { // "Duel: @duel without @reject." - clif->message(fd, msg_txt(355)); + clif->message(fd, msg_fd(fd,355)); return false; } if(!duel->checktime(sd)) { char output[CHAT_SIZE_MAX]; // "Duel: You can take part in duel only one time per %d minutes." - sprintf(output, msg_txt(356), battle_config.duel_time_interval); + sprintf(output, msg_fd(fd,356), battle_config.duel_time_interval); clif->message(fd, output); return false; } @@ -7658,7 +7701,7 @@ ACMD(duel) { if( message[0] ) { if(sscanf(message, "%u", &maxpl) >= 1) { if(maxpl < 2 || maxpl > 65535) { - clif->message(fd, msg_txt(357)); // "Duel: Invalid value." + clif->message(fd, msg_fd(fd,357)); // "Duel: Invalid value." return false; } duel->create(sd, maxpl); @@ -7669,15 +7712,15 @@ ACMD(duel) { unsigned int newduel; if((newduel = duel->create(sd, 2)) != -1) { if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) { - clif->message(fd, msg_txt(353)); // "Duel: Player already in duel." + clif->message(fd, msg_fd(fd,353)); // "Duel: Player already in duel." return false; } duel->invite(newduel, sd, target_sd); - clif->message(fd, msg_txt(354)); // "Duel: Invitation has been sent." + clif->message(fd, msg_fd(fd,354)); // "Duel: Invitation has been sent." } } else { // "Duel: Player not found." - clif->message(fd, msg_txt(352)); + clif->message(fd, msg_fd(fd,352)); return false; } } @@ -7691,11 +7734,11 @@ ACMD(duel) { ACMD(leave) { if(sd->duel_group <= 0) { // "Duel: @leave without @duel." - clif->message(fd, msg_txt(358)); + clif->message(fd, msg_fd(fd,358)); return false; } duel->leave(sd->duel_group, sd); - clif->message(fd, msg_txt(359)); // "Duel: You left the duel." + clif->message(fd, msg_fd(fd,359)); // "Duel: You left the duel." return true; } @@ -7703,40 +7746,40 @@ ACMD(accept) { if(!duel->checktime(sd)) { char output[CHAT_SIZE_MAX]; // "Duel: You can take part in duel only one time per %d minutes." - sprintf(output, msg_txt(356), battle_config.duel_time_interval); + sprintf(output, msg_fd(fd,356), battle_config.duel_time_interval); clif->message(fd, output); return false; } if(sd->duel_invite <= 0) { // "Duel: @accept without invitation." - clif->message(fd, msg_txt(360)); + clif->message(fd, msg_fd(fd,360)); return false; } if( duel->list[sd->duel_invite].max_players_limit > 0 && duel->list[sd->duel_invite].members_count >= duel->list[sd->duel_invite].max_players_limit ) { // "Duel: Limit of players is reached." - clif->message(fd, msg_txt(351)); + clif->message(fd, msg_fd(fd,351)); return false; } duel->accept(sd->duel_invite, sd); // "Duel: Invitation has been accepted." - clif->message(fd, msg_txt(361)); + clif->message(fd, msg_fd(fd,361)); return true; } ACMD(reject) { if(sd->duel_invite <= 0) { // "Duel: @reject without invitation." - clif->message(fd, msg_txt(362)); + clif->message(fd, msg_fd(fd,362)); return false; } duel->reject(sd->duel_invite, sd); // "Duel: Invitation has been rejected." - clif->message(fd, msg_txt(363)); + clif->message(fd, msg_fd(fd,363)); return true; } @@ -7750,7 +7793,7 @@ ACMD(cash) int ret=0; if( !message || !*message || (value = atoi(message)) == 0 ) { - clif->message(fd, msg_txt(1322)); // Please enter an amount. + clif->message(fd, msg_fd(fd,1322)); // Please enter an amount. return false; } @@ -7759,34 +7802,34 @@ ACMD(cash) if( (ret=pc->getcash(sd, value, 0)) >= 0){ // If this option is set, the message is already sent by pc function if( !battle_config.cashshop_show_points ){ - sprintf(output, msg_txt(505), ret, sd->cashPoints); + sprintf(output, msg_fd(fd,505), ret, sd->cashPoints); clif_disp_onlyself(sd, output, strlen(output)); } } else - clif->message(fd, msg_txt(149)); // Unable to decrease the number/value. + clif->message(fd, msg_fd(fd,149)); // Unable to decrease the number/value. } else { if( (ret=pc->paycash(sd, -value, 0)) >= 0){ - sprintf(output, msg_txt(410), ret, sd->cashPoints); + sprintf(output, msg_fd(fd,410), ret, sd->cashPoints); clif_disp_onlyself(sd, output, strlen(output)); } else - clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. + clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value. } } else { // @points if( value > 0 ) { if( (ret=pc->getcash(sd, 0, value)) >= 0) { // If this option is set, the message is already sent by pc function if( !battle_config.cashshop_show_points ){ - sprintf(output, msg_txt(506), ret, sd->kafraPoints); + sprintf(output, msg_fd(fd,506), ret, sd->kafraPoints); clif_disp_onlyself(sd, output, strlen(output)); } } else - clif->message(fd, msg_txt(149)); // Unable to decrease the number/value. + clif->message(fd, msg_fd(fd,149)); // Unable to decrease the number/value. } else { if( (ret=pc->paycash(sd, -value, -value)) >= 0){ - sprintf(output, msg_txt(411), ret, sd->kafraPoints); + sprintf(output, msg_fd(fd,411), ret, sd->kafraPoints); clif_disp_onlyself(sd, output, strlen(output)); } else - clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. + clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value. } } @@ -7799,17 +7842,17 @@ ACMD(clone) { struct map_session_data *pl_sd=NULL; if (!message || !*message) { - clif->message(sd->fd,msg_txt(1323)); // You must enter a player name or ID. + clif->message(sd->fd,msg_fd(fd,1323)); // You must enter a player name or ID. return false; } if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { - clif->message(fd, msg_txt(3)); // Character not found. + clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } if(pc_get_group_level(pl_sd) > pc_get_group_level(sd)) { - clif->message(fd, msg_txt(126)); // Cannot clone a player of higher GM level than yourself. + clif->message(fd, msg_fd(fd,126)); // Cannot clone a player of higher GM level than yourself. return false; } @@ -7819,13 +7862,13 @@ ACMD(clone) { flag = 2; if(pc_isdead(sd)){ //"Unable to spawn slave clone." - clif->message(fd, msg_txt(129+flag*2)); + clif->message(fd, msg_fd(fd,129+flag*2)); return false; } master = sd->bl.id; if (battle_config.atc_slave_clone_limit && mob->countslave(&sd->bl) >= battle_config.atc_slave_clone_limit) { - clif->message(fd, msg_txt(127)); // You've reached your slave clones limit. + clif->message(fd, msg_fd(fd,127)); // You've reached your slave clones limit. return false; } } @@ -7841,10 +7884,10 @@ ACMD(clone) { } if((x = mob->clone_spawn(pl_sd, sd->bl.m, x, y, "", master, 0, flag?1:0, 0)) > 0) { - clif->message(fd, msg_txt(128+flag*2)); // Evil Clone spawned. Clone spawned. Slave clone spawned. + clif->message(fd, msg_fd(fd,128+flag*2)); // Evil Clone spawned. Clone spawned. Slave clone spawned. return true; } - clif->message(fd, msg_txt(129+flag*2)); // Unable to spawn evil clone. Unable to spawn clone. Unable to spawn slave clone. + clif->message(fd, msg_fd(fd,129+flag*2)); // Unable to spawn evil clone. Unable to spawn clone. Unable to spawn slave clone. return false; } @@ -7855,10 +7898,10 @@ ACMD(clone) { ACMD(noask) { if(sd->state.noask) { - clif->message(fd, msg_txt(391)); // Autorejecting is deactivated. + clif->message(fd, msg_fd(fd,391)); // Autorejecting is deactivated. sd->state.noask = 0; } else { - clif->message(fd, msg_txt(390)); // Autorejecting is activated. + clif->message(fd, msg_fd(fd,390)); // Autorejecting is activated. sd->state.noask = 1; } @@ -7872,14 +7915,14 @@ ACMD(noask) ACMD(request) { if (!message || !*message) { - clif->message(sd->fd,msg_txt(277)); // Usage: @request <petition/message to online GMs>. + clif->message(sd->fd,msg_fd(fd,277)); // Usage: @request <petition/message to online GMs>. return false; } - sprintf(atcmd_output, msg_txt(278), message); // (@request): %s + sprintf(atcmd_output, msg_fd(fd,278), message); // (@request): %s intif->wis_message_to_gm(sd->status.name, PC_PERM_RECEIVE_REQUESTS, atcmd_output); clif_disp_onlyself(sd, atcmd_output, strlen(atcmd_output)); - clif->message(sd->fd,msg_txt(279)); // @request sent. + clif->message(sd->fd,msg_fd(fd,279)); // @request sent. return true; } @@ -7889,7 +7932,7 @@ ACMD(request) ACMD(feelreset) { pc->resetfeel(sd); - clif->message(fd, msg_txt(1324)); // Reset 'Feeling' maps. + clif->message(fd, msg_fd(fd,1324)); // Reset 'Feeling' maps. return true; } @@ -7900,7 +7943,7 @@ ACMD(feelreset) ACMD(auction) { if( !battle_config.feature_auction ) { - clif->colormes(sd->fd,COLOR_RED,msg_txt(1484)); + clif->colormes(sd->fd,COLOR_RED,msg_fd(fd,1484)); return false; } @@ -7916,27 +7959,27 @@ ACMD(ksprotection) { if( sd->state.noks ) { sd->state.noks = 0; - clif->message(fd, msg_txt(1325)); // [ K.S Protection Inactive ] + clif->message(fd, msg_fd(fd,1325)); // [ K.S Protection Inactive ] } else { if( !message || !*message || !strcmpi(message, "party") ) { // Default is Party sd->state.noks = 2; - clif->message(fd, msg_txt(1326)); // [ K.S Protection Active - Option: Party ] + clif->message(fd, msg_fd(fd,1326)); // [ K.S Protection Active - Option: Party ] } else if( !strcmpi(message, "self") ) { sd->state.noks = 1; - clif->message(fd, msg_txt(1327)); // [ K.S Protection Active - Option: Self ] + clif->message(fd, msg_fd(fd,1327)); // [ K.S Protection Active - Option: Self ] } else if( !strcmpi(message, "guild") ) { sd->state.noks = 3; - clif->message(fd, msg_txt(1328)); // [ K.S Protection Active - Option: Guild ] + clif->message(fd, msg_fd(fd,1328)); // [ K.S Protection Active - Option: Guild ] } else - clif->message(fd, msg_txt(1329)); // Usage: @noks <self|party|guild> + clif->message(fd, msg_fd(fd,1329)); // Usage: @noks <self|party|guild> } return true; } @@ -7947,10 +7990,10 @@ ACMD(allowks) { if( map->list[sd->bl.m].flag.allowks ) { map->list[sd->bl.m].flag.allowks = 0; - clif->message(fd, msg_txt(1330)); // [ Map K.S Protection Active ] + clif->message(fd, msg_fd(fd,1330)); // [ Map K.S Protection Active ] } else { map->list[sd->bl.m].flag.allowks = 1; - clif->message(fd, msg_txt(1331)); // [ Map K.S Protection Inactive ] + clif->message(fd, msg_fd(fd,1331)); // [ Map K.S Protection Inactive ] } return true; } @@ -7958,7 +8001,7 @@ ACMD(allowks) ACMD(resetstat) { pc->resetstate(sd); - sprintf(atcmd_output, msg_txt(207), sd->status.name); + sprintf(atcmd_output, msg_fd(fd,207), sd->status.name); clif->message(fd, atcmd_output); return true; } @@ -7966,7 +8009,7 @@ ACMD(resetstat) ACMD(resetskill) { pc->resetskill(sd,1); - sprintf(atcmd_output, msg_txt(206), sd->status.name); + sprintf(atcmd_output, msg_fd(fd,206), sd->status.name); clif->message(fd, atcmd_output); return true; } @@ -8016,7 +8059,7 @@ ACMD(itemlist) if( count == 1 ) { - StrBuf->Printf(&buf, msg_txt(1332), location, sd->status.name); // ------ %s items list of '%s' ------ + StrBuf->Printf(&buf, msg_fd(fd,1332), location, sd->status.name); // ------ %s items list of '%s' ------ clif->message(fd, StrBuf->Value(&buf)); StrBuf->Clear(&buf); } @@ -8028,35 +8071,35 @@ ACMD(itemlist) if( it->equip ) { char equipstr[CHAT_SIZE_MAX]; - strcpy(equipstr, msg_txt(1333)); // | equipped: + strcpy(equipstr, msg_fd(fd,1333)); // | equipped: if( it->equip & EQP_GARMENT ) - strcat(equipstr, msg_txt(1334)); // garment, + strcat(equipstr, msg_fd(fd,1334)); // garment, if( it->equip & EQP_ACC_L ) - strcat(equipstr, msg_txt(1335)); // left accessory, + strcat(equipstr, msg_fd(fd,1335)); // left accessory, if( it->equip & EQP_ARMOR ) - strcat(equipstr, msg_txt(1336)); // body/armor, + strcat(equipstr, msg_fd(fd,1336)); // body/armor, if( (it->equip & EQP_ARMS) == EQP_HAND_R ) - strcat(equipstr, msg_txt(1337)); // right hand, + strcat(equipstr, msg_fd(fd,1337)); // right hand, if( (it->equip & EQP_ARMS) == EQP_HAND_L ) - strcat(equipstr, msg_txt(1338)); // left hand, + strcat(equipstr, msg_fd(fd,1338)); // left hand, if( (it->equip & EQP_ARMS) == EQP_ARMS ) - strcat(equipstr, msg_txt(1339)); // both hands, + strcat(equipstr, msg_fd(fd,1339)); // both hands, if( it->equip & EQP_SHOES ) - strcat(equipstr, msg_txt(1340)); // feet, + strcat(equipstr, msg_fd(fd,1340)); // feet, if( it->equip & EQP_ACC_R ) - strcat(equipstr, msg_txt(1341)); // right accessory, + strcat(equipstr, msg_fd(fd,1341)); // right accessory, if( (it->equip & EQP_HELM) == EQP_HEAD_LOW ) - strcat(equipstr, msg_txt(1342)); // lower head, + strcat(equipstr, msg_fd(fd,1342)); // lower head, if( (it->equip & EQP_HELM) == EQP_HEAD_TOP ) - strcat(equipstr, msg_txt(1343)); // top head, + strcat(equipstr, msg_fd(fd,1343)); // top head, if( (it->equip & EQP_HELM) == (EQP_HEAD_LOW|EQP_HEAD_TOP) ) - strcat(equipstr, msg_txt(1344)); // lower/top head, + strcat(equipstr, msg_fd(fd,1344)); // lower/top head, if( (it->equip & EQP_HELM) == EQP_HEAD_MID ) - strcat(equipstr, msg_txt(1345)); // mid head, + strcat(equipstr, msg_fd(fd,1345)); // mid head, if( (it->equip & EQP_HELM) == (EQP_HEAD_LOW|EQP_HEAD_MID) ) - strcat(equipstr, msg_txt(1346)); // lower/mid head, + strcat(equipstr, msg_fd(fd,1346)); // lower/mid head, if( (it->equip & EQP_HELM) == EQP_HELM ) - strcat(equipstr, msg_txt(1347)); // lower/mid/top head, + strcat(equipstr, msg_fd(fd,1347)); // lower/mid/top head, // remove final ', ' equipstr[strlen(equipstr) - 2] = '\0'; StrBuf->AppendStr(&buf, equipstr); @@ -8068,15 +8111,15 @@ ACMD(itemlist) if( it->card[0] == CARD0_PET ) { // pet egg if (it->card[3]) - StrBuf->Printf(&buf, msg_txt(1348), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, named) + StrBuf->Printf(&buf, msg_fd(fd,1348), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, named) else - StrBuf->Printf(&buf, msg_txt(1349), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, unnamed) + StrBuf->Printf(&buf, msg_fd(fd,1349), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, unnamed) } else if(it->card[0] == CARD0_FORGE) { // forged item - StrBuf->Printf(&buf, msg_txt(1350), (unsigned int)MakeDWord(it->card[2], it->card[3]), it->card[1]>>8, it->card[1]&0x0f); // -> (crafted item, creator id: %u, star crumbs %d, element %d) + StrBuf->Printf(&buf, msg_fd(fd,1350), (unsigned int)MakeDWord(it->card[2], it->card[3]), it->card[1]>>8, it->card[1]&0x0f); // -> (crafted item, creator id: %u, star crumbs %d, element %d) } else if(it->card[0] == CARD0_CREATE) { // created item - StrBuf->Printf(&buf, msg_txt(1351), (unsigned int)MakeDWord(it->card[2], it->card[3])); // -> (produced item, creator id: %u) + StrBuf->Printf(&buf, msg_fd(fd,1351), (unsigned int)MakeDWord(it->card[2], it->card[3])); // -> (produced item, creator id: %u) } else { // normal item int counter2 = 0; @@ -8090,7 +8133,7 @@ ACMD(itemlist) counter2++; if( counter2 == 1 ) - StrBuf->AppendStr(&buf, msg_txt(1352)); // -> (card(s): + StrBuf->AppendStr(&buf, msg_fd(fd,1352)); // -> (card(s): if( counter2 != 1 ) StrBuf->AppendStr(&buf, ", "); @@ -8109,9 +8152,9 @@ ACMD(itemlist) } if( count == 0 ) - StrBuf->Printf(&buf, msg_txt(1353), location); // No item found in this player's %s. + StrBuf->Printf(&buf, msg_fd(fd,1353), location); // No item found in this player's %s. else - StrBuf->Printf(&buf, msg_txt(1354), counter, count, location); // %d item(s) found in %d %s slots. + StrBuf->Printf(&buf, msg_fd(fd,1354), counter, count, location); // %d item(s) found in %d %s slots. clif->message(fd, StrBuf->Value(&buf)); @@ -8170,7 +8213,7 @@ ACMD(stats) output_table[15].value = sd->change_level_3rd; sprintf(job_jobname, "Job - %s %s", pc->job_name(sd->status.class_), "(level %d)"); - sprintf(output, msg_txt(53), sd->status.name); // '%s' stats: + sprintf(output, msg_fd(fd,53), sd->status.name); // '%s' stats: clif->message(fd, output); @@ -8188,7 +8231,7 @@ ACMD(delitem) { if( !message || !*message || ( sscanf(message, "\"%99[^\"]\" %d", item_name, &amount) < 2 && sscanf(message, "%99s %d", item_name, &amount) < 2 ) || amount < 1 ) { - clif->message(fd, msg_txt(1355)); // Please enter an item name/ID, a quantity, and a player name (usage: #delitem <player> <item_name_or_ID> <quantity>). + clif->message(fd, msg_fd(fd,1355)); // Please enter an item name/ID, a quantity, and a player name (usage: #delitem <player> <item_name_or_ID> <quantity>). return false; } @@ -8198,7 +8241,7 @@ ACMD(delitem) { } else { - clif->message(fd, msg_txt(19)); // Invalid item ID or name. + clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name. return false; } @@ -8218,22 +8261,22 @@ ACMD(delitem) { } // notify target - sprintf(atcmd_output, msg_txt(113), total-amount); // %d item(s) removed by a GM. + sprintf(atcmd_output, msg_fd(fd,113), total-amount); // %d item(s) removed by a GM. clif->message(sd->fd, atcmd_output); // notify source if( amount == total ) { - clif->message(fd, msg_txt(116)); // Character does not have the item. + clif->message(fd, msg_fd(fd,116)); // Character does not have the item. } else if( amount ) { - sprintf(atcmd_output, msg_txt(115), total-amount, total-amount, total); // %d item(s) removed. Player had only %d on %d items. + sprintf(atcmd_output, msg_fd(fd,115), total-amount, total-amount, total); // %d item(s) removed. Player had only %d on %d items. clif->message(fd, atcmd_output); } else { - sprintf(atcmd_output, msg_txt(114), total); // %d item(s) removed from the player. + sprintf(atcmd_output, msg_fd(fd,114), total); // %d item(s) removed from the player. clif->message(fd, atcmd_output); } return true; @@ -8251,25 +8294,25 @@ ACMD(font) { if( sd->status.font ) { sd->status.font = 0; - clif->message(fd, msg_txt(1356)); // Returning to normal font. + clif->message(fd, msg_fd(fd,1356)); // Returning to normal font. clif->font(sd); } else { - clif->message(fd, msg_txt(1357)); // Use @font <1-9> to change your message font. - clif->message(fd, msg_txt(1358)); // Use 0 or no parameter to return to normal font. + clif->message(fd, msg_fd(fd,1357)); // Use @font <1-9> to change your message font. + clif->message(fd, msg_fd(fd,1358)); // Use 0 or no parameter to return to normal font. } } else if( font_id < 0 || font_id > 9 ) - clif->message(fd, msg_txt(1359)); // Invalid font. Use a value from 0 to 9. + clif->message(fd, msg_fd(fd,1359)); // Invalid font. Use a value from 0 to 9. else if( font_id != sd->status.font ) { sd->status.font = font_id; clif->font(sd); - clif->message(fd, msg_txt(1360)); // Font changed. + clif->message(fd, msg_fd(fd,1360)); // Font changed. } else - clif->message(fd, msg_txt(1361)); // Already using this font. + clif->message(fd, msg_fd(fd,1361)); // Already using this font. return true; } @@ -8288,7 +8331,7 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand memset(line_buff,' ',CHATBOX_SIZE); line_buff[CHATBOX_SIZE-1] = 0; - clif->message(fd, msg_txt(273)); // "Available commands:" + clif->message(fd, msg_fd(fd,273)); // "Available commands:" for (cmd = dbi_first(iter); dbi_exists(iter); cmd = dbi_next(iter)) { size_t slen; @@ -8325,7 +8368,7 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand dbi_destroy(iter); clif->message(fd,line_buff); - sprintf(atcmd_output, msg_txt(274), count); // "%d commands found." + sprintf(atcmd_output, msg_fd(fd,274), count); // "%d commands found." clif->message(fd, atcmd_output); return; @@ -8352,16 +8395,16 @@ ACMD(charcommands) ACMD(cashmount) { if (pc_hasmount(sd)) { - clif->message(fd, msg_txt(1476)); // You are already mounting something else + clif->message(fd, msg_fd(fd,1476)); // You are already mounting something else return false; } - clif->message(sd->fd,msg_txt(1362)); // NOTICE: If you crash with mount your LUA is outdated. + clif->message(sd->fd,msg_fd(fd,1362)); // NOTICE: If you crash with mount your LUA is outdated. if (!sd->sc.data[SC_ALL_RIDING]) { - clif->message(sd->fd,msg_txt(1363)); // You have mounted. + clif->message(sd->fd,msg_fd(fd,1363)); // You have mounted. sc_start(NULL,&sd->bl,SC_ALL_RIDING,100,0,-1); } else { - clif->message(sd->fd,msg_txt(1364)); // You have released your mount. + clif->message(sd->fd,msg_fd(fd,1364)); // You have released your mount. status_change_end(&sd->bl, SC_ALL_RIDING, INVALID_TIMER); } return true; @@ -8371,8 +8414,8 @@ ACMD(accinfo) { char query[NAME_LENGTH]; if (!message || !*message || strlen(message) > NAME_LENGTH ) { - clif->message(fd, msg_txt(1365)); // Usage: @accinfo/@accountinfo <account_id/char name> - clif->message(fd, msg_txt(1366)); // You may search partial name by making use of '%' in the search, ex. "@accinfo %Mario%" lists all characters whose name contains "Mario". + clif->message(fd, msg_fd(fd,1365)); // Usage: @accinfo/@accountinfo <account_id/char name> + clif->message(fd, msg_fd(fd,1366)); // You may search partial name by making use of '%' in the search, ex. "@accinfo %Mario%" lists all characters whose name contains "Mario". return false; } @@ -8392,19 +8435,19 @@ ACMD(set) { size_t len; if( !message || !*message || (toset = sscanf(message, "%31s %128[^\n]s", reg, val)) < 1 ) { - clif->message(fd, msg_txt(1367)); // Usage: @set <variable name> <value> - clif->message(fd, msg_txt(1368)); // Usage: ex. "@set PoringCharVar 50" - clif->message(fd, msg_txt(1369)); // Usage: ex. "@set PoringCharVarSTR$ Super Duper String" - clif->message(fd, msg_txt(1370)); // Usage: ex. "@set PoringCharVarSTR$" outputs its value, Super Duper String. + clif->message(fd, msg_fd(fd,1367)); // Usage: @set <variable name> <value> + clif->message(fd, msg_fd(fd,1368)); // Usage: ex. "@set PoringCharVar 50" + clif->message(fd, msg_fd(fd,1369)); // Usage: ex. "@set PoringCharVarSTR$ Super Duper String" + clif->message(fd, msg_fd(fd,1370)); // Usage: ex. "@set PoringCharVarSTR$" outputs its value, Super Duper String. return false; } /* disabled variable types (they require a proper script state to function, so allowing them would crash the server) */ if( reg[0] == '.' ) { - clif->message(fd, msg_txt(1371)); // NPC variables may not be used with @set. + clif->message(fd, msg_fd(fd,1371)); // NPC variables may not be used with @set. return false; } else if( reg[0] == '\'' ) { - clif->message(fd, msg_txt(1372)); // Instance variables may not be used with @set. + clif->message(fd, msg_fd(fd,1372)); // Instance variables may not be used with @set. return false; } @@ -8474,16 +8517,16 @@ ACMD(set) { switch( data->type ) { case C_INT: - sprintf(atcmd_output,msg_txt(1373),reg,data->u.num); // %s value is now :%d + sprintf(atcmd_output,msg_fd(fd,1373),reg,data->u.num); // %s value is now :%d break; case C_STR: - sprintf(atcmd_output,msg_txt(1374),reg,data->u.str); // %s value is now :%s + sprintf(atcmd_output,msg_fd(fd,1374),reg,data->u.str); // %s value is now :%s break; case C_CONSTSTR: - sprintf(atcmd_output,msg_txt(1375),reg); // %s is empty + sprintf(atcmd_output,msg_fd(fd,1375),reg); // %s is empty break; default: - sprintf(atcmd_output,msg_txt(1376),reg,data->type); // %s data type is not supported :%u + sprintf(atcmd_output,msg_fd(fd,1376),reg,data->type); // %s data type is not supported :%u break; } clif->message(fd, atcmd_output); @@ -8493,7 +8536,7 @@ ACMD(set) { } ACMD(reloadquestdb) { quest->reload(); - clif->message(fd, msg_txt(1377)); // Quest database has been reloaded. + clif->message(fd, msg_fd(fd,1377)); // Quest database has been reloaded. return true; } ACMD(addperm) { @@ -8502,9 +8545,9 @@ ACMD(addperm) { int i; if( !message || !*message ) { - sprintf(atcmd_output, msg_txt(1378),command); // Usage: %s <permission_name> + sprintf(atcmd_output, msg_fd(fd,1378),command); // Usage: %s <permission_name> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1379)); // -- Permission List + clif->message(fd, msg_fd(fd,1379)); // -- Permission List for( i = 0; i < perm_size; i++ ) { sprintf(atcmd_output,"- %s",pcg->permissions[i].name); clif->message(fd, atcmd_output); @@ -8514,9 +8557,9 @@ ACMD(addperm) { ARR_FIND(0, perm_size, i, strcmpi(pcg->permissions[i].name, message) == 0); if( i == perm_size ) { - sprintf(atcmd_output,msg_txt(1380),message); // '%s' is not a known permission. + sprintf(atcmd_output,msg_fd(fd,1380),message); // '%s' is not a known permission. clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1379)); // -- Permission List + clif->message(fd, msg_fd(fd,1379)); // -- Permission List for( i = 0; i < perm_size; i++ ) { sprintf(atcmd_output,"- %s",pcg->permissions[i].name); clif->message(fd, atcmd_output); @@ -8525,13 +8568,13 @@ ACMD(addperm) { } if( add && (sd->extra_temp_permissions&pcg->permissions[i].permission) ) { - sprintf(atcmd_output, msg_txt(1381),sd->status.name,pcg->permissions[i].name); // User '%s' already possesses the '%s' permission. + sprintf(atcmd_output, msg_fd(fd,1381),sd->status.name,pcg->permissions[i].name); // User '%s' already possesses the '%s' permission. clif->message(fd, atcmd_output); return false; } else if ( !add && !(sd->extra_temp_permissions&pcg->permissions[i].permission) ) { - sprintf(atcmd_output, msg_txt(1382),sd->status.name,pcg->permissions[i].name); // User '%s' doesn't possess the '%s' permission. + sprintf(atcmd_output, msg_fd(fd,1382),sd->status.name,pcg->permissions[i].name); // User '%s' doesn't possess the '%s' permission. clif->message(fd, atcmd_output); - sprintf(atcmd_output,msg_txt(1383),sd->status.name); // -- User '%s' Permissions + sprintf(atcmd_output,msg_fd(fd,1383),sd->status.name); // -- User '%s' Permissions clif->message(fd, atcmd_output); for( i = 0; i < perm_size; i++ ) { if( sd->extra_temp_permissions&pcg->permissions[i].permission ) { @@ -8547,7 +8590,7 @@ ACMD(addperm) { else sd->extra_temp_permissions &=~ pcg->permissions[i].permission; - sprintf(atcmd_output, msg_txt(1384),sd->status.name); // User '%s' permissions updated successfully. The changes are temporary. + sprintf(atcmd_output, msg_fd(fd,1384),sd->status.name); // User '%s' permissions updated successfully. The changes are temporary. clif->message(fd, atcmd_output); return true; @@ -8555,14 +8598,14 @@ ACMD(addperm) { ACMD(unloadnpcfile) { if( !message || !*message ) { - clif->message(fd, msg_txt(1385)); // Usage: @unloadnpcfile <file name> + clif->message(fd, msg_fd(fd,1385)); // Usage: @unloadnpcfile <file name> return false; } if( npc->unloadfile(message) ) - clif->message(fd, msg_txt(1386)); // File unloaded. Be aware that mapflags and monsters spawned directly are not removed. + clif->message(fd, msg_fd(fd,1386)); // File unloaded. Be aware that mapflags and monsters spawned directly are not removed. else { - clif->message(fd, msg_txt(1387)); // File not found. + clif->message(fd, msg_fd(fd,1387)); // File not found. return false; } return true; @@ -8581,13 +8624,13 @@ ACMD(cart) { if (message) val = atoi(message); if( !message || !*message || val < 0 || val > MAX_CARTS ) { - sprintf(atcmd_output, msg_txt(1390),command,MAX_CARTS); // Unknown Cart (usage: %s <0-%d>). + sprintf(atcmd_output, msg_fd(fd,1390),command,MAX_CARTS); // Unknown Cart (usage: %s <0-%d>). clif->message(fd, atcmd_output); return false; } if( val == 0 && !pc_iscarton(sd) ) { - clif->message(fd, msg_txt(1391)); // You do not possess a cart to be removed + clif->message(fd, msg_fd(fd,1391)); // You do not possess a cart to be removed return false; } @@ -8606,7 +8649,7 @@ ACMD(cart) { MC_CART_MDFY(0,index); } - clif->message(fd, msg_txt(1392)); // Cart Added + clif->message(fd, msg_fd(fd,1392)); // Cart Added return true; #undef MC_CART_MDFY @@ -8619,7 +8662,7 @@ ACMD(join) enum channel_operation_status ret = HCS_STATUS_OK; if (!message || !*message || sscanf(message, "%19s %19s", name, pass) < 1) { - sprintf(atcmd_output, msg_txt(1399),command); // Unknown Channel (usage: %s <#channel_name>) + sprintf(atcmd_output, msg_fd(fd,1399),command); // Unknown Channel (usage: %s <#channel_name>) clif->message(fd, atcmd_output); return false; } @@ -8627,7 +8670,7 @@ ACMD(join) chan = channel->search(name, sd); if(!chan) { - sprintf(atcmd_output, msg_txt(1400),name,command); // Unknown Channel '%s' (usage: %s <#channel_name>) + sprintf(atcmd_output, msg_fd(fd,1400),name,command); // Unknown Channel '%s' (usage: %s <#channel_name>) clif->message(fd, atcmd_output); return false; } @@ -8635,19 +8678,19 @@ ACMD(join) ret = channel->join(chan, sd, pass, false); if (ret == HCS_STATUS_ALREADY) { - sprintf(atcmd_output, msg_txt(1436),name); // You're already in the '%s' channel + sprintf(atcmd_output, msg_fd(fd,1436),name); // You're already in the '%s' channel clif->message(fd, atcmd_output); return false; } if (ret == HCS_STATUS_NOPERM) { - sprintf(atcmd_output, msg_txt(1401),name,command); // '%s' Channel is password protected (usage: %s <#channel_name> <password>) + sprintf(atcmd_output, msg_fd(fd,1401),name,command); // '%s' Channel is password protected (usage: %s <#channel_name> <password>) clif->message(fd, atcmd_output); return false; } if (ret == HCS_STATUS_BANNED) { - sprintf(atcmd_output, msg_txt(1438),name); // You cannot join the '%s' channel because you've been banned from it + sprintf(atcmd_output, msg_fd(fd,1438),name); // You cannot join the '%s' channel because you've been banned from it clif->message(fd, atcmd_output); return false; } @@ -8656,52 +8699,52 @@ ACMD(join) } /* [Ind/Hercules] */ static inline void atcmd_channel_help(int fd, const char *command, bool can_create) { - sprintf(atcmd_output, msg_txt(1404),command); // %s failed. + sprintf(atcmd_output, msg_fd(fd,1404),command); // %s failed. clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1414));// --- Available options: + clif->message(fd, msg_fd(fd,1414));// --- Available options: if( can_create ) { - sprintf(atcmd_output, msg_txt(1415),command);// -- %s create <channel name> <channel password> + sprintf(atcmd_output, msg_fd(fd,1415),command);// -- %s create <channel name> <channel password> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1416));// - creates a new channel + clif->message(fd, msg_fd(fd,1416));// - creates a new channel } - sprintf(atcmd_output, msg_txt(1417),command);// -- %s list + sprintf(atcmd_output, msg_fd(fd,1417),command);// -- %s list clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1418));// - lists public channels + clif->message(fd, msg_fd(fd,1418));// - lists public channels if( can_create ) { - sprintf(atcmd_output, msg_txt(1419),command);// -- %s list colors + sprintf(atcmd_output, msg_fd(fd,1419),command);// -- %s list colors clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1420));// - lists colors available to select for custom channels - sprintf(atcmd_output, msg_txt(1421),command);// -- %s setcolor <channel name> <color name> + clif->message(fd, msg_fd(fd,1420));// - lists colors available to select for custom channels + sprintf(atcmd_output, msg_fd(fd,1421),command);// -- %s setcolor <channel name> <color name> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1422));// - changes <channel name> color to <color name> + clif->message(fd, msg_fd(fd,1422));// - changes <channel name> color to <color name> } - sprintf(atcmd_output, msg_txt(1423),command);// -- %s leave <channel name> + sprintf(atcmd_output, msg_fd(fd,1423),command);// -- %s leave <channel name> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1424));// - leaves <channel name> - sprintf(atcmd_output, msg_txt(1427),command);// -- %s bindto <channel name> + clif->message(fd, msg_fd(fd,1424));// - leaves <channel name> + sprintf(atcmd_output, msg_fd(fd,1427),command);// -- %s bindto <channel name> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1428));// - binds global chat to <channel name>, making anything you type in global be sent to the channel - sprintf(atcmd_output, msg_txt(1429),command);// -- %s unbind + clif->message(fd, msg_fd(fd,1428));// - binds global chat to <channel name>, making anything you type in global be sent to the channel + sprintf(atcmd_output, msg_fd(fd,1429),command);// -- %s unbind clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1430));// - unbinds your global chat from its attached channel (if binded) - sprintf(atcmd_output, msg_txt(1429),command);// -- %s unbind + clif->message(fd, msg_fd(fd,1430));// - unbinds your global chat from its attached channel (if binded) + sprintf(atcmd_output, msg_fd(fd,1429),command);// -- %s unbind clif->message(fd, atcmd_output); if( can_create ) { - sprintf(atcmd_output, msg_txt(1456),command);// -- %s ban <channel name> <character name> + sprintf(atcmd_output, msg_fd(fd,1456),command);// -- %s ban <channel name> <character name> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1457));// - bans <character name> from <channel name> channel - sprintf(atcmd_output, msg_txt(1458),command);// -- %s banlist <channel name> + clif->message(fd, msg_fd(fd,1457));// - bans <character name> from <channel name> channel + sprintf(atcmd_output, msg_fd(fd,1458),command);// -- %s banlist <channel name> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1459));// - lists all banned characters from <channel name> channel - sprintf(atcmd_output, msg_txt(1460),command);// -- %s unban <channel name> <character name> + clif->message(fd, msg_fd(fd,1459));// - lists all banned characters from <channel name> channel + sprintf(atcmd_output, msg_fd(fd,1460),command);// -- %s unban <channel name> <character name> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1461));// - unbans <character name> from <channel name> channel - sprintf(atcmd_output, msg_txt(1467),command);// -- %s unbanall <channel name> + clif->message(fd, msg_fd(fd,1461));// - unbans <character name> from <channel name> channel + sprintf(atcmd_output, msg_fd(fd,1467),command);// -- %s unbanall <channel name> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1468));// - unbans everyone from <channel name> - sprintf(atcmd_output, msg_txt(1462),command);// -- %s setopt <channel name> <option name> <option value> + clif->message(fd, msg_fd(fd,1468));// - unbans everyone from <channel name> + sprintf(atcmd_output, msg_fd(fd,1462),command);// -- %s setopt <channel name> <option name> <option value> clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1463));// - adds or removes <option name> with <option value> to <channel name> channel + clif->message(fd, msg_fd(fd,1463));// - adds or removes <option name> with <option value> to <channel name> channel } } /* [Ind/Hercules] */ @@ -8721,18 +8764,18 @@ ACMD(channel) { size_t len = strlen(sub1); const char *pass = *sub2 ? sub2 : NULL; if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } else if (len < 3 || len > HCS_NAME_LENGTH) { - sprintf(atcmd_output, msg_txt(1406), HCS_NAME_LENGTH);// Channel length must be between 3 and %d + sprintf(atcmd_output, msg_fd(fd,1406), HCS_NAME_LENGTH);// Channel length must be between 3 and %d clif->message(fd, atcmd_output); return false; } else if (sub3[0] != '\0') { - clif->message(fd, msg_txt(1408)); // Channel password may not contain spaces + clif->message(fd, msg_fd(fd,1408)); // Channel password may not contain spaces return false; } if (strcmpi(sub1 + 1, channel->config->local_name) == 0 || strcmpi(sub1 + 1, channel->config->ally_name) == 0 || strdb_exists(channel->db, sub1 + 1)) { - sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available + sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available clif->message(fd, atcmd_output); return false; } @@ -8761,20 +8804,20 @@ ACMD(channel) { } else { DBIterator *iter = db_iterator(channel->db); bool show_all = pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ? true : false; - clif->message(fd, msg_txt(1410)); // -- Public Channels + clif->message(fd, msg_fd(fd,1410)); // -- Public Channels if (channel->config->local) { - sprintf(atcmd_output, msg_txt(1409), channel->config->local_name, map->list[sd->bl.m].channel ? db_size(map->list[sd->bl.m].channel->users) : 0);// - #%s ( %d users ) + sprintf(atcmd_output, msg_fd(fd,1409), channel->config->local_name, map->list[sd->bl.m].channel ? db_size(map->list[sd->bl.m].channel->users) : 0);// - #%s ( %d users ) clif->message(fd, atcmd_output); } if (channel->config->ally && sd->status.guild_id) { struct guild *g = sd->guild; if( !g ) { dbi_destroy(iter); return false; } - sprintf(atcmd_output, msg_txt(1409), channel->config->ally_name, db_size(g->channel->users));// - #%s ( %d users ) + sprintf(atcmd_output, msg_fd(fd,1409), channel->config->ally_name, db_size(g->channel->users));// - #%s ( %d users ) clif->message(fd, atcmd_output); } for (chan = dbi_first(iter); dbi_exists(iter); chan = dbi_next(iter)) { if (show_all || chan->type == HCS_TYPE_PUBLIC || chan->type == HCS_TYPE_IRC) { - sprintf(atcmd_output, msg_txt(1409), chan->name, db_size(chan->users));// - #%s ( %d users ) + sprintf(atcmd_output, msg_fd(fd,1409), chan->name, db_size(chan->users));// - #%s ( %d users ) clif->message(fd, atcmd_output); } } @@ -8783,18 +8826,18 @@ ACMD(channel) { } else if (strcmpi(subcmd,"setcolor") == 0) { // sub1 = channel name; sub2 = color; sub3 = unused if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } if (!(chan = channel->search(sub1, sd))) { - sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available + sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available clif->message(fd, atcmd_output); return false; } if (chan->owner != sd->status.char_id && !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)) { - sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s' + sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s' clif->message(fd, atcmd_output); return false; } @@ -8804,17 +8847,17 @@ ACMD(channel) { break; } if (k == channel->config->colors_count) { - sprintf(atcmd_output, msg_txt(1411), sub2);// Unknown color '%s' + sprintf(atcmd_output, msg_fd(fd,1411), sub2);// Unknown color '%s' clif->message(fd, atcmd_output); return false; } chan->color = k; - sprintf(atcmd_output, msg_txt(1413), sub1, channel->config->colors_name[k]);// '%s' channel color updated to '%s' + sprintf(atcmd_output, msg_fd(fd,1413), sub1, channel->config->colors_name[k]);// '%s' channel color updated to '%s' clif->message(fd, atcmd_output); } else if (strcmpi(subcmd,"leave") == 0) { // sub1 = channel name; sub2 = unused; sub3 = unused if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } for (k = 0; k < sd->channel_count; k++) { @@ -8822,7 +8865,7 @@ ACMD(channel) { break; } if (k == sd->channel_count) { - sprintf(atcmd_output, msg_txt(1425),sub1);// You're not part of the '%s' channel + sprintf(atcmd_output, msg_fd(fd,1425),sub1);// You're not part of the '%s' channel clif->message(fd, atcmd_output); return false; } @@ -8838,12 +8881,12 @@ ACMD(channel) { } else { channel->leave(sd->channels[k],sd); } - sprintf(atcmd_output, msg_txt(1426),sub1); // You've left the '%s' channel + sprintf(atcmd_output, msg_fd(fd,1426),sub1); // You've left the '%s' channel clif->message(fd, atcmd_output); } else if (strcmpi(subcmd,"bindto") == 0) { // sub1 = channel name; sub2 = unused; sub3 = unused if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } @@ -8852,22 +8895,22 @@ ACMD(channel) { break; } if (k == sd->channel_count) { - sprintf(atcmd_output, msg_txt(1425),sub1);// You're not part of the '%s' channel + sprintf(atcmd_output, msg_fd(fd,1425),sub1);// You're not part of the '%s' channel clif->message(fd, atcmd_output); return false; } sd->gcbind = sd->channels[k]; - sprintf(atcmd_output, msg_txt(1431),sub1); // Your global chat is now bound to the '%s' channel + sprintf(atcmd_output, msg_fd(fd,1431),sub1); // Your global chat is now bound to the '%s' channel clif->message(fd, atcmd_output); } else if (strcmpi(subcmd,"unbind") == 0) { // sub1 = unused; sub2 = unused; sub3 = unused if (sd->gcbind == NULL) { - clif->message(fd, msg_txt(1432));// Your global chat is not bound to any channel + clif->message(fd, msg_fd(fd,1432));// Your global chat is not bound to any channel return false; } - sprintf(atcmd_output, msg_txt(1433),sd->gcbind->name); // Your global chat is no longer bound to the '#%s' channel + sprintf(atcmd_output, msg_fd(fd,1433),sd->gcbind->name); // Your global chat is no longer bound to the '#%s' channel clif->message(fd, atcmd_output); sd->gcbind = NULL; @@ -8878,24 +8921,24 @@ ACMD(channel) { enum channel_operation_status ret = HCS_STATUS_OK; if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } if (!(chan = channel->search(sub1, sd))) { - sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available + sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available clif->message(fd, atcmd_output); return false; } if (!message || !*message || sscanf(message, "%19s %19s %23[^\n]", subcmd, sub1, sub4) < 3) { - sprintf(atcmd_output, msg_txt(1434), sub4);// Player '%s' was not found + sprintf(atcmd_output, msg_fd(fd,1434), sub4);// Player '%s' was not found clif->message(fd, atcmd_output); return false; } if (sub4[0] == '\0' || (pl_sd = map->nick2sd(sub4)) == NULL) { - sprintf(atcmd_output, msg_txt(1434), sub4);// Player '%s' was not found + sprintf(atcmd_output, msg_fd(fd,1434), sub4);// Player '%s' was not found clif->message(fd, atcmd_output); return false; } @@ -8903,23 +8946,23 @@ ACMD(channel) { ret = channel->ban(chan, sd, pl_sd); if (ret == HCS_STATUS_NOPERM) { - sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s' + sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s' clif->message(fd, atcmd_output); return false; } if (ret == HCS_STATUS_ALREADY) { - sprintf(atcmd_output, msg_txt(1465), pl_sd->status.name);// Player '%s' is already banned from this channel + sprintf(atcmd_output, msg_fd(fd,1465), pl_sd->status.name);// Player '%s' is already banned from this channel clif->message(fd, atcmd_output); return false; } if (ret != HCS_STATUS_OK/*ret == HCS_STATUS_FAIL*/) { - clif->message(fd, msg_txt(1464)); // Ban failed, not possible to ban this user. + clif->message(fd, msg_fd(fd,1464)); // Ban failed, not possible to ban this user. return false; } - sprintf(atcmd_output, msg_txt(1437),pl_sd->status.name,sub1); // Player '%s' has now been banned from '%s' channel + sprintf(atcmd_output, msg_fd(fd,1437),pl_sd->status.name,sub1); // Player '%s' has now been banned from '%s' channel clif->message(fd, atcmd_output); } else if (strcmpi(subcmd,"unban") == 0) { // sub1 = channel name; sub2 = unused; sub3 = unused @@ -8928,64 +8971,64 @@ ACMD(channel) { enum channel_operation_status ret = HCS_STATUS_OK; if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } if (!(chan = channel->search(sub1, sd))) { - sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available + sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available clif->message(fd, atcmd_output); return false; } if (!message || !*message || sscanf(message, "%19s %19s %23[^\n]", subcmd, sub1, sub4) < 3) { - sprintf(atcmd_output, msg_txt(1434), sub4);// Player '%s' was not found + sprintf(atcmd_output, msg_fd(fd,1434), sub4);// Player '%s' was not found clif->message(fd, atcmd_output); return false; } if (sub4[0] == '\0' || (pl_sd = map->nick2sd(sub4)) == NULL) { - sprintf(atcmd_output, msg_txt(1434), sub4);// Player '%s' was not found + sprintf(atcmd_output, msg_fd(fd,1434), sub4);// Player '%s' was not found clif->message(fd, atcmd_output); return false; } ret = channel->unban(chan, sd, pl_sd); if (ret == HCS_STATUS_NOPERM) { - sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s' + sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s' clif->message(fd, atcmd_output); return false; } if (ret == HCS_STATUS_ALREADY) { - sprintf(atcmd_output, msg_txt(1440), pl_sd->status.name);// Player '%s' is not banned from this channel + sprintf(atcmd_output, msg_fd(fd,1440), pl_sd->status.name);// Player '%s' is not banned from this channel clif->message(fd, atcmd_output); return false; } - sprintf(atcmd_output, msg_txt(1441),pl_sd->status.name,sub1); // Player '%s' has now been unbanned from the '%s' channel + sprintf(atcmd_output, msg_fd(fd,1441),pl_sd->status.name,sub1); // Player '%s' has now been unbanned from the '%s' channel clif->message(fd, atcmd_output); } else if (strcmpi(subcmd,"unbanall") == 0) { enum channel_operation_status ret = HCS_STATUS_OK; // sub1 = channel name; sub2 = unused; sub3 = unused if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } if (!(chan = channel->search(sub1, sd))) { - sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available + sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available clif->message(fd, atcmd_output); return false; } ret = channel->unban(chan, sd, NULL); if (ret == HCS_STATUS_NOPERM) { - sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s' + sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s' clif->message(fd, atcmd_output); return false; } if (ret == HCS_STATUS_ALREADY) { - sprintf(atcmd_output, msg_txt(1439), sub1);// Channel '%s' has no banned players + sprintf(atcmd_output, msg_fd(fd,1439), sub1);// Channel '%s' has no banned players clif->message(fd, atcmd_output); return false; } - sprintf(atcmd_output, msg_txt(1442),sub1); // Removed all bans from '%s' channel + sprintf(atcmd_output, msg_fd(fd,1442),sub1); // Removed all bans from '%s' channel clif->message(fd, atcmd_output); } else if (strcmpi(subcmd,"banlist") == 0) { // sub1 = channel name; sub2 = unused; sub3 = unused @@ -8994,25 +9037,25 @@ ACMD(channel) { DBData *data; bool isA = pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)?true:false; if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } if (!(chan = channel->search(sub1, sd))) { - sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available + sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available clif->message(fd, atcmd_output); return false; } if (chan->owner != sd->status.char_id && !isA) { - sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s' + sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s' clif->message(fd, atcmd_output); return false; } if (!chan->banned) { - sprintf(atcmd_output, msg_txt(1439), sub1);// Channel '%s' has no banned players + sprintf(atcmd_output, msg_fd(fd,1439), sub1);// Channel '%s' has no banned players clif->message(fd, atcmd_output); return false; } - sprintf(atcmd_output, msg_txt(1443), chan->name);// -- '%s' ban list + sprintf(atcmd_output, msg_fd(fd,1443), chan->name);// -- '%s' ban list clif->message(fd, atcmd_output); iter = db_iterator(chan->banned); @@ -9020,9 +9063,9 @@ ACMD(channel) { struct channel_ban_entry *entry = DB->data2ptr(data); if (!isA) - sprintf(atcmd_output, msg_txt(1444), entry->name);// - %s %s + sprintf(atcmd_output, msg_fd(fd,1444), entry->name);// - %s %s else - sprintf(atcmd_output, msg_txt(1445), entry->name, key.i);// - %s (%d) + sprintf(atcmd_output, msg_fd(fd,1445), entry->name, key.i);// - %s (%d) clif->message(fd, atcmd_output); } @@ -9035,21 +9078,21 @@ ACMD(channel) { "MessageDelay", }; if (sub1[0] != '#') { - clif->message(fd, msg_txt(1405));// Channel name must start with a '#' + clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' return false; } if (!(chan = channel->search(sub1, sd))) { - sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available + sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available clif->message(fd, atcmd_output); return false; } if (chan->owner != sd->status.char_id && !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)) { - sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s' + sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s' clif->message(fd, atcmd_output); return false; } if (sub2[0] == '\0') { - clif->message(fd, msg_txt(1446));// You need to input a option + clif->message(fd, msg_fd(fd,1446));// You need to input a option return false; } for (k = 1; k < 3; k++) { @@ -9057,27 +9100,27 @@ ACMD(channel) { break; } if (k == 3) { - sprintf(atcmd_output, msg_txt(1447), sub2);// '%s' is not a known channel option + sprintf(atcmd_output, msg_fd(fd,1447), sub2);// '%s' is not a known channel option clif->message(fd, atcmd_output); - clif->message(fd, msg_txt(1448)); // -- Available options + clif->message(fd, msg_fd(fd,1448)); // -- Available options for (k = 1; k < 3; k++) { - sprintf(atcmd_output, msg_txt(1444), opt_str[k]);// - '%s' + sprintf(atcmd_output, msg_fd(fd,1444), opt_str[k]);// - '%s' clif->message(fd, atcmd_output); } return false; } if (sub3[0] == '\0') { if (k == HCS_OPT_MSG_DELAY) { - sprintf(atcmd_output, msg_txt(1466), opt_str[k]);// For '%s' you need the amount of seconds (from 0 to 10) + sprintf(atcmd_output, msg_fd(fd,1466), opt_str[k]);// For '%s' you need the amount of seconds (from 0 to 10) clif->message(fd, atcmd_output); return false; } else if (chan->options & k) { - sprintf(atcmd_output, msg_txt(1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel setopt %s 0' + sprintf(atcmd_output, msg_fd(fd,1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel setopt %s 0' clif->message(fd, atcmd_output); return false; } else { channel->set_options(chan, chan->options | k); - sprintf(atcmd_output, msg_txt(1450), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s' + sprintf(atcmd_output, msg_fd(fd,1450), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s' clif->message(fd, atcmd_output); return true; } @@ -9085,42 +9128,42 @@ ACMD(channel) { int v = atoi(sub3); if (k == HCS_OPT_MSG_DELAY) { if (v < 0 || v > 10) { - sprintf(atcmd_output, msg_txt(1451), v, opt_str[k]);// value '%d' for option '%s' is out of range (limit is 0-10) + sprintf(atcmd_output, msg_fd(fd,1451), v, opt_str[k]);// value '%d' for option '%s' is out of range (limit is 0-10) clif->message(fd, atcmd_output); return false; } if (v == 0) { channel->set_options(chan, chan->options&~k); chan->msg_delay = 0; - sprintf(atcmd_output, msg_txt(1453), opt_str[k],chan->name,v);// option '%s' is now disabled for channel '%s' + sprintf(atcmd_output, msg_fd(fd,1453), opt_str[k],chan->name,v);// option '%s' is now disabled for channel '%s' clif->message(fd, atcmd_output); return true; } else { channel->set_options(chan, chan->options | k); chan->msg_delay = v; - sprintf(atcmd_output, msg_txt(1452), opt_str[k],chan->name,v);// option '%s' is now enabled for channel '%s' with %d seconds + sprintf(atcmd_output, msg_fd(fd,1452), opt_str[k],chan->name,v);// option '%s' is now enabled for channel '%s' with %d seconds clif->message(fd, atcmd_output); return true; } } else { if (v) { if (chan->options & k) { - sprintf(atcmd_output, msg_txt(1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel opt %s 0' + sprintf(atcmd_output, msg_fd(fd,1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel opt %s 0' clif->message(fd, atcmd_output); return false; } else { channel->set_options(chan, chan->options | k); - sprintf(atcmd_output, msg_txt(1454), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s' + sprintf(atcmd_output, msg_fd(fd,1454), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s' clif->message(fd, atcmd_output); } } else { if (!(chan->options & k)) { - sprintf(atcmd_output, msg_txt(1454), opt_str[k],chan->name); // option '%s' is not enabled on channel '%s' + sprintf(atcmd_output, msg_fd(fd,1454), opt_str[k],chan->name); // option '%s' is not enabled on channel '%s' clif->message(fd, atcmd_output); return false; } else { channel->set_options(chan, chan->options&~k); - sprintf(atcmd_output, msg_txt(1453), opt_str[k],chan->name);// option '%s' is now disabled for channel '%s' + sprintf(atcmd_output, msg_fd(fd,1453), opt_str[k],chan->name);// option '%s' is now disabled for channel '%s' clif->message(fd, atcmd_output); return true; } @@ -9163,7 +9206,7 @@ ACMD(fontcolor) { break; } if( k == channel->config->colors_count ) { - sprintf(atcmd_output, msg_txt(1411), message);// Unknown color '%s' + sprintf(atcmd_output, msg_fd(fd,1411), message);// Unknown color '%s' clif->message(fd, atcmd_output); return false; } @@ -9219,15 +9262,15 @@ ACMD(costume){ if( !message || !*message ) { for( k = 0; k < len; k++ ) { if( sd->sc.data[name2id[k]] ) { - sprintf(atcmd_output,msg_txt(1473),names[k]);//Costume '%s' removed. + sprintf(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_txt(1472)); + clif->message(sd->fd,msg_fd(fd,1472)); for( k = 0; k < len; k++ ) { - sprintf(atcmd_output,msg_txt(1471),names[k]);//-- %s + sprintf(atcmd_output,msg_fd(fd,1471),names[k]);//-- %s clif->message(sd->fd,atcmd_output); } return false; @@ -9235,7 +9278,7 @@ ACMD(costume){ for( k = 0; k < len; k++ ) { if( sd->sc.data[name2id[k]] ) { - sprintf(atcmd_output,msg_txt(1470),names[k]);// You're already with a '%s' costume, type '@costume' to remove it. + sprintf(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; } @@ -9246,7 +9289,7 @@ ACMD(costume){ break; } if( k == len ) { - sprintf(atcmd_output,msg_txt(1469),message);// '%s' is not a known costume + sprintf(atcmd_output,msg_fd(fd,1469),message);// '%s' is not a known costume clif->message(sd->fd,atcmd_output); return false; } @@ -9312,6 +9355,42 @@ ACMD(cddebug) { return true; } + +/** + * + **/ +ACMD(lang) { + uint8 i; + + if( !message || !*message ) { + clif->messages(fd,"Usage: @%s <Language>",info->command); + clif->messages(fd,"There are %d languages available:",script->max_lang_id); + for(i = 0; i < script->max_lang_id; i++) + clif->messages(fd,"- %s",script->languages[i]); + return false; + } + + for(i = 0; i < script->max_lang_id; i++) { + if( strcmpi(message,script->languages[i]) == 0 ) { + if( i == sd->lang_id ) { + clif->messages(fd,"%s is already set as your language",script->languages[i]); + } else { + clif->messages(fd,"Your language has been changed from '%s' to '%s'",script->languages[sd->lang_id],script->languages[i]); + sd->lang_id = i; + } + break; + } + } + + if( i == script->max_lang_id ) { + clif->messages(fd,"'%s' did not match any language available",message); + clif->messages(fd,"There are %d languages available:",script->max_lang_id); + for(i = 0; i < script->max_lang_id; i++) + clif->messages(fd,"- %s",script->languages[i]); + } + + return true; +} /** * Fills the reference of available commands in atcommand DBMap **/ @@ -9582,6 +9661,7 @@ void atcommand_basecommands(void) { ACMD_DEF(costume), ACMD_DEF(skdebug), ACMD_DEF(cddebug), + ACMD_DEF(lang), }; int i; @@ -9697,7 +9777,7 @@ void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bo } // Build the suggestion string - strcpy(buffer, msg_txt(205)); + strcpy(buffer, msg_sd(sd,205)); strcat(buffer,"\n"); for(i=0; i < prefix_count; ++i) { @@ -9752,7 +9832,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa if (player_invoked) { //Commands are disabled on maps flagged as 'nocommand' if ( map->list[sd->bl.m].nocommand && pc_get_group_level(sd) < map->list[sd->bl.m].nocommand ) { - clif->message(fd, msg_txt(143)); + clif->message(fd, msg_fd(fd,143)); return false; } } @@ -9796,7 +9876,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa return false;/* display as normal message */ } - sprintf(output, msg_txt(1388), atcommand->char_symbol); // Charcommand failed (usage: %c<command> <char name> <parameters>). + sprintf(output, msg_fd(fd,1388), atcommand->char_symbol); // Charcommand failed (usage: %c<command> <char name> <parameters>). clif->message(fd, output); return true; } while(0); @@ -9842,7 +9922,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa && (ssd = map->nick2sd(charname)) == NULL && (ssd = map->nick2sd(charname2)) == NULL ) { - sprintf(output, msg_txt(1389), command); // %s failed. Player not found. + sprintf(output, msg_fd(fd,1389), command); // %s failed. Player not found. clif->message(fd, output); return true; } @@ -9859,7 +9939,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa info = atcommand->get_info_byname(atcommand->check_alias(command + 1)); if (info == NULL) { if( pc_get_group_level(sd) ) { // TODO: remove or replace with proper permission - sprintf(output, msg_txt(153), command); // "%s is Unknown Command." + sprintf(output, msg_fd(fd,153), command); // "%s is Unknown Command." clif->message(fd, output); atcommand->get_suggestions(sd, command + 1, *message == atcommand->at_symbol); return true; @@ -9874,7 +9954,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa return false; } if( pc_isdead(sd) && pc_has_permission(sd,PC_PERM_DISABLE_CMD_DEAD) ) { - clif->message(fd, msg_txt(1393)); // You can't use commands while dead + clif->message(fd, msg_fd(fd,1393)); // You can't use commands while dead return true; } for(i = 0; i < map->list[sd->bl.m].zone->disabled_commands_count; i++) { @@ -9893,7 +9973,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa && (ssd = map->nick2sd(charname)) == NULL && (ssd = map->nick2sd(charname2)) == NULL ) { - sprintf(output, msg_txt(1389), command); // %s failed. Player not found. + sprintf(output, msg_fd(fd,1389), command); // %s failed. Player not found. clif->message(fd, output); return true; } @@ -9904,7 +9984,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa if( info->func == atcommand_autotrade ) /** autotrade deletes caster, so we got nothing more to do here **/ return true; #endif - sprintf(output,msg_txt(154), command); // %s failed. + sprintf(output,msg_fd(fd,154), command); // %s failed. clif->message(fd, output); return true; } @@ -10181,6 +10261,11 @@ void atcommand_doload(void) { atcommand->config_read(map->ATCOMMAND_CONF_FILENAME); } +void atcommand_expand_message_table(void) { + RECREATE(atcommand->msg_table, char **, ++atcommand->max_message_table); + RECREATE(atcommand->msg_table[atcommand->max_message_table - 1], char *, MAX_MSG); +} + void do_init_atcommand(bool minimal) { if (minimal) return; @@ -10202,8 +10287,6 @@ void atcommand_defaults(void) { atcommand->db = NULL; atcommand->alias_db = NULL; - memset(atcommand->msg_table, 0, sizeof(atcommand->msg_table)); - atcommand->init = do_init_atcommand; atcommand->final = do_final_atcommand; @@ -10235,4 +10318,7 @@ void atcommand_defaults(void) { atcommand->base_commands = atcommand_basecommands; atcommand->add = atcommand_add; atcommand->msg = atcommand_msg; + atcommand->expand_message_table = atcommand_expand_message_table; + atcommand->msgfd = atcommand_msgfd; + atcommand->msgsd = atcommand_msgsd; } diff --git a/src/map/atcommand.h b/src/map/atcommand.h index 8d0399f25..c1f451ad3 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -22,6 +22,9 @@ struct block_list; #define ATCOMMAND_LENGTH 50 #define MAX_MSG 1500 #define msg_txt(idx) atcommand->msg(idx) +#define msg_sd(sd,msg_number) atcommand->msgsd((sd),(msg_number)) +#define msg_fd(fd,msg_number) atcommand->msgfd((fd),(msg_number)) + /** * Enumerations **/ @@ -74,8 +77,12 @@ struct atcommand_interface { /* other vars */ DBMap* db; //name -> AtCommandInfo DBMap* alias_db; //alias -> AtCommandInfo - /* */ - char* msg_table[MAX_MSG]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others) + /** + * msg_table[lang_id][msg_id] + * Server messages (0-499 reserved for GM commands, 500-999 reserved for others) + **/ + char*** msg_table; + uint8 max_message_table; /* */ void (*init) (bool minimal); void (*final) (void); @@ -112,6 +119,9 @@ struct atcommand_interface { void (*base_commands) (void); bool (*add) (char *name, AtCommandFunc func, bool replace); const char* (*msg) (int msg_number); + void (*expand_message_table) (void); + const char* (*msgfd) (int fd, int msg_number); + const char* (*msgsd) (struct map_session_data *sd, int msg_number); }; struct atcommand_interface *atcommand; diff --git a/src/map/battle.c b/src/map/battle.c index 384d2e71f..b2ee9cf1d 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -263,7 +263,7 @@ int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct if (d_tbl && sc && check_distance_bl(target, d_tbl, sc->data[SC_DEVOTION]->val3) && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD) damage = 0; - + if ( !battle_config.delay_battle_damage || amotion <= 1 ) { map->freeblock_lock(); status_fix_damage(src, target, damage, ddelay); // We have to separate here between reflect damage and others [icescope] @@ -1528,9 +1528,6 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block case NPC_ENERGYDRAIN: skillratio += 100 * skill_lv; break; - case NPC_EARTHQUAKE: - skillratio += 100 + 100 * skill_lv + 100 * (skill_lv/2); - break; #ifdef RENEWAL case WZ_HEAVENDRIVE: case WZ_METEOR: @@ -1894,6 +1891,9 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block case NPC_PULSESTRIKE: skillratio += 100 * (skill_lv-1); break; + case NPC_EARTHQUAKE: + skillratio += 100 + 100 * skill_lv + 100 * (skill_lv / 2); + break; case RG_BACKSTAP: if( sd && sd->status.weapon == W_BOW && battle_config.backstab_bow_penalty ) skillratio += (200 + 40 * skill_lv) / 2; @@ -3160,9 +3160,9 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } if( bl->type == BL_MOB && !status->isdead(bl) && src != bl) { - if (damage > 0 ) + if ( damage > 0 ) mob->skill_event((TBL_MOB*)bl,src,timer->gettick(),flag); - if (skill_id) + if (skill_id) mob->skill_event((TBL_MOB*)bl,src,timer->gettick(),MSC_SKILLUSED|(skill_id<<16)); } if( sd ) { @@ -3601,15 +3601,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list ad.damage = battle->calc_defense(BF_MAGIC, src, target, skill_id, skill_lv, ad.damage, flag.imdef, 0); - if (skill_id == NPC_EARTHQUAKE) { - //Adds atk2 to the damage, should be influenced by number of hits and skill-ratio, but not mdef reductions. [Skotlex] - //Also divide the extra bonuses from atk2 based on the number in range [Kevin] - if(mflag>0) - ad.damage+= (sstatus->rhw.atk2*skillratio/100)/mflag; - else - ShowError("Zero range by %d:%s, divide per 0 avoided!\n", skill_id, skill->get_name(skill_id)); - } - if(ad.damage<1) ad.damage=1; else if(sc){//only applies when hit @@ -4265,6 +4256,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list wd.div_ = tstatus->size + 2 + ( (rnd()%100 < 50-tstatus->size*10) ? 1 : 0 ); break; #ifdef RENEWAL + case PA_SHIELDCHAIN: case NJ_KUNAI: case HW_MAGICCRASHER: case NJ_SYURIKEN: @@ -4356,7 +4348,6 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list else if(sc && sc->data[SC_FEARBREEZE] && sd->weapontype1==W_BOW && (i = sd->equip_index[EQI_AMMO]) >= 0 && sd->inventory_data[i] && sd->status.inventory[i].amount > 1){ int chance = rnd()%100; - wd.type = 0x08; switch(sc->data[SC_FEARBREEZE]->val1){ case 5: if( chance < 3){// 3 % chance to attack 5 times. @@ -4380,8 +4371,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list break; } } - wd.div_ = min(wd.div_,sd->status.inventory[i].amount); - sc->data[SC_FEARBREEZE]->val4 = wd.div_-1; + if ( wd.div_ > 1 ) { + wd.div_ = min(wd.div_, sd->status.inventory[i].amount); + sc->data[SC_FEARBREEZE]->val4 = wd.div_ - 1; + wd.type = 0x08; + } } } @@ -4523,6 +4517,12 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list case NPC_UNDEADATTACK: case NPC_TELEKINESISATTACK: case NPC_BLEEDING: + case NPC_EARTHQUAKE: + case NPC_FIREBREATH: + case NPC_ICEBREATH: + case NPC_THUNDERBREATH: + case NPC_ACIDBREATH: + case NPC_DARKNESSBREATH: hitrate += hitrate * 20 / 100; break; case KN_PIERCE: @@ -4664,9 +4664,10 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list break; } break; + + case PA_SHIELDCHAIN: #endif case CR_SHIELDBOOMERANG: - case PA_SHIELDCHAIN: wd.damage = sstatus->batk; if (sd) { int damagevalue = 0; @@ -4783,6 +4784,16 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list break; #ifdef RENEWAL + case PA_SHIELDCHAIN: + if ( sd ) { + short index = sd->equip_index[EQI_HAND_L]; + if ( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR ) { + ATK_ADD(sd->inventory_data[index]->weight / 10 + 4 * sd->status.inventory[index].refine); + } + } else + ATK_ADD(sstatus->rhw.atk2); //Else use Atk2 + ATK_RATE(battle->calc_skillratio(BF_WEAPON, src, target, skill_id, skill_lv, skillratio, wflag)); + break; case NJ_TATAMIGAESHI: ATK_RATE(200); /* Fall through */ @@ -5054,6 +5065,16 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list //Div fix. damage_div_fix(wd.damage, wd.div_); #endif +#if 0 // Can't find any source about this one even in eagis + if (skill_id == NPC_EARTHQUAKE) { + //Adds atk2 to the damage, should be influenced by number of hits and skill-ratio, but not mdef reductions. [Skotlex] + //Also divide the extra bonuses from atk2 based on the number in range [Kevin] + if ( wflag>0 ) + ATK_ADD((sstatus->rhw.atk2*skillratio / 100) / wflag); + else + ShowError("Zero range by %d:%s, divide per 0 avoided!\n", skill_id, skill->get_name(skill_id)); + } +#endif //Post skill/vit reduction damage increases if (sc) { //SC skill damages @@ -6704,9 +6725,10 @@ static const struct battle_data { { "bone_drop", &battle_config.bone_drop, 0, 0, 2, }, { "buyer_name", &battle_config.buyer_name, 1, 0, 1, }, { "skill_wall_check", &battle_config.skill_wall_check, 1, 0, 1, }, - { "official_cell_stack_limit", &battle_config.official_cell_stack_limit, 1, 1, 255, }, + { "official_cell_stack_limit", &battle_config.official_cell_stack_limit, 1, 0, 255, }, { "custom_cell_stack_limit", &battle_config.custom_cell_stack_limit, 1, 1, 255, }, { "dancing_weaponswitch_fix", &battle_config.dancing_weaponswitch_fix, 1, 0, 1, }, + { "check_occupied_cells", &battle_config.check_occupied_cells, 1, 0, 1, }, // eAthena additions { "item_logarithmic_drops", &battle_config.logarithmic_drops, 0, 0, 1, }, diff --git a/src/map/battle.h b/src/map/battle.h index ddd98ec69..233c325cf 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -384,6 +384,7 @@ struct Battle_Config { int skill_wall_check; // [Skotlex] int official_cell_stack_limit; // [Playtester] int custom_cell_stack_limit; // [Skotlex] + int check_occupied_cells; // [4144] int skill_caster_check; // [Skotlex] int sc_castcancel; // [Skotlex] int pc_sc_def_rate; // [Skotlex] diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c index a53acdbb0..85fef98aa 100644 --- a/src/map/buyingstore.c +++ b/src/map/buyingstore.c @@ -39,13 +39,13 @@ bool buyingstore_setup(struct map_session_data* sd, unsigned char slots) if( map->list[sd->bl.m].flag.novending ) { // custom: no vending maps - clif->message(sd->fd, msg_txt(276)); // "You can't open a shop on this map" + clif->message(sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map" return false; } if( map->getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) { // custom: no vending cells - clif->message(sd->fd, msg_txt(204)); // "You can't open a shop on this cell." + clif->message(sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell." return false; } @@ -81,7 +81,7 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha if( !pc_can_give_items(sd) ) {// custom: GM is not allowed to buy (give zeny) sd->buyingstore.slots = 0; - clif->message(sd->fd, msg_txt(246)); + clif->message(sd->fd, msg_sd(sd,246)); clif->buyingstore_open_failed(sd, BUYINGSTORE_CREATE, 0); return; } @@ -93,13 +93,13 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha if( map->list[sd->bl.m].flag.novending ) { // custom: no vending maps - clif->message(sd->fd, msg_txt(276)); // "You can't open a shop on this map" + clif->message(sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map" return; } if( map->getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) { // custom: no vending cells - clif->message(sd->fd, msg_txt(204)); // "You can't open a shop on this cell." + clif->message(sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell." return; } @@ -203,7 +203,7 @@ void buyingstore_open(struct map_session_data* sd, int account_id) if( !pc_can_give_items(sd) ) {// custom: GM is not allowed to sell - clif->message(sd->fd, msg_txt(246)); + clif->message(sd->fd, msg_sd(sd,246)); return; } @@ -241,7 +241,7 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int if( !pc_can_give_items(sd) ) {// custom: GM is not allowed to sell - clif->message(sd->fd, msg_txt(246)); + clif->message(sd->fd, msg_sd(sd,246)); clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, 0); return; } diff --git a/src/map/channel.c b/src/map/channel.c index 34ce60211..0704bf706 100644 --- a/src/map/channel.c +++ b/src/map/channel.c @@ -258,7 +258,7 @@ void channel_send(struct channel_data *chan, struct map_session_data *sd, const if (sd && chan->msg_delay != 0 && DIFF_TICK(sd->hchsysch_tick + chan->msg_delay*1000, timer->gettick()) > 0 && !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)) { - clif->colormes(sd->fd,COLOR_RED,msg_txt(1455)); + clif->colormes(sd->fd,COLOR_RED,msg_sd(sd,1455)); return; } else if (sd) { snprintf(message, 150, "[ #%s ] %s : %s",chan->name,sd->status.name, msg); @@ -348,9 +348,9 @@ enum channel_operation_status channel_join(struct channel_data *chan, struct map if (!silent && !(chan->options&HCS_OPT_ANNOUNCE_JOIN)) { char output[CHAT_SIZE_MAX]; if (chan->type == HCS_TYPE_MAP) { - sprintf(output, msg_txt(1435), chan->name, map->list[chan->m].name); // You're now in the '#%s' channel for '%s' + sprintf(output, msg_sd(sd,1435), chan->name, map->list[chan->m].name); // You're now in the '#%s' channel for '%s' } else { - sprintf(output, msg_txt(1403), chan->name); // You're now in the '%s' channel + sprintf(output, msg_sd(sd,1403), chan->name); // You're now in the '%s' channel } clif->colormes(sd->fd, COLOR_DEFAULT, output); } diff --git a/src/map/chat.c b/src/map/chat.c index 9c67e0f44..a232781ca 100644 --- a/src/map/chat.c +++ b/src/map/chat.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <string.h> -#include "atcommand.h" // msg_txt() +#include "atcommand.h" // msg_sd(sd,) #include "battle.h" // struct battle_config #include "clif.h" #include "map.h" @@ -84,12 +84,12 @@ bool chat_createpcchat(struct map_session_data* sd, const char* title, const cha } if( map->list[sd->bl.m].flag.nochat ) { - clif->message(sd->fd, msg_txt(281)); + clif->message(sd->fd, msg_sd(sd,281)); return false; //Can't create chatrooms on this map. } if( map->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOCHAT) ) { - clif->message (sd->fd, msg_txt(865)); // "Can't create chat rooms in this area." + clif->message (sd->fd, msg_sd(sd,865)); // "Can't create chat rooms in this area." return false; } diff --git a/src/map/chrif.c b/src/map/chrif.c index fd12ed013..da946f050 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -782,7 +782,7 @@ bool chrif_changesex(struct map_session_data *sd) { WFIFOW(chrif->fd,30) = 5; WFIFOSET(chrif->fd,44); - clif->message(sd->fd, msg_txt(408)); //"Disconnecting to perform change-sex request..." + clif->message(sd->fd, msg_sd(sd,408)); //"Disconnecting to perform change-sex request..." if (sd->fd) clif->authfail_fd(sd->fd, 15); @@ -815,20 +815,20 @@ bool chrif_char_ask_name_answer(int acc, const char* player_name, uint16 type, u return false; } - /* re-use previous msg_txt */ + /* re-use previous msg_number */ if( type == 6 ) type = 2; if( type == 7 ) type = 4; if( type > 0 && type <= 5 ) - snprintf(action,25,"%s",msg_txt(427+type)); //block|ban|unblock|unban|change the sex of + snprintf(action,25,"%s",msg_sd(sd,427+type)); //block|ban|unblock|unban|change the sex of else snprintf(action,25,"???"); switch( answer ) { - case 0 : sprintf(output, msg_txt(charsrv?434:424), action, NAME_LENGTH, player_name); break; - case 1 : sprintf(output, msg_txt(425), NAME_LENGTH, player_name); break; - case 2 : sprintf(output, msg_txt(426), action, NAME_LENGTH, player_name); break; - case 3 : sprintf(output, msg_txt(427), action, NAME_LENGTH, player_name); break; + case 0 : sprintf(output, msg_sd(sd,charsrv?434:424), action, NAME_LENGTH, player_name); break; + case 1 : sprintf(output, msg_sd(sd,425), NAME_LENGTH, player_name); break; + case 2 : sprintf(output, msg_sd(sd,426), action, NAME_LENGTH, player_name); break; + case 3 : sprintf(output, msg_sd(sd,427), action, NAME_LENGTH, player_name); break; default: output[0] = '\0'; break; } @@ -943,23 +943,23 @@ void chrif_idbanned(int fd) { if (RFIFOB(fd,6) == 0) { // 0: change of status int ret_status = RFIFOL(fd,7); // status or final date of a banishment if(0<ret_status && ret_status<=9) - clif->message(sd->fd, msg_txt(411+ret_status)); // Message IDs (for search convenience): 412, 413, 414, 415, 416, 417, 418, 419, 420 + clif->message(sd->fd, msg_sd(sd,411+ret_status)); // Message IDs (for search convenience): 412, 413, 414, 415, 416, 417, 418, 419, 420 else if(ret_status==100) - clif->message(sd->fd, msg_txt(421)); + clif->message(sd->fd, msg_sd(sd,421)); else - clif->message(sd->fd, msg_txt(420)); //"Your account has not more authorized." + clif->message(sd->fd, msg_sd(sd,420)); //"Your account has not more authorized." } else if (RFIFOB(fd,6) == 1) { // 1: ban time_t timestamp; char tmpstr[2048]; timestamp = (time_t)RFIFOL(fd,7); // status or final date of a banishment - safestrncpy(tmpstr, msg_txt(423), sizeof(tmpstr)); //"Your account has been banished until " + safestrncpy(tmpstr, msg_sd(sd,423), sizeof(tmpstr)); //"Your account has been banished until " strftime(tmpstr + strlen(tmpstr), 24, "%d-%m-%Y %H:%M:%S", localtime(×tamp)); clif->message(sd->fd, tmpstr); } else if (RFIFOB(fd,6) == 2) { // 2: change of status for character time_t timestamp; char tmpstr[2048]; timestamp = (time_t)RFIFOL(fd,7); // status or final date of a banishment - safestrncpy(tmpstr, msg_txt(433), sizeof(tmpstr)); //"This character has been banned until " + safestrncpy(tmpstr, msg_sd(sd,433), sizeof(tmpstr)); //"This character has been banned until " strftime(tmpstr + strlen(tmpstr), 24, "%d-%m-%Y %H:%M:%S", localtime(×tamp)); clif->message(sd->fd, tmpstr); } diff --git a/src/map/clif.c b/src/map/clif.c index a298e6707..47b0a5f45 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -4631,7 +4631,7 @@ void clif_addskill(struct map_session_data *sd, int id) WFIFOW(fd,12)= skill->get_range2(&sd->bl, id,sd->status.skill[idx].lv); safestrncpy((char*)WFIFOP(fd,14), skill->get_name(id), NAME_LENGTH); if( sd->status.skill[idx].flag == SKILL_FLAG_PERMANENT ) - WFIFOB(fd,38) = (sd->status.skill[id].lv < skill->tree_get_max(id, sd->status.class_))? 1:0; + WFIFOB(fd,38) = (sd->status.skill[idx].lv < skill->tree_get_max(id, sd->status.class_))? 1:0; else WFIFOB(fd,38) = 0; WFIFOSET(fd,packet_len(0x111)); @@ -6183,6 +6183,14 @@ void clif_openvending(struct map_session_data* sd, int id, struct s_vending* ven clif->addcards(WFIFOP(fd,22+i*22), &sd->status.cart[index]); } WFIFOSET(fd,WFIFOW(fd,2)); + +#if PACKETVER >= 20141022 + /** should go elsewhere perhaps? it has to be bundled with this however. **/ + WFIFOHEAD(fd, 3); + WFIFOW(fd, 0) = 0xa28; + WFIFOB(fd, 2) = 0;/** 1 is failure. our current responses to failure are working so not yet implemented **/ + WFIFOSET(fd, 3); +#endif } @@ -6371,7 +6379,7 @@ void clif_party_inviteack(struct map_session_data* sd, const char* nick, int res #if PACKETVER < 20070904 if( result == 7 ) { - clif->message(fd, msg_txt(3)); + clif->message(fd, msg_sd(sd,3)); return; } #endif @@ -6680,7 +6688,7 @@ void clif_sendegg(struct map_session_data *sd) fd=sd->fd; if (battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m)) { //Disable pet hatching in GvG grounds during Guild Wars [Skotlex] - clif->message(fd, msg_txt(866)); // "Pets are not allowed in Guild Wars." + clif->message(fd, msg_sd(sd,866)); // "Pets are not allowed in Guild Wars." return; } WFIFOHEAD(fd, MAX_INVENTORY * 2 + 4); @@ -7183,7 +7191,7 @@ void clif_guild_basicinfo(struct map_session_data *sd) { memcpy(WFIFOP(fd,46),g->name, NAME_LENGTH); memcpy(WFIFOP(fd,70),g->master, NAME_LENGTH); - safestrncpy((char*)WFIFOP(fd,94),msg_txt(300+guild->checkcastles(g)),16); // "'N' castles" + safestrncpy((char*)WFIFOP(fd,94),msg_sd(sd,300+guild->checkcastles(g)),16); // "'N' castles" WFIFOL(fd,110) = 0; // zeny WFIFOSET(fd,packet_len(0x1b6)); @@ -9103,7 +9111,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) { // pet if( sd->pd ) { if( battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m) ) { //Return the pet to egg. [Skotlex] - clif->message(sd->fd, msg_txt(866)); // "Pets are not allowed in Guild Wars." + clif->message(sd->fd, msg_sd(sd,866)); // "Pets are not allowed in Guild Wars." pet->menu(sd, 3); //Option 3 is return to egg. } else { map->addblock(&sd->pd->bl); @@ -9284,7 +9292,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) { if( sd->sc.data[SC_MONSTER_TRANSFORM] && battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m) ){ status_change_end(&sd->bl, SC_MONSTER_TRANSFORM, INVALID_TIMER); - clif->message(sd->fd, msg_txt(1488)); // Transforming into monster is not allowed in Guild Wars. + clif->message(sd->fd, msg_sd(sd,1488)); // Transforming into monster is not allowed in Guild Wars. } clif->weather_check(sd); @@ -10049,7 +10057,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd) if (k < sd->channel_count || channel->join(chan, sd, NULL, true) == HCS_STATUS_OK) { channel->send(chan,sd,message); } else { - clif->message(fd, msg_txt(1402)); + clif->message(fd, msg_fd(fd,1402)); } return; } @@ -10536,10 +10544,10 @@ void clif_noask_sub(struct map_session_data *src, struct map_session_data *targe const char* msg; char output[256]; // Your request has been rejected by autoreject option. - msg = msg_txt(392); + msg = msg_sd(src,392); clif_disp_onlyself(src, msg, strlen(msg)); //Notice that a request was rejected. - snprintf(output, 256, msg_txt(393+type), src->status.name, 256); + snprintf(output, 256, msg_sd(target,393+type), src->status.name, 256); clif_disp_onlyself(target, output, strlen(output)); } @@ -11558,7 +11566,7 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd) { if( map->list[sd->bl.m].flag.partylock ) { // Party locked. - clif->message(fd, msg_txt(227)); + clif->message(fd, msg_fd(fd,227)); return; } if( battle_config.basic_skill_check && pc->checkskill(sd,NV_BASIC) < 7 ) { @@ -11577,7 +11585,7 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd) { if( map->list[sd->bl.m].flag.partylock ) { // Party locked. - clif->message(fd, msg_txt(227)); + clif->message(fd, msg_fd(fd,227)); return; } if( battle_config.basic_skill_check && pc->checkskill(sd,NV_BASIC) < 7 ) { @@ -11597,7 +11605,7 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) { if(map->list[sd->bl.m].flag.partylock) { // Party locked. - clif->message(fd, msg_txt(227)); + clif->message(fd, msg_fd(fd,227)); return; } @@ -11618,7 +11626,7 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) { if(map->list[sd->bl.m].flag.partylock) { // Party locked. - clif->message(fd, msg_txt(227)); + clif->message(fd, msg_fd(fd,227)); return; } @@ -11655,7 +11663,7 @@ void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd) void clif_parse_LeaveParty(int fd, struct map_session_data *sd) { if(map->list[sd->bl.m].flag.partylock) { // Party locked. - clif->message(fd, msg_txt(227)); + clif->message(fd, msg_fd(fd,227)); return; } party->leave(sd); @@ -11667,7 +11675,7 @@ void clif_parse_LeaveParty(int fd, struct map_session_data *sd) { void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) { if(map->list[sd->bl.m].flag.partylock) { // Party locked. - clif->message(fd, msg_txt(227)); + clif->message(fd, msg_fd(fd,227)); return; } party->removemember(sd,RFIFOL(fd,2),(char*)RFIFOP(fd,6)); @@ -12406,11 +12414,11 @@ void clif_parse_OpenVending(int fd, struct map_session_data* sd) { if( sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM ) return; if( map->list[sd->bl.m].flag.novending ) { - clif->message (sd->fd, msg_txt(276)); // "You can't open a shop on this map" + clif->message (sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map" return; } if( map->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOVENDING) ) { - clif->message (sd->fd, msg_txt(204)); // "You can't open a shop on this cell." + clif->message (sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell." return; } @@ -12428,7 +12436,7 @@ void clif_parse_CreateGuild(int fd,struct map_session_data *sd) { if(map->list[sd->bl.m].flag.guildlock) { //Guild locked. - clif->message(fd, msg_txt(228)); + clif->message(fd, msg_fd(fd,228)); return; } @@ -12697,7 +12705,7 @@ bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_sessi if ( map->list[sd->bl.m].flag.guildlock ) { //Guild locked. - clif->message(fd, msg_txt(228)); + clif->message(fd, msg_fd(fd,228)); return false; } @@ -12744,11 +12752,11 @@ void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd) void clif_parse_GuildLeave(int fd,struct map_session_data *sd) { if(map->list[sd->bl.m].flag.guildlock) { //Guild locked. - clif->message(fd, msg_txt(228)); + clif->message(fd, msg_fd(fd,228)); return; } if( sd->bg_id ) { - clif->message(fd, msg_txt(870)); //"You can't leave battleground guilds." + clif->message(fd, msg_fd(fd,870)); //"You can't leave battleground guilds." return; } @@ -12761,7 +12769,7 @@ void clif_parse_GuildLeave(int fd,struct map_session_data *sd) { void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) { if( map->list[sd->bl.m].flag.guildlock || sd->bg_id ) { // Guild locked. - clif->message(fd, msg_txt(228)); + clif->message(fd, msg_fd(fd,228)); return; } guild->expulsion(sd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),(char*)RFIFOP(fd,14)); @@ -12814,7 +12822,7 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) { if(map->list[sd->bl.m].flag.guildlock) { //Guild locked. - clif->message(fd, msg_txt(228)); + clif->message(fd, msg_fd(fd,228)); return; } @@ -12852,7 +12860,7 @@ void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) { if(map->list[sd->bl.m].flag.guildlock) { //Guild locked. - clif->message(fd, msg_txt(228)); + clif->message(fd, msg_fd(fd,228)); return; } guild->delalliance(sd,RFIFOL(fd,2),RFIFOL(fd,6)); @@ -12869,7 +12877,7 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) { if(map->list[sd->bl.m].flag.guildlock) { //Guild locked. - clif->message(fd, msg_txt(228)); + clif->message(fd, msg_fd(fd,228)); return; } @@ -12893,7 +12901,7 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) { void clif_parse_GuildBreak(int fd, struct map_session_data *sd) { if( map->list[sd->bl.m].flag.guildlock ) { //Guild locked. - clif->message(fd, msg_txt(228)); + clif->message(fd, msg_fd(fd,228)); return; } guild->dobreak(sd,(char*)RFIFOP(fd,2)); @@ -13599,7 +13607,7 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) { // Friend doesn't exist (no player with this name) if (f_sd == NULL) { - clif->message(fd, msg_txt(3)); + clif->message(fd, msg_fd(fd,3)); return; } @@ -13616,7 +13624,7 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) { // Friend already exists for (i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id != 0; i++) { if (sd->status.friends[i].char_id == f_sd->status.char_id) { - clif->message(fd, msg_txt(871)); //"Friend already exists." + clif->message(fd, msg_fd(fd,871)); //"Friend already exists." return; } } @@ -13712,7 +13720,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) (sd->status.friends[i].char_id != char_id || sd->status.friends[i].account_id != account_id); i++); if (i == MAX_FRIENDS) { - clif->message(fd, msg_txt(872)); //"Name not found in list." + clif->message(fd, msg_fd(fd,872)); //"Name not found in list." return; } @@ -13737,7 +13745,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) } else { //friend not online -- ask char server to delete from his friendlist if(!chrif->removefriend(char_id,sd->status.char_id)) { // char-server offline, abort - clif->message(fd, msg_txt(873)); //"This action can't be performed at the moment. Please try again later." + clif->message(fd, msg_fd(fd,873)); //"This action can't be performed at the moment. Please try again later." return; } } @@ -13750,7 +13758,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) memcpy(&sd->status.friends[j-1], &sd->status.friends[j], sizeof(sd->status.friends[0])); memset(&sd->status.friends[MAX_FRIENDS-1], 0, sizeof(sd->status.friends[MAX_FRIENDS-1])); - clif->message(fd, msg_txt(874)); //"Friend removed" + clif->message(fd, msg_fd(fd,874)); //"Friend removed" WFIFOHEAD(fd,packet_len(0x20a)); WFIFOW(fd,0) = 0x20a; @@ -14617,7 +14625,7 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd) } if( DIFF_TICK(sd->cansendmail_tick, timer->gettick()) > 0 ) { - clif->message(sd->fd,msg_txt(875)); //"Cannot send mails too fast!!." + clif->message(sd->fd,msg_sd(sd,875)); //"Cannot send mails too fast!!." clif->mail_send(fd, true); // fail return; } @@ -14901,7 +14909,7 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd) // Auction checks... if( sd->status.inventory[sd->auction.index].bound && !pc_can_give_bound_items(sd) ) { - clif->message(sd->fd, msg_txt(293)); + clif->message(sd->fd, msg_sd(sd,293)); clif->auction_message(fd, 2); // The auction has been canceled return; } @@ -14954,7 +14962,7 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd) int bid = RFIFOL(fd,6); if( !pc_can_give_items(sd) ) { //They aren't supposed to give zeny [Inkfish] - clif->message(sd->fd, msg_txt(246)); + clif->message(sd->fd, msg_sd(sd,246)); return; } @@ -17094,7 +17102,7 @@ void __attribute__ ((unused)) clif_parse_dull(int fd,struct map_session_data *sd void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) { if( map->list[sd->bl.m].flag.nocashshop ) { - clif->colormes(fd,COLOR_RED,msg_txt(1489)); //Cash Shop is disabled in this map + clif->colormes(fd,COLOR_RED,msg_fd(fd,1489)); //Cash Shop is disabled in this map return; } @@ -17135,7 +17143,7 @@ void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) { unsigned int kafra_pay = RFIFOL(fd, 6);// [Ryuuzaki] - These are free cash points (strangely #CASH = main cash currently for us, confusing) if( map->list[sd->bl.m].flag.nocashshop ) { - clif->colormes(fd,COLOR_RED,msg_txt(1489)); //Cash Shop is disabled in this map + clif->colormes(fd,COLOR_RED,msg_fd(fd,1489)); //Cash Shop is disabled in this map return; } @@ -17537,7 +17545,7 @@ void clif_parse_BankDeposit(int fd, struct map_session_data* sd) { int money; if( !battle_config.feature_banking ) { - clif->colormes(fd,COLOR_RED,msg_txt(1483)); + clif->colormes(fd,COLOR_RED,msg_fd(fd,1483)); return; } @@ -17551,7 +17559,7 @@ void clif_parse_BankWithdraw(int fd, struct map_session_data* sd) { int money; if( !battle_config.feature_banking ) { - clif->colormes(fd,COLOR_RED,msg_txt(1483)); + clif->colormes(fd,COLOR_RED,msg_fd(fd,1483)); return; } @@ -17564,7 +17572,7 @@ void clif_parse_BankCheck(int fd, struct map_session_data* sd) { struct packet_banking_check p; if( !battle_config.feature_banking ) { - clif->colormes(fd,COLOR_RED,msg_txt(1483)); + clif->colormes(fd,COLOR_RED,msg_fd(fd,1483)); return; } diff --git a/src/map/duel.c b/src/map/duel.c index 964ef9e11..2dae0ae0e 100644 --- a/src/map/duel.c +++ b/src/map/duel.c @@ -61,13 +61,13 @@ void duel_showinfo(const unsigned int did, struct map_session_data* sd) { char output[256]; if(duel->list[did].max_players_limit > 0) - sprintf(output, msg_txt(370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --" + sprintf(output, msg_sd(sd,370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --" did, duel->count, duel->list[did].members_count, duel->list[did].members_count + duel->list[did].invites_count, duel->list[did].max_players_limit); else - sprintf(output, msg_txt(371), //" -- Duels: %d/%d, Members: %d/%d --" + sprintf(output, msg_sd(sd,371), //" -- Duels: %d/%d, Members: %d/%d --" did, duel->count, duel->list[did].members_count, duel->list[did].members_count + duel->list[did].invites_count); @@ -89,7 +89,7 @@ int duel_create(struct map_session_data* sd, const unsigned int maxpl) { duel->list[i].invites_count = 0; duel->list[i].max_players_limit = maxpl; - safestrncpy(output, msg_txt(372), sizeof(output)); // " -- Duel has been created (@invite/@leave) --" + safestrncpy(output, msg_sd(sd,372), sizeof(output)); // " -- Duel has been created (@invite/@leave) --" clif_disp_onlyself(sd, output, strlen(output)); clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); @@ -101,14 +101,14 @@ void duel_invite(const unsigned int did, struct map_session_data* sd, struct map char output[256]; // " -- Player %s invites %s to duel --" - sprintf(output, msg_txt(373), sd->status.name, target_sd->status.name); + sprintf(output, msg_sd(sd,373), sd->status.name, target_sd->status.name); clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS); target_sd->duel_invite = did; duel->list[did].invites_count++; // "Blue -- Player %s invites you to PVP duel (@accept/@reject) --" - sprintf(output, msg_txt(374), sd->status.name); + sprintf(output, msg_sd(target_sd,374), sd->status.name); clif->broadcast((struct block_list *)target_sd, output, strlen(output)+1, BC_BLUE, SELF); } @@ -124,7 +124,7 @@ void duel_leave(const unsigned int did, struct map_session_data* sd) { char output[256]; // " <- Player %s has left duel --" - sprintf(output, msg_txt(375), sd->status.name); + sprintf(output, msg_sd(sd,375), sd->status.name); clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS); duel->list[did].members_count--; @@ -149,7 +149,7 @@ void duel_accept(const unsigned int did, struct map_session_data* sd) { sd->duel_invite = 0; // " -> Player %s has accepted duel --" - sprintf(output, msg_txt(376), sd->status.name); + sprintf(output, msg_sd(sd,376), sd->status.name); clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS); clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); @@ -160,7 +160,7 @@ void duel_reject(const unsigned int did, struct map_session_data* sd) { char output[256]; // " -- Player %s has rejected duel --" - sprintf(output, msg_txt(377), sd->status.name); + sprintf(output, msg_sd(sd,377), sd->status.name); clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS); duel->list[did].invites_count--; diff --git a/src/map/guild.c b/src/map/guild.c index 7f116bae1..936b4c900 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -1432,7 +1432,7 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd) if(map->agit_flag || map->agit2_flag) { // Disable alliance creation during woe [Valaris] - clif->message(sd->fd,msg_txt(876)); //"Alliances cannot be made during Guild Wars!" + clif->message(sd->fd,msg_sd(sd,876)); //"Alliances cannot be made during Guild Wars!" return 0; } @@ -1548,7 +1548,7 @@ int guild_delalliance(struct map_session_data *sd,int guild_id,int flag) { if(map->agit_flag || map->agit2_flag) { // Disable alliance breaking during woe [Valaris] - clif->message(sd->fd,msg_txt(877)); //"Alliances cannot be broken during Guild Wars!" + clif->message(sd->fd,msg_sd(sd,877)); //"Alliances cannot be broken during Guild Wars!" return 0; } @@ -1839,12 +1839,12 @@ int guild_gm_changed(int guild_id, int account_id, int char_id) strcpy(g->master, g->member[0].name); if (g->member[pos].sd && g->member[pos].sd->fd) { - clif->message(g->member[pos].sd->fd, msg_txt(878)); //"You no longer are the Guild Master." + clif->message(g->member[pos].sd->fd, msg_sd(g->member[pos].sd,878)); //"You no longer are the Guild Master." g->member[pos].sd->state.gmaster_flag = 0; } if (g->member[0].sd && g->member[0].sd->fd) { - clif->message(g->member[0].sd->fd, msg_txt(879)); //"You have become the Guild Master!" + clif->message(g->member[0].sd->fd, msg_sd(g->member[0].sd,879)); //"You have become the Guild Master!" g->member[0].sd->state.gmaster_flag = 1; //Block his skills for 5 minutes to prevent abuse. guild->block_skill(g->member[0].sd, 300000); diff --git a/src/map/homunculus.c b/src/map/homunculus.c index 17336a00d..51686d3aa 100644 --- a/src/map/homunculus.c +++ b/src/map/homunculus.c @@ -689,7 +689,7 @@ bool homunculus_change_name_ack(struct map_session_data *sd, char* name, int fla normalize_name(name," ");//bugreport:3032 if ( !flag || !strlen(name) ) { - clif->message(sd->fd, msg_txt(280)); // You cannot use this name + clif->message(sd->fd, msg_sd(sd,280)); // You cannot use this name return false; } safestrncpy(hd->homunculus.name,name,NAME_LENGTH); diff --git a/src/map/intif.c b/src/map/intif.c index 4dbb7e3eb..50857baa8 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -1582,7 +1582,7 @@ void intif_parse_MailInboxReceived(int fd) { clif->mail_refreshinbox(sd); else if( battle_config.mail_show_status && ( battle_config.mail_show_status == 1 || sd->mail.inbox.unread ) ) { char output[128]; - sprintf(output, msg_txt(510), sd->mail.inbox.unchecked, sd->mail.inbox.unread + sd->mail.inbox.unchecked); + sprintf(output, msg_sd(sd,510), sd->mail.inbox.unchecked, sd->mail.inbox.unread + sd->mail.inbox.unchecked); clif_disp_onlyself(sd, output, strlen(output)); } } diff --git a/src/map/map.c b/src/map/map.c index 745814f78..c79d49c3e 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -3595,6 +3595,8 @@ int map_config_read(char *cfgName) { map->enable_grf = config_switch(w2); else if (strcmpi(w1, "console_msg_log") == 0) console_msg_log = atoi(w2);//[Ind] + else if (strcmpi(w1, "default_language") == 0) + safestrncpy(map->default_lang_str, w2, sizeof(map->default_lang_str)); else if (strcmpi(w1, "import") == 0) map->config_read(w2); else @@ -5821,6 +5823,24 @@ static CMDLINEARG(loadscript) map->extra_scripts[map->extra_scripts_count-1] = aStrdup(params); return true; } + +/** + * --generate-translations + * + * Creates "./generated_translations.pot" + * @see cmdline->exec + **/ +static CMDLINEARG(generatetranslations) { + script->lang_export_file = aStrdup("./generated_translations.pot"); + + if( !(script->lang_export_fp = fopen(script->lang_export_file,"wb")) ) { + ShowError("export-dialog: failed to open '%s' for writing\n",script->lang_export_file); + } + + runflag = CORE_ST_STOP; + return true; +} + /** * Defines the local command line arguments */ @@ -5837,6 +5857,7 @@ void cmdline_args_init_local(void) CMDLINEARG_DEF2(log-config, logconfig, "Alternative logging configuration.", CMDLINE_OPT_NORMAL|CMDLINE_OPT_PARAM); CMDLINEARG_DEF2(script-check, scriptcheck, "Doesn't run the server, only tests the scripts passed through --load-script.", CMDLINE_OPT_SILENT); CMDLINEARG_DEF2(load-script, loadscript, "Loads an additional script (can be repeated).", CMDLINE_OPT_NORMAL|CMDLINE_OPT_PARAM); + CMDLINEARG_DEF2(generate-translations, generatetranslations, "Creates './generated_translations.pot' file with all translateable strings from scripts, server terminates afterwards.", CMDLINE_OPT_NORMAL); } int do_init(int argc, char *argv[]) @@ -6087,6 +6108,7 @@ void map_defaults(void) { sprintf(map->server_pw,"ragnarok"); sprintf(map->server_db,"ragnarok"); map->mysql_handle = NULL; + map->default_lang_str[0] = '\0'; map->cpsd_active = false; diff --git a/src/map/map.h b/src/map/map.h index da69bacee..26aac7720 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -867,6 +867,8 @@ struct map_interface { char npc_market_data_db[32]; char default_codepage[32]; + char default_lang_str[64]; + uint8 default_lang_id; int server_port; char server_ip[32]; diff --git a/src/map/mob.c b/src/map/mob.c index d8898619c..8a8e96508 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -1311,7 +1311,7 @@ int mob_unlocktarget(struct mob_data *md, int64 tick) { md->ud.target_to = 0; unit->set_target(&md->ud, 0); } - if(map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) { + if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) { unit->walktoxy(&md->bl, md->bl.x, md->bl.y, 8); } @@ -2074,11 +2074,6 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) { } } #endif - - if( md->special_state.ai == 2 ) {//LOne WOlf explained that ANYONE can trigger the marine countdown skill. [Skotlex] - md->state.alchemist = 1; - mob->skill_use(md, timer->gettick(), MSC_ALCHEMIST); - } } /*========================================== @@ -3307,6 +3302,11 @@ int mobskill_event(struct mob_data *md, struct block_list *src, int64 tick, int if(md->bl.prev == NULL || md->status.hp <= 0) return 0; + if( md->special_state.ai == 2 ) {//LOne WOlf explained that ANYONE can trigger the marine countdown skill. [Skotlex] + md->state.alchemist = 1; + return mob->skill_use(md, timer->gettick(), MSC_ALCHEMIST); + } + target_id = md->target_id; if (!target_id || battle_config.mob_changetarget_byskill) md->target_id = src->id; diff --git a/src/map/npc.c b/src/map/npc.c index 6cc192f66..16789b726 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -1175,17 +1175,17 @@ void run_tomb(struct map_session_data* sd, struct npc_data* nd) { strftime(time, sizeof(time), "%H:%M", localtime(&nd->u.tomb.kill_time)); // TODO: Find exact color? - snprintf(buffer, sizeof(buffer), msg_txt(857), nd->u.tomb.md->db->name); // "[ ^EE0000%s^000000 ]" + snprintf(buffer, sizeof(buffer), msg_sd(sd,857), nd->u.tomb.md->db->name); // "[ ^EE0000%s^000000 ]" clif->scriptmes(sd, nd->bl.id, buffer); - clif->scriptmes(sd, nd->bl.id, msg_txt(858)); // "Has met its demise" + clif->scriptmes(sd, nd->bl.id, msg_sd(sd,858)); // "Has met its demise" - snprintf(buffer, sizeof(buffer), msg_txt(859), time); // "Time of death : ^EE0000%s^000000" + snprintf(buffer, sizeof(buffer), msg_sd(sd,859), time); // "Time of death : ^EE0000%s^000000" clif->scriptmes(sd, nd->bl.id, buffer); - clif->scriptmes(sd, nd->bl.id, msg_txt(860)); // "Defeated by" + clif->scriptmes(sd, nd->bl.id, msg_sd(sd,860)); // "Defeated by" - snprintf(buffer, sizeof(buffer), msg_txt(861), nd->u.tomb.killer_name[0] ? nd->u.tomb.killer_name : msg_txt(15)); // "[^EE0000%s^000000]" / "Unknown" + snprintf(buffer, sizeof(buffer), msg_sd(sd,861), nd->u.tomb.killer_name[0] ? nd->u.tomb.killer_name : msg_sd(sd,15)); // "[^EE0000%s^000000]" / "Unknown" clif->scriptmes(sd, nd->bl.id, buffer); clif->scriptclose(sd, nd->bl.id); @@ -1566,7 +1566,7 @@ bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd) { /* nothing to display, no items available */ if( i == nd->u.scr.shop->items ) { - clif->colormes(sd->fd,COLOR_RED, msg_txt(881)); + clif->colormes(sd->fd,COLOR_RED, msg_sd(sd,881)); return false; } @@ -2924,7 +2924,13 @@ const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, const char* if( end == NULL ) return NULL;// (simple) parse error, don't continue + + script->parser_current_npc_name = w3; + scriptroot = script->parse(script_start, filepath, strline(buffer,script_start-buffer), SCRIPT_USE_LABEL_DB, retval); + + script->parser_current_npc_name = NULL; + label_list = NULL; label_list_num = 0; if( script->label_count ) { @@ -3435,7 +3441,12 @@ const char* npc_parse_function(char* w1, char* w2, char* w3, char* w4, const cha if( end == NULL ) return NULL;// (simple) parse error, don't continue + script->parser_current_npc_name = w3; + scriptroot = script->parse(script_start, filepath, strline(buffer,start-buffer), SCRIPT_RETURN_EMPTY_SCRIPT, retval); + + script->parser_current_npc_name = NULL; + if( scriptroot == NULL )// parse error, continue return end; @@ -4611,6 +4622,11 @@ int do_init_npc(bool minimal) { timer->add_func_list(npc->event_do_clock,"npc_event_do_clock"); timer->add_func_list(npc->timerevent,"npc_timerevent"); } + + if( script->lang_export_fp ) { + fclose(script->lang_export_fp); + script->lang_export_fp = NULL; + } // Init dummy NPC npc->fake_nd = (struct npc_data *)aCalloc(1,sizeof(struct npc_data)); diff --git a/src/map/party.c b/src/map/party.c index f2071de12..fb738a12b 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -338,7 +338,7 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd) ARR_FIND(0, MAX_PARTY, i, p->data[i].sd == sd); if( i == MAX_PARTY || !p->party.member[i].leader ) { - clif->message(sd->fd, msg_txt(282)); + clif->message(sd->fd, msg_sd(sd,282)); return 0; } @@ -352,7 +352,7 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd) // confirm whether the account has the ability to invite before checking the player if( !pc_has_permission(sd, PC_PERM_PARTY) || (tsd && !pc_has_permission(tsd, PC_PERM_PARTY)) ) { - clif->message(sd->fd, msg_txt(81)); // "Your GM level doesn't authorize you to preform this action on the specified player." + clif->message(sd->fd, msg_sd(sd,81)); // "Your GM level doesn't authorize you to preform this action on the specified player." return 0; } @@ -660,12 +660,12 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts return false; if (!tsd || tsd->status.party_id != sd->status.party_id) { - clif->message(sd->fd, msg_txt(283)); + clif->message(sd->fd, msg_sd(sd,283)); return false; } if( map->list[sd->bl.m].flag.partylock ) { - clif->message(sd->fd, msg_txt(287)); + clif->message(sd->fd, msg_sd(sd,287)); return false; } @@ -678,7 +678,7 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts if (!p->party.member[mi].leader) { //Need to be a party leader. - clif->message(sd->fd, msg_txt(282)); + clif->message(sd->fd, msg_sd(sd,282)); return false; } diff --git a/src/map/pc.c b/src/map/pc.c index f41665fad..3d5e240f8 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -904,7 +904,8 @@ int pc_isequip(struct map_session_data *sd,int n) return 0; if ( item->equip & EQP_AMMO ) { - if ( !pc_iscarton(sd) && (sd->status.class_ == JOB_GENETIC_T || sd->status.class_ == JOB_GENETIC) ) { + if ( (sd->state.active && !pc_iscarton(sd)) // check if sc data is already loaded. + && (sd->status.class_ == JOB_GENETIC_T || sd->status.class_ == JOB_GENETIC) ) { clif->msg(sd, 0x5EF); return 0; } @@ -1132,6 +1133,8 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim sd->vars_ok = false; sd->vars_received = 0x0; + sd->lang_id = map->default_lang_id; + //warp player if ((i=pc->setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, CLR_OUTSIGHT)) != 0) { ShowError ("Last_point_map %s - id %d not found (error code %d)\n", mapindex_id2name(sd->status.last_point.map), sd->status.last_point.map, i); @@ -1163,7 +1166,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim if (battle_config.display_version == 1) { char buf[256]; - sprintf(buf, msg_txt(1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts) + sprintf(buf, msg_sd(sd,1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts) clif->message(sd->fd, buf); } @@ -1339,7 +1342,7 @@ int pc_reg_received(struct map_session_data *sd) if (pc_isinvisible(sd)) { sd->vd.class_ = INVISIBLE_CLASS; - clif->message(sd->fd, msg_txt(11)); // Invisible: On + clif->message(sd->fd, msg_sd(sd,11)); // Invisible: On // decrement the number of pvp players on the map map->list[sd->bl.m].users_pvp--; @@ -1502,8 +1505,15 @@ int pc_calc_skilltree(struct map_session_data *sd) } } } - if( sd->status.job_level < pc->skill_tree[c][i].joblv ) - f = 0; // job level requirement wasn't satisfied + if ( sd->status.job_level < pc->skill_tree[c][i].joblv ) { + int x = pc->mapid2jobid(sd->class_, sd->status.sex); // need to get its own skilltree + if ( x > -1 ) { + x = pc->class2idx(x); + if ( !pc->skill_tree[x][i].inherited ) + f = 0; // job level requirement wasn't satisfied + } else + f = 0; + } } if( f ) { int inf2; @@ -1597,8 +1607,16 @@ void pc_check_skilltree(struct map_session_data *sd, int skill_id) } if( !f ) continue; - if( sd->status.job_level < pc->skill_tree[c][i].joblv ) - continue; + + if ( sd->status.job_level < pc->skill_tree[c][i].joblv ) { + int x = pc->mapid2jobid(sd->class_, sd->status.sex); // need to get its own skilltree + if ( x > -1 ) { + x = pc->class2idx(x); + if ( !pc->skill_tree[x][i].inherited ) + continue; + } else + continue; + } j = skill->db[idx].inf2; if( !sd->status.skill[idx].lv && ( @@ -3850,7 +3868,7 @@ int pc_paycash(struct map_session_data *sd, int price, int points) if( battle_config.cashshop_show_points ) { char output[128]; - sprintf(output, msg_txt(504), points, cash, sd->kafraPoints, sd->cashPoints); + sprintf(output, msg_sd(sd,504), points, cash, sd->kafraPoints, sd->cashPoints); clif_disp_onlyself(sd, output, strlen(output)); } return cash+points; @@ -3875,7 +3893,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points) if( battle_config.cashshop_show_points ) { - sprintf(output, msg_txt(505), cash, sd->cashPoints); + sprintf(output, msg_sd(sd,505), cash, sd->cashPoints); clif_disp_onlyself(sd, output, strlen(output)); } return cash; @@ -3898,7 +3916,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points) if( battle_config.cashshop_show_points ) { - sprintf(output, msg_txt(506), points, sd->kafraPoints); + sprintf(output, msg_sd(sd,506), points, sd->kafraPoints); clif_disp_onlyself(sd, output, strlen(output)); } return points; @@ -4141,13 +4159,13 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount) return 0; if( map->list[sd->bl.m].flag.nodrop ) { - clif->message (sd->fd, msg_txt(271)); + clif->message (sd->fd, msg_sd(sd,271)); return 0; //Can't drop items in nodrop mapflag maps. } if( !pc->candrop(sd,&sd->status.inventory[n]) ) { - clif->message (sd->fd, msg_txt(263)); + clif->message (sd->fd, msg_sd(sd,263)); return 0; } @@ -4256,7 +4274,7 @@ int pc_isUseitem(struct map_session_data *sd,int n) } if (sd->state.storage_flag && item->type != IT_CASH) { - clif->colormes(sd->fd, COLOR_RED, msg_txt(1475)); + clif->colormes(sd->fd, COLOR_RED, msg_sd(sd,1475)); return 0; // You cannot use this item while storage is open. } @@ -4285,7 +4303,7 @@ int pc_isUseitem(struct map_session_data *sd,int n) case ITEMID_WOB_LOCAL: // Blue Butterfly Wing case ITEMID_SIEGE_TELEPORT_SCROLL: if( sd->duel_group && !battle_config.duel_allow_teleport ) { - clif->message(sd->fd, msg_txt(863)); // "Duel: Can't use this item in duel." + clif->message(sd->fd, msg_sd(sd,863)); // "Duel: Can't use this item in duel." return 0; } if( nameid != ITEMID_WING_OF_FLY && nameid != ITEMID_GIANT_FLY_WING && map->list[sd->bl.m].flag.noreturn ) @@ -4360,7 +4378,7 @@ int pc_isUseitem(struct map_session_data *sd,int n) return 0; } if( !pc->inventoryblank(sd) ) { - clif->colormes(sd->fd,COLOR_RED,msg_txt(1477)); + clif->colormes(sd->fd,COLOR_RED,msg_sd(sd,1477)); return 0; } } @@ -4591,7 +4609,7 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun if (!itemdb_cancartstore(item_data, pc_get_group_level(sd)) || (item_data->bound > IBT_ACCOUNT && !pc_can_give_bound_items(sd))) { // Check item trade restrictions - clif->message (sd->fd, msg_txt(264)); + clif->message (sd->fd, msg_sd(sd,264)); return 1;/* TODO: there is no official response to this? */ } @@ -5039,7 +5057,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int sd->regen.state.gc = 0; // make sure vending is allowed here if (sd->state.vending && map->list[m].flag.novending) { - clif->message (sd->fd, msg_txt(276)); // "You can't open a shop on this map" + clif->message (sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map" vending->close(sd); } @@ -5086,7 +5104,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int } if (sd->state.vending && map->getcell(m,x,y,CELL_CHKNOVENDING)) { - clif->message (sd->fd, msg_txt(204)); // "You can't open a shop on this cell." + clif->message (sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell." vending->close(sd); } @@ -10255,8 +10273,8 @@ void pc_read_skill_tree(void) { break; } else if ( pc->skill_tree[idx][a].id || ( pc->skill_tree[idx][a].id == NV_TRICKDEAD && ((pc->jobid2mapid(jnames[k].id)&(MAPID_BASEMASK|JOBL_2))!=MAPID_NOVICE) ) ) /* we skip trickdead for non-novices */ continue;/* skip */ - - memcpy(&pc->skill_tree[idx][a],&pc->skill_tree[fidx][f],sizeof(pc->skill_tree[fidx][f])); + memcpy(&pc->skill_tree[idx][a], &pc->skill_tree[fidx][f], sizeof(pc->skill_tree[fidx][f])); + pc->skill_tree[idx][a].inherited = 1; } } @@ -10579,7 +10597,7 @@ void pc_bank_withdraw(struct map_session_data *sd, int money) { return; } else if ( limit_check > MAX_ZENY ) { /* no official response for this scenario exists. */ - clif->colormes(sd->fd,COLOR_RED,msg_txt(1482)); + clif->colormes(sd->fd,COLOR_RED,msg_sd(sd,1482)); return; } @@ -10600,7 +10618,7 @@ void pc_scdata_received(struct map_session_data *sd) { if (sd->expiration_time != 0) { // don't display if it's unlimited or unknow value time_t exp_time = sd->expiration_time; char tmpstr[1024]; - strftime(tmpstr, sizeof(tmpstr) - 1, msg_txt(501), localtime(&exp_time)); // "Your account time limit is: %d-%m-%Y %H:%M:%S." + strftime(tmpstr, sizeof(tmpstr) - 1, msg_sd(sd,501), localtime(&exp_time)); // "Your account time limit is: %d-%m-%Y %H:%M:%S." clif->wis_message(sd->fd, map->wisp_server_name, tmpstr, strlen(tmpstr)+1); pc->expire_check(sd); diff --git a/src/map/pc.h b/src/map/pc.h index f6b6329b4..56380447e 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -550,6 +550,8 @@ struct map_session_data { bool claimPrize; } roulette; + uint8 lang_id; + // temporary debugging of bug #3504 const char* delunit_prevfile; int delunit_prevline; @@ -684,6 +686,7 @@ struct skill_tree_entry { unsigned short idx; unsigned char max; unsigned char joblv; + short inherited; struct { short id; unsigned short idx; diff --git a/src/map/pet.c b/src/map/pet.c index f78a4a488..b37d3c350 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -602,7 +602,7 @@ int pet_menu(struct map_session_data *sd,int menunum) egg_id = itemdb->exists(sd->pd->petDB->EggID); if (egg_id) { if ((egg_id->flag.trade_restriction&ITR_NODROP) && !pc->inventoryblank(sd)) { - clif->message(sd->fd, msg_txt(451)); // You can't return your pet because your inventory is full. + clif->message(sd->fd, msg_sd(sd,451)); // You can't return your pet because your inventory is full. return 1; } } @@ -653,7 +653,7 @@ int pet_change_name_ack(struct map_session_data *sd, char* name, int flag) normalize_name(name," ");//bugreport:3032 if ( !flag || !strlen(name) ) { - clif->message(sd->fd, msg_txt(280)); // You cannot use this name for your pet. + clif->message(sd->fd, msg_sd(sd,280)); // You cannot use this name for your pet. clif->send_petstatus(sd); //Send status so client knows oet name change got rejected. return 0; } diff --git a/src/map/script.c b/src/map/script.c index a0b9f80cc..235b7b8d5 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -62,6 +62,8 @@ #include <sys/time.h> #endif +struct script_interface script_s; + static inline int GETVALUE(const unsigned char* buf, int i) { return (int)MakeDWord(MakeWord(buf[i], buf[i+1]), MakeWord(buf[i+2], 0)); } @@ -71,7 +73,29 @@ static inline void SETVALUE(unsigned char* buf, int i, int n) { buf[i+2] = GetByte(n, 2); } -struct script_interface script_s; +static inline void script_string_buf_ensure(struct script_string_buf *buf, size_t ensure) { + if( buf->pos+ensure >= buf->size ) { + do { + buf->size += 512; + } while ( buf->pos+ensure >= buf->size ); + RECREATE(buf->ptr, char, buf->size); + } +} + +static inline void script_string_buf_addb(struct script_string_buf *buf,uint8 b) { + if( buf->pos+1 >= buf->size ) { + buf->size += 512; + RECREATE(buf->ptr, char, buf->size); + } + + buf->ptr[buf->pos++] = b; +} + +static inline void script_string_buf_destroy(struct script_string_buf *buf) { + if( buf->ptr ) + aFree(buf->ptr); + memset(buf,0,sizeof(struct script_string_buf)); +} const char* script_op2name(int op) { #define RETURN_OP_NAME(type) case type: return #type @@ -91,6 +115,7 @@ const char* script_op2name(int op) { RETURN_OP_NAME(C_USERFUNC_POS); RETURN_OP_NAME(C_REF); + RETURN_OP_NAME(C_LSTR); // operators RETURN_OP_NAME(C_OP3); @@ -771,13 +796,30 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom) char *arg = NULL; char null_arg = '\0'; int func; + bool nested_call = false, macro = false; // is need add check for arg null pointer below? func = script->add_word(p); if( script->str_data[func].type == C_FUNC ) { - // buildin function - script->addl(func); - script->addc(C_ARG); + /** only when unset (-1), valid values are >= 0 **/ + if( script->syntax.last_func == -1 ) + script->syntax.last_func = script->str_data[func].val; + else { //Nested function call + script->syntax.nested_call++; + nested_call = true; + + if( script->str_data[func].val == script->buildin_lang_macro_offset ) { + script->syntax.lang_macro_active = true; + macro = true; + } + } + + if( !macro ) { + // buildin function + script->addl(func); + script->addc(C_ARG); + } + arg = script->buildin[script->str_data[func].val]; if (script->str_data[func].deprecated) DeprecationWarning(p); @@ -861,8 +903,19 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom) if( *p != ')' ) disp_error_message("parse_callfunc: expected ')' to close argument list",p); ++p; + + if( script->str_data[func].val == script->buildin_lang_macro_offset ) + script->syntax.lang_macro_active = false; } - script->addc(C_FUNC); + + if( nested_call ) + script->syntax.nested_call--; + + if( !script->syntax.nested_call ) + script->syntax.last_func = -1; + + if( !macro ) + script->addc(C_FUNC); return p; } @@ -1090,6 +1143,24 @@ bool is_number(const char *p) { return false; } +/** + * + **/ +int script_string_dup(char *str) { + size_t len = strlen(str); + int pos = script->string_list_pos; + + while( pos+len+1 >= script->string_list_size ) { + script->string_list_size += (1024*1024)/2; + RECREATE(script->string_list,char,script->string_list_size); + } + + safestrncpy(script->string_list+pos, str, len+1); + script->string_list_pos += len+1; + + return pos; +} + /*========================================== * Analysis section *------------------------------------------*/ @@ -1133,7 +1204,11 @@ const char* parse_simpleexpr(const char *p) script->addi((int)lli); // Cast is safe, as it's already been checked for overflows p=np; } else if(*p=='"') { - script->addc(C_STR); + struct string_translation *st = NULL; + const char *start_point = p; + bool duplicate = true; + struct script_string_buf *sbuf = &script->parse_simpleexpr_str; + do { p++; while( *p && *p != '"' ) { @@ -1144,19 +1219,121 @@ const char* parse_simpleexpr(const char *p) if( n != 1 ) ShowDebug("parse_simpleexpr: unexpected length %d after unescape (\"%.*s\" -> %.*s)\n", (int)n, (int)len, p, (int)n, buf); p += len; - script->addb(*buf); + script_string_buf_addb(sbuf, *buf); continue; } else if( *p == '\n' ) { disp_error_message("parse_simpleexpr: unexpected newline @ string",p); } - script->addb(*p++); + script_string_buf_addb(sbuf, *p++); } if(!*p) disp_error_message("parse_simpleexpr: unexpected end of file @ string",p); p++; //'"' p = script->skip_space(p); } while( *p && *p == '"' ); - script->addb(0); + + script_string_buf_addb(sbuf, 0); + + if( !(script->syntax.translation_db && (st = strdb_get(script->syntax.translation_db, sbuf->ptr))) ) { + script->addc(C_STR); + + if( script->pos+sbuf->pos >= script->size ) { + do { + script->size += SCRIPT_BLOCK_SIZE; + } while( script->pos+sbuf->pos >= script->size ); + RECREATE(script->buf,unsigned char,script->size); + } + + memcpy(script->buf+script->pos, sbuf->ptr, sbuf->pos); + script->pos += sbuf->pos; + + } else { + int expand = sizeof(int) + sizeof(uint8); + unsigned char j; + unsigned int st_cursor = 0; + + script->addc(C_LSTR); + + expand += (sizeof(char*) + sizeof(uint8)) * st->translations; + + while( script->pos+expand >= script->size ) { + script->size += SCRIPT_BLOCK_SIZE; + RECREATE(script->buf,unsigned char,script->size); + } + + *((int *)(&script->buf[script->pos])) = st->string_id; + *((uint8 *)(&script->buf[script->pos + sizeof(int)])) = st->translations; + + script->pos += sizeof(int) + sizeof(uint8); + + for(j = 0; j < st->translations; j++) { + *((uint8 *)(&script->buf[script->pos])) = RBUFB(st->buf, st_cursor); + *((char **)(&script->buf[script->pos+sizeof(uint8)])) = &st->buf[st_cursor + sizeof(uint8)]; + script->pos += sizeof(char*) + sizeof(uint8); + st_cursor += sizeof(uint8); + while(st->buf[st_cursor++]); + st_cursor += sizeof(uint8); + } + } + + /* When exporting we don't know what is a translation and what isn't */ + if( script->lang_export_fp && sbuf->pos > 1 ) {//sbuf->pos will always be at least 1 because of the '\0' + if( !script->syntax.strings ) { + script->syntax.strings = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_ALLOW_NULL_DATA, 0); + } + + if( !strdb_exists(script->syntax.strings,sbuf->ptr) ) { + strdb_put(script->syntax.strings, sbuf->ptr, NULL); + duplicate = false; + } + } + + if( script->lang_export_fp && !duplicate && + ( ( ( script->syntax.last_func == script->buildin_mes_offset || + script->syntax.last_func == script->buildin_select_offset ) && !script->syntax.nested_call + ) || script->syntax.lang_macro_active ) ) { + const char *line_start = start_point; + const char *line_end = start_point; + struct script_string_buf *lbuf = &script->lang_export_line_buf; + size_t line_length; + + while( line_start > script->parser_current_src ) { + if( *line_start != '\n' ) + line_start--; + else + break; + } + + while( *line_end != '\n' && *line_end != '\0' ) + line_end++; + + line_length = (size_t)(line_end - line_start); + + if( line_length > 0 ) { + script_string_buf_ensure(lbuf,line_length + 1); + + memcpy(lbuf->ptr, line_start, line_length); + lbuf->pos = line_length; + script_string_buf_addb(lbuf, 0); + + normalize_name(lbuf->ptr, "\r\n\t "); + } + + fprintf(script->lang_export_fp, "#: %s\n" + "# %s\n" + "msgctxt \"%s\"\n" + "msgid \"%s\"\n" + "msgstr \"\"\n", + script->parser_current_file ? script->parser_current_file : "Unknown File", + lbuf->ptr, + script->parser_current_npc_name ? script->parser_current_npc_name : "Unknown NPC", + sbuf->ptr + ); + + lbuf->pos = 0; + } + + sbuf->pos = 0; } else { int l; const char* pv; @@ -1322,8 +1499,15 @@ const char* parse_line(const char* p) // attempt to process a variable assignment p2 = script->parse_variable(p); - if( p2 != NULL ) - {// variable assignment processed so leave the method + if (p2 != NULL) { + // variable assignment processed so leave the method + if (script->parse_syntax_for_flag) { + if (*p2 != ')') + disp_error_message("parse_line: need ')'", p2); + } else { + if (*p2 != ';') + disp_error_message("parse_line: need ';'", p2); + } return script->parse_syntax_close(p2 + 1); } @@ -2227,11 +2411,27 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o if( src == NULL ) return NULL;// empty script + if( script->parse_cleanup_timer_id == INVALID_TIMER ) { + script->parse_cleanup_timer_id = timer->add(timer->gettick() + 10, script->parse_cleanup_timer, 0, 0); + } + + if( script->syntax.strings ) /* used only when generating translation file */ + db_destroy(script->syntax.strings); + memset(&script->syntax,0,sizeof(script->syntax)); + script->syntax.last_func = -1;/* as valid values are >= 0 */ + if( script->parser_current_npc_name ) { + if( !script->translation_db ) + script->load_translations(); + if( script->translation_db ) + script->syntax.translation_db = strdb_get(script->translation_db, script->parser_current_npc_name); + } - script->buf=(unsigned char *)aMalloc(SCRIPT_BLOCK_SIZE*sizeof(unsigned char)); + if( !script->buf ) { + script->buf = (unsigned char *)aMalloc(SCRIPT_BLOCK_SIZE*sizeof(unsigned char)); + script->size = SCRIPT_BLOCK_SIZE; + } script->pos=0; - script->size=SCRIPT_BLOCK_SIZE; script->parse_nextline(true, NULL); // who called parse_script is responsible for clearing the database after using it, but just in case... lets clear it here @@ -2245,10 +2445,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o if( script->error_report ) script->error(src,file,line,script->error_msg,script->error_pos); aFree( script->error_msg ); - aFree( script->buf ); script->pos = 0; - script->size = 0; - script->buf = NULL; for(i=LABEL_START;i<script->str_num;i++) if(script->str_data[i].type == C_NOP) script->str_data[i].type = C_NAME; for(i=0; i<size; i++) @@ -2270,10 +2467,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o {// does not require brackets around the script if( *p == '\0' && !(options&SCRIPT_RETURN_EMPTY_SCRIPT) ) {// empty script and can return NULL - aFree( script->buf ); script->pos = 0; - script->size = 0; - script->buf = NULL; #ifdef ENABLE_CASE_CHECK script->local_casecheck.clear(); script->parser_current_src = NULL; @@ -2293,10 +2487,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o p = script->skip_space(p+1); if( *p == '}' && !(options&SCRIPT_RETURN_EMPTY_SCRIPT) ) {// empty script and can return NULL - aFree( script->buf ); script->pos = 0; - script->size = 0; - script->buf = NULL; #ifdef ENABLE_CASE_CHECK script->local_casecheck.clear(); script->parser_current_src = NULL; @@ -2345,10 +2536,6 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o script->addc(C_NOP); - // trim code to size - script->size = script->pos; - RECREATE(script->buf,unsigned char,script->pos); - // default unknown references to variables for (i = LABEL_START; i < script->str_num; i++) { if (script->str_data[i].type == C_NOP) { @@ -2382,40 +2569,40 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o ShowMessage("\n"); #endif #ifdef SCRIPT_DEBUG_DISASM - { - int i = 0,j; - while(i < script->pos) { - c_op op = script->get_com(script->buf,&i); - - ShowMessage("%06x %s", i, script->op2name(op)); - j = i; - switch(op) { - case C_INT: - ShowMessage(" %d", script->get_num(script->buf,&i)); - break; - case C_POS: - ShowMessage(" 0x%06x", *(int*)(script->buf+i)&0xffffff); - i += 3; - break; - case C_NAME: - j = (*(int*)(script->buf+i)&0xffffff); - ShowMessage(" %s", ( j == 0xffffff ) ? "?? unknown ??" : script->get_str(j)); - i += 3; - break; - case C_STR: - j = strlen((char*)script->buf + i); - ShowMessage(" %s", script->buf + i); - i += j+1; - break; - } - ShowMessage(CL_CLL"\n"); + i = 0; + while(i < script->pos) { + int j = i; + c_op op = script->get_com(script->buf,&i); + + ShowMessage("%06x %s", i, script->op2name(op)); + j = i; + switch(op) { + case C_INT: + ShowMessage(" %d", script->get_num(script->buf,&i)); + break; + case C_POS: + ShowMessage(" 0x%06x", *(int*)(script->buf+i)&0xffffff); + i += 3; + break; + case C_NAME: + j = (*(int*)(script->buf+i)&0xffffff); + ShowMessage(" %s", ( j == 0xffffff ) ? "?? unknown ??" : script->get_str(j)); + i += 3; + break; + case C_STR: + j = (int)strlen((char*)script->buf + i); + ShowMessage(" %s", script->buf + i); + i += j+1; + break; } + ShowMessage(CL_CLL"\n"); } #endif CREATE(code,struct script_code,1); - code->script_buf = script->buf; - code->script_size = script->size; + code->script_buf = (unsigned char *)aMalloc(script->pos*sizeof(unsigned char)); + memcpy(code->script_buf, script->buf, script->pos); + code->script_size = script->pos; code->local.vars = NULL; code->local.arrays = NULL; #ifdef ENABLE_CASE_CHECK @@ -4008,6 +4195,36 @@ void run_script_main(struct script_state *st) { script->push_str(stack,C_CONSTSTR,(char*)(st->script->script_buf+st->pos)); while(st->script->script_buf[st->pos++]); break; + case C_LSTR: + { + int string_id = *((int *)(&st->script->script_buf[st->pos])); + uint8 translations = *((uint8 *)(&st->script->script_buf[st->pos+sizeof(int)])); + struct map_session_data *lsd = NULL; + + st->pos += sizeof(int) + sizeof(uint8); + + if( (!st->rid || !(lsd = map->id2sd(st->rid)) || !lsd->lang_id) && !map->default_lang_id ) + script->push_str(stack,C_CONSTSTR,script->string_list+string_id); + else { + uint8 k, wlang_id = lsd ? lsd->lang_id : map->default_lang_id; + int offset = st->pos; + + for(k = 0; k < translations; k++) { + uint8 lang_id = *(uint8 *)(&st->script->script_buf[offset]); + offset += sizeof(uint8); + if( lang_id == wlang_id ) + break; + offset += sizeof(char*); + } + + script->push_str(stack,C_CONSTSTR, + ( k == translations ) ? script->string_list+string_id : *(char**)(&st->script->script_buf[offset]) ); + + } + + st->pos += ( ( sizeof(char*) + sizeof(uint8) ) * translations ); + } + break; case C_FUNC: script->run_func(st); if(st->state==GOTO) { @@ -4424,11 +4641,365 @@ void do_final_script(void) { if( script->generic_ui_array ) aFree(script->generic_ui_array); + + script->clear_translations(false); + + script->parser_clean_leftovers(); + + if( script->lang_export_file ) + aFree(script->lang_export_file); +} + +/** + * + **/ +uint8 script_add_language(const char *name) { + uint8 lang_id = script->max_lang_id; + + RECREATE(script->languages, char *, ++script->max_lang_id); + + script->languages[lang_id] = aStrdup(name); + + return lang_id; +} +/** + * Goes thru db/translations.conf file + **/ +void script_load_translations(void) { + config_t translations_conf; + const char *config_filename = "db/translations.conf"; // FIXME hardcoded name + config_setting_t *translations = NULL; + int i, size; + uint32 total = 0; + uint8 lang_id = 0, k; + + if (map->minimal) // No translations in minimal mode + return; + + script->translation_db = strdb_alloc(DB_OPT_DUP_KEY, NAME_LENGTH*2+1); + + if( script->languages ) { + for(i = 0; i < script->max_lang_id; i++) + aFree(script->languages[i]); + aFree(script->languages); + } + script->languages = NULL; + script->max_lang_id = 0; + + script->add_language("English");/* 0 is default, which is whatever is in the npc files hardcoded (in our case, English) */ + + if (libconfig->read_file(&translations_conf, config_filename)) { + ShowError("load_translations: can't read '%s'\n", config_filename); + return; + } + + if( !(translations = libconfig->lookup(&translations_conf, "translations")) ) { + ShowError("load_translations: invalid format on '%s'\n",config_filename); + return; + } + + if( script->string_list ) + aFree(script->string_list); + + script->string_list = NULL; + script->string_list_pos = 0; + script->string_list_size = 0; + + size = libconfig->setting_length(translations); + + for(i = 0; i < size; i++) { + const char *translation_file = libconfig->setting_get_string_elem(translations, i); + + script->load_translation(translation_file, ++lang_id, &total); + } + + if( total ) { + DBIterator *main_iter; + DBIterator *sub_iter; + DBMap *string_db; + struct string_translation *st = NULL; + uint32 j = 0; + + + CREATE(script->translation_buf, char *, total); + script->translation_buf_size = total; + + main_iter = db_iterator(script->translation_db); + + for( string_db = dbi_first(main_iter); dbi_exists(main_iter); string_db = dbi_next(main_iter) ) { + sub_iter = db_iterator(string_db); + + for( st = dbi_first(sub_iter); dbi_exists(sub_iter); st = dbi_next(sub_iter) ) { + script->translation_buf[j++] = st->buf; + } + + dbi_destroy(sub_iter); + } + + dbi_destroy(main_iter); + } + + for(k = 0; k < script->max_lang_id; k++) { + if( !strcmpi(script->languages[k],map->default_lang_str) ) { + break; + } + } + + if( k == script->max_lang_id ) { + ShowError("load_translations: map server default_language setting '%s' is not a loaded language\n",map->default_lang_str); + map->default_lang_id = 0; + } else { + map->default_lang_id = k; + } +} + +/** + * + **/ +const char * script_get_translation_file_name(const char *file) { + static char file_name[200]; + int i, len = (int)strlen(file), last_bar = -1, last_dot = -1; + + for(i = 0; i < len; i++) { + if( file[i] == '/' || file[i] == '\\' ) + last_bar = i; + else if ( file[i] == '.' ) + last_dot = i; + } + + if( last_bar != -1 || last_dot != -1 ) { + if( last_bar != -1 && last_dot < last_bar ) + last_dot = -1; + safestrncpy(file_name, file+(last_bar >= 0 ? last_bar+1 : 0), ( last_dot >= 0 ? ( last_bar >= 0 ? last_dot - last_bar : last_dot ) : sizeof(file_name) )); + return file_name; + } + + return file; +} + +/** + * Parses a individual translation file + **/ +void script_load_translation(const char *file, uint8 lang_id, uint32 *total) { + uint32 translations = 0; + char line[1024]; + char msgctxt[NAME_LENGTH*2+1] = { 0 }; + DBMap *string_db; + size_t i; + FILE *fp; + struct script_string_buf msgid = { 0 }, msgstr = { 0 }; + + if( !(fp = fopen(file,"rb")) ) { + ShowError("load_translation: failed to open '%s' for reading\n",file); + return; + } + + script->add_language(script->get_translation_file_name(file)); + if( lang_id >= atcommand->max_message_table ) + atcommand->expand_message_table(); + + while(fgets(line, sizeof(line), fp)) { + size_t len = strlen(line), cursor = 0; + + if( len <= 1 ) + continue; + + if( line[0] == '#' ) + continue; + + if( strncasecmp(line,"msgctxt \"", 9) == 0 ) { + for(i = 9; i < len - 2; i++) { + if( line[i] == '\\' && line[i+1] == '"' ) { + msgctxt[cursor] = '"'; + i++; + } else + msgctxt[cursor] = line[i]; + if( ++cursor >= sizeof(msgctxt) - 1 ) + break; + } + msgctxt[cursor] = '\0'; + } else if ( strncasecmp(line, "msgid \"", 7) == 0 ) { + for(i = 7; i < len - 2; i++) { + if( line[i] == '\\' && line[i+1] == '"' ) { + script_string_buf_addb(&msgid, '"'); + i++; + } else + script_string_buf_addb(&msgid, line[i]); + } + script_string_buf_addb(&msgid,0); + } else if ( len > 9 && line[9] != '"' && strncasecmp(line, "msgstr \"",8) == 0 ) { + for(i = 8; i < len - 2; i++) { + if( line[i] == '\\' && line[i+1] == '"' ) { + script_string_buf_addb(&msgstr, '"'); + i++; + } else + script_string_buf_addb(&msgstr, line[i]); + } + script_string_buf_addb(&msgstr,0); + } + + if( msgctxt[0] && msgid.pos > 1 && msgstr.pos > 1 ) { + size_t msgstr_len = msgstr.pos; + unsigned int inner_len = 1 + (uint32)msgstr_len + 1; //uint8 lang_id + msgstr_len + '\0' + + if( strcasecmp(msgctxt, "messages.conf") == 0 ) { + int k; + + for(k = 0; k < MAX_MSG; k++) { + if( atcommand->msg_table[0][k] && strcmpi(atcommand->msg_table[0][k],msgid.ptr) == 0 ) { + if( atcommand->msg_table[lang_id][k] ) + aFree(atcommand->msg_table[lang_id][k]); + atcommand->msg_table[lang_id][k] = aStrdup(msgstr.ptr); + break; + } + } + + } else { + struct string_translation *st = NULL; + + if( !( string_db = strdb_get(script->translation_db, msgctxt) ) ) { + string_db = strdb_alloc(DB_OPT_DUP_KEY, 0); + + strdb_put(script->translation_db, msgctxt, string_db); + } + + if( !(st = strdb_get(string_db, msgid.ptr) ) ) { + CREATE(st, struct string_translation, 1); + + st->string_id = script->string_dup(msgid.ptr); + + strdb_put(string_db, msgid.ptr, st); + } + + RECREATE(st->buf, char, st->len + inner_len); + + WBUFB(st->buf, st->len) = lang_id; + safestrncpy((char*)WBUFP(st->buf, st->len + 1), msgstr.ptr, msgstr_len + 1); + + st->translations++; + st->len += inner_len; + } + + msgctxt[0] = '\0'; + msgid.pos = msgstr.pos = 0; + translations++; + } + } + + *total += translations; + + fclose(fp); + + script_string_buf_destroy(&msgid); + script_string_buf_destroy(&msgstr); + + ShowStatus("Done reading '"CL_WHITE"%u"CL_RESET"' translations in '"CL_WHITE"%s"CL_RESET"'.\n", translations, file); } + +/** + * + **/ +void script_clear_translations(bool reload) { + uint32 i; + + if( script->string_list ) + aFree(script->string_list); + + script->string_list = NULL; + script->string_list_pos = 0; + script->string_list_size = 0; + + if( script->translation_buf ) { + for(i = 0; i < script->translation_buf_size; i++) { + aFree(script->translation_buf[i]); + } + aFree(script->translation_buf); + } + + script->translation_buf = NULL; + script->translation_buf_size = 0; + + if( script->languages ) { + for(i = 0; i < script->max_lang_id; i++) + aFree(script->languages[i]); + aFree(script->languages); + } + script->languages = NULL; + script->max_lang_id = 0; + + if( script->translation_db ) { + script->translation_db->clear(script->translation_db,script->translation_db_destroyer); + } + + if( reload ) + script->load_translations(); +} + +/** + * + **/ +int script_translation_db_destroyer(DBKey key, DBData *data, va_list ap) { + DBMap *string_db = DB->data2ptr(data); + + if( db_size(string_db) ) { + DBIterator *iter = db_iterator(string_db); + struct string_translation *st = NULL; + + for( st = dbi_first(iter); dbi_exists(iter); st = dbi_next(iter) ) { + aFree(st); + } + + dbi_destroy(iter); + } + + db_destroy(string_db); + return 0; +} + +/** + * + **/ +void script_parser_clean_leftovers(void) { + + if( script->buf ) + aFree(script->buf); + + script->buf = NULL; + script->size = 0; + + if( script->translation_db ) { + script->translation_db->destroy(script->translation_db,script->translation_db_destroyer); + script->translation_db = NULL; + } + + if( script->syntax.strings ) { /* used only when generating translation file */ + db_destroy(script->syntax.strings); + script->syntax.strings = NULL; + } + + script_string_buf_destroy(&script->parse_simpleexpr_str); + script_string_buf_destroy(&script->lang_export_line_buf); +} + +/** + * Performs cleanup after all parsing is processed + **/ +int script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) { + + script->parser_clean_leftovers(); + + script->parse_cleanup_timer_id = INVALID_TIMER; + + return 0; +} + + /*========================================== * Initialization *------------------------------------------*/ void do_init_script(bool minimal) { + script->parse_cleanup_timer_id = INVALID_TIMER; + script->st_db = idb_alloc(DB_OPT_BASE); script->userfunc_db = strdb_alloc(DB_OPT_DUP_KEY,0); script->autobonus_db = strdb_alloc(DB_OPT_DUP_KEY,0); @@ -4448,6 +5019,8 @@ void do_init_script(bool minimal) { return; mapreg->init(); + + script->load_translations(); } int script_reload(void) { @@ -4480,6 +5053,13 @@ int script_reload(void) { atcommand->binding_count = 0; db_clear(script->st_db); + + script->clear_translations(true); + + if( script->parse_cleanup_timer_id != INVALID_TIMER ) { + timer->delete(script->parse_cleanup_timer_id,script->parse_cleanup_timer); + script->parse_cleanup_timer_id = INVALID_TIMER; + } mapreg->reload(); @@ -7994,12 +8574,14 @@ BUILDIN(delequip) if(i >= 0) { pc->unequipitem(sd,i,3); //recalculate bonus pc->delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); - script_pushint(st,1); - } else { - script_pushint(st,0); + return true; } + + ShowError("script:delequip: no item found in position '%d' for player '%s' (AID:%d/CID:%d).\n", num, sd->status.name,sd->status.account_id, sd->status.char_id); + st->state = END; + clif->scriptclose(sd, st->oid); - return true; + return false; } /*========================================== @@ -12977,7 +13559,7 @@ BUILDIN(recovery) status->revive(&sd->bl, 100, 100); else status_percent_heal(&sd->bl, 100, 100); - clif->message(sd->fd,msg_txt(880)); // "You have been recovered!" + clif->message(sd->fd,msg_sd(sd,880)); // "You have been recovered!" } mapit->free(iter); return true; @@ -18124,16 +18706,16 @@ BUILDIN(montransform) { return true; if( battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m) ) { - clif->message(sd->fd, msg_txt(1488)); // Transforming into monster is not allowed in Guild Wars. + clif->message(sd->fd, msg_sd(sd,1488)); // Transforming into monster is not allowed in Guild Wars. return true; } if( sd->disguise != -1 ) { - clif->message(sd->fd, msg_txt(1486)); // Cannot transform into monster while in disguise. + clif->message(sd->fd, msg_sd(sd,1486)); // Cannot transform into monster while in disguise. return true; } - sprintf(msg, msg_txt(1485), monster->name); // Traaaansformation-!! %s form!! + sprintf(msg, msg_sd(sd,1485), monster->name); // Traaaansformation-!! %s form!! clif->ShowScript(&sd->bl, msg); status_change_end(bl, SC_MONSTER_TRANSFORM, INVALID_TIMER); // Clear previous sc_start2(NULL, bl, SC_MONSTER_TRANSFORM, 100, mob_id, type, tick); @@ -19035,6 +19617,11 @@ BUILDIN(channelmes) return true; } +/** place holder for the translation macro **/ +BUILDIN(_) { + return true; +} + // declarations that were supposed to be exported from npc_chat.c #ifdef PCRE_SUPPORT BUILDIN(defpattern); @@ -19110,6 +19697,9 @@ bool script_add_builtin(const struct script_function *buildin, bool override) { else if( strcmp(buildin->name, "callsub") == 0 ) script->buildin_callsub_ref = n; else if( strcmp(buildin->name, "callfunc") == 0 ) script->buildin_callfunc_ref = n; else if( strcmp(buildin->name, "getelementofarray") == 0 ) script->buildin_getelementofarray_ref = n; + else if( strcmp(buildin->name, "mes") == 0 ) script->buildin_mes_offset = script->buildin_count; + else if( strcmp(buildin->name, "select") == 0 ) script->buildin_select_offset = script->buildin_count; + else if( strcmp(buildin->name, "_") == 0 ) script->buildin_lang_macro_offset = script->buildin_count; offset = script->buildin_count; @@ -19662,6 +20252,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(shopcount, "i"), BUILDIN_DEF(channelmes, "ss"), + BUILDIN_DEF(_,"s"), }; int i, len = ARRAYLENGTH(BUILDIN); RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up @@ -20038,5 +20629,14 @@ void script_defaults(void) { /* */ script->hardcoded_constants = script_hardcoded_constants; script->mapindexname2id = script_mapindexname2id; + script->string_dup = script_string_dup; + script->load_translations = script_load_translations; + script->load_translation = script_load_translation; + script->translation_db_destroyer = script_translation_db_destroyer; + script->clear_translations = script_clear_translations; + script->parse_cleanup_timer = script_parse_cleanup_timer; + script->add_language = script_add_language; + script->get_translation_file_name = script_get_translation_file_name; + script->parser_clean_leftovers = script_parser_clean_leftovers; } diff --git a/src/map/script.h b/src/map/script.h index ad63c1ad7..51bdf23b5 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -187,6 +187,7 @@ typedef enum c_op { C_USERFUNC, // internal script function C_USERFUNC_POS, // internal script function label C_REF, // the next call to c_op2 should push back a ref to the left operand + C_LSTR, //Language Str (struct script_code_str) // operators C_OP3, // a ? b : c @@ -464,6 +465,11 @@ struct script_syntax_data { } curly[256]; // Information right parenthesis int curly_count; // The number of right brackets int index; // Number of the syntax used in the script + int last_func; // buildin index of the last parsed function + unsigned int nested_call; //Dont really know what to call this + bool lang_macro_active; + DBMap *strings; // string map parsed (used when exporting strings only) + DBMap *translation_db; //non-null if this npc has any translated strings to be linked }; struct casecheck_data { @@ -485,6 +491,18 @@ struct script_array { unsigned int *members;/* member list */ }; +struct script_string_buf { + char *ptr; + size_t pos,size; +}; + +struct string_translation { + int string_id; + uint8 translations; + unsigned int len; + char *buf; +}; + /** * Interface **/ @@ -518,6 +536,10 @@ struct script_interface { /* */ char *word_buf; size_t word_size; + /* Script string storage */ + char *string_list; + int string_list_size; + int string_list_pos; /* */ unsigned short current_item_id; /* */ @@ -564,6 +586,27 @@ struct script_interface { /* */ unsigned int *generic_ui_array; unsigned int generic_ui_array_size; + /* Set during startup when attempting to export the lang, unset after server initialization is over */ + FILE *lang_export_fp; + char *lang_export_file;/* for lang_export_fp */ + /* set and unset on npc_parse_script */ + char *parser_current_npc_name; + /* */ + int buildin_mes_offset; + int buildin_select_offset; + int buildin_lang_macro_offset; + /* */ + DBMap *translation_db;/* npc_name => DBMap (strings) */ + char **translation_buf;/* */ + uint32 translation_buf_size; + /* */ + char **languages; + uint8 max_lang_id; + /* */ + struct script_string_buf parse_simpleexpr_str; + struct script_string_buf lang_export_line_buf; + /* */ + int parse_cleanup_timer_id; /* */ void (*init) (bool minimal); void (*final) (void); @@ -712,6 +755,15 @@ struct script_interface { /* */ void (*hardcoded_constants) (void); unsigned short (*mapindexname2id) (struct script_state *st, const char* name); + int (*string_dup) (char *str); + void (*load_translations) (void); + void (*load_translation) (const char *file, uint8 lang_id, uint32 *total); + int (*translation_db_destroyer) (DBKey key, DBData *data, va_list ap); + void (*clear_translations) (bool reload); + int (*parse_cleanup_timer) (int tid, int64 tick, int id, intptr_t data); + uint8 (*add_language) (const char *name); + const char *(*get_translation_file_name) (const char *file); + void (*parser_clean_leftovers) (void); }; struct script_interface *script; diff --git a/src/map/skill.c b/src/map/skill.c index c6ddd883d..88ca45ae5 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2213,7 +2213,7 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr } } - if( dmg.flag&BF_MAGIC && ( skill_id != NPC_EARTHQUAKE || (battle_config.eq_single_target_reflectable && (flag&0xFFF) == 1) ) ) { + if( dmg.flag&BF_MAGIC && ( (battle_config.eq_single_target_reflectable && (flag&0xFFF) == 1) ) ) { // Earthquake on multiple targets is not counted as a target skill. [Inkfish] if( (dmg.damage || dmg.damage2) && (type = skill->magic_reflect(src, bl, src==dsrc)) ) { //Magic reflection, switch caster/target @@ -3222,14 +3222,6 @@ int skill_timerskill(int tid, int64 tick, int id, intptr_t data) { case KN_AUTOCOUNTER: clif->skill_nodamage(src,target,skl->skill_id,skl->skill_lv,1); break; - case NPC_EARTHQUAKE: - if( skl->type > 1 ) - skill->addtimerskill(src,tick+250,src->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag); - skill->area_temp[0] = map->foreachinrange(skill->area_sub, src, skill->get_splash(skl->skill_id, skl->skill_lv), BL_CHAR, src, skl->skill_id, skl->skill_lv, tick, BCT_ENEMY, skill->area_sub_count); - skill->area_temp[1] = src->id; - skill->area_temp[2] = 0; - map->foreachinrange(skill->area_sub, src, skill->get_splash(skl->skill_id, skl->skill_lv), splash_target(src), src, skl->skill_id, skl->skill_lv, tick, skl->flag, skill->castend_damage_id); - break; case WZ_WATERBALL: skill->toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify if (!status->isdead(target)) @@ -3855,7 +3847,6 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1 case ASC_METEORASSAULT: case GS_DESPERADO: case GS_SPREADATTACK: - case NPC_EARTHQUAKE: case NPC_PULSESTRIKE: case NPC_HELLJUDGEMENT: case NPC_VAMPIRE_GIFT: @@ -3925,8 +3916,6 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1 case MH_XENO_SLASHER: clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); break; - case NPC_EARTHQUAKE://FIXME: Isn't EarthQuake a ground skill after all? - skill->addtimerskill(src,tick+250,src->id,0,0,skill_id,skill_lv,2,flag|BCT_ENEMY|SD_SPLASH|1); default: break; } @@ -5735,7 +5724,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); if (skill->break_equip(bl, EQP_WEAPON, 10000, BCT_PARTY) && sd && sd != dstsd) - clif->message(sd->fd, msg_txt(869)); // "You broke the target's weapon." + clif->message(sd->fd, msg_sd(sd,869)); // "You broke the target's weapon." } break; @@ -6157,7 +6146,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin { int sp = 0; if ( dstsd && dstsd->spiritball - && (sd == dstsd || map_flag_vs(src->m) || (sd->duel_group && sd->duel_group == dstsd->duel_group)) + && (sd == dstsd || map_flag_vs(src->m) || (sd && sd->duel_group && sd->duel_group == dstsd->duel_group)) && ((dstsd->class_&MAPID_BASEMASK) != MAPID_GUNSLINGER || (dstsd->class_&MAPID_UPPERMASK) != MAPID_REBELLION) ) { // split the if for readability, and included gunslingers in the check so that their coins cannot be removed [Reddozen] @@ -6242,7 +6231,6 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin /* Fall through */ case SR_EARTHSHAKER: case NC_INFRAREDSCAN: - case NPC_EARTHQUAKE: case NPC_VAMPIRE_GIFT: case NPC_HELLJUDGEMENT: case NPC_PULSESTRIKE: @@ -6679,7 +6667,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin break; } if(!battle_config.duel_allow_teleport && sd->duel_group && skill_lv <= 2) { // duel restriction [LuzZza] - char output[128]; sprintf(output, msg_txt(365), skill->get_name(AL_TELEPORT)); + char output[128]; sprintf(output, msg_sd(sd,365), skill->get_name(AL_TELEPORT)); clif->message(sd->fd, output); //"Duel: Can't use %s in duel." break; } @@ -10363,6 +10351,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui #ifdef RENEWAL case NJ_HUUMA: #endif + case NPC_EARTHQUAKE: case NPC_EVILLAND: case WL_COMET: case RA_ELECTRICSHOCKER: @@ -11399,6 +11388,9 @@ struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_ } } break; + case NPC_EARTHQUAKE: + clif->skill_damage(src, src, timer->gettick(), status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); + break; default: skill->unitsetting1_unknown(src, &skill_id, &skill_lv, &x, &y, &flag, &val1, &val2, &val3); break; @@ -11984,6 +11976,11 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6 } break; + case UNT_EARTHQUAKE: + skill->attack(BF_WEAPON, ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, + map->foreachinrange(skill->area_sub, &src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), BL_CHAR, &src->bl, sg->skill_id, sg->skill_lv, tick, BCT_ENEMY, skill->area_sub_count)); + break; + case UNT_FIREPILLAR_WAITING: skill->unitsetting(ss,sg->skill_id,sg->skill_lv,src->bl.x,src->bl.y,1); skill->delunit(src); @@ -13192,7 +13189,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id break; case AL_WARP: if(!battle_config.duel_allow_teleport && sd->duel_group) { // duel restriction [LuzZza] - char output[128]; sprintf(output, msg_txt(365), skill->get_name(AL_WARP)); + char output[128]; sprintf(output, msg_sd(sd,365), skill->get_name(AL_WARP)); clif->message(sd->fd, output); //"Duel: Can't use %s in duel." return 0; } diff --git a/src/map/skill.h b/src/map/skill.h index 31a268971..b598b91c8 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -1568,7 +1568,7 @@ enum { UNT_DEATHWAVE, //TODO UNT_WATERATTACK, //TODO UNT_WINDATTACK, //TODO - UNT_EARTHQUAKE, //TODO + UNT_EARTHQUAKE, UNT_EVILLAND, UNT_DARK_RUNNER, //TODO UNT_DARK_TRANSFER, //TODO diff --git a/src/map/status.c b/src/map/status.c index 3da0238c5..7985e58c6 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1258,11 +1258,11 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, } switch (target->type) { - case BL_PC: pc->damage((TBL_PC*)target,src,hp,sp); break; - case BL_MOB: mob->damage((TBL_MOB*)target, src, hp); break; - case BL_HOM: homun->damaged((TBL_HOM*)target); break; - case BL_MER: mercenary->heal((TBL_MER*)target,hp,sp); break; - case BL_ELEM: elemental->heal((TBL_ELEM*)target,hp,sp); break; + case BL_PC: pc->damage((TBL_PC*)target,src,hp,sp); break; + case BL_MOB: mob->damage((TBL_MOB*)target, src, hp); break; + case BL_HOM: homun->damaged((TBL_HOM*)target); break; + case BL_MER: mercenary->heal((TBL_MER*)target,hp,sp); break; + case BL_ELEM: elemental->heal((TBL_ELEM*)target,hp,sp); break; } if( src && target->type == BL_PC && (((TBL_PC*)target)->disguise) > 0 ) {// stop walking when attacked in disguise to prevent walk-delay bug @@ -1283,14 +1283,14 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, //&2: Also remove object from map. //&4: Also delete object from memory. switch (target->type) { - case BL_PC: flag = pc->dead((TBL_PC*)target,src); break; - case BL_MOB: flag = mob->dead((TBL_MOB*)target, src, (flag&4) ? 3 : 0); break; - case BL_HOM: flag = homun->dead((TBL_HOM*)target); break; - case BL_MER: flag = mercenary->dead((TBL_MER*)target); break; - case BL_ELEM: flag = elemental->dead((TBL_ELEM*)target); break; - default: //Unhandled case, do nothing to object. - flag = 0; - break; + case BL_PC: flag = pc->dead((TBL_PC*)target,src); break; + case BL_MOB: flag = mob->dead((TBL_MOB*)target, src, (flag&4) ? 3 : 0); break; + case BL_HOM: flag = homun->dead((TBL_HOM*)target); break; + case BL_MER: flag = mercenary->dead((TBL_MER*)target); break; + case BL_ELEM: flag = elemental->dead((TBL_ELEM*)target); break; + default: //Unhandled case, do nothing to object. + flag = 0; + break; } if(!flag) //Death canceled. @@ -3722,7 +3722,7 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) { #else amotion = (1000 - 4 * st->agi - st->dex) * ((TBL_HOM*)bl)->homunculusDB->baseASPD / 1000; - amotion = status->calc_aspd_rate(bl, sc, bst->aspd_rate); + amotion = status->calc_aspd_rate(bl, sc, amotion); if ( st->aspd_rate != 1000 ) amotion = amotion*st->aspd_rate / 1000; @@ -5064,7 +5064,7 @@ defType status_calc_def(struct block_list *bl, struct status_change *sc, int def if (sc->data[SC_SHIELDSPELL_REF] && sc->data[SC_SHIELDSPELL_REF]->val1 == 2) def += sc->data[SC_SHIELDSPELL_REF]->val2; if (sc->data[SC_PRESTIGE]) - def += def * sc->data[SC_PRESTIGE]->val1 / 100; + def += sc->data[SC_PRESTIGE]->val1; if (sc->data[SC_VOLCANIC_ASH] && (bl->type==BL_MOB)) { if (status_get_race(bl)==RC_PLANT) def /= 2; @@ -8813,8 +8813,8 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t case SC_LG_REFLECTDAMAGE: val2 = 15 + 5 * val1; val3 = 25 + 5 * val1; //Number of Reflects - val4 = tick/10000; - tick_time = 10000; // [GodLesZ] tick time + val4 = tick/1000; + tick_time = 1000; // [GodLesZ] tick time break; case SC_FORCEOFVANGUARD: val2 = 8 + 12 * val1; // Chance @@ -8836,7 +8836,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t val1 *= 15; // Defence added if( sd ) val1 += 10 * pc->checkskill(sd,CR_DEFENDER); - val1 *= status->get_lv(bl) / 100; + val1 = val1 * status->get_lv(bl) / 100; break; case SC_BANDING: tick_time = 5000; // [GodLesZ] tick time diff --git a/src/map/storage.c b/src/map/storage.c index 755f50cb7..79a5ad52d 100644 --- a/src/map/storage.c +++ b/src/map/storage.c @@ -88,7 +88,7 @@ int storage_storageopen(struct map_session_data *sd) if( !pc_can_give_items(sd) ) { //check is this GM level is allowed to put items to storage - clif->message(sd->fd, msg_txt(246)); + clif->message(sd->fd, msg_sd(sd,246)); return 1; } @@ -138,12 +138,12 @@ int storage_additem(struct map_session_data* sd, struct item* item_data, int amo if (!itemdb_canstore(item_data, pc_get_group_level(sd))) { //Check if item is storable. [Skotlex] - clif->message (sd->fd, msg_txt(264)); + clif->message (sd->fd, msg_sd(sd,264)); return 1; } if( item_data->bound > IBT_ACCOUNT && !pc_can_give_bound_items(sd) ) { - clif->message(sd->fd, msg_txt(294)); + clif->message(sd->fd, msg_sd(sd,294)); return 1; } @@ -384,7 +384,7 @@ int storage_guild_storageopen(struct map_session_data* sd) return 1; //Can't open both storages at a time. if( !pc_can_give_items(sd) ) { //check is this GM level can open guild storage and store items [Lupus] - clif->message(sd->fd, msg_txt(246)); + clif->message(sd->fd, msg_sd(sd,246)); return 1; } @@ -433,12 +433,12 @@ int guild_storage_additem(struct map_session_data* sd, struct guild_storage* sto if (!itemdb_canguildstore(item_data, pc_get_group_level(sd)) || item_data->expire_time) { //Check if item is storable. [Skotlex] - clif->message (sd->fd, msg_txt(264)); + clif->message (sd->fd, msg_sd(sd,264)); return 1; } if( item_data->bound && item_data->bound != IBT_GUILD && !pc_can_give_bound_items(sd) ) { - clif->message(sd->fd, msg_txt(294)); + clif->message(sd->fd, msg_sd(sd,294)); return 1; } diff --git a/src/map/trade.c b/src/map/trade.c index 379756394..7417f05af 100644 --- a/src/map/trade.c +++ b/src/map/trade.c @@ -34,7 +34,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta nullpo_retv(sd); if (map->list[sd->bl.m].flag.notrade) { - clif->message (sd->fd, msg_txt(272)); + clif->message (sd->fd, msg_sd(sd,272)); return; //Can't trade in notrade mapflag maps. } @@ -73,7 +73,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta if (!pc_can_give_items(sd) || !pc_can_give_items(target_sd)) //check if both GMs are allowed to trade { - clif->message(sd->fd, msg_txt(246)); + clif->message(sd->fd, msg_sd(sd,246)); clif->tradestart(sd, 2); // GM is not allowed to trade return; } @@ -355,14 +355,14 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount) if( !itemdb_cantrade(item, src_lv, dst_lv) && //Can't trade (pc->get_partner(sd) != target_sd || !itemdb_canpartnertrade(item, src_lv, dst_lv)) ) //Can't partner-trade { - clif->message (sd->fd, msg_txt(260)); + clif->message (sd->fd, msg_sd(sd,260)); clif->tradeitemok(sd, index+2, TIO_INDROCKS); return; } if( item->expire_time ) { // Rental System - clif->message (sd->fd, msg_txt(260)); + clif->message (sd->fd, msg_sd(sd,260)); clif->tradeitemok(sd, index+2, TIO_INDROCKS); return; } @@ -371,7 +371,7 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount) !( item->bound == IBT_GUILD && sd->status.guild_id == target_sd->status.guild_id ) && !( item->bound == IBT_PARTY && sd->status.party_id == target_sd->status.party_id ) && !pc_can_give_bound_items(sd) ) { - clif->message(sd->fd, msg_txt(293)); + clif->message(sd->fd, msg_sd(sd,293)); clif->tradeitemok(sd, index+2, TIO_INDROCKS); return; } diff --git a/src/map/unit.c b/src/map/unit.c index 6e4efd533..2e96e9c20 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -454,7 +454,7 @@ int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) { ud->to_x = bl->x; ud->to_y = bl->y; - if(map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) { + if(battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) { //Walked on occupied cell, call unit_walktoxy again if(ud->steptimer != INVALID_TIMER) { //Execute step timer on next step instead @@ -493,7 +493,7 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag) if( ud == NULL) return 0; - if ((flag&8) && !map->closest_freecell(bl->m, &x, &y, BL_CHAR|BL_NPC, 1)) //This might change x and y + if (battle_config.check_occupied_cells && (flag&8) && !map->closest_freecell(bl->m, &x, &y, BL_CHAR|BL_NPC, 1)) //This might change x and y return 0; if (!path->search(&wpd, bl->m, bl->x, bl->y, x, y, flag&1, CELL_CHKNOPASS)) // Count walk path cells diff --git a/src/map/vending.c b/src/map/vending.c index bd61d482f..8ae3f36a4 100644 --- a/src/map/vending.c +++ b/src/map/vending.c @@ -58,7 +58,7 @@ void vending_vendinglistreq(struct map_session_data* sd, unsigned int id) { if (!pc_can_give_items(sd) || !pc_can_give_items(vsd)) { //check if both GMs are allowed to trade // GM is not allowed to trade - clif->message(sd->fd, msg_txt(246)); + clif->message(sd->fd, msg_sd(sd,246)); return; } @@ -181,7 +181,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, //print buyer's name if( battle_config.buyer_name ) { char temp[256]; - sprintf(temp, msg_txt(265), sd->status.name); + sprintf(temp, msg_sd(vsd,265), sd->status.name); clif_disp_onlyself(vsd,temp,strlen(temp)); } } @@ -273,7 +273,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const } if( i != j ) - clif->message (sd->fd, msg_txt(266)); //"Some of your items cannot be vended and were removed from the shop." + clif->message (sd->fd, msg_sd(sd,266)); //"Some of your items cannot be vended and were removed from the shop." if( i == 0 ) { // no valid item found clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0); // custom reply packet diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index 40023d490..d92f2079f 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -65,6 +65,12 @@ struct { struct HPMHookPoint *HP_atcommand_add_post; struct HPMHookPoint *HP_atcommand_msg_pre; struct HPMHookPoint *HP_atcommand_msg_post; + struct HPMHookPoint *HP_atcommand_expand_message_table_pre; + struct HPMHookPoint *HP_atcommand_expand_message_table_post; + struct HPMHookPoint *HP_atcommand_msgfd_pre; + struct HPMHookPoint *HP_atcommand_msgfd_post; + struct HPMHookPoint *HP_atcommand_msgsd_pre; + struct HPMHookPoint *HP_atcommand_msgsd_post; struct HPMHookPoint *HP_battle_init_pre; struct HPMHookPoint *HP_battle_init_post; struct HPMHookPoint *HP_battle_final_pre; @@ -4349,6 +4355,24 @@ struct { struct HPMHookPoint *HP_script_hardcoded_constants_post; struct HPMHookPoint *HP_script_mapindexname2id_pre; struct HPMHookPoint *HP_script_mapindexname2id_post; + struct HPMHookPoint *HP_script_string_dup_pre; + struct HPMHookPoint *HP_script_string_dup_post; + struct HPMHookPoint *HP_script_load_translations_pre; + struct HPMHookPoint *HP_script_load_translations_post; + struct HPMHookPoint *HP_script_load_translation_pre; + struct HPMHookPoint *HP_script_load_translation_post; + struct HPMHookPoint *HP_script_translation_db_destroyer_pre; + struct HPMHookPoint *HP_script_translation_db_destroyer_post; + struct HPMHookPoint *HP_script_clear_translations_pre; + struct HPMHookPoint *HP_script_clear_translations_post; + struct HPMHookPoint *HP_script_parse_cleanup_timer_pre; + struct HPMHookPoint *HP_script_parse_cleanup_timer_post; + struct HPMHookPoint *HP_script_add_language_pre; + struct HPMHookPoint *HP_script_add_language_post; + struct HPMHookPoint *HP_script_get_translation_file_name_pre; + struct HPMHookPoint *HP_script_get_translation_file_name_post; + struct HPMHookPoint *HP_script_parser_clean_leftovers_pre; + struct HPMHookPoint *HP_script_parser_clean_leftovers_post; struct HPMHookPoint *HP_searchstore_open_pre; struct HPMHookPoint *HP_searchstore_open_post; struct HPMHookPoint *HP_searchstore_query_pre; @@ -5242,6 +5266,12 @@ struct { int HP_atcommand_add_post; int HP_atcommand_msg_pre; int HP_atcommand_msg_post; + int HP_atcommand_expand_message_table_pre; + int HP_atcommand_expand_message_table_post; + int HP_atcommand_msgfd_pre; + int HP_atcommand_msgfd_post; + int HP_atcommand_msgsd_pre; + int HP_atcommand_msgsd_post; int HP_battle_init_pre; int HP_battle_init_post; int HP_battle_final_pre; @@ -9526,6 +9556,24 @@ struct { int HP_script_hardcoded_constants_post; int HP_script_mapindexname2id_pre; int HP_script_mapindexname2id_post; + int HP_script_string_dup_pre; + int HP_script_string_dup_post; + int HP_script_load_translations_pre; + int HP_script_load_translations_post; + int HP_script_load_translation_pre; + int HP_script_load_translation_post; + int HP_script_translation_db_destroyer_pre; + int HP_script_translation_db_destroyer_post; + int HP_script_clear_translations_pre; + int HP_script_clear_translations_post; + int HP_script_parse_cleanup_timer_pre; + int HP_script_parse_cleanup_timer_post; + int HP_script_add_language_pre; + int HP_script_add_language_post; + int HP_script_get_translation_file_name_pre; + int HP_script_get_translation_file_name_post; + int HP_script_parser_clean_leftovers_pre; + int HP_script_parser_clean_leftovers_post; int HP_searchstore_open_pre; int HP_searchstore_open_post; int HP_searchstore_query_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index e127caeae..a3e4340be 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -36,6 +36,9 @@ struct HookingPointData HookingPoints[] = { { HP_POP(atcommand->base_commands, HP_atcommand_base_commands) }, { HP_POP(atcommand->add, HP_atcommand_add) }, { HP_POP(atcommand->msg, HP_atcommand_msg) }, + { HP_POP(atcommand->expand_message_table, HP_atcommand_expand_message_table) }, + { HP_POP(atcommand->msgfd, HP_atcommand_msgfd) }, + { HP_POP(atcommand->msgsd, HP_atcommand_msgsd) }, /* battle */ { HP_POP(battle->init, HP_battle_init) }, { HP_POP(battle->final, HP_battle_final) }, @@ -2209,6 +2212,15 @@ struct HookingPointData HookingPoints[] = { { HP_POP(script->array_cpy_list, HP_script_array_cpy_list) }, { HP_POP(script->hardcoded_constants, HP_script_hardcoded_constants) }, { HP_POP(script->mapindexname2id, HP_script_mapindexname2id) }, + { HP_POP(script->string_dup, HP_script_string_dup) }, + { HP_POP(script->load_translations, HP_script_load_translations) }, + { HP_POP(script->load_translation, HP_script_load_translation) }, + { HP_POP(script->translation_db_destroyer, HP_script_translation_db_destroyer) }, + { HP_POP(script->clear_translations, HP_script_clear_translations) }, + { HP_POP(script->parse_cleanup_timer, HP_script_parse_cleanup_timer) }, + { HP_POP(script->add_language, HP_script_add_language) }, + { HP_POP(script->get_translation_file_name, HP_script_get_translation_file_name) }, + { HP_POP(script->parser_clean_leftovers, HP_script_parser_clean_leftovers) }, /* searchstore */ { HP_POP(searchstore->open, HP_searchstore_open) }, { HP_POP(searchstore->query, HP_searchstore_query) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index c479fe435..c36525c21 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -845,6 +845,86 @@ const char* HP_atcommand_msg(int msg_number) { } return retVal___; } +void HP_atcommand_expand_message_table(void) { + int hIndex = 0; + if( HPMHooks.count.HP_atcommand_expand_message_table_pre ) { + void (*preHookFunc) (void); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_expand_message_table_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_atcommand_expand_message_table_pre[hIndex].func; + preHookFunc(); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.atcommand.expand_message_table(); + } + if( HPMHooks.count.HP_atcommand_expand_message_table_post ) { + void (*postHookFunc) (void); + for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_expand_message_table_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_atcommand_expand_message_table_post[hIndex].func; + postHookFunc(); + } + } + return; +} +const char* HP_atcommand_msgfd(int fd, int msg_number) { + int hIndex = 0; + const char* retVal___ = NULL; + if( HPMHooks.count.HP_atcommand_msgfd_pre ) { + const char* (*preHookFunc) (int *fd, int *msg_number); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgfd_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_atcommand_msgfd_pre[hIndex].func; + retVal___ = preHookFunc(&fd, &msg_number); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.atcommand.msgfd(fd, msg_number); + } + if( HPMHooks.count.HP_atcommand_msgfd_post ) { + const char* (*postHookFunc) (const char* retVal___, int *fd, int *msg_number); + for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgfd_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_atcommand_msgfd_post[hIndex].func; + retVal___ = postHookFunc(retVal___, &fd, &msg_number); + } + } + return retVal___; +} +const char* HP_atcommand_msgsd(struct map_session_data *sd, int msg_number) { + int hIndex = 0; + const char* retVal___ = NULL; + if( HPMHooks.count.HP_atcommand_msgsd_pre ) { + const char* (*preHookFunc) (struct map_session_data *sd, int *msg_number); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgsd_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_atcommand_msgsd_pre[hIndex].func; + retVal___ = preHookFunc(sd, &msg_number); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.atcommand.msgsd(sd, msg_number); + } + if( HPMHooks.count.HP_atcommand_msgsd_post ) { + const char* (*postHookFunc) (const char* retVal___, struct map_session_data *sd, int *msg_number); + for(hIndex = 0; hIndex < HPMHooks.count.HP_atcommand_msgsd_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_atcommand_msgsd_post[hIndex].func; + retVal___ = postHookFunc(retVal___, sd, &msg_number); + } + } + return retVal___; +} /* battle */ void HP_battle_init(bool minimal) { int hIndex = 0; @@ -58344,6 +58424,251 @@ unsigned short HP_script_mapindexname2id(struct script_state *st, const char *na } return retVal___; } +int HP_script_string_dup(char *str) { + int hIndex = 0; + int retVal___ = 0; + if( HPMHooks.count.HP_script_string_dup_pre ) { + int (*preHookFunc) (char *str); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_string_dup_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_string_dup_pre[hIndex].func; + retVal___ = preHookFunc(str); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.script.string_dup(str); + } + if( HPMHooks.count.HP_script_string_dup_post ) { + int (*postHookFunc) (int retVal___, char *str); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_string_dup_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_string_dup_post[hIndex].func; + retVal___ = postHookFunc(retVal___, str); + } + } + return retVal___; +} +void HP_script_load_translations(void) { + int hIndex = 0; + if( HPMHooks.count.HP_script_load_translations_pre ) { + void (*preHookFunc) (void); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translations_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_load_translations_pre[hIndex].func; + preHookFunc(); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.script.load_translations(); + } + if( HPMHooks.count.HP_script_load_translations_post ) { + void (*postHookFunc) (void); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translations_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_load_translations_post[hIndex].func; + postHookFunc(); + } + } + return; +} +void HP_script_load_translation(const char *file, uint8 lang_id, uint32 *total) { + int hIndex = 0; + if( HPMHooks.count.HP_script_load_translation_pre ) { + void (*preHookFunc) (const char *file, uint8 *lang_id, uint32 *total); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_load_translation_pre[hIndex].func; + preHookFunc(file, &lang_id, total); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.script.load_translation(file, lang_id, total); + } + if( HPMHooks.count.HP_script_load_translation_post ) { + void (*postHookFunc) (const char *file, uint8 *lang_id, uint32 *total); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_translation_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_load_translation_post[hIndex].func; + postHookFunc(file, &lang_id, total); + } + } + return; +} +int HP_script_translation_db_destroyer(DBKey key, DBData *data, va_list ap) { + int hIndex = 0; + int retVal___ = 0; + if( HPMHooks.count.HP_script_translation_db_destroyer_pre ) { + int (*preHookFunc) (DBKey *key, DBData *data, va_list ap); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_translation_db_destroyer_pre; hIndex++ ) { + va_list ap___copy; va_copy(ap___copy, ap); + preHookFunc = HPMHooks.list.HP_script_translation_db_destroyer_pre[hIndex].func; + retVal___ = preHookFunc(&key, data, ap___copy); + va_end(ap___copy); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + va_list ap___copy; va_copy(ap___copy, ap); + retVal___ = HPMHooks.source.script.translation_db_destroyer(key, data, ap___copy); + va_end(ap___copy); + } + if( HPMHooks.count.HP_script_translation_db_destroyer_post ) { + int (*postHookFunc) (int retVal___, DBKey *key, DBData *data, va_list ap); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_translation_db_destroyer_post; hIndex++ ) { + va_list ap___copy; va_copy(ap___copy, ap); + postHookFunc = HPMHooks.list.HP_script_translation_db_destroyer_post[hIndex].func; + retVal___ = postHookFunc(retVal___, &key, data, ap___copy); + va_end(ap___copy); + } + } + return retVal___; +} +void HP_script_clear_translations(bool reload) { + int hIndex = 0; + if( HPMHooks.count.HP_script_clear_translations_pre ) { + void (*preHookFunc) (bool *reload); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_clear_translations_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_clear_translations_pre[hIndex].func; + preHookFunc(&reload); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.script.clear_translations(reload); + } + if( HPMHooks.count.HP_script_clear_translations_post ) { + void (*postHookFunc) (bool *reload); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_clear_translations_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_clear_translations_post[hIndex].func; + postHookFunc(&reload); + } + } + return; +} +int HP_script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) { + int hIndex = 0; + int retVal___ = 0; + if( HPMHooks.count.HP_script_parse_cleanup_timer_pre ) { + int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_cleanup_timer_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_parse_cleanup_timer_pre[hIndex].func; + retVal___ = preHookFunc(&tid, &tick, &id, &data); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.script.parse_cleanup_timer(tid, tick, id, data); + } + if( HPMHooks.count.HP_script_parse_cleanup_timer_post ) { + int (*postHookFunc) (int retVal___, int *tid, int64 *tick, int *id, intptr_t *data); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_cleanup_timer_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_parse_cleanup_timer_post[hIndex].func; + retVal___ = postHookFunc(retVal___, &tid, &tick, &id, &data); + } + } + return retVal___; +} +uint8 HP_script_add_language(const char *name) { + int hIndex = 0; + uint8 retVal___ = 0; + if( HPMHooks.count.HP_script_add_language_pre ) { + uint8 (*preHookFunc) (const char *name); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_language_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_add_language_pre[hIndex].func; + retVal___ = preHookFunc(name); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.script.add_language(name); + } + if( HPMHooks.count.HP_script_add_language_post ) { + uint8 (*postHookFunc) (uint8 retVal___, const char *name); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_add_language_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_add_language_post[hIndex].func; + retVal___ = postHookFunc(retVal___, name); + } + } + return retVal___; +} +const char* HP_script_get_translation_file_name(const char *file) { + int hIndex = 0; + const char* retVal___ = NULL; + if( HPMHooks.count.HP_script_get_translation_file_name_pre ) { + const char* (*preHookFunc) (const char *file); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_translation_file_name_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_get_translation_file_name_pre[hIndex].func; + retVal___ = preHookFunc(file); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.script.get_translation_file_name(file); + } + if( HPMHooks.count.HP_script_get_translation_file_name_post ) { + const char* (*postHookFunc) (const char* retVal___, const char *file); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_get_translation_file_name_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_get_translation_file_name_post[hIndex].func; + retVal___ = postHookFunc(retVal___, file); + } + } + return retVal___; +} +void HP_script_parser_clean_leftovers(void) { + int hIndex = 0; + if( HPMHooks.count.HP_script_parser_clean_leftovers_pre ) { + void (*preHookFunc) (void); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parser_clean_leftovers_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_parser_clean_leftovers_pre[hIndex].func; + preHookFunc(); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.script.parser_clean_leftovers(); + } + if( HPMHooks.count.HP_script_parser_clean_leftovers_post ) { + void (*postHookFunc) (void); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_parser_clean_leftovers_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_parser_clean_leftovers_post[hIndex].func; + postHookFunc(); + } + } + return; +} /* searchstore */ bool HP_searchstore_open(struct map_session_data *sd, unsigned int uses, unsigned short effect) { int hIndex = 0; |