User:Bock/Scripts
itemdbtowiki doc
You can run itemdbtowiki to generate the wiki page. The usage is:
itemdbtowiki <item_db> <items.xml> [<mob_db>] [<translation.po>] > wikipage.txt
item_db may be as a single file or folder with files like item_db_*.txt.
items.xml may include link to other xml files. For example: <include name="items/usable/_include.xml"/>
mob_db optional parameter, may be as a single file or folder. If it is not specified, then in column "Rarity" willn't show chance of drop items from monsters. Default uses the file mob_db.txt, if it does not exist then search in the directory "items" splited files mob_db_*.txt.
translation.po special parameter, which can be transmitted regardless of other parameters. For greater efficiency must change "constants for translation" and "language code"
Note:
Download client data from [git]. Copy item_db _ *.txt and mob_db _ *.txt from [server-data] in the folder "items". Then put the script in the directory "tmwa-client-data-master" and run:
itemdbtowiki > wikipage.txt
If you use translation file, put it in the directory "tmwa-client-data-master" too and run script
itemdbtowiki translation_file.po > wikipage.txt
itemdbtowiki
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#Licensed under GNU General Public License
import sys, os, datetime, subprocess, glob, codecs;
import xml.parsers.expat
health_titles = ["Image","Name (ID)","HP Bonus","SP Bonus",
"BUY/Sell","Weight","Description", "Rarity"]
status_titles = ["Image","Name (ID)","BUY/Sell","Weight",
"Description", "Effect", "Rarity"]
weapon_titles = ["Image","Name (ID)","Damage","Range",
"BUY/Sell","Weight","Description", "Rarity"]
ammo_titles = ["Image","Name (ID)","Damage",
"BUY/Sell","Weight","Description", "Rarity"]
armor_titles = ["Image", "Name (ID)", "Defense",
"BUY/Sell", "Weight", "Description", "Rarity"]
other_titles = ["Image","Name (ID)","BUY/Sell",
"Weight","Description","Rarity"]
debug = 0
# print list of items for dyecmd
printdyed = 0
# language code
TCode = 'En:'
# constants for translation
MAtk = 'M. Attack'
MDef = 'M. Defense'
CDmg = 'Critical Damage'
CDef = 'Critical Defense'
SDmg = 'Damage'
SDef = 'Defense'
SRng = 'Range'
SStr = 'Strength'
SAgi = 'Agility'
SVit = 'Vitality'
SDex = 'Dexterity'
SInt = 'Intelligence'
SLuk = 'Luck'
RBuy = 'Buyable'
RCraft = 'Craftable'
RRDrop = 'Rare drop'
RFDrop = 'Frequent drop'
RColor = 'Colored'
RGMEvent = 'GM Event'
RSQuest = 'Special Quest'
RNlobt = 'No longer obtainable'
RUnobt = 'Unobtainable'
RTail = 'Tailorable'
RSpell = 'Spellable'
RQuest = 'Quest'
RIshi = 'Ishi'
RUnrel = 'Unreleased'
# table styles
tableborder = '{| style="width: 100%; border: 2px solid #99ee99; font-size:90%" cellspacing="2" cellpadding="3" align="center"'
tablehead = '! style="background:#99ee99;"'
tableheadf = '! style="background:#99ee99;width:65px"'
tableheadl = '! style="background:#99ee99;width:300px"'
tableroweven = '| style="background:#eeffee;"'
tablerowodd = '| style="background:#eefaff;"'
#custom group of items
custom_status = [1281] #Shock sweet
custom_helms = []
custom_legs = [731] # Assassin pants
custom_armors = []
custom_boots = []
custom_shield = [585] #Scarab armlet
custom_gloves = []
custom_rings = []
custom_charms = []
custom_dyes = [690, 691, 692, 693, 694, 695, 696, 697, 698, 699]
custom_flowers = [661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674]
custom_easter = [1245, 802, 803, 804, 805, 1208, 1209, 1210, 1211, 1212, 1213, 1246, 1249, 1257, 1254, 4034]
custom_halloween = [1197, 3004, 1280, 1233]
custom_christmas = [635, 1234, 1235, 1236, 1237, 1238, 1239, 841, 842, 843, 844, 845, 846, 847, 849, 850, 851, 852, 853, 1207, 4037, 4038, 4039, 4040, 4041, 1240, 1241]
#b - Buy
#c - Craft
#d - Dyed by selim
#g - GM event
#G - GM item only
#j - Developer
#n - No longer obtainable
#o - Unobtainable
#t - Tailorable
#s - Spellable
#q - Quest
#i - Ishi
#r - Unreleased
#e - Extend info
custom_rare = {'CottonShorts' : [["b", ""], ["i", ""]],
'JeansShorts' : [],
'CottonSkirt' : [["b", ""], ["t", "Lora Tay The Legendary Seamstress"]],
'JeansChaps' : [["t", "Pachua the Hermit Indian"]],
'CottonTrousers' : [["t", "Lora Tay The Legendary Seamstress"]],
'AssassinPants' : [["r", ""]],
'TerraniteLegs' : [["q", "The Terranite Armor"]],
'Miniskirt' : [["t", "Lora Tay The Legendary Seamstress"]],
'BromenalLegs' : [["r", ""]],
'LeatherTrousers' : [["q", "Raging Skill"]],
'RaggedShorts' : [["e", "Initial item"]],
'SilkPants' : [["b", ""], ["q", "Hetchel The Silk Weaver"]],
'RedCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenCottonSkirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedCottonShorts' : [["d", "Selim The Dyer"]],
'GreenCottonShorts' : [["d", "Selim The Dyer"]],
'DarkBlueCottonShorts' : [["d", "Selim The Dyer"]],
'YellowCottonShorts' : [["d", "Selim The Dyer"]],
'LightBlueCottonShorts' : [["d", "Selim The Dyer"]],
'PinkCottonShorts' : [["d", "Selim The Dyer"]],
'BlackCottonShorts' : [["d", "Selim The Dyer"]],
'OrangeCottonShorts' : [["d", "Selim The Dyer"]],
'PurpleCottonShorts' : [["d", "Selim The Dyer"]],
'DarkGreenCottonShorts' : [["d", "Selim The Dyer"]],
'RedMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenMiniskirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenCottonTrousers' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"], ["q", "Anwar's_Field"]],
'CactusDrink' : [["b", ""], ["i", ""]],
'CactusPotion' : [["b", ""], ["i", ""]],
'CandyCane' : [],
'XmasCake' : [["b", ""]],
'ChocolateBar' : [["i", ""]],
'Candy' : [["i", ""]],
'GingerBreadMan' : [],
'Cake' : [["b", ""], ["i", ""]],
'XmasCandyCane' : [],
'CherryCake' : [["b", ""], ["i", ""], ["q", "Newbie Quests#Fieri"]],
'EasterEgg' : [["n", ""]],
'Milk' : [["b", ""], ["i", ""]],
'RoastedMaggot' : [["b", ""]],
'OrangeCupcake' : [["b", ""], ["i", ""]],
'RedApple' : [["b", ""], ["i", ""]],
'Beer' : [["b", ""], ["i", ""]],
'BottleOfWater' : [["b", ""]],
'ChickenLeg' : [["b", ""], ["i", ""]],
'PinkPetal' : [["i", ""]],
'SmallMushroom' : [["b", ""], ["i", ""]],
'IronPotion' : [["b", ""], ["c", "Rauk The Alchemist#Potion_Making"]],
'ConcentrationPotion' : [["b", ""], ["c", "Rauk The Alchemist#Potion_Making"]],
'Orange' : [["b", ""], ["i", ""]],
'Steak' : [["b", ""], ["i", ""]],
'TinyHealingPotion' : [["c", "Caul The Alchemist"]],
'SmallHealingPotion' : [["c", "Caul The Alchemist"]],
'MediumHealingPotion' : [["c", "Caul The Alchemist"]],
'LargeHealingPotion' : [["c", "Caul The Alchemist"]],
'ManaPotion' : [["q", "Magic Quests#Wyara.27s_Mana_Potion"]],
'SnakeEgg' : [],
'MountainSnakeEgg' : [],
'GrassSnakeEgg' : [],
'CaveSnakeEgg' : [],
'GreenApple' : [["b", ""], ["i", ""]],
'PurificationPotion' : [["q", "Magic Quests#Cure_The_Pond"]],
'WhiteCake' : [["b", ""], ["i", ""]],
'ChocolateCake' : [["b", ""], ["i", ""]],
'OrangeCake' : [["b", ""], ["i", ""]],
'AppleCake' : [["b", ""], ["i", ""]],
'Acorn' : [],
'DilutedConcentrationPot' : [["o", ""]],
'DarkConcentrationPotion' : [["o", ""]],
'LacedChocolateCake' : [["r", ""]],
'LacedOrangeCupcake' : [["r", ""]],
'SlowPoisonPotion' : [["b", ""]],
'ZombieNachos' : [["b", ""]],
'LadyFingers' : [["b", ""]],
'JellAhh' : [["b", ""]],
'Snapple' : [["b", ""]],
'BeetleJuice' : [["b", ""]],
'GutBuster' : [["b", ""]],
'BloodWine' : [["b", ""]],
'HitchhikersTowel' : [["q", "Candor Quests#Sorfina"]],
'WhiteHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'RedHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'GreenHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'BlueHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'YellowHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'PurpleHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'OrangeHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'PinkHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'TealHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'LimeHitchhikersTowel' : [["d", "The Lost Hitchhiker#Dyeing_the_Towel"]],
'TinyManaElixir' : [],
'SmallManaElixir' : [["b", ""]],
'MediumManaElixir' : [["q", "The Illia Sisters"]],
'LargeManaElixir' : [["r", ""]],
'CranberryLollipop' : [["q", "Trick Or Treat"]],
'GrapeLollipop' : [["q", "Trick Or Treat"]],
'OrangeLollipop' : [["q", "Trick Or Treat"]],
'PollettEgg' : [],
'CaramelApple' : [["q", "The Illia Sisters"]],
'LollipopColor1' : [["n", ""]],
'LollipopColor2' : [["n", ""]],
'LollipopColor3' : [["n", ""]],
'Blueberries' : [],
'Pear' : [],
'Plum' : [],
'Cherry' : [],
'GoldenDeliciousApple' : [["q", "Oscar's Pumpkins"]],
'Honey' : [["r", ""]],
'Scissors' : [["n", ""], ["e", "Halloween 2010"]],
'ShockSweet' : [["b", ""]],
'RubberBat' : [],
'TonoriDelight' : [["b", ""], ["q", "Newbie Quests#Fieri"]],
'Marshmallow' : [["q", "Trick Or Treat"]],
'JellySkull' : [["q", "Trick Or Treat"]],
'CandyPumpkin' : [["q", "Oscar's Pumpkins"]],
'PickledBeets' : [["b", ""]],
'RoastedAcorn' : [["c", "Christmas Event"]],
'MTJarofOwnBlood' : [["r", ""]],
'CasinoCoins' : [["b", ""], ["i", ""]],
'DecorCandy' : [],
'MaggotSlime' : [["i", ""]],
'ScorpionStinger' : [],
'PurplePresentBox' : [],
'BluePresentBox' : [],
'RedScorpionStinger' : [],
'BugLeg' : [["b", ""], ["i", ""]],
'CoinBag' : [],
'TreasureKey' : [],
'GreenPresentBox' : [],
'EmptyBottle' : [],
'BottleOfSand' : [["n", ""]],
'AquaHint' : [["n", ""]],
'MagentaHint' : [["n", ""]],
'YellowHint' : [["n", ""]],
'GreenHint' : [["n", ""]],
'TealHint' : [["n", ""]],
'PurpleHint' : [["n", ""]],
'RedHint' : [["n", ""]],
'BlueHint' : [["n", ""]],
'OrangeHint' : [["n", ""]],
'GrayHint' : [["n", ""]],
'RawLog' : [["i", ""]],
'Toothbrush' : [["g", "Game_Masters/Events#Toothbrush_Event"]],
'WhiteFur' : [["i", ""]],
'CaveSnakeLamp' : [],
'HardSpike' : [["b", ""], ["i", ""]],
'PinkAntenna' : [["i", ""]],
'DarkCrystal' : [["b", ""]],
'SantaCookie' : [["o", ""]],
'IronOre' : [["i", ""]],
'SnakeSkin' : [["i", ""]],
'CottonCloth' : [["i", ""]],
'RedRose' : [["b", ""]],
'WhiteRose' : [["b", ""]],
'DarkRedRose' : [["b", ""]],
'PinkRose' : [["b", ""]],
'YellowRose' : [["b", ""]],
'BlackRose' : [["n", ""], ["e", "Easter 2010"]],
'OrangeRose' : [["b", ""]],
'BlueRose' : [["b", ""]],
'YellowTulip' : [["b", ""]],
'PurpleTulip' : [["b", ""]],
'RedTulip' : [["b", ""]],
'WhiteTulip' : [["b", ""]],
'PinkTulip' : [["b", ""]],
'OrangeTulip' : [["b", ""]],
'HeartNecklace' : [["r", ""]],
'MauveHerb' : [],
'CobaltHerb' : [],
'GambogeHerb' : [],
'AlizarinHerb' : [],
'RedDye' : [["c", "Rauk The Alchemist#Dye_Making"], ["i", ""]],
'GreenDye' : [["c", "Rauk The Alchemist#Dye_Making"]],
'DarkBlueDye' : [["c", "Rauk The Alchemist#Dye_Making"]],
'YellowDye' : [["c", "Rauk The Alchemist#Dye_Making"], ["i", ""]],
'LightBlueDye' : [["c", "Rauk The Alchemist#Dye_Making"], ["i", ""]],
'PinkDye' : [["c", "Rauk The Alchemist#Dye_Making"]],
'BlackDye' : [["c", "Rauk The Alchemist#Dye_Making"]],
'OrangeDye' : [["c", "Rauk The Alchemist#Dye_Making"]],
'PurpleDye' : [["c", "Rauk The Alchemist#Dye_Making"]],
'DarkGreenDye' : [["c", "Rauk The Alchemist#Dye_Making"]],
'Pearl' : [],
'PileOfAsh' : [["i", ""]],
'SulphurPowder' : [["c", "Rauk The Alchemist#Powder_Making"], ["s", "#gole"]],
'IronPowder' : [["c", "Rauk The Alchemist#Powder_Making"], ["s", "#zukminbirf"]],
'GoldenScorpionStinger' : [["q", "Setzer Quest#Kfahr"]],
'MonsterOilPotion' : [["q", "Setzer Quest#Make_the_Monster_Oil"]],
'LeatherPatch' : [["c", "Pachua the Hermit Indian"]],
'BlackScorpionStinger' : [],
'SnakeTongue' : [],
'MountainSnakeTongue' : [],
'GrassSnakeTongue' : [],
'CaveSnakeTongue' : [],
'SilkCocoon' : [],
'Iten' : [["q", "Newbie Quests#Miners_Quest"], ["s", ""]],
'MoubooFigurine' : [["s", "#parum boo"]],
'WarpedLog' : [["s", ""]],
'Lifestone' : [["s", "#manpahil"], ["q", "Life Magic Skill#Life_Stones"], ["i", ""]],
'DruidTreeBranch' : [["q", "Magic Quests#Old_Druid_Tree_2"]],
'Root' : [["b", ""]],
'MopoxCurePotion' : [["r", ""]],
'BatWing' : [],
'BatTeeth' : [],
'TerraniteOre' : [],
'WispPowder' : [["b", ""], ["i", ""]],
'SpectrePowder' : [["b", ""], ["i", ""]],
'PoltergeistPowder' : [["b", ""], ["i", ""]],
'Bone' : [],
'Skull' : [],
'RottenRags' : [],
'DiseasedHeart' : [],
'UndeadEar' : [],
'UndeadEye' : [],
'MylarinDust' : [["q", "Love Triangle Quest"]],
'EasterBasket' : [["n" , ""], ["e" , "Easter 2011"]],
'GrassLiner' : [["n", ""], ["e", "Easter 2011"]],
'JellyBeans' : [["n", ""], ["e", "Easter 2011"]],
'ChocolateMouboo' : [["n", ""], ["e", "Easter 2011"]],
'ReedBundle' : [],
'GrassSeed' : [],
'DiamondPowder' : [["c", "The Lost Hitchhiker#The_Gem_Powders"]],
'RubyPowder' : [["c", "The Lost Hitchhiker#The_Gem_Powders"]],
'EmeraldPowder' : [["c", "The Lost Hitchhiker#The_Gem_Powders"]],
'SapphirePowder' : [["c", "The Lost Hitchhiker#The_Gem_Powders"]],
'TopazPowder' : [["c", "The Lost Hitchhiker#The_Gem_Powders"]],
'AmethystPowder' : [["c", "The Lost Hitchhiker#The_Gem_Powders"]],
'BrokenFourLeafAmulet' : [["r", ""]],
'BrokenDoll' : [["q", "Rossy Quest"]],
'HyvernStinger' : [],
'GrubSlime' : [],
'RedDottedWrap' : [["n", ""], ["e", "Christmas 2011"]],
'YellowDottedWrap' : [["n", ""], ["e", "Christmas 2011"]],
'BlueDottedWrap' : [["n", ""], ["e", "Christmas 2011"]],
'PurpleStripedWrap' : [["n", ""], ["e", "Christmas 2011"]],
'RedGoldenStripedWrap' : [["n", ""], ["e", "Christmas 2011"]],
'GreenRedStripedWrap' : [["n", ""], ["e", "Christmas 2011"]],
'PlushMouboo' : [["n", ""], ["e", "Christmas 2011"]],
'OpenPresentBox' : [["q", "Christmas_Event"]],
'ClosedChristmasBox' : [["n", ""], ["e", "Christmas 2011"]],
'StickReinboo' : [["n", ""], ["e", "Christmas 2011"]],
'LeatherBall' : [["n", ""], ["e", "Christmas 2011"]],
'Doll' : [["n", ""], ["e", "Christmas 2011"]],
'WolvernTooth' : [],
'WolvernPelt' : [],
'SquirrelPelt' : [],
'WhiteBellTuber' : [],
'IcedWater' : [],
'SilverMirror' : [],
'BookPage' : [],
'LeatherSuitcase' : [["q", "Kylian the Businessman"]],
'Antlers' : [],
'SealedSoul' : [["q", "The Illia Sisters"]],
'LockPicks' : [["q", "The Illia Sisters"]],
'LazuriteShard' : [["q", "The Illia Sisters"]],
'LazuriteCrystal' : [["q", "The Illia Sisters"]],
'HeartOfLazurite' : [["q", "The Illia Sisters"]],
'SilkSheet' : [["c", "Hetchel The Silk Weaver"]],
'OrangeSummonFlower' : [["q", "Orum and Waric follow-up quest"]],
'PurpleSummonFlower' : [["q", "Orum and Waric follow-up quest"]],
'WhiteSummonFlower' : [["q", "Orum and Waric follow-up quest"]],
'YellowSummonFlower' : [["q", "Orum and Waric follow-up quest"]],
'RedSummonFlower' : [["q", "Orum and Waric follow-up quest"]],
'WhiteWrap' : [["q", "Christmas Event"]],
'YellowWrap' : [["q", "Christmas Event"]],
'BlueWrap' : [["q", "Christmas Event"]],
'PurpleWrap' : [["q", "Christmas Event"]],
'GreenWrap' : [["q", "Christmas Event"]],
'Soul' : [],
'RedChristmasStocking' : [["n", ""], ["e", "Christmas 2010"]],
'RedEasterEgg' : [["q", "Easter Eggs Hunt"], ["e", "Rare"]],
'GreenEasterEgg' : [["q", "Easter Eggs Hunt"], ["e", "Rare"]],
'BlueEasterEgg' : [["q", "Easter Eggs Hunt"], ["e", "Rare"]],
'YellowEasterEgg' : [["q", "Easter Eggs Hunt"], ["e", "Rare"]],
'PinkEasterEgg' : [["q", "Easter Eggs Hunt"], ["e", "Rare"]],
'TealEasterEgg' : [["q", "Easter Eggs Hunt"], ["e", "Rare"]],
'LightCrystal' : [["r", ""]],
'FakeFangs' : [["n", ""]],
'RedOrnament' : [["n", ""]],
'YellowOrnament' : [["n", ""]],
'GreenOrnament' : [["n", ""]],
'AquaOrnament' : [["n", ""]],
'BlueOrnament' : [["n", ""]],
'MagentaOrnament' : [["n", ""]],
'SantaSnowGlobe' : [["n", ""]],
'SnowmanSnowGlobe' : [["n", ""]],
'BentNeedle' : [["n", ""], ["e", "Easter 2010"]],
'DarkEasterEgg' : [["n", ""], ["e", "Easter 2010"]],
'StrangeCoin' : [["n", ""], ["e", "Easter 2010"]],
'DarkPetal' : [["n", ""], ["e", "Easter 2010"]],
'FlawedLens' : [["n", ""], ["e", "Easter 2010"]],
'RedCottonCloth' : [["d", "Selim The Dyer"]],
'GreenCottonCloth' : [["d", "Selim The Dyer"]],
'DarkBlueCottonCloth' : [["d", "Selim The Dyer"]],
'YellowCottonCloth' : [["d", "Selim The Dyer"]],
'LightBlueCottonCloth' : [["d", "Selim The Dyer"]],
'PinkCottonCloth' : [["d", "Selim The Dyer"]],
'BlackCottonCloth' : [["d", "Selim The Dyer"]],
'OrangeCottonCloth' : [["d", "Selim The Dyer"]],
'PurpleCottonCloth' : [["d", "Selim The Dyer"]],
'DarkGreenCottonCloth' : [["d", "Selim The Dyer"]],
'JackOLantern' : [],
'RealisticBrain' : [],
'JarofBlood' : [],
'Tongue' : [["n", ""]],
'PumpkinSeeds' : [],
'AngryScorpionStinger' : [],
'Coal' : [],
'Diamond' : [],
'Ruby' : [],
'Emerald' : [],
'Sapphire' : [],
'Topaz' : [],
'Amethyst' : [],
'IronIngot' : [["c", "Iron Ingot"]],
'BanditHood' : [],
'RedPowder' : [["q", "Orum Quest"]],
'YellowPowder' : [["q", "Orum Quest"]],
'BluePowder' : [["q", "Orum Quest"]],
'YellowPresentBox' : [],
'WhitePresentBox' : [],
'AnimalBones' : [],
'FrozenYetiTear' : [],
'YetiClaw' : [],
'IceCube' : [],
'GrimaceOfDementia' : [["q", "Grimace of Dementia"]],
'BlackPearl' : [["n", ""], ["e", "Easter 2012"]],
'WhiteBlanket' : [["n", ""], ["e", "Christmas 2012"]],
'WhiteSaddleRug' : [["n", ""], ["e", "Christmas 2012"]],
'RedSaddleRug' : [["n", ""], ["e", "Christmas 2012"]],
'RawTalisman' : [["n", ""], ["e", "Christmas 2012"]],
'FlightTalisman' : [["n", ""], ["e", "Christmas 2012"]],
'Bloodstone' : [["o", ""]],
'BrainStem' : [["o", ""]],
'CryptKey' : [["r", ""]],
'Ectoplasm' : [["r", ""]],
'Urn' : [["r", ""]],
'VampireBatWing' : [],
'WraithHorn' : [["r", ""]],
'AstralCube' : [["r", ""]],
'RunestoneA' : [["r", ""]],
'RunestoneL' : [["r", ""]],
'RunestoneN' : [["r", ""]],
'RunestoneT' : [["r", ""]],
'RunestoneW' : [["r", ""]],
'QuillOfBinding' : [["r", ""]],
'BloodInk' : [["r", ""]],
'UnderworldKey' : [["r", ""]],
'JarofOwnBlood' : [["r", ""]],
'SantaHat' : [["q", "Quest Of Snowman"]],
'FancyHat' : [["b", ""], ["i", ""]],
'MinersHat' : [["q", "Newbie Quests#Miners_Quest"]],
'StandardHeadband' : [["b", ""]],
'SilkHeadband' : [["b", ""]],
'PumpkinHelmet' : [],
'AxeHat' : [],
'PirateHat' : [],
'Goggles' : [["n", ""]],
'LeatherGoggles' : [["n", ""]],
'Circlet' : [],
'Eyepatch' : [["n", ""]],
'Bandana' : [],
'TopHat' : [["n", ""], ["e", "Christmas 2010, Easter 2011"]],
'FunkyHat' : [["n", ""], ["e", "Christmas 2010, Easter 2011"]],
'MushHat' : [["n", ""], ["e", "Christmas 2010, Easter 2011"]],
'ShroomHat' : [["n", ""], ["e", "Christmas 2010, Easter 2011"]],
'ChristmasElfHat' : [["n", ""], ["e", "Christmas 2010, Easter 2011"]],
'FaceMask' : [["n", ""]],
'WarlordHelmet' : [["c", "Nicholas the Blacksmith"]],
'KnightsHelmet' : [["c", "Nicholas the Blacksmith"]],
'InfantryHelmet' : [],
'CrusadeHelmet' : [["c", "Nicholas the Blacksmith"]],
'WhiteCowboyHat' : [["c", "Pachua the Hermit Indian"]],
'BlackCowboyHat' : [["c", "Pachua the Hermit Indian"]],
'Crown' : [["o", ""]],
'DevelopersCap' : [["j", ""]],
'Cap' : [["b", ""]],
'SerfHat' : [["b", ""], ["q", "Newbie Quests#Sarah"], ["i", ""]],
'GraduationCap' : [["q", "Newbie Graduation"]],
'NohMask' : [["q", "Robberies In Hurnscald"]],
'DemonMask' : [["q", "Demon Mask"]],
'HighPriestCrown' : [["b", ""]],
'MonsterSkullHelmet' : [["b", ""]],
'DesertHat' : [["b", ""], ["t", "Lora Tay The Legendary Seamstress"]],
'CottonHeadband' : [["b", ""]],
'GMCap' : [["G", ""]],
'PinkieHat' : [],
'FluffyHat' : [],
'PaladinsHelmet' : [["r", ""]],
'OverlordsHelmet' : [["r", ""]],
'DesertHelmet' : [["r", ""]],
'SailorHat' : [["r", ""]],
'CaptainsHat' : [["r", ""]],
'TerraniteHelmet' : [["q", "The Terranite Armor"]],
'GuyFawkesMask' : [["n", ""], ["e", "Halloween 2010"]],
'FairyHat' : [["q", "Bandit Quest"]],
'BromenalHelmet' : [["r", ""]],
'BowlerHatBrown' : [["q", "Love Triangle Quest"]],
'PinkieHelmet' : [["q", "Headless Man's Helmet"]],
'Earmuffs' : [["r", ""]],
'ElfNightcap' : [["n", ""], ["e", "Christmas 2011"]],
'Sunglasses' : [["n", ""], ["e", "Christmas 2011"]],
'KnitCap' : [["q", "Santa's Stolen Presents"]],
'BullHelmet' : [["q", "The Illia Sisters"]],
'RedEggshellHat' : [["q", "Easter Eggs Hunt"]],
'BlueEggshellHat' : [["q", "Easter Eggs Hunt"]],
'YellowEggshellHat' : [["q", "Easter Eggs Hunt"]],
'GreenEggshellHat' : [["q", "Easter Eggs Hunt"]],
'OrangeEggshellHat' : [["q", "Easter Eggs Hunt"]],
'DarkEggshellHat' : [["q", "Easter Eggs Hunt"]],
'MagicGMTopHat' : [["g", "Game Masters/Events#Kill_the_GM"], ["e", "GM Usage only"]],
'MurdererCrown' : [["g", "Game Masters/Events#Kill_the_GM"]],
'BeanieCopter' : [["q", "Milly's Hero"]],
'RedRoseHat' : [["q", "Orum and Waric follow-up quest"]],
'WhiteRoseHat' : [["d", "Blossom"]],
'PinkRoseHat' : [["d", "Blossom"]],
'YellowRoseHat' : [["d", "Blossom"]],
'OrangeRoseHat' : [["d", "Blossom"]],
'BlueRoseHat' : [["d", "Blossom"]],
'BucketHat' : [["q", "Trick Or Treat"]],
'TamOShanter' : [["r", ""]],
'CashiersShade' : [["r", ""]],
'AutumnMask' : [["q", "Trick Or Treat"]],
'NutcrackerHat' : [["q", "Christmas Event"]],
'Beret' : [["r", ""]],
'RangerHat' : [],
'AntlerHat' : [["n", ""]],
'ChristmasTreeHat' : [["n", ""]],
'SantaBeardHat' : [["n", ""]],
'BunnyEars' : [["n", ""], ["e", "Christmas 2010, Easter 2011"]],
'MoubooHead' : [["n", ""]],
'CatEars' : [["q", "Cat Ears Quest"]],
'PaperBag' : [["n", ""]],
'MoubootaurHead' : [["o", ""]],
'BunchOfParsley' : [["n", ""], ["e", "Halloween 2011"]],
'SkullMask' : [],
'SnowGoggles' : [["n", ""]],
'HeartGlasses' : [["n", ""], ["e", "Easter 2010"]],
'RabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'EggshellHat' : [["n", ""], ["e", "Easter 2010"]],
'OperaMask' : [["n", ""], ["e", "Halloween 2010"]],
'JesterMask' : [["n", ""], ["e", "Halloween 2010"]],
'WitchHat' : [["n", ""], ["e", "Halloween 2010"]],
'GoblinMask' : [["n", ""], ["e", "Halloween 2010"]],
'RedDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenDesertHat' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedCottonHeadband' : [["d", "Selim The Dyer"]],
'GreenCottonHeadband' : [["d", "Selim The Dyer"]],
'DarkBlueCottonHeadband' : [["d", "Selim The Dyer"]],
'YellowCottonHeadband' : [["d", "Selim The Dyer"]],
'LightBlueCottonHeadband' : [["d", "Selim The Dyer"]],
'PinkCottonHeadband' : [["d", "Selim The Dyer"]],
'BlackCottonHeadband' : [["d", "Selim The Dyer"]],
'OrangeCottonHeadband' : [["d", "Selim The Dyer"]],
'PurpleCottonHeadband' : [["d", "Selim The Dyer"]],
'DarkGreenCottonHeadband' : [["d", "Selim The Dyer"]],
'RedRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'GreenRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'DarkBlueRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'YellowRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'LightBlueRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'PinkRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'BlackRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'OrangeRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'PurpleRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'DarkGreenRabbitEars' : [["n", ""], ["e", "Easter 2010"]],
'RedWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'GreenWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'DarkBlueWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'YellowWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'LightBlueWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'PinkWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'BlackWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'OrangeWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'PurpleWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'DarkGreenWizardHat' : [["d", "Selim The Dyer"], ["q", "Angela's Daughter"]],
'RedBowlerHat' : [["d", "Selim The Dyer"]],
'GreenBowlerHat' : [["d", "Selim The Dyer"]],
'DarkBlueBowlerHat' : [["d", "Selim The Dyer"]],
'YellowBowlerHat' : [["d", "Selim The Dyer"]],
'LightBlueBowlerHat' : [["d", "Selim The Dyer"]],
'PinkBowlerHat' : [["d", "Selim The Dyer"]],
'BlackBowlerHat' : [["d", "Selim The Dyer"]],
'OrangeBowlerHat' : [["d", "Selim The Dyer"]],
'PurpleBowlerHat' : [["d", "Selim The Dyer"]],
'DarkGreenBowlerHat' : [["d", "Selim The Dyer"]],
'RedBowlerHatBrown' : [["d", "Selim The Dyer"]],
'GreenBowlerHatBrown' : [["d", "Selim The Dyer"]],
'DarkBlueBowlerHatBrown' : [["d", "Selim The Dyer"]],
'YellowBowlerHatBrown' : [["d", "Selim The Dyer"]],
'LightBlueBowlerHatBrown' : [["d", "Selim The Dyer"]],
'PinkBowlerHatBrown' : [["d", "Selim The Dyer"]],
'BlackBowlerHatBrown' : [["d", "Selim The Dyer"]],
'OrangeBowlerHatBrown' : [["d", "Selim The Dyer"]],
'PurpleBowlerHatBrown' : [["d", "Selim The Dyer"]],
'DarkGreenBowlerHatBrown' : [["d", "Selim The Dyer"]],
'RedBeret' : [["r", ""]],
'GreenBeret' : [["r", ""]],
'DarkBlueBeret' : [["r", ""]],
'YellowBeret' : [["r", ""]],
'LightBlueBeret' : [["r", ""]],
'PinkBeret' : [["r", ""]],
'BlackBeret' : [["r", ""]],
'OrangeBeret' : [["r", ""]],
'PurpleBeret' : [["r", ""]],
'DarkGreenBeret' : [["r", ""]],
'CandleHelmet' : [["q", "Orum Quest"]],
'YetiMask' : [],
'WizardHat' : [["q", "Angela's Daughter"]],
'BowlerHat' : [["q", "Shannon's Bowler Hat"]],
'Monocle' : [["r", ""]],
'PanHat' : [["n", ""], ["e", "Easter 2012"]],
'ChefHat' : [["n", ""], ["e", "Easter 2012"]],
'RedNose' : [],
'DarkHelm' : [],
'UnderworldMask' : [["r", ""]],
'Phylactery' : [["r", ""]],
'Dagger' : [["b", ""]],
'SharpKnife' : [["b", ""], ["q", "Candor Quests#Hasan"]],
'IronArrow' : [["b", ""]],
'ShortBow' : [["b", ""], ["q", "Newbie Quests#Miners_Quest"]],
'ShortSword' : [["q", "Short Sword Quest"]],
'ForestBow' : [["b", ""], ["q", "Forest Bow Quest"]],
'Bardiche' : [["r", ""]],
'Halberd' : [["r", ""]],
'Axe' : [["r", ""]],
'BlacksmithsAxe' : [["r", ""]],
'Sabre' : [["r", ""]],
'BoneKnife' : [["q", "Bone Knife Quest"]],
'Setzer' : [["q", "Setzer Quest"]],
'Scimitar' : [["r", ""]],
'Falchion' : [["r", ""]],
'Scorpion' : [["r", ""]],
'DesertBow' : [["r", ""]],
'Beheader' : [["r", ""]],
'BoneDarts' : [["r", ""]],
'SandCutter' : [["r", ""]],
'RockKnife' : [["q", "Angela's Daughter"]],
'StaffOfLife' : [["r", ""]],
'CrescentRod' : [["r", ""]],
'StaffOfFire' : [["r", ""]],
'StaffOfIce' : [["r", ""]],
'Jackal' : [["r", ""]],
'Sword' : [["r", ""]],
'BastardSword' : [["r", ""]],
'LongSword' : [["r", ""]],
'Spear' : [["r", ""]],
'Scythe' : [["q", "Farmer's Scythe"]],
'WoodenStaff' : [["q", "Angela's Daughter"]],
'Wand' : [["q", "Candor Quests#Morgan"]],
'TerraniteArrow' : [["q", "Heathin's Terranite Arrows"]],
'IceGladius' : [["q", "Blue Sage Quest"]],
'BansheeBow' : [["q", "The Illia Sisters"]],
'SlingShot' : [["b", ""], ["q", "Candor Quests#Tanisha"]],
'SlingBullet' : [["b", ""], ["q", "Candor Quests#Tanisha"]],
'KidBook' : [],
'Arrow' : [["b", ""], ["s", "#kularzufrill"], ["q", "Newbie Quests#Sandra"], ["i", ""]],
'Bow' : [["b", ""], ["q", "Newbie Quests#Sandra"]],
'Knife' : [["b", ""], ["q", "Candor Quests#Sorfina"]],
'ToySabre' : [["b", ""]],
'BoneArrows' : [["b", ""]],
'MinerGloves' : [["b", ""], ["q", "Newbie Quests#Miners_Quest"]],
'LeatherGloves' : [],
'WinterGloves' : [["q", "Agostine The Tailor"]],
'CottonGloves' : [["b", ""]],
'AssassinGloves' : [["r", ""]],
'BromenalGloves' : [["r", ""]],
'SilkGloves' : [["q", "Blue Sage Quest"]],
'RedCottonGloves' : [["d", "Selim The Dyer"]],
'GreenCottonGloves' : [["d", "Selim The Dyer"]],
'DarkBlueCottonGloves' : [["d", "Selim The Dyer"]],
'YellowCottonGloves' : [["d", "Selim The Dyer"]],
'LightBlueCottonGloves' : [["d", "Selim The Dyer"]],
'PinkCottonGloves' : [["d", "Selim The Dyer"]],
'BlackCottonGloves' : [["d", "Selim The Dyer"]],
'OrangeCottonGloves' : [["d", "Selim The Dyer"]],
'PurpleCottonGloves' : [["d", "Selim The Dyer"]],
'DarkGreenCottonGloves' : [["d", "Selim The Dyer"]],
'ScarabArmlet' : [["n", ""]],
'SteelShield' : [["c", "Nicholas the Blacksmith"]],
'WoodenShield' : [["q", "Wooden Shield Quest"]],
'LeatherShield' : [["b", ""], ["q", "Newbie Quests#Miners_Quest"]],
'BromenalShield' : [["r", ""]],
'LeatherShirt' : [["b", ""]],
'DesertShirt' : [["b", ""], ["q", "Newbie Quests#Miners_Quest"]],
'Turtleneck' : [["q", "Santa's Stolen Presents"]],
'VNeckSweater' : [["q", "Santa's Stolen Presents"]],
'ChainmailShirt' : [["c", "Nicholas the Blacksmith"]],
'LightPlatemail' : [["c", "Nicholas the Blacksmith"]],
'GoldenPlatemail' : [["r", ""]],
'WhiteEvokersRobeBlue' : [["r", ""]],
'BlackEvokersRobeBlue' : [["r", ""]],
'WhiteWizardRobe' : [["r", ""]],
'BlackWizardRobe' : [["r", ""]],
'ApprenticeRobe' : [["r", ""]],
'WarlordPlate' : [["c", "Nicholas the Blacksmith"]],
'GoldenWarlordPlate' : [["r", ""]],
'TankTop' : [["s", "#patloree"], ["t", "Lora Tay The Legendary Seamstress"]],
'ShortTankTop' : [["s", "#patviloree"], ["t", "Lora Tay The Legendary Seamstress"]],
'SilkRobe' : [["b", ""], ["t", "Lora Tay The Legendary Seamstress"]],
'GMRobe' : [["G", ""]],
'AssassinShirt' : [["r", ""]],
'TerraniteChestArmor' : [["q", "The Terranite Armor"]],
'ForestArmor' : [["q", "Bandit Quest"]],
'PlatynaRedDress' : [["o", ""]],
'YetiSkinShirt' : [["q", "Raging_Skill"]],
'BromenalChest' : [["r", ""]],
'SorcererRed' : [["q", "Love Triangle Quest"]],
'FineDress' : [["q", "Agostine's Dream Dress"]],
'LazuriteRobe' : [["q", "The Illia Sisters"]],
'Contributor' : [],
'AmberChristmasSweater' : [["q", "Christmas Event"]],
'FunkyChristmasSweater' : [["q", "Christmas Event"]],
'PinkChristmasSweater' : [["q", "Christmas Event"]],
'DarkChristmasSweater' : [["q", "Christmas Event"]],
'BlueChristmasSweater' : [["q", "Christmas Event"]],
'CottonShirt' : [["b", ""], ["s", "#patmuploo"], ["i", ""], ["t", "Lora Tay The Legendary Seamstress"], ["q", "Tutorial"]],
'RedCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenCottonShirt' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedVNeckSweater' : [["d", "Selim The Dyer"]],
'GreenVNeckSweater' : [["d", "Selim The Dyer"]],
'DarkBlueVNeckSweater' : [["d", "Selim The Dyer"]],
'YellowVNeckSweater' : [["d", "Selim The Dyer"]],
'LightBlueVNeckSweater' : [["d", "Selim The Dyer"]],
'PinkVNeckSweater' : [["d", "Selim The Dyer"]],
'BlackVNeckSweater' : [["d", "Selim The Dyer"]],
'OrangeVNeckSweater' : [["d", "Selim The Dyer"]],
'PurpleVNeckSweater' : [["d", "Selim The Dyer"]],
'DarkGreenVNeckSweater' : [["d", "Selim The Dyer"]],
'RedTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'GreenTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'DarkBlueTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'YellowTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'LightBlueTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'PinkTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'BlackTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'OrangeTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'PurpleTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'DarkGreenTurtleneck' : [["d", "Selim The Dyer"], ["q", "Santa's Stolen Presents"]],
'RedSilkRobe' : [["d", "Selim The Dyer"]],
'GreenSilkRobe' : [["d", "Selim The Dyer"]],
'DarkBlueSilkRobe' : [["d", "Selim The Dyer"]],
'YellowSilkRobe' : [["d", "Selim The Dyer"]],
'LightBlueSilkRobe' : [["d", "Selim The Dyer"]],
'PinkSilkRobe' : [["d", "Selim The Dyer"]],
'BlackSilkRobe' : [["d", "Selim The Dyer"]],
'OrangeSilkRobe' : [["d", "Selim The Dyer"]],
'PurpleSilkRobe' : [["d", "Selim The Dyer"]],
'DarkGreenSilkRobe' : [["d", "Selim The Dyer"]],
'RedTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenShortTankTop' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererRed' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenFineDress' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererDBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererYellow' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererLBlue' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererPink' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererBlack' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererOrange' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererPurple' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererDGreen' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'GreenSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkBlueSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'YellowSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'LightBlueSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PinkSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'BlackSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'OrangeSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'PurpleSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'DarkGreenSorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'SorcererWhite' : [["d", "Selim The Dyer"], ["t", "Lora Tay The Legendary Seamstress"]],
'RedContributor' : [["d", "Selim The Dyer"]],
'GreenContributor' : [["d", "Selim The Dyer"]],
'DarkBlueContributor' : [["d", "Selim The Dyer"]],
'YellowContributor' : [["d", "Selim The Dyer"]],
'LightBlueContributor' : [["d", "Selim The Dyer"]],
'PinkContributor' : [["d", "Selim The Dyer"]],
'BlackContributor' : [["d", "Selim The Dyer"]],
'OrangeContributor' : [["d", "Selim The Dyer"]],
'PurpleContributor' : [["d", "Selim The Dyer"]],
'DarkGreenContributor' : [["d", "Selim The Dyer"]],
'Boots' : [["b", ""], ["i", ""], ["q", "Newbie Quests#Lieutenant_Dausen"]],
'FurBoots' : [["q", "Agostine The Tailor"]],
'BlackBoots' : [["q", "Rossy Quest"]],
'CottonBoots' : [["b", ""], ["i", ""]],
'AssassinBoots' : [["r", ""]],
'BromenalBoots' : [["r", ""]],
'WarlordBoots' : [["c", "Nicholas the Blacksmith"]],
'RedCottonBoots' : [["d", "Selim The Dyer"]],
'GreenCottonBoots' : [["d", "Selim The Dyer"]],
'DarkBlueCottonBoots' : [["d", "Selim The Dyer"]],
'YellowCottonBoots' : [["d", "Selim The Dyer"]],
'LightBlueCottonBoots' : [["d", "Selim The Dyer"]],
'PinkCottonBoots' : [["d", "Selim The Dyer"]],
'BlackCottonBoots' : [["d", "Selim The Dyer"]],
'OrangeCottonBoots' : [["d", "Selim The Dyer"]],
'PurpleCottonBoots' : [["d", "Selim The Dyer"]],
'DarkGreenCottonBoots' : [["d", "Selim The Dyer"]],
'RedStockings' : [["q", "Christmas Event"]],
'WeddingRing' : [["q", "Wedding Woodland"]],
'FourLeafClover' : [],
'Towel' : [["n", ""]],
'CrozeniteFourLeafAmulet' : [["r", ""]],
'BromenalFourLeafAmulet' : [["r", ""]],
'SilverFourLeafAmulet' : [["r", ""]],
'GoldenFourLeafAmulet' : [["r", ""]],
'Grimoire' : [["q", "Blue Sage Quest"]],
'HeartOfIsis' : [["q", "The Illia Sisters"]],
'SkeletonCharm' : [["q", "Parua's Brother"]],
'DarkTalisman' : [["r", ""]],
'DiamondRing' : [["c", "Inya"]],
'RubyRing' : [["c", "Inya"]],
'EmeraldRing' : [["c", "Inya"]],
'SapphireRing' : [["c", "Inya"]],
'TopazRing' : [["c", "Inya"]],
'AmethystRing' : [["c", "Inya"]],
'SimpleRing' : [["b", ""], ["q" , "Love Triangle Quest"]]
}
imagesused = set()
class whatever: pass
log = []
# parseitems(file)
## Returns list with items from eathena item_db file.
def saveint(string, altval = 0):
a = 0
try:
a = int(string)
except:
a = altval
return a
def parsescript(s):
# Assumes that there's only one call of each method, otherwise it would need to know
# how to combine those function calls. In practice, the latter call would prevail.
script = {}
scriptentry = ""
parentry = ""
mode = 0
for a in s:
if mode == 0: # looking for method
if a.isalpha():
mode = 1
scriptentry += a
elif a == '}': mode = 9
elif mode == 1: # reading method name
if a in " ;}":
if a == " ": mode = 2
elif a == ";": mode = 1
elif a == "}": mode = 9
parentry = ""
script[scriptentry] = []
else: scriptentry += a
elif mode == 2: #looking for param
if a == " ": pass
elif a == ";":
mode = 0
scriptentry = ""
else:
mode = 3
parentry = a
elif mode == 3: #reading param
if a in (" ", ",", ";"):
script[scriptentry].append(parentry)
parentry = ""
if a == ';':
mode = 0
scriptentry = ""
else: mode = 2
else:
parentry += a
elif mode == 9: #finished
pass
# Convert all possible parameters to integers
for i in script.keys():
for j in range(len(script[i])):
try:
script[i][j] = int(script[i][j])
except:
pass
return script
def parsemonsters(file):
objects = []
sfile = file.split(chr(10))
for line in sfile:
s = line[:line.find('//')].strip().replace('\t','')
if s:
values = s.split(',')
numberofvalues = 57
if len(values) != numberofvalues:
log.append("mob_db: Warning, monster-line with ID %s has %d values instead of %d" % (values[0], len(values), numberofvalues))
while len(values) < numberofvalues - 1:
values.append('')
while len(values) > numberofvalues - 1:
values.pop()
if saveint(values[29])!=0:
o = whatever()
o.dropid = saveint(values[29])
o.dropper = saveint(values[30])
objects.append(o)
if saveint(values[31])!=0:
o = whatever()
o.dropid = saveint(values[31])
o.dropper = saveint(values[32])
objects.append(o)
if saveint(values[33])!=0:
o = whatever()
o.dropid = saveint(values[33])
o.dropper = saveint(values[34])
objects.append(o)
if saveint(values[35])!=0:
o = whatever()
o.dropid = saveint(values[35])
o.dropper = saveint(values[36])
objects.append(o)
if saveint(values[37])!=0:
o = whatever()
o.dropid = saveint(values[37])
o.dropper = saveint(values[38])
objects.append(o)
if saveint(values[39])!=0:
o = whatever()
o.dropid = saveint(values[39])
o.dropper = saveint(values[40])
objects.append(o)
if saveint(values[41])!=0:
o = whatever()
o.dropid = saveint(values[41])
o.dropper = saveint(values[42])
objects.append(o)
if saveint(values[43])!=0:
o = whatever()
o.dropid = saveint(values[43])
o.dropper = saveint(values[44])
objects.append(o)
objects.sort(key=lambda x: (x.dropid, x.dropper),reverse=True)
out = []
param1 = []
param2 = []
prev = -1
for m in objects:
if prev != m.dropid:
prev = m.dropid
param1.append(m.dropid)
param2.append(m.dropper)
out.append(param1)
out.append(param2)
return out
def parseitems(file):
objects = []
sfile = file.split(chr(10))
for line in sfile:
s = line[:line.find('//')].strip().replace('\t','')
if s:
if s[len(s)-1]!="}":
s += "}"
mode = 0
sout = ""
for a in s:
if mode == 0: #Out of {}
if a == '{': mode = 1
sout += a
elif mode == 1: #Inside {}
if a == ',': sout += '|'
else:
sout += a
if a == '}': mode = 0
values = sout.split(',')
if line[0] == '#':
continue
if len(values) != 19:
log.append("item_db: Warning, item-line with ID %s has %d values instead of 18" % (values[0], len(values)))
while len(values) < 19:
values.append('')
while len(values) > 19:
values.pop()
o = whatever()
o.id = int(values[0])
o.name = values[1]
o.jname = values[2]
o.type = saveint(values[3])
o.price = saveint(values[4])
o.sell = saveint(values[5])
o.weight = saveint(values[6])
o.atk = saveint(values[7])
o.defense = saveint(values[8])
o.range = saveint(values[9])
o.mbonus = saveint(values[10])
o.slot = saveint(values[11],-1)
o.gender = saveint(values[12],-1)
o.loc = saveint(values[13],-1)
o.wlv = saveint(values[14])
o.elv = saveint(values[15])
o.view = saveint(values[16],-1)
o.usescript = parsescript(values[17].replace('|',','))
o.equipscript = parsescript(values[18].replace('|',','))
objects.append(o)
return objects
# parsexmlitems(file) parseincludes(file)
## Creates a dictionary containing the values of a client items.xml
## Yeah, there are XML parsers in the standard python libraries, but they're too object
## oriented and thus don't fit the style of this program.
def parseincludes(file):
s = file.read()
xmldata = ""
pre = "<include "
term = "/>"
attrs = ["name"]
index = 0
if pre not in s[index:] and s.find("type=\"hairsprite")==-1 and s.find("type=\"race")==-1:
xmldata += s
while pre in s[index:]:
index += s[index:].find(pre) + len(pre)
curitem = {}
termstart = index + s[index:].find(term) + len(term)
for attr in attrs:
found = s[index:].find(attr+'="')
if found >= 0:
start = index + found + len(attr+'="')
end= start + s[start:].find('"')
else:
start = termstart
if start < termstart:
curitem[attr] = s[start:end]
finclude = open('./'+curitem["name"])
xmldata += parseincludes(finclude)
return xmldata
def parsexmlitems(file):
s = parseincludes(file)
items = {}
pre = "<item "
term = ">"+chr(10)
attrs = ["id", "image", "art", "name", "description", "type", "hp", "mp", "str", "agi", "vit", "int", "dex", "luck", "weight", "slot", "effect"]
intattrs = ["id", "art", "hp", "str", "agi", "vit", "int", "dex", "luck", "mp"," weight", "slot"]
index = 0
while pre in s[index:]:
index += s[index:].find(pre) + len(pre)
curitem = {}
termstart = index + s[index:].find(term) + len(term)
curitem["effect"] = ""
curitem["hp"] = 0
curitem["mp"] = 0
curitem["str"] = 0
curitem["agi"] = 0
curitem["vit"] = 0
curitem["int"] = 0
curitem["dex"] = 0
curitem["luck"] = 0
for attr in attrs:
found = s[index:].find(attr+'="')
if found >= 0:
start = index + found + len(attr+'="')
end= start + s[start:].find('"')
else:
start = termstart
if start < termstart:
curitem[attr] = s[start:end]
for a in intattrs:
try:
if a in curitem:
curitem[a] = int(curitem[a])
except:
log.append("Item-ID %s: Cannot convert integer attribute %s to an integer. Value: '%s'" % (curitem["id"], a, curitem[a]))
try:
items[curitem['id']] = curitem
except:
if debug:
log.append("Error, may be empty string: %s" % curitem)
return items
# addclientinformation(items, citems, mobs, po)
## Entends the item data with the data collected from the client items.xml.
def addclientinformation(items,citems,mobs,po):
for i in items:
if i.id in citems:
i.imagename=citems[i.id]["image"]
i.itype=citems[i.id]["type"]
i.imgurl = i.imagename[0].upper() + i.imagename[1:]
filen = i.imgurl.split('/')
filen = filen[len(filen)-1]
url = i.imgurl.replace(filen, i.name.replace(" ","").lower())+".png"
if printdyed:
if i.imgurl.find("|")!=-1:
log.append ("dyecmd \""+i.imgurl+"\" colored/"+url)
url=url.replace('/','-')
i.wikiimg = "[[Image:%s]]" % url
imagesused.add(citems[i.id]["image"])
if po and citems[i.id]["description"]!="" and citems[i.id]["description"] in po:
i.description = po[citems[i.id]["description"]]
else:
i.description = citems[i.id]["description"]
if po and citems[i.id]["name"] in po:
i.translatename = po[citems[i.id]["name"]]
else:
i.translatename = ""
i.clientname = citems[i.id]["name"]
if po and citems[i.id]["effect"]!="" and citems[i.id]["effect"] in po:
i.effect = po[citems[i.id]["effect"]]
else:
i.effect = citems[i.id]["effect"]
i.hp = citems[i.id]["hp"]
i.mp = citems[i.id]["mp"]
i.str = citems[i.id]["str"]
i.agi = citems[i.id]["agi"]
i.vit = citems[i.id]["vit"]
i.dex = citems[i.id]["dex"]
i.int = citems[i.id]["int"]
i.luck = citems[i.id]["luck"]
if i.id in mobs[0]:
i.rare = mobs[1][mobs[0].index(i.id)]
else:
i.rare = -1
else:
i.itype= ''
i.imgurl = ''
i.description = ''
i.clientname = ''
# gettypedir (items)
## Returns sorted lists of items by itemtype
def gettypedir(items):
items.sort(key=lambda x: x.price+x.sell)
typedir = whatever()
typedir.healthy = []
typedir.status = []
typedir.h1weapons = []
typedir.h2weapons = []
typedir.ammo = []
typedir.helms = []
typedir.legs = []
typedir.boots = []
typedir.shield = []
typedir.gloves = []
typedir.rings = []
typedir.charms = []
typedir.armor = []
typedir.dye = []
typedir.flower = []
typedir.easter = []
typedir.halloween = []
typedir.christmas = []
typedir.other = []
for item in items:
if item.imgurl.strip() or item.clientname.strip():
if item.id in custom_armors:
typedir.armor.append(item)
elif item.id in custom_boots:
typedir.boots.append(item)
elif item.id in custom_charms:
typedir.charms.append(item)
elif item.id in custom_christmas:
typedir.christmas.append(item)
elif item.id in custom_dyes:
typedir.dye.append(item)
elif item.id in custom_easter:
typedir.easter.append(item)
elif item.id in custom_flowers:
typedir.flower.append(item)
elif item.id in custom_gloves:
typedir.gloves.append(item)
elif item.id in custom_halloween:
typedir.halloween.append(item)
elif item.id in custom_helms:
typedir.helms.append(item)
elif item.id in custom_legs:
typedir.legs.append(item)
elif item.id in custom_rings:
typedir.rings.append(item)
elif item.id in custom_shield:
typedir.shield.append(item)
elif item.id in custom_status:
typedir.status.append(item)
elif item.atk > 0:
if item.defense == 0:
if item.range == 0:
typedir.ammo.append(item)
else:
if item.itype == "equip-2hand":
typedir.h2weapons.append(item)
elif item.itype == "equip-1hand":
typedir.h1weapons.append(item)
elif item.defense > 0:
if item.itype == "equip-arms":
typedir.gloves.append(item)
elif item.itype == "equip-feet":
typedir.boots.append(item)
elif item.itype == "equip-head":
typedir.helms.append(item)
elif item.itype == "equip-legs":
typedir.legs.append(item)
elif item.itype == "equip-torso":
typedir.armor.append(item)
elif item.itype == "equip-shield":
typedir.shield.append(item)
elif "sc_start" not in item.usescript and (item.hp != 0 or item.mp != 0):
typedir.healthy.append(item)
elif "sc_start" in item.usescript:
typedir.status.append(item)
elif item.itype == "equip-ring":
typedir.rings.append(item)
elif item.itype == "equip-charm":
typedir.charms.append(item)
else: typedir.other.append(item)
typedir.h1weapons.sort(key=lambda x: (x.atk, int(x.price), x.id))
typedir.h2weapons.sort(key=lambda x: (x.atk, int(x.price), x.id))
typedir.ammo.sort(key=lambda x: (int(x.price), x.id))
typedir.armor.sort(key=lambda x: (x.defense, int(x.mbonus), int(x.price), x.id))
typedir.gloves.sort(key=lambda x: (x.defense, int(x.mbonus), int(x.price), x.id))
typedir.boots.sort(key=lambda x: (x.defense, int(x.mbonus), int(x.price), x.id))
typedir.helms.sort(key=lambda x: (x.defense, int(x.mbonus), int(x.price), x.id))
typedir.legs.sort(key=lambda x: (x.defense, int(x.mbonus), int(x.price), x.id))
typedir.shield.sort(key=lambda x: (x.defense, int(x.mbonus), int(x.price), x.id))
typedir.dye.sort(key=lambda x: (int(x.price), x.id))
typedir.flower.sort(key=lambda x: (x.id))
typedir.easter.sort(key=lambda x: (int(x.price), x.id))
typedir.halloween.sort(key=lambda x: (int(x.price), x.id))
typedir.christmas.sort(key=lambda x: (int(x.price), x.id))
typedir.healthy.sort(key=lambda x: (int(x.hp), int(x.mp), int(x.price), x.id))
typedir.rings.sort(key=lambda x: (int(x.price), x.id))
typedir.charms.sort(key=lambda x: (int(x.price), x.id))
typedir.status.sort(key=lambda x: x.id)
typedir.other.sort(key=lambda x: (int(x.price), x.id))
return typedir
# printlog()
## Prints the global variable log to stdout
def printlog():
global log
if len(log) > 0:
print ("\n---------------------------------------")
for line in log:
print (line)
# print<>items(items, title)
## Creates the table in wikicode, depending on what kind of item is being printed
def getmoneystring(buy, sell):
return ""
def getidstring(id):
return '<span style="color:#969696;">(%d)</span>' % id
def getmstats(eff, stat):
out = ""
ff = eff.find(stat)
if ff!=-1:
fs = eff.find(' ', ff+len(stat)+1)
if fs!=-1:
out = eff[ff:fs]
else:
out = eff[ff:]
return out
def geteffect(item):
status = ""
mstat = ""
effc = item.effect
if effc != "":
mstat = getmstats(effc, MAtk)
effc = effc.replace(mstat, '')
s = getmstats(effc, MDef)
effc = effc.replace(s, '')
if len(s)>0:
if len(mstat)>0:
mstat += " / "+s
else:
mstat = s
if effc != "":
effc = effc.replace(CDmg, 'CrDa3')
effc = effc.replace(CDef, 'CrDf3')
effc = effc.replace(SDmg+' +'+str(item.atk), '')
effc = effc.replace(SDmg+' +?', '')
effc = effc.replace(SDef+' +'+str(item.defense), '')
effc = effc.replace(SRng+' '+str(item.range), '')
effc = effc.replace('CrDa3', CDmg)
effc = effc.replace('CrDf3', CDef)
while effc.find(' / / ')!=-1:
effc = effc.replace(' / / ', ' / ')
if len(effc)>0:
while effc[0]==" " or effc[0]=="/" or effc[0]==",":
effc = effc[1:]
if len(effc)==0:
break
if len(effc)>0:
while effc[len(effc)-1]==" " or effc[len(effc)-1]=="/" or effc[len(effc)-1]==",":
effc = effc[:-1]
if len(effc)==0:
break
if item.str != 0:
if item.str < 0:
stats = SStr+" %d" % item.str
else:
stats = SStr+" +%d" % item.str
else:
stats = ""
if item.agi != 0:
if stats != "":
stats += " / "
if item.agi < 0:
stats += SAgi+" %d" % item.agi
else:
stats += SAgi+" +%d" % item.agi
if item.vit != 0:
if stats != "":
stats += " / "
if item.vit < 0:
stats += SVit+" %d" % item.vit
else:
stats += SVit+" +%d" % item.vit
if item.dex != 0:
if stats != "":
stats += " / "
if item.dex < 0:
stats += SDex+" %d" % item.dex
else:
stats += SDex+" +%d" % item.dex
if item.int != 0:
if stats != "":
stats += " / "
if item.int < 0:
stats += SInt+" %d" % item.int
else:
stats += SInt+" +%d" % item.int
if item.luck != 0:
if stats != "":
stats += " / "
if item.luck < 0:
stats += SLuk+" %d" % item.luck
else:
stats += SLuk+" +%d" % item.luck
if effc != "" and stats != "":
effc = stats+' / '+effc
elif stats != "":
effc = stats
if len(mstat) != 0:
status = '<br /><span style="font-size: smaller; color:#007700;">%s</span>' % mstat
if len(effc) != 0:
status += '<br /><span style="font-size:smaller; color:#ad1818;">%s</span>' % effc
return status
def getrare(item):
out = ""
if item.rare!=-1:
if item.rare>100:
out = RFDrop
else:
out = RRDrop
id = item.name.replace(" ","")
if id in custom_rare:
ar = custom_rare.get(id)
for i in ar:
if len(i)>1:
if out != "":
if i[0]=="b" or i[0]=="c" or i[0]=="d":
out = ", "+out
elif i[0]!="e":
out +=", "
if i[0]=="b":
out = RBuy+out
elif i[0]=="c":
out = ("[[%s|%s]]" % (i[1], RCraft))+out
elif i[0]=="d":
out = ("[[%s|%s]]" % (i[1], RColor))+out
elif i[0]=="g":
out += "[[%s|%s]]" % (i[1], RGMEvent)
elif i[0]=="G":
out += "[[Game Masters|Game Master]] only"
elif i[0]=="j":
out += "[[Dev:Joining the project|%s]]" % RSQuest
elif i[0]=="n":
out += RNlobt
elif i[0]=="o":
out += RUnobt
elif i[0]=="t":
out += "[[%s|%s]]" % (i[1], RTail)
elif i[0]=="s":
if i[1]!="":
out += "{{H:title|%s|%s}}" % (i[1], RSpell)
else:
out += RSpell
elif i[0]=="q":
out += "[[%s|%s]]" % (i[1], RQuest)
elif i[0]=="i":
out += "[[Aidan And Ishi's Monster Points|%s]]" % RIshi
elif i[0]=="r":
out += RUnrel
elif i[0]=="e":
out += "<br /><span style=\"font-size: smaller; color:#ad1818;\">%s</span>" % i[1]
return out
def dategenerate():
print ("<!-- Page last generated on %s -->\n" % datetime.date.today())
def printhealitems(items,title):
print ('==%s==' % title)
print (tableborder)
# Print labels
for title in health_titles:
if health_titles.index(title)==0:
print ('%s | %s' % (tableheadf,title))
elif health_titles.index(title)==len(health_titles)-1:
print ('%s | %s' % (tableheadl,title))
else:
print ('%s | %s' % (tablehead,title))
cnt = 0
for i in items:
if cnt % 2 != 0:
cellstyle = tablerowodd
else:
cellstyle = tableroweven
print ('|-')
print ('%s | %s' % (cellstyle,i.wikiimg))
if i.translatename:
print ('%s | \'\'\'[[%s%s|{{H:title|%s|%s}}]]\'\'\' %s %s' % (cellstyle,TCode,i.clientname,i.clientname,i.translatename,getidstring(i.id),geteffect(i)))
else:
print ('%s | \'\'\'[[%s]]\'\'\' %s %s' % (cellstyle,i.clientname,getidstring(i.id),geteffect(i)))
print ('%s | %d' % (cellstyle,i.hp))
print ('%s | %d' % (cellstyle,i.mp))
print ('%s | %d GP<br>%d gp' % (cellstyle, i.price,i.sell))
print ('%s | %d' % (cellstyle, i.weight))
print ('%s | %s' % (cellstyle,i.description))
print ('%s | %s' % (cellstyle,getrare(i)))
cnt += 1
print ('|}\n')
dategenerate()
def printstatusitems(items,title):
print ('==%s==\n' % title)
print (tableborder)
for title in status_titles:
if status_titles.index(title)==0:
print ('%s | %s' % (tableheadf,title))
elif status_titles.index(title)==len(status_titles)-1:
print ('%s | %s' % (tableheadl,title))
else:
print ('%s | %s' % (tablehead, title))
cnt = 0
for i in items:
if cnt % 2 != 0:
cellstyle = tablerowodd
else:
cellstyle = tableroweven
print ('|-')
print ('%s | %s' % (cellstyle,i.wikiimg))
if i.translatename:
print ('%s | \'\'\'[[%s%s|{{H:title|%s|%s}}]]\'\'\' %s' % (cellstyle,TCode,i.clientname,i.clientname,i.translatename,getidstring(i.id)))
else:
print ('%s | \'\'\'[[%s]]\'\'\' %s' % (cellstyle,i.clientname,getidstring(i.id)))
print ('%s | %d GP<br>%d gp' % (cellstyle, i.price,i.sell))
print ('%s | %d' % (cellstyle, i.weight))
print ('%s | %s' % (cellstyle,i.description))
print ('%s | %s' % (cellstyle,i.effect))
print ('%s | %s' % (cellstyle,getrare(i)))
cnt += 1
print ('|}\n')
dategenerate()
def printweaponitems(items, title):
print ('==%s==\n' % title)
print (tableborder)
for title in weapon_titles:
if weapon_titles.index(title)==0:
print ('%s | %s' % (tableheadf,title))
elif weapon_titles.index(title)==len(weapon_titles)-1:
print ('%s | %s' % (tableheadl,title))
else:
print ('%s | %s' % (tablehead, title))
cnt = 0
for i in items:
if cnt % 2 != 0:
cellstyle = tablerowodd
else:
cellstyle = tableroweven
print ('|-')
print ('%s | %s' % (cellstyle,i.wikiimg))
if i.translatename:
print ('%s | \'\'\'[[%s%s|{{H:title|%s|%s}}]]\'\'\' %s %s' % (cellstyle,TCode,i.clientname,i.clientname,i.translatename,getidstring(i.id),geteffect(i)))
else:
print ('%s | \'\'\'[[%s]]\'\'\' %s %s' % (cellstyle,i.clientname,getidstring(i.id),geteffect(i)))
print ('%s | %d ' % (cellstyle,i.atk))
print ('%s | %d ' % (cellstyle,i.range))
print ('%s | %d GP<br>%d gp' % (cellstyle, i.price,i.sell))
print ('%s | %d' % (cellstyle,i.weight))
print ('%s | %s' % (cellstyle,i.description))
print ('%s | %s' % (cellstyle,getrare(i)))
cnt += 1
print ('|}\n')
dategenerate()
def printammoitems(items, title):
print ('==%s==\n' % title)
print (tableborder)
for title in ammo_titles:
if ammo_titles.index(title)==0:
print ('%s | %s' % (tableheadf,title))
elif ammo_titles.index(title)==len(ammo_titles)-1:
print ('%s | %s' % (tableheadl,title))
else:
print ('%s | %s' % (tablehead, title))
cnt = 0
for i in items:
if cnt % 2 != 0:
cellstyle = tablerowodd
else:
cellstyle = tableroweven
print ('|-')
print ('%s | %s' % (cellstyle,i.wikiimg))
if i.translatename:
print ('%s | \'\'\'[[%s%s|{{H:title|%s|%s}}]]\'\'\' %s %s' % (cellstyle,TCode,i.clientname,i.clientname,i.translatename,getidstring(i.id),geteffect(i)))
else:
print ('%s | \'\'\'[[%s]]\'\'\' %s %s' % (cellstyle,i.clientname,getidstring(i.id),geteffect(i)))
print ('%s | %d ' % (cellstyle,i.atk))
print ('%s | %d GP<br>%d gp' % (cellstyle, i.price,i.sell))
print ('%s | %d' % (cellstyle,i.weight))
print ('%s | %s' % (cellstyle,i.description))
print ('%s | %s' % (cellstyle,getrare(i)))
cnt += 1
print ('|}\n')
dategenerate()
def printarmoritems(items, title):
print ('==%s==\n' % title)
print (tableborder)
for title in armor_titles:
if armor_titles.index(title)==0:
print ('%s | %s' % (tableheadf,title))
elif armor_titles.index(title)==len(armor_titles)-1:
print ('%s | %s' % (tableheadl,title))
else:
print ('%s | %s' % (tablehead, title))
cnt = 0
for i in items:
if cnt % 2 != 0:
cellstyle = tablerowodd
else:
cellstyle = tableroweven
print ('|-')
print ('%s | %s' % (cellstyle,i.wikiimg))
if i.translatename:
print ('%s | \'\'\'[[%s%s|{{H:title|%s|%s}}]]\'\'\' %s %s' % (cellstyle,TCode,i.clientname,i.clientname,i.translatename,getidstring(i.id),geteffect(i)))
else:
print ('%s | \'\'\'[[%s]]\'\'\' %s %s' % (cellstyle,i.clientname,getidstring(i.id),geteffect(i)))
print ('%s | %d ' % (cellstyle,i.defense))
print ('%s | %d GP<br>%d gp' % (cellstyle, i.price,i.sell))
print ('%s | %d' % (cellstyle,i.weight))
print ('%s | %s' % (cellstyle,i.description))
print ('%s | %s' % (cellstyle,getrare(i)))
cnt += 1
print ('|}\n')
dategenerate()
def printotheritems(items, title):
print ('==%s==' % title)
print (tableborder)
for title in other_titles:
if other_titles.index(title)==0:
print ('%s | %s' % (tableheadf,title))
elif other_titles.index(title)==len(other_titles)-1:
print ('%s | %s' % (tableheadl,title))
else:
print ('%s | %s' % (tablehead,title))
cnt = 0
for i in items:
if cnt % 2 != 0:
cellstyle = tablerowodd
else:
cellstyle = tableroweven
print ('|-')
print ('%s | %s' % (cellstyle,i.wikiimg))
if i.translatename:
print ('%s | \'\'\'[[%s%s|{{H:title|%s|%s}}]]\'\'\' %s %s' % (cellstyle,TCode,i.clientname,i.clientname,i.translatename,getidstring(i.id),geteffect(i)))
else:
print ('%s | \'\'\'[[%s]]\'\'\' %s %s' % (cellstyle,i.clientname,getidstring(i.id),geteffect(i)))
print ('%s | %d GP<br>%d gp' % (cellstyle, i.price,i.sell))
print ('%s | %d' % (cellstyle, i.weight))
print ('%s | %s' % (cellstyle,i.description))
print ('%s | %s' % (cellstyle,getrare(i)))
cnt += 1
print ('|}\n')
dategenerate()
def parsepo (po):
ar = {}
mode = 0
for line in po:
if "msgid" in line:
id = line[line.find("\"")+1:-2]
mode = 1
elif "msgstr" in line:
data = line[line.find("\"")+1:-2]
mode = 2
elif mode == 1 and "\"" in line:
id += line[line.find("\"")+1:-2]
elif mode == 2 and "\"" in line:
data+= line[line.find("\"")+1:-2]
elif mode == 2:
ar[id] = data
mode = 0
return ar
def getfileext(file):
ext = file.split(".")
ext = ext[len(ext)-1]
return ext
#####################################################################
# MAIN
#####################################################################
try:
po = ""
if len(sys.argv) == 1:
item_db = "item_db.txt"
item_xml = "items.xml"
mob_db = "mob_db.txt"
elif len(sys.argv) == 2 and getfileext(sys.argv[1])=="po":
item_db = "item_db.txt"
item_xml = "items.xml"
mob_db = "mob_db.txt"
po = sys.argv[1]
elif len(sys.argv) == 3:
item_db = sys.argv[1]
item_xml = sys.argv[2]
mob_db = "mob_db.txt"
elif len(sys.argv) == 4:
item_db = sys.argv[1]
item_xml = sys.argv[2]
if getfileext(sys.argv[3])=="po":
po = sys.argv[3]
mob_db = "mob_db.txt"
else:
mob_db = sys.argv[3]
elif len(sys.argv) == 5:
item_db = sys.argv[1]
item_xml = sys.argv[2]
mob_db = sys.argv[3]
po = sys.argv[4]
else:
item_db = ''
item_xml = ''
mod_db = ''
print ("Wrong number of arguments")
splitidb = 0
splitmdb = 0
if item_db and not os.path.isfile(item_db):
print ("File does not exist: %s" % item_db)
if item_xml and not os.path.isfile(item_xml):
print ("File does not exist: %s" % item_xml)
if mob_db and not os.path.isfile(mob_db):
print ("File does not exist: %s" % mob_db)
wdir = os.getcwd()
if item_db and os.path.isdir(item_db):
splitidb = 1
elif not os.path.isfile(item_db):
item_db = wdir+"/items"
splitidb = 1
if splitidb:
print ("Search split item_db files in: %s" % item_db)
os.chdir(item_db)
item_db = ""
for fname in glob.glob("item_db_*.txt"):
item_db += (open(fname).read())
print ("Found file: %s" % fname)
os.chdir(wdir)
elif item_db and item_xml and os.path.isfile(item_db) and os.path.isfile(item_xml):
item_db = open(item_db).read()
if mob_db and os.path.isdir(mob_db):
splitmdb = 1
elif not os.path.isfile(mob_db):
mob_db = wdir+"/items"
splitmdb = 1
if splitmdb:
print ("Search split mob_db files in: %s" % mob_db)
os.chdir(mob_db)
mob_db = ""
for fname in glob.glob("mob_db_*.txt"):
mob_db += (open(fname).read())
print ("Found file: %s" % fname)
os.chdir(wdir)
elif mob_db and os.path.isfile(mob_db):
mob_db = open(mob_db).read()
if splitmdb and not mob_db:
print ("Not found mob_db")
if os.path.isfile(po):
po = codecs.open(po, encoding='utf-8')
else:
po = ""
if not (item_db and item_xml):
print ("\nUSAGE:")
print ("dbtowiki without any arguments will use item_db.txt or search files \"item_db_*.txt\" in \"items\" directory and items.xml in the current directory.")
print ("to specify custom files, call: dbtowiki <item_db> <item_xml> [<mob_db>]")
exit(-1)
else:
# log.append("Item-list [item_db] = %s" % item_db)
# log.append("Item-list [item_xml] = %s" % item_xml)
if po:
po = parsepo(po)
mobs = parsemonsters(mob_db)
items = parseitems(item_db)
f = open(item_xml)
citems = parsexmlitems(f)
addclientinformation(items, citems, mobs, po)
typedir = gettypedir(items)
if len(typedir.healthy) > 0: printhealitems(typedir.healthy, "Health")
if len(typedir.status) > 0: printstatusitems(typedir.status, "Status")
if len(typedir.h1weapons) > 0: printweaponitems(typedir.h1weapons, "1-Handed Weapons")
if len(typedir.h2weapons) > 0: printweaponitems(typedir.h2weapons, "2-Handed Weapons")
if len(typedir.ammo) > 0: printammoitems(typedir.ammo, "Ammo")
if len(typedir.helms) > 0: printarmoritems(typedir.helms, "Helmets")
if len(typedir.legs) > 0: printarmoritems(typedir.legs, "Legs")
if len(typedir.armor) > 0: printarmoritems(typedir.armor, "Armors")
if len(typedir.boots) > 0: printarmoritems(typedir.boots, "Boots")
if len(typedir.shield) > 0: printarmoritems(typedir.shield, "Shields")
if len(typedir.gloves) > 0: printarmoritems(typedir.gloves, "Gloves")
if len(typedir.rings) > 0: printotheritems(typedir.rings, "Rings")
if len(typedir.charms) > 0: printotheritems(typedir.charms, "Charms")
if len(typedir.dye) > 0: printotheritems(typedir.dye, "Dyes")
if len(typedir.flower) > 0: printotheritems(typedir.flower, "Flowers")
if len(typedir.easter) > 0: printotheritems(typedir.easter, "Easter")
if len(typedir.halloween) > 0: printotheritems(typedir.halloween, "Halloween")
if len(typedir.christmas) > 0: printotheritems(typedir.christmas, "Christmas")
if len(typedir.other) > 0: printotheritems(typedir.other, "Other")
print ("\n")
finally:
printlog()