diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-01-15 19:35:30 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-01-15 19:35:39 +0100 |
| commit | be0b8968651f98b962a18c4e750d6396c0fdaf47 (patch) | |
| tree | 5d577ecb713068cc91feeb3f1c22ae134dbf236a /gamelocker/strings.py | |
| parent | 517ac9c3f5b342327ddb248436fc7b47ce54b885 (diff) | |
| download | python-gamelocker-be0b8968651f98b962a18c4e750d6396c0fdaf47.tar.gz python-gamelocker-be0b8968651f98b962a18c4e750d6396c0fdaf47.zip | |
add functions to fancify items
Diffstat (limited to 'gamelocker/strings.py')
| -rw-r--r-- | gamelocker/strings.py | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/gamelocker/strings.py b/gamelocker/strings.py new file mode 100644 index 0000000..2df2647 --- /dev/null +++ b/gamelocker/strings.py @@ -0,0 +1,242 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# pylint: disable=invalid-name,missing-docstring +""" +gamelocker.strings + +A collection of mappings between strings returned by the API +and their common names. +""" + + +# this is quite of a hack. +class Stats(dict): + """A hybrid between `dict` and `object` + that types :class:`LazyObject`'s to strings.""" + def __typeit(self, obj): + if isinstance(obj, (tuple, list)): + l = [] + for o in obj: + l.append(self.__typeit(o)) + return l + if isinstance(obj, dict): + return Stats(obj) + if isinstance(obj, str): + return LazyObject(obj) + return obj + + def __get(self, name): + if name in self: + return self.__typeit(self[name]) + else: + raise AttributeError("No such attribute: " + name) + + def __getattr__(self, name): + return self.__get(name) + + def __setattr__(self, name, value): + self[name] = value + + def __delattr__(self, name): + if name in self: + del self[name] + else: + raise AttributeError("No such attribute: " + name) + + @property + def items(self): + return self.__get("items") + +class LazyObject(str): + """Can be both :class:`Hero` or :class:`Item`.""" + def pretty(self): + for cls in (Hero, Item): + prettystr = cls(self).pretty() + if prettystr != self: + return prettystr + return self + + +class Hero(str): + heroes = { + "*Adagio*": "Adagio", + "*Alpha*": "Alpha", + "*Ardan*": "Ardan", + "*Baron*": "Baron", + "*Blackfeather*": "Blackfeather", + "*Catherine*": "Catherine", + "*Celeste*": "Celeste", + "*Flicker*": "Flicker", + "*Fortress*": "Fortress", + "*Glaive*": "Glaive", + "*Gwen*": "Gwen", + "*Hero009*": "Krul", + "*Hero010*": "Skaarf", + "*Hero016*": "Rona", + "*Idris*": "Idris", + "*Joule*": "Joule", + "*Kestrel*": "Kestrel", + "*Koshka*": "Koshka", + "*Lance*": "Lance", + "*Lyra*": "Lyra", + "*Ozo*": "Ozo", + "*Petal*": "Petal", + "*Phinn*": "Phinn", + "*Reim*": "Reim", + "*Ringo*": "Ringo", + "*Samuel*": "Samuel", + "*SAW*": "SAW", + "*Sayoc*": "Taka", + "*Skye*": "Skye", + "*Vox*": "Vox" + } + + def pretty(self): + if self in self.heroes: + return self.heroes[self] + return self + + +class Item(str): + items = { + "Aftershock": "Aftershock", + "Armor2": "Coat of Plates", + "Armor3": "Metal Jacket", + "Armor Shredder": "Bonesaw", + "Atlas Pauldron": "Atlas Pauldron", + "AttackSpeed1": "Swift Shooter", + "AttackSpeed2": "Blazing Salvo", + "BarbedNeedle": "Barbed Needle", + "Boots1": "Sprint Boots", + "Boots2": "Travel Boots", + "Boots3": "Journey Boots", + "BreakingPoint": "Breaking Point", + "Broken Myth": "Broken Myth", + "Clockwork": "Clockwork", + "Cogwheel": "Chronograph", + "Contraption": "Contraption", + "Cooldown1": "Hourglass", + "Critical": "Tyrant's Monocle", + "Crucible": "Crucible", + "Crystal1": "Crystal Bit", + "Crystal2": "Eclipse Prism", + "Crystal3": "Shatterglass", + "Crystal Matrix": "Alternating Current", + "Echo": "Echo", + "EveOfHarvest": "Eve of Harvest", + "Flare": "Flare", + "Flaregun": "Flare Gun", + "Fountain of Renewal": "Fountain of Renewal", + "Frostburn": "Frostburn", + "Halcyon Chargers": "Halcyon Chargers", + "Health2": "Dragonheart", + "Heavy Prism": "Heavy Prism", + "Heavy Steel": "Heavy Steel", + "IronguardContract": "Ironguard Contract", + "Lifewell": "Lifespring", + "Light Armor": "Light Armor", + "Light Shield": "Light Shield", + "LuckyStrike": "Lucky Strike", + "Minion Candy": "Minion Candy", + "MinionsFoot": "Minion's Foot", + "Mulled Wine": "Halcyon Potion", + "NullwaveGauntlet": "Nullwave Gauntlet", + "Oakheart": "Oakheart", + "PiercingShard": "Piercing Shard", + "PiercingSpear": "Piercing Spear", + "PoisonedShiv": "Poisoned Shiv", + "Protector Contract": "Protector Contract", + "Reflex Block": "Reflex Block", + "Scout Trap": "Scout Trap", + "Serpent Mask": "Serpent Mask", + "Shield 2": "Kinetic Shield", + "Shiversteel": "Shiversteel", + "Six Sins": "Six Sins", + "SlumberingHusk": "Slumbering Husk", + "Steam Battery": "Energy Battery", + "Stormcrown": "Stormcrown", + "StormguardBanner": "Stormguard Banner", + "Tension Bow": "Tension Bow", + "Tornado Trigger": "Tornado Trigger", + "Void Battery": "Void Battery", + "War Treads": "War Treads", + "Weapon3": "Sorrowblade", + "Weapon Blade": "Weapon Blade" + } + + item_ids = { + "*1000_Item_HalcyonPotion*": "Halcyon Potion", + "*1002_Item_WeaponBlade*": "Weapon Blade", + "*1003_Item_CrystalBit*": "Crystal Bit", + "*1004_Item_SwiftShooter*": "Swift Shooter", + "*1005_Item_SixSins*": "Six Sins", + "*1009_Item_EclipsePrism*": "Eclipse Prism", + "*1010_Item_BlazingSalvo*": " Blazing Salvo", + "*1012_Item_Sorrowblade*": "Sorrowblade", + "*1013_Item_Shatterglass*": "Shatterglass", + "*1014_Item_TornadoTrigger*": "Tornado Trigger", + "*1015_Item_Oakheart*": "Oakheart", + "*1016_Item_Dragonheart*": "Dragonheart", + "*1017_Item_LightArmor*": "Light Armor", + "*1022_Item_CoatOfPlates*": "Coat of Plates", + "*1024_Item_MetalJacket*": "Metal Jacket", + "*1025_Item_EnergyBattery*": "Energy Battery", + "*1026_Item_Hourglass*": "Hourglass", + "*1027_Item_VoidBattery*": "Void Battery", + "*1028_Item_Chronograph*": "Chronograph", + "*1029_Item_Clockwork*": "Clockwork", + "*1030_Item_SprintBoots*": "Sprint Boots", + "*1032_Item_TravelBoots*": "Travel Boots", + "*1034_Item_SerpentMask*": "Serpent Mask", + "*1035_Item_TensionBow*": "Tension Bow", + "*1038_Item_Flare*": "Flare", + "*1039_Item_Bonesaw*": "Bonesaw", + "*1041_Item_MinionCandy*": "Minion Candy", + "*1042_Item_Shiversteel*": "Shiversteel", + "*1043_Item_ReflexBlock*": "Reflex Block", + "*1044_Item_Frostburn*": "Frostburn", + "*1045_Item_FountainOfRenewal*": "Fountain of Renewal", + "*1046_Item_Crucible*": "Crucible", + "*1047_Item_JourneyBoots*": "Journey Boots", + "*1049_Item_TyrantsMonocle*": "Tyrant's Monocle", + "*1050_Item_Aftershock*": "Aftershock", + "*1052_Item_WeaponInfusion*": "Weapon Infusion", + "*1053_Item_CrystalInfusion*": "Crystal Infusion", + "*1054_Item_ScoutTrap*": "Scout Trap", + "*1055_Item_BrokenMyth*": "Broken Myth", + "*1056_Item_WarTreads*": "War Treads", + "*1057_Item_AtlasPauldron*": "Atlas Pauldron", + "*1059_Item_BookOfEulogies*": "Book of Eulogies", + "*1060_Item_BarbedNeedle*": "Barbed Needle", + "*1061_Item_LightShield*": "Light Shield", + "*1062_Item_KineticShield*": "Kinetic Shield", + "*1063_Item_Aegis*": "Aegis", + "*1064_Item_Lifespring*": "Lifespring", + "*1065_Item_HeavySteel*": "Heavy Steel", + "*1066_Item_PiercingSpear*": "Piercing Spear", + "*1067_Item_BreakingPoint*": "Breaking Point", + "*1068_Item_LuckyStrike*": "Lucky Strike", + "*1069_Item_AlternatingCurrent*": "Alternating Current", + "*1070_Item_PiercingShard*": "Piercing Shard", + "*1071_Item_EveOfHarvest*": "Eve of Harvest", + "*1072_Item_HeavyPrism*": "Heavy Prism", + "*1073_Item_IronguardContract*": "Ironguard Contract", + "*1074_Item_StormguardBanner*": "Stormguard Banner", + "*1079_Item_Contraption*": "Contraption", + "*1080_Item_MinionsFoot*": "Minion's Foot", + "*1084_Item_ProtectorContract*": "Protector Contract", + "*1087_Item_HalcyonChargers*": "Halcyon Chargers", + "*1088_Item_Flaregun*": "Flare Gun", + "*1090_Item_Stormcrown*": "Stormcrown", + "*1092_Item_PoisonedShiv*": "Poisoned Shiv", + "*1095_Item_NullwaveGauntlet*": "Nullwave Gauntlet", + "*1097_Item_Echo*": "Echo", + "*1105_Item_SlumberingHusk*": "Slumbering Husk" + } + + def pretty(self): + if self in self.items: + return self.items[self] + if self in self.item_ids: + return self.item_ids[self] + return self |
