ParadiseSS13 / Paradise

Paradise Station's GitHub main repository.
https://www.paradisestation.org/forum
GNU Affero General Public License v3.0
393 stars 1.17k forks source link

[BUG] pAI Unfolding Saves Their Lives In Disposals Pipes. #19414

Open GCGunther opened 1 year ago

GCGunther commented 1 year ago

Issue Description:

pAI unfolding through disposal pipes and appearing above ground.

What did you expect to happen:

An individual threw me into disposals while I was in my Collapsed Form as a pAI. While traversing through the Disposal pipes, I decided to press Unfold to see what would happen, thinking I would still continue through the pipes and into disposals...

What happened instead:

... What actually happened is once I hit the Unfold button, I IMMEDIATELY bamphed back up above onto ground-level, completely unscathed and moving around. I pressed the Unfold button while in the pipes leading in a Hallway, so I appeared right above the flooring and in said Hallway.

Why is this bad/What are the consequences:

If somebody is actually attempting to dispose of a pAI through lethal matters via Disposal chute.. This is pretty much a guarantee pAI living if they unfold into their creature form.

Steps to reproduce the problem:

  1. Be a pAI that already has a form prepared (i.e. Cat)
  2. Have a very mad individual toss you into the disposals bin while you are Collapsed Form (box).
  3. Traverse through the pipes...
  4. Press the Unfold button and huzzah! Above ground you are!

When did the problem start happening:

Just found out around 6PM Central Standard Time on 16-10-2022. It still works as of now!

Extra information:

Y'all cute :>

Sirryan2002 commented 1 year ago
/mob/living/silicon/pai/proc/force_fold_out()
    if(istype(card.loc, /mob))
        var/mob/holder = card.loc
        holder.unEquip(card)
    else if(istype(card.loc, /obj/item/pda))
        var/obj/item/pda/holder = card.loc
        holder.pai = null

    forceMove(get_turf(card))

    card.forceMove(src)
    card.screen_loc = null
forceMove(get_turf(card))

this would be the culprit