Jump to content

Akimikoisthecutest

Members
  • Posts

    1053
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Akimikoisthecutest

  1. So, my Auncle is in town today and they want to meet with the whole family, and they're the singular adult I'm out to, and I came out to them the last time I saw them before they moved. I'm worried it's going to be super awkward
  2. Ok, I'll try it tomorrow Wish me luck
  3. I think so, I believe that the Allomantic gene is just a connection to the shard of preservation, so yeah! You totally can have different allomantic abilities in the same family.
  4. I'm not really sure, but I'm worried it might mess with our relationship.
  5. I'm worried that they'll find it on my profile before so...
  6. I'm not really sure what I should even say. Like I was working on what I wanted to say, but I have to come out much sooner than I expected
  7. So, uh my parents know about my profile, but they haven't looked through it. Should I tell them that I'm trans or wait until they find it?
  8. My parents found my profile so this might be my last post here ever!

    Thank you to everyone on here, you are all such amazing people and I hate to leave you!

    1. Show previous comments  5 more
    2. Usseewa

      Usseewa

      How? If ya don't mind.

      I'm sure it won't be toooo bad

    3. Akimikoisthecutest

      Akimikoisthecutest

      What do you mean how? I was on my school computer I guess?

    4. Honors Spectral Image
  9. IT'S SO GOOD! Is this about @certifiedcranedriver?
  10. Probably better for your skin...
  11. Oh, my facial hair has been here for a while and most everyone assumes that I'm some crazy religious person who must be clean shaven at all times. like I shave every day even though I don't have to
  12. Uh so I made this little script with this rule set because I thought it would be kind of fun to see it. Uh this kind of works like a master spreadsheet might but it is probably buggy and inefficient. If any more experienced coders (*cough cough* @Usseewa @KaladinsSenseOfHumourSpren) want to give me feedback, that would be appreciated import random import os def clear_screen(): os.system('cls' if os.name == 'nt' else 'clear') class Player: def __init__(self, name, alignment, role=None, radiant_target=None): self.name = name self.alignment = alignment self.role = role self.is_alive = True self.is_roleblocked = False self.protected = False self.role_action_type = None self.role_action_target = None self.faction_action_type = None self.faction_action_target = None self.radiant_target = radiant_target self.spren_prot_used = False def __repr__(self): status = "" if self.is_alive else "[DEAD] " return f"{status}{self.name} ({self.alignment} {self.role if self.role else ''})" # --- ABILITY CONFIGURATION --- # Defines exactly which roles can do which actions ROLE_ABILITIES = { 'Direform': ['block'], 'Stormform': ['redirect'], 'Envoyform': ['decrease'], 'Inspiring': ['increase', 'block_conv'], 'Heroic': ['protect'], 'Spren': ['protect_radiant'], 'Shardbearer': ['kill'], 'Discerning': ['scan'], 'Sneaky': ['sneaky'], 'Willful': [] # Passive role } # --- GLOBAL GAME STATE --- conversion_charges = 2 def display_graveyard(players): dead_players = [f"{p.name} ({p.alignment} {p.role})" for p in players if not p.is_alive] print("\n=== GRAVEYARD (ELIMINATED) ===") if dead_players: for entry in dead_players: print(f"• {entry}") else: print("No one has died yet.") print("==============================") def simulate_cycle(players): global conversion_charges alive_at_start = [p.name for p in players if p.is_alive] for p in players: p.is_roleblocked = False p.protected = False # 1. Stormform Redirect for p in [x for x in players if x.role == 'Stormform' and not x.is_roleblocked and x.is_alive]: if p.role_action_type == 'redirect' and p.role_action_target: storm_target = p.role_action_target actors_to_redirect = [a for a in players if (a.role_action_target == storm_target or a.faction_action_target == storm_target) and a != p] for actor in actors_to_redirect: new_dest = random.choice([x for x in players if x != storm_target and x.is_alive]) if actor.role_action_target == storm_target: actor.role_action_target = new_dest if actor.faction_action_target == storm_target: actor.faction_action_target = new_dest print(f"STORM: {p.name} redirected {actor.name} to {new_dest.name}!") # 2. Direform Roleblock for p in [x for x in players if x.role == 'Direform' and not x.is_roleblocked and x.is_alive]: if p.role_action_type == 'block' and p.role_action_target: p.role_action_target.is_roleblocked = True print(f"BLOCK: {p.name} (Direform) roleblocked {p.role_action_target.name}") # 4. Protections (Heroic & Spren) protected_list = [p.role_action_target for p in players if p.role == 'Heroic' and not p.is_roleblocked and p.is_alive] for p in [x for x in players if x.role == 'Spren' and x.is_alive and not x.is_roleblocked]: if p.role_action_type == 'protect_radiant' and not p.spren_prot_used and p.role_action_target == p.radiant_target: protected_list.append(p.radiant_target) p.spren_prot_used = True print(f"SUCCESS: {p.name} (Spren) protected {p.radiant_target.name}!") # 5. Conversion (Regals) conv_blocked = [p.role_action_target for p in players if p.role == 'Inspiring' and p.role_action_type == 'block_conv' and not p.is_roleblocked and p.is_alive] for p in [x for x in players if x.alignment == 'Regal' and x.faction_action_type == 'convert' and not x.is_roleblocked and x.is_alive]: if conversion_charges <= 0: continue target = p.faction_action_target if target and target.alignment.capitalize() == 'Singer' and target not in conv_blocked and target.role != 'Willful': target.alignment = 'Regal' conversion_charges -= 1 print(f"CONVERSION: {target.name} has joined the Regals!") # 6. Kills targets_to_die = [] for p in [x for x in players if (x.faction_action_type == 'kill' or x.role == 'Shardbearer') and not x.is_roleblocked and x.is_alive]: target = p.faction_action_target if p.alignment == 'Regal' else p.role_action_target if target and target not in protected_list: targets_to_die.append(target) for target in list(set(targets_to_die)): target.is_alive = False # 7. Spren Death Logic for s in [x for x in players if x.role == 'Spren' and x.is_alive]: if s.radiant_target and not s.radiant_target.is_alive: s.is_alive = False print(f"LOSS: {s.name}'s Radiant ({s.radiant_target.name}) died. {s.name} is eliminated.") print("\n--- NIGHT DEATH REPORT ---") deaths = [n for n in alive_at_start if not next(pl for pl in players if pl.name == n).is_alive] if deaths: for d in deaths: print(f"DIED: {d}") else: print("No one died tonight.") display_graveyard(players) return players def simulate_day_phase(players, votes): tally = {p.name: 0 for p in players if p.is_alive} penalized = [p.role_action_target.name for p in players if p.role == 'Envoyform' and p.role_action_type == 'decrease' and not p.is_roleblocked and p.is_alive and p.role_action_target] buffed = [p.role_action_target.name for p in players if p.role == 'Inspiring' and p.role_action_type == 'increase' and not p.is_roleblocked and p.is_alive and p.role_action_target] for v_name, t_name in votes.items(): if t_name in tally: weight = 1 if v_name in penalized: weight = 0 elif v_name in buffed: weight = 2 tally[t_name] += weight if tally: victim_name = max(tally, key=tally.get) if tally[victim_name] > 0: victim = next(p for p in players if p.name == victim_name) victim.is_alive = False print(f"\n--- DAY PHASE: {victim_name} voted out with {tally[victim_name]} votes ---") display_graveyard(players) return players def check_winner(players): living = [p for p in players if p.is_alive] singers = [p for p in living if p.alignment == "Singer"] regals = [p for p in living if p.alignment == "Regal"] shard = [p for p in living if p.role == "Shardbearer"] if shard and len(shard) >= (len(singers) + len(regals)): return "SHARDBEARER" if not regals and not shard: return "SINGERS" if len(regals) > len(singers) and not shard: return "REGALS" return None # --- SETUP --- players = [ Player("Rudy", "Regal", "Direform"), Player("Lucias", "Singer", "Discerning"), Player("Jolene", "Singer", "Heroic"), Player("Mariana", "Singer", "Willful"), Player("Aiden", "Shardbearer", "Shardbearer"), Player("Bailey", "Singer", "Spren", radiant_target="Vivienne"), Player("Kai", "Singer", "Inspiring"), Player("Tadashi", "Regal", "Stormform"), Player("Abraham", "Singer", "Sneaky"), Player("Neil", "Regal", "Envoyform"), ] p = {player.name: player for player in players} p['Bailey'].radiant_target = p['Jolene'] # --- MAIN GAME LOOP --- cycle = 1 while True: clear_screen() print(f"=== CYCLE {cycle} ===") # 1. REGAL TEAM ACTION (Kill/Convert) regals_alive = [r for r in players if r.alignment == 'Regal' and r.is_alive] if regals_alive: print("\n--- REGAL FACTION ACTION (TEAM) ---") while True: t_act = input("Action (kill/convert) or blank: ").strip().lower() if not t_act or t_act in ['kill', 'convert']: break print("Invalid faction action!") if t_act: t_target_name = input("Target Name: ").strip() t_target = p.get(t_target_name) for r in regals_alive: r.faction_action_type, r.faction_action_target = t_act, t_target # 2. INDIVIDUAL ROLE ACTIONS (RESTRICTED) for name, actor in p.items(): if not actor.is_alive: continue allowed = ROLE_ABILITIES.get(actor.role, []) if not allowed: print(f"\n{name} ({actor.role}) has no active abilities.") continue print(f"\n{name} ({actor.role}) Turn:") print(f"Available abilities: {', '.join(allowed)}") while True: act = input("Enter ability or blank to skip: ").strip().lower() if not act or act in allowed: break print(f"Invalid! {name} can only use: {', '.join(allowed)}") if act: target_name = input(f"Target for {name}: ").strip() actor.role_action_type = act actor.role_action_target = p.get(target_name) clear_screen() players = simulate_cycle(players) winner = check_winner(players) if winner: print(f"\n*** {winner} WIN! ***") break input("\nPress Enter to begin Voting Phase...") clear_screen() print("=== VOTING PHASE ===") votes = {} for n, v in p.items(): if v.is_alive: vote = input(f"{n}, vote for someone: ").strip() votes[n] = vote players = simulate_day_phase(players, {k: v for k, v in votes.items() if v in p}) winner = check_winner(players) if winner: print(f"\n*** {winner} WIN! ***") break cycle += 1 for player in players: player.role_action_type = player.role_action_target = None player.faction_action_type = player.faction_action_target = None input("\nPress Enter for next cycle...")
  13. Three of them are confirmed queers, 4 aren't but 3 are for sure allies and the last at least puts up with our gay antics
  14. Ah, I still want to come out to my D&D group but I'm too scared to do it. Real
  15. No? I don't think so at least. I might be, but for about a year I tried to convince myself that I was...
  16. gigantic crushing table that only
  17. Ah, that makes sense! I understand it! That's what I did then I was trying to convince myself that I was Genderfluid.
  18. I got 777 posts! Whoo I've only been here like 6 months or so

    1. Usseewa

      Usseewa

      Nice, I noticed!

      Spoiler

      image.png.33ec3c1b8e88ea0b34f970576a30f26d.png

       

    2. Honors Spectral Image

      Honors Spectral Image

      YAYAYAYAYAYAYAY goooooooooooooooo AKIIIII

  19. They're just not all that trustworthy. I think that they would out me to a number of people that I'm not ready to be out to yet
  20. I don't really think that they're a safe person
×
×
  • Create New...