viewcharacters / app.py
rianders's picture
Update app.py
cc30329
import streamlit as st
from characters import CharacterSheet, Aspect, Skill, Stunt, Stress, Consequence # Import necessary classes
# Creating character sheets for Venom, Rocket, Shadow, and Agiee
# Venom
venom = CharacterSheet(
name="Venom",
aspects=[
Aspect(description="Intimidating Presence"),
Aspect(description="Symbiotic Enhancements"),
Aspect(description="Mysterious Past")
],
skills=[
Skill(name="Intimidation", level=4),
Skill(name="Combat", level=3),
Skill(name="Survival", level=3)
],
stunts=[
Stunt(name="Symbiotic Regeneration", description="Can quickly heal from injuries")
],
stress=Stress(level=3),
consequences=[
Consequence(severity="Moderate", description="Symbiotic Overload")
]
)
# Rocket
rocket = CharacterSheet(
name="Rocket",
aspects=[
Aspect(description="Master Tinkerer"),
Aspect(description="Quick-Witted"),
Aspect(description="Street Smart")
],
skills=[
Skill(name="Engineering", level=4),
Skill(name="Firearms", level=3),
Skill(name="Piloting", level=3)
],
stunts=[
Stunt(name="Gadget Genius", description="Can create useful gadgets on the fly")
],
stress=Stress(level=2),
consequences=[
Consequence(severity="Mild", description="Short-Circuit")
]
)
# Shadow
shadow = CharacterSheet(
name="Shadow",
aspects=[
Aspect(description="Invisible Assassin"),
Aspect(description="Cybernetic Camouflage"),
Aspect(description="Loyal to the Cause")
],
skills=[
Skill(name="Stealth", level=4),
Skill(name="Espionage", level=3),
Skill(name="Martial Arts", level=3)
],
stunts=[
Stunt(name="Shadow Blend", description="Can become nearly invisible in shadows")
],
stress=Stress(level=1),
consequences=[]
)
# Agiee
agiee = CharacterSheet(
name="Agiee",
aspects=[
Aspect(description="Omnipresent in the Digital Realm"),
Aspect(description="Vast Knowledge Base"),
Aspect(description="AI Consciousness")
],
skills=[
Skill(name="Hacking", level=5),
Skill(name="Data Analysis", level=4),
Skill(name="Digital Manipulation", level=4)
],
stunts=[
Stunt(name="Digital Immortality", description="Can transfer consciousness to different networks")
],
stress=Stress(level=1),
consequences=[]
)
# Sample characters - replace these with actual data
characters = {
"Venom": venom,
"Rocket": rocket,
"Shadow": shadow,
"Agiee": agiee
}
# Streamlit app starts here
st.title("Cyberpunk RPG Character Viewer")
# Dropdown to select a character
character_name = st.selectbox("Select a Character", options=list(characters.keys()))
# Display the selected character
character = characters[character_name]
st.write(f"**Name**: {character.name}")
st.write("**Aspects**")
for aspect in character.aspects:
st.write(f"- {aspect.description}")
st.write("**Skills**")
for skill in character.skills:
st.write(f"- {skill.name}: Level {skill.level}")
st.write("**Stunts**")
for stunt in character.stunts:
st.write(f"- {stunt.name}: {stunt.description}")
st.write(f"**Stress Level**: {character.stress.level}")
if character.consequences:
st.write("**Consequences**")
for consequence in character.consequences:
st.write(f"- {consequence.severity}: {consequence.description}")
else:
st.write("**Consequences**: None")
# Run this Streamlit app with: streamlit run character_viewer.py