Jump to content

chowking

Members
  • Posts

    178
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by chowking

  1. in skill unit on place timer i commented out if (rnd()%100 < src->val1) case GS_DESPERADO: // if (rnd()%100 < src->val1) skill_attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); now all within the range will be hit, but all were being hit 8-10 times, how to make desperado skill hit all within range and will hit only once, like magnum break
  2. the line with "-" should be deleted, while those with "+" will be added,, follow the patch per line so you wont get lost
  3. in older clients there is a limit for weapon ID, if you go beyond that item ID, sprite wont show anymore
  4. i have necessary files for drop, male female and textures, although IDK why it shows the (null).spr (null).act, also, i always compile my lua to lub whenever i use 2012 04 10,, i'll try this one, maybe 874
  5. Currently Adding a new HG to latest rAthena trunk rev, all seems fine except, HG fails to show 2012-04-10aRagexeRE.exe used Shindiff with: all recommended Diffed with 30K view ID, skip packet obfuciation didn't include: Lua before LUB Read data folder first HKLM to HKCU (or so) attached pic of what is currently happening: please help, This is my accessoryid.lua,, compiled it later on and put in luafiles514/lua files/datainfo/ ACCESSORY_IDs = { ACCESSORY_GOGGLES = 1, ACCESSORY_CATTYHAIRBAND = 2, ACCESSORY_GLASS = 3, ACCESSORY_FLOWER = 4, ACCESSORY_FLORALHAIRBAND = 5, ACCESSORY_HOOD = 6, ACCESSORY_ROUNDCAP = 7, ACCESSORY_FLUMASK = 8, ACCESSORY_HAIRBAND = 9, ACCESSORY_DIVERSGOGGLES = 10, ACCESSORY_BIRETTA = 11, ACCESSORY_SUNGLASS = 12, ACCESSORY_EYEBANDAGE = 13, ACCESSORY_CAP = 14, ACCESSORY_BUNNYBAND = 15, ACCESSORY_HAT = 16, ACCESSORY_RIBBON = 17, ACCESSORY_CIRCLET = 18, ACCESSORY_TIARA = 19, ACCESSORY_SANTAHAT = 20, ACCESSORY_BEARD = 21, ACCESSORY_MUSTACHE = 22, ACCESSORY_SPECTACLE = 23, ACCESSORY_BLACK_BEARD = 24, ACCESSORY_WHITE_BEARD = 25, ACCESSORY_QUALITY_SUNGLASS = 26, ACCESSORY_SPIN_GLASS = 27, ACCESSORY_LARGE_RIBBON = 28, ACCESSORY_SWEET_GENTLE = 29, ACCESSORY_GOLDEN_HEADGEAR = 30, ACCESSORY_OLDSTER_ROMANCE = 31, ACCESSORY_WESTERN_GRACE = 32, ACCESSORY_CORONET = 33, ACCESSORY_HAIR_STRING = 34, ACCESSORY_PRIEST_CAP = 35, ACCESSORY_WIZARD_HAT = 36, ACCESSORY_SUNFLOWER = 37, ACCESSORY_ANGEL_HAIRBAND = 38, ACCESSORY_DEVIL_HAIRBAND = 39, ACCESSORY_HELM = 40, ACCESSORY_MAJESTIC_GOUT = 41, ACCESSORY_WHITE_HORN = 42, ACCESSORY_SHARP_HEADGEAR = 43, ACCESSORY_WEDDING_VEIL = 44, ACCESSORY_CROWN = 45, ACCESSORY_PROPELLER = 46, ACCESSORY_TINY_EYE_GLASSES = 47, ACCESSORY_PRONTERA_ARMY_CAP = 48, ACCESSORY_PIERROTS_NOSE = 49, ACCESSORY_PIRATES_EYEBANDAGE = 50, ACCESSORY_MUNAK_TURBAN = 51, ACCESSORY_HIP_HOP_MASK = 52, ACCESSORY_IRONCANE = 53, ACCESSORY_CIGAR = 54, ACCESSORY_CIGAR_PIPE = 55, ACCESSORY_SENTIMENTAL_FLOWER = 56, ACCESSORY_SENTIMENTAL_BLADE = 57, ACCESSORY_HEY_DUDE = 58, ACCESSORY_STOP_SIGNPOST = 59, ACCESSORY_DOCTOR_BAND = 60, ACCESSORY_JAPANESE_GHOST = 61, ACCESSORY_SCARLET_BANDANA = 62, ACCESSORY_EAGLE_EYES = 63, ACCESSORY_NURSE_CAP = 64, ACCESSORY_SMILE = 65, ACCESSORY_BOMB_WICK = 66, ACCESSORY_SAHT_GAHT = 67, ACCESSORY_MASQUERADE = 68, ACCESSORY_SERAPHIC_RING = 69, ACCESSORY_EARMUFFS = 70, ACCESSORY_MOOSE_HORN = 71, ACCESSORY_THE_APPLE_OF_WILHELM_TELL = 72, ACCESSORY_TINKER_BELL = 73, ACCESSORY_PIRATE_BANDANA = 74, ACCESSORY_MUNCHS_SCREAM = 75, ACCESSORY_POO_POO_HAT = 76, ACCESSORY_KOEAN_FUNERAL_COSTUME = 77, ACCESSORY_BUTTERFLY_MASQUE = 78, ACCESSORY_WELDER_MASK = 79, ACCESSORY_PRETEND_TO_BE_MURDERED = 80, ACCESSORY_STAR_DUST = 81, ACCESSORY_EYE_MASK = 82, ACCESSORY_BINOCULARS = 83, ACCESSORY_GOBLIN_MASQUE = 84, ACCESSORY_GREEN_FEELER = 85, ACCESSORY_VIKING_HELMET = 86, ACCESSORY_HEAD_SET = 87, ACCESSORY_GEMMED_CROWN = 88, ACCESSORY_PIERROT_CROWN = 89, ACCESSORY_OXYGEN_MASK = 90, ACCESSORY_GAS_MASK = 91, ACCESSORY_MACHO_MANS_GLASSES = 92, ACCESSORY_LORD_CIRCLET = 93, ACCESSORY_PUPPY_LOVE = 94, ACCESSORY_CRASH_HELMET = 95, ACCESSORY_INDIAN_BAND = 96, ACCESSORY_AERIAL = 97, ACCESSORY_BA_HAT = 98, ACCESSORY_HORN_OF_LORD_KAHO = 99, ACCESSORY_FIN_HELM = 100, ACCESSORY_EGG_SHELL = 101, ACCESSORY_KOREAN_SCHOOL_HAT = 102, ACCESSORY_BONE_HELM = 103, ACCESSORY_WILHELM_TELLS_HAT = 104, ACCESSORY_CORSAIR = 105, ACCESSORY_BAND_OF_KAFRA = 106, ACCESSORY_LOST_MONEY_HEART = 107, ACCESSORY_BUNDLE = 108, ACCESSORY_CAKE_HAT = 109, ACCESSORY_ANGEL_HELM = 110, ACCESSORY_COOKER_HAT = 111, ACCESSORY_MAGE_HAT = 112, ACCESSORY_CANDLE = 113, ACCESSORY_SPORE_HAT = 114, ACCESSORY_PANDA_HAT = 115, ACCESSORY_MINE_HAT = 116, ACCESSORY_OUTSIDE_HAT = 117, ACCESSORY_RACCOON_HAT = 118, ACCESSORY_LAMP_BAND = 119, ACCESSORY_PORING_HAT = 120, ACCESSORY_CROSS_BAND = 121, ACCESSORY_NUT_SHELL = 122, ACCESSORY_YOUNG_DEVIL_HAT = 123, ACCESSORY_SPOT_EGG_SHELL = 124, ACCESSORY_DYE_RED = 125, ACCESSORY_HEART_HAIRPIN = 126, ACCESSORY_HAIR_CLOTH = 127, ACCESSORY_GHOST_MASK = 128, ACCESSORY_DEVIL_WING = 129, ACCESSORY_WIZARD_HEADGEAR = 130, ACCESSORY_FASION_SUNGLASSES = 131, ACCESSORY_MOON_HEARPIN = 132, ACCESSORY_STRIPES_BAND = 133, ACCESSORY_MYSTIC_NUT_SHELL = 134, ACCESSORY_CAT_BELL = 135, ACCESSORY_BLUE_BAND = 136, ACCESSORY_SPHINX_HAT = 137, ACCESSORY_SUN_GOD_HAT = 138, ACCESSORY_BOMGUN_HAT = 139, ACCESSORY_LOVE_NUT = 140, ACCESSORY_BLACKCAT_EAR = 141, ACCESSORY_LAZYCAT = 142, ACCESSORY_BEAR_HAT = 143, ACCESSORY_KOCAL_HAT = 144, ACCESSORY_FLOWER_HAIRPIN = 145, ACCESSORY_MILZIP_HAT = 146, ACCESSORY_DAEILBAND = 147, ACCESSORY_LEAF_HELM = 148, ACCESSORY_FISH_HAT = 149, ACCESSORY_SERCUBUS_HORN = 150, ACCESSORY_SOM_BRERO = 151, ACCESSORY_DEVILWING_EAR = 152, ACCESSORY_FOX_MASK = 153, ACCESSORY_FIRE_HEADBAND = 154, ACCESSORY_INDIAN_HEADBAND = 155, ACCESSORY_INCUBUS_HORN = 156, ACCESSORY_STRAIGHT_HAT = 157, ACCESSORY_ANGELWING_EAR = 158, ACCESSORY_COWBOY_HAT = 159, ACCESSORY_FUR_HAT = 160, ACCESSORY_TULIP_HAIRPIN = 161, ACCESSORY_HAEDAL_HAT = 162, ACCESSORY_X_HAIRPIN = 163, ACCESSORY_QUEEN_HELM = 164, ACCESSORY_MISTRESS_CROWN = 165, ACCESSORY_MUSHROOM_HEADBAND = 166, ACCESSORY_REDTAIL_RIBBON = 167, ACCESSORY_LAZY_RACCOON = 168, ACCESSORY_BELOWEAR_RIBBON = 169, ACCESSORY_ALARM_MASK = 170, ACCESSORY_GOBLIN_MASK1 = 171, ACCESSORY_GOBLIN_MASK2 = 172, ACCESSORY_GOBLIN_MASK3 = 173, ACCESSORY_GOBLIN_MASK4 = 174, ACCESSORY_BIGGOLDEN_BELL = 175, ACCESSORY_SISTER_HAT = 176, ACCESSORY_SISTER_HAT2 = 177, ACCESSORY_ORCHERO_HELM = 178, ACCESSORY_ORCHERO_HELM2 = 179, ACCESSORY_ASSASSIN_MASK = 180, ACCESSORY_TIGER_MASK = 181, ACCESSORY_CAT_HAT = 182, ACCESSORY_SALE_HAT = 183, ACCESSORY_TAKIUS = 184, ACCESSORY_BATTLEONLINE = 185, ACCESSORY_HAEBARAGI_PIN = 186, ACCESSORY_BLACK_EYECOVER = 187, ACCESSORY_TOAST = 188, ACCESSORY_DECTECTIVE_HAT = 189, ACCESSORY_CHAYANG_HAT = 190, ACCESSORY_BABY = 191, ACCESSORY_DUCK_HAT = 192, ACCESSORY_SUNO_HAT = 193, ACCESSORY_ANGRY_MOUTH = 194, ACCESSORY_BEONG_HAT = 195, ACCESSORY_COLDPROTECT_HAT = 196, ACCESSORY_BANANA_HAT = 197, ACCESSORY_MYSTICROSE = 198, ACCESSORY_PUPPY_EAR = 199, ACCESSORY_ZIRTAS_MASK = 200, ACCESSORY_BIRD_NEST = 201, ACCESSORY_LION_MASK = 202, ACCESSORY_CROSS_HELMET = 203, ACCESSORY_ANGELING_HAT = 204, ACCESSORY_GOAT_HAT = 205, ACCESSORY_PUMPKIN_HAT = 206, ACCESSORY_CYCLOPS_EYE = 207, ACCESSORY_ALICE_HAT = 208, ACCESSORY_MAGIC_EYES = 209, ACCESSORY_PUYONG = 210, ACCESSORY_PRETTY_RIBBON = 211, ACCESSORY_MARIONET_HAT = 212, ACCESSORY_MOON_HELM = 213, ACCESSORY_GABUKI_MASK = 214, ACCESSORY_KOKIRI_HAT = 215, ACCESSORY_BASEBALL_HAT = 216, ACCESSORY_GOOKGYEONG_HAT = 217, ACCESSORY_SILVERTIARA = 218, ACCESSORY_PIERROT_CROWN_ = 219, ACCESSORY_MUSICHEADPHONE = 220, ACCESSORY_BONGCROWN = 221, ACCESSORY_ANGELING_PIN = 222, ACCESSORY_GAKSITAL = 223, ACCESSORY_FEATHER_BEREHAT = 224, ACCESSORY_VALKYRIE_HELMET = 225, ACCESSORY_BEREHAT = 226, ACCESSORY_SATOHAT = 227, ACCESSORY_AYAM = 228, ACCESSORY_NONAME = 229, ACCESSORY_HAHETAL = 230, ACCESSORY_LIONTAL = 231, ACCESSORY_GOLDTIARA = 232, ACCESSORY_DARKHELMET = 233, ACCESSORY_DOGHAT = 234, ACCESSORY_BIRDHAT = 235, ACCESSORY_CAPTAINHAT = 236, ACCESSORY_BAYTREEHAT = 237, ACCESSORY_GEOGRAPHER = 238, ACCESSORY_TWINRIBBON = 239, ACCESSORY_SINGERHAT = 240, ACCESSORY_LEAF = 241, ACCESSORY_BLACKRIBBON = 242, ACCESSORY_YELLOWRIBBON = 243, ACCESSORY_GREENRIBBON = 244, ACCESSORY_PINKRIBBON = 245, ACCESSORY_REDRIBBON = 246, ACCESSORY_ORANGERIBBON = 247, ACCESSORY_WHITERIBBON = 248, ACCESSORY_LAZYRABBIT = 249, ACCESSORY_MEGINCAP = 250, ACCESSORY_PRIKACIRCLET = 251, ACCESSORY_COPOLA = 252, ACCESSORY_MERONGMASK = 253, ACCESSORY_WOOLCAP = 254, ACCESSORY_ANGELKISS = 255, ACCESSORY_MORPHISDOOGUN = 256, ACCESSORY_MORIANEHELM = 257, ACCESSORY_GEVNEITUGOO = 258, ACCESSORY_WHITEFLOWER = 259, ACCESSORY_GOLDENGORI = 260, ACCESSORY_LAUREL = 261, ACCESSORY_RIDEWORD = 262, ACCESSORY_YELLOW_BASEBALLCAP = 263, ACCESSORY_FLYING_ANGEL = 264, ACCESSORY_DRESSHAT = 265, ACCESSORY_SATELITE_HAIRBAND = 266, ACCESSORY_BLACK_BUNNYBAND = 267, ACCESSORY_WALLYAHWA_HAT = 268, ACCESSORY_MARCHING_HAT = 269, ACCESSORY_PROPELLER2 = 270, ACCESSORY_RED_DEVIRUCHI = 271, ACCESSORY_WHITE_DEVIRUCHI = 272, ACCESSORY_GRAY_DEVIRUCHI = 273, ACCESSORY_WHITE_LAZYCAT = 274, ACCESSORY_GRAY_LAZYCAT = 275, ACCESSORY_PINK_LAZYCAT = 276, ACCESSORY_BLUE_LAZYCAT = 277, ACCESSORY_YELLOW_LAZYCAT = 278, ACCESSORY_GRAY_FURHAT = 279, ACCESSORY_BLUE_FURHAT = 280, ACCESSORY_PINK_FURHAT = 281, ACCESSORY_RED_MAGICIANHAT = 282, ACCESSORY_WHITE_MAGICIANHAT = 283, ACCESSORY_GRAY_MAGICIANHAT = 284, ACCESSORY_BLUE_MAGICIANHAT = 285, ACCESSORY_YELLOW_MAGICIANHAT = 286, ACCESSORY_EARPLUG_HAT = 287, ACCESSORY_ELF_BLINDER = 288, ACCESSORY_ELF_SUNGLASS = 289, ACCESSORY_ANGEL_MIXHELM = 290, ACCESSORY_DEVIL_MIXHELM = 291, ACCESSORY_ROBOT_BLINDER = 292, ACCESSORY_HUMAN_BLINDER = 293, ACCESSORY_ROBOT_EAR = 294, ACCESSORY_HUMAN_EAR = 295, ACCESSORY_LAZY_NINETAIL = 296, ACCESSORY_LAZY_LEAF = 297, ACCESSORY_DEVILRING_HAT = 298, ACCESSORY_3PORINGS = 299, ACCESSORY_VALKYRIE_FEATHER = 300, ACCESSORY_SOULESS_WING = 301, ACCESSORY_APRO_WIG = 302, ACCESSORY_ATIATI_HAT = 303, ACCESSORY_AUSTRALIA_HAT = 304, ACCESSORY_HAPPY_WIG = 305, ACCESSORY_BRIGHT_WIG = 306, ACCESSORY_AMAZING_WIG = 307, ACCESSORY_FANTASTIC_WIG = 308, ACCESSORY_YELLOW_DOOGUN = 309, ACCESSORY_YELLOW_RIBBON = 310, ACCESSORY_CHICK_HAT = 311, ACCESSORY_SUREON_CROWN = 312, ACCESSORY_WINDMILL_HAIRPIN = 313, ACCESSORY_PECOPECO_HAT = 314, ACCESSORY_VACATION_HAT = 315, ACCESSORY_RED_GLASSES = 316, ACCESSORY_VANIL_HAT = 317, ACCESSORY_KETTLE_HAT = 318, ACCESSORY_DRAGON_SKULL = 319, ACCESSORY_RAMYEON_HAT = 320, ACCESSORY_WHISPER_MASK = 321, ACCESSORY_HORN_HAT = 322, ACCESSORY_RUSSIA_RIBBON = 323, ACCESSORY_LOTUS_FLOWER = 324, ACCESSORY_CEREMONIAL_CORONET = 325, ACCESSORY_MANGMOK = 326, ACCESSORY_PIRATE_DAGGER = 327, ACCESSORY_FREYA_CROWN = 328, ACCESSORY_TROPICALFRUIT = 329, ACCESSORY_BRAZIL_HAT = 330, ACCESSORY_MOHIKAN = 331, ACCESSORY_BANJAK_JEONGOO = 332, ACCESSORY_BIG_HIBISCUS = 333, ACCESSORY_AYOTAYA_HAT = 334, ACCESSORY_DIA_DAM = 335, ACCESSORY_HAKI_MASK = 336, ACCESSORY_OBSERVER = 337, ACCESSORY_UMBRELLA_HAT = 338, ACCESSORY_FISHER_HAT = 339, ACCESSORY_PORINGPARTY_HAT = 340, ACCESSORY_BLUE_ANGELING_HAT = 341, ACCESSORY_INDONESIA_HARIBAND = 342, ACCESSORY_SCARF = 343, ACCESSORY_LITTLEANGELDOLL = 344, ACCESSORY_ROBOTEYE = 345, ACCESSORY_ROKIMASK = 346, ACCESSORY_JEONPA_ANTENNA = 347, ACCESSORY_WANTTOFLY_ANGELING = 348, ACCESSORY_JUMPING_PORING = 349, ACCESSORY_WANT_GUILDMAN = 350, ACCESSORY_WANT_PARTY = 351, ACCESSORY_WANT_BOY = 352, ACCESSORY_WANT_FRIEND = 353, ACCESSORY_DIFORTE = 354, ACCESSORY_GLARRIS = 355, ACCESSORY_SORIN = 356, ACCESSORY_TAILING = 357, ACCESSORY_BINIT = 358, ACCESSORY_W = 359, ACCESSORY_WANT_GIRL = 360, ACCESSORY_POPORING_HAT = 361, ACCESSORY_MUSLIM_M = 362, ACCESSORY_MUSLIM_F = 363, ACCESSORY_MAWANG_HAT = 364, ACCESSORY_VICTORYWING = 365, ACCESSORY_PECOPECO_FLY_HAT = 366, ACCESSORY_CAPTION_HAT = 367, ACCESSORY_WHIKEBAIN_EARS = 368, ACCESSORY_GANG_SCARF = 369, ACCESSORY_NINJA_SCROLL = 370, ACCESSORY_SIMYEON_HAT = 371, ACCESSORY_BLACKDEATHKING = 372, ACCESSORY_EGGFRY = 373, ACCESSORY_EMPEROR_HAT = 374, ACCESSORY_HAEGOON_HAT = 375, ACCESSORY_NANCHO_HAT = 376, ACCESSORY_PANGUAN_HAT = 377, ACCESSORY_LAZY_WHITECAT = 378, ACCESSORY_DARKNESS_HELM = 379, ACCESSORY_HUGE_MAJESTIC = 380, ACCESSORY_HUGE_ORCHERO = 381, ACCESSORY_SATANIC_CHAIN = 382, ACCESSORY_ENTIQUE_CIGAR = 383, ACCESSORY_RABBITEAR = 384, ACCESSORY_BALLOON_HAT = 385, ACCESSORY_FISH_HEAD_HAT = 386, ACCESSORY_SANTA_PORING_HAT = 387, ACCESSORY_BELL_RIBBON = 388, ACCESSORY_HUNTINGCAP = 389, ACCESSORY_TWIN_SANTAHAT = 390, ACCESSORY_YOYOHAT = 391, ACCESSORY_NEKOMIMI_KAFRA = 392, ACCESSORY_SNAKE_HAT = 393, ACCESSORY_ANGEL_GHOST = 394, ACCESSORY_BLUE_SANTAHAT = 395, ACCESSORY_SEOLNAL_HAT = 396, ACCESSORY_VALENTINE_HAT = 397, ACCESSORY_TIRAYABONET = 398, ACCESSORY_JASPER = 399, ACCESSORY_SCUVER_MASK = 400, ACCESSORY_BONEHEAD = 401, ACCESSORY_MANDRAGORA = 402, ACCESSORY_FOXHAT = 403, ACCESSORY_BLACKGLASSES = 404, ACCESSORY_PLAYELF = 405, ACCESSORY_FISHINMOUTH = 406, ACCESSORY_BLUERIBBON = 407, ACCESSORY_PHILIRHAT = 408, ACCESSORY_ACADEMY_NEWBIE = 409, ACCESSORY_ACADEMY_LV1 = 410, ACCESSORY_NEW_COWBOY = 411, ACCESSORY_BREAD2 = 412, ACCESSORY_WHITESNAKE = 413, ACCESSORY_SWEETCANDY = 414, ACCESSORY_POPCORN_HAT = 415, ACCESSORY_CAMPFIRE_HAT = 416, ACCESSORY_PORINGCAKE_HAT = 417, ACCESSORY_BEER_HAT = 418, ACCESSORY_CROWNBIRD = 419, ACCESSORY_SOLDIERHAT = 420, ACCESSORY_IFRIT_MASK = 421, ACCESSORY_IFRIT_EAR = 422, ACCESSORY_WORDBOOK = 423, ACCESSORY_LOVECHINA = 424, ACCESSORY_FANTAORANGE = 425, ACCESSORY_FANTAGRAPE = 426, ACCESSORY_KARADA_HAT = 427, ACCESSORY_REDTEA_HAT = 428, ACCESSORY_BREADHAT1 = 429, ACCESSORY_DOKEBIHAT = 430, ACCESSORY_FLAMECROWN = 431, ACCESSORY_CHICK_HAT2 = 432, ACCESSORY_BRAZIL4 = 433, ACCESSORY_GOLDENLAUREL = 434, ACCESSORY_COLA_CAN = 435, ACCESSORY_COKE_HAT = 436, ACCESSORY_BRIDE_FLOWER = 437, ACCESSORY_SKYGIRL_FLOWER = 438, ACCESSORY_HAIRBAND_GREEN = 439, ACCESSORY_HAIRBAND_RED = 440, ACCESSORY_HAIRBAND_BLUE = 441, ACCESSORY_HAIRBAND_WHITE = 442, ACCESSORY_NECKTIE = 443, ACCESSORY_BABYANGEL_STONE = 444, ACCESSORY_HAIRBRUSH = 445, ACCESSORY_CANDYIN_MOUTH = 446, ACCESSORY_CATFOOT = 447, ACCESSORY_FROGHAT = 448, ACCESSORY_FACEBOX1 = 449, ACCESSORY_FACEBOX2 = 450, ACCESSORY_SUNHAT = 451, ACCESSORY_DRAGON_GOLD = 452, ACCESSORY_DRAGON_SILVER = 453, ACCESSORY_DRAGON_BRONZE = 454, ACCESSORY_RABBITHAT = 455, ACCESSORY_WINDTOY_HAT = 456, ACCESSORY_EVOLVED_DRAGON = 457, ACCESSORY_EVOLVED_WHISPER = 458, ACCESSORY_BIGNAIL_SCARF = 459, ACCESSORY_RAINBOW_SCARF = 460, ACCESSORY_JAHA_DOLL = 461, ACCESSORY_CELESTIAL_HAT = 462, ACCESSORY_WIND_MILESTONE = 463, ACCESSORY_HELM_OF_DRAGOON = 464, ACCESSORY_PARADE_CAP = 465, ACCESSORY_NOBLE_HAT = 466, ACCESSORY_EYES_OF_DARKNESS = 467, ACCESSORY_HAIRBAND_OF_REGINLEIF = 468, ACCESSORY_RED_WHITE_HAT = 469, ACCESSORY_FORCEPS_HAIRPIN = 470, ACCESSORY_NOTICE_BOARD = 471, ACCESSORY_CUBE_MASK = 472, ACCESSORY_HAIRBAND_OF_GRANDPECO = 473, ACCESSORY_BR_FLAG_BANDANNA = 474, ACCESSORY_CLASSIC_HAT = 475, ACCESSORY_SHAMAN_STUFF = 476, ACCESSORY_BZOFNIL_WING = 477, ACCESSORY_HERMOZ_CAP = 478, ACCESSORY_DARKKNIGHT_MASK = 479, ACCESSORY_ODIN_MASK = 480, ACCESSORY_RED_PHD_HAT = 481, ACCESSORY_TAIWANFLAG = 482, ACCESSORY_TIGERFACE = 483, ACCESSORY_LOVEDADDY = 484, ACCESSORY_ANUBIS_HELM = 485, ACCESSORY_HAT_OF_OUTLAW = 486, ACCESSORY_PIZZA_HAT = 487, ACCESSORY_ICECREAM_HAT = 488, ACCESSORY_CHINESE_5TH = 489, ACCESSORY_WOLFKING = 490, ACCESSORY_GANG_DOOGUN = 491, ACCESSORY_ASARA_FAIRY = 492, ACCESSORY_THUNDER_GOD = 493, ACCESSORY_DICE_HAT = 494, ACCESSORY_TIGER_KING = 495, ACCESSORY_PIRATE_PRIDE = 496, ACCESSORY_RABBIT_MAGIC = 497, ACCESSORY_BLACKELF_YEAR = 498, ACCESSORY_GOLDEN_TULIP = 499, ACCESSORY_LOVELYCHICK_HAT = 500, ACCESSORY_BLUE_PAJAMA = 501, ACCESSORY_PINK_PAJAMA = 502, ACCESSORY_SHARK_HAT = 503, ACCESSORY_STING_HAT = 504, ACCESSORY_CARNIBAL_HAT = 505, ACCESSORY_CARNIBAL_CIRCLET = 506, ACCESSORY_SHOWER_CAP = 507, ACCESSORY_SAMAN_BAIYA = 508, ACCESSORY_AQUARIUS_DIADEM = 509, ACCESSORY_AQUARIUS_CROWN = 510, ACCESSORY_PISCES_DIADEM = 511, ACCESSORY_PISCES_CROWN = 512, ACCESSORY_BIG_MAJESTIC2 = 513, ACCESSORY_PEACOCK_FEATHER = 514, ACCESSORY_RABBITEAR2 = 515, ACCESSORY_FANTA_ZERO_LEMON_HAT = 516, ACCESSORY_SAKURA_MIST_HAT = 517, ACCESSORY_SAKURA_MILK_TEA_HAT = 518, ACCESSORY_FIRST_LEAF_TEA_HAT = 519, ACCESSORY_LADY_TANEE_DOLL = 520, ACCESSORY_LUNATIC_HAT = 521, ACCESSORY_KING_FROG_HAT = 522, ACCESSORY_EVIL_BONE_HAT = 523, ACCESSORY_KAMAGI_HAT = 524, ACCESSORY_BABYDRAGON_HAT = 525, ACCESSORY_SPARE_CARD = 526, ACCESSORY_QUATI_HAT = 527, ACCESSORY_TWOKAN_HAT = 528, ACCESSORY_SIDECAP = 529, ACCESSORY_JAGUAR_HAT = 530, ACCESSORY_ARIES_DIADEM = 531, ACCESSORY_ARIES_CROWN = 532, ACCESSORY_RJC_CATHUSA = 533, ACCESSORY_REDROSE = 534, ACCESSORY_KWG_BOGWAN = 535, ACCESSORY_KWG_WANGAN = 536, ACCESSORY_HOLY_EGG_HAT = 537, ACCESSORY_OCTOPUS_HAT = 538, ACCESSORY_LEAF_CAT_HAT = 539, ACCESSORY_FUR_SEAL_HAT = 540, ACCESSORY_WILD_ROSE_HAT = 541, ACCESSORY_SACI_HAT = 542, ACCESSORY_543 = 543, ACCESSORY_CROWN_OF_DECEIT = 544, ACCESSORY_DRAGON_ARHAT_MASK = 545, ACCESSORY_TIGER_ARHAT_MASK = 546, ACCESSORY_DOLOR_HAT = 547, ACCESSORY_BRIGHT_FURY = 548, ACCESSORY_RABBIT_BONNET = 549, ACCESSORY_GEMINI_DIADEM = 550, ACCESSORY_GEMINI_CROWN = 551, ACCESSORY_RASTA_WIG = 552, ACCESSORY_SAVAGE_BABY_HAT = 553, ACCESSORY_DOKEBI_HORN = 554, ACCESSORY_MOUTH_PENCIL = 555, ACCESSORY_ONIGIRI_HAT = 556, ACCESSORY_SAKE = 557, ACCESSORY_SATGAT = 558, ACCESSORY_RED_BERET = 559, ACCESSORY_CANCER_DIADEM = 560, ACCESSORY_CANCER_CROWN = 561, ACCESSORY_MAJESTIC_DEVIL = 562, ACCESSORY_MOGIKILLER = 563, ACCESSORY_RUNE_HAIRBAND = 564, ACCESSORY_LEO_CROWN = 565, ACCESSORY_LEO_DIADEM = 566, ACCESSORY_DESERT_PRINCE = 567, ACCESSORY_SIGRUNS_WING = 568, ACCESSORY_DONUT_MOUTH = 569, ACCESSORY_YUNO_EYE = 570, ACCESSORY_CLOVER_MOUTH = 571, ACCESSORY_GUM_MOUTH = 572, ACCESSORY_TWINGIRL_CROWN = 573, ACCESSORY_TWINGIRL_BOGWAN = 574, ACCESSORY_BRAZIL_RIBBON = 575, ACCESSORY_BRAZIL_BERE = 576, ACCESSORY_RTC_WINNER_ONLY = 577, ACCESSORY_RTC_SECOND_BEST = 578, ACCESSORY_RTC_THIRD_BEST = 579, ACCESSORY_CAMPUME_HAT = 580, ACCESSORY_LYRIA_DOLL_HAT = 581, ACCESSORY_DOROTHY_DOLL_HAT = 582, ACCESSORY_CHUNG_HAIRBAND = 583, ACCESSORY_ICE_WING_EAR = 584, ACCESSORY_TURTLE_HAT = 585, ACCESSORY_DARKNESS_HELM_J = 586, ACCESSORY_HOLY_MARCHING_HAT_J = 587, ACCESSORY_SCOOTER_HAT_J = 588, ACCESSORY_IMP_HAT = 589, ACCESSORY_SLEEPR_HAT = 590, ACCESSORY_GRYPHON_HAT = 591, ACCESSORY_RED_PIRATE_BANDANA = 592, ACCESSORY_LIBRA_CROWN = 593, ACCESSORY_LIBRA_DIADEM = 594, ACCESSORY_FILIR_WING = 595, ACCESSORY_MOOSOK_HAT = 596, ACCESSORY_GOLDEN_HAT = 597, ACCESSORY_SKULL_HOOD = 598, ACCESSORY_ANIV_STAR_HAT = 599, ACCESSORY_DROOPING_MOROCC_MINION = 600, ACCESSORY_SOUTHERN_CROSS = 601, ACCESSORY_HOME_CHERRY_BLOSSOM = 602, ACCESSORY_PIG_MONEYBOX = 603, ACCESSORY_PORING_LETTER = 604, ACCESSORY_SCORPIO_CROWN = 605, ACCESSORY_SCORPIO_DIADEM = 606, ACCESSORY_NOTATION_HAIRBAND = 607, ACCESSORY_ENGINEER_CAP = 608, ACCESSORY_HAWKEYES = 609, ACCESSORY_TRIANGLE_RUNE = 610, ACCESSORY_2009LOVE_DADDY = 611, ACCESSORY_612 = 612, ACCESSORY_PRIESTHAT = 613, ACCESSORY_NOFEAR_POQWER_HEADGEAR = 614, ACCESSORY_CACTUS_HAT = 615, ACCESSORY_SNOWMAN_HAT = 616, ACCESSORY_SAGITTARIUS_CROWN = 617, ACCESSORY_SAGITTARIUS_DIADEM = 618, ACCESSORY_SANTACAP = 619, ACCESSORY_ORANGE_STEM_HAT = 620, ACCESSORY_CAPRICORN_CROWN = 621, ACCESSORY_CAPRICORN_DIADEM = 622, ACCESSORY_RUNE_CIRCLET = 623, ACCESSORY_MITRA = 624, ACCESSORY_RANGER_GOGGLES = 625, ACCESSORY_DRIVER_BAND = 626, ACCESSORY_627 = 627, ACCESSORY_MINSTRELSONG_HAT = 628, ACCESSORY_629 = 629, ACCESSORY_630 = 630, ACCESSORY_631 = 631, ACCESSORY_632 = 632, ACCESSORY_633 = 633, ACCESSORY_634 = 634, ACCESSORY_635 = 635, ACCESSORY_NOAHS_HAT = 636, ACCESSORY_DRIVER_BAND2 = 637, ACCESSORY_SLOTH_HAT = 638, ACCESSORY_DUNEYRR_HELM = 639, ACCESSORY_RED_BUNNY_BAND = 640, ACCESSORY_BUZZY_BOL_BOARD = 641, ACCESSORY_BLACK_TAIL_RIBBON = 642, ACCESSORY_AMISTR_CAP = 643, ACCESSORY_SAMURAI_MASK = 644, ACCESSORY_SAKURA_CORONET= 645, ACCESSORY_GOLDEN_ANGEL= 646, ACCESSORY_FOOL_DAY_HAT= 647, ACCESSORY_GOLDEN_SAVAGE_HAT= 648, ACCESSORY_SPLASH_HAT= 649, ACCESSORY_FAMILY_HAT= 650, ACCESORY_RED_NAVY_HAT= 651, ACCESORY_BERET= 652, ACCESSORY_CHOCODONUT_MOUTH = 653, ACCESSORY_BLAZING_SUN = 654, ACCESSORY_REMOVER_HAT = 655, ACCESSORY_BLUE_ARARA_HAT = 656, ACCESSORY_DROOPING_BOTO = 657, ACCESSORY_TENDRILION_HAT = 658, ACCESSORY_PERSICA = 659, ACCESSORY_HOPLITE_HELMET = 660, ACCESSORY_3DGLASS = 661, ACCESSORY_YELLOWBUNNY_HAIRBAND = 662, ACCESSORY_PINKBUNNY_HAIRBAND = 663, ACCESSORY_GREENBUNNY_HAIRBAND = 664, ACCESSORY_OLD_ELFEAR = 665, ACCESSORY_THA_MAERO_MASK = 666, ACCESSORY_THANATOS_MAI_MASK = 667, ACCESSORY_TENKAIPPIN_RAMEN = 668, ACCESSORY_FISHPIN = 669, ACCESSORY_RED_DRESS_HAT = 670, ACCESSORY_PASSION_FB_HAT = 671, ACCESSORY_COOL_FB_HAT = 672, ACCESSORY_VICTORY_FB_HAT = 673, ACCESSORY_GLORY_FB_HAT = 674, ACCESSORY_UMBALA_SPIRIT = 675, ACCESSORY_HATTAH_BLACK = 676, ACCESSORY_GARUDA_HAT = 677, ACCESSORY_RWC2010_INDONESIA = 678, ACCESSORY_BLOODY_ANGEL_HAIRBAND = 679, ACCESSORY_BLOODY_ANGELWING_EAR = 680, ACCESSORY_SHINING_SUNFLOWER = 681, ACCESSORY_PARADISE_HAT = 682, ACCESSORY_RTC_WINNER_HEADGEAR = 683, ACCESSORY_RTC_2ND_HEADGEAR = 684, ACCESSORY_RTC_3RD_HEADGEAR = 685, ACCESSORY_JATI_CROWN = 686, ACCESSORY_EVILMARCHER_HAT = 687, ACCESSORY_THUNDERSTORM_CLOUD = 688, ACCESSORY_DOKKEBI_MASK = 689, ACCESSORY_WARTERMELON_HAT = 690, ACCESSORY_DARK_PUMPKIN_HAT = 691, ACCESSORY_DROOPING_NEKO_CRU = 692, ACCESSORY_THA_DESPERO_MASK = 693, ACCESSORY_DROOPING_PERMETER = 694, ACCESSORY_BUTTERFLYWINGS_EAR = 695, ACCESSORY_SCREW_STUCK_HEAD = 696, ACCESSORY_HEART_EYEBANDAGE1 = 697, ACCESSORY_HEART_EYEBANDAGE2 = 698, ACCESSORY_CHICKEN_BILL = 699, ACCESSORY_CHARLIES_BEARD = 700, ACCESSORY_YELLOW_HAT = 701, ACCESSORY_SINGING_BIRD = 702, ACCESSORY_CHICKEN_CREST = 703, ACCESSORY_RAINBOW = 704, ACCESSORY_RAIN_CLOUD = 705, ACCESSORY_CHARLIES_HAT = 706, ACCESSORY_MINI_CROWN1 = 707, ACCESSORY_HEART_RIBBON_BAND = 708, ACCESSORY_HONEYBEE_HAT = 709, ACCESSORY_FANCY_PHANTOM_MAS = 710, ACCESSORY_PUPPY_GRASS = 711, ACCESSORY_DEVIL_WHISPER = 712, ACCESSORY_SKULL_CAP = 713, ACCESSORY_EVIL_MASK = 714, ACCESSORY_LITTLE_FHAT = 715, ACCESSORY_LOVE_GUARD = 716, ACCESSORY_WITCHS_HAT = 717, ACCESSORY_BLACKRABBIT_BAND = 718, ACCESSORY_WHITERABBIT_BAND = 719, ACCESSORY_LOVER_IN_MOUTH = 720, ACCESSORY_CAMPUS_FESTIVAL = 721, ACCESSORY_TAINI_CAP = 722, ACCESSORY_BUTTERFLY_HAIRPIN = 723, ACCESSORY_ASGARD_BLESS = 724, ACCESSORY_GALAXY_CIRCLET = 725, ACCESSORY_MALANGDO_HAT = 726, ACCESSORY_MINI_TREE = 727, ACCESSORY_KING_PRAWN_HAT = 728, ACCESSORY_GENERAL_HELMET = 729, ACCESSORY_SINSUNCHO_HAT = 730, ACCESSORY_B_FEATHER_BERET = 731, ACCESSORY_BONE_HAT = 732, ACCESSORY_HEART_WING_HAIRBAND = 733, ACCESSORY_LOVE_PIECE = 734, ACCESSORY_ST_PAT_HAT = 735, ACCESSORY_NUT_DONUT_MOUTH = 736, ACCESSORY_STRETCHED_NOSE = 737, ACCESSORY_SOFT_SHEEP_HAT = 738, ACCESSORY_ANCIENT_GOLD_ADORNMENT = 739, ACCESSORY_LUCKY_HAT = 740, ACCESSORY_WHITE_FEATHER = 741, ACCESSORY_LORD_OF_DEATH = 742, ACCESSORY_WUNDERKAMMER = 743, ACCESSORY_YINYANG_EARRING = 744, ACCESSORY_9TH_ANNIVERSARY = 745, ACCESSORY_YGGDRASIL_CROWN = 746, ACCESSORY_RED_TIGER_MASK = 747, ACCESSORY_BLUE_TIGER_MASK = 748, ACCESSORY_NAVY_DROOPING_KITTY = 749, ACCESSORY_BROWN_DROOPING_KITTY = 750, ACCESSORY_ORANGE_BUNNY_BAND = 751, ACCESSORY_VIOLET_BUNNY_BAND = 752, ACCESSORY_BLUE_BUNNY_BAND = 753, ACCESSORY_SILVAH_BUNNY_BAND = 754, ACCESSORY_STRAWBERRY_HAT = 755, ACCESSORY_NESTEA_HAT = 756, ACCESSORY_HORN_OF_ANCIENT = 757, ACCESSORY_SPROUT_HAT = 758, ACCESSORY_MERCURY_HELM = 759, ACCESSORY_MASK_OF_BLACKDEVIL = 760, ACCESSORY_CATEAR_BERET = 761, ACCESSORY_RED_TAMOSHANTER = 762, ACCESSORY_WATERMELON_OF_A_MOUTHFUL = 763, ACCESSORY_1ST_ROCKET_HELM = 764, ACCESSORY_2ND_ROCKET_HELM = 765, ACCESSORY_DARK_AGE = 766, ACCESSORY_TEAR_DROP = 767, ACCESSORY_3RD_ROCKET_HELM = 768, ACCESSORY_RWC_ROCKET_HELM = 769, ACCESSORY_WHITE_MUSANG_HAT = 770, ACCESSORY_BLACK_MUSANG_HAT = 771, ACCESSORY_INJURED_EYEPATCH = 772, ACCESSORY_LONG_TONGUE = 773, ACCESSORY_ONIGIRI_IN_MOUTH = 774, ACCESSORY_AIRPLANE_HAT = 775, ACCESSORY_THIEF_BANDANA = 776, ACCESSORY_GELATO_HAT = 777, ACCESSORY_7TH_ANNI_HAT_B = 778, ACCESSORY_HEART_EYEBANDAGE = 779, ACCESSORY_FULL_MOON = 780, ACCESSORY_TARE_DOMOVOI = 781, ACCESSORY_FALCON_MASK = 782, ACCESSORY_DESERT_WOLF_HAT = 783, ACCESSORY_DROOPING_ALICEL = 784, ACCESSORY_PETITE_CHEF_HAT = 785, ACCESSORY_PORING_CLIP_YELLOW = 786, ACCESSORY_PORING_CLIP_PINK = 787, ACCESSORY_PORING_CLIP_GREEN = 788, ACCESSORY_PORING_CLIP_BLUE = 789, ACCESSORY_BRIDES_BOW = 790, ACCESSORY_CITRON_HAT = 791, ACCESSORY_NAVY_HAT = 792, ACCESSORY_STARFISH_BAND = 793, ACCESSORY_RIBBON_MAGICIANHAT = 794, ACCESSORY_SCISSORS_REPLICA = 795, ACCESSORY_ROCK_REPLICA = 796, ACCESSORY_PAPER_REPLICA = 797, ACCESSORY_SAILOR_HAT = 798, ACCESSORY_MILKCOW_HAT = 799, ACCESSORY_STAR_EYEBANDAGE = 800, ACCESSORY_TONGUE_CHARM = 801, ACCESSORY_LUDE_MASK = 802, ACCESSORY_IGNIS_CAP = 803, ACCESSORY_VANARGAND_HELM = 804, ACCESSORY_DEVI_HEADPHONE = 805, ACCESSORY_SS_BANDANA = 806, ACCESSORY_THIEF_SPECTACLE = 807, ACCESSORY_BOITATA_HAT = 808, ACCESSORY_INDIAN_FEATHER = 809, ACCESSORY_BLITZ_HELMET = 810, ACCESSORY_ANTLER_GENTLEHAT = 811, ACCESSORY_SUNGLASS_BASEBALLCAP = 812, ACCESSORY_BLIND_GLASS = 813, ACCESSORY_ORANGE_MOUTH = 814, ACCESSORY_COMPACTDISK_MOUTH = 815, ACCESSORY_CAT_LACE_HEADBAND = 816, ACCESSORY_HANDKERCHIEF_MOUTH = 818, ACCESSORY_COWHIDE_HAT = 819, ACCESSORY_TARE_POPEDOLL = 817, ACCESSORY_FLYWING_HAT = 820, ACCESSORY_GREENAPPLE_HAT = 821, ACCESSORY_HEXAGON_GLASSES = 822, ACCESSORY_CHERRYBLOSSOMS_MOUTH = 823, ACCESSORY_GREENONION_MOUTH = 824, ACCESSORY_ABACUS_MOUTH = 825, ACCESSORY_FROGHAT_T = 826, ACCESSORY_PUPPY_EAR_HAT = 827, ACCESSORY_TEAR = 828, ACCESSORY_CARROT_MOUTH = 829, ACCESSORY_FANCY_HIGHCAP = 830, ACCESSORY_STAR_DUST_HAIRBAND = 831, ACCESSORY_2011_RMSC = 832, --833-835 free ACCESSORY_RUDOLPH_HEADBAND = 836, ACCESSORY_MIC_HAT = 837, ACCESSORY_SLEEPINGCAT_HAT = 838, ACCESSORY_TW_REDBANDANA = 839, ACCESSORY_PHOENIX_HELMET = 840, ACCESSORY_ORANGE_HAT = 841, ACCESSORY_SYRINGE_MOUTH = 842, ACCESSORY_CHEESE_CRACK_MOUTH = 843, ACCESSORY_HUNGRY_BIGFISH_HAT = 844, ACCESSORY_RABBIT_RIBBON_HAT = 845, ACCESSORY_ANTIQUITY_HELMET = 846, ACCESSORY_SHAVE_CREAM = 847, ACCESSORY_PLANTSTEM_MOUTH = 848, ACCESSORY_OLIVER_WOLF_HOOD = 849, ACCESSORY_INSECTIVOROUS_PLANT_HAIRPIN = 850, ACCESSORY_CAN_HAT = 851, ACCESSORY_CANNIBAL_FLOW_HAT = 852, ACCESSORY_CANDY_HAT = 853, ACCESSORY_BLACKSWEATER_HAT = 854, ACCESSORY_SUGARFRUIT_MOUTH = 855, ACCESSORY_UNIQUE_GLASSES = 856, ACCESSORY_FAN_MOUTH = 857, ACCESSORY_MONKYCOAT_HAT = 858, ACCESSORY_DRINKINGHIPPO_HAT = 859, ACCESSORY_THOTH_OFFCIAL_HAT = 860, ACCESSORY_STRAWBERRY_MOUTH = 861, ACCESSORY_FLIP_HAT = 862, ACCESSORY_ASCENSION_BLACK_DRAGON = 863, ACCESSORY_ROSE_HEADBAND = 864, ACCESSORY_SWEETVALENTINE_HAT = 865, ACCESSORY_AURAQUARTZ_CROWN = 866, ACCESSORY_RABBIT_KNITHAT = 867, ACCESSORY_SKYMET = 868, ACCESSORY_SEDORA_HAT = 869, ACCESSORY_AEGIR_HELM = 870, ACCESSORY_MVP_BASKETHAT = 871, ACCESSORY_CRITURA_HAT = 872, ACCESSORY_MAGICAL_BOOSTER = 873, ACCESSORY_FUSION_RING = 2000 } This is my accname_eng.lua,, compiled it later on and put in luafiles514/lua files/datainfo/ AccNameTable_Eng = { [ACCESSORY_IDs.ACCESSORY_GOGGLES] = "_GOGGLES", [ACCESSORY_IDs.ACCESSORY_CATTYHAIRBAND] = "_CATTYHAIRBAND", [ACCESSORY_IDs.ACCESSORY_GLASS] = "_GLASS", [ACCESSORY_IDs.ACCESSORY_FLOWER] = "_FLOWER", [ACCESSORY_IDs.ACCESSORY_FLORALHAIRBAND] = "_FLORALHAIRBAND", [ACCESSORY_IDs.ACCESSORY_HOOD] = "_HOOD", [ACCESSORY_IDs.ACCESSORY_ROUNDCAP] = "_ROUNDCAP", [ACCESSORY_IDs.ACCESSORY_FLUMASK] = "_FLUMASK", [ACCESSORY_IDs.ACCESSORY_HAIRBAND] = "_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_DIVERSGOGGLES] = "_DIVERSGOGGLES", [ACCESSORY_IDs.ACCESSORY_BIRETTA] = "_BIRETTA", [ACCESSORY_IDs.ACCESSORY_SUNGLASS] = "_SUNGLASS", [ACCESSORY_IDs.ACCESSORY_EYEBANDAGE] = "_EYEBANDAGE", [ACCESSORY_IDs.ACCESSORY_CAP] = "_CAP", [ACCESSORY_IDs.ACCESSORY_BUNNYBAND] = "_BUNNYBAND", [ACCESSORY_IDs.ACCESSORY_HAT] = "_HAT", [ACCESSORY_IDs.ACCESSORY_RIBBON] = "_RIBBON", [ACCESSORY_IDs.ACCESSORY_CIRCLET] = "_CIRCLET", [ACCESSORY_IDs.ACCESSORY_TIARA] = "_TIARA", [ACCESSORY_IDs.ACCESSORY_SANTAHAT] = "_SANTAHAT", [ACCESSORY_IDs.ACCESSORY_BEARD] = "_BEARD", [ACCESSORY_IDs.ACCESSORY_MUSTACHE] = "_MUSTACHE", [ACCESSORY_IDs.ACCESSORY_SPECTACLE] = "_SPECTACLE", [ACCESSORY_IDs.ACCESSORY_BLACK_BEARD] = "_BLACK_BEARD", [ACCESSORY_IDs.ACCESSORY_WHITE_BEARD] = "_WHITE_BEARD", [ACCESSORY_IDs.ACCESSORY_QUALITY_SUNGLASS] = "_QUALITY_SUNGLASS", [ACCESSORY_IDs.ACCESSORY_SPIN_GLASS] = "_SPIN_GLASS", [ACCESSORY_IDs.ACCESSORY_LARGE_RIBBON] = "_LARGE_RIBBON", [ACCESSORY_IDs.ACCESSORY_SWEET_GENTLE] = "_SWEET_GENTLE", [ACCESSORY_IDs.ACCESSORY_GOLDEN_HEADGEAR] = "_GOLDEN_HEADGEAR", [ACCESSORY_IDs.ACCESSORY_OLDSTER_ROMANCE] = "_OLDSTER_ROMANCE", [ACCESSORY_IDs.ACCESSORY_WESTERN_GRACE] = "_WESTERN_GRACE", [ACCESSORY_IDs.ACCESSORY_CORONET] = "_CORONET", [ACCESSORY_IDs.ACCESSORY_HAIR_STRING] = "_HAIR_STRING", [ACCESSORY_IDs.ACCESSORY_PRIEST_CAP] = "_PRIEST_CAP", [ACCESSORY_IDs.ACCESSORY_WIZARD_HAT] = "_WIZARD_HAT", [ACCESSORY_IDs.ACCESSORY_SUNFLOWER] = "_SUNFLOWER", [ACCESSORY_IDs.ACCESSORY_ANGEL_HAIRBAND] = "_ANGEL_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_DEVIL_HAIRBAND] = "_DEVIL_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_HELM] = "_HELM", [ACCESSORY_IDs.ACCESSORY_MAJESTIC_GOUT] = "_MAJESTIC_GOUT", [ACCESSORY_IDs.ACCESSORY_WHITE_HORN] = "_WHITE_HORN", [ACCESSORY_IDs.ACCESSORY_SHARP_HEADGEAR] = "_SHARP_HEADGEAR", [ACCESSORY_IDs.ACCESSORY_WEDDING_VEIL] = "_WEDDING_VEIL", [ACCESSORY_IDs.ACCESSORY_CROWN] = "_CROWN", [ACCESSORY_IDs.ACCESSORY_PROPELLER] = "_PROPELLER", [ACCESSORY_IDs.ACCESSORY_TINY_EYE_GLASSES] = "_TINY_EYE_GLASSES", [ACCESSORY_IDs.ACCESSORY_PRONTERA_ARMY_CAP] = "_PRONTERA_ARMY_CAP", [ACCESSORY_IDs.ACCESSORY_PIERROTS_NOSE] = "_PIERROTS_NOSE", [ACCESSORY_IDs.ACCESSORY_PIRATES_EYEBANDAGE] = "_PIRATES_EYEBANDAGE", [ACCESSORY_IDs.ACCESSORY_MUNAK_TURBAN] = "_MUNAK_TURBAN", [ACCESSORY_IDs.ACCESSORY_HIP_HOP_MASK] = "_HIP_HOP_MASK", [ACCESSORY_IDs.ACCESSORY_IRONCANE] = "_IRONCANE", [ACCESSORY_IDs.ACCESSORY_CIGAR] = "_CIGAR", [ACCESSORY_IDs.ACCESSORY_CIGAR_PIPE] = "_CIGAR_PIPE", [ACCESSORY_IDs.ACCESSORY_SENTIMENTAL_FLOWER] = "_SENTIMENTAL_FLOWER", [ACCESSORY_IDs.ACCESSORY_SENTIMENTAL_BLADE] = "_SENTIMENTAL_BLADE", [ACCESSORY_IDs.ACCESSORY_HEY_DUDE] = "_HEY_DUDE", [ACCESSORY_IDs.ACCESSORY_STOP_SIGNPOST] = "_STOP_SIGNPOST", [ACCESSORY_IDs.ACCESSORY_DOCTOR_BAND] = "_DOCTOR_BAND", [ACCESSORY_IDs.ACCESSORY_JAPANESE_GHOST] = "_JAPANESE_GHOST", [ACCESSORY_IDs.ACCESSORY_SCARLET_BANDANA] = "_SCARLET_BANDANA", [ACCESSORY_IDs.ACCESSORY_EAGLE_EYES] = "_EAGLE_EYES", [ACCESSORY_IDs.ACCESSORY_NURSE_CAP] = "_NURSE_CAP", [ACCESSORY_IDs.ACCESSORY_SMILE] = "_SMILE", [ACCESSORY_IDs.ACCESSORY_BOMB_WICK] = "_BOMB_WICK", [ACCESSORY_IDs.ACCESSORY_SAHT_GAHT] = "_SAHT_GAHT", [ACCESSORY_IDs.ACCESSORY_MASQUERADE] = "_MASQUERADE", [ACCESSORY_IDs.ACCESSORY_SERAPHIC_RING] = "_SERAPHIC_RING", [ACCESSORY_IDs.ACCESSORY_EARMUFFS] = "_EARMUFFS", [ACCESSORY_IDs.ACCESSORY_MOOSE_HORN] = "_MOOSE_HORN", [ACCESSORY_IDs.ACCESSORY_THE_APPLE_OF_WILHELM_TELL] = "_THE_APPLE_OF_WILHELM_TELL", [ACCESSORY_IDs.ACCESSORY_TINKER_BELL] = "_TINKER_BELL", [ACCESSORY_IDs.ACCESSORY_PIRATE_BANDANA] = "_PIRATE_BANDANA", [ACCESSORY_IDs.ACCESSORY_MUNCHS_SCREAM] = "_MUNCHS_SCREAM", [ACCESSORY_IDs.ACCESSORY_POO_POO_HAT] = "_POO_POO_HAT", [ACCESSORY_IDs.ACCESSORY_KOEAN_FUNERAL_COSTUME] = "_KOEAN_FUNERAL_COSTUME", [ACCESSORY_IDs.ACCESSORY_BUTTERFLY_MASQUE] = "_BUTTERFLY_MASQUE", [ACCESSORY_IDs.ACCESSORY_WELDER_MASK] = "_WELDER_MASK", [ACCESSORY_IDs.ACCESSORY_PRETEND_TO_BE_MURDERED] = "_PRETEND_TO_BE_MURDERED", [ACCESSORY_IDs.ACCESSORY_STAR_DUST] = "_STAR_DUST", [ACCESSORY_IDs.ACCESSORY_EYE_MASK] = "_EYE_MASK", [ACCESSORY_IDs.ACCESSORY_BINOCULARS] = "_BINOCULARS", [ACCESSORY_IDs.ACCESSORY_GOBLIN_MASQUE] = "_GOBLIN_MASQUE", [ACCESSORY_IDs.ACCESSORY_GREEN_FEELER] = "_GREEN_FEELER", [ACCESSORY_IDs.ACCESSORY_VIKING_HELMET] = "_VIKING_HELMET", [ACCESSORY_IDs.ACCESSORY_HEAD_SET] = "_HEAD_SET", [ACCESSORY_IDs.ACCESSORY_GEMMED_CROWN] = "_GEMMED_CROWN", [ACCESSORY_IDs.ACCESSORY_PIERROT_CROWN] = "_PIERROT_CROWN", [ACCESSORY_IDs.ACCESSORY_OXYGEN_MASK] = "_OXYGEN_MASK", [ACCESSORY_IDs.ACCESSORY_GAS_MASK] = "_GAS_MASK", [ACCESSORY_IDs.ACCESSORY_MACHO_MANS_GLASSES] = "_MACHO_MANS_GLASSES", [ACCESSORY_IDs.ACCESSORY_LORD_CIRCLET] = "_LORD_CIRCLET", [ACCESSORY_IDs.ACCESSORY_PUPPY_LOVE] = "_PUPPY_LOVE", [ACCESSORY_IDs.ACCESSORY_CRASH_HELMET] = "_CRASH_HELMET", [ACCESSORY_IDs.ACCESSORY_INDIAN_BAND] = "_INDIAN_BAND", [ACCESSORY_IDs.ACCESSORY_AERIAL] = "_AERIAL", [ACCESSORY_IDs.ACCESSORY_BA_HAT] = "_BA_HAT", [ACCESSORY_IDs.ACCESSORY_HORN_OF_LORD_KAHO] = "_HORN_OF_LORD_KAHO", [ACCESSORY_IDs.ACCESSORY_FIN_HELM] = "_FIN_HELM", [ACCESSORY_IDs.ACCESSORY_EGG_SHELL] = "_EGG_SHELL", [ACCESSORY_IDs.ACCESSORY_KOREAN_SCHOOL_HAT] = "_KOREAN_SCHOOL_HAT", [ACCESSORY_IDs.ACCESSORY_BONE_HELM] = "_BONE_HELM", [ACCESSORY_IDs.ACCESSORY_WILHELM_TELLS_HAT] = "_WILHELM_TELLS_HAT", [ACCESSORY_IDs.ACCESSORY_CORSAIR] = "_CORSAIR", [ACCESSORY_IDs.ACCESSORY_BAND_OF_KAFRA] = "_BAND_OF_KAFRA", [ACCESSORY_IDs.ACCESSORY_LOST_MONEY_HEART] = "_LOST_MONEY_HEART", [ACCESSORY_IDs.ACCESSORY_BUNDLE] = "_BUNDLE", [ACCESSORY_IDs.ACCESSORY_CAKE_HAT] = "_CAKE_HAT", [ACCESSORY_IDs.ACCESSORY_ANGEL_HELM] = "_ANGEL_HELM", [ACCESSORY_IDs.ACCESSORY_COOKER_HAT] = "_COOKER_HAT", [ACCESSORY_IDs.ACCESSORY_MAGE_HAT] = "_MAGE_HAT", [ACCESSORY_IDs.ACCESSORY_CANDLE] = "_CANDLE", [ACCESSORY_IDs.ACCESSORY_SPORE_HAT] = "_SPORE_HAT", [ACCESSORY_IDs.ACCESSORY_PANDA_HAT] = "_PANDA_HAT", [ACCESSORY_IDs.ACCESSORY_MINE_HAT] = "_MINE_HAT", [ACCESSORY_IDs.ACCESSORY_OUTSIDE_HAT] = "_OUTSIDE_HAT", [ACCESSORY_IDs.ACCESSORY_RACCOON_HAT] = "_RACCOON_HAT", [ACCESSORY_IDs.ACCESSORY_LAMP_BAND] = "_LAMP_BAND", [ACCESSORY_IDs.ACCESSORY_PORING_HAT] = "_PORING_HAT", [ACCESSORY_IDs.ACCESSORY_CROSS_BAND] = "_CROSS_BAND", [ACCESSORY_IDs.ACCESSORY_NUT_SHELL] = "_NUT_SHELL", [ACCESSORY_IDs.ACCESSORY_YOUNG_DEVIL_HAT] = "_YOUNG_DEVIL_HAT", [ACCESSORY_IDs.ACCESSORY_SPOT_EGG_SHELL] = "_SPOT_EGG_SHELL", [ACCESSORY_IDs.ACCESSORY_DYE_RED] = "_DYE_RED", [ACCESSORY_IDs.ACCESSORY_HEART_HAIRPIN] = "_HEART_HAIRPIN", [ACCESSORY_IDs.ACCESSORY_HAIR_CLOTH] = "_HAIR_CLOTH", [ACCESSORY_IDs.ACCESSORY_GHOST_MASK] = "_GHOST_MASK", [ACCESSORY_IDs.ACCESSORY_DEVIL_WING] = "_DEVIL_WING", [ACCESSORY_IDs.ACCESSORY_WIZARD_HEADGEAR] = "_WIZARD_HEADGEAR", [ACCESSORY_IDs.ACCESSORY_FASION_SUNGLASSES] = "_FASION_SUNGLASSES", [ACCESSORY_IDs.ACCESSORY_MOON_HEARPIN] = "_MOON_HEARPIN", [ACCESSORY_IDs.ACCESSORY_STRIPES_BAND] = "_STRIPES_BAND", [ACCESSORY_IDs.ACCESSORY_MYSTIC_NUT_SHELL] = "_MYSTIC_NUT_SHELL", [ACCESSORY_IDs.ACCESSORY_CAT_BELL] = "_CAT_BELL", [ACCESSORY_IDs.ACCESSORY_BLUE_BAND] = "_BLUE_BAND", [ACCESSORY_IDs.ACCESSORY_SPHINX_HAT] = "_SPHINX_HAT", [ACCESSORY_IDs.ACCESSORY_SUN_GOD_HAT] = "_SUN_GOD_HAT", [ACCESSORY_IDs.ACCESSORY_BOMGUN_HAT] = "_BOMGUN_HAT", [ACCESSORY_IDs.ACCESSORY_LOVE_NUT] = "_LOVE_NUT", [ACCESSORY_IDs.ACCESSORY_BLACKCAT_EAR] = "_BLACKCAT_EAR", [ACCESSORY_IDs.ACCESSORY_LAZYCAT] = "_LAZYCAT", [ACCESSORY_IDs.ACCESSORY_BEAR_HAT] = "_BEAR_HAT", [ACCESSORY_IDs.ACCESSORY_KOCAL_HAT] = "_KOCAL_HAT", [ACCESSORY_IDs.ACCESSORY_FLOWER_HAIRPIN] = "_FLOWER_HAIRPIN", [ACCESSORY_IDs.ACCESSORY_MILZIP_HAT] = "_MILZIP_HAT", [ACCESSORY_IDs.ACCESSORY_DAEILBAND] = "_DAEILBAND", [ACCESSORY_IDs.ACCESSORY_LEAF_HELM] = "_LEAF_HELM", [ACCESSORY_IDs.ACCESSORY_FISH_HAT] = "_FISH_HAT", [ACCESSORY_IDs.ACCESSORY_SERCUBUS_HORN] = "_SERCUBUS_HORN", [ACCESSORY_IDs.ACCESSORY_SOM_BRERO] = "_SOM_BRERO", [ACCESSORY_IDs.ACCESSORY_DEVILWING_EAR] = "_DEVILWING_EAR", [ACCESSORY_IDs.ACCESSORY_FOX_MASK] = "_FOX_MASK", [ACCESSORY_IDs.ACCESSORY_FIRE_HEADBAND] = "_FIRE_HEADBAND", [ACCESSORY_IDs.ACCESSORY_INDIAN_HEADBAND] = "_INDIAN_HEADBAND", [ACCESSORY_IDs.ACCESSORY_INCUBUS_HORN] = "_INCUBUS_HORN", [ACCESSORY_IDs.ACCESSORY_STRAIGHT_HAT] = "_STRAIGHT_HAT", [ACCESSORY_IDs.ACCESSORY_ANGELWING_EAR] = "_ANGELWING_EAR", [ACCESSORY_IDs.ACCESSORY_COWBOY_HAT] = "_COWBOY_HAT", [ACCESSORY_IDs.ACCESSORY_FUR_HAT] = "_FUR_HAT", [ACCESSORY_IDs.ACCESSORY_TULIP_HAIRPIN] = "_TULIP_HAIRPIN", [ACCESSORY_IDs.ACCESSORY_HAEDAL_HAT] = "_HAEDAL_HAT", [ACCESSORY_IDs.ACCESSORY_X_HAIRPIN] = "_X_HAIRPIN", [ACCESSORY_IDs.ACCESSORY_QUEEN_HELM] = "_QUEEN_HELM", [ACCESSORY_IDs.ACCESSORY_MISTRESS_CROWN] = "_MISTRESS_CROWN", [ACCESSORY_IDs.ACCESSORY_MUSHROOM_HEADBAND] = "_MUSHROOM_HEADBAND", [ACCESSORY_IDs.ACCESSORY_REDTAIL_RIBBON] = "_REDTAIL_RIBBON", [ACCESSORY_IDs.ACCESSORY_LAZY_RACCOON] = "_LAZY_RACCOON", [ACCESSORY_IDs.ACCESSORY_BELOWEAR_RIBBON] = "_BELOWEAR_RIBBON", [ACCESSORY_IDs.ACCESSORY_ALARM_MASK] = "_ALARM_MASK", [ACCESSORY_IDs.ACCESSORY_GOBLIN_MASK1] = "_GOBLIN_MASK1", [ACCESSORY_IDs.ACCESSORY_GOBLIN_MASK2] = "_GOBLIN_MASK2", [ACCESSORY_IDs.ACCESSORY_GOBLIN_MASK3] = "_GOBLIN_MASK3", [ACCESSORY_IDs.ACCESSORY_GOBLIN_MASK4] = "_GOBLIN_MASK4", [ACCESSORY_IDs.ACCESSORY_BIGGOLDEN_BELL] = "_BIGGOLDEN_BELL", [ACCESSORY_IDs.ACCESSORY_SISTER_HAT] = "_SISTER_HAT", [ACCESSORY_IDs.ACCESSORY_SISTER_HAT2] = "_SISTER_HAT2", [ACCESSORY_IDs.ACCESSORY_ORCHERO_HELM] = "_ORCHERO_HELM", [ACCESSORY_IDs.ACCESSORY_ORCHERO_HELM2] = "_ORCHERO_HELM2", [ACCESSORY_IDs.ACCESSORY_ASSASSIN_MASK] = "_ASSASSIN_MASK", [ACCESSORY_IDs.ACCESSORY_TIGER_MASK] = "_TIGER_MASK", [ACCESSORY_IDs.ACCESSORY_CAT_HAT] = "_CAT_HAT", [ACCESSORY_IDs.ACCESSORY_SALE_HAT] = "_SALE_HAT", [ACCESSORY_IDs.ACCESSORY_TAKIUS] = "_TAKIUS", [ACCESSORY_IDs.ACCESSORY_BATTLEONLINE] = "_BATTLEONLINE", [ACCESSORY_IDs.ACCESSORY_HAEBARAGI_PIN] = "_HAEBARAGI_PIN", [ACCESSORY_IDs.ACCESSORY_BLACK_EYECOVER] = "_BLACK_EYECOVER", [ACCESSORY_IDs.ACCESSORY_TOAST] = "_TOAST", [ACCESSORY_IDs.ACCESSORY_DECTECTIVE_HAT] = "_DECTECTIVE_HAT", [ACCESSORY_IDs.ACCESSORY_CHAYANG_HAT] = "_CHAYANG_HAT", [ACCESSORY_IDs.ACCESSORY_BABY] = "_BABY", [ACCESSORY_IDs.ACCESSORY_DUCK_HAT] = "_DUCK_HAT", [ACCESSORY_IDs.ACCESSORY_SUNO_HAT] = "_SUNO_HAT", [ACCESSORY_IDs.ACCESSORY_ANGRY_MOUTH] = "_ANGRY_MOUTH", [ACCESSORY_IDs.ACCESSORY_BEONG_HAT] = "_BEONG_HAT", [ACCESSORY_IDs.ACCESSORY_COLDPROTECT_HAT] = "_COLDPROTECT_HAT", [ACCESSORY_IDs.ACCESSORY_BANANA_HAT] = "_BANANA_HAT", [ACCESSORY_IDs.ACCESSORY_MYSTICROSE] = "_MYSTICROSE", [ACCESSORY_IDs.ACCESSORY_PUPPY_EAR] = "_PUPPY_EAR", [ACCESSORY_IDs.ACCESSORY_ZIRTAS_MASK] = "_ZIRTAS_MASK", [ACCESSORY_IDs.ACCESSORY_BIRD_NEST] = "_BIRD_NEST", [ACCESSORY_IDs.ACCESSORY_LION_MASK] = "_LION_MASK", [ACCESSORY_IDs.ACCESSORY_CROSS_HELMET] = "_CROSS_HELMET", [ACCESSORY_IDs.ACCESSORY_ANGELING_HAT] = "_ANGELING_HAT", [ACCESSORY_IDs.ACCESSORY_GOAT_HAT] = "_GOAT_HAT", [ACCESSORY_IDs.ACCESSORY_PUMPKIN_HAT] = "_PUMPKIN_HAT", [ACCESSORY_IDs.ACCESSORY_CYCLOPS_EYE] = "_CYCLOPS_EYE", [ACCESSORY_IDs.ACCESSORY_ALICE_HAT] = "_ALICE_HAT", [ACCESSORY_IDs.ACCESSORY_MAGIC_EYES] = "_MAGIC_EYES", [ACCESSORY_IDs.ACCESSORY_PUYONG] = "_PUYONG", [ACCESSORY_IDs.ACCESSORY_PRETTY_RIBBON] = "_PRETTY_RIBBON", [ACCESSORY_IDs.ACCESSORY_MARIONET_HAT] = "_MARIONET_HAT", [ACCESSORY_IDs.ACCESSORY_MOON_HELM] = "_MOON_HELM", [ACCESSORY_IDs.ACCESSORY_GABUKI_MASK] = "_GABUKI_MASK", [ACCESSORY_IDs.ACCESSORY_KOKIRI_HAT] = "_KOKIRI_HAT", [ACCESSORY_IDs.ACCESSORY_BASEBALL_HAT] = "_BASEBALL_HAT", [ACCESSORY_IDs.ACCESSORY_GOOKGYEONG_HAT] = "_GOOKGYEONG_HAT", [ACCESSORY_IDs.ACCESSORY_SILVERTIARA] = "_SILVERTIARA", [ACCESSORY_IDs.ACCESSORY_PIERROT_CROWN_] = "_PIERROT_CROWN_", [ACCESSORY_IDs.ACCESSORY_MUSICHEADPHONE] = "_MUSICHEADPHONE", [ACCESSORY_IDs.ACCESSORY_BONGCROWN] = "_BONGCROWN", [ACCESSORY_IDs.ACCESSORY_ANGELING_PIN] = "_ANGELING_PIN", [ACCESSORY_IDs.ACCESSORY_GAKSITAL] = "_GAKSITAL", [ACCESSORY_IDs.ACCESSORY_FEATHER_BEREHAT] = "_FEATHER_BEREHAT", [ACCESSORY_IDs.ACCESSORY_VALKYRIE_HELMET] = "_VALKYRIE_HELMET", [ACCESSORY_IDs.ACCESSORY_BEREHAT] = "_BEREHAT", [ACCESSORY_IDs.ACCESSORY_SATOHAT] = "_SATOHAT", [ACCESSORY_IDs.ACCESSORY_AYAM] = "_AYAM", [ACCESSORY_IDs.ACCESSORY_NONAME] = "_NONAME", [ACCESSORY_IDs.ACCESSORY_HAHETAL] = "_HAHETAL", [ACCESSORY_IDs.ACCESSORY_LIONTAL] = "_LIONTAL", [ACCESSORY_IDs.ACCESSORY_GOLDTIARA] = "_GOLDTIARA", [ACCESSORY_IDs.ACCESSORY_DARKHELMET] = "_DARKHELMET", [ACCESSORY_IDs.ACCESSORY_DOGHAT] = "_DOGHAT", [ACCESSORY_IDs.ACCESSORY_BIRDHAT] = "_BIRDHAT", [ACCESSORY_IDs.ACCESSORY_CAPTAINHAT] = "_CAPTAINHAT", [ACCESSORY_IDs.ACCESSORY_BAYTREEHAT] = "_BAYTREEHAT", [ACCESSORY_IDs.ACCESSORY_GEOGRAPHER] = "_GEOGRAPHER", [ACCESSORY_IDs.ACCESSORY_TWINRIBBON] = "_TWINRIBBON", [ACCESSORY_IDs.ACCESSORY_SINGERHAT] = "_SINGERHAT", [ACCESSORY_IDs.ACCESSORY_LEAF] = "_LEAF", [ACCESSORY_IDs.ACCESSORY_BLACKRIBBON] = "_BLACKRIBBON", [ACCESSORY_IDs.ACCESSORY_YELLOWRIBBON] = "_YELLOWRIBBON", [ACCESSORY_IDs.ACCESSORY_GREENRIBBON] = "_GREENRIBBON", [ACCESSORY_IDs.ACCESSORY_PINKRIBBON] = "_PINKRIBBON", [ACCESSORY_IDs.ACCESSORY_REDRIBBON] = "_REDRIBBON", [ACCESSORY_IDs.ACCESSORY_ORANGERIBBON] = "_ORANGERIBBON", [ACCESSORY_IDs.ACCESSORY_WHITERIBBON] = "_WHITERIBBON", [ACCESSORY_IDs.ACCESSORY_LAZYRABBIT] = "_LAZYRABBIT", [ACCESSORY_IDs.ACCESSORY_MEGINCAP] = "_MEGINCAP", [ACCESSORY_IDs.ACCESSORY_PRIKACIRCLET] = "_PRIKACIRCLET", [ACCESSORY_IDs.ACCESSORY_COPOLA] = "_COPOLA", [ACCESSORY_IDs.ACCESSORY_MERONGMASK] = "_MERONGMASK", [ACCESSORY_IDs.ACCESSORY_WOOLCAP] = "_WOOLCAP", [ACCESSORY_IDs.ACCESSORY_ANGELKISS] = "_ANGELKISS", [ACCESSORY_IDs.ACCESSORY_MORPHISDOOGUN] = "_MORPHISDOOGUN", [ACCESSORY_IDs.ACCESSORY_MORIANEHELM] = "_MORIANEHELM", [ACCESSORY_IDs.ACCESSORY_GEVNEITUGOO] = "_GEVNEITUGOO", [ACCESSORY_IDs.ACCESSORY_WHITEFLOWER] = "_WHITEFLOWER", [ACCESSORY_IDs.ACCESSORY_GOLDENGORI] = "_GOLDENGORI", [ACCESSORY_IDs.ACCESSORY_LAUREL] = "_LAUREL", [ACCESSORY_IDs.ACCESSORY_RIDEWORD] = "_RIDEWORD", [ACCESSORY_IDs.ACCESSORY_YELLOW_BASEBALLCAP] = "_YELLOW_BASEBALLCAP", [ACCESSORY_IDs.ACCESSORY_FLYING_ANGEL] = "_FLYING_ANGEL", [ACCESSORY_IDs.ACCESSORY_DRESSHAT] = "_DRESSHAT", [ACCESSORY_IDs.ACCESSORY_SATELITE_HAIRBAND] = "_SATELITE_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_BLACK_BUNNYBAND] = "_BLACK_BUNNYBAND", [ACCESSORY_IDs.ACCESSORY_WALLYAHWA_HAT] = "_WALLYAHWA_HAT", [ACCESSORY_IDs.ACCESSORY_MARCHING_HAT] = "_MARCHING_HAT", [ACCESSORY_IDs.ACCESSORY_PROPELLER2] = "_PROPELLER2", [ACCESSORY_IDs.ACCESSORY_RED_DEVIRUCHI] = "_RED_DEVIRUCHI", [ACCESSORY_IDs.ACCESSORY_WHITE_DEVIRUCHI] = "_WHITE_DEVIRUCHI", [ACCESSORY_IDs.ACCESSORY_GRAY_DEVIRUCHI] = "_GRAY_DEVIRUCHI", [ACCESSORY_IDs.ACCESSORY_WHITE_LAZYCAT] = "_WHITE_LAZYCAT", [ACCESSORY_IDs.ACCESSORY_GRAY_LAZYCAT] = "_GRAY_LAZYCAT", [ACCESSORY_IDs.ACCESSORY_PINK_LAZYCAT] = "_PINK_LAZYCAT", [ACCESSORY_IDs.ACCESSORY_BLUE_LAZYCAT] = "_BLUE_LAZYCAT", [ACCESSORY_IDs.ACCESSORY_YELLOW_LAZYCAT] = "_YELLOW_LAZYCAT", [ACCESSORY_IDs.ACCESSORY_GRAY_FURHAT] = "_GRAY_FURHAT", [ACCESSORY_IDs.ACCESSORY_BLUE_FURHAT] = "_BLUE_FURHAT", [ACCESSORY_IDs.ACCESSORY_PINK_FURHAT] = "_PINK_FURHAT", [ACCESSORY_IDs.ACCESSORY_RED_MAGICIANHAT] = "_RED_MAGICIANHAT", [ACCESSORY_IDs.ACCESSORY_WHITE_MAGICIANHAT] = "_WHITE_MAGICIANHAT", [ACCESSORY_IDs.ACCESSORY_GRAY_MAGICIANHAT] = "_GRAY_MAGICIANHAT", [ACCESSORY_IDs.ACCESSORY_BLUE_MAGICIANHAT] = "_BLUE_MAGICIANHAT", [ACCESSORY_IDs.ACCESSORY_YELLOW_MAGICIANHAT] = "_YELLOW_MAGICIANHAT", [ACCESSORY_IDs.ACCESSORY_EARPLUG_HAT] = "_EARPLUG_HAT", [ACCESSORY_IDs.ACCESSORY_ELF_BLINDER] = "_ELF_BLINDER", [ACCESSORY_IDs.ACCESSORY_ELF_SUNGLASS] = "_ELF_SUNGLASS", [ACCESSORY_IDs.ACCESSORY_ANGEL_MIXHELM] = "_ANGEL_MIXHELM", [ACCESSORY_IDs.ACCESSORY_DEVIL_MIXHELM] = "_DEVIL_MIXHELM", [ACCESSORY_IDs.ACCESSORY_ROBOT_BLINDER] = "_ROBOT_BLINDER", [ACCESSORY_IDs.ACCESSORY_HUMAN_BLINDER] = "_HUMAN_BLINDER", [ACCESSORY_IDs.ACCESSORY_ROBOT_EAR] = "_ROBOT_EAR", [ACCESSORY_IDs.ACCESSORY_HUMAN_EAR] = "_HUMAN_EAR", [ACCESSORY_IDs.ACCESSORY_LAZY_NINETAIL] = "_LAZY_NINETAIL", [ACCESSORY_IDs.ACCESSORY_LAZY_LEAF] = "_LAZY_LEAF", [ACCESSORY_IDs.ACCESSORY_DEVILRING_HAT] = "_DEVILRING_HAT", [ACCESSORY_IDs.ACCESSORY_3PORINGS] = "_3PORINGS", [ACCESSORY_IDs.ACCESSORY_VALKYRIE_FEATHER] = "_VALKYRIE_FEATHER", [ACCESSORY_IDs.ACCESSORY_SOULESS_WING] = "_SOULESS_WING", [ACCESSORY_IDs.ACCESSORY_APRO_WIG] = "_APRO_WIG", [ACCESSORY_IDs.ACCESSORY_ATIATI_HAT] = "_ATIATI_HAT", [ACCESSORY_IDs.ACCESSORY_AUSTRALIA_HAT] = "_AUSTRALIA_HAT", [ACCESSORY_IDs.ACCESSORY_HAPPY_WIG] = "_HAPPY_WIG", [ACCESSORY_IDs.ACCESSORY_BRIGHT_WIG] = "_BRIGHT_WIG", [ACCESSORY_IDs.ACCESSORY_AMAZING_WIG] = "_AMAZING_WIG", [ACCESSORY_IDs.ACCESSORY_FANTASTIC_WIG] = "_FANTASTIC_WIG", [ACCESSORY_IDs.ACCESSORY_YELLOW_DOOGUN] = "_YELLOW_DOOGUN", [ACCESSORY_IDs.ACCESSORY_YELLOW_RIBBON] = "_YELLOW_RIBBON", [ACCESSORY_IDs.ACCESSORY_CHICK_HAT] = "_CHICK_HAT", [ACCESSORY_IDs.ACCESSORY_SUREON_CROWN] = "_SUREON_CROWN", [ACCESSORY_IDs.ACCESSORY_WINDMILL_HAIRPIN] = "_WINDMILL_HAIRPIN", [ACCESSORY_IDs.ACCESSORY_PECOPECO_HAT] = "_PECOPECO_HAT", [ACCESSORY_IDs.ACCESSORY_VACATION_HAT] = "_VACATION_HAT", [ACCESSORY_IDs.ACCESSORY_RED_GLASSES] = "_RED_GLASSES", [ACCESSORY_IDs.ACCESSORY_VANIL_HAT] = "_VANIL_HAT", [ACCESSORY_IDs.ACCESSORY_KETTLE_HAT] = "_KETTLE_HAT", [ACCESSORY_IDs.ACCESSORY_DRAGON_SKULL] = "_DRAGON_SKULL", [ACCESSORY_IDs.ACCESSORY_RAMYEON_HAT] = "_RAMYEON_HAT", [ACCESSORY_IDs.ACCESSORY_WHISPER_MASK] = "_WHISPER_MASK", [ACCESSORY_IDs.ACCESSORY_HORN_HAT] = "_HORN_HAT", [ACCESSORY_IDs.ACCESSORY_RUSSIA_RIBBON] = "_RUSSIA_RIBBON", [ACCESSORY_IDs.ACCESSORY_LOTUS_FLOWER] = "_LOTUS_FLOWER", [ACCESSORY_IDs.ACCESSORY_CEREMONIAL_CORONET] = "_CEREMONIAL_CORONET", [ACCESSORY_IDs.ACCESSORY_MANGMOK] = "_MANGMOK", [ACCESSORY_IDs.ACCESSORY_PIRATE_DAGGER] = "_PIRATE_DAGGER", [ACCESSORY_IDs.ACCESSORY_FREYA_CROWN] = "_FREYA_CROWN", [ACCESSORY_IDs.ACCESSORY_TROPICALFRUIT] = "_TROPICALFRUIT", [ACCESSORY_IDs.ACCESSORY_BRAZIL_HAT] = "_BRAZIL_HAT", [ACCESSORY_IDs.ACCESSORY_MOHIKAN] = "_MOHIKAN", [ACCESSORY_IDs.ACCESSORY_BANJAK_JEONGOO] = "_BANJAK_JEONGOO", [ACCESSORY_IDs.ACCESSORY_BIG_HIBISCUS] = "_BIG_HIBISCUS", [ACCESSORY_IDs.ACCESSORY_AYOTAYA_HAT] = "_AYOTAYA_HAT", [ACCESSORY_IDs.ACCESSORY_DIA_DAM] = "_DIA_DAM", [ACCESSORY_IDs.ACCESSORY_HAKI_MASK] = "_HAKI_MASK", [ACCESSORY_IDs.ACCESSORY_OBSERVER] = "_OBSERVER", [ACCESSORY_IDs.ACCESSORY_UMBRELLA_HAT] = "_UMBRELLA_HAT", [ACCESSORY_IDs.ACCESSORY_FISHER_HAT] = "_FISHER_HAT", [ACCESSORY_IDs.ACCESSORY_PORINGPARTY_HAT] = "_PORINGPARTY_HAT", [ACCESSORY_IDs.ACCESSORY_BLUE_ANGELING_HAT] = "_BLUE_ANGELING_HAT", [ACCESSORY_IDs.ACCESSORY_INDONESIA_HARIBAND] = "_INDONESIA_HARIBAND", [ACCESSORY_IDs.ACCESSORY_SCARF] = "_SCARF", [ACCESSORY_IDs.ACCESSORY_LITTLEANGELDOLL] = "_LITTLEANGELDOLL", [ACCESSORY_IDs.ACCESSORY_ROBOTEYE] = "_ROBOTEYE", [ACCESSORY_IDs.ACCESSORY_ROKIMASK] = "_ROKIMASK", [ACCESSORY_IDs.ACCESSORY_JEONPA_ANTENNA] = "_JEONPA_ANTENNA", [ACCESSORY_IDs.ACCESSORY_WANTTOFLY_ANGELING] = "_WANTTOFLY_ANGELING", [ACCESSORY_IDs.ACCESSORY_JUMPING_PORING] = "_JUMPING_PORING", [ACCESSORY_IDs.ACCESSORY_WANT_GUILDMAN] = "_WANT_GUILDMAN", [ACCESSORY_IDs.ACCESSORY_WANT_PARTY] = "_WANT_PARTY", [ACCESSORY_IDs.ACCESSORY_WANT_BOY] = "_WANT_BOY", [ACCESSORY_IDs.ACCESSORY_WANT_FRIEND] = "_WANT_FRIEND", [ACCESSORY_IDs.ACCESSORY_DIFORTE] = "_DIFORTE", [ACCESSORY_IDs.ACCESSORY_GLARRIS] = "_GLARRIS", [ACCESSORY_IDs.ACCESSORY_SORIN] = "_SORIN", [ACCESSORY_IDs.ACCESSORY_TAILING] = "_TAILING", [ACCESSORY_IDs.ACCESSORY_BINIT] = "_BINIT", [ACCESSORY_IDs.ACCESSORY_W] = "_W", [ACCESSORY_IDs.ACCESSORY_WANT_GIRL] = "_WANT_GIRL", [ACCESSORY_IDs.ACCESSORY_POPORING_HAT] = "_POPORING_HAT", [ACCESSORY_IDs.ACCESSORY_MUSLIM_M] = "_MUSLIM_M", [ACCESSORY_IDs.ACCESSORY_MUSLIM_F] = "_MUSLIM_F", [ACCESSORY_IDs.ACCESSORY_MAWANG_HAT] = "_MAWANG_HAT", [ACCESSORY_IDs.ACCESSORY_VICTORYWING] = "_VICTORYWING", [ACCESSORY_IDs.ACCESSORY_PECOPECO_FLY_HAT] = "_PECOPECO_FLY_HAT", [ACCESSORY_IDs.ACCESSORY_CAPTION_HAT] = "_CAPTION_HAT", [ACCESSORY_IDs.ACCESSORY_WHIKEBAIN_EARS] = "_WHIKEBAIN_EARS", [ACCESSORY_IDs.ACCESSORY_GANG_SCARF] = "_GANG_SCARF", [ACCESSORY_IDs.ACCESSORY_NINJA_SCROLL] = "_NINJA_SCROLL", [ACCESSORY_IDs.ACCESSORY_SIMYEON_HAT] = "_SIMYEON_HAT", [ACCESSORY_IDs.ACCESSORY_BLACKDEATHKING] = "_BLACKDEATHKING", [ACCESSORY_IDs.ACCESSORY_EGGFRY] = "_EGGFRY", [ACCESSORY_IDs.ACCESSORY_EMPEROR_HAT] = "_EMPEROR_HAT", [ACCESSORY_IDs.ACCESSORY_HAEGOON_HAT] = "_HAEGOON_HAT", [ACCESSORY_IDs.ACCESSORY_NANCHO_HAT] = "_NANCHO_HAT", [ACCESSORY_IDs.ACCESSORY_PANGUAN_HAT] = "_PANGUAN_HAT", [ACCESSORY_IDs.ACCESSORY_LAZY_WHITECAT] = "_LAZY_WHITECAT", [ACCESSORY_IDs.ACCESSORY_DARKNESS_HELM] = "_DARKNESS_HELM", [ACCESSORY_IDs.ACCESSORY_HUGE_MAJESTIC] = "_HUGE_MAJESTIC", [ACCESSORY_IDs.ACCESSORY_HUGE_ORCHERO] = "_HUGE_ORCHERO", [ACCESSORY_IDs.ACCESSORY_SATANIC_CHAIN] = "_SATANIC_CHAIN", [ACCESSORY_IDs.ACCESSORY_ENTIQUE_CIGAR] = "_ENTIQUE_CIGAR", [ACCESSORY_IDs.ACCESSORY_RABBITEAR] = "_RABBITEAR", [ACCESSORY_IDs.ACCESSORY_BALLOON_HAT] = "_BALLOON_HAT", [ACCESSORY_IDs.ACCESSORY_FISH_HEAD_HAT] = "_FISH_HEAD_HAT", [ACCESSORY_IDs.ACCESSORY_SANTA_PORING_HAT] = "_SANTA_PORING_HAT", [ACCESSORY_IDs.ACCESSORY_BELL_RIBBON] = "_BELL_RIBBON", [ACCESSORY_IDs.ACCESSORY_HUNTINGCAP] = "_HUNTINGCAP", [ACCESSORY_IDs.ACCESSORY_TWIN_SANTAHAT] = "_TWIN_SANTAHAT", [ACCESSORY_IDs.ACCESSORY_YOYOHAT] = "_YOYOHAT", [ACCESSORY_IDs.ACCESSORY_NEKOMIMI_KAFRA] = "_NEKOMIMI_KAFRA", [ACCESSORY_IDs.ACCESSORY_SNAKE_HAT] = "_SNAKE_HAT", [ACCESSORY_IDs.ACCESSORY_ANGEL_GHOST] = "_ANGEL_GHOST", [ACCESSORY_IDs.ACCESSORY_BLUE_SANTAHAT] = "_BLUE_SANTAHAT", [ACCESSORY_IDs.ACCESSORY_SEOLNAL_HAT] = "_SEOLNAL_HAT", [ACCESSORY_IDs.ACCESSORY_VALENTINE_HAT] = "_VALENTINE_HAT", [ACCESSORY_IDs.ACCESSORY_TIRAYABONET] = "_TIRAYABONET", [ACCESSORY_IDs.ACCESSORY_JASPER] = "_JASPER", [ACCESSORY_IDs.ACCESSORY_SCUVER_MASK] = "_SCUVER_MASK", [ACCESSORY_IDs.ACCESSORY_BONEHEAD] = "_BONEHEAD", [ACCESSORY_IDs.ACCESSORY_MANDRAGORA] = "_MANDRAGORA", [ACCESSORY_IDs.ACCESSORY_FOXHAT] = "_FOXHAT", [ACCESSORY_IDs.ACCESSORY_BLACKGLASSES] = "_BLACKGLASSES", [ACCESSORY_IDs.ACCESSORY_PLAYELF] = "_PLAYELF", [ACCESSORY_IDs.ACCESSORY_FISHINMOUTH] = "_FISHINMOUTH", [ACCESSORY_IDs.ACCESSORY_BLUERIBBON] = "_BLUERIBBON", [ACCESSORY_IDs.ACCESSORY_PHILIRHAT] = "_PHILIRHAT", [ACCESSORY_IDs.ACCESSORY_ACADEMY_NEWBIE] = "_ACADEMY_NEWBIE", [ACCESSORY_IDs.ACCESSORY_ACADEMY_LV1] = "_ACADEMY_LV1", [ACCESSORY_IDs.ACCESSORY_NEW_COWBOY] = "_NEW_COWBOY", [ACCESSORY_IDs.ACCESSORY_BREAD2] = "_BREAD2", [ACCESSORY_IDs.ACCESSORY_WHITESNAKE] = "_WHITESNAKE", [ACCESSORY_IDs.ACCESSORY_SWEETCANDY] = "_SWEETCANDY", [ACCESSORY_IDs.ACCESSORY_POPCORN_HAT] = "_POPCORN_HAT", [ACCESSORY_IDs.ACCESSORY_CAMPFIRE_HAT] = "_CAMPFIRE_HAT", [ACCESSORY_IDs.ACCESSORY_PORINGCAKE_HAT] = "_PORINGCAKE_HAT", [ACCESSORY_IDs.ACCESSORY_BEER_HAT] = "_BEER_HAT", [ACCESSORY_IDs.ACCESSORY_CROWNBIRD] = "_CROWNBIRD", [ACCESSORY_IDs.ACCESSORY_SOLDIERHAT] = "_SOLDIERHAT", [ACCESSORY_IDs.ACCESSORY_IFRIT_MASK] = "_IFRIT_MASK", [ACCESSORY_IDs.ACCESSORY_IFRIT_EAR] = "_IFRIT_EAR", [ACCESSORY_IDs.ACCESSORY_WORDBOOK] = "_WORDBOOK", [ACCESSORY_IDs.ACCESSORY_LOVECHINA] = "_LOVECHINA", [ACCESSORY_IDs.ACCESSORY_FANTAORANGE] = "_FANTAORANGE", [ACCESSORY_IDs.ACCESSORY_FANTAGRAPE] = "_FANTAGRAPE", [ACCESSORY_IDs.ACCESSORY_KARADA_HAT] = "_KARADA_HAT", [ACCESSORY_IDs.ACCESSORY_REDTEA_HAT] = "_REDTEA_HAT", [ACCESSORY_IDs.ACCESSORY_BREADHAT1] = "_BREADHAT1", [ACCESSORY_IDs.ACCESSORY_DOKEBIHAT] = "_DOKEBIHAT", [ACCESSORY_IDs.ACCESSORY_FLAMECROWN] = "_FLAMECROWN", [ACCESSORY_IDs.ACCESSORY_CHICK_HAT2] = "_CHICK_HAT2", [ACCESSORY_IDs.ACCESSORY_BRAZIL4] = "_BRAZIL4", [ACCESSORY_IDs.ACCESSORY_GOLDENLAUREL] = "_GOLDENLAUREL", [ACCESSORY_IDs.ACCESSORY_COLA_CAN] = "_COLA_CAN", [ACCESSORY_IDs.ACCESSORY_COKE_HAT] = "_COKE_HAT", [ACCESSORY_IDs.ACCESSORY_BRIDE_FLOWER] = "_BRIDE_FLOWER", [ACCESSORY_IDs.ACCESSORY_SKYGIRL_FLOWER] = "_SKYGIRL_FLOWER", [ACCESSORY_IDs.ACCESSORY_HAIRBAND_GREEN] = "_HAIRBAND_GREEN", [ACCESSORY_IDs.ACCESSORY_HAIRBAND_RED] = "_HAIRBAND_RED", [ACCESSORY_IDs.ACCESSORY_HAIRBAND_BLUE] = "_HAIRBAND_BLUE", [ACCESSORY_IDs.ACCESSORY_HAIRBAND_WHITE] = "_HAIRBAND_WHITE", [ACCESSORY_IDs.ACCESSORY_NECKTIE] = "_NECKTIE", [ACCESSORY_IDs.ACCESSORY_BABYANGEL_STONE] = "_BABYANGEL_STONE", [ACCESSORY_IDs.ACCESSORY_HAIRBRUSH] = "_HAIRBRUSH", [ACCESSORY_IDs.ACCESSORY_CANDYIN_MOUTH] = "_CANDYIN_MOUTH", [ACCESSORY_IDs.ACCESSORY_CATFOOT] = "_CATFOOT", [ACCESSORY_IDs.ACCESSORY_FROGHAT] = "_FROGHAT", [ACCESSORY_IDs.ACCESSORY_FACEBOX1] = "_FACEBOX1", [ACCESSORY_IDs.ACCESSORY_FACEBOX2] = "_FACEBOX2", [ACCESSORY_IDs.ACCESSORY_SUNHAT] = "_SUNHAT", [ACCESSORY_IDs.ACCESSORY_DRAGON_GOLD] = "_DRAGON_GOLD", [ACCESSORY_IDs.ACCESSORY_DRAGON_SILVER] = "_DRAGON_SILVER", [ACCESSORY_IDs.ACCESSORY_DRAGON_BRONZE] = "_DRAGON_BRONZE", [ACCESSORY_IDs.ACCESSORY_RABBITHAT] = "_RABBITHAT", [ACCESSORY_IDs.ACCESSORY_WINDTOY_HAT] = "_WINDTOY_HAT", [ACCESSORY_IDs.ACCESSORY_EVOLVED_DRAGON] = "_EVOLVED_DRAGON", [ACCESSORY_IDs.ACCESSORY_EVOLVED_WHISPER] = "_EVOLVED_WHISPER", [ACCESSORY_IDs.ACCESSORY_BIGNAIL_SCARF] = "_BIGNAIL_SCARF", [ACCESSORY_IDs.ACCESSORY_RAINBOW_SCARF] = "_RAINBOW_SCARF", [ACCESSORY_IDs.ACCESSORY_JAHA_DOLL] = "_JAHA_DOLL", [ACCESSORY_IDs.ACCESSORY_CELESTIAL_HAT] = "_CELESTIAL_HAT", [ACCESSORY_IDs.ACCESSORY_WIND_MILESTONE] = "_WIND_MILESTONE", [ACCESSORY_IDs.ACCESSORY_HELM_OF_DRAGOON] = "_HELM_OF_DRAGOON", [ACCESSORY_IDs.ACCESSORY_PARADE_CAP] = "_PARADE_CAP", [ACCESSORY_IDs.ACCESSORY_NOBLE_HAT] = "_NOBLE_HAT", [ACCESSORY_IDs.ACCESSORY_EYES_OF_DARKNESS] = "_EYES_OF_DARKNESS", [ACCESSORY_IDs.ACCESSORY_HAIRBAND_OF_REGINLEIF] = "_HAIRBAND_OF_REGINLEIF", [ACCESSORY_IDs.ACCESSORY_RED_WHITE_HAT] = "_RED_WHITE_HAT", [ACCESSORY_IDs.ACCESSORY_FORCEPS_HAIRPIN] = "_FORCEPS_HAIRPIN", [ACCESSORY_IDs.ACCESSORY_NOTICE_BOARD] = "_NOTICE_BOARD", [ACCESSORY_IDs.ACCESSORY_CUBE_MASK] = "_CUBE_MASK", [ACCESSORY_IDs.ACCESSORY_HAIRBAND_OF_GRANDPECO] = "_HAIRBAND_OF_GRANDPECO", [ACCESSORY_IDs.ACCESSORY_BR_FLAG_BANDANNA] = "_BR_FLAG_BANDANNA", [ACCESSORY_IDs.ACCESSORY_CLASSIC_HAT] = "_CLASSIC_HAT", [ACCESSORY_IDs.ACCESSORY_SHAMAN_STUFF] = "_SHAMAN_STUFF", [ACCESSORY_IDs.ACCESSORY_BZOFNIL_WING] = "_BZOFNIL_WING", [ACCESSORY_IDs.ACCESSORY_HERMOZ_CAP] = "_HERMOZ_CAP", [ACCESSORY_IDs.ACCESSORY_DARKKNIGHT_MASK] = "_DARKKNIGHT_MASK", [ACCESSORY_IDs.ACCESSORY_ODIN_MASK] = "_ODIN_MASK", [ACCESSORY_IDs.ACCESSORY_RED_PHD_HAT] = "_RED_PHD_HAT", [ACCESSORY_IDs.ACCESSORY_TAIWANFLAG] = "_TAIWANFLAG", [ACCESSORY_IDs.ACCESSORY_TIGERFACE] = "_TIGERFACE", [ACCESSORY_IDs.ACCESSORY_LOVEDADDY] = "_LOVEDADDY", [ACCESSORY_IDs.ACCESSORY_ANUBIS_HELM] = "_ANUBIS_HELM", [ACCESSORY_IDs.ACCESSORY_HAT_OF_OUTLAW] = "_HAT_OF_OUTLAW", [ACCESSORY_IDs.ACCESSORY_PIZZA_HAT] = "_PIZZA_HAT", [ACCESSORY_IDs.ACCESSORY_ICECREAM_HAT] = "_ICECREAM_HAT", [ACCESSORY_IDs.ACCESSORY_CHINESE_5TH] = "_CHINESE_5TH", [ACCESSORY_IDs.ACCESSORY_WOLFKING] = "_WOLFKING", [ACCESSORY_IDs.ACCESSORY_GANG_DOOGUN] = "_GANG_DOOGUN", [ACCESSORY_IDs.ACCESSORY_ASARA_FAIRY] = "_ASARA_FAIRY", [ACCESSORY_IDs.ACCESSORY_THUNDER_GOD] = "_THUNDER_GOD", [ACCESSORY_IDs.ACCESSORY_DICE_HAT] = "_DICE_HAT", [ACCESSORY_IDs.ACCESSORY_TIGER_KING] = "_TIGER_KING", [ACCESSORY_IDs.ACCESSORY_PIRATE_PRIDE] = "_PIRATE_PRIDE", [ACCESSORY_IDs.ACCESSORY_RABBIT_MAGIC] = "_RABBIT_MAGIC", [ACCESSORY_IDs.ACCESSORY_BLACKELF_YEAR] = "_BLACKELF_YEAR", [ACCESSORY_IDs.ACCESSORY_GOLDEN_TULIP] = "_GOLDEN_TULIP", [ACCESSORY_IDs.ACCESSORY_LOVELYCHICK_HAT] = "_LOVELYCHICK_HAT", [ACCESSORY_IDs.ACCESSORY_BLUE_PAJAMA] = "_BLUE_PAJAMA", [ACCESSORY_IDs.ACCESSORY_PINK_PAJAMA] = "_PINK_PAJAMA", [ACCESSORY_IDs.ACCESSORY_SHARK_HAT] = "_SHARK_HAT", [ACCESSORY_IDs.ACCESSORY_STING_HAT] = "_STING_HAT", [ACCESSORY_IDs.ACCESSORY_CARNIBAL_HAT] = "_CARNIBAL_HAT", [ACCESSORY_IDs.ACCESSORY_CARNIBAL_CIRCLET] = "_CARNIBAL_CIRCLET", [ACCESSORY_IDs.ACCESSORY_SHOWER_CAP] = "_SHOWER_CAP", [ACCESSORY_IDs.ACCESSORY_SAMAN_BAIYA] = "_SAMAN_BAIYA", [ACCESSORY_IDs.ACCESSORY_AQUARIUS_DIADEM] = "_AQUARIUS_DIADEM", [ACCESSORY_IDs.ACCESSORY_AQUARIUS_CROWN] = "_AQUARIUS_CROWN", [ACCESSORY_IDs.ACCESSORY_PISCES_DIADEM] = "_PISCES_DIADEM", [ACCESSORY_IDs.ACCESSORY_PISCES_CROWN] = "_PISCES_CROWN", [ACCESSORY_IDs.ACCESSORY_BIG_MAJESTIC2] = "_BIG_MAJESTIC2", [ACCESSORY_IDs.ACCESSORY_PEACOCK_FEATHER] = "_PEACOCK_FEATHER", [ACCESSORY_IDs.ACCESSORY_RABBITEAR2] = "_RABBITEAR2", [ACCESSORY_IDs.ACCESSORY_FANTA_ZERO_LEMON_HAT] = "_FANTA_ZERO_LEMON_HAT", [ACCESSORY_IDs.ACCESSORY_SAKURA_MIST_HAT] = "_SAKURA_MIST_HAT", [ACCESSORY_IDs.ACCESSORY_SAKURA_MILK_TEA_HAT] = "_SAKURA_MILK_TEA_HAT", [ACCESSORY_IDs.ACCESSORY_FIRST_LEAF_TEA_HAT] = "_FIRST_LEAF_TEA_HAT", [ACCESSORY_IDs.ACCESSORY_LADY_TANEE_DOLL] = "_LADY_TANEE_DOLL", [ACCESSORY_IDs.ACCESSORY_LUNATIC_HAT] = "_LUNATIC_HAT", [ACCESSORY_IDs.ACCESSORY_KING_FROG_HAT] = "_KING_FROG_HAT", [ACCESSORY_IDs.ACCESSORY_EVIL_BONE_HAT] = "_EVIL_BONE_HAT", [ACCESSORY_IDs.ACCESSORY_KAMAGI_HAT] = "_KAMAGI_HAT", [ACCESSORY_IDs.ACCESSORY_BABYDRAGON_HAT] = "_BABYDRAGON_HAT", [ACCESSORY_IDs.ACCESSORY_SPARE_CARD] = "_SPARE_CARD", [ACCESSORY_IDs.ACCESSORY_QUATI_HAT] = "_QUATI_HAT", [ACCESSORY_IDs.ACCESSORY_TWOKAN_HAT] = "_TWOKAN_HAT", [ACCESSORY_IDs.ACCESSORY_SIDECAP] = "_SIDECAP", [ACCESSORY_IDs.ACCESSORY_JAGUAR_HAT] = "_JAGUAR_HAT", [ACCESSORY_IDs.ACCESSORY_ARIES_DIADEM] = "_ARIES_DIADEM", [ACCESSORY_IDs.ACCESSORY_ARIES_CROWN] = "_ARIES_CROWN", [ACCESSORY_IDs.ACCESSORY_RJC_CATHUSA] = "_RJC_CATHUSA", [ACCESSORY_IDs.ACCESSORY_REDROSE] = "_REDROSE", [ACCESSORY_IDs.ACCESSORY_KWG_BOGWAN] = "_KWG_BOGWAN", [ACCESSORY_IDs.ACCESSORY_KWG_WANGAN] = "_KWG_WANGAN", [ACCESSORY_IDs.ACCESSORY_HOLY_EGG_HAT] = "_HOLY_EGG_HAT", [ACCESSORY_IDs.ACCESSORY_OCTOPUS_HAT] = "_OCTOPUS_HAT", [ACCESSORY_IDs.ACCESSORY_LEAF_CAT_HAT] = "_LEAF_CAT_HAT", [ACCESSORY_IDs.ACCESSORY_FUR_SEAL_HAT] = "_FUR_SEAL_HAT", [ACCESSORY_IDs.ACCESSORY_WILD_ROSE_HAT] = "_WILD_ROSE_HAT", [ACCESSORY_IDs.ACCESSORY_SACI_HAT] = "_SACI_HAT", [ACCESSORY_IDs.ACCESSORY_543] = "_543", [ACCESSORY_IDs.ACCESSORY_CROWN_OF_DECEIT] = "_CROWN_OF_DECEIT", [ACCESSORY_IDs.ACCESSORY_DRAGON_ARHAT_MASK] = "_DRAGON_ARHAT_MASK", [ACCESSORY_IDs.ACCESSORY_TIGER_ARHAT_MASK] = "_TIGER_ARHAT_MASK", [ACCESSORY_IDs.ACCESSORY_DOLOR_HAT] = "_DOLOR_HAT", [ACCESSORY_IDs.ACCESSORY_BRIGHT_FURY] = "_BRIGHT_FURY", [ACCESSORY_IDs.ACCESSORY_RABBIT_BONNET] = "_RABBIT_BONNET", [ACCESSORY_IDs.ACCESSORY_GEMINI_DIADEM] = "_GEMINI_DIADEM", [ACCESSORY_IDs.ACCESSORY_GEMINI_CROWN] = "_GEMINI_CROWN", [ACCESSORY_IDs.ACCESSORY_RASTA_WIG] = "_RASTA_WIG", [ACCESSORY_IDs.ACCESSORY_SAVAGE_BABY_HAT] = "_SAVAGE_BABY_HAT", [ACCESSORY_IDs.ACCESSORY_DOKEBI_HORN] = "_DOKEBI_HORN", [ACCESSORY_IDs.ACCESSORY_MOUTH_PENCIL] = "_MOUTH_PENCIL", [ACCESSORY_IDs.ACCESSORY_ONIGIRI_HAT] = "_ONIGIRI_HAT", [ACCESSORY_IDs.ACCESSORY_SAKE] = "_SAKE", [ACCESSORY_IDs.ACCESSORY_SATGAT] = "_SATGAT", [ACCESSORY_IDs.ACCESSORY_RED_BERET] = "_RED_BERET", [ACCESSORY_IDs.ACCESSORY_CANCER_DIADEM] = "_CANCER_DIADEM", [ACCESSORY_IDs.ACCESSORY_CANCER_CROWN] = "_CANCER_CROWN", [ACCESSORY_IDs.ACCESSORY_MAJESTIC_DEVIL] = "_MAJESTIC_DEVIL", [ACCESSORY_IDs.ACCESSORY_MOGIKILLER] = "_MOGIKILLER", [ACCESSORY_IDs.ACCESSORY_RUNE_HAIRBAND] = "_RUNE_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_LEO_CROWN] = "_LEO_CROWN", [ACCESSORY_IDs.ACCESSORY_LEO_DIADEM] = "_LEO_DIADEM", [ACCESSORY_IDs.ACCESSORY_DESERT_PRINCE] = "_DESERT_PRINCE", [ACCESSORY_IDs.ACCESSORY_SIGRUNS_WING] = "_SIGRUNS_WING", [ACCESSORY_IDs.ACCESSORY_DONUT_MOUTH] = "_DONUT_MOUTH", [ACCESSORY_IDs.ACCESSORY_YUNO_EYE] = "_YUNO_EYE", [ACCESSORY_IDs.ACCESSORY_CLOVER_MOUTH] = "_CLOVER_MOUTH", [ACCESSORY_IDs.ACCESSORY_GUM_MOUTH] = "_GUM_MOUTH", [ACCESSORY_IDs.ACCESSORY_TWINGIRL_CROWN] = "_TWINGIRL_CROWN", [ACCESSORY_IDs.ACCESSORY_TWINGIRL_BOGWAN] = "_TWINGIRL_BOGWAN", [ACCESSORY_IDs.ACCESSORY_BRAZIL_RIBBON] = "_BRAZIL_RIBBON", [ACCESSORY_IDs.ACCESSORY_BRAZIL_BERE] = "_BRAZIL_BERE", [ACCESSORY_IDs.ACCESSORY_RTC_WINNER_ONLY] = "_RTC_WINNER_ONLY", [ACCESSORY_IDs.ACCESSORY_RTC_SECOND_BEST] = "_RTC_SECOND_BEST", [ACCESSORY_IDs.ACCESSORY_RTC_THIRD_BEST] = "_RTC_THIRD_BEST", [ACCESSORY_IDs.ACCESSORY_CAMPUME_HAT] = "_CAMPUME_HAT", [ACCESSORY_IDs.ACCESSORY_LYRIA_DOLL_HAT] = "_LYRIA_DOLL_HAT", [ACCESSORY_IDs.ACCESSORY_DOROTHY_DOLL_HAT] = "_DOROTHY_DOLL_HAT", [ACCESSORY_IDs.ACCESSORY_CHUNG_HAIRBAND] = "_CHUNG_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_ICE_WING_EAR] = "_ICE_WING_EAR", [ACCESSORY_IDs.ACCESSORY_TURTLE_HAT] = "_TURTLE_HAT", [ACCESSORY_IDs.ACCESSORY_DARKNESS_HELM_J] = "_DARKNESS_HELM_J", [ACCESSORY_IDs.ACCESSORY_HOLY_MARCHING_HAT_J] = "_HOLY_MARCHING_HAT_J", [ACCESSORY_IDs.ACCESSORY_SCOOTER_HAT_J] = "_SCOOTER_HAT_J", [ACCESSORY_IDs.ACCESSORY_IMP_HAT] = "_IMP_HAT", [ACCESSORY_IDs.ACCESSORY_SLEEPR_HAT] = "_SLEEPR_HAT", [ACCESSORY_IDs.ACCESSORY_GRYPHON_HAT] = "_GRYPHON_HAT", [ACCESSORY_IDs.ACCESSORY_RED_PIRATE_BANDANA] = "_RED_PIRATE_BANDANA", [ACCESSORY_IDs.ACCESSORY_LIBRA_CROWN] = "_LIBRA_CROWN", [ACCESSORY_IDs.ACCESSORY_LIBRA_DIADEM] = "_LIBRA_DIADEM", [ACCESSORY_IDs.ACCESSORY_FILIR_WING] = "_FILIR_WING", [ACCESSORY_IDs.ACCESSORY_MOOSOK_HAT] = "_MOOSOK_HAT", [ACCESSORY_IDs.ACCESSORY_GOLDEN_HAT] = "_GOLDEN_HAT", [ACCESSORY_IDs.ACCESSORY_SKULL_HOOD] = "_SKULL_HOOD", [ACCESSORY_IDs.ACCESSORY_ANIV_STAR_HAT] = "_ANIV_STAR_HAT", [ACCESSORY_IDs.ACCESSORY_DROOPING_MOROCC_MINION] = "_DROOPING_MOROCC_MINION", [ACCESSORY_IDs.ACCESSORY_SOUTHERN_CROSS] = "_SOUTHERN_CROSS", [ACCESSORY_IDs.ACCESSORY_HOME_CHERRY_BLOSSOM] = "_HOME_CHERRY_BLOSSOM", [ACCESSORY_IDs.ACCESSORY_PIG_MONEYBOX] = "_PIG_MONEYBOX", [ACCESSORY_IDs.ACCESSORY_PORING_LETTER] = "_PORING_LETTER", [ACCESSORY_IDs.ACCESSORY_SCORPIO_CROWN] = "_SCORPIO_CROWN", [ACCESSORY_IDs.ACCESSORY_SCORPIO_DIADEM] = "_SCORPIO_DIADEM", [ACCESSORY_IDs.ACCESSORY_NOTATION_HAIRBAND] = "_NOTATION_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_ENGINEER_CAP] = "_ENGINEER_CAP", [ACCESSORY_IDs.ACCESSORY_HAWKEYES] = "_HAWKEYES", [ACCESSORY_IDs.ACCESSORY_TRIANGLE_RUNE] = "_TRIANGLE_RUNE", [ACCESSORY_IDs.ACCESSORY_2009LOVE_DADDY] = "_2009LOVE_DADDY", [ACCESSORY_IDs.ACCESSORY_612] = "_612", [ACCESSORY_IDs.ACCESSORY_PRIESTHAT] = "_PRIESTHAT", [ACCESSORY_IDs.ACCESSORY_NOFEAR_POQWER_HEADGEAR] = "_NOFEAR_POQWER_HEADGEAR", [ACCESSORY_IDs.ACCESSORY_CACTUS_HAT] = "_CACTUS_HAT", [ACCESSORY_IDs.ACCESSORY_SNOWMAN_HAT] = "_SNOWMAN_HAT", [ACCESSORY_IDs.ACCESSORY_SAGITTARIUS_CROWN] = "_SAGITTARIUS_CROWN", [ACCESSORY_IDs.ACCESSORY_SAGITTARIUS_DIADEM] = "_SAGITTARIUS_DIADEM", [ACCESSORY_IDs.ACCESSORY_SANTACAP] = "_SANTACAP", [ACCESSORY_IDs.ACCESSORY_ORANGE_STEM_HAT] = "_ORANGE_STEM_HAT", [ACCESSORY_IDs.ACCESSORY_CAPRICORN_CROWN] = "_CAPRICORN_CROWN", [ACCESSORY_IDs.ACCESSORY_CAPRICORN_DIADEM] = "_CAPRICORN_DIADEM", [ACCESSORY_IDs.ACCESSORY_RUNE_CIRCLET] = "_RUNE_CIRCLET", [ACCESSORY_IDs.ACCESSORY_MITRA] = "_MITRA", [ACCESSORY_IDs.ACCESSORY_RANGER_GOGGLES] = "_RANGER_GOGGLES", [ACCESSORY_IDs.ACCESSORY_DRIVER_BAND] = "_DRIVER_BAND", [ACCESSORY_IDs.ACCESSORY_627] = "_627", [ACCESSORY_IDs.ACCESSORY_MINSTRELSONG_HAT] = "_MINSTRELSONG_HAT", [ACCESSORY_IDs.ACCESSORY_629] = "_629", [ACCESSORY_IDs.ACCESSORY_630] = "_630", [ACCESSORY_IDs.ACCESSORY_631] = "_631", [ACCESSORY_IDs.ACCESSORY_632] = "_632", [ACCESSORY_IDs.ACCESSORY_633] = "_633", [ACCESSORY_IDs.ACCESSORY_634] = "_634", [ACCESSORY_IDs.ACCESSORY_635] = "_635", [ACCESSORY_IDs.ACCESSORY_NOAHS_HAT] = "_NOAHS_HAT", [ACCESSORY_IDs.ACCESSORY_DRIVER_BAND2] = "_DRIVER_BAND2", [ACCESSORY_IDs.ACCESSORY_SLOTH_HAT] = "_SLOTH_HAT", [ACCESSORY_IDs.ACCESSORY_DUNEYRR_HELM] = "_DUNEYRR_HELM", [ACCESSORY_IDs.ACCESSORY_RED_BUNNY_BAND] = "_RED_BUNNY_BAND", [ACCESSORY_IDs.ACCESSORY_BUZZY_BOL_BOARD] = "_BUZZY_BOL_BOARD", [ACCESSORY_IDs.ACCESSORY_BLACK_TAIL_RIBBON] = "_BLACK_TAIL_RIBBON", [ACCESSORY_IDs.ACCESSORY_AMISTR_CAP] = "_AMISTR_CAP", [ACCESSORY_IDs.ACCESSORY_SAMURAI_MASK] = "_SAMURAI_MASK", [ACCESSORY_IDs.ACCESSORY_SAKURA_CORONET] = "_SAKURA_CORONET", [ACCESSORY_IDs.ACCESSORY_GOLDEN_ANGEL] = "_GOLDEN_ANGEL", [ACCESSORY_IDs.ACCESSORY_FOOL_DAY_HAT] = "_FOOL_DAY_HAT", [ACCESSORY_IDs.ACCESSORY_GOLDEN_SAVAGE_HAT] = "_GOLDEN_SAVAGE_HAT", [ACCESSORY_IDs.ACCESSORY_SPLASH_HAT] = "_SPLASH_HAT", [ACCESSORY_IDs.ACCESSORY_FAMILY_HAT] = "_FAMILY_HAT", [ACCESSORY_IDs.ACCESORY_RED_NAVY_HAT] = "[ACCESSORY_IDs.ACCESORY_RED_NAVY_HAT", [ACCESSORY_IDs.ACCESORY_BERET] = "[ACCESSORY_IDs.ACCESORY_BERET", [ACCESSORY_IDs.ACCESSORY_CHOCODONUT_MOUTH] = "_CHOCODONUT_MOUTH", [ACCESSORY_IDs.ACCESSORY_BLAZING_SUN] = "_BLAZING_SUN", [ACCESSORY_IDs.ACCESSORY_REMOVER_HAT] = "_REMOVER_HAT", [ACCESSORY_IDs.ACCESSORY_BLUE_ARARA_HAT] = "_BLUE_ARARA_HAT", [ACCESSORY_IDs.ACCESSORY_DROOPING_BOTO] = "_DROOPING_BOTO", [ACCESSORY_IDs.ACCESSORY_TENDRILION_HAT] = "_TENDRILION_HAT", [ACCESSORY_IDs.ACCESSORY_PERSICA] = "_PERSICA", [ACCESSORY_IDs.ACCESSORY_HOPLITE_HELMET] = "_HOPLITE_HELMET", [ACCESSORY_IDs.ACCESSORY_3DGLASS] = "_3DGLASS", [ACCESSORY_IDs.ACCESSORY_YELLOWBUNNY_HAIRBAND] = "_YELLOWBUNNY_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_PINKBUNNY_HAIRBAND] = "_PINKBUNNY_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_GREENBUNNY_HAIRBAND] = "_GREENBUNNY_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_OLD_ELFEAR] = "_OLD_ELFEAR ", [ACCESSORY_IDs.ACCESSORY_THA_MAERO_MASK] = "_THA_MAERO_MASK", [ACCESSORY_IDs.ACCESSORY_THANATOS_MAI_MASK] = "_THANATOS_MAI_MASK", [ACCESSORY_IDs.ACCESSORY_TENKAIPPIN_RAMEN] = "_TENKAIPPIN_RAMEN", [ACCESSORY_IDs.ACCESSORY_FISHPIN] = "_FISHPIN", [ACCESSORY_IDs.ACCESSORY_RED_DRESS_HAT] = "_RED_DRESS_HAT", [ACCESSORY_IDs.ACCESSORY_PASSION_FB_HAT] = "_PASSION_FB_HAT", [ACCESSORY_IDs.ACCESSORY_COOL_FB_HAT] = "_COOL_FB_HAT", [ACCESSORY_IDs.ACCESSORY_VICTORY_FB_HAT] = "_VICTORY_FB_HAT", [ACCESSORY_IDs.ACCESSORY_GLORY_FB_HAT] = "_GLORY_FB_HAT", [ACCESSORY_IDs.ACCESSORY_UMBALA_SPIRIT] = "_UMBALA_SPIRIT", [ACCESSORY_IDs.ACCESSORY_GARUDA_HAT] = "_GARUDA_HAT", [ACCESSORY_IDs.ACCESSORY_RWC2010_INDONESIA] = "_RWC2010_INDONESIA", [ACCESSORY_IDs.ACCESSORY_BLOODY_ANGEL_HAIRBAND] = "_BLOODY_ANGEL_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_BLOODY_ANGELWING_EAR] = "_BLOODY_ANGELWING_EAR", [ACCESSORY_IDs.ACCESSORY_SHINING_SUNFLOWER] = "_SHINING_SUNFLOWER", [ACCESSORY_IDs.ACCESSORY_PARADISE_HAT] = "_PARADISE_HAT", [ACCESSORY_IDs.ACCESSORY_RTC_WINNER_HEADGEAR] = "_RTC_WINNER_HEADGEAR", [ACCESSORY_IDs.ACCESSORY_RTC_2ND_HEADGEAR] = "_RTC_2ND_HEADGEAR", [ACCESSORY_IDs.ACCESSORY_RTC_3RD_HEADGEAR] = "_RTC_3RD_HEADGEAR", [ACCESSORY_IDs.ACCESSORY_JATI_CROWN] = "_JATI_CROWN", [ACCESSORY_IDs.ACCESSORY_EVILMARCHER_HAT] = "_EVILMARCHER_HAT", [ACCESSORY_IDs.ACCESSORY_THUNDERSTORM_CLOUD] = "_THUNDERSTORM_CLOUD", [ACCESSORY_IDs.ACCESSORY_DOKKEBI_MASK] = "_DOKKEBI_MASK", [ACCESSORY_IDs.ACCESSORY_WARTERMELON_HAT] = "_WARTERMELON_HAT", [ACCESSORY_IDs.ACCESSORY_DARK_PUMPKIN_HAT] = "_DARK_PUMPKIN_HAT", [ACCESSORY_IDs.ACCESSORY_DROOPING_NEKO_CRU] = "_DROOPING_NEKO_CRU", [ACCESSORY_IDs.ACCESSORY_THA_DESPERO_MASK] = "_THA_DESPERO_MASK", [ACCESSORY_IDs.ACCESSORY_DROOPING_PERMETER] = "_DROOPING_PERMETER", [ACCESSORY_IDs.ACCESSORY_BUTTERFLYWINGS_EAR] = "_BUTTERFLYWINGS_EAR", [ACCESSORY_IDs.ACCESSORY_SCREW_STUCK_HEAD] = "_SCREW_STUCK_HEAD", [ACCESSORY_IDs.ACCESSORY_HEART_EYEBANDAGE1] = "_HEART_EYEBANDAGE1", [ACCESSORY_IDs.ACCESSORY_HEART_EYEBANDAGE2] = "_HEART_EYEBANDAGE2", [ACCESSORY_IDs.ACCESSORY_CHICKEN_BILL] = "_CHICKEN_BILL", [ACCESSORY_IDs.ACCESSORY_CHARLIES_BEARD] = "_CHARLIES_BEARD", [ACCESSORY_IDs.ACCESSORY_YELLOW_HAT] = "_YELLOW_HAT", [ACCESSORY_IDs.ACCESSORY_SINGING_BIRD] = "_SINGING_BIRD", [ACCESSORY_IDs.ACCESSORY_CHICKEN_CREST] = "_CHICKEN_CREST", [ACCESSORY_IDs.ACCESSORY_RAINBOW] = "_RAINBOW", [ACCESSORY_IDs.ACCESSORY_RAIN_CLOUD] = "_RAIN_CLOUD", [ACCESSORY_IDs.ACCESSORY_CHARLIES_HAT] = "_CHARLIES_HAT", [ACCESSORY_IDs.ACCESSORY_MINI_CROWN1] = "_MINI_CROWN1", [ACCESSORY_IDs.ACCESSORY_HEART_RIBBON_BAND] = "_HEART_RIBBON_BAND", [ACCESSORY_IDs.ACCESSORY_HONEYBEE_HAT] = "_HONEYBEE_HAT", [ACCESSORY_IDs.ACCESSORY_FANCY_PHANTOM_MAS] = "_FANCY_PHANTOM_MAS", [ACCESSORY_IDs.ACCESSORY_PUPPY_GRASS] = "_PUPPY_GRASS", [ACCESSORY_IDs.ACCESSORY_DEVIL_WHISPER] = "_DEVIL_WHISPER", [ACCESSORY_IDs.ACCESSORY_SKULL_CAP] = "_SKULL_CAP", [ACCESSORY_IDs.ACCESSORY_EVIL_MASK] = "_EVIL_MASK", [ACCESSORY_IDs.ACCESSORY_LITTLE_FHAT] = "_LITTLE_FHAT", [ACCESSORY_IDs.ACCESSORY_LOVE_GUARD] = "_LOVE_GUARD", [ACCESSORY_IDs.ACCESSORY_WITCHS_HAT] = "_WITCHS_HAT", [ACCESSORY_IDs.ACCESSORY_LOVER_IN_MOUTH] = "_LOVER_IN_MOUTH", [ACCESSORY_IDs.ACCESSORY_CAMPUS_FESTIVAL] = "_CAMPUS_FESTIVAL", [ACCESSORY_IDs.ACCESSORY_TAINI_CAP] = "_TAINI_CAP", [ACCESSORY_IDs.ACCESSORY_BUTTERFLY_HAIRPIN] = "_BUTTERFLY_HAIRPIN", [ACCESSORY_IDs.ACCESSORY_ASGARD_BLESS] = "_ASGARD_BLESS", [ACCESSORY_IDs.ACCESSORY_GALAXY_CIRCLET] = "_GALAXY_CIRCLET", [ACCESSORY_IDs.ACCESSORY_MALANGDO_HAT] = "_MALANGDO_HAT", [ACCESSORY_IDs.ACCESSORY_MINI_TREE] = "_MINI_TREE", [ACCESSORY_IDs.ACCESSORY_KING_PRAWN_HAT] = "_KING_PRAWN_HAT", [ACCESSORY_IDs.ACCESSORY_GENERAL_HELMET] = "_GENERAL_HELMET", [ACCESSORY_IDs.ACCESSORY_SINSUNCHO_HAT] = "_SINSUNCHO_HAT", [ACCESSORY_IDs.ACCESSORY_B_FEATHER_BERET] = "_B_FEATHER_BERET", [ACCESSORY_IDs.ACCESSORY_BONE_HAT] = "_BONE_HAT", [ACCESSORY_IDs.ACCESSORY_HEART_WING_HAIRBAND] = "_HEART_WING_HAIRBAND", [ACCESSORY_IDs.ACCESSORY_LOVE_PIECE] = "_LOVE_PIECE", [ACCESSORY_IDs.ACCESSORY_ST_PAT_HAT] = "_ST_PAT_HAT", [ACCESSORY_IDs.ACCESSORY_NUT_DONUT_MOUTH] = "_NUT_DONUT_MOUTH", [ACCESSORY_IDs.ACCESSORY_STRETCHED_NOSE] = "_STRETCHED_NOSE", [ACCESSORY_IDs.ACCESSORY_SOFT_SHEEP_HAT] = "_SOFT_SHEEP_HAT", [ACCESSORY_IDs.ACCESSORY_ANCIENT_GOLD_ADORNMENT] = "_ANCIENT_GOLD_ADORNMENT", [ACCESSORY_IDs.ACCESSORY_LUCKY_HAT] = "_LUCKY_HAT", [ACCESSORY_IDs.ACCESSORY_WHITE_FEATHER] = "_WHITE_FEATHER", [ACCESSORY_IDs.ACCESSORY_LORD_OF_DEATH] = "_LORD_OF_DEATH", [ACCESSORY_IDs.ACCESSORY_WUNDERKAMMER] = "_WUNDERKAMMER", [ACCESSORY_IDs.ACCESSORY_YINYANG_EARRING] = "_YINYANG_EARRING", [ACCESSORY_IDs.ACCESSORY_9TH_ANNIVERSARY] = "_9TH_ANNIVERSARY", [ACCESSORY_IDs.ACCESSORY_YGGDRASIL_CROWN] = "_YGGDRASIL_CROWN", [ACCESSORY_IDs.ACCESSORY_RED_TIGER_MASK] = "_RED_TIGER_MASK", [ACCESSORY_IDs.ACCESSORY_BLUE_TIGER_MASK] = "_BLUE_TIGER_MASK", [ACCESSORY_IDs.ACCESSORY_NAVY_DROOPING_KITTY] = "_NAVY_DROOPING_KITTY", [ACCESSORY_IDs.ACCESSORY_BROWN_DROOPING_KITTY] = "_BROWN_DROOPING_KITTY", [ACCESSORY_IDs.ACCESSORY_ORANGE_BUNNY_BAND] = "_ORANGE_BUNNY_BAND", [ACCESSORY_IDs.ACCESSORY_VIOLET_BUNNY_BAND] = "_VIOLET_BUNNY_BAND", [ACCESSORY_IDs.ACCESSORY_BLUE_BUNNY_BAND] = "_BLUE_BUNNY_BAND", [ACCESSORY_IDs.ACCESSORY_SILVAH_BUNNY_BAND] = "_SILVAH_BUNNY_BAND", [ACCESSORY_IDs.ACCESSORY_STRAWBERRY_HAT] = "_STRAWBERRY_HAT", [ACCESSORY_IDs.ACCESSORY_NESTEA_HAT] = "_NESTEA_HAT", [ACCESSORY_IDs.ACCESSORY_HORN_OF_ANCIENT] = "_HORN_OF_ANCIENT", [ACCESSORY_IDs.ACCESSORY_SPROUT_HAT] = "_SPROUT_HAT", [ACCESSORY_IDs.ACCESSORY_MERCURY_HELM] = "_MERCURY_HELM", [ACCESSORY_IDs.ACCESSORY_MASK_OF_BLACKDEVIL] = "_MASK_OF_BLACKDEVIL", [ACCESSORY_IDs.ACCESSORY_CATEAR_BERET] = "_CATEAR_BERET", [ACCESSORY_IDs.ACCESSORY_RED_TAMOSHANTER] = "_RED_TAMOSHANTER", [ACCESSORY_IDs.ACCESSORY_WATERMELON_OF_A_MOUTHFUL] = "_WATERMELON_OF_A_MOUTHFUL", [ACCESSORY_IDs.ACCESSORY_1ST_ROCKET_HELM] = "_1ST_ROCKET_HELM", [ACCESSORY_IDs.ACCESSORY_2ND_ROCKET_HELM] = "_2ND_ROCKET_HELM", [ACCESSORY_IDs.ACCESSORY_DARK_AGE] = "_DARK_AGE", [ACCESSORY_IDs.ACCESSORY_TEAR_DROP] = "_TEAR_DROP", [ACCESSORY_IDs.ACCESSORY_3RD_ROCKET_HELM] = "_3RD_ROCKET_HELM", [ACCESSORY_IDs.ACCESSORY_RWC_ROCKET_HELM] = "_RWC_ROCKET_HELM", [ACCESSORY_IDs.ACCESSORY_WHITE_MUSANG_HAT] = "_WHITE_MUSANG_HAT", [ACCESSORY_IDs.ACCESSORY_BLACK_MUSANG_HAT] = "_BLACK_MUSANG_HAT", [ACCESSORY_IDs.ACCESSORY_INJURED_EYEPATCH] = "_INJURED_EYEPATCH", [ACCESSORY_IDs.ACCESSORY_LONG_TONGUE] = "_LONG_TONGUE", [ACCESSORY_IDs.ACCESSORY_ONIGIRI_IN_MOUTH] = "_ONIGIRI_IN_MOUTH", [ACCESSORY_IDs.ACCESSORY_AIRPLANE_HAT] = "_AIRPLANE_HAT", [ACCESSORY_IDs.ACCESSORY_THIEF_BANDANA] = "_THIEF_BANDANA", [ACCESSORY_IDs.ACCESSORY_GELATO_HAT] = "_GELATO_HAT", [ACCESSORY_IDs.ACCESSORY_7TH_ANNI_HAT_B] = "_7TH_ANNI_HAT_B", [ACCESSORY_IDs.ACCESSORY_HEART_EYEBANDAGE] = "_HEART_EYEBANDAGE", [ACCESSORY_IDs.ACCESSORY_FULL_MOON] = "_FULL_MOON", [ACCESSORY_IDs.ACCESSORY_TARE_DOMOVOI] = "_TARE_DOMOVOI", [ACCESSORY_IDs.ACCESSORY_FALCON_MASK] = "_FALCON_MASK", [ACCESSORY_IDs.ACCESSORY_DESERT_WOLF_HAT] = "_DESERT_WOLF_HAT", [ACCESSORY_IDs.ACCESSORY_DROOPING_ALICEL] = "_DROOPING_ALICEL", [ACCESSORY_IDs.ACCESSORY_PETITE_CHEF_HAT] = "_PETITE_CHEF_HAT", [ACCESSORY_IDs.ACCESSORY_PORING_CLIP_YELLOW] = "_PORING_CLIP_YELLOW", [ACCESSORY_IDs.ACCESSORY_PORING_CLIP_PINK] = "_PORING_CLIP_PINK", [ACCESSORY_IDs.ACCESSORY_PORING_CLIP_GREEN] = "_PORING_CLIP_GREEN", [ACCESSORY_IDs.ACCESSORY_PORING_CLIP_BLUE] = "_PORING_CLIP_BLUE", [ACCESSORY_IDs.ACCESSORY_BRIDES_BOW] = "_BRIDES_BOW", [ACCESSORY_IDs.ACCESSORY_CITRON_HAT] = "_CITRON_HAT", [ACCESSORY_IDs.ACCESSORY_NAVY_HAT] = "_NAVY_HAT", [ACCESSORY_IDs.ACCESSORY_STARFISH_BAND] = "_STARFISH_BAND", [ACCESSORY_IDs.ACCESSORY_RIBBON_MAGICIANHAT] = "_RIBBON_MAGICIANHAT", [ACCESSORY_IDs.ACCESSORY_SCISSORS_REPLICA] = "_SCISSORS_REPLICA", [ACCESSORY_IDs.ACCESSORY_ROCK_REPLICA] = "_ROCK_REPLICA", [ACCESSORY_IDs.ACCESSORY_PAPER_REPLICA] = "_PAPER_REPLICA", [ACCESSORY_IDs.ACCESSORY_SAILOR_HAT] = "_SAILOR_HAT", [ACCESSORY_IDs.ACCESSORY_MILKCOW_HAT] = "_MILKCOW_HAT", [ACCESSORY_IDs.ACCESSORY_STAR_EYEBANDAGE] = "_STAR_EYEBANDAGE", [ACCESSORY_IDs.ACCESSORY_TONGUE_CHARM] = "_TONGUE_CHARM", [ACCESSORY_IDs.ACCESSORY_FUSION_RING] = "_fusionring" } in item_db2.txt // =========================== CUSTOM ==================================== 30000,Fusion_Ring,Fusion Ring,5,20,,0,,5,,0,0xFFFFFFFF,7,2,1,,0,1,2000,{},{},{}
  6. Requesting, When SC_BLADESTOP is active, both players under the effect won't be able to use consumable items. please and thank you
  7. then try your other post http://rathena.org/board/topic/85483-land-protector/?hl=%2Bfeint+%2Bbomb\ just noticed that our fix was just the same :/ i'll do some tests about this (you do some too) if i've got time
  8. try this: index: src/map/skill.c case SC_FEINTBOMB: if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) { clif_skill_fail(sd,skill_id,USESKILL_FAIL,0); return 0; } else { clif_skill_nodamage(src,src,skill_id,skill_lv,1); skill_unitsetting(src,skill_id,skill_lv,x,y,0); // Set bomb on current Position if( skill_blown(src,src,6,unit_getdir(src),0) ) skill_castend_nodamage_id(src,src,TF_HIDING,1,tick,0); } break; don't forget to recompile
  9. if (skill == AS_SONICBLOW) pc_stop_attack(sd); //Special case, Sonic Blow autospell should stop the player attacking. else if (skill == PF_SPIDERWEB) //Special case, due to its nature of coding. type = CAST_GROUND; it becomes: /* if (skill == AS_SONICBLOW) pc_stop_attack(sd); //Special case, Sonic Blow autospell should stop the player attacking. */ else if (skill == PF_SPIDERWEB) //Special case, due to its nature of coding. type = CAST_GROUND; save then recompile yeah that will more or less produce errors thanks for pointing it out
  10. or you can verify it in trunk/doc/script_commands.txt or doc/item_bonus.txt
  11. for backslide in skill.c , search the backslide with skillblown(
  12. thank you, i'll test it right away !
  13. there is a part from skill.c that checks cells for land protector, copy that and modify it to work for feint bomb then clif_displaymessage(sd->fd,"skill has failed.");
  14. How to change the behavior of spiderweb, When exceeding the cast limit defined in skill_db.txt (default value = 3) the 4th web will be a success but the 1st web will disappear and so on,
  15. you can also change it in item script, if job = champ, autocast EDP LVL 2
  16. kinda late for a reply, but i think you might find it in status.c since it holds the player status , like str vit and other attribute bonus , also the flee and movespeed calculations, happy hunting
  17. chowking

    @go failed

    you forgot to recompile the server. coordinates will apply after recompile
  18. This error just came to be when i was re-compiling without changing anything since last compile, using Visual C++ 2010 express, though it compiles successfully in linux (server host compiler) and on Visual C++ 2009, channel.c // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder #include "../common/cbasetypes.h" #include "../common/malloc.h" #include "../common/conf.h" //libconfig #include "../common/showmsg.h" #include "../common/strlib.h" //safestrncpy #include "../common/socket.h" //set_eof #include "../common/nullpo.h" //nullpo chk #include "map.h" //msg_conf #include "clif.h" //clif_chsys_msg #include "channel.h" #include "pc.h" #include <stdio.h> #include <stdlib.h> static DBMap* channel_db; // channels DBMap* channel_get_db(void){ return channel_db; } struct chan_banentry { int char_id; char char_name[NAME_LENGTH]; } chan_banentry; /* * Create *channel * - will then add it in channel_db if type not map or ally * @name : the name channel will be given, can't be null * @pass : can be null. if we want to restrain access * @color : display color type * @chantype : type of channel * return * NULL : creation failed */ struct Channel* channel_create(char *name, char *pass, unsigned char color, enum Channel_Type chantype, int val) { struct Channel* channel; if(!name) return NULL; CREATE( channel, struct Channel, 1 ); //will exit on fail allocation channel->users = idb_alloc(DB_OPT_BASE); channel->banned = idb_alloc(DB_OPT_BASE|DB_OPT_RELEASE_DATA); channel->opt = CHAN_OPT_BASE; channel->type = chantype; channel->color = color; safestrncpy(channel->name, name, CHAN_NAME_LENGTH); if( !pass ) channel->pass[0] = '\0'; else safestrncpy(channel->pass, pass, CHAN_NAME_LENGTH); //ShowInfo("Create channel %s\n",channel->name); switch(channel->type){ case CHAN_TYPE_MAP: channel->m = val; break; case CHAN_TYPE_ALLY: channel->gid = val; break; case CHAN_TYPE_PRIVATE: channel->owner = val; //dont break here private need to put in db default: strdb_put(channel_db, channel->name, channel); } return channel; } /* * Delete channel *channel * - check if there is any user in channel and make them all quit * return * 0 : success * -1 : invalid channel */ int channel_delete(struct Channel *channel) { if(!channel) return -1; else if( db_size(channel->users)) { struct map_session_data *sd; DBIterator *iter = db_iterator(channel->users); for( sd = dbi_first(iter); dbi_exists(iter); sd = dbi_next(iter) ) { //for all users channel_clean(channel,sd,1); //make all quit } dbi_destroy(iter); } //ShowInfo("Deleting channel %s\n",channel->name); db_destroy(channel->users); db_destroy(channel->banned); switch(channel->type){ case CHAN_TYPE_MAP: map[channel->m].channel = NULL; aFree(channel); break; case CHAN_TYPE_ALLY: { struct guild *g = guild_search(channel->gid); if(g) g->channel = NULL; aFree(channel); break; } default: strdb_remove(channel_db, channel->name); break; } return 0; } /* * Make player *sd join a channel *channel * - add charid to channel user list * - add *channel to user channel list * return * 0 : success * -1 : invalid channel or sd * -2 : sd already in channel * -3 : sd banned */ int channel_join(struct Channel *channel, struct map_session_data *sd) { char output[128]; if(!channel || !sd) return -1; if(channel_haspc(channel,sd)==1) return -2; if(channel_haspcbanned(channel,sd)==1){ sprintf(output, msg_txt(sd,1438),channel->name); //You're currently banned from the '%s' channel. clif_displaymessage(sd->fd, output); return -3; } RECREATE(sd->channels, struct Channel *, ++sd->channel_count); sd->channels[ sd->channel_count - 1 ] = channel; idb_put(channel->users, sd->status.char_id, sd); if( sd->stealth ) { sd->stealth = false; } else if( channel->opt & CHAN_OPT_ANNOUNCE_JOIN ) { char message[60]; sprintf(message, "[ #%s ] '%s' has joined.",channel->name,sd->status.name); clif_channel_msg(channel,sd,message,channel->color); } /* someone is cheating, we kindly disconnect the bastard */ if( sd->channel_count > 200 ) { set_eof(sd->fd); } return 0; } /* * Make *sd join the map channel * create the map_channel if not exist * return * -1 : invalid sd * -2 : sd already in channel (channel_join) * -3 : sd banned (channel_join) */ int channel_mjoin(struct map_session_data *sd) { if(!sd) return -1; if( !map[sd->bl.m].channel ) { map[sd->bl.m].channel = channel_create(Channel_Config.map_chname,NULL,Channel_Config.map_chcolor,CHAN_TYPE_MAP,sd->bl.m); } if( !( map[sd->bl.m].channel->opt & CHAN_OPT_ANNOUNCE_JOIN ) ) { char mout[60]; sprintf(mout, msg_txt(sd,1435),Channel_Config.map_chname,map[sd->bl.m].name); // You're now in the '#%s' channel for '%s'. clif_disp_onlyself(sd, mout, strlen(mout)); } return channel_join(map[sd->bl.m].channel,sd); } /* * Make all ally member of guild *g join our guild chan * nb : they only join if they are into their own guild channel (if they not they probably left it) * return * 0 : success * -1 : invalid guild or no channel for guild */ int channel_ajoin(struct guild *g){ int i; struct map_session_data *pl_sd; if(!g || !g->channel) return -1; for (i = 0; i < MAX_GUILDALLIANCE; i++){ struct guild *ag; //allied guld struct guild_alliance *ga = &g->alliance[i]; //guild alliance if(ga->guild_id && (ga->opposition==0) && (ag=guild_search(ga->guild_id))){ for (i = 0; i < ag->max_member; i++){ //load all guildmember pl_sd = ag->member[i].sd; if(channel_haspc(ag->channel,pl_sd)==1) //only if they are in their own guildchan channel_join(g->channel,pl_sd); } } } return 0; } /* * Make *sd join the guild channel * create a chan guild if not exist * return * 0 : success * -1 : invalid sd * -2 : sd has no guild attached */ int channel_gjoin(struct map_session_data *sd, int flag){ struct Channel *channel; struct guild *g; int i; if(!sd) return -1; g = sd->guild; if(!g) return -2; channel = g->channel; if(!channel){ channel = channel_create(Channel_Config.ally_chname,NULL,Channel_Config.ally_chcolor,CHAN_TYPE_ALLY,g->guild_id); g->channel = channel; channel_ajoin(g); } if(flag&1) { channel_join(channel,sd); //join our guild chat } if(flag&2){ for (i = 0; i < MAX_GUILDALLIANCE; i++){ struct guild *ag; //allied guld struct guild_alliance *ga = &g->alliance[i]; //guild alliance if(ga->guild_id && (ga->opposition==0) && (ag=guild_search(ga->guild_id)) ) //only join allies channel_join(ag->channel,sd); } } return 0; } /* * Make *sd leave *channel and cleanup association. * - if no one remain in chat delete it * @flag&1 called from delete do not recall delete *return * 0 : success * -1 : invalid sd or channel */ int channel_clean(struct Channel *channel, struct map_session_data *sd, int flag) { unsigned char i; if(!channel || !sd) return -1; if( channel == sd->gcbind ) sd->gcbind = NULL; ARR_FIND(0, sd->channel_count, i, sd->channels[i] == channel); if( i < sd->channel_count ) { unsigned char cursor = i; sd->channels[i] = NULL; for(; i < sd->channel_count; i++ ) { //slice move list down if( sd->channels[i] == NULL ) continue; if(i != cursor) sd->channels[cursor] = sd->channels[i]; cursor++; } if ( !(sd->channel_count = cursor) ) { //if in no more chan delete db aFree(sd->channels); sd->channels = NULL; } } idb_remove(channel->users,sd->status.char_id); //remove user for channel user list if( !db_size(channel->users) && !(flag&1) && channel->type != CHAN_TYPE_PUBLIC ) channel_delete(channel); return 0; } /* * Make a *sd leave a type of chan. * @type&1 : quit guild chan * @type&2 : quit ally chans * @type&4 : quit map chan * @type&8 : quit all users joined chan * return * 0 : success * -1 : invalid sd * */ int channel_pcquit(struct map_session_data *sd, int type){ int i; //On closing state we could have clean all chan by sd but pcquit is more used to free unit when //he quit a map_server, not call in map_quit cause we need to cleanup when we switch map-server as well if(!sd) return -1; // Leave all chat channels. if(type&(1|2) && Channel_Config.ally_enable && sd->guild){ //quit guild and ally chan struct guild *g = sd->guild; if(type&1 && channel_haspc(g->channel,sd)==1){ channel_clean(g->channel,sd,0); //leave guild chan } if(type&2){ struct guild *ag; //allied guild for (i = 0; i < MAX_GUILDALLIANCE; i++) { //leave all alliance chan if( g->alliance[i].guild_id && (ag = guild_search(g->alliance[i].guild_id) ) ) { if(channel_haspc(ag->channel,sd) == 1) channel_clean(ag->channel,sd,0); break; } } } } if(type&4 && Channel_Config.map_enable && channel_haspc(map[sd->bl.m].channel,sd)==1){ //quit map chan channel_clean(map[sd->bl.m].channel,sd,0); } if(type&8 && sd->channel_count ) { //quit all chan uint8 count = sd->channel_count; for( i = count-1; i >= 0; i--) { //going backward to avoid shifting channel_clean(sd->channels[i],sd,0); } } return 0; } /* * Format *msg from *sd to send it in *channel * Also truncate extra char if msg too long (max=RACHSYS_MSG_LENGTH) * return * 0 : success * -1 : invalid sd, channel, or msg * -2 : delay msg too low since last talk */ int channel_send(struct Channel *channel, struct map_session_data *sd, const char *msg) { if(!channel || !sd || !msg) return -1; if(!pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) && channel->msg_delay != 0 && DIFF_TICK(sd->channel_tick + ( channel->msg_delay * 1000 ), gettick()) > 0) { clif_colormes(sd,color_table[COLOR_RED],msg_txt(sd,1455)); //You're talking too fast! return -2; } else { char message[CHAN_MSG_LENGTH], color; if((channel->opt)&CHAN_OPT_COLOR_OVERRIDE && sd->fontcolor) color = sd->fontcolor; else color = channel->color; snprintf(message, CHAN_MSG_LENGTH, "[ #%s ] %s : %s",channel->name,sd->status.name, msg); clif_channel_msg(channel,sd,message,color); sd->channel_tick = gettick(); } return 0; } /* * Check parameters for channel creation * @type (bitflag) * 1 : check name # + length * 2 : check if already exist, need 1 * 4 : check password length * return * 0 : success * -1 : bad chan name * -2 : bad chan name length * -3 : pass given too long * -4 : chan already exists */ int channel_chk(char *chname, char *chpass, int type){ if(type&1){ //check name if( chname[0] != '#' ) return -1; if ( strlen(chname) < 3 || strlen(chname) > CHAN_NAME_LENGTH ) return -2; if( (type&2) && ( strcmpi(chname + 1,Channel_Config.map_chname) == 0 || strcmpi(chname + 1,Channel_Config.ally_chname) == 0 || strdb_exists(channel_db, chname + 1) ) ) { return -4; } } if (type&4 && (chpass != '\0' && strlen(chpass) > CHAN_NAME_LENGTH ) ) { return -3; } return 0; } /* * Lookup to found a channel from his name. * @chname : channel name * @sd : can be NULL, use to solve #map and #ally case * @flag&1 : create channel if not exist (map or ally only) * @flag&3 : join channel if not exist (map or ally only) * return * NULL : channel not found */ struct Channel* channel_name2channel(char *chname, struct map_session_data *sd, int flag){ struct Channel *channel; if(channel_chk(chname, NULL, 1)) return NULL; if(sd && strcmpi(chname + 1,Channel_Config.map_chname) == 0){ channel = map[sd->bl.m].channel; if(flag&1 && !channel) { channel = channel_create(Channel_Config.map_chname,NULL,Channel_Config.map_chcolor,CHAN_TYPE_MAP,sd->bl.m); if(flag&2) channel_mjoin(sd); map[sd->bl.m].channel = channel; } } else if(sd && (strcmpi(chname + 1,Channel_Config.ally_chname) == 0) && sd->guild){ channel = sd->guild->channel; if(flag&1 && !channel) { channel = channel_create(Channel_Config.map_chname,NULL,Channel_Config.map_chcolor,CHAN_TYPE_ALLY,sd->guild->guild_id); if(flag&2) channel_gjoin(sd,3); sd->guild->channel = channel; } } else if( !(channel = strdb_get(channel_db, chname + 1)) ) { return NULL; } return channel; } /* * Channel check if he has *sd in his user list * return * -1 : invalid sd or channel * 0 : not found * 1 : has pc */ int channel_haspc(struct Channel *channel,struct map_session_data *sd){ if(!channel || !sd) return -1; return (idb_exists(channel->users, sd->status.char_id))?1:0; } /* * Channel check if *sd is banned from channel (banned ?) * return * -1 : invalid sd or channel * 0 : not found * 1 : has pc */ int channel_haspcbanned(struct Channel *channel,struct map_session_data *sd){ if(!channel || !sd) return -1; return (idb_exists(channel->banned, sd->status.char_id))?1:0; } /* * Player *sd check if he has Channel *channel in his channel list * return * -1 : invalid channel or sd * -2 : not found * x>0 : has_chan at index x */ int channel_pc_haschan(struct map_session_data *sd, struct Channel *channel){ int k; if(!channel || !sd) return -1; //channel or player doesn't exist ARR_FIND(0, sd->channel_count, k, strcmpi(channel->name,sd->channels[k]->name) == 0); if( k >= sd->channel_count ) return -2; return k; } /* * Display some info to user *sd on channels * @options : * colors : display availables colors for chan system * mine : list of chan *sd is in + nb of user * void : list of public chan + map + guild + nb of user * return * 0 : success * -1 : fail */ int channel_display_list(struct map_session_data *sd, char *options){ struct Channel *channel; char output[128]; int k; if(!sd || !options) return -1; //display availaible colors if( options[0] != '\0' && strcmpi(options,"colors") == 0 ) { char msg[40]; clif_displaymessage(sd->fd, msg_txt(sd,1444)); // ---- Available Colors ---- for( k = 0; k < Channel_Config.colors_count; k++ ) { sprintf(msg, msg_txt(sd,1445),Channel_Config.colors_name[k]);// - '%s' clif_colormes(sd,Channel_Config.colors[k],msg); } } else if( options[0] != '\0' && strcmpi(options,"mine") == 0 ) { //display chan I'm into clif_displaymessage(sd->fd, msg_txt(sd,1475)); // ---- My Channels ---- if(!sd->channel_count) clif_displaymessage(sd->fd, msg_txt(sd,1476)); // You have not joined any channels. else { for(k=0; k<sd->channel_count; k++){ channel = sd->channels[k]; sprintf(output, msg_txt(sd,1409), channel->name, db_size(channel->users));// - #%s (%d users) clif_displaymessage(sd->fd, output); } } } else { //display public chanels DBIterator *iter; bool has_perm = pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) ? true : false; clif_displaymessage(sd->fd, msg_txt(sd,1410)); // ---- Public Channels ---- if( Channel_Config.map_enable ) { sprintf(output, msg_txt(sd,1409), Channel_Config.map_chname, map[sd->bl.m].channel ? db_size(map[sd->bl.m].channel->users) : 0);// - #%s (%d users) clif_displaymessage(sd->fd, output); } if( Channel_Config.ally_enable && sd->status.guild_id ) { struct guild *g = sd->guild; if( !g ) return -1; //how can this happen if status.guild_id true ? sprintf(output, msg_txt(sd,1409), Channel_Config.ally_chname, db_size(((struct Channel *)g->channel)->users));// - #%s (%d users) clif_displaymessage(sd->fd, output); } iter = db_iterator(channel_db); for(channel = dbi_first(iter); dbi_exists(iter); channel = dbi_next(iter)) { if( has_perm || channel->type == CHAN_TYPE_PUBLIC ) { sprintf(output, msg_txt(sd,1409), channel->name, db_size(channel->users));// - #%s (%d users) clif_displaymessage(sd->fd, output); } } dbi_destroy(iter); } return 0; } /* * A user *sd is attempting to create a channel named *chname with pass *chpass * return * 0 : success * -1 : fail */ int channel_pccreate(struct map_session_data *sd, char *chname, char *chpass){ struct Channel *channel; char output[128]; int8 res; if(!sd || !chname) return 0; res = channel_chk(chname,chpass,7); if(res==0){ //success channel = channel_create(chname + 1,chpass,0,CHAN_TYPE_PRIVATE,sd->status.char_id); channel_join(channel,sd); if( !( channel->opt & CHAN_OPT_ANNOUNCE_JOIN ) ) { sprintf(output, msg_txt(sd,1403),chname); // You're now in the '%s' channel. clif_displaymessage(sd->fd, output); } } else { //failure display cause switch(res){ case -1: sprintf(output, msg_txt(sd,1405), CHAN_NAME_LENGTH); break;// Channel name must start with '#'. case -2: sprintf(output, msg_txt(sd,1406), CHAN_NAME_LENGTH); break;// Channel length must be between 3 and %d. case -3: sprintf(output, msg_txt(sd,1436), CHAN_NAME_LENGTH); break;// Channel password can't be over %d characters. case -4: sprintf(output, msg_txt(sd,1407), chname);// Channel '%s' is not available. } clif_displaymessage(sd->fd, output); return -1; } return 0; } /* * A user *sd is attempting to delete a channel named *chname * return * 0 : success * -1 : fail */ int channel_pcdelete(struct map_session_data *sd, char *chname){ struct Channel *channel; char output[128]; if(!sd || !chname) return 0; if( channel_chk(chname,NULL,1) ) { clif_displaymessage(sd->fd, msg_txt(sd,1405));// Channel name must start with '#'. return -1; } channel = channel_name2channel(chname,sd,0); if(channel_pc_haschan(sd,channel)<0){ sprintf(output, msg_txt(sd,1425),chname);// You're not part of the '%s' channel. clif_displaymessage(sd->fd, output); return -2; //channel doesn't exist or player don't have it } channel_delete(channel); sprintf(output, msg_txt(sd,1448),chname); // Channel '%s' deleted. clif_displaymessage(sd->fd, output); return 0; } /* * A user *sd is attempting to leave a channel named *chname * return * 0 : success * -1 : fail */ int channel_pcleave(struct map_session_data *sd, char *chname){ struct Channel *channel; char output[128]; if(!sd || !chname) return 0; if( channel_chk(chname,NULL,1) ) { clif_displaymessage(sd->fd, msg_txt(sd,1405));// Channel name must start with '#'. return -1; } channel = channel_name2channel(chname,sd,0); if(channel_pc_haschan(sd,channel)<0){ sprintf(output, msg_txt(sd,1425),chname);// You're not part of the '%s' channel. clif_displaymessage(sd->fd, output); return -2; //channel doesn't exist or player don't have it } if( !Channel_Config.closing && (channel->opt & CHAN_OPT_ANNOUNCE_JOIN) ) { char message[60]; sprintf(message, "#%s '%s' left",channel->name,sd->status.name); clif_channel_msg(channel,sd,message,channel->color); } switch(channel->type){ case CHAN_TYPE_ALLY: channel_pcquit(sd,3); break; case CHAN_TYPE_MAP: channel_pcquit(sd,4); break; default: //private and public atm channel_clean(channel,sd,0); } sprintf(output, msg_txt(sd,1426),chname); // You've left the '%s' channel. clif_displaymessage(sd->fd, output); return 0; } /* * A user *sd is attempting to join a channel named *chname * return * 0 : success * -1 : fail */ int channel_pcjoin(struct map_session_data *sd, char *chname, char *pass){ struct Channel *channel; char output[128]; if(!sd || !chname) return 0; if( channel_chk(chname,NULL,1) ) { clif_displaymessage(sd->fd, msg_txt(sd,1405));// Channel name must start with '#'. return -1; } channel = channel_name2channel(chname,sd,1); if(channel){ if(channel_haspc(channel,sd)==1) { sprintf(output, msg_txt(sd,1434),chname); // You're already in the '%s' channel. clif_displaymessage(sd->fd, output); return -1; } else if( channel->pass[0] != '\0') { //chan has a pass if(strcmp(channel->pass,pass) != 0){ //wrong pass entry if( pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) ) { sd->stealth = true; } else { sprintf(output, msg_txt(sd,1401),chname,"@join"); // Channel '%s' is password-protected (usage: %s <#channel_name> <password>). clif_displaymessage(sd->fd, output); return -1; } } } } else { sprintf(output, msg_txt(sd,1400),chname,"@join"); // Unknown channel '%s' (usage: %s <#channel_name>). clif_displaymessage(sd->fd, output); return -1; } if( !( channel->opt & CHAN_OPT_ANNOUNCE_JOIN ) ) { sprintf(output, msg_txt(sd,1403),chname); // You're now in the '%s' channel. clif_displaymessage(sd->fd, output); } switch(channel->type){ case CHAN_TYPE_ALLY: channel_gjoin(sd,3); break; case CHAN_TYPE_MAP: channel_mjoin(sd); break; default: //private and public atm channel_join(channel,sd); } return 0; } /* * A user *sd is attempting to change color with *color of a channel named *chname * return * 0 : success * -1 : fail */ int channel_pccolor(struct map_session_data *sd, char *chname, char *color){ struct Channel *channel; char output[128]; int k; if(!sd) return 0; if( channel_chk(chname,NULL,1) ) { clif_displaymessage(sd->fd, msg_txt(sd,1405));// Channel name must start with '#'. return -1; } channel = channel_name2channel(chname,sd,0); if( !channel ) { sprintf(output, msg_txt(sd,1407), chname);// Channel '%s' is not available. clif_displaymessage(sd->fd, output); return -1; } if( channel->owner != sd->status.char_id && !pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) ) { sprintf(output, msg_txt(sd,1412), chname);// You're not the owner of channel '%s'. clif_displaymessage(sd->fd, output); return -1; } ARR_FIND(0,Channel_Config.colors_count,k,( strcmpi(color,Channel_Config.colors_name[k]) == 0 ) ); if( k >= Channel_Config.colors_count ) { sprintf(output, msg_txt(sd,1411), color);// Unknown color '%s'. clif_displaymessage(sd->fd, output); return -1; } channel->color = k; sprintf(output, msg_txt(sd,1413),chname,Channel_Config.colors_name[k]);// '%s' channel color updated to '%s'. clif_displaymessage(sd->fd, output); return 0; } /* * A user *sd is attempting to bind (make default message output display chan talk) * from a channel named *chname * return * 0 : success * -1 : fail */ int channel_pcbind(struct map_session_data *sd, char *chname){ struct Channel *channel; char output[128]; if(!sd) return 0; if( channel_chk(chname,NULL,1) ) { clif_displaymessage(sd->fd, msg_txt(sd,1405));// Channel name must start with '#'. return -1; } channel = channel_name2channel(chname,sd,0); if(channel_pc_haschan(sd,channel)<0){ sprintf(output, msg_txt(sd,1425),chname);// You're not part of the '%s' channel. clif_displaymessage(sd->fd, output); return -2; //channel doesn't exist or player don't have it } sd->gcbind = channel; sprintf(output, msg_txt(sd,1431),chname); // Your global chat is now binded to the '%s' channel. clif_displaymessage(sd->fd, output); return 0; } /* * A user *sd is attempting to unbind * return * 0 : success * -1 : fail */ int channel_pcunbind(struct map_session_data *sd){ char output[128]; if(!sd) return 0; if( sd->gcbind == NULL ) { clif_displaymessage(sd->fd, msg_txt(sd,1432));// Your global chat is not binded to any channel. return -1; } sprintf(output, msg_txt(sd,1433),sd->gcbind->name); // Your global chat is now unbinded from the '#%s' channel. clif_displaymessage(sd->fd, output); sd->gcbind = NULL; return 0; } /* * A user *sd is attempting to do something with the banlist * @flag == 0 : ban * @flag == 1 : unban * @flag == 2 : unbanall * @flag == 3 : banlist * return * 0 : success * -1 : fail */ int channel_pcban(struct map_session_data *sd, char *chname, struct map_session_data *tsd, int flag){ struct Channel *channel; char output[128]; if( channel_chk(chname,NULL,1) ) { clif_displaymessage(sd->fd, msg_txt(sd,1405));// Channel name must start with '#'. return -1; } channel = channel_name2channel(chname,sd,0); if( !channel ) { sprintf(output, msg_txt(sd,1407), chname);// Channel '%s' is not available. clif_displaymessage(sd->fd, output); return -1; } if( channel->owner != sd->status.char_id && !pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) ) { sprintf(output, msg_txt(sd,1412), chname);// You're not the owner of channel '%s'. clif_displaymessage(sd->fd, output); return -1; } if(flag != 2 && flag != 3){ char banned; if(!tsd || pc_has_permission(tsd, PC_PERM_CHANNEL_ADMIN) ) { sprintf(output, msg_txt(sd,1464), tsd->status.name);// Ban failed for player '%s'. clif_displaymessage(sd->fd, output); return -1; } banned = channel_haspcbanned(channel,tsd); if(!flag && banned==1) { sprintf(output, msg_txt(sd,1465), tsd->status.name);// Player '%s' is already banned from this channel. clif_displaymessage(sd->fd, output); return -1; } else if(flag==1 && banned==0) { sprintf(output, msg_txt(sd,1440), tsd->status.name);// Player '%s' is not banned from this channel. clif_displaymessage(sd->fd, output); return -1; } } else { if( !db_size(channel->banned) ) { sprintf(output, msg_txt(sd,1439), chname);// Channel '%s' contains no banned players. clif_displaymessage(sd->fd, output); return -1; } } //let properly alter the list now switch(flag){ case 0: { struct chan_banentry *cbe; CREATE(cbe, struct chan_banentry, 1); cbe->char_id = tsd->status.char_id; strcpy(cbe->char_name,tsd->status.name); idb_put(channel->banned, tsd->status.char_id, cbe); channel_clean(channel,tsd,0); sprintf(output, msg_txt(sd,1437),tsd->status.name,chname); // Player '%s' is banned from the '%s' channel. break; } case 1: idb_remove(channel->banned, tsd->status.char_id); sprintf(output, msg_txt(sd,1441),tsd->status.name,chname); // Player '%s' is unbanned from the '%s' channel. break; case 2: db_clear(channel->banned); sprintf(output, msg_txt(sd,1442),chname); // Cleared all bans from the '%s' channel. break; case 3: { DBIterator *iter = db_iterator(channel->banned); struct chan_banentry *cbe; sprintf(output, msg_txt(sd,1443), channel->name);// ---- '#%s' Ban List: clif_displaymessage(sd->fd, output); for( cbe = dbi_first(iter); dbi_exists(iter); cbe = dbi_next(iter) ) { //for all users sprintf(output, "%d: %s",cbe->char_id,cbe->char_name); clif_displaymessage(sd->fd, output); } dbi_destroy(iter); } return 0; } clif_displaymessage(sd->fd, output); return 0; } /* * A user *sd is attempting to set an option on channel named *chname * @chname = channel name * @option = available = opt_str * @val = value to assign to option * return * 0 : success * -1 : fail */ int channel_pcsetopt(struct map_session_data *sd, char *chname, const char *option, const char *val){ struct Channel *channel; char output[128]; int k, s=0; const char* opt_str[] = { "None", "JoinAnnounce", "MessageDelay", "ColorOverride", }; if( channel_chk(chname,NULL,1) ) { clif_displaymessage(sd->fd, msg_txt(sd,1405));// Channel name must start with '#'. return -1; } channel = channel_name2channel(chname,sd,0); if( !channel ) { sprintf(output, msg_txt(sd,1407), chname);// Channel '%s' is not available. clif_displaymessage(sd->fd, output); return -1; } if( channel->owner != sd->status.char_id && !pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) ) { sprintf(output, msg_txt(sd,1412), chname);// You're not the owner of channel '%s'. clif_displaymessage(sd->fd, output); return -1; } if(!option || option == '\0' ) { clif_displaymessage(sd->fd, msg_txt(sd,1446));// You need to input an option. return -1; } s = ARRAYLENGTH(opt_str); ARR_FIND(1,s,k,( strncmpi(option,opt_str[k],3) == 0 )); //we only cmp 3 letter atm if( k >= s ) { sprintf(output, msg_txt(sd,1447), option);// Unknown channel option '%s'. clif_displaymessage(sd->fd, output); clif_displaymessage(sd->fd, msg_txt(sd,1414));// ---- Available options: for( k = 1; k < s; k++ ) { sprintf(output, msg_txt(sd,1445), opt_str[k]);// - '%s' clif_displaymessage(sd->fd, output); } return -1; } if( val[0] == '\0' ) { if ( k == CHAN_OPT_MSG_DELAY ) { sprintf(output, msg_txt(sd,1466), opt_str[k]);// Input the number of seconds (0-10) for the '%s' option. clif_displaymessage(sd->fd, output); return -1; } else if( channel->opt & k ) { sprintf(output, msg_txt(sd,1449), opt_str[k],opt_str[k]); // Option '%s' is already enabled (use '@channel setopt %s 0' to disable). clif_displaymessage(sd->fd, output); return -1; } else { channel->opt |= k; sprintf(output, msg_txt(sd,1450), opt_str[k],channel->name);// Option '%s' is enabled for channel '#%s'. clif_displaymessage(sd->fd, output); } } else { int v = atoi(val); if( k == CHAN_OPT_MSG_DELAY ) { if( v < 0 || v > 10 ) { sprintf(output, msg_txt(sd,1451), v, opt_str[k]);// Value '%d' for option '%s' is out of range (limit 0-10). clif_displaymessage(sd->fd, output); return -1; } if( v == 0 ) { channel->opt &=~ k; channel->msg_delay = 0; sprintf(output, msg_txt(sd,1453), opt_str[k],channel->name,v);// Option '%s' is disabled for channel '#%s'. clif_displaymessage(sd->fd, output); } else { channel->opt |= k; channel->msg_delay = v; sprintf(output, msg_txt(sd,1452), opt_str[k],channel->name,v);// Option '%s' is enabled for channel '#%s' at %d seconds. clif_displaymessage(sd->fd, output); } } else { if( v ) { if( channel->opt & k ) { sprintf(output, msg_txt(sd,1449), opt_str[k],opt_str[k]); // Option '%s' is already enabled (use '@channel setopt %s 0' to disable). clif_displaymessage(sd->fd, output); return -1; } else { channel->opt |= k; sprintf(output, msg_txt(sd,1450), opt_str[k],channel->name);// Option '%s' is enabled for channel '#%s'. clif_displaymessage(sd->fd, output); } } else { if( !(channel->opt & k) ) { sprintf(output, msg_txt(sd,1450), opt_str[k],channel->name); // Option '%s' is enabled for channel '#%s'. clif_displaymessage(sd->fd, output); return -1; } else { channel->opt &=~ k; sprintf(output, msg_txt(sd,1453), opt_str[k],channel->name);// Option '%s' is disabled for channel '#%s'. clif_displaymessage(sd->fd, output); } } } } return 0; } /* * Read and verify configuration in confif_filename * Assign table value with value */ void channel_read_config(void) { config_t channels_conf; config_setting_t *chsys = NULL; const char *config_filename = "conf/channels.conf"; // FIXME hardcoded name if (conf_read_file(&channels_conf, config_filename)) return; chsys = config_lookup(&channels_conf, "chsys"); if (chsys != NULL) { config_setting_t *settings = config_setting_get_elem(chsys, 0); config_setting_t *channels; config_setting_t *colors; int i,k; const char *map_chname, *ally_chname,*map_color, *ally_color; int ally_enabled = 0, local_enabled = 0; int local_autojoin = 0, ally_autojoin = 0; int allow_user_channel_creation = 0; if( !config_setting_lookup_string(settings, "map_local_channel_name", &map_chname) ) map_chname = "map"; safestrncpy(Channel_Config.map_chname, map_chname, CHAN_NAME_LENGTH); if( !config_setting_lookup_string(settings, "ally_channel_name", &ally_chname) ) ally_chname = "ally"; safestrncpy(Channel_Config.ally_chname, ally_chname, CHAN_NAME_LENGTH); config_setting_lookup_bool(settings, "map_local_channel", &local_enabled); config_setting_lookup_bool(settings, "ally_channel_enabled", &ally_enabled); if( local_enabled ) Channel_Config.map_enable = true; if( ally_enabled ) Channel_Config.ally_enable = true; config_setting_lookup_bool(settings, "map_local_channel_autojoin", &local_autojoin); config_setting_lookup_bool(settings, "ally_channel_autojoin", &ally_autojoin); if( local_autojoin ) Channel_Config.map_autojoin = true; if( ally_autojoin ) Channel_Config.ally_autojoin = true; config_setting_lookup_bool(settings, "allow_user_channel_creation", &allow_user_channel_creation); if( allow_user_channel_creation ) Channel_Config.user_chenable = true; if( (colors = config_setting_get_member(settings, "colors")) != NULL ) { int color_count = config_setting_length(colors); CREATE( Channel_Config.colors, unsigned long, color_count ); CREATE( Channel_Config.colors_name, char *, color_count ); for(i = 0; i < color_count; i++) { config_setting_t *color = config_setting_get_elem(colors, i); CREATE( Channel_Config.colors_name[i], char, CHAN_NAME_LENGTH ); safestrncpy(Channel_Config.colors_name[i], config_setting_name(color), CHAN_NAME_LENGTH); Channel_Config.colors[i] = strtoul(config_setting_get_string_elem(colors,i),NULL,0); Channel_Config.colors[i] = (Channel_Config.colors[i] & 0x0000FF) << 16 | (Channel_Config.colors[i] & 0x00FF00) | (Channel_Config.colors[i] & 0xFF0000) >> 16;//RGB to BGR } Channel_Config.colors_count = color_count; } config_setting_lookup_string(settings, "map_local_channel_color", &map_color); for (k = 0; k < Channel_Config.colors_count; k++) { if( strcmpi(Channel_Config.colors_name[k],map_color) == 0 ) break; } if( k < Channel_Config.colors_count ) { Channel_Config.map_chcolor = k; } else { ShowError("channels.conf: unknown color '%s' for 'map_local_channel_color', disabling '#%s'...\n",map_color,map_chname); Channel_Config.map_enable = false; } config_setting_lookup_string(settings, "ally_channel_color", &ally_color); for (k = 0; k < Channel_Config.colors_count; k++) { if( strcmpi(Channel_Config.colors_name[k],ally_color) == 0 ) break; } if( k < Channel_Config.colors_count ) { Channel_Config.ally_chcolor = k; } else { ShowError("channels.conf: unknown color '%s' for 'ally_channel_color', disabling '#%s'...\n",ally_color,ally_chname); Channel_Config.ally_enable = false; } if( (channels = config_setting_get_member(settings, "default_channels")) != NULL ) { int channel_count = config_setting_length(channels); for(i = 0; i < channel_count; i++) { config_setting_t *channel = config_setting_get_elem(channels, i); const char *color = config_setting_get_string_elem(channels,i); char *name = config_setting_name(channel); struct Channel *chd; for (k = 0; k < Channel_Config.colors_count; k++) { if( strcmpi(Channel_Config.colors_name[k],color) == 0 ) break; } if( k == Channel_Config.colors_count ) { ShowError("channels.conf: unknown color '%s' for channel '%s', skipping channel...\n",color,name); continue; } if( strcmpi(name,Channel_Config.map_chname) == 0 || strcmpi(name,Channel_Config.ally_chname) == 0 || strdb_exists(channel_db, name) ) { ShowError("channels.conf: duplicate channel '%s', skipping channel...\n",name); continue; } chd = channel_create(name,NULL,k,CHAN_TYPE_PUBLIC,0); } } ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' channels in '"CL_WHITE"%s"CL_RESET"'.\n", db_size(channel_db), config_filename); config_destroy(&channels_conf); } } /* * Initialise db and read config * return * 0 : success */ int do_init_channel(void) { channel_db = stridb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, CHAN_NAME_LENGTH); Channel_Config.ally_enable = Channel_Config.map_enable = Channel_Config.ally_autojoin = Channel_Config.map_autojoin = false; channel_read_config(); return 0; } /* * Close all and cleanup * NB map and guild need to cleanup their chan as well */ void do_final_channel(void) { DBIterator *iter; struct Channel *channel; int i=0; //delete all in remaining chan db iter = db_iterator(channel_db); for( channel = dbi_first(iter); dbi_exists(iter); channel = dbi_next(iter) ) { channel_delete(channel); } dbi_destroy(iter); //at this point all user should have left their channel (private and public should be gone) db_destroy(channel_db); //delete all color thing if( Channel_Config.colors_count ) { for(i = 0; i < Channel_Config.colors_count; i++) { aFree(Channel_Config.colors_name[i]); } aFree(Channel_Config.colors_name); aFree(Channel_Config.colors); } } channel.h // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder #ifndef CHANNEL_H #define CHANNEL_H #include "pc.h" #ifdef __cplusplus extern "C" { #endif #define CHAN_NAME_LENGTH 20 #define CHAN_MSG_LENGTH 150 enum Channel_Opt { CHAN_OPT_BASE = 0, CHAN_OPT_ANNOUNCE_JOIN = 1, //display message when join or leave CHAN_OPT_MSG_DELAY = 2, CHAN_OPT_COLOR_OVERRIDE = 3, }; enum Channel_Type { CHAN_TYPE_PUBLIC = 0, //config file made CHAN_TYPE_PRIVATE = 1, //user made CHAN_TYPE_MAP = 2, //made by map CHAN_TYPE_ALLY = 3, //guild }; struct { unsigned long *colors; //color avail int list char **colors_name; //colors avail name list unsigned char colors_count; //color avail count unsigned char map_chcolor, ally_chcolor; //msg color for map, ally bool map_enable, ally_enable, user_chenable; //map, ally, users channels enable ? bool map_autojoin, ally_autojoin; //do user auto join in mapchange, guildjoin ? char map_chname[CHAN_NAME_LENGTH], ally_chname[CHAN_NAME_LENGTH]; //channel name for map and ally bool closing; //server is closing } Channel_Config; struct Channel { char name[CHAN_NAME_LENGTH]; //channel name char pass[CHAN_NAME_LENGTH]; //channel password unsigned char color; //msg color DBMap *users; //users in channel charid list DBMap *banned; //users banned from channel charid list enum Channel_Opt opt; //flag for some treatement enum Channel_Type type; //type of channel unsigned int owner; //if chan_type private charid of creator uint16 m; //if chan_type map guild_id int gid; //if chan_type guild type guild_id unsigned char msg_delay; //delay in second if opt_msg_delay }; DBMap* channel_get_db(void); struct Channel* channel_create(char *name, char *pass, unsigned char color, enum Channel_Type chantype, int val); int channel_delete(struct Channel *channel); int channel_join(struct Channel *channel, struct map_session_data *sd); int channel_mjoin(struct map_session_data *sd); int channel_gjoin(struct map_session_data *sd, int flag); int channel_ajoin(struct guild *g); int channel_clean(struct Channel *channel, struct map_session_data *sd, int flag); int channel_pcquit(struct map_session_data *sd, int type); int channel_send(struct Channel *channel, struct map_session_data *sd, const char *msg); void channel_read_config(void); int channel_chk(char *name, char *pass, int type); struct Channel* channel_name2channel(char *chname, struct map_session_data *sd, int flag); int channel_haspc(struct Channel *channel,struct map_session_data *sd); int channel_haspcbanned(struct Channel *channel,struct map_session_data *sd); int channel_pc_haschan(struct map_session_data *sd, struct Channel *channel); int channel_display_list(struct map_session_data *sd, char *option); int channel_pccreate(struct map_session_data *sd, char *chname, char *pass); int channel_pcdelete(struct map_session_data *sd, char *chname); int channel_pcjoin(struct map_session_data *sd, char *chname, char *pass); int channel_pcleave(struct map_session_data *sd, char *chname); int channel_pccolor(struct map_session_data *sd, char *chname, char *color); int channel_pcbind(struct map_session_data *sd, char *chname); int channel_pcunbind(struct map_session_data *sd); int channel_pcban(struct map_session_data *sd, char *chname, struct map_session_data *tsd, int flag); int channel_pcsetopt(struct map_session_data *sd, char *chname, const char *option, const char *val); int do_init_channel(void); void do_final_channel(void); #ifdef __cplusplus } #endif #endif /* CHANNEL_H */ these files were not touched ever since the clean trunk has been downloaded don't have a clue on how to fix this since i generally edit skill.c battle.c atcommand.c and status.c only, please help
  19. Problem resolved. What happens now is: pally->devo->partymember(both pk on)=success pally->devo->partymember(both pk off)=success pally->devo->partymember(different pk state)=fail I have to do some reworking on battle_check_target in battle.c, as well as some slight modifications in skill_castend_nodamage_id in skill.c Did test runs in my test server and everything works. However, by editing battle_check_target which is used by almost ALL functions, I fear there are bugs that might be present. Please check my code below. =========================================================================== battle.c/battle_check_target(block list *src, block list *target, int flag) line no. 5351-5371 =========================================================================== switch( t_bl->type ) { //Checks on target master case BL_PC: { struct map_session_data *ssd=BL_CAST(BL_PC,s_bl);//custom; added ssd for enabling use of support skills on party members in pvp maps, stores map_session_data for source of attack/skill struct map_session_data *sd; if( t_bl == s_bl ) break; sd = BL_CAST(BL_PC, t_bl); if( sd->state.monster_ignore && flag&BCT_ENEMY ) return 0; // Global inminuty only to Attacks /*custom;added for pk mode, modified implementation of anti-pk protection and allows use of support skills on party members with identical pk status: Original code provided was:[for reference] if( map[m].flag.pvp && sd->state.pk_mode&& flag&BCT_ENEMY && s_bl->type != BL_MOB ) return 0; */ if( map[m].flag.pvp && sd->state.pk_mode==1 && flag&BCT_ENEMY && s_bl->type != BL_MOB ){ if(sd->status.party_id==ssd->status.party_id) state|=BCT_PARTY; else return 0;}//end custom =========================================================================== battle.c/battle_check_target(block list *src, block list *target, int flag) line no. 5418-5449 =========================================================================== switch( s_bl->type ) { //Checks on source master case BL_PC: { struct map_session_data *sd = BL_CAST(BL_PC, s_bl); struct map_session_data *tsd = BL_CAST(BL_PC,t_bl);//custom; added tsd to allow use of support skills on party members in pvp maps, stores the target of attack/skill if( s_bl != t_bl ) { if( sd->state.killer ) { state |= BCT_ENEMY; // Can kill anything strip_enemy = 0; } else if( sd->duel_group && !((!battle_config.duel_allow_pvp && map[m].flag.pvp) || (!battle_config.duel_allow_gvg && map_flag_gvg(m))) ) { if( t_bl->type == BL_PC && (sd->duel_group == ((TBL_PC*)t_bl)->duel_group) ) return (BCT_ENEMY&flag)?1:-1; // Duel targets can ONLY be your enemy, nothing else. else return 0; // You can't target anything out of your duel } /*custom;added for pk mode, modified implementation of anti-pk protection and allows use of support skills on party members with identical pk status: Original code provided was:[for reference] else if( map[m].flag.pvp && sd->state.pk_mode&& flag&BCT_ENEMY && s_bl->type != BL_MOB ) return 0; */ else if( map[m].flag.pvp && sd->state.pk_mode==1 && t_bl->type != BL_MOB){ if(sd->status.party_id==tsd->status.party_id) state|=BCT_PARTY; else return 0; } }//end custom here is the code from the modified skill.c ================================================================================================================= skill.c/skill_castend_nodamage_id(block_list* src, block_list* bl, uint16 skill_id, uint16 skill_lv, unsigned int tick, int flag) line no. 5617- 5686 ================================================================================================================= case ML_DEVOTION: case CR_DEVOTION: { int count, lv; if( !dstsd || (!sd && !mer) ) { // Only players can be devoted if( sd ) clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); break; } if( (lv = status_get_lv(src) - dstsd->status.base_level) < 0 ) lv = -lv; if( lv > battle_config.devotion_level_difference || // Level difference requeriments (dstsd->sc.data[type] && dstsd->sc.data[type]->val1 != src->id) || // Cannot Devote a player devoted from another source (skill_id == ML_DEVOTION && (!mer || mer != dstsd->md)) || // Mercenary only can devote owner (dstsd->class_&MAPID_UPPERMASK) == MAPID_CRUSADER || // Crusader Cannot be devoted (dstsd->sc.data[SC_HELLPOWER])) // Players affected by SC_HELLPOWERR cannot be devoted. { if( sd ) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); map_freeblock_unlock(); return 1; } i = 0; count = (sd)? min(skill_lv,5) : 1; // Mercenary only can Devote owner if( sd ) { // Player Devoting Player int devo=battle_check_target(src,bl,BCT_PARTY);//custom; added devo for allowing devotion on party members with identical pk states, stores the result of battle_check_target to see if the target with relation to the caster are party members struct map_session_data *devsd=BL_CAST(BL_PC,bl);//custom; added devsd for allowing devotion on party members with identical pk states, stores map_session_data of target ARR_FIND(0, count, i, sd->devotion[i] == bl->id ); if( i == count ) { ARR_FIND(0, count, i, sd->devotion[i] == 0 ); if( i == count ) { // No free slots, skill Fail clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); map_freeblock_unlock(); return 1; } //custom; allows use of Devotion (CR_DEVOTION) on party members with identical pk states if(devo == -1){//Not in party of the caster clif_displaymessage(sd->fd,"Can't cast devotion on non-party members"); clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); map_freeblock_unlock(); return 1; } } if(devo == 1 && sd->state.pk_mode==devsd->state.pk_mode){//is a party member and has the same pk state sd->devotion[i] = bl->id; } else if(devo == 1 && sd->state.pk_mode!=devsd->state.pk_mode){//is a party member but has a different pk state clif_displaymessage(sd->fd,"Can't use Devotion on party members with a different pk mode; ensure ALL of your party members have the same pk mode"); clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); map_freeblock_unlock(); return 1; } else//added just in case of unknown errors clif_displaymessage(sd->fd,"Unknown logic error; please report the error to a GM"); //end custom
  20. requesting a mapflag that disables mobsearch from certain maps, please and thank you
  21. Is there anyway we can include our num2itemdescnametable.txt in items folder and it would be read when viewing item in item db, that way we can hide our scripts for possible theft and people who dont have any idea on reading itemscripts would just read the item desc, and not wonder what exactly the item does.
  22. Hello, we've recently made a custom flux theme on Xantara's flux cp only problem we have now is the admin menu, though the "You are currently logged in as User on RO server" shows normally here are some snippets: on custom theme: this is how its suppsed to show User's group ID is 99 in header.php the main/loginbox.php is included before submenu.php and pagemenu.php bump I fixed it
  23. oh thank you, so i dont need to change any codes in themes or modules folder
×
×
  • Create New...