Herblore rework: tiered potion ladders per skill

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-10-19 21:28:00 +01:00
parent 632a12e8bc
commit f810e16eb8
4 changed files with 125 additions and 51 deletions

View file

@ -44,11 +44,14 @@ Alpha. One season, bandit raids plus two friendly events, six buildings.
fight while their points last, and praying trains Prayer too. A Temple adds fight while their points last, and praying trains Prayer too. A Temple adds
points per bone and lets players offer bones as devotion, which wards the points per bone and lets players offer bones as devotion, which wards the
city in the next raid. city in the next raid.
- **Herblore:** farmers grow six herbs (guam to snapdragon); herblore brews - **Herblore:** farmers grow six herbs (guam to snapdragon), one per tier.
them with a secondary into potions of 50 uses. One potion per skill at a Every potion is a ladder of up to six tiers (I–VI): the tier's herb plus
time: faster gathering, a chance to keep materials or double ore, more the matching rung of the skill's own resources (copper ore → runite ore,
prayer from bones, or combat power, armour and healing. An empty potion is logs → enchanted logs, copper bar → rune bar…), at Herblore 1, 15, 30, 45,
replaced from the bank automatically. 60 and 75. Gathering and Construction potions are 10–35% faster, crafting
potions a 10–35% chance to keep materials, Prayer more points from bones,
and combat has Strength and Defence ladders. Potions last 50 uses, one per
skill at a time; an empty one is replaced from the bank automatically.
- **Events:** raids are announced a day or two ahead. Reconnaissance from - **Events:** raids are announced a day or two ahead. Reconnaissance from
scouts, informants and the spymaster's guild narrows down when, how strong, scouts, informants and the spymaster's guild narrows down when, how strong,
and finally where their camp is, so fighters can sabotage it. Fighters can and finally where their camp is, so fighters can sabotage it. Fighters can

101
game.py
View file

@ -186,7 +186,7 @@ for _raw, _cooked, _level, _action_id, _verb in FISH:
# id, name, icon, farming level, seconds, xp, value # id, name, icon, farming level, seconds, xp, value
HERBS = [ HERBS = [
("guam_leaf", "Guam leaf", "🍀", 5, 45, 12, 3), ("guam_leaf", "Guam leaf", "🍀", 1, 45, 12, 3),
("marrentill", "Marrentill", "🌼", 15, 50, 20, 5), ("marrentill", "Marrentill", "🌼", 15, 50, 20, 5),
("tarromin", "Tarromin", "🌺", 25, 55, 30, 8), ("tarromin", "Tarromin", "🌺", 25, 55, 30, 8),
("harralander", "Harralander", "🌻", 35, 60, 42, 12), ("harralander", "Harralander", "🌻", 35, 60, 42, 12),
@ -194,24 +194,50 @@ HERBS = [
("snapdragon", "Snapdragon", "🌸", 60, 70, 75, 28), ("snapdragon", "Snapdragon", "🌸", 60, 70, 75, 28),
] ]
POTION_CHARGES = 50 POTION_CHARGES = 50
# id, name, herblore level, herb, secondary, skill, effect # Potions come in tiers like everything else: tier n is brewed from the nth herb
POTIONS = [ # and the nth rung of the skill's own ladder, needs the tier's Herblore level
("trackers_tincture", "Tracker's tincture", 1, "guam_leaf", "feathers", "hunting", {"speed": 0.2}), # (none for tier I), and is stronger the higher it goes. Ladders stop where the
("lumberjacks_tonic", "Lumberjack's tonic", 6, "guam_leaf", "logs", "woodcutting", {"speed": 0.2}), # skill runs out of higher things to do.
("strength_potion", "Strength potion", 10, "guam_leaf", "bones", "combat", {"power": 6}), ROMAN = ["I", "II", "III", "IV", "V", "VI"]
("anglers_brew", "Angler's brew", 15, "marrentill", "raw_shrimp", "fishing", {"speed": 0.2}), SPEEDS = [0.10, 0.15, 0.20, 0.25, 0.30, 0.35]
("prospectors_draught", "Prospector's draught", 18, "marrentill", "copper_ore", "mining", {"double": 0.15}), _ores = ["copper_ore", "iron_ore", "coal", "mithril_ore", "adamantite_ore", "runite_ore"]
("growth_potion", "Growth potion", 20, "marrentill", "wheat", "farming", {"speed": 0.2}), # id, name, skill, effect, strength by tier, secondary by tier
("defence_potion", "Defence potion", 25, "tarromin", "iron_ore", "combat", {"reduce": 0.15}), POTION_LINES = [
("chefs_spice", "Chef's spice", 28, "tarromin", "vegetables", "cooking", {"keep": 0.15}), ("mining", "Mining potion", "mining", "speed", SPEEDS, _ores),
("bonedust_tonic", "Bonedust tonic", 30, "tarromin", "big_bones", "prayer", {"bones": 0.5}), ("woodcutting", "Woodcutting potion", "woodcutting", "speed", SPEEDS, [tree[0] for tree in TREES]),
("smiths_focus", "Smith's focus", 35, "harralander", "coal", "smithing", {"keep": 0.15}), ("fishing", "Fishing potion", "fishing", "speed", SPEEDS, [fish[0][0] for fish in FISH]),
("masons_patience", "Mason's patience", 38, "harralander", "cut_stone", "masonry", {"keep": 0.15}), ("farming", "Farming potion", "farming", "speed", SPEEDS,
("tanners_oil", "Tanner's oil", 40, "harralander", "raw_meat", "leatherworking", {"keep": 0.15}), ["wheat", "vegetables", "guam_leaf", "marrentill", "tarromin", "harralander"]),
("regeneration_potion", "Regeneration potion", 45, "ranarr", "cooked_trout", "combat", {"heal": 4}), ("hunting", "Hunting potion", "hunting", "speed", SPEEDS[:4], ["feathers", "raw_meat", "boar_hide", "bear_pelt"]),
("super_strength", "Super strength", 50, "ranarr", "dragon_bones", "combat", {"power": 14}), ("construction", "Construction potion", "construction", "speed", SPEEDS, [plank for plank, _name in PLANKS]),
("super_defence", "Super defence", 60, "snapdragon", "blue_dragonhide", "combat", {"reduce": 0.30}), ("smithing", "Smithing potion", "smithing", "keep", SPEEDS, [f"{metal[0]}_bar" for metal in METALS]),
("cooking", "Cooking potion", "cooking", "keep", SPEEDS, [fish[1][0] for fish in FISH]),
("leatherworking", "Leatherworking potion", "leatherworking", "keep", SPEEDS,
[leather[1][0] for leather in LEATHERS]),
("masonry", "Masonry potion", "masonry", "keep", SPEEDS[:3], ["stone", "bricks", "cut_stone"]),
("prayer", "Prayer potion", "prayer", "bones", [0.25, 0.5, 0.75], ["bones", "big_bones", "dragon_bones"]),
("strength", "Strength potion", "combat", "power", [4, 7, 11, 15, 20, 26], [leather[0][0] for leather in LEATHERS]),
("defence", "Defence potion", "combat", "reduce", [0.10, 0.14, 0.18, 0.22, 0.26, 0.30],
[f"{metal[0]}_shield" for metal in METALS]),
] ]
# id, name, herblore level, herb, secondary, skill, effect
POTIONS = []
POTION_TIER = {}
for _line, _name, _skill, _key, _strengths, _seconds in POTION_LINES:
for _tier, (_strength, _second) in enumerate(zip(_strengths, _seconds)):
_id = f"{_line}_potion_{_tier + 1}"
POTIONS.append((_id, f"{_name} {ROMAN[_tier]}", TIER_LEVELS[_tier], HERBS[_tier][0], _second, _skill,
{_key: _strength}))
POTION_TIER[_id] = _tier
# Potions from before the tiers, and what they became.
OLD_POTIONS = {
"trackers_tincture": "hunting_potion_3", "lumberjacks_tonic": "woodcutting_potion_3",
"strength_potion": "strength_potion_2", "anglers_brew": "fishing_potion_3",
"prospectors_draught": "mining_potion_2", "growth_potion": "farming_potion_3",
"defence_potion": "defence_potion_2", "chefs_spice": "cooking_potion_2", "bonedust_tonic": "prayer_potion_2",
"smiths_focus": "smithing_potion_2", "masons_patience": "masonry_potion_2", "tanners_oil": "leatherworking_potion_2",
"regeneration_potion": "defence_potion_3", "super_strength": "strength_potion_4", "super_defence": "defence_potion_5",
}
def describe_potion(skill: str, effect: dict) -> str: def describe_potion(skill: str, effect: dict) -> str:
@ -226,9 +252,7 @@ def describe_potion(skill: str, effect: dict) -> str:
return f"+{round(effect['bones'] * 100)}% prayer points and devotion from bones" return f"+{round(effect['bones'] * 100)}% prayer points and devotion from bones"
if "power" in effect: if "power" in effect:
return f"+{effect['power']} combat power" return f"+{effect['power']} combat power"
if "reduce" in effect:
return f"-{round(effect['reduce'] * 100)}% damage taken in fights" return f"-{round(effect['reduce'] * 100)}% damage taken in fights"
return f"Heals {effect['heal']} HP every fight"
for _id, _name, _icon, _level, _time, _xp, _value in HERBS: for _id, _name, _icon, _level, _time, _xp, _value in HERBS:
@ -348,7 +372,7 @@ ACTIONS = [
*[_action(f"grow_{herb}", "farming", f"Grow {name.lower()}", level, seconds, xp, outputs={herb: 1}) *[_action(f"grow_{herb}", "farming", f"Grow {name.lower()}", level, seconds, xp, outputs={herb: 1})
for herb, name, _icon, level, seconds, xp, _value in HERBS], for herb, name, _icon, level, seconds, xp, _value in HERBS],
*[_action(f"brew_{potion}", "herblore", name, level, 30 + level // 3, round(4 + level * 1.6), *[_action(f"brew_{potion}", "herblore", name, level, 30 + level // 3, round(4 + level * 1.6),
{herb: 1, second: 1}, {potion: 1}, group="Combat potions" if skill == "combat" else "Skill potions") {herb: 1, second: 1}, {potion: 1}, group=f"Tier {ROMAN[POTION_TIER[potion]]}")
for potion, name, level, herb, second, skill, _effect in POTIONS], for potion, name, level, herb, second, skill, _effect in POTIONS],
_action("hunt_birds", "hunting", "Snare birds", 1, 25, 6, outputs={"feathers": 3}), _action("hunt_birds", "hunting", "Snare birds", 1, 25, 6, outputs={"feathers": 3}),
_action("hunt_deer", "hunting", "Hunt deer", 8, 40, 13, outputs={"raw_meat": 2, "hide": 1}), _action("hunt_deer", "hunting", "Hunt deer", 8, 40, 13, outputs={"raw_meat": 2, "hide": 1}),
@ -499,7 +523,7 @@ RAID_TRAITS = ["lightly armoured, heavy on archers", "mounted and fast, few bows
# --- world --------------------------------------------------------------- # --- world ---------------------------------------------------------------
WORLD_VERSION = 10 WORLD_VERSION = 11
def new_world(now: float, speed: float = 1.0) -> dict: def new_world(now: float, speed: float = 1.0) -> dict:
@ -606,9 +630,32 @@ def migrate(world: dict, now: float | None = None) -> dict:
for building in world["city"]["buildings"].values(): for building in world["city"]["buildings"].values():
building.setdefault("fittings", []) building.setdefault("fittings", [])
world["version"] = 10 world["version"] = 10
if world["version"] < 11:
_migrate_potions(world)
world["version"] = 11
return world return world
def _migrate_potions(world: dict) -> None:
"""Potions from before the tiers become their tiered equivalents, uses and all."""
def renamed(stock: dict) -> None:
for old, new in OLD_POTIONS.items():
if old in stock:
stock[new] = stock.get(new, 0) + stock.pop(old)
renamed(world["city"]["stockpile"])
for player in world["players"].values():
renamed(player["bank"])
for active in player["potions"].values(): # regeneration was combat too, so slots still match
if active["item"] in OLD_POTIONS:
active["item"] = OLD_POTIONS[active["item"]]
action = player["action"]
if action:
for key in ("id", "resume"):
old = (action.get(key) or "").removeprefix("brew_")
if old in OLD_POTIONS:
action[key] = f"brew_{OLD_POTIONS[old]}"
def _sell_useless_stock(world: dict, now: float) -> None: def _sell_useless_stock(world: dict, now: float) -> None:
"""The council sells what the city can't use, into the treasury.""" """The council sells what the city can't use, into the treasury."""
city = world["city"] city = world["city"]
@ -2742,11 +2789,11 @@ def _assign_glyphs() -> None:
ITEMS[f"{prefix}_{suffix}"].update(glyph=glyph, tint=tint) ITEMS[f"{prefix}_{suffix}"].update(glyph=glyph, tint=tint)
for herb, tint in HERB_TINTS.items(): for herb, tint in HERB_TINTS.items():
ITEMS[herb].update(glyph="herbs-bundle", tint=tint) ITEMS[herb].update(glyph="herbs-bundle", tint=tint)
for potion, *_rest, skill, _effect in POTIONS: flasks = ["round-bottom-flask", "round-bottom-flask", "standing-potion", "standing-potion",
if skill == "combat": "bubbling-flask", "bubbling-flask"]
ITEMS[potion].update(glyph="potion-ball", tint="#e05a5a") for potion, *_rest, skill, effect in POTIONS:
else: tint = "#e05a5a" if "power" in effect else "#8fa8c8" if "reduce" in effect else SKILL_GLYPHS[skill][1]
ITEMS[potion].update(glyph="round-bottom-flask", tint=SKILL_GLYPHS[skill][1]) ITEMS[potion].update(glyph=flasks[POTION_TIER[potion]], tint=tint)
for skill in SKILLS: for skill in SKILLS:
skill["glyph"], skill["tint"] = SKILL_GLYPHS[skill["id"]] skill["glyph"], skill["tint"] = SKILL_GLYPHS[skill["id"]]
for key, spec in CLASSES.items(): for key, spec in CLASSES.items():

View file

@ -23,6 +23,7 @@
<symbol id="brick-pile" viewBox="0 0 512 512"><path fill="currentColor" d="m233.986 85.262l-63.37 21.11L334.32 160.9l63.373-21.11l-163.707-54.53zm-82.85 33.593v58.088l174.184 58.02v-58.086l-174.183-58.022zm-18 50.215l-53.71 17.89l162.63 54.175l22.417-7.467l-125.18-41.7a9 9 0 0 1-6.156-8.536zm-73.19 30.375v58.088l122.286 40.733v-30.71a9 9 0 0 1 .018-.357l.01-.192a9 9 0 0 1 .07-.697l.03-.205a9 9 0 0 1 .134-.66l.06-.236a9 9 0 0 1 .19-.616l.092-.248a9 9 0 0 1 .238-.567a9 9 0 0 1 .135-.282a9 9 0 0 1 .265-.488a9 9 0 0 1 .197-.32a9 9 0 0 1 .28-.41a9 9 0 0 1 .26-.342a9 9 0 0 1 .288-.344a9 9 0 0 1 .318-.342a9 9 0 0 1 .3-.29a9 9 0 0 1 .374-.33a9 9 0 0 1 .3-.237a9 9 0 0 1 .438-.315a9 9 0 0 1 .286-.182a9 9 0 0 1 .502-.29a9 9 0 0 1 .26-.133a9 9 0 0 1 .59-.262l.21-.082a9 9 0 0 1 .317-.122l25.18-8.387zm364.847 27.352l-87.63 29.19l-.247.07a9 9 0 0 1-.355.1a9 9 0 0 1-.443.1a9 9 0 0 1-.47.085a9 9 0 0 1-.4.05a9 9 0 0 1-.49.038a9 9 0 0 1-.423.007a9 9 0 0 1-.48-.01a9 9 0 0 1-.397-.03a9 9 0 0 1-.504-.06a9 9 0 0 1-.38-.07a9 9 0 0 1-.52-.117a9 9 0 0 1-.31-.087a9 9 0 0 1-.268-.077l-38.526-12.834l-73.23 24.395l63.368 21.11l163.707-54.532zm-224.56 53.242v58.085l73.85 24.602v-36.225l.005.002V304.63l-2.752-.915l-.014.004l-71.09-23.68zm-85.174 14.82L58.57 313.68l63.373 21.11l56.485-18.817l-63.37-21.11zM39.095 326.17v58.088l73.85 24.6V350.77zm390.207 9.816l-63.375 21.112l36.283 12.086l63.374-21.112l-36.28-12.086zM219.03 363.36v21.86l174.183 58.022v-58.088L337.45 366.58l-51.516 17.162l-.19.053a9 9 0 0 1-.467.133a9 9 0 0 1-.332.074a9 9 0 0 1-.588.107l-.253.03a9 9 0 0 1-.674.053l-.196.004a9 9 0 0 1-.693-.013l-.206-.016a9 9 0 0 1-.723-.09l-.122-.02a9 9 0 0 1-.795-.18l-.025-.007a9 9 0 0 1-.432-.122l-61.207-20.39z"/></symbol> <symbol id="brick-pile" viewBox="0 0 512 512"><path fill="currentColor" d="m233.986 85.262l-63.37 21.11L334.32 160.9l63.373-21.11l-163.707-54.53zm-82.85 33.593v58.088l174.184 58.02v-58.086l-174.183-58.022zm-18 50.215l-53.71 17.89l162.63 54.175l22.417-7.467l-125.18-41.7a9 9 0 0 1-6.156-8.536zm-73.19 30.375v58.088l122.286 40.733v-30.71a9 9 0 0 1 .018-.357l.01-.192a9 9 0 0 1 .07-.697l.03-.205a9 9 0 0 1 .134-.66l.06-.236a9 9 0 0 1 .19-.616l.092-.248a9 9 0 0 1 .238-.567a9 9 0 0 1 .135-.282a9 9 0 0 1 .265-.488a9 9 0 0 1 .197-.32a9 9 0 0 1 .28-.41a9 9 0 0 1 .26-.342a9 9 0 0 1 .288-.344a9 9 0 0 1 .318-.342a9 9 0 0 1 .3-.29a9 9 0 0 1 .374-.33a9 9 0 0 1 .3-.237a9 9 0 0 1 .438-.315a9 9 0 0 1 .286-.182a9 9 0 0 1 .502-.29a9 9 0 0 1 .26-.133a9 9 0 0 1 .59-.262l.21-.082a9 9 0 0 1 .317-.122l25.18-8.387zm364.847 27.352l-87.63 29.19l-.247.07a9 9 0 0 1-.355.1a9 9 0 0 1-.443.1a9 9 0 0 1-.47.085a9 9 0 0 1-.4.05a9 9 0 0 1-.49.038a9 9 0 0 1-.423.007a9 9 0 0 1-.48-.01a9 9 0 0 1-.397-.03a9 9 0 0 1-.504-.06a9 9 0 0 1-.38-.07a9 9 0 0 1-.52-.117a9 9 0 0 1-.31-.087a9 9 0 0 1-.268-.077l-38.526-12.834l-73.23 24.395l63.368 21.11l163.707-54.532zm-224.56 53.242v58.085l73.85 24.602v-36.225l.005.002V304.63l-2.752-.915l-.014.004l-71.09-23.68zm-85.174 14.82L58.57 313.68l63.373 21.11l56.485-18.817l-63.37-21.11zM39.095 326.17v58.088l73.85 24.6V350.77zm390.207 9.816l-63.375 21.112l36.283 12.086l63.374-21.112l-36.28-12.086zM219.03 363.36v21.86l174.183 58.022v-58.088L337.45 366.58l-51.516 17.162l-.19.053a9 9 0 0 1-.467.133a9 9 0 0 1-.332.074a9 9 0 0 1-.588.107l-.253.03a9 9 0 0 1-.674.053l-.196.004a9 9 0 0 1-.693-.013l-.206-.016a9 9 0 0 1-.723-.09l-.122-.02a9 9 0 0 1-.795-.18l-.025-.007a9 9 0 0 1-.432-.122l-61.207-20.39z"/></symbol>
<symbol id="brick-wall" viewBox="0 0 512 512"><path fill="currentColor" d="m494 18.02l-101 .103V119h101zm-119 .12l-238 .247V119h238zm-256 .266L18 18.51V119h101zM18 137v110h229V137zm247 0v110h229V137zM18 265v110h101V265zm119 0v110h238V265zm256 0v110h101V265zM18 393v100.98l229-.236V393zm247 0v100.727l229-.237V393z"/></symbol> <symbol id="brick-wall" viewBox="0 0 512 512"><path fill="currentColor" d="m494 18.02l-101 .103V119h101zm-119 .12l-238 .247V119h238zm-256 .266L18 18.51V119h101zM18 137v110h229V137zm247 0v110h229V137zM18 265v110h101V265zm119 0v110h238V265zm256 0v110h101V265zM18 393v100.98l229-.236V393zm247 0v100.727l229-.237V393z"/></symbol>
<symbol id="broken-bone" viewBox="0 0 512 512"><path fill="currentColor" d="m301.486 20.37l-33.19 134.755l15.306 49.895l43.55-103.81zM161.324 43.46l2.03 110.69l90.68 36.516zm180.358 126.73l-29.532 40.572l85.268-39.008l-55.736-1.563zm-99.346 39.134c-59.628 41.982-124.36 74.982-199.207 81.297c-13.185 1.113-21.704 8.3-26.302 15.185c-13.788 20.652 8.285 51.02 54.332 33.37c-55.518 33.324-8.274 81.184 25.113 43.495c34.24-38.648 74.95-74.53 117.74-91.58l12.696-28.235l-32.81 6.272l48.436-59.803zm59.62 21.973l120.356 61.736l-8.443-53.13zm-19.214 25.398l5.78 34.688l-40.055-13.627c70.405 49.457 118.18 111.73 161.883 190.79c22.65 40.976 71.903 6.46 34.275-34.278c41.4 33.974 78.094-24.99 40.883-40.883c-63.653-27.187-118.033-62.682-150.73-109.434h-.003l-52.033-27.255zm-53.697 46.844v.003l.002-.004zm0 .003l-60.248 79.27l46.773-10.303zm18.963.934l18.996 118.392l36.414-19.62z"/></symbol> <symbol id="broken-bone" viewBox="0 0 512 512"><path fill="currentColor" d="m301.486 20.37l-33.19 134.755l15.306 49.895l43.55-103.81zM161.324 43.46l2.03 110.69l90.68 36.516zm180.358 126.73l-29.532 40.572l85.268-39.008l-55.736-1.563zm-99.346 39.134c-59.628 41.982-124.36 74.982-199.207 81.297c-13.185 1.113-21.704 8.3-26.302 15.185c-13.788 20.652 8.285 51.02 54.332 33.37c-55.518 33.324-8.274 81.184 25.113 43.495c34.24-38.648 74.95-74.53 117.74-91.58l12.696-28.235l-32.81 6.272l48.436-59.803zm59.62 21.973l120.356 61.736l-8.443-53.13zm-19.214 25.398l5.78 34.688l-40.055-13.627c70.405 49.457 118.18 111.73 161.883 190.79c22.65 40.976 71.903 6.46 34.275-34.278c41.4 33.974 78.094-24.99 40.883-40.883c-63.653-27.187-118.033-62.682-150.73-109.434h-.003l-52.033-27.255zm-53.697 46.844v.003l.002-.004zm0 .003l-60.248 79.27l46.773-10.303zm18.963.934l18.996 118.392l36.414-19.62z"/></symbol>
<symbol id="bubbling-flask" viewBox="0 0 512 512"><path fill="currentColor" d="M186.22 21.25c1.304 7.696 2.775 14.91 4.436 21.625h-24.999l10.53 14.78s13.66 19.322 21.75 43.814c4.047 12.245 6.576 25.603 5.595 38c-.98 12.394-5.132 23.72-15.093 33.718c-20.252 20.325-47.89 40.234-70.968 64.406c-23.08 24.17-41.844 53.534-41.845 91.656c0 2.038.002 39.462-.03 76.813c-.018 18.675-.04 37.337-.064 51.593c-.01 7.13-.017 13.167-.03 17.53c-.013 4.366-.07 7.62-.063 7.345l-.28 9.564l9.562.062l312.53 2.28l9.75.064l-.344-9.75c.007.21-.043-3.14-.062-7.594s-.046-10.56-.063-17.78c-.033-14.443-.068-33.324-.092-52.188c-.05-37.73-.063-75.526-.063-77.938c0-38.97-19.523-68.73-43.53-93.03c-24.01-24.302-52.733-44.122-73.75-64.407c-9.965-9.617-13.824-20.463-14.408-32.563s2.526-25.324 7.188-37.5c9.003-23.515 23.025-42.038 24-43.313l15.53-15.562h-32.53c1.647-6.712 3.142-13.924 4.438-21.625zM217 99.78c14.52 15.522 31.15 15.58 45.656.064c-4.346 12.522-7.3 26.29-6.625 40.312c.764 15.827 6.586 32.085 20.064 45.094v.03c22.692 21.903 51.186 41.51 73.47 64.064c22.28 22.555 38.123 47.073 38.123 79.906c0 2.55.014 40.232.063 77.97c.024 18.867.06 37.73.094 52.186c.016 6.595.045 11.937.062 16.28l-293.719-2.155c.013-4.24.02-9.396.032-15.842c.023-14.266.044-32.948.06-51.625c.035-37.356.032-74.663.032-76.813c0-32.095 15.238-56.318 36.657-78.75c21.417-22.432 48.81-42.17 70.686-64.125c13.238-13.287 19.274-29.548 20.53-45.438c1.135-14.317-1.343-28.396-5.186-41.156zm34.47 98.782c-17.31 0-31.532 14.224-31.532 31.532c0 17.307 14.223 31.53 31.53 31.53S283 247.401 283 230.094s-14.224-31.53-31.53-31.53zm0 18.688c7.206 0 12.843 5.636 12.843 12.844s-5.637 12.844-12.844 12.844c-7.21 0-12.845-5.637-12.845-12.844c0-7.208 5.636-12.844 12.844-12.844zM131.5 277.625c-10.615 14.95-18.094 31.583-18.094 52c0 5.323-.142 119.566-.344 124.72l256.094 3.81c-.304-6.364-.53-121.892-.53-128.53c0-20.39-7.51-37.15-18.126-52h-37a37.8 37.8 0 0 1 5.03 18.844c0 20.968-17.215 38.186-38.186 38.186c-20.97 0-38.156-17.217-38.156-38.187a37.84 37.84 0 0 1 5.03-18.845H131.5zm144 0c-8.475 2.115-14.625 9.648-14.625 18.844c0 10.87 8.597 19.5 19.47 19.5c10.87 0 19.5-8.632 19.5-19.5c0-9.197-6.175-16.73-14.658-18.845zM211.344 319.5c18.92 0 34.437 15.518 34.437 34.438c0 18.918-15.516 34.468-34.436 34.468s-34.47-15.55-34.47-34.47c0-18.918 15.55-34.436 34.47-34.436zm0 18.688c-8.82 0-15.78 6.93-15.78 15.75s6.96 15.78 15.78 15.78s15.75-6.96 15.75-15.78s-6.93-15.75-15.75-15.75m92.97 10.125c25.53 0 46.436 20.905 46.436 46.437c0 25.53-20.905 46.438-46.438 46.438c-25.532 0-46.437-20.906-46.437-46.438s20.905-46.438 46.438-46.438zM304.31 367c-15.433 0-27.75 12.317-27.75 27.75s12.317 27.75 27.75 27.75s27.75-12.32 27.75-27.75c0-15.433-12.316-27.75-27.75-27.75"/></symbol>
<symbol id="candle-holder" viewBox="0 0 512 512"><path fill="currentColor" d="M290.75 14.625c-14.073 0-47.344 43.993-47.344 79.97c0 26.674 11.15 44.41 38.375 46.81c3.648-21.18 3.137-42.01-3-62.874l17.908-5.28c6.65 22.616 7.458 45.273 4.093 67.625c27.623-3.88 37.283-20.537 37.283-46.28c0-35.977-33.655-79.97-47.313-79.97zm-45.188 140.063v11.843l-.187-3.905c.774 26.386-17.415 28.686-17.125 48.156c.227 15.365 12.172 20.084 17.313 12.69v145.75h97.156v-83.5c6.51 7.5 19.83 1.552 20.092-16.22c.31-20.772-16.87-25.295-20.093-48.22v-66.593c-32.392 10.276-65.8 9.795-97.158 0zM113.625 285.344c-19.435.005-37.23 10.322-48.094 26.125c-14.485 21.068-17.477 52.02-.81 81.405c7.814 13.78 4.407 25.93-2.126 32.28c-6.533 6.352-15.494 8.594-27.563-2.53l-12.655 13.72c17.56 16.183 40.3 14.805 53.25 2.217s16.81-34.69 5.344-54.906c-13.474-23.753-10.43-46.47-.032-61.594s27.313-22.524 45.968-15.593c23.738 8.82 34.46 29.795 32.813 48.124c-1.355 15.062-9.978 28.618-30.095 33.437h-25.688c3.313 6.736 7.145 13.262 11.407 19.533l.03 1c.213-.006.415-.025.626-.032c10.88 15.772 24.687 29.972 41.063 42.158H443c23.286-17.327 41.907-38.453 53.75-62.657H164.28c8.205-9.01 13.02-20.162 14.064-31.78c2.414-26.863-13.754-55.694-44.938-67.28c-6.646-2.47-13.303-3.628-19.78-3.626z"/></symbol> <symbol id="candle-holder" viewBox="0 0 512 512"><path fill="currentColor" d="M290.75 14.625c-14.073 0-47.344 43.993-47.344 79.97c0 26.674 11.15 44.41 38.375 46.81c3.648-21.18 3.137-42.01-3-62.874l17.908-5.28c6.65 22.616 7.458 45.273 4.093 67.625c27.623-3.88 37.283-20.537 37.283-46.28c0-35.977-33.655-79.97-47.313-79.97zm-45.188 140.063v11.843l-.187-3.905c.774 26.386-17.415 28.686-17.125 48.156c.227 15.365 12.172 20.084 17.313 12.69v145.75h97.156v-83.5c6.51 7.5 19.83 1.552 20.092-16.22c.31-20.772-16.87-25.295-20.093-48.22v-66.593c-32.392 10.276-65.8 9.795-97.158 0zM113.625 285.344c-19.435.005-37.23 10.322-48.094 26.125c-14.485 21.068-17.477 52.02-.81 81.405c7.814 13.78 4.407 25.93-2.126 32.28c-6.533 6.352-15.494 8.594-27.563-2.53l-12.655 13.72c17.56 16.183 40.3 14.805 53.25 2.217s16.81-34.69 5.344-54.906c-13.474-23.753-10.43-46.47-.032-61.594s27.313-22.524 45.968-15.593c23.738 8.82 34.46 29.795 32.813 48.124c-1.355 15.062-9.978 28.618-30.095 33.437h-25.688c3.313 6.736 7.145 13.262 11.407 19.533l.03 1c.213-.006.415-.025.626-.032c10.88 15.772 24.687 29.972 41.063 42.158H443c23.286-17.327 41.907-38.453 53.75-62.657H164.28c8.205-9.01 13.02-20.162 14.064-31.78c2.414-26.863-13.754-55.694-44.938-67.28c-6.646-2.47-13.303-3.628-19.78-3.626z"/></symbol>
<symbol id="carrot" viewBox="0 0 512 512"><path fill="currentColor" d="M228.063 16.72a9 9 0 0 0-2.47.5c-16.076 5.625-27.55 10.77-36.155 21.81c-6.477 8.313-10.984 18.854-16.063 34.407c-11.313-12.292-26.732-22.486-43.875-30.812c-23.817-11.568-51.083-19.46-76.156-22.78a9 9 0 0 0-6.282 16.343c21.685 14.934 40.525 29.268 53.407 43.687c9.964 11.155 16.21 22.01 18.436 33.53c-32.89-3.705-62.75 3.47-99.406 23.25a9 9 0 0 0 5.125 16.907c34.352-3.265 69.484-3.808 96.563.625c13.54 2.217 25.007 5.723 33.218 10.25c3.168 1.747 5.82 3.57 8 5.532c5.365-8.13 12.033-15.638 19.438-22.22c13.09-11.637 28.792-20.638 45.03-24.094c-11.326-18.24-14.138-30.23-12.843-41.5c1.588-13.813 10.567-28.893 22.564-52.344a9 9 0 0 0-8.53-13.093zm13.906 123.436c-.527-.003-1.062.016-1.595.03c-14.925.428-32.515 8.518-46.594 21.033c-16.088 14.3-26.977 33.817-26.78 50c.39 32.175 18.688 67.77 47.344 102.124c28.655 34.354 67.3 67.31 106.375 94.72c39.073 27.406 78.66 49.316 108.78 61.936c15.06 6.31 27.857 10.275 36.313 11.5c3.958.574 6.797.448 8.187.188c.065-.798.153-1.837.063-3.22c-.205-3.113-.814-7.504-1.844-12.75c-2.06-10.49-5.772-24.554-10.97-40.812c-10.397-32.516-26.75-73.9-47.688-114.937c-13.56-26.58-29.085-53.016-46.093-76.814c-14.193 17.317-12.034 17.985-49.72 36.72l-7.125-14.313c39.43-19.6 30.222-15.247 47.063-35.594c-6.235-8.066-12.65-15.74-19.22-22.907a286 286 0 0 0-9.937-10.344c-24.116 33.382-44.493 41.374-76.436 55.124l-7.125-16.53c32.963-14.19 47.585-18.322 70.218-50.814c-21.94-18.66-45.057-30.964-68.594-34.03a37 37 0 0 0-4.625-.314z"/></symbol> <symbol id="carrot" viewBox="0 0 512 512"><path fill="currentColor" d="M228.063 16.72a9 9 0 0 0-2.47.5c-16.076 5.625-27.55 10.77-36.155 21.81c-6.477 8.313-10.984 18.854-16.063 34.407c-11.313-12.292-26.732-22.486-43.875-30.812c-23.817-11.568-51.083-19.46-76.156-22.78a9 9 0 0 0-6.282 16.343c21.685 14.934 40.525 29.268 53.407 43.687c9.964 11.155 16.21 22.01 18.436 33.53c-32.89-3.705-62.75 3.47-99.406 23.25a9 9 0 0 0 5.125 16.907c34.352-3.265 69.484-3.808 96.563.625c13.54 2.217 25.007 5.723 33.218 10.25c3.168 1.747 5.82 3.57 8 5.532c5.365-8.13 12.033-15.638 19.438-22.22c13.09-11.637 28.792-20.638 45.03-24.094c-11.326-18.24-14.138-30.23-12.843-41.5c1.588-13.813 10.567-28.893 22.564-52.344a9 9 0 0 0-8.53-13.093zm13.906 123.436c-.527-.003-1.062.016-1.595.03c-14.925.428-32.515 8.518-46.594 21.033c-16.088 14.3-26.977 33.817-26.78 50c.39 32.175 18.688 67.77 47.344 102.124c28.655 34.354 67.3 67.31 106.375 94.72c39.073 27.406 78.66 49.316 108.78 61.936c15.06 6.31 27.857 10.275 36.313 11.5c3.958.574 6.797.448 8.187.188c.065-.798.153-1.837.063-3.22c-.205-3.113-.814-7.504-1.844-12.75c-2.06-10.49-5.772-24.554-10.97-40.812c-10.397-32.516-26.75-73.9-47.688-114.937c-13.56-26.58-29.085-53.016-46.093-76.814c-14.193 17.317-12.034 17.985-49.72 36.72l-7.125-14.313c39.43-19.6 30.222-15.247 47.063-35.594c-6.235-8.066-12.65-15.74-19.22-22.907a286 286 0 0 0-9.937-10.344c-24.116 33.382-44.493 41.374-76.436 55.124l-7.125-16.53c32.963-14.19 47.585-18.322 70.218-50.814c-21.94-18.66-45.057-30.964-68.594-34.03a37 37 0 0 0-4.625-.314z"/></symbol>
<symbol id="castle" viewBox="0 0 512 512"><path fill="currentColor" d="M254.25 15.344c-132.537 0-240.188 107.62-240.188 240.156c0 132.537 107.65 240.188 240.188 240.188S494.406 388.038 494.406 255.5S386.786 15.344 254.25 15.344m0 18.687c122.436 0 221.47 99.034 221.47 221.47c0 65.65-28.465 124.583-73.75 165.125V238.75l14-22.78h-7.595L364 101.5l-43.813 114.47h-8.156l14.595 22.78v33.875h-36.813v-88.188l14.625-22.78h-7.593l-44.406-114.47l-44.375 114.47h-7.594l14.03 22.78v123.22h-37.375v-18.094l14.594-22.782h-8.19l-43.78-114.467L95.344 266.78H87.75l14.03 22.783V416.25C59.25 375.9 32.75 318.83 32.75 255.5c0-122.436 99.064-221.47 221.5-221.47zm1.094 160.532h18.687v36.344h-18.686v-36.344zm110.156 87.97h18.688v36.312H365.5V282.53zm-246.656 22.03h18.687v36.344h-18.686v-36.344zm50.875 29.407h18.686v36.342H169.72V333.97zm170.81 30.5h18.69v36.342h-18.69z"/></symbol> <symbol id="castle" viewBox="0 0 512 512"><path fill="currentColor" d="M254.25 15.344c-132.537 0-240.188 107.62-240.188 240.156c0 132.537 107.65 240.188 240.188 240.188S494.406 388.038 494.406 255.5S386.786 15.344 254.25 15.344m0 18.687c122.436 0 221.47 99.034 221.47 221.47c0 65.65-28.465 124.583-73.75 165.125V238.75l14-22.78h-7.595L364 101.5l-43.813 114.47h-8.156l14.595 22.78v33.875h-36.813v-88.188l14.625-22.78h-7.593l-44.406-114.47l-44.375 114.47h-7.594l14.03 22.78v123.22h-37.375v-18.094l14.594-22.782h-8.19l-43.78-114.467L95.344 266.78H87.75l14.03 22.783V416.25C59.25 375.9 32.75 318.83 32.75 255.5c0-122.436 99.064-221.47 221.5-221.47zm1.094 160.532h18.687v36.344h-18.686v-36.344zm110.156 87.97h18.688v36.312H365.5V282.53zm-246.656 22.03h18.687v36.344h-18.686v-36.344zm50.875 29.407h18.686v36.342H169.72V333.97zm170.81 30.5h18.69v36.342h-18.69z"/></symbol>
@ -72,7 +73,6 @@
<symbol id="palisade" viewBox="0 0 512 512"><path fill="currentColor" d="m112 144.836l-9 48V279h18v-86.164zm36 0l-9 48V279h18v-86.164zm216 0l-9 48V279h18v-86.164zm36 0l-9 48V279h18v-86.164zm-360 64l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm108 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm108 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zM18 297v16h138.96v-16zm156.96 0v16h162.005v-16zm180.005 0v16H494v-16zM31 331v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331z"/></symbol> <symbol id="palisade" viewBox="0 0 512 512"><path fill="currentColor" d="m112 144.836l-9 48V279h18v-86.164zm36 0l-9 48V279h18v-86.164zm216 0l-9 48V279h18v-86.164zm36 0l-9 48V279h18v-86.164zm-360 64l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm108 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zm108 0l-9 48V279h18v-22.164zm36 0l-9 48V279h18v-22.164zM18 297v16h138.96v-16zm156.96 0v16h162.005v-16zm180.005 0v16H494v-16zM31 331v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331zm36 0v156h18V331z"/></symbol>
<symbol id="planks" viewBox="0 0 512 512"><path fill="currentColor" d="M360.602 74.52L63.272 349.44h54.5l42.94-37.573l2.683 37.572h13.468l113.14-123.354c.983-12.407 6.178-21.43 13.087-26.443c6.91-5.017 13.84-6.686 19.08-8.633l62.687-68.35l13.266 12.168l-65.516 71.434l-1.826.76c-7.4 3.094-13.675 4.69-17.116 7.19c-3.44 2.497-5.765 5.124-5.875 15.702l-.036 3.447l-106.467 116.08h33.736L471.098 74.52h-72.37l.637.644l-193.668 191.188c-1.248 8.702-6.653 15.696-12.613 20.435c-6.888 5.477-14.79 9.182-21.656 12.89l-8.555-15.835c7.352-3.972 14.477-7.54 19.008-11.143c4.532-3.603 6.167-6.01 6.102-10.253l-.058-3.843L374.394 74.52zm99.843 40.25L243.357 367.58H225.13l-47.71 49.975l-13.02-12.43l35.846-37.545h-53.742l-1.287-18.05l-20.63 18.05h-18.04l-73.12 69.89h29.778c12.26-14.002 18.418-24.828 27.223-34.67c9.07-10.14 21.11-18.166 41.988-23.89l4.76 17.36c-18.702 5.126-26.09 10.433-33.332 18.53c-5.058 5.653-10.032 13.24-17.342 22.67H210.28l271.43-322.7zM129.97 403.682a9 9 0 0 1 8.202 13.287c-1.728 3.296-3.94 7.49-8.033 11.182c-4.094 3.692-10.005 6.357-17.07 7.06a9 9 0 1 1-1.78-17.913c4.02-.4 5.47-1.32 6.792-2.513c1.32-1.192 2.576-3.18 4.147-6.176a9 9 0 0 1 7.74-4.928z"/></symbol> <symbol id="planks" viewBox="0 0 512 512"><path fill="currentColor" d="M360.602 74.52L63.272 349.44h54.5l42.94-37.573l2.683 37.572h13.468l113.14-123.354c.983-12.407 6.178-21.43 13.087-26.443c6.91-5.017 13.84-6.686 19.08-8.633l62.687-68.35l13.266 12.168l-65.516 71.434l-1.826.76c-7.4 3.094-13.675 4.69-17.116 7.19c-3.44 2.497-5.765 5.124-5.875 15.702l-.036 3.447l-106.467 116.08h33.736L471.098 74.52h-72.37l.637.644l-193.668 191.188c-1.248 8.702-6.653 15.696-12.613 20.435c-6.888 5.477-14.79 9.182-21.656 12.89l-8.555-15.835c7.352-3.972 14.477-7.54 19.008-11.143c4.532-3.603 6.167-6.01 6.102-10.253l-.058-3.843L374.394 74.52zm99.843 40.25L243.357 367.58H225.13l-47.71 49.975l-13.02-12.43l35.846-37.545h-53.742l-1.287-18.05l-20.63 18.05h-18.04l-73.12 69.89h29.778c12.26-14.002 18.418-24.828 27.223-34.67c9.07-10.14 21.11-18.166 41.988-23.89l4.76 17.36c-18.702 5.126-26.09 10.433-33.332 18.53c-5.058 5.653-10.032 13.24-17.342 22.67H210.28l271.43-322.7zM129.97 403.682a9 9 0 0 1 8.202 13.287c-1.728 3.296-3.94 7.49-8.033 11.182c-4.094 3.692-10.005 6.357-17.07 7.06a9 9 0 1 1-1.78-17.913c4.02-.4 5.47-1.32 6.792-2.513c1.32-1.192 2.576-3.18 4.147-6.176a9 9 0 0 1 7.74-4.928z"/></symbol>
<symbol id="pointy-sword" viewBox="0 0 512 512"><path fill="currentColor" d="M45.95 14.553c-19.38.81-30.594 11.357-30.282 30.283l19.768 30.78c4.43-1.213 9.36-3.838 14.248-7.335l42.474 59.935c-17.018 20.83-31.258 44.44-42.71 70.836l26.55 26.552c11.275-23.6 24.634-44.826 39.918-63.864l210.82 297.475l166.807 33.213L460.33 325.62L162.78 114.745c19.907-16.108 41.842-29.91 65.652-41.578l-26.553-26.55c-27.206 11.803-51.442 26.576-72.735 44.292L69.39 48.56c3.443-4.823 6.062-9.735 7.342-14.242l-30.78-19.765zm400.84 86.933v.008l.003-.008zm0 .008l-28.028 124.97l-25.116-80.593l-18.105 70.667l-26.862-49.64l-.584 57.818l128.484 91.69l15.184 87.017l-1.168-186.885l-34.457 39.713l-9.346-154.756zm-300.95 27.98l222.224 196.368l25.645 66.75l-66.75-25.645L130.6 144.734a309 309 0 0 1 15.238-15.26zm32.305 196.274v.004h.005zm.005.004l28.028 22.775l-36.21 4.088l57.82 19.272l-105.706 4.09l115.05 27.45L136.1 422.114l127.316 25.696l-67.164 43.803l208.494 1.752l-87.017-15.185l-104.54-150.676l-35.037-1.752z"/></symbol> <symbol id="pointy-sword" viewBox="0 0 512 512"><path fill="currentColor" d="M45.95 14.553c-19.38.81-30.594 11.357-30.282 30.283l19.768 30.78c4.43-1.213 9.36-3.838 14.248-7.335l42.474 59.935c-17.018 20.83-31.258 44.44-42.71 70.836l26.55 26.552c11.275-23.6 24.634-44.826 39.918-63.864l210.82 297.475l166.807 33.213L460.33 325.62L162.78 114.745c19.907-16.108 41.842-29.91 65.652-41.578l-26.553-26.55c-27.206 11.803-51.442 26.576-72.735 44.292L69.39 48.56c3.443-4.823 6.062-9.735 7.342-14.242l-30.78-19.765zm400.84 86.933v.008l.003-.008zm0 .008l-28.028 124.97l-25.116-80.593l-18.105 70.667l-26.862-49.64l-.584 57.818l128.484 91.69l15.184 87.017l-1.168-186.885l-34.457 39.713l-9.346-154.756zm-300.95 27.98l222.224 196.368l25.645 66.75l-66.75-25.645L130.6 144.734a309 309 0 0 1 15.238-15.26zm32.305 196.274v.004h.005zm.005.004l28.028 22.775l-36.21 4.088l57.82 19.272l-105.706 4.09l115.05 27.45L136.1 422.114l127.316 25.696l-67.164 43.803l208.494 1.752l-87.017-15.185l-104.54-150.676l-35.037-1.752z"/></symbol>
<symbol id="potion-ball" viewBox="0 0 512 512"><path fill="currentColor" d="M94.055 21.9L18.998 96.96l42.727 23.6l-26.98 26.952L142.35 212.39c-40.443 70.148-30.72 161.07 29.2 220.958c71.605 71.606 187.737 71.587 259.356 0c71.62-71.587 71.642-187.654.037-259.22c-59.915-59.878-150.896-69.57-221.084-29.177L144.95 37.415l-8.44 8.432l-18.588 18.57zm47.224 45.598l62.337 103.275l8.098-5.248c44.21-28.663 99.014-34.044 147.166-16.078q-1.74-.04-3.503-.04c-38.988 0-70.594 14.807-70.594 33.073c0 18.27 31.606 33.075 70.594 33.075c31.53 0 58.225-9.684 67.287-23.05c15.942 17.34 27.492 37.224 34.65 58.253c-7.76-3.387-18.28-6.706-30.902-9.563c-31.383-7.1-75.547-11.615-124.305-11.615c-48.757 0-92.92 4.514-124.304 11.615c-13.71 3.102-24.997 6.75-32.893 10.438a164 164 0 0 1 18.018-37.383l5.263-8.104l-103.33-62.3l13.894-13.88l46.937 25.923l27.914-27.915l-26.18-46.635l13.855-13.842zm-1.087 201.287q.722.42 1.506.84c7.89 4.22 20.41 8.487 36.103 12.037c31.383 7.1 75.547 11.615 124.304 11.615s92.922-4.514 124.305-11.615c15.687-3.55 28.203-7.813 36.094-12.033a164 164 0 0 1 2.746 17.643c-9.432 4.277-21.204 7.893-35.074 11.032c-33.205 7.513-78.27 12.037-128.07 12.037c-49.802 0-94.866-4.524-128.07-12.037c-14.67-3.32-27-7.17-36.69-11.776a165 165 0 0 1 2.845-17.745z"/></symbol>
<symbol id="prayer" viewBox="0 0 512 512"><path fill="currentColor" d="M261.78 18.063c-52.004 0-94.686 45.7-94.686 103.156c0 57.455 42.682 103.155 94.687 103.155c52.007 0 94.72-45.7 94.72-103.156s-42.713-103.157-94.72-103.157zM203 159.655c13.276 3.67 26.394 6.046 39.375 7.22v18.75c-14.674-1.21-29.464-3.85-44.375-7.97zm117.375 0l4.906 18.03c-14.452 3.938-29.08 6.583-43.874 7.845v-18.718c13.085-1.223 26.055-3.638 38.97-7.156zM160.22 175.344c-75.308 50.797-110.604 125.208-116.282 220h.218a25 25 0 0 0-.562 5.28c0 13.808 11.19 25 25 25c.22 0 .436-.025.656-.03v.22l179.438-.002V302.406c-25.58 4.82-45.22 28.49-45.22 62.594v9.344H103.096v-18.688h12.718c3.664-35.178 26.522-77.998 45.343-101.344l14.53 11.72c-15.618 19.373-36.603 61.664-40.905 89.624h50.47c4.04-42.08 35.168-72.875 73.22-72.875c34.98 0 68.653 28.958 73.905 72.876h55.75c-5.412-28.305-26.53-70.32-42.094-89.625l14.564-11.717c18.885 23.424 41.643 66.485 46.562 101.343h10.563v18.688H314.593l-.25-9.094c-1.02-35.656-23.57-58.234-46.97-62.875v123.438H448.03v-.22c.22.006.436.032.658.032c13.81 0 25-11.193 25-25c0-2.092-.266-4.12-.75-6.063c-5.566-92.605-39.022-165.662-111.032-216.218c-19.026 38.355-56.592 64.72-100.125 64.72c-44.662 0-83.047-27.74-101.56-67.72zM140.374 444.5l9.188 47.5h220.562l8.47-47.5z"/></symbol> <symbol id="prayer" viewBox="0 0 512 512"><path fill="currentColor" d="M261.78 18.063c-52.004 0-94.686 45.7-94.686 103.156c0 57.455 42.682 103.155 94.687 103.155c52.007 0 94.72-45.7 94.72-103.156s-42.713-103.157-94.72-103.157zM203 159.655c13.276 3.67 26.394 6.046 39.375 7.22v18.75c-14.674-1.21-29.464-3.85-44.375-7.97zm117.375 0l4.906 18.03c-14.452 3.938-29.08 6.583-43.874 7.845v-18.718c13.085-1.223 26.055-3.638 38.97-7.156zM160.22 175.344c-75.308 50.797-110.604 125.208-116.282 220h.218a25 25 0 0 0-.562 5.28c0 13.808 11.19 25 25 25c.22 0 .436-.025.656-.03v.22l179.438-.002V302.406c-25.58 4.82-45.22 28.49-45.22 62.594v9.344H103.096v-18.688h12.718c3.664-35.178 26.522-77.998 45.343-101.344l14.53 11.72c-15.618 19.373-36.603 61.664-40.905 89.624h50.47c4.04-42.08 35.168-72.875 73.22-72.875c34.98 0 68.653 28.958 73.905 72.876h55.75c-5.412-28.305-26.53-70.32-42.094-89.625l14.564-11.717c18.885 23.424 41.643 66.485 46.562 101.343h10.563v18.688H314.593l-.25-9.094c-1.02-35.656-23.57-58.234-46.97-62.875v123.438H448.03v-.22c.22.006.436.032.658.032c13.81 0 25-11.193 25-25c0-2.092-.266-4.12-.75-6.063c-5.566-92.605-39.022-165.662-111.032-216.218c-19.026 38.355-56.592 64.72-100.125 64.72c-44.662 0-83.047-27.74-101.56-67.72zM140.374 444.5l9.188 47.5h220.562l8.47-47.5z"/></symbol>
<symbol id="rat" viewBox="0 0 512 512"><path fill="currentColor" d="M433.5 31.6c-8.5 0-15.1 6.58-15.1 14.81s6.6 14.81 15.1 14.81s15.1-6.58 15.1-14.81S442 31.6 433.5 31.6M267 59.05c6.6 15.84 17.1 18.03 31.1 24.77c-11.2 20.98-23.2 51.08-43.5 59.28c-64.7 26.1-98.7 58.3-112.3 98.7c-13.1 39-7 87.2 13.3 145.4c61.8 4.9 127.3 9.2 159.4 2.8c-1.3-4.4-5.8-7.5-8.6-9c-28.5-9.8-45.2-10.9-71.5-12l1.1-9.6c2.2-19.6.4-44.3-7.7-61.3c-4.1-8.5-9.5-14.9-16.5-18.8s-15.8-5.7-28.4-3.3l-3.2-17.8c13.5-2.4 29.4-.6 40.4 5.4c10.9 6.1 18.7 15.8 23.9 26.7c9.1 18.9 11.1 41.6 9.9 61.8c10 .6 18.9 1.6 26.8 2.9c19.2-30.7 37-60.4 39.5-90.7c-13.8-4-32.4-10.7-34.3-24.4c-2.7-19.6 3.6-45 19.3-55.5c-1 27.8-4.3 43.9-2.3 49.7c5.8 10.9 30.3 15.2 40.1 17.4v.1c17.4 4.8 31.9 7 34.8 25.6c18.2-29.5-14.4-45-36.2-54.5l-.1-5.8c-.3-23.5 5.5-39.4 13.5-53.1c8-13.6 17.7-25 26.9-43.2v-.1c-9.4-1.3-19.4-.1-27.1 1.3c5.7-19.9 23.2-23.73 38.6-16.1c5.9-8.3 13.4-18.83 24.9-29.96c-12.7-9.39-19.9-20.4-18.1-33.92c-28-3.4-57.4-4.45-78.6 9.84l-4-3.72c-15.7-17.87-60.9-12.3-51.1 11.11m67.9-4.17c4 7.92 14.9 12.95 29.2 13.88c-8 6.49-20.7 11.42-30.3 5.24c-7.3-4.71-3.7-13.07 1.1-19.12M129.4 364.6c-14.6 3.2-38.77 7-49.63 16c-8.5 7.4-15.03 19.8-16.19 31.4c-1.17 11.6 1.99 21.6 12.85 28.8C120 469.7 165 466.4 205.4 454.9c40.4-11.6 75.4-32.6 119.4-22.8c8.4 2.5 15.7 6.5 14.5 15.9c-.4 2.8-1.5 4.8-2.7 6.5c-9.7 10.8-30.9 17.7-33.6 21.5c-6.4 9.2 34.2 2.8 45-7.6c4.2-4.2 8.1-13 8.9-21.3s-1.3-15.3-4.9-18.3c-11.2-9.6-24.1-15.1-39.8-15.1c-15.7-.1-34 1.7-53.5 6.5c-39.1 9.6-83.6 27.5-127.4 18.6c-17-3.4-27.4-6.8-33.77-14.9c-3.22-4-4.39-10.6-2.48-15.4c7.45-15.2 28.15-17.8 40.95-20.5c-2.4-7.2-4.6-16.4-6.6-23.4"/></symbol> <symbol id="rat" viewBox="0 0 512 512"><path fill="currentColor" d="M433.5 31.6c-8.5 0-15.1 6.58-15.1 14.81s6.6 14.81 15.1 14.81s15.1-6.58 15.1-14.81S442 31.6 433.5 31.6M267 59.05c6.6 15.84 17.1 18.03 31.1 24.77c-11.2 20.98-23.2 51.08-43.5 59.28c-64.7 26.1-98.7 58.3-112.3 98.7c-13.1 39-7 87.2 13.3 145.4c61.8 4.9 127.3 9.2 159.4 2.8c-1.3-4.4-5.8-7.5-8.6-9c-28.5-9.8-45.2-10.9-71.5-12l1.1-9.6c2.2-19.6.4-44.3-7.7-61.3c-4.1-8.5-9.5-14.9-16.5-18.8s-15.8-5.7-28.4-3.3l-3.2-17.8c13.5-2.4 29.4-.6 40.4 5.4c10.9 6.1 18.7 15.8 23.9 26.7c9.1 18.9 11.1 41.6 9.9 61.8c10 .6 18.9 1.6 26.8 2.9c19.2-30.7 37-60.4 39.5-90.7c-13.8-4-32.4-10.7-34.3-24.4c-2.7-19.6 3.6-45 19.3-55.5c-1 27.8-4.3 43.9-2.3 49.7c5.8 10.9 30.3 15.2 40.1 17.4v.1c17.4 4.8 31.9 7 34.8 25.6c18.2-29.5-14.4-45-36.2-54.5l-.1-5.8c-.3-23.5 5.5-39.4 13.5-53.1c8-13.6 17.7-25 26.9-43.2v-.1c-9.4-1.3-19.4-.1-27.1 1.3c5.7-19.9 23.2-23.73 38.6-16.1c5.9-8.3 13.4-18.83 24.9-29.96c-12.7-9.39-19.9-20.4-18.1-33.92c-28-3.4-57.4-4.45-78.6 9.84l-4-3.72c-15.7-17.87-60.9-12.3-51.1 11.11m67.9-4.17c4 7.92 14.9 12.95 29.2 13.88c-8 6.49-20.7 11.42-30.3 5.24c-7.3-4.71-3.7-13.07 1.1-19.12M129.4 364.6c-14.6 3.2-38.77 7-49.63 16c-8.5 7.4-15.03 19.8-16.19 31.4c-1.17 11.6 1.99 21.6 12.85 28.8C120 469.7 165 466.4 205.4 454.9c40.4-11.6 75.4-32.6 119.4-22.8c8.4 2.5 15.7 6.5 14.5 15.9c-.4 2.8-1.5 4.8-2.7 6.5c-9.7 10.8-30.9 17.7-33.6 21.5c-6.4 9.2 34.2 2.8 45-7.6c4.2-4.2 8.1-13 8.9-21.3s-1.3-15.3-4.9-18.3c-11.2-9.6-24.1-15.1-39.8-15.1c-15.7-.1-34 1.7-53.5 6.5c-39.1 9.6-83.6 27.5-127.4 18.6c-17-3.4-27.4-6.8-33.77-14.9c-3.22-4-4.39-10.6-2.48-15.4c7.45-15.2 28.15-17.8 40.95-20.5c-2.4-7.2-4.6-16.4-6.6-23.4"/></symbol>
<symbol id="rolled-cloth" viewBox="0 0 512 512"><path fill="currentColor" d="M165.446 34.793c-23.17.023-45.634 12.97-54.612 36.323l-83.67 326.167c-12.673 94.537 81.04 88.742 137.957 65.396c81.422-33.396 181.723-29.213 263.244-8.26l6.45-17.218c-7.38-2.638-15.334-5.988-22.252-8.039c.473-4.364.955-8.72 1.437-13.074l23.038 4.118l3.234-18.1l-24.221-4.328a4817 4817 0 0 1 1.87-16.189l22.134 3.278l2.693-18.186q-11.323-1.68-22.647-3.355c.456-3.765.91-7.53 1.375-11.29q11.423 1.638 22.847 3.273l2.607-18.2l-23.164-3.316c.46-3.593 1.29-9.988 1.76-13.577l22.781 2.55l2.045-17.57a56813 56813 0 0 1-22.402-2.508c.783-5.767 1.917-11.182 2.728-16.943q11.505 1.681 23.012 3.368l2.31-17.139q-11.524-1.69-23.05-3.374c.792-5.415 1.252-10.129 2.071-15.542q10.611 1.897 21.223 3.79l3.232-18.1l-21.654-3.866c.736-4.676 1.473-9.35 2.23-14.026q10.467 2.51 20.932 5.022L465.276 208l-22.204-5.33a2809 2809 0 0 1 2.132-12.477q10.47 2.375 20.942 4.746l4.064-17.93q-10.907-2.475-21.815-4.946q1.154-6.4 2.342-12.805l20.742 5.151l4.431-17.843l-21.751-5.405q1.113-5.77 2.254-11.548l20.28 5.014l4.413-17.849l-21.057-5.207a2445 2445 0 0 1 2.571-12.374c8.386 2.41 13.13 2.364 21.41 4.99L486 88.456c-83.808-26.776-179.25-33.22-244.192-6.453c-24.337 114.036-37.305 221.4-68.032 338.64c-3.407 13-14.47 21.89-27.342 28.064c-27 11.608-64.033 13.778-84.63-4.91c-10.971-10.34-16.174-27.036-12.467-47.579c2.303-12.762 10.883-21.986 20.834-26.378c19.749-7.074 43.492-4.25 58.893 7.95c12.463 9.302 12.318 38.283-3.882 31.82c-9.639-6.17-1.964-11.851-8.615-17.378c-11.6-7.428-26.42-10.872-38.972-5.57c-5.564 2.455-8.887 5.737-10.166 12.822c-2.94 16.29.685 24.996 6.985 30.933c18.333 13.49 45.279 10.495 64.068 1.712c10.045-4.82 16.277-11.436 17.511-16.147c30.538-116.518 43.443-224.123 68.293-339.964c-11.796-28.344-35.67-41.247-58.84-41.225"/></symbol> <symbol id="rolled-cloth" viewBox="0 0 512 512"><path fill="currentColor" d="M165.446 34.793c-23.17.023-45.634 12.97-54.612 36.323l-83.67 326.167c-12.673 94.537 81.04 88.742 137.957 65.396c81.422-33.396 181.723-29.213 263.244-8.26l6.45-17.218c-7.38-2.638-15.334-5.988-22.252-8.039c.473-4.364.955-8.72 1.437-13.074l23.038 4.118l3.234-18.1l-24.221-4.328a4817 4817 0 0 1 1.87-16.189l22.134 3.278l2.693-18.186q-11.323-1.68-22.647-3.355c.456-3.765.91-7.53 1.375-11.29q11.423 1.638 22.847 3.273l2.607-18.2l-23.164-3.316c.46-3.593 1.29-9.988 1.76-13.577l22.781 2.55l2.045-17.57a56813 56813 0 0 1-22.402-2.508c.783-5.767 1.917-11.182 2.728-16.943q11.505 1.681 23.012 3.368l2.31-17.139q-11.524-1.69-23.05-3.374c.792-5.415 1.252-10.129 2.071-15.542q10.611 1.897 21.223 3.79l3.232-18.1l-21.654-3.866c.736-4.676 1.473-9.35 2.23-14.026q10.467 2.51 20.932 5.022L465.276 208l-22.204-5.33a2809 2809 0 0 1 2.132-12.477q10.47 2.375 20.942 4.746l4.064-17.93q-10.907-2.475-21.815-4.946q1.154-6.4 2.342-12.805l20.742 5.151l4.431-17.843l-21.751-5.405q1.113-5.77 2.254-11.548l20.28 5.014l4.413-17.849l-21.057-5.207a2445 2445 0 0 1 2.571-12.374c8.386 2.41 13.13 2.364 21.41 4.99L486 88.456c-83.808-26.776-179.25-33.22-244.192-6.453c-24.337 114.036-37.305 221.4-68.032 338.64c-3.407 13-14.47 21.89-27.342 28.064c-27 11.608-64.033 13.778-84.63-4.91c-10.971-10.34-16.174-27.036-12.467-47.579c2.303-12.762 10.883-21.986 20.834-26.378c19.749-7.074 43.492-4.25 58.893 7.95c12.463 9.302 12.318 38.283-3.882 31.82c-9.639-6.17-1.964-11.851-8.615-17.378c-11.6-7.428-26.42-10.872-38.972-5.57c-5.564 2.455-8.887 5.737-10.166 12.822c-2.94 16.29.685 24.996 6.985 30.933c18.333 13.49 45.279 10.495 64.068 1.712c10.045-4.82 16.277-11.436 17.511-16.147c30.538-116.518 43.443-224.123 68.293-339.964c-11.796-28.344-35.67-41.247-58.84-41.225"/></symbol>
@ -87,6 +87,7 @@
<symbol id="sparkles" viewBox="0 0 512 512"><path fill="currentColor" d="M237.4 20.73c-6.1 42.1-26.8 64.2-63.9 64c31.6 4.5 63.8 8 63.9 64.07c-.6-46.1 24.5-63.07 64.1-64.07c-38-1.5-64.9-16.3-64.1-64m127.8 11.58c-9.1 14.25-20.8 21.29-38.9 10.28c14.9 11.79 18.6 24.76 10.2 38.97c8.9-11.18 17.5-22.73 39-10.27c-17.8-10.06-18.8-23.57-10.3-38.98M59.68 41.69c-2.7 18.8-12 28.6-28.5 28.5c14.1 2 28.4 3.6 28.5 28.52c-.3-20.5 10.9-28.12 28.5-28.52c-16.9-.7-28.9-7.3-28.5-28.5M431 66.28c-2.7 18.8-12 28.6-28.5 28.5c14.1 2 28.4 3.6 28.5 28.52c-.3-20.5 10.9-28.12 28.5-28.52c-16.9-.7-28.9-7.3-28.5-28.5M120.3 116.4c-15.8 53.7-47.76 48-79.35 43.4C76.6 170 90.3 197.1 84.28 239.2c12.66-46 42.62-52.6 79.42-43.4c-37.6-12.1-56.9-35.4-43.4-79.4m187 5c-8.8 61.6-39.3 94-93.6 93.7c46.2 6.5 93.6 11.7 93.6 93.7c-.8-67.3 35.9-92.2 93.8-93.7c-55.5-2.2-94.9-23.9-93.8-93.7m136.8 38.3c-13.1 21.6-29.5 28.8-49.7 20.1c16.3 9.7 33 19.1 20.1 49.6c10.3-25.2 27.9-28.7 49.7-20c-20.3-9.7-31.6-23.9-20.1-49.7M50.7 243.2c9.16 16.7 7.63 30.1-5.61 40c12.46-6.9 24.85-14.3 39.91 5.6c-12.57-16.2-8.2-29 5.61-40c-13.92 9.7-27.47 11.6-39.91-5.6m137.2.3c11.4 26.8-.5 41.3-21.7 50.9c22.7-8.5 40.8-4.5 50.9 21.7c-12.7-31.8 4.8-41.2 21.7-50.9c-21 8.5-37.8.9-50.9-21.7m228 12.6c-26.6 64.7-68.7 91.7-127.8 76.4c48.6 19.8 98.8 38.5 76.4 127.9c17.5-73.7 64.4-90.7 127.9-76.5c-59.9-17.5-96.9-52-76.5-127.8M99.94 295.5c15.66 57.8.86 98.1-47.32 118.5c43.46-11.8 87.38-25.2 118.68 47.4c-26.4-59.3-3.4-95.4 47.3-118.8c-50 19.2-93.1 15-118.66-47.1m169.36 61c-21.8 20.6-43 23.6-63.2 7.3c15.5 16.3 31.6 32.4 7.2 63.3c19.8-25.6 41.2-24.1 63.3-7.3c-20.2-17.4-28.6-37.5-7.3-63.3M443.2 404c-2.7 18.8-12 28.6-28.5 28.5c14.1 2 28.4 3.6 28.5 28.5c-.3-20.5 10.9-28.1 28.5-28.5c-16.9-.7-28.9-7.3-28.5-28.5m-169.7 36c-2.7 18.8-12 28.6-28.5 28.5c14.1 2 28.4 3.6 28.5 28.5c-.3-20.5 10.9-28.1 28.5-28.5c-16.9-.7-28.9-7.3-28.5-28.5"/></symbol> <symbol id="sparkles" viewBox="0 0 512 512"><path fill="currentColor" d="M237.4 20.73c-6.1 42.1-26.8 64.2-63.9 64c31.6 4.5 63.8 8 63.9 64.07c-.6-46.1 24.5-63.07 64.1-64.07c-38-1.5-64.9-16.3-64.1-64m127.8 11.58c-9.1 14.25-20.8 21.29-38.9 10.28c14.9 11.79 18.6 24.76 10.2 38.97c8.9-11.18 17.5-22.73 39-10.27c-17.8-10.06-18.8-23.57-10.3-38.98M59.68 41.69c-2.7 18.8-12 28.6-28.5 28.5c14.1 2 28.4 3.6 28.5 28.52c-.3-20.5 10.9-28.12 28.5-28.52c-16.9-.7-28.9-7.3-28.5-28.5M431 66.28c-2.7 18.8-12 28.6-28.5 28.5c14.1 2 28.4 3.6 28.5 28.52c-.3-20.5 10.9-28.12 28.5-28.52c-16.9-.7-28.9-7.3-28.5-28.5M120.3 116.4c-15.8 53.7-47.76 48-79.35 43.4C76.6 170 90.3 197.1 84.28 239.2c12.66-46 42.62-52.6 79.42-43.4c-37.6-12.1-56.9-35.4-43.4-79.4m187 5c-8.8 61.6-39.3 94-93.6 93.7c46.2 6.5 93.6 11.7 93.6 93.7c-.8-67.3 35.9-92.2 93.8-93.7c-55.5-2.2-94.9-23.9-93.8-93.7m136.8 38.3c-13.1 21.6-29.5 28.8-49.7 20.1c16.3 9.7 33 19.1 20.1 49.6c10.3-25.2 27.9-28.7 49.7-20c-20.3-9.7-31.6-23.9-20.1-49.7M50.7 243.2c9.16 16.7 7.63 30.1-5.61 40c12.46-6.9 24.85-14.3 39.91 5.6c-12.57-16.2-8.2-29 5.61-40c-13.92 9.7-27.47 11.6-39.91-5.6m137.2.3c11.4 26.8-.5 41.3-21.7 50.9c22.7-8.5 40.8-4.5 50.9 21.7c-12.7-31.8 4.8-41.2 21.7-50.9c-21 8.5-37.8.9-50.9-21.7m228 12.6c-26.6 64.7-68.7 91.7-127.8 76.4c48.6 19.8 98.8 38.5 76.4 127.9c17.5-73.7 64.4-90.7 127.9-76.5c-59.9-17.5-96.9-52-76.5-127.8M99.94 295.5c15.66 57.8.86 98.1-47.32 118.5c43.46-11.8 87.38-25.2 118.68 47.4c-26.4-59.3-3.4-95.4 47.3-118.8c-50 19.2-93.1 15-118.66-47.1m169.36 61c-21.8 20.6-43 23.6-63.2 7.3c15.5 16.3 31.6 32.4 7.2 63.3c19.8-25.6 41.2-24.1 63.3-7.3c-20.2-17.4-28.6-37.5-7.3-63.3M443.2 404c-2.7 18.8-12 28.6-28.5 28.5c14.1 2 28.4 3.6 28.5 28.5c-.3-20.5 10.9-28.1 28.5-28.5c-16.9-.7-28.9-7.3-28.5-28.5m-169.7 36c-2.7 18.8-12 28.6-28.5 28.5c14.1 2 28.4 3.6 28.5 28.5c-.3-20.5 10.9-28.1 28.5-28.5c-16.9-.7-28.9-7.3-28.5-28.5"/></symbol>
<symbol id="spears" viewBox="0 0 512 512"><path fill="currentColor" d="m433.877 19.855l-78.62 158.668l47.82 53.934l-15.673 260.824h38.79l15.697-261.233l51.04-45.25l-59.053-166.942zm-130.48 20.598L216.073 152.55l28.397 49.186l-28.616 106.387l-.102-.176l-9.545 35.62l.076.134l-40.234 149.58h32.68l29.676-111.186l.026.045l9.527-35.556l-.054-.09L274.56 209.15l48.415-27.95L303.4 40.452h-.002zM111.632 153.21l14.48 116.54l44.42 11.904L193 320.648l9.555-35.66l-9.256-16.1l12.022-44.87l-93.69-70.81zm-49.357 74.31l-42.68 79.31l23.57 28.455L30.786 493.28h18.746L61.83 336.26l27.608-22.865zh-.002zm257.06 10.878l-22.354 87.248l29.686 21.932L345.04 493.28h18.84l-18.823-149.235l21.293-28.824zm175.103 28.614l-40.108 226.27h18.98l21.128-119.188zm-339.903 38.886l-55.35 71.05l18.618 32.247l-20.41 84.086h19.233l19.51-80.385l30.81-17.788l-12.408-89.21h-.002zm96.623 63.645l-9.517 35.516l50.837 88.22h29.8z"/></symbol> <symbol id="spears" viewBox="0 0 512 512"><path fill="currentColor" d="m433.877 19.855l-78.62 158.668l47.82 53.934l-15.673 260.824h38.79l15.697-261.233l51.04-45.25l-59.053-166.942zm-130.48 20.598L216.073 152.55l28.397 49.186l-28.616 106.387l-.102-.176l-9.545 35.62l.076.134l-40.234 149.58h32.68l29.676-111.186l.026.045l9.527-35.556l-.054-.09L274.56 209.15l48.415-27.95L303.4 40.452h-.002zM111.632 153.21l14.48 116.54l44.42 11.904L193 320.648l9.555-35.66l-9.256-16.1l12.022-44.87l-93.69-70.81zm-49.357 74.31l-42.68 79.31l23.57 28.455L30.786 493.28h18.746L61.83 336.26l27.608-22.865zh-.002zm257.06 10.878l-22.354 87.248l29.686 21.932L345.04 493.28h18.84l-18.823-149.235l21.293-28.824zm175.103 28.614l-40.108 226.27h18.98l21.128-119.188zm-339.903 38.886l-55.35 71.05l18.618 32.247l-20.41 84.086h19.233l19.51-80.385l30.81-17.788l-12.408-89.21h-.002zm96.623 63.645l-9.517 35.516l50.837 88.22h29.8z"/></symbol>
<symbol id="spyglass" viewBox="0 0 512 512"><path fill="currentColor" d="M84.438 20.78c-.414.005-.824.01-1.25.032c-2.273.113-4.742.477-7.376 1.094C65.28 24.373 52.858 31.236 42.094 42C31.33 52.763 24.467 65.186 22 75.72c-2.467 10.532-.738 18.23 3.75 22.718c3.93 3.93 10.33 5.763 18.938 4.5c-1.82-5.496-1.757-11.592-.407-17.282c2.182-9.194 7.5-18.247 15.314-26.062s16.836-13.13 26.03-15.313c2.3-.544 4.695-.876 7.064-.968c3.515-.135 7.022.307 10.312 1.407c1.3-8.664-.52-15.082-4.47-19.032c-3.154-3.156-7.896-4.97-14.093-4.907zm9.937 41.126c-.332-.006-.694.01-1.063.032c-.98.06-2.08.23-3.343.53c-5.057 1.2-11.542 4.728-17.157 10.344c-5.616 5.617-9.145 12.1-10.344 17.157c-1.2 5.054-.25 7.718 1.03 9l.344.343l.312.406l41.344 51.25c4.423-9.226 10.846-18.254 19.03-26.44c8.186-8.183 17.214-14.607 26.44-19.03L99.72 64.156l-.407-.312l-.344-.344c-.84-.84-2.273-1.552-4.595-1.594zm85.22 55.344a31 31 0 0 0-2.376.03c-2.168.115-4.54.465-7.064 1.064c-10.095 2.394-22.042 9.042-32.406 19.406s-17.012 22.31-19.406 32.406s-.727 17.367 3.5 21.594l.344.375l.312.375l3.75 4.625c.046-.207.076-.418.125-.625c3.576-15.268 12.593-30.935 26.125-44.47c13.467-13.468 29.05-22.452 44.25-26.06l-4.25-3.44l-.375-.343l-.375-.343c-2.774-2.775-6.828-4.448-12.156-4.594zm31.186 25.656c-2.895-.01-6.086.374-9.56 1.188c-11.122 2.604-24.185 9.838-35.5 21.156c-11.318 11.318-18.552 24.378-21.157 35.5c-2.117 9.036-1.316 16.178 1.656 21.125l.093.156l48.375 59.94c6.217-18.252 17.894-36.74 34.218-53.064c16.332-16.33 34.835-28.003 53.094-34.22L219.75 144.5c-2.557-1.017-5.562-1.583-8.97-1.594zm99.25 65.344c-.697.007-1.41.027-2.124.063c-3.814.188-7.85.798-12.125 1.812c-17.098 4.056-36.72 15.005-53.686 31.97c-16.965 16.963-27.913 36.586-31.97 53.686c-4.055 17.102-1.384 30.74 6.94 39.064l.342.344l.313.406l.31.406a93 93 0 0 1 1.907-11c5.25-22.406 18.652-45.87 38.907-66.125s43.718-33.658 66.125-38.906c3.702-.87 7.4-1.513 11.06-1.907l-.436-.344l-.406-.314l-.344-.344c-5.853-5.852-14.346-8.918-24.813-8.812zm35.22 27.97c-4.95-.034-10.325.6-16.03 1.936c-18.262 4.278-39.118 15.898-57.158 33.938s-29.66 38.896-33.937 57.156c-3.19 13.618-2.38 25.28 1.97 34.063l55.874 69.28c.46-3.185 1.058-6.378 1.81-9.593c6.32-26.98 22.565-55.408 47.126-79.97c24.56-24.56 52.96-40.773 79.938-47.092c2.055-.482 4.108-.89 6.156-1.25l-67.53-54.5h-.033c-5.132-2.575-11.256-3.924-18.187-3.97zm103.094 75.5c-.947.005-1.907.017-2.875.06c-5.166.236-10.637 1.008-16.345 2.345c-22.832 5.348-48.686 19.78-71.03 42.125c-22.347 22.345-36.778 48.2-42.126 71.03c-5.35 22.833-1.77 41.703 9.905 53.376c7.86 7.862 18.996 12.047 32.406 12.313a47 47 0 0 1-2-1.876c-13.45-13.452-16.224-33.735-11.5-53.906c4.726-20.172 16.757-41.163 34.908-59.313c18.15-18.15 39.172-30.213 59.343-34.938c5.044-1.18 10.086-1.898 15.033-2.093c14.84-.586 28.754 3.505 38.843 13.594a43 43 0 0 1 1.938 2.062c-.245-13.438-4.44-24.595-12.313-32.47c-8.207-8.207-19.98-12.4-34.186-12.31zm8.28 47.717c-.65.005-1.3.032-1.968.063c-3.564.167-7.37.687-11.375 1.625c-16.024 3.754-34.44 14.003-50.374 29.938c-7.822 7.822-14.263 16.238-19.25 24.687a91 91 0 0 1 5.438-5.938c17.012-17.01 38.125-24.96 53.22-21.5c-5.877 2.765-11.803 6.865-17.158 12.22c-16.19 16.19-21.17 37.454-11.125 47.5c7.735 7.733 22.152 6.587 35.75-1.75c-3.07 4.568-6.748 9.03-10.967 13.25c-18.512 18.51-41.876 26.32-57.063 20.343c7.814 6.11 19.617 7.906 34.156 4.5c16.025-3.754 34.44-14.003 50.375-29.938s26.185-34.35 29.94-50.375c3.752-16.024 1.195-28.71-6.5-36.406c-5.413-5.41-13.32-8.293-23.095-8.22z"/></symbol> <symbol id="spyglass" viewBox="0 0 512 512"><path fill="currentColor" d="M84.438 20.78c-.414.005-.824.01-1.25.032c-2.273.113-4.742.477-7.376 1.094C65.28 24.373 52.858 31.236 42.094 42C31.33 52.763 24.467 65.186 22 75.72c-2.467 10.532-.738 18.23 3.75 22.718c3.93 3.93 10.33 5.763 18.938 4.5c-1.82-5.496-1.757-11.592-.407-17.282c2.182-9.194 7.5-18.247 15.314-26.062s16.836-13.13 26.03-15.313c2.3-.544 4.695-.876 7.064-.968c3.515-.135 7.022.307 10.312 1.407c1.3-8.664-.52-15.082-4.47-19.032c-3.154-3.156-7.896-4.97-14.093-4.907zm9.937 41.126c-.332-.006-.694.01-1.063.032c-.98.06-2.08.23-3.343.53c-5.057 1.2-11.542 4.728-17.157 10.344c-5.616 5.617-9.145 12.1-10.344 17.157c-1.2 5.054-.25 7.718 1.03 9l.344.343l.312.406l41.344 51.25c4.423-9.226 10.846-18.254 19.03-26.44c8.186-8.183 17.214-14.607 26.44-19.03L99.72 64.156l-.407-.312l-.344-.344c-.84-.84-2.273-1.552-4.595-1.594zm85.22 55.344a31 31 0 0 0-2.376.03c-2.168.115-4.54.465-7.064 1.064c-10.095 2.394-22.042 9.042-32.406 19.406s-17.012 22.31-19.406 32.406s-.727 17.367 3.5 21.594l.344.375l.312.375l3.75 4.625c.046-.207.076-.418.125-.625c3.576-15.268 12.593-30.935 26.125-44.47c13.467-13.468 29.05-22.452 44.25-26.06l-4.25-3.44l-.375-.343l-.375-.343c-2.774-2.775-6.828-4.448-12.156-4.594zm31.186 25.656c-2.895-.01-6.086.374-9.56 1.188c-11.122 2.604-24.185 9.838-35.5 21.156c-11.318 11.318-18.552 24.378-21.157 35.5c-2.117 9.036-1.316 16.178 1.656 21.125l.093.156l48.375 59.94c6.217-18.252 17.894-36.74 34.218-53.064c16.332-16.33 34.835-28.003 53.094-34.22L219.75 144.5c-2.557-1.017-5.562-1.583-8.97-1.594zm99.25 65.344c-.697.007-1.41.027-2.124.063c-3.814.188-7.85.798-12.125 1.812c-17.098 4.056-36.72 15.005-53.686 31.97c-16.965 16.963-27.913 36.586-31.97 53.686c-4.055 17.102-1.384 30.74 6.94 39.064l.342.344l.313.406l.31.406a93 93 0 0 1 1.907-11c5.25-22.406 18.652-45.87 38.907-66.125s43.718-33.658 66.125-38.906c3.702-.87 7.4-1.513 11.06-1.907l-.436-.344l-.406-.314l-.344-.344c-5.853-5.852-14.346-8.918-24.813-8.812zm35.22 27.97c-4.95-.034-10.325.6-16.03 1.936c-18.262 4.278-39.118 15.898-57.158 33.938s-29.66 38.896-33.937 57.156c-3.19 13.618-2.38 25.28 1.97 34.063l55.874 69.28c.46-3.185 1.058-6.378 1.81-9.593c6.32-26.98 22.565-55.408 47.126-79.97c24.56-24.56 52.96-40.773 79.938-47.092c2.055-.482 4.108-.89 6.156-1.25l-67.53-54.5h-.033c-5.132-2.575-11.256-3.924-18.187-3.97zm103.094 75.5c-.947.005-1.907.017-2.875.06c-5.166.236-10.637 1.008-16.345 2.345c-22.832 5.348-48.686 19.78-71.03 42.125c-22.347 22.345-36.778 48.2-42.126 71.03c-5.35 22.833-1.77 41.703 9.905 53.376c7.86 7.862 18.996 12.047 32.406 12.313a47 47 0 0 1-2-1.876c-13.45-13.452-16.224-33.735-11.5-53.906c4.726-20.172 16.757-41.163 34.908-59.313c18.15-18.15 39.172-30.213 59.343-34.938c5.044-1.18 10.086-1.898 15.033-2.093c14.84-.586 28.754 3.505 38.843 13.594a43 43 0 0 1 1.938 2.062c-.245-13.438-4.44-24.595-12.313-32.47c-8.207-8.207-19.98-12.4-34.186-12.31zm8.28 47.717c-.65.005-1.3.032-1.968.063c-3.564.167-7.37.687-11.375 1.625c-16.024 3.754-34.44 14.003-50.374 29.938c-7.822 7.822-14.263 16.238-19.25 24.687a91 91 0 0 1 5.438-5.938c17.012-17.01 38.125-24.96 53.22-21.5c-5.877 2.765-11.803 6.865-17.158 12.22c-16.19 16.19-21.17 37.454-11.125 47.5c7.735 7.733 22.152 6.587 35.75-1.75c-3.07 4.568-6.748 9.03-10.967 13.25c-18.512 18.51-41.876 26.32-57.063 20.343c7.814 6.11 19.617 7.906 34.156 4.5c16.025-3.754 34.44-14.003 50.375-29.938s26.185-34.35 29.94-50.375c3.752-16.024 1.195-28.71-6.5-36.406c-5.413-5.41-13.32-8.293-23.095-8.22z"/></symbol>
<symbol id="standing-potion" viewBox="0 0 512 512"><path fill="currentColor" d="M257.95 17.127c-19.323.186-39.152 5.737-49.462 16.437l4.494 25.288l-18.836.13l3.756 12.04l12.84 41.165c1.466 31.346-8.624 56.45-23.828 79.997c-18.854 29.198-45.987 55.144-67.662 83.957c-11.56 15.367-15.767 33.277-13.285 50.57c2.48 17.29 11.322 33.89 24.795 48.257c26.945 28.736 72.624 49.044 128.345 48.654c52.815-.366 98.06-21.347 125.3-50.313c13.62-14.484 22.82-31.095 25.603-48.434c2.78-17.34-1.278-35.385-13.15-50.678h.003c-22.132-28.513-49.724-54.076-69.088-83.01c-15.9-23.76-26.513-49.206-25.107-81.374l15.228-51.68l-17.6.12l4.09-25.357c-8.29-10.77-27.11-15.952-46.435-15.766zm34.905 59.863l-6.582 22.336c-22.502 10.67-41.278 9.862-59.775.617l-7-22.447zm-8.765 43.49c1.27 31.477 12.715 58.028 28.152 81.096c7.37 11.013 15.604 21.332 24.076 31.254c-20.758-5.694-49.388-9.355-80.85-9.355c-28.173 0-54.063 2.94-74.077 7.64c7.483-9.18 14.71-18.707 21.223-28.793c14.953-23.156 25.9-49.698 26.768-80.96c17.122 5.656 35.656 5.724 54.71-.882zm75.58 138.756c4.275 4.785 8.483 9.543 12.516 14.285c-7.27 4.73-16.44 8.51-27.293 11.732c-23.45 6.96-54.792 11.053-89.426 11.053s-65.977-4.094-89.426-11.053c-8.803-2.613-16.478-5.602-22.95-9.158c3.992-4.87 8.175-9.76 12.424-14.672c4.372 2.06 9.703 4.094 15.843 5.916c20.964 6.22 50.975 10.28 84.11 10.28c33.136 0 63.146-4.06 84.11-10.28c8.31-2.466 15.157-5.314 20.093-8.102zM102.04 364.234c-50.154 13.628-82.55 33.813-82.55 56.204c0 41.017 106.522 74.35 237.696 74.35s237.697-33.333 237.697-74.35c0-22.31-32.12-42.578-81.965-56.204c17.23 8.88 27.518 19.25 27.518 30.444c0 32.13-82.31 58.545-183.248 58.545c-100.94 0-182.663-26.418-182.663-58.545c0-11.255 10.11-21.535 27.518-30.444z"/></symbol>
<symbol id="star-altar" viewBox="0 0 512 512"><path fill="currentColor" d="m256 25.61l-97.8 36.67L256 86.72l97.8-24.44zM136.1 75.3L105.9 407h300.2L375.9 75.3l-119.9 30zM256 128l30 72.7l78.3 6l-59.8 51L323 334l-67-41.2l-66.9 41.3l18.4-76.5l-59.8-50.9l78.4-6zM70.09 425l-24.8 62H237.3l-49.6-62zm140.61 0l45.3 56.6l45.3-56.6zm113.6 0l-49.6 62h192l-24.8-62z"/></symbol> <symbol id="star-altar" viewBox="0 0 512 512"><path fill="currentColor" d="m256 25.61l-97.8 36.67L256 86.72l97.8-24.44zM136.1 75.3L105.9 407h300.2L375.9 75.3l-119.9 30zM256 128l30 72.7l78.3 6l-59.8 51L323 334l-67-41.2l-66.9 41.3l18.4-76.5l-59.8-50.9l78.4-6zM70.09 425l-24.8 62H237.3l-49.6-62zm140.61 0l45.3 56.6l45.3-56.6zm113.6 0l-49.6 62h192l-24.8-62z"/></symbol>
<symbol id="stone-block" viewBox="0 0 512 512"><path fill="currentColor" d="m209.875 44.156l-182 106.47l119.625 54.31l148.344 11.72l41.97-24.312l17.342 11.562L309 230.656V379.53l53.563-14.624l-64.625 51.97l-110.875-59.626l-2.157-1.53l-71.28 6.56l75.936-31.967l100.75 52.125v-147.5l-145.906-11.5l-1.625-.125l-1.5-.688l-121.093-55V391.47L44 423.186l82 20.97l21.875-21.282l11.156 29.72l131.282 33.592V434l4.25 2.28l5.47 2.94l4.812-3.908L309 431.97v52.155L491.375 377.78v-96.405L466.78 269.47l24.595-38.75V125l-90.25 52.28l-1.094 34.095l-88-58.688l84.97 5.375L476.5 112L291.562 64.937l1.625.563l-64.406 5.78l5.345-20.936l-24.25-6.188z"/></symbol> <symbol id="stone-block" viewBox="0 0 512 512"><path fill="currentColor" d="m209.875 44.156l-182 106.47l119.625 54.31l148.344 11.72l41.97-24.312l17.342 11.562L309 230.656V379.53l53.563-14.624l-64.625 51.97l-110.875-59.626l-2.157-1.53l-71.28 6.56l75.936-31.967l100.75 52.125v-147.5l-145.906-11.5l-1.625-.125l-1.5-.688l-121.093-55V391.47L44 423.186l82 20.97l21.875-21.282l11.156 29.72l131.282 33.592V434l4.25 2.28l5.47 2.94l4.812-3.908L309 431.97v52.155L491.375 377.78v-96.405L466.78 269.47l24.595-38.75V125l-90.25 52.28l-1.094 34.095l-88-58.688l84.97 5.375L476.5 112L291.562 64.937l1.625.563l-64.406 5.78l5.345-20.936l-24.25-6.188z"/></symbol>
<symbol id="stone-stack" viewBox="0 0 512 512"><path fill="currentColor" d="M278.735 112.385c-6.45-.022-13.001.204-19.541.683c-26.16 1.918-52.24 7.912-71.295 17.338c-19.054 9.426-30.102 21.32-31.21 35.473c-.491 6.258 1.674 12.378 6.886 18.9s13.484 13.055 23.86 18.725c20.75 11.34 49.723 19.217 77.925 20.578s55.456-3.89 73.447-16.592c17.992-12.701 28.163-31.942 23.477-64.853c-.647-4.546-3.149-8.605-8.393-12.748c-5.244-4.144-13.144-7.946-22.834-10.828c-14.534-4.324-32.974-6.611-52.322-6.676m-58.385 27.773a15.021 30.242 71.137 0 1 16.541 7.426a15.021 30.242 71.137 0 1-23.646 24.008a15.021 30.242 71.137 0 1-33.557-4.356a15.021 30.242 71.137 0 1 23.647-24.006a15.021 30.242 71.137 0 1 17.015-3.072m41.203 101.729c-37.759-.033-75.243 5.18-102.252 16.006c-13.504 5.412-24.3 12.2-31.423 19.904c-7.123 7.703-10.792 16.021-10.834 26.406c-.027 6.585 2.827 11.537 10.013 16.832c7.187 5.295 18.653 9.967 32.887 13.277c28.467 6.621 67.726 8.057 106.684 5.051c38.957-3.005 77.792-10.437 105.572-20.668c13.89-5.115 24.986-11.006 31.701-16.691c6.715-5.686 8.59-10.002 8.066-14.201c-.602-4.834-4.196-10.34-12.113-16.06s-19.702-11.174-33.931-15.651c-28.459-8.955-66.61-14.172-104.37-14.205m-76.722 28a15.623 30.966 72.083 0 1 16.52 8.297a15.623 30.966 72.083 0 1-25.08 24.324a15.623 30.966 72.083 0 1-33.964-5.639a15.623 30.966 72.083 0 1 25.078-24.324a15.623 30.966 72.083 0 1 17.446-2.658m105.074 87.545a737 737 0 0 0-36.129.824c-48.367 2.29-96.637 9.383-132.682 20.898c-18.022 5.758-32.96 12.664-43.14 20.12c-10.181 7.455-15.225 14.927-16.135 22.431c-.771 6.358 2.69 13.296 12.693 21.38c10.004 8.086 25.876 16.155 45.407 23.048c39.06 13.786 92.694 23.167 145.267 24.806c52.574 1.64 104.231-4.626 139.022-20.488c17.395-7.93 30.393-18.095 37.974-30.289c7.582-12.194 10.317-26.587 6.166-45.414c-.984-4.464-5.912-10.175-16.506-15.58c-10.593-5.405-25.998-10.126-44.365-13.654c-27.55-5.292-61.777-8.017-97.572-8.082m-159.727 42.4a18.747 35.889 83.498 0 1 28.702 14.086a18.747 35.889 83.498 0 1-31.659 23.371a18.747 35.889 83.498 0 1-39.367-13.441a18.747 35.889 83.498 0 1 31.658-23.371a18.747 35.889 83.498 0 1 10.666-.645"/></symbol> <symbol id="stone-stack" viewBox="0 0 512 512"><path fill="currentColor" d="M278.735 112.385c-6.45-.022-13.001.204-19.541.683c-26.16 1.918-52.24 7.912-71.295 17.338c-19.054 9.426-30.102 21.32-31.21 35.473c-.491 6.258 1.674 12.378 6.886 18.9s13.484 13.055 23.86 18.725c20.75 11.34 49.723 19.217 77.925 20.578s55.456-3.89 73.447-16.592c17.992-12.701 28.163-31.942 23.477-64.853c-.647-4.546-3.149-8.605-8.393-12.748c-5.244-4.144-13.144-7.946-22.834-10.828c-14.534-4.324-32.974-6.611-52.322-6.676m-58.385 27.773a15.021 30.242 71.137 0 1 16.541 7.426a15.021 30.242 71.137 0 1-23.646 24.008a15.021 30.242 71.137 0 1-33.557-4.356a15.021 30.242 71.137 0 1 23.647-24.006a15.021 30.242 71.137 0 1 17.015-3.072m41.203 101.729c-37.759-.033-75.243 5.18-102.252 16.006c-13.504 5.412-24.3 12.2-31.423 19.904c-7.123 7.703-10.792 16.021-10.834 26.406c-.027 6.585 2.827 11.537 10.013 16.832c7.187 5.295 18.653 9.967 32.887 13.277c28.467 6.621 67.726 8.057 106.684 5.051c38.957-3.005 77.792-10.437 105.572-20.668c13.89-5.115 24.986-11.006 31.701-16.691c6.715-5.686 8.59-10.002 8.066-14.201c-.602-4.834-4.196-10.34-12.113-16.06s-19.702-11.174-33.931-15.651c-28.459-8.955-66.61-14.172-104.37-14.205m-76.722 28a15.623 30.966 72.083 0 1 16.52 8.297a15.623 30.966 72.083 0 1-25.08 24.324a15.623 30.966 72.083 0 1-33.964-5.639a15.623 30.966 72.083 0 1 25.078-24.324a15.623 30.966 72.083 0 1 17.446-2.658m105.074 87.545a737 737 0 0 0-36.129.824c-48.367 2.29-96.637 9.383-132.682 20.898c-18.022 5.758-32.96 12.664-43.14 20.12c-10.181 7.455-15.225 14.927-16.135 22.431c-.771 6.358 2.69 13.296 12.693 21.38c10.004 8.086 25.876 16.155 45.407 23.048c39.06 13.786 92.694 23.167 145.267 24.806c52.574 1.64 104.231-4.626 139.022-20.488c17.395-7.93 30.393-18.095 37.974-30.289c7.582-12.194 10.317-26.587 6.166-45.414c-.984-4.464-5.912-10.175-16.506-15.58c-10.593-5.405-25.998-10.126-44.365-13.654c-27.55-5.292-61.777-8.017-97.572-8.082m-159.727 42.4a18.747 35.889 83.498 0 1 28.702 14.086a18.747 35.889 83.498 0 1-31.659 23.371a18.747 35.889 83.498 0 1-39.367-13.441a18.747 35.889 83.498 0 1 31.658-23.371a18.747 35.889 83.498 0 1 10.666-.645"/></symbol>

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Before After
Before After

View file

@ -820,44 +820,52 @@ class HerbloreTest(unittest.TestCase):
def test_herbs_to_potion(self): def test_herbs_to_potion(self):
world, p = self.world, self.p world, p = self.world, self.p
p["xp"]["farming"] = game.XP_TABLE[5]
game.start_action(world, p, "grow_guam_leaf", T0) game.start_action(world, p, "grow_guam_leaf", T0)
game.process_player(world, p, T0 + 450, random.Random(1)) game.process_player(world, p, T0 + 450, random.Random(1))
self.assertEqual(p["bank"]["guam_leaf"], 10) self.assertEqual(p["bank"]["guam_leaf"], 10)
p["xp"]["herblore"] = game.XP_TABLE[6]
p["bank"]["logs"] = 3 p["bank"]["logs"] = 3
game.start_action(world, p, "brew_lumberjacks_tonic", T0 + 450) self.assertIsNone(game.start_action(world, p, "brew_woodcutting_potion_1", T0 + 450)) # tier I needs no Herblore
game.process_player(world, p, T0 + 1000, random.Random(1)) game.process_player(world, p, T0 + 1000, random.Random(1))
self.assertEqual(p["bank"]["lumberjacks_tonic"], 3) self.assertEqual(p["bank"]["woodcutting_potion_1"], 3)
self.assertEqual(game.start_action(world, p, "brew_woodcutting_potion_2", T0 + 1000), "Needs level 15")
def test_potion_tiers_climb_the_ladders(self):
mining = [potion for potion in game.POTIONS if potion[0].startswith("mining_potion")]
self.assertEqual([(herb, second) for _id, _name, _level, herb, second, *_rest in mining[:2]],
[("guam_leaf", "copper_ore"), ("marrentill", "iron_ore")])
self.assertEqual([p[2] for p in mining], game.TIER_LEVELS)
self.assertEqual([p[6]["speed"] for p in mining], game.SPEEDS)
self.assertEqual(game.ITEMS["mining_potion_6"]["name"], "Mining potion VI")
self.assertFalse(any("heal" in p[6] or "double" in p[6] for p in game.POTIONS))
def test_skill_potion_speeds_up_and_uses_charges(self): def test_skill_potion_speeds_up_and_uses_charges(self):
world, p = self.world, self.p world, p = self.world, self.p
plain = game.action_time(world, p, game.ACTION_BY_ID["cut_logs"]) plain = game.action_time(world, p, game.ACTION_BY_ID["cut_logs"])
p["bank"] = {"lumberjacks_tonic": 1} p["bank"] = {"woodcutting_potion_3": 1}
self.assertIsNone(game.use_potion(p, "lumberjacks_tonic")) self.assertIsNone(game.use_potion(p, "woodcutting_potion_3"))
self.assertEqual(p["potions"]["woodcutting"], {"item": "lumberjacks_tonic", "charges": game.POTION_CHARGES}) self.assertEqual(p["potions"]["woodcutting"], {"item": "woodcutting_potion_3", "charges": game.POTION_CHARGES})
self.assertAlmostEqual(game.action_time(world, p, game.ACTION_BY_ID["cut_logs"]), plain * 0.8) self.assertAlmostEqual(game.action_time(world, p, game.ACTION_BY_ID["cut_logs"]), plain * 0.8)
self.assertEqual(game.action_time(world, p, game.ACTION_BY_ID["mine_stone"]), plain) self.assertEqual(game.action_time(world, p, game.ACTION_BY_ID["mine_stone"]), plain)
game.start_action(world, p, "cut_logs", T0) game.start_action(world, p, "cut_logs", T0)
summary = game.process_player(world, p, T0 + 16 * 60, random.Random(1)) summary = game.process_player(world, p, T0 + 16 * 60, random.Random(1))
self.assertEqual(summary["potion_out"], ["lumberjacks_tonic"]) self.assertEqual(summary["potion_out"], ["woodcutting_potion_3"])
self.assertNotIn("woodcutting", p["potions"]) self.assertNotIn("woodcutting", p["potions"])
def test_empty_potion_is_replaced_from_the_bank(self): def test_empty_potion_is_replaced_from_the_bank(self):
world, p = self.world, self.p world, p = self.world, self.p
p["bank"] = {"trackers_tincture": 2} p["bank"] = {"hunting_potion_1": 2}
game.use_potion(p, "trackers_tincture") game.use_potion(p, "hunting_potion_1")
p["potions"]["hunting"]["charges"] = 1 p["potions"]["hunting"]["charges"] = 1
game.start_action(world, p, "hunt_birds", T0) game.start_action(world, p, "hunt_birds", T0)
summary = game.process_player(world, p, T0 + 25, random.Random(1)) summary = game.process_player(world, p, T0 + 25, random.Random(1))
self.assertEqual(summary["potions_drunk"], {"trackers_tincture": 1}) self.assertEqual(summary["potions_drunk"], {"hunting_potion_1": 1})
self.assertEqual(p["potions"]["hunting"]["charges"], game.POTION_CHARGES) self.assertEqual(p["potions"]["hunting"]["charges"], game.POTION_CHARGES)
self.assertNotIn("trackers_tincture", p["bank"]) self.assertNotIn("hunting_potion_1", p["bank"])
def test_keep_chance_saves_materials(self): def test_keep_chance_saves_materials(self):
world, p = self.world, self.p world, p = self.world, self.p
p["bank"] = {"copper_ore": 100, "logs": 100, "smiths_focus": 1} p["bank"] = {"copper_ore": 100, "logs": 100, "smithing_potion_2": 1}
game.use_potion(p, "smiths_focus") game.use_potion(p, "smithing_potion_2")
p["potions"]["smithing"]["charges"] = 1000 p["potions"]["smithing"]["charges"] = 1000
game.start_action(world, p, "smith_copper_bar", T0) game.start_action(world, p, "smith_copper_bar", T0)
summary = game.process_player(world, p, T0 + 20 * 100, random.Random(2)) summary = game.process_player(world, p, T0 + 20 * 100, random.Random(2))
@ -868,15 +876,30 @@ class HerbloreTest(unittest.TestCase):
world, p = self.world, self.p world, p = self.world, self.p
p["xp"]["combat"] = game.XP_TABLE[20] p["xp"]["combat"] = game.XP_TABLE[20]
p["hp"] = game.max_hp(p) p["hp"] = game.max_hp(p)
p["bank"] = {"defence_potion": 1, "bread": 500} p["bank"] = {"defence_potion_6": 1, "bread": 500}
game.use_potion(p, "defence_potion") game.use_potion(p, "defence_potion_6")
game.start_action(world, p, "fight_scouts", T0) game.start_action(world, p, "fight_scouts", T0)
scouts = game.ACTION_BY_ID["fight_scouts"] scouts = game.ACTION_BY_ID["fight_scouts"]
brewed = game.with_potion(game.NO_BLESSING, game.potion_effect(p, "combat")) brewed = game.with_potion(game.NO_BLESSING, game.potion_effect(p, "combat"))
self.assertAlmostEqual(game.fight_damage(p, scouts, brewed), game.fight_damage(p, scouts) * 0.85) self.assertAlmostEqual(game.fight_damage(p, scouts, brewed), game.fight_damage(p, scouts) * 0.70)
summary = game.process_player(world, p, T0 + 75 * 10, random.Random(1)) summary = game.process_player(world, p, T0 + 75 * 10, random.Random(1))
self.assertEqual(p["potions"]["combat"]["charges"], game.POTION_CHARGES - summary["done"]) self.assertEqual(p["potions"]["combat"]["charges"], game.POTION_CHARGES - summary["done"])
def test_old_potions_become_their_tiers(self):
world, p = self.world, self.p
world["version"] = 10
p["bank"] = {"lumberjacks_tonic": 4, "woodcutting_potion_3": 1, "regeneration_potion": 2}
p["potions"] = {"mining": {"item": "prospectors_draught", "charges": 12}}
p["action"] = {"id": "brew_anglers_brew", "start": T0, "resume": "brew_smiths_focus"}
world["city"]["stockpile"]["super_strength"] = 1
game.migrate(world, T0)
self.assertEqual(p["bank"], {"woodcutting_potion_3": 5, "defence_potion_3": 2})
self.assertEqual(p["potions"]["mining"], {"item": "mining_potion_2", "charges": 12})
self.assertEqual((p["action"]["id"], p["action"]["resume"]), ("brew_fishing_potion_3", "brew_smithing_potion_2"))
self.assertEqual(world["city"]["stockpile"]["strength_potion_4"], 1)
for action in (p["action"]["id"], p["action"]["resume"]):
self.assertIn(action, game.ACTION_BY_ID)
def test_v5_worlds_get_herblore(self): def test_v5_worlds_get_herblore(self):
world = world_with(("fred", "pioneer")) world = world_with(("fred", "pioneer"))
world["version"] = 5 world["version"] = 5