diff --git a/code/modules/bitrunning/objects/netpod.dm b/code/modules/bitrunning/objects/netpod.dm index cda63af2d91..eb5623c1673 100644 --- a/code/modules/bitrunning/objects/netpod.dm +++ b/code/modules/bitrunning/objects/netpod.dm @@ -81,10 +81,10 @@ /obj/machinery/netpod/MouseDrop_T(mob/target, mob/user) var/mob/living/carbon/player = user - if(!iscarbon(player)) + if(!iscarbon(player) || !Adjacent(player) || !ISADVANCEDTOOLUSER(player) || !is_operational || !state_open) return - if((HAS_TRAIT(player, TRAIT_UI_BLOCKED) && !player.resting) || !Adjacent(player) || !ISADVANCEDTOOLUSER(player) || !is_operational) + if(player.buckled || HAS_TRAIT(player, TRAIT_HANDS_BLOCKED)) return close_machine(target) @@ -312,15 +312,9 @@ neo.set_static_vision(3 SECONDS) add_healing(occupant) - if(!do_after(neo, 2 SECONDS, src)) - return - // Very invalid - if(QDELETED(neo) || QDELETED(current_avatar) || QDELETED(src)) - return - - // Invalid - if(occupant != neo || isnull(neo.mind) || neo.stat == DEAD || current_avatar.stat == DEAD) + if(!validate_entry(neo, current_avatar)) + open_machine() return current_avatar.AddComponent( \ @@ -467,4 +461,19 @@ update_appearance() +/// Checks for cases to eject/fail connecting an avatar +/obj/machinery/netpod/proc/validate_entry(mob/living/neo, mob/living/avatar) + if(!do_after(neo, 2 SECONDS, src)) + return FALSE + + // Very invalid + if(QDELETED(neo) || QDELETED(avatar) || QDELETED(src) || !is_operational) + return FALSE + + // Invalid + if(occupant != neo || isnull(neo.mind) || neo.stat > SOFT_CRIT || avatar.stat == DEAD) + return FALSE + + return TRUE + #undef BASE_DISCONNECT_DAMAGE diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm index 6fd22040242..41918980360 100644 --- a/code/modules/bitrunning/server/obj_generation.dm +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -8,15 +8,21 @@ to_wear.belt = /obj/item/bitrunning_host_monitor to_wear.glasses = null to_wear.gloves = null - to_wear.l_hand = null to_wear.l_pocket = null - to_wear.r_hand = null to_wear.r_pocket = null to_wear.suit = null to_wear.suit_store = null avatar.equipOutfit(to_wear, visualsOnly = TRUE) + var/obj/item/clothing/under/jumpsuit = avatar.w_uniform + if(istype(jumpsuit)) + jumpsuit.set_armor(/datum/armor/clothing_under) + + var/obj/item/clothing/head/hat = avatar.get_clothing_on_part(HEAD) + if(istype(hat)) + hat.set_armor(null) + var/thing = avatar.get_active_held_item() if(!isnull(thing)) qdel(thing)