Compare commits

..

No commits in common. "1955d50dcc32a612a43ffc31c771b97ccdb3c8d9" and "fc6e47de44611e02d0ee89971dc051e3d7e4342f" have entirely different histories.

2 changed files with 43 additions and 114 deletions

153
app.py
View file

@ -21,147 +21,80 @@ class Creature:
class Run: class Run:
def __init__(self, moon): def __init__(self, moon):
self.moon = moon self.moon = moon
self.inside_power = moon.inside_max_power
self.outside_power = moon.outside_max_power
def main(): def main():
st.set_page_config("Lethal Company Scouter", "🛰️") st.set_page_config('Lethal Company Scouter', '🛰️')
moons = [ moons = [
# Tier 1 # Tier 1
Moon("Experimentation", 1, 4, 8), Moon('Experimentation', 1, 4, 8),
Moon("Assurance", 1, 6, 8), Moon('Assurance', 1, 6, 8),
Moon("Vow", 1, 7, 6), Moon('Vow', 1, 7, 6),
# Tier 2 # Tier 2
Moon("Offense", 2, 12, 12), Moon('Offense', 2, 12, 12),
Moon("March", 2, 14, 12), Moon('March', 2, 14, 12),
# Tier 3 # Tier 3
Moon("Rend", 3, 10, 6), Moon('Rend', 3, 10, 6),
Moon("Dine", 3, 15, 6), Moon('Dine', 3, 15, 6),
Moon("Titan", 3, 18, 7), Moon('Titan', 3, 18, 7),
] ]
outside_creatures = [ outside_creatures = [
Creature("Baboon Hawk", None, 1, 15, 6), Creature('Baboon Hawk', None, 1, 15, 6),
Creature("Circuit Bees", None, 1, 6, None), Creature('Circuit Bees', None, 1, 6, None),
Creature("Eyeless Dog", None, 2, 8, 12), Creature('Eyeless Dog', None, 2, 8, 12),
Creature("Forest Keeper", "Giant", 3, 3, None), Creature('Forest Keeper', 'Giant', 3, 3, None),
Creature("Earth Leviathan", "Worm", 2, 3, None), Creature('Earth Leviathan', 'Worm', 2, 3, None),
# Hybrid # Hybrid
Creature("Outside Ghost Girl ", None, 2, 1, None), Creature('Outside Ghost Girl ', None, 2, 1, None),
Creature("Outside Masked", None, 1, 10, 4), Creature('Outside Masked', None, 10, 10, 4),
] ]
inside_creatures = [ inside_creatures = [
Creature("Bracken", "Freddy Fazbear", 3, 1, 6), Creature('Bracken', 'Freddy Fazbear', 3, 1, 6),
Creature("Bunker Spider", None, 3, 1, 6), Creature('Bunker Spider', None, 3, 1, 6),
Creature("Coil Head", None, 1, 5, None), Creature('Coil Head', None, 1, 5, None),
Creature("Hoarding Bug", "Yippee Bug", 1, 8, 3), Creature('Hoarding Bug', 'Yippee Bug', 1, 8, 3),
Creature("Hygrodere", "Goo", 1, 2, None), Creature('Hygrodere', 'Goo', 1, 2, None),
Creature("Jester", None, 3, 1, None), Creature('Jester', None, 3, 1, None),
Creature("Nutcracker", None, 1, 10, 5), Creature('Nutcracker', None, 1, 10, 5),
Creature("Snare Flea", "Head. Bug.", 1, 4, 3), Creature('Snare Flea', "Head. Bug.", 1, 4, 3),
Creature("Spore Lizard", None, 1, 2, None), Creature('Spore Lizard', None, 1, 2, None),
Creature("Thumper", None, 2, 4, 4), Creature('Thumper', None, 2, 4, 4),
# Hybrid
Creature('Inside Ghost Girl', None, 2, 1, None),
Creature('Inside Masked', None, 10, 10, 4),
] ]
hybrid_creatures = [ st.markdown('# :red[Lethal Company] Scouter')
Creature("Ghost Girl", None, 2, 1, None),
Creature("Masked", None, 1, 10, 4),
]
st.markdown("# :red[Lethal Company] Scouter")
st.markdown(":rainbow[What does the scouter say about this moon's power level?]") st.markdown(":rainbow[What does the scouter say about this moon's power level?]")
moon = st.selectbox( moon = st.selectbox('Moon', sorted(m.name for m in moons),
"Moon", placeholder='Moon! Pick a moon!',
sorted(m.name for m in moons), help='Pick your current moon.')
placeholder="Moon! Pick a moon!",
help="Pick your current moon.",
)
run = Run(next(m for m in moons if m.name is moon)) run = Run(next(m for m in moons if m.name is moon))
st.markdown(f"## {run.moon.name} (Tier {run.moon.tier})") st.markdown(f"## {run.moon.name} (Tier {run.moon.tier})")
column_1, column_2 = st.columns(2) column_1, column_2 = st.columns(2)
with column_1: with column_1:
st.markdown("### Outside") st.markdown('### Outside')
st.info(f"Maximum power: {run.moon.outside_max_power}") st.info(f"Maximum power: {run.moon.outside_max_power}")
with st.form("outside"): for outside_creature in outside_creatures:
for creature in outside_creatures: st.slider(outside_creature.name, 0, outside_creature.max_spawns, help=outside_creature.nickname)
moon_max = min(
creature.max_spawns, run.moon.outside_max_power // creature.power
)
if moon_max > 0:
st.slider(
creature.name,
0,
moon_max,
key=creature.name,
help=creature.nickname,
)
else:
st.slider(
creature.name,
0,
1,
key=creature.name,
help=creature.nickname,
disabled=True,
)
run.outside_power = run.outside_power - st.session_state[creature.name]
outside_submit = st.form_submit_button("Calculate")
if outside_submit:
if run.outside_power >= 0:
st.toast(f"🌳 Outside power remaining: {run.outside_power}")
else:
st.error(
f"Power level exceedes maximum possible for {run.moon.name}."
)
with column_2: with column_2:
st.markdown("### Inside") st.markdown('### Inside')
st.info(f"Maximum power: {run.moon.inside_max_power}") st.info(f"Maximum power: {run.moon.inside_max_power}")
with st.form("inside"): for inside_creature in inside_creatures:
for creature in inside_creatures: st.slider(inside_creature.name, 0, inside_creature.max_spawns, help=inside_creature.nickname)
moon_max = min(
creature.max_spawns, run.moon.inside_max_power // creature.power
)
if moon_max > 0:
st.slider(
creature.name,
0,
moon_max,
key=creature.name,
help=creature.nickname,
)
else:
st.slider(
creature.name,
0,
1,
key=creature.name,
help=creature.nickname,
disabled=True,
)
run.inside_power = run.inside_power - st.session_state[creature.name]
inside_submit = st.form_submit_button("Calculate")
if inside_submit:
if run.inside_power >= 0:
st.toast(f"🏭 Inside power remaining: {run.inside_power}")
else:
st.error(
f"Power level exceedes maximum possible for {run.moon.name}."
)
if __name__ == "__main__": # https://docs.streamlit.io/library/api-reference/session-state
if __name__ == '__main__':
main() main()

View file

@ -1,6 +1,5 @@
altair==5.2.0 altair==5.2.0
attrs==23.2.0 attrs==23.2.0
black==24.2.0
blinker==1.7.0 blinker==1.7.0
cachetools==5.3.2 cachetools==5.3.2
certifi==2024.2.2 certifi==2024.2.2
@ -16,13 +15,10 @@ jsonschema-specifications==2023.12.1
markdown-it-py==3.0.0 markdown-it-py==3.0.0
MarkupSafe==2.1.5 MarkupSafe==2.1.5
mdurl==0.1.2 mdurl==0.1.2
mypy-extensions==1.0.0
numpy==1.26.4 numpy==1.26.4
packaging==23.2 packaging==23.2
pandas==2.2.0 pandas==2.2.0
pathspec==0.12.1
pillow==10.2.0 pillow==10.2.0
platformdirs==4.2.0
protobuf==4.25.2 protobuf==4.25.2
pyarrow==15.0.0 pyarrow==15.0.0
pydeck==0.8.1b0 pydeck==0.8.1b0