Shared tomatoes, P1 sandbox spawns, and weapons left out

- Tomato splats are kept in the match, so everyone sees everyone's
  (others' arrive in replays, which play no effects), each splatting
  with juice and a sound once.
- The sandbox's first player (solo or hosting) spawns on the arena's
  P1 mark.
- A thrown flail ball or grapple stays out when switching weapons, and
  another weapon fires while a grapple hangs on. Mines, flail balls and
  grapples go once their slot no longer holds the weapon that put them
  out (mines fizzling).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shweetandClaude Opus 5.5 committed 2026-11-08 19:02:15 -05:00
1 parent e88fed1f4c
commit e55596b276
10 files changed
+84 -79

No files matched your search

+3 -5
View File
@@ -397,7 +397,7 @@ void Fighter::rope_update(Attack& hook)
// The controls' slot picks a weapon slot, wrapping around, and the level buttons level the weapon copy in it. The
// weapon switched away from becomes the off-hand weapon for Dual Wield (a copy of the same weapon counts when weapons
// stack), and a thrown flail ball is dropped.
// stack). A thrown flail ball or grapple out stays out.
void Fighter::slot_update(Sim& sim)
{
int previous = slot;
@@ -408,10 +408,7 @@ void Fighter::slot_update(Sim& sim)
if (slot != previous)
sim.cues->sound_play(SOUND_SELECT);
if (slot != previous && weaponLoadout[previous] >= 0 && weapon_key(previous) != weapon_key(slot))
{
slotSwitches[previous] = ++switches;
sim.weapons.attacks_release(*this, ATTACK_FLAIL);
}
int step = (int)is_pressed(CONTROL_LEVEL_UP) - (int)is_pressed(CONTROL_LEVEL_DOWN);
if (step != 0 && held >= 0 && sim.match.state == MATCH_PRACTICE)
@@ -605,7 +602,8 @@ void Fighter::charge_update(Sim& sim)
if (is_released(CONTROL_ATTACK))
sim.weapons.wisps_release(*this);
if (hook && (isLeftPressed || isRightPressed))
// A latched grapple lets go when clicked with the grapple in hand; another weapon fires as it hangs on.
if (hook && hook->key == weapon_key(slot) && (isLeftPressed || isRightPressed))
{
sim.weapons.attacks_release(*this, ATTACK_HOOK);
isFireBlocked = isLeftPressed;