Weapons built from traits, fashion, Hourglass, About tab, and Ithaca

- Every attack is now assembled from traits on its definition instead
  of per-weapon code: an anchor and path (thrusts, out-and-back, arcs),
  shared flight physics (gravity, drag, acceleration, homing, and one
  wall response: end, burst, stick, crawl, bounce, stop, pass, return,
  latch), and flags like bouncy, drifting, tethered, orbiting, instant
  and arming. Melee are projectiles too.
- Shots have a lifetime and a fade (when damage bottoms out). Range is
  speed times lifetime. Ricochets and the Vacuum wind lifetime back.
- The Vacuum pulls anyone's shots, and its airblast flips them out
  along the aim, claiming enemies' (fading into your colour).
- New trinket: Hourglass, longer projectile lifetime and range. Ropes
  and chains lengthen with it and the Accelerator.
- Fashion: 23 items worn on the head, face or torso, chosen in Profile.
- Flamethrower flames hit continuously, the whip coils and sweeps,
  bouncing shots roll over ramps, and Ricochet relights grenade fuses.
- Profile tab, colour tooltips, option hints on every setting, an
  About tab with credits and links, and the Ithaca font.
- Loadouts lock once readied, tomatoes clear with the match, and the
  round-over pause is 4 seconds.
- CC0 license. Tools and CLAUDE.md are no longer tracked, and the web
  shell moves to web/.
This commit is contained in:
shweet committed 2026-11-10 15:27:12 -05:00
1 parent e55596b276
commit e9d8cac926
101 files changed
+5787 -7148

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
{
"anm2ed": 1,
"info": {"fps": 60},
"spritesheets": [
{
"path": "fashion.png",
"regions": [
{"name": "Backwards Cap", "size": [32, 32], "pivot": [17, 18]},
{"name": "Headphones", "crop": [32, 0], "size": [32, 32], "pivot": [16, 17]},
{"name": "Hard Hat", "crop": [64, 0], "size": [32, 32], "pivot": [16, 18]},
{"name": "Bandana", "crop": [96, 0], "size": [32, 32], "pivot": [16, 14]},
{"name": "Bow", "crop": [128, 0], "size": [32, 32], "pivot": [14, 17]},
{"name": "Moustache", "crop": [160, 0], "size": [32, 32], "pivot": [16, 13]},
{"name": "Eyepatch", "crop": [0, 32], "size": [32, 32], "pivot": [15, 16]},
{"name": "Monocle", "crop": [32, 32], "size": [32, 32], "pivot": [13, 13]},
{"name": "Top Hat", "crop": [64, 32], "size": [32, 32], "pivot": [16, 20]},
{"name": "Ten Gallon", "crop": [96, 32], "size": [32, 32], "pivot": [16, 17]},
{"name": "Fez", "crop": [128, 32], "size": [32, 32], "pivot": [10, 19]},
{"name": "Bling", "crop": [160, 32], "size": [32, 32], "pivot": [16, 14]},
{"name": "Propeller Hat", "crop": [0, 64], "size": [32, 32], "pivot": [16, 18]},
{"name": "Headdress", "crop": [32, 64], "size": [32, 32], "pivot": [16, 16]},
{"name": "Bycocket", "crop": [64, 64], "size": [32, 32], "pivot": [16, 20]},
{"name": "Crown", "crop": [96, 64], "size": [32, 32], "pivot": [15, 20]},
{"name": "Scoop", "crop": [128, 64], "size": [32, 32], "pivot": [16, 20]},
{"name": "Petals", "crop": [160, 64], "size": [32, 32], "pivot": [16, 15]},
{"name": "Witch Hat", "crop": [0, 96], "size": [32, 32], "pivot": [16, 20]},
{"name": "Knight Helmet", "crop": [32, 96], "size": [32, 32], "pivot": [16, 17]},
{"name": "Antennae", "crop": [64, 96], "size": [32, 32], "pivot": [16, 20]},
{"name": "Devil Horns", "crop": [96, 96], "size": [32, 32], "pivot": [16, 28]},
{"name": "Demon Horns", "crop": [128, 96], "size": [32, 32], "pivot": [16, 16]}
]
}
],
"layers": [
{"name": "Head"},
{"name": "Face"},
{"name": "Torso"}
],
"defaultAnimation": "Backwards Cap",
"animations": {
"Backwards Cap": {"layers": [{"layer": 0, "frames": [{"region": 0}]}]},
"Headphones": {"layers": [{"layer": 1, "frames": [{"region": 1}]}]},
"Hard Hat": {"layers": [{"layer": 0, "frames": [{"region": 2}]}]},
"Bandana": {"layers": [{"layer": 1, "frames": [{"region": 3}]}]},
"Bow": {"layers": [{"layer": 0, "frames": [{"region": 4}]}]},
"Moustache": {"layers": [{"layer": 1, "frames": [{"region": 5}]}]},
"Eyepatch": {"layers": [{"layer": 1, "frames": [{"region": 6}]}]},
"Monocle": {"layers": [{"layer": 1, "frames": [{"region": 7}]}]},
"Top Hat": {"layers": [{"layer": 0, "frames": [{"region": 8}]}]},
"Ten Gallon": {"layers": [{"layer": 0, "frames": [{"region": 9}]}]},
"Fez": {"layers": [{"layer": 0, "frames": [{"region": 10}]}]},
"Bling": {"layers": [{"layer": 2, "frames": [{"region": 11}]}]},
"Propeller Hat": {"layers": [{"layer": 0, "frames": [{"region": 12}]}]},
"Headdress": {"layers": [{"layer": 0, "frames": [{"region": 13}]}]},
"Bycocket": {"layers": [{"layer": 0, "frames": [{"region": 14}]}]},
"Crown": {"layers": [{"layer": 0, "frames": [{"region": 15}]}]},
"Scoop": {"layers": [{"layer": 0, "frames": [{"region": 16}]}]},
"Petals": {"layers": [{"layer": 1, "frames": [{"region": 17}]}]},
"Witch Hat": {"layers": [{"layer": 0, "frames": [{"region": 18}]}]},
"Knight Helmet": {"layers": [{"layer": 1, "frames": [{"region": 19}]}]},
"Antennae": {"layers": [{"layer": 0, "frames": [{"region": 20}]}]},
"Devil Horns": {"layers": [{"layer": 0, "frames": [{"region": 21}]}]},
"Demon Horns": {"layers": [{"layer": 1, "frames": [{"region": 22}]}]}
}
}