diff --git a/coc/enums.py b/coc/enums.py index 2589de57..43fdf431 100644 --- a/coc/enums.py +++ b/coc/enums.py @@ -26,6 +26,7 @@ class ExtendedEnum(Enum): """An Enum class that allows for the `__str__` method to be implemented.""" + def __str__(self): return self.in_game_name @@ -62,7 +63,13 @@ class PlayerHouseElementType(ExtendedEnum): @property def in_game_name(self) -> str: """Get a neat client-facing string value for the element type.""" - lookup = {"ground": "Ground", "roof": "Roof", "foot": "Foot", "decoration": "Decoration", "walls": "Walls"} + lookup = { + "ground": "Ground", + "roof": "Roof", + "foot": "Foot", + "decoration": "Decoration", + "walls": "Walls" + } return lookup[self.value] @@ -77,7 +84,12 @@ class Role(ExtendedEnum): @property def in_game_name(self) -> str: """Get a neat client-facing string value for the role.""" - lookup = {"member": "Member", "admin": "Elder", "coLeader": "Co-Leader", "leader": "Leader"} + lookup = { + "member": "Member", + "admin": "Elder", + "coLeader": "Co-Leader", + "leader": "Leader" + } return lookup[self.value] @@ -103,7 +115,10 @@ class BattleModifier(ExtendedEnum): @property def in_game_name(self) -> str: """Get a neat client-facing string value for the battle modifier.""" - lookup = {"none": "None", "hardMode": "Hard Mode"} + lookup = { + "none": "None", + "hardMode": "Hard Mode" + } return lookup[self.value] @@ -118,7 +133,12 @@ class WarState(ExtendedEnum): @property def in_game_name(self) -> str: """Get a neat client-facing string value for the war state.""" - lookup = {"notInWar": "Not in War", "preparation": "Preparation", "inWar": "In War", "warEnded": "War Ended"} + lookup = { + "notInWar": "Not in War", + "preparation": "Preparation", + "inWar": "In War", + "warEnded": "War Ended" + } return lookup[self.value] @@ -131,7 +151,11 @@ class WarResult(ExtendedEnum): @property def in_game_name(self) -> str: """Get a neat client-facing string value for the war state.""" - lookup = {"win": "Win", "lose": "Lose", "tie": "Tie"} + lookup = { + "win": "Win", + "lose": "Lose", + "tie": "Tie" + } return lookup[self.value] @@ -148,9 +172,16 @@ class Resource(ExtendedEnum): @property def in_game_name(self) -> str: """Get a neat client-facing string value for the resource.""" - lookup = {"Elixir": "Elixir", "Elixir2": "Builder Elixir", - "DarkElixir": "Dark Elixir", "Gold": "Gold", "Gold2": "Builder Gold", - "CommonOre": "Shiny Ore", "RareOre": "Glowy Ore", "EpicOre": "Starry Ore"} + lookup = { + "Elixir": "Elixir", + "Elixir2": "Builder Elixir", + "DarkElixir": "Dark Elixir", + "Gold": "Gold", + "Gold2": "Builder Gold", + "CommonOre": "Shiny Ore", + "RareOre": "Glowy Ore", + "EpicOre": "Starry Ore" + } return lookup[self.value] @@ -188,6 +219,7 @@ def in_game_name(self) -> str: "Headhunter", "Apprentice Warden", "Druid", + "Furnace" ] SIEGE_MACHINE_ORDER = [ @@ -265,8 +297,18 @@ def in_game_name(self) -> str: SPELL_ORDER = ELIXIR_SPELL_ORDER + DARK_ELIXIR_SPELL_ORDER -HOME_BASE_HERO_ORDER = ["Barbarian King", "Archer Queen", "Minion Prince", "Grand Warden", "Royal Champion"] -BUILDER_BASE_HERO_ORDER = ["Battle Machine", "Battle Copter"] +HOME_BASE_HERO_ORDER = [ + "Barbarian King", + "Archer Queen", + "Minion Prince", + "Grand Warden", + "Royal Champion" +] +BUILDER_BASE_HERO_ORDER = [ + "Battle Machine", + "Battle Copter" +] + HERO_ORDER = HOME_BASE_HERO_ORDER + BUILDER_BASE_HERO_ORDER PETS_ORDER = [ @@ -280,6 +322,7 @@ def in_game_name(self) -> str: "Phoenix", "Spirit Fox", "Angry Jelly", + "Sneezy" ] EQUIPMENT = [ @@ -363,7 +406,7 @@ def in_game_name(self) -> str: "Next Generation Model", "Un-Build It", "Champion Builder", - + # Clan Capital "Aggressive Capitalism", "Most Valuable Clanmate", diff --git a/coc/static/characters.json b/coc/static/characters.json index 31d56fcf..3ecb157f 100644 --- a/coc/static/characters.json +++ b/coc/static/characters.json @@ -15432,5 +15432,130 @@ "EnemyGroupWeight": 800, "TriggersTraps": true, "PreviewScenario": "TroopMinionBodyguard" + }, + "Furnace": { + "1": { + "VisualLevel": 1, + "LaboratoryLevel": 13, + "Hitpoints": 1530, + "UpgradeTimeH": 288, + "UpgradeCost": 200000, + "DPS": 0, + "SecondarySpawnDist": 150, + "SummonTroopCount": 1, + "SummonTime": 875, + "SummonCooldown": 7000, + "SummonLimit": 19 + }, + "2": { + "VisualLevel": 2, + "LaboratoryLevel": 14, + "Hitpoints": 1620, + "UpgradeTimeH": 336, + "UpgradeCost": 260000, + "DPS": 0, + "SecondarySpawnDist": 150, + "SummonTroopCount": 1, + "SummonTime": 875, + "SummonCooldown": 7000, + "SummonLimit": 20 + }, + "3": { + "VisualLevel": 3, + "LaboratoryLevel": 15, + "Hitpoints": 1710, + "UpgradeTimeH": 384, + "UpgradeCost": 320000, + "DPS": 0, + "SecondarySpawnDist": 150, + "SummonTroopCount": 1, + "SummonTime": 875, + "SummonCooldown": 7000, + "SummonLimit": 21 + }, + "4": { + "VisualLevel": 4, + "LaboratoryLevel": 15, + "Hitpoints": 1800, + "UpgradeTimeH": 384, + "UpgradeCost": 320000, + "DPS": 0, + "SecondarySpawnDist": 150, + "SummonTroopCount": 1, + "SummonTime": 875, + "SummonCooldown": 7000, + "SummonLimit": 22 + }, + "Name": "Furnace", + "TID": "TID_FURNACE", + "InfoTID": "TID_CHARACTER_INFO_FURNACE", + "HousingSpace": 18, + "BarrackLevel": 12, + "Speed": 0, + "UpgradeResource": "DarkElixir", + "DonateCost": 6, + "PreferedTargetDamageMod": 1, + "IconSWF": "sc/ui.sc", + "IconExportName": "icon_unit_furnace", + "BigPicture": "unit_furnace_big", + "BigPictureSWF": "sc/info_furnace.sc", + "DeployEffect": "Furnace Deploy", + "HitEffect": "Furnace Hit", + "IsFlying": false, + "AirTargets": true, + "GroundTargets": true, + "DieEffect": "Furnace Die", + "ProductionBuilding": "Dark Elixir Barrack", + "IsJumper": false, + "MovementOffsetSpeed": 0, + "TombStone": "DarkTombStone", + "SummonTroop": "Furnace Firemite", + "SummonEffect": "Furnace Summon", + "TargetedEffectOffset": -50, + "FriendlyGroupWeight": 1200, + "EnemyGroupWeight": 200, + "TriggersTraps": true, + "PreviewScenario": "TroopGroundAny3" + }, + "Furnace Firemite": { + "1": { + "Name": "Firemite", + "VisualLevel": 1, + "TID": "TID_FURNACE_FIREMITE", + "InfoTID": "TID_CHARACTER_INFO_FURNACE_FIREMITE", + "HousingSpace": 1, + "BarrackLevel": 1, + "LaboratoryLevel": 1, + "Speed": 32, + "Hitpoints": 250, + "AttackRange": 2.5, + "AttackSpeed": 1000, + "DPS": 25, + "PreferedTargetDamageMod": 1, + "IconSWF": "sc/ui.sc", + "IconExportName": "icon_unit_firemite", + "BigPicture": "unit_firemite_big", + "BigPictureSWF": "sc/info_firemite.sc", + "DeployEffect": "Firemite Deploy", + "AttackEffect": "Firemite Attack", + "HitEffect": "Firemite Hit", + "IsFlying": false, + "AirTargets": false, + "GroundTargets": true, + "DieEffect": "Firemite Die", + "Animation": "Firemite", + "IsJumper": true, + "MovementOffsetSpeed": 0, + "DisableProduction": true, + "IsSecondaryTroop": true, + "SpawnIdle": 500, + "TargetedEffectOffset": -50, + "FriendlyGroupWeight": 50, + "EnemyGroupWeight": 100, + "TriggersTraps": false, + "DoesNotOpenCC": true, + "HealerWeight": 0, + "PreviewScenario": "SecondaryTroop" + } } -} \ No newline at end of file +} diff --git a/coc/static/pets.json b/coc/static/pets.json index 790dceb9..22c56911 100644 --- a/coc/static/pets.json +++ b/coc/static/pets.json @@ -2200,5 +2200,151 @@ "SpecialAbilities": "FlyingSpawnerTransformAbility", "LeashLength": 0, "PreviewScenario": "Pet2" + }, + "Sneezy": { + "1": { + "TroopLevel": 1, + "LaboratoryLevel": 11, + "Hitpoints": 3300, + "TrainingCost": 1, + "UpgradeTimeH": 72, + "UpgradeCost": 200000, + "DPS": 270, + "StrengthWeight": 15000, + "SpecialAbilitiesLevel": 1 + }, + "2": { + "TroopLevel": 2, + "LaboratoryLevel": 11, + "Hitpoints": 3450, + "TrainingCost": 2, + "UpgradeTimeH": 192, + "UpgradeCost": 220000, + "DPS": 290, + "StrengthWeight": 16000, + "SpecialAbilitiesLevel": 1 + }, + "3": { + "TroopLevel": 3, + "LaboratoryLevel": 11, + "Hitpoints": 3600, + "TrainingCost": 3, + "UpgradeTimeH": 192, + "UpgradeCost": 240000, + "DPS": 310, + "StrengthWeight": 17000, + "SpecialAbilitiesLevel": 1 + }, + "4": { + "TroopLevel": 4, + "LaboratoryLevel": 11, + "Hitpoints": 3750, + "TrainingCost": 4, + "UpgradeTimeH": 192, + "UpgradeCost": 260000, + "DPS": 330, + "StrengthWeight": 18000, + "SpecialAbilitiesLevel": 1 + }, + "5": { + "TroopLevel": 5, + "LaboratoryLevel": 11, + "Hitpoints": 3900, + "TrainingCost": 5, + "UpgradeTimeH": 192, + "UpgradeCost": 280000, + "DPS": 350, + "StrengthWeight": 19000, + "SpecialAbilitiesLevel": 1 + }, + "6": { + "TroopLevel": 6, + "LaboratoryLevel": 11, + "Hitpoints": 4050, + "TrainingCost": 6, + "UpgradeTimeH": 192, + "UpgradeCost": 300000, + "DPS": 370, + "StrengthWeight": 20000, + "SpecialAbilitiesLevel": 1 + }, + "7": { + "TroopLevel": 7, + "LaboratoryLevel": 11, + "Hitpoints": 4200, + "TrainingCost": 7, + "UpgradeTimeH": 192, + "UpgradeCost": 320000, + "DPS": 390, + "StrengthWeight": 21000, + "SpecialAbilitiesLevel": 1 + }, + "8": { + "TroopLevel": 8, + "LaboratoryLevel": 11, + "Hitpoints": 4350, + "TrainingCost": 8, + "UpgradeTimeH": 192, + "UpgradeCost": 360000, + "DPS": 410, + "StrengthWeight": 22000, + "SpecialAbilitiesLevel": 1 + }, + "9": { + "TroopLevel": 9, + "LaboratoryLevel": 11, + "Hitpoints": 4500, + "TrainingCost": 9, + "UpgradeTimeH": 192, + "UpgradeCost": 360000, + "DPS": 430, + "StrengthWeight": 23000, + "SpecialAbilitiesLevel": 1 + }, + "10": { + "TroopLevel": 10, + "LaboratoryLevel": 11, + "Hitpoints": 4650, + "TrainingCost": 10, + "DPS": 450, + "StrengthWeight": 24000, + "SpecialAbilitiesLevel": 1 + }, + "Name": "Sneezy", + "TID": "TID_PET_SNEEZY", + "InfoTID": "TID_PET_SNEEZY_INFO", + "HousingSpace": 20, + "Speed": 24, + "TrainingTime": 999, + "TrainingResource": "DarkElixir", + "UpgradeResource": "DarkElixir", + "DonateCost": 20, + "AttackRange": 500, + "AttackSpeed": 750, + "IconSWF": "sc/ui.sc", + "IconExportName": "icon_unit_pet_sneezy", + "BigPicture": "unit_pet_sneezy_big", + "BigPictureSWF": "sc/info_pet_sneezy.sc", + "PreferedTargetBuildingClass": "Defense", + "DeployEffect": "Sneezy Deploy", + "AttackEffect": "Sneezy Attack", + "HitEffect": "Sneezy Hit", + "IsFlying": true, + "AirTargets": true, + "GroundTargets": true, + "DieEffect": "Sneezy Die", + "Animation": "SneezyDefault", + "IsJumper": false, + "MovementOffsetSpeed": 0, + "DisableProduction": true, + "SpawnIdle": 100, + "TargetedEffectOffset": 60, + "FriendlyGroupWeight": 300, + "EnemyGroupWeight": 400, + "TriggersTraps": true, + "SpecialAbilities": "SneezyAbility", + "LeashLength": 400, + "DefaultSkin": "SneezyDefault", + "PreviewScenario": "Pet1" } -} \ No newline at end of file +} diff --git a/coc/static/texts_EN.json b/coc/static/texts_EN.json index c4c9560f..f3dfde57 100644 --- a/coc/static/texts_EN.json +++ b/coc/static/texts_EN.json @@ -49635,5 +49635,29 @@ "TID": "TID_STARTER_PASS", "EN": "Starter Pass" } + }, + "TID_CHARACTER_INFO_FURNACE": { + "The Furnace doesn’t move, but it does spawn Firemites over time that target Buildings. These curious little guys leave pools of fire where they visit!": { + "TID": "TID_CHARACTER_INFO_FURNACE", + "EN": "The Furnace doesn’t move, but it does spawn Firemites over time that target Buildings. These curious little guys leave pools of fire where they visit!" + } + }, + "TID_FURNACE": { + "Furnace": { + "TID": "TID_FURNACE", + "EN": "Furnace" + } + }, + "TID_CHARACTER_INFO_FURNACE_FIREMITE": { + "Speedy, curious little fellow with low health and a burning desire to explore Buildings! All they want is a warm place to hide, but they leave pools of fire where they visit, slowly damaging their target over time.": { + "TID": "TID_CHARACTER_INFO_FURNACE_FIREMITE", + "EN": "Speedy, curious little fellow with low health and a burning desire to explore Buildings! All they want is a warm place to hide, but they leave pools of fire where they visit, slowly damaging their target over time." + } + }, + "TID_FURNACE_FIREMITE": { + "Furnace Firemite": { + "TID": "TID_FURNACE_FIREMITE", + "EN": "Firemite" + } } -} \ No newline at end of file +}