eevee / lexys-labyrinth

Chip's Challenge 2 emulator that runs in a browser
https://c.eev.ee/lexys-labyrinth/
Other
75 stars 12 forks source link

CC2 incompatibility: Ghosts can pass through a custom floor/no sign/hiking boots tile #85

Open Patashu opened 2 years ago

Patashu commented 2 years ago

image ^ like this apparently the exact way the rule works is like 'the ghost pretends to be a rover for collission purposes on trying to enter the tile'. so probably a CC2 bug that rarely comes up

eevee commented 2 years ago

of course it pretends to be a rover. why wouldn't it. how does that make any goddamn sense

does it specifically have to be a hiking boot??

Patashu commented 2 years ago

https://discord.com/channels/343036755999457281/771512221560995850/914803792464207903 this is the source. it's gross and you might have to ask ʐ̈ MANNNNNNN for more info or do CC2 testing to get the exact details down

eevee commented 2 years ago

i'm investigating this and regretting it

their test map is this:

i went through every single result in cc2 and collated the following

things that newly block a ghost when no-boot is introduced for obvious reasons (they would block a rover):

things that newly don't block a ghost when no-boot is introduced for obvious reasons (they do not block rovers):

things not affected by no-boot for obvious reasons (the rover has the same behavior, or the behavior of interest happens at a different time):

so, ok, i buy this explanation. there are two wrinkles: fire or a canopy, which would block a rover, do not block a ghost even with this construction. and the very weird thing is here, the layers are checked in the following order:

so the item mod is only seen after checking the thin walls layer, but thin walls are nonetheless affected. so it's not even quite as simple as merely "ghosts copy rover collision".

(the wiki needs updating with this info i suppose)

also, in the little ice contraptions in the bottom left, the ghosts simply stop forever in CC2. this is explained on the wiki. it's also super weird. i can buy that ghosts reversing on ice is deliberate behavior, i guess, but i cannot imagine what about ice cleats is causing them to simply stop. this is an important distinction because i'm not sure whether to emulate it in lexy mode or consider it an implementation bug.

eevee commented 2 years ago

after some thought i have decided the cleat thing has to be deliberate; it's too weird not to be, and all the other boots have zany unique behaviors as well. he just never ended up using it in a level, i guess.

the rover collision thing smells distinctly like a bug, though, and is completely incomprehensible even if not (we didn't even understand the rules until one month ago!), so i am relegating it to a compat flag. but given that it primarily affects level design and not gameplay, i'll stick it in both steam and steam-strict

eevee commented 2 years ago

whoops! fire blocks rovers, but fire under a no sign does not block ghosts. so it's not even just about layers either.