Commit Graph

315 Commits

Author SHA1 Message Date
Eevee (Evelyn Woods)
fd590f8353 Slightly reduce memory usage (?) for undoing transmutation 2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
f417162f6f Refactor bombs to use on_stand instead of on_begin 2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
25cb6f2f05 Outdent the messy push-handling block in can_actor_enter_cell 2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
f422b4b395 Add a compat flag for pushing a sliding block
The default is now what I /think/ is the Lynx behavior: try to push the
block first, and only give it a pending direction if the push fails.
CC2 always uses the pending mechanism.
2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
80edfa1ae9 Clear the pending flags in more sensible places 2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
64ca8f008c Restore standing on arrival
A few CC2LP1 replays desynced, so, I guess this is right actually.
2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
2ee86b50d2 Remove slide_automatically
Since sliding happens either on cell arrival or in the actor's idle
phase, the actor will always have a pending slide by the end of a tic,
so this code doesn't actually do anything.
2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
f140804713 Don't on_stand() on arrival; fix the CC1 force-floor compat flag 2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
a1f357f317 Make sliding be the tiles' responsibility
This seems to simplify things and also explain the CC2 semantics: force
floors activate while being stood on (which happens, I guess, during
idle), so it applies to objects that start the level on force floors.
This was probably done to make force floor flipping work, too.  On the
other hand, ice still only activates when being stepped on.
2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
7ba261c7d9 Fix some style nits; add some comments 2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
7a9e3a6eb1 Check forced movement when stepping on a cell, not during movement
This does simplify things a bit, and it also fixes the replay for CC2LP1
level 160, Sneak Around.  It breaks three Voting replays, unfortunately,
but doesn't break anything else, so I'm inclined to call it better.
2024-04-11 02:24:34 -06:00
Eevee (Evelyn Woods)
15a8be1c15 Play sounds very near the player at full volume, but spatialize chip pickups 2021-12-22 23:58:14 -07:00
Eevee (Evelyn Woods)
1e02c6aa6f Complete the pgchip ice block emulation (fixes #34) 2021-12-22 22:30:59 -07:00
Eevee (Evelyn Woods)
c8de4edfff Add spatial audio and sound effect captions 2021-12-22 20:55:15 -07:00
Eevee (Evelyn Woods)
77afca5799 Fix handling of blocked diagonal movement (fixes #86)
I had it mostly right based on experimentation, but had the conditions
inside-out, which allowed this case to slip through the cracks.  This
makes the Settlement of Arrakis replay sync.
2021-12-03 07:16:59 -07:00
Timothy Stiles
8feb732a8f boulders are pushed in the movement not facing direction (fixes #81) 2021-11-18 20:53:56 +11:00
Timothy Stiles
a87db67d84 lexy w/ skates and cerise now crack but don't slide on cracked ice (fixes #82) 2021-11-18 20:22:00 +11:00
Timothy Stiles
d675cddafb spaceify 2021-11-18 18:40:15 +11:00
Timothy Stiles
2df4dc5829 fix 'blowing up electric floors doesn't remove the wiring' regression 2021-11-18 18:39:46 +11:00
Eevee (Evelyn Woods)
ae8b42e0c9 Merge Lexy/Lynx loops; add compat for separated teleport phase 2021-05-17 19:12:04 -06:00
Eevee (Evelyn Woods)
7ed3d38489 Implement monsters not hurting you at decision time in Lynx 2021-05-11 18:31:16 -06:00
Eevee (Evelyn Woods)
3c00e0ba36 Fix rolling a second RFF direction under Lynx 2021-05-11 17:09:25 -06:00
Eevee (Evelyn Woods)
c9a2897bc2 Consolidate Lynx-style player death with CC2 2021-05-11 16:40:00 -06:00
Eevee (Evelyn Woods)
fc1f85dac9 Fix Lynx force floor compat switch; ensure monsters can't turn in traps 2021-05-11 16:31:28 -06:00
Eevee (Evelyn Woods)
9369b2b167 Partially restore Lynx force floor behavior 2021-05-10 20:46:19 -06:00
Eevee (Evelyn Woods)
08c86c6129 Refactor sliding handling
Eliminates a number of annoying little hacks by getting rid of
`slide_mode` and instead trusting the terrain, live, like CC2 seems to
do (and Lynx definitely does).
2021-05-10 20:23:02 -06:00
Eevee (Evelyn Woods)
dfc8798ff6 Fix turtle splashes erasing dropped dynamite 2021-05-08 17:51:46 -06:00
Eevee (Evelyn Woods)
eebe8b9581 Emulate an obscure CC2 bug when selecting a green teleport destination 2021-05-08 17:13:48 -06:00
Eevee (Evelyn Woods)
8efa3a572a Partially consolidate slide overriding on force floors vs teleports 2021-05-07 23:44:05 -06:00
Eevee (Evelyn Woods)
642c977df3 Prevent monsters killing you after you teleported 2021-05-07 22:39:54 -06:00
Eevee (Evelyn Woods)
b7e352a4a3 Switch to Lynx's delayed green button effect 2021-05-07 22:39:31 -06:00
Eevee (Evelyn Woods)
87d7952960 Fix lilypad splash duration being slightly longer than expected 2021-05-07 18:54:56 -06:00
Eevee (Evelyn Woods)
9883dcf4ef Bring death and spring mining more into line with CC2
- Players and monsters do, in fact, block each other.  The helmet only
  prevents death.

- Death happens during collision check, which is the entire reason items
  don't save you: you're collided with first!  This allows removing
  several special cases.

- Spring mining is prevented almost incidentally, by virtue of collision
  being checked both at decision time and movement time.  It /can/
  happen to actors other than the player, but seemingly not blocks.

- Some monsters, whose movement is essentially forced anyway, skip the
  decision time collision check.  This includes doppelgangers, which is
  why they always spring mine.
2021-05-07 17:51:11 -06:00
Eevee (Evelyn Woods)
24a55d7c88 Move the hairy Cell collision methods into Level 2021-05-06 12:44:29 -06:00
Eevee (Evelyn Woods)
eff62a9765 Merge trap/cloner connections; round-trip them through C2M; stub out connect tool 2021-04-28 22:05:01 -06:00
Eevee (Evelyn Woods)
f2366be039 Move diamond iteration to algorithms so the editor can (eventually) use it 2021-04-26 15:57:13 -06:00
Eevee (Evelyn Woods)
d251955684 Make red teleporters count as wired if they neighbor a logic gate 2021-03-13 18:05:29 -07:00
Eevee (Evelyn Woods)
3020e3b038 Count chips in C2Ms on level start, not on parse (so editing updates the chip count) 2021-03-10 22:19:47 -07:00
Eevee (Evelyn Woods)
63609ba77e Fix a few more Lynx compat issues 2021-03-08 23:53:52 -07:00
Eevee (Evelyn Woods)
1e5160b40d Use kill_actor when appropriate; fix some bowling ball behavior 2021-03-08 20:02:23 -07:00
Eevee (Evelyn Woods)
cf2f399371 Fix some subtle issues caused by 60 FPS updating 2021-03-08 18:53:11 -07:00
Eevee (Evelyn Woods)
a36862e65b Revamp the halo into an ankh 2021-03-07 19:36:48 -07:00
Eevee (Evelyn Woods)
db34ca72f9 Make turntables slide actors out of them and toggle on edge flip
Also fix the default display of unpowered tiles while I'm in here.
2021-03-07 18:05:55 -07:00
Eevee (Evelyn Woods)
e5fd2b67da Make turntables eject their contents 2021-03-07 00:42:19 -07:00
Eevee (Evelyn Woods)
0be59c21eb Make the glass block shatter on spikes and work with the transmogrifier 2021-03-07 00:23:40 -07:00
Eevee (Evelyn Woods)
ada36e8d61 Implement sokoban blocks 2021-03-07 00:07:18 -07:00
Eevee (Evelyn Woods)
bf8b55a9c9 Clear swap_player1 more aggressively 2021-03-06 22:52:03 -07:00
Eevee (Evelyn Woods)
4a5f0e36c6 Run Steam mode at 60 FPS; fix turn-based mode, again (fixes #17, fixes #54) 2021-03-06 22:20:46 -07:00
Eevee (Evelyn Woods)
26c66d6857 Make animations explicit, and fix almost every rendering problem
- `Tileset.animation_slowdown` is gone!
- Actors are now free to animate every move or every two moves, and have
  been configured to do so appropriately.  This fixes the appearance of
  blobs, most noticeably.  (Also fixes #36.)
- Actors that are always animated in CC2 are now always animated in LL.
- Lilypads/turtles now bob randomly.  More randomly than CC2, even.
- Players no longer appear to be swimming when stepping off of lilypads.
- Invisible walls no longer temporarily reveal themselves when you have
  the x-ray glasses (secret eye).
- There's a new option for using the CC2 animation timing, though god
  knows why you would want to.
2021-03-06 18:41:49 -07:00
Eevee (Evelyn Woods)
be275d380d Add a bunch of Lynx compat options 2021-03-05 13:54:38 -07:00