spellclash

Enter two atproto handles. Each becomes an elemental spellcaster — Fire, Storm, Tide, or Stone, picked from their real public profile — with a signature spell and a real HP pool. Surge (how hard a spell hits) comes from tweet frequency, not raw post count — posts per day since the account was created. A real turn-based fight plays out, cast by cast, until someone's HP hits zero. Elements beat each other in a cycle, so type matchup can decide a close fight.

choose your casters
VS
HP
HP
how does this work?

Each handle's public profile (app.bsky.actor.getProfile) feeds four stats: Surge (attack power) from posts-per-day since the account was created, Focus (crit chance and who reacts first) from bio flair and profile polish, Reach (max HP) from follower count, and Ward (damage reduction) from the follower/follow ratio. Whichever stat is highest picks an element — Surge leads to Fire, Focus to Storm, Reach to Tide, Ward to Stone — and a signature spell is rolled from a seed on the account's own DID, so a caster looks the same no matter who they face. Elements beat each other in a fixed cycle (Fire > Storm > Tide > Stone > Fire) for 1.35× damage, or resist for 0.7×. Whoever has higher Focus casts first each round, and the fight runs turn by turn — real HP draining, not a fixed-length log — until someone hits zero or ten rounds pass, in which case whoever has more HP left wins. Each caster's rolls come from their own seed, so swapping which handle goes in which box never changes who wins.

type wheel: FireStormTideStone ⟶ back to Fire