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

There is a method to destroy the disk permanently #75829

Closed
necromanceranne opened this issue Jun 3, 2023 · 4 comments · Fixed by #75843
Closed

There is a method to destroy the disk permanently #75829

necromanceranne opened this issue Jun 3, 2023 · 4 comments · Fixed by #75843
Labels
Bug Correct Functionality Tested/Reproduced There might be a hope in hell of getting this fixed.

Comments

@necromanceranne
Copy link
Contributor

Round ID: 207517

Reproduction:

So, apparently, the captain of this round used as colossus crystal and was mindswapped into a cockroach. This crystal probably moves the captain's body...somewhere. When the captain in the body of a cockroach was stepped on, the disk was lost forever.

I've no idea what is happening with that crystal, but that does not sound good.

@nfreader nfreader added the Needs Reproducing Nobody will fix your issue unless you do this label Jun 3, 2023
@nfreader
Copy link
Contributor

nfreader commented Jun 3, 2023

Should be easy for someone to reproduce this locally and track down the issue.

@Sealed101
Copy link
Member

the disk doesn't get deleted, it would seem that it got stuck in nullspace somehow while the disk holder was being deleted. the way the crystal does mob possession is a mess and it works horribly (peep the horror)

var/mob/living/picked_mob = pick(valid_mobs)
var/obj/structure/closet/stasis/possessor_container = new /obj/structure/closet/stasis(picked_mob)
user.forceMove(possessor_container)

doing dump_contents(TRUE) seemed to have fixed this issue somewhat, as the disk was properly deleted and teleported elsewhere. but honestly this locker stuff should be purged and the body possession be made more sane

/obj/structure/closet/stasis/process()
if(holder_animal)
if(holder_animal.stat == DEAD)
dump_contents()
holder_animal.investigate_log("has been gibbed by [src].", INVESTIGATE_DEATHS)
holder_animal.gib()
return

/obj/structure/closet/stasis/dump_contents(kill = TRUE)
STOP_PROCESSING(SSobj, src)
for(var/mob/living/possessor in src)
REMOVE_TRAIT(possessor, TRAIT_MUTE, STASIS_MUTE)
possessor.status_flags &= ~GODMODE
possessor.notransform = FALSE
if(kill || !isanimal_or_basicmob(loc))
possessor.investigate_log("has died from [src].", INVESTIGATE_DEATHS)
possessor.death(FALSE)
if(holder_animal)
possessor.forceMove(get_turf(holder_animal))
holder_animal.mind.transfer_to(possessor)
possessor.mind.grab_ghost(force = TRUE)
holder_animal.gib()
return ..()
return ..()


cockroaches are deleted on death, and the running gag with things being deleted and their contents not being deleted properly sometimes also applies here

/mob/living/basic/cockroach/death(gibbed)
if(GLOB.station_was_nuked) //If the nuke is going off, then cockroaches are invincible. Keeps the nuke from killing them, cause cockroaches are immune to nukes.
return
..()

@Sealed101 Sealed101 added Bug Correct Functionality Tested/Reproduced There might be a hope in hell of getting this fixed. and removed Needs Reproducing Nobody will fix your issue unless you do this labels Jun 3, 2023
@moocowswag
Copy link
Contributor

shouldnt the disk automatically teleport if its in nullspace or something?

@Sealed101
Copy link
Member

my guess is it doesn't see itself as in nullspace because it's on a mob that's in a locker that fails to be removed from cockroach's contents when it gibs

san7890 pushed a commit that referenced this issue Jun 5, 2023
…user's body upon death/gibbing (#75843)

## About The Pull Request
Hooks the stasis closet thingamajing into `COMSIG_LIVING_DEATH` instead
of checking the animal's stat on `process()`, which makes possessed
animals properly dump the stasis closet's contents upon death or gibbing
(which is death but cooler).
yeah uh this method is hilarious but it does protect the user's body
quite reliably at least lol

## Why It's Good For The Game
Fixes #75829
also probably makes cockroach death saner in some unreported way, this
`. = ..()` vs `..()` is above my non-existent paygrade but it keeps
popping up from time to time

## Changelog
:cl:
fix: gibbing colossus possessor crystal possessed animals will no longer
stick the user's body and their stuff into the shadow realm. the animals
will properly drop your corpse when killed or gibbed
/:cl:

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Correct Functionality Tested/Reproduced There might be a hope in hell of getting this fixed.
Projects
None yet
4 participants