Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ricochet death tile bug #15535

Closed
HanderBoy opened this issue Mar 31, 2024 · 4 comments
Closed

Ricochet death tile bug #15535

HanderBoy opened this issue Mar 31, 2024 · 4 comments
Labels
Bug Incorrect functionality.

Comments

@HanderBoy
Copy link

HanderBoy commented Mar 31, 2024

Description

The ricochet creates duped projectiles when interacting with a solid wall and a obstructing object ex. doors, shutters, resin walls even that creates a stream of 28(I counted the hits multiple times) invisible ricochet projectiles that hit everything that comes in contact with that tile.
The bug is mainly happens because of the buggy behaviour the ricochet sniper rifle has with anything that it can hit and is NOT a wall aditionally if you hit it in the wall in front of you the beam will IGNORE you and pass through to ricochet anything else if the tile behind you also has no space between you it will phase through you AGAIN into an infinite loop until the rico dries of beams.

Test Merges

Round ID 26381

Reproduction Steps

1.Put the las sniper on ricochet mode
2.Sandwich yourself between a wall tile and any sort of non ricocheable tile .shutter doors .normal doors .worked on resin walls once
3.Fire
4.You created a invisible death trap that has a 20% chance to kill you if you step out of it have fun!

unknown_2024.03.26-23.54_2.mp4

Screenshots

Send a video up in reproduction

@HanderBoy HanderBoy added the Bug Incorrect functionality. label Mar 31, 2024
@Notamaniac
Copy link
Contributor

Okay so it triggers a max recursion exception, which irrc is stopping the laser from processing and causing it to hang about, but it technically isn't recursion. From trying to interpret the callstack, it doesn't properly see the door as a dense object, but bounces off it regardless and fires directly from the open turf hence why it doesn't hit us. The amount a shot can bounce around is determined by it's range, and that range var is going down by one everytime it bounces. It's just that the range var is 30, and that's the max level of recursion that can occur before the exception triggers.

So option A : Do a check for airlocks/doors/objects on scan_a_turf, instead of just checking the turfs density
option B : hard limit the number of bounces to a number that's below 30
option C : remove bounce completely

@HanderBoy
Copy link
Author

HanderBoy commented Apr 3, 2024

Okay so it triggers a max recursion exception, which irrc is stopping the laser from processing and causing it to hang about, but it technically isn't recursion. From trying to interpret the callstack, it doesn't properly see the door as a dense object, but bounces off it regardless and fires directly from the open turf hence why it doesn't hit us. The amount a shot can bounce around is determined by it's range, and that range var is going down by one everytime it bounces. It's just that the range var is 30, and that's the max level of recursion that can occur before the exception triggers.

So option A : Do a check for airlocks/doors/objects on scan_a_turf, instead of just checking the turfs density option B : hard limit the number of bounces to a number that's below 30 option C : remove bounce completely

Thanks for the documentation! Ok so changing the amount of bounces needed for it to dissipate in the reflect code fixes it if you put it at 4
When I tried fixing it myself my dumbass only set it to dissipate when it went to 1 bounce and bellow and turns out if I had put it at 4 and bellow It would've been fixed 😭

@ghost
Copy link

ghost commented Apr 3, 2024

just wanted to say kudos to you figuring out the combo here; this bug has been for years

@Lumipharon
Copy link
Contributor

Fixed, forgot to link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Incorrect functionality.
Projects
None yet
Development

No branches or pull requests

3 participants