space-wizards / space-station-14

A multiplayer game about paranoia and chaos on a space station. Remake of the cult-classic Space Station 13.
https://spacestation14.io
MIT License
2.62k stars 3.27k forks source link

Executions need cleanup #24180

Open metalgearsloth opened 8 months ago

metalgearsloth commented 8 months ago

https://github.com/space-wizards/space-station-14/pull/24150 still needs reviewing e.g.

Anything else this is just what I saw at a glance.

Veritius commented 8 months ago

i dont know why emisse merged it, i was waiting for reviews tbh

Emisse commented 8 months ago

worked in testing so wanted to see if players used it/liked it/if it was abused

Veritius commented 8 months ago

ok that's fair

Veritius commented 8 months ago

Additionally, I want pacifists to be able to execute with cap guns, so they can play russian roulette.

To my future self: Just add the pacifism check to the doafter function along with a damage check. Say something like "You can't bring yourself to pull the trigger!"

Though, this might be used to metagame fake cap guns. More thought needed.

Veritius commented 8 months ago

Also explosive projectiles should explode when you execute with them. This includes the RPG and China Lake.

TheGoudaMan commented 8 months ago

There's an issue with executions: if you'll try to execute someone with empty shell the gun will shoot as if shell wasn't spent, so this needs a fix too. The problem should go away with proper implementation of SharedGunSystem I think, because it already handles empty cases. It's easy to make a hotfix for empty casings for current state code tho. Makes sesne to do since its already merged.

With that said, me and ppl I play with are really into this feature. If shooting yourself/executing someone with RPG is allowed, I think we should change message "you put X muzzle in mouth" into "You feel this is a really bad/dumb idea..." for a gag

Veritius commented 8 months ago

Ideally, executions shouldn't repeat any of gunsystem's code. Currently there's a bunch of weird edge cases because executions take ammo but don't actually 'fire' anything.

TheGoudaMan commented 8 months ago

I mean, you need to use SharedGunSystem then, maybe change it a bit so you can call some sort of event like "close shot at X"? I feel something like that would be step in right direction Because I don't think you can use gunsystem this way now (or I don't see it yet) without running entire control flow, firing the actual round at some direction with recoil, so it makes sense to update system a bit. Without using system you'll be missing a lot of gunplay features like opening bolt, case ejecting etc. Which isn't that bad, but if gunsystem will evolve even more in future, those edge cases will become much more apparent

metalgearsloth commented 8 months ago

Also another large problem is this entirely bypasses the existing system (suicidesystem) for it so you have 2 versions doing the same thing.

UbaserB commented 8 months ago

Also another large problem is this entirely bypasses the existing system (suicidesystem) for it so you have 2 versions doing the same thing.

Regarding this, i feel like the thing to do is remove /suicide (since executions are now the new "suicide" which is much more intuitive and enjoyable. Ghost could be kept though if you really just need to ghost quickly and you can't execute yourself, which is also still RP friendly as you can consider them as "suffering from an acute onset of catatonic SSD, at unfortunate timing."

Emisse commented 8 months ago

no, suicide is useful if youre stuck somewhere or for debugging

UbaserB commented 8 months ago

no, suicide is useful if youre stuck somewhere or for debugging

thats exactly what ghost does, which is what i mentioned.

deltanedas commented 8 months ago

Though, this might be used to metagame fake cap guns. More thought needed.

its already trivial to check what kind it is with 45 magnum rounds

pacifism is a mental thing so if the player ic thinks the gun is a toy they wont have a problem using it...

Veritius commented 8 months ago

no, suicide is useful if youre stuck somewhere or for debugging

I agree. /suicide and /ghost are useful for debugging or when your game is fucked. Executions are for dramatic finishing moves like the coup de grace of a revolution. Or Russian Roulette.

nikthechampiongr commented 8 months ago

I think I'll work on this.

Veritius commented 8 months ago

I'm already doing it

nikthechampiongr commented 8 months ago

I'm already doing it

Oh. Well I got carried away and just kinda did most of it already.

I won't make a pr but if you want I can just give you my changes.

I have not yet re-implemented the clumsy chance for a clown to shoot themselves, or the special modifier for melee weapons based on swing speed.

Although now it's all in shared, it is not just copying the gun system, nulls are handled properly, and the constants in the system and loc strings on a component.

Veritius commented 8 months ago

you might as well pr it then while you're at it, address some other problems in this issue like china laking yourself. i was gonna do that in the same pr as the fixes

metalgearsloth commented 7 months ago

Still needs more work.