diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm index a60aa02ce1..32e7ac49b4 100644 --- a/code/game/objects/items/pet_carrier.dm +++ b/code/game/objects/items/pet_carrier.dm @@ -24,6 +24,7 @@ var/max_occupant_weight = MOB_SIZE_SMALL //This is calculated from the mob sizes of occupants var/entrance_name = "door" //name of the entrance to the item var/escape_time = 200 //how long it takes for mobs above small sizes to escape (for small sizes, its randomly 1.5 to 2x this) + var/alternate_escape_time = 0 //how long it takes for mobs to escape when the entrance is open var/load_time = 30 //how long it takes for mobs to be loaded into the pet carrier var/has_lock_sprites = TRUE //whether to load the lock overlays or not var/allows_hostiles = FALSE //does the pet carrier allow hostile entities to be held within it? @@ -108,6 +109,7 @@ return if(ishostile(target) && (!allows_hostiles || istype(target, /mob/living/simple_animal/hostile/carp/cayenne)) || target.move_resist < MOVE_FORCE_VERY_STRONG) //don't allow goliaths into pet carriers, but let cayenne in! to_chat(user, "You have a feeling you shouldn't keep this as a pet.") + return load_occupant(user, target) /obj/item/pet_carrier/relaymove(mob/living/user, direction) @@ -128,10 +130,17 @@ /obj/item/pet_carrier/container_resist(mob/living/user) //don't do the whole resist timer thing if it's open! if(open) - loc.visible_message("[user] climbs out of [src]!", \ - "[user] jumps out of [src]!") - remove_occupant(user) - return + if(alternate_escape_time > 0) + loc.visible_message("The [src] begins to shake!") + if(do_after(user, alternate_escape_time, target = user)) + loc.visible_message("[user] jumps out of [src]") + remove_occupant(user) + return + else //instant escape, different message + loc.visible_message("[user] climbs out of [src]!", \ + "[user] jumps out of [src]!") + remove_occupant(user) + return user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT @@ -147,7 +156,7 @@ update_icon() else loc.visible_message("[src] starts rattling as something pushes against the [entrance_name]!", null, null, null, user) - to_chat(user, "You start pushing out of [src]... (This will take about 20 seconds.)") + to_chat(user, "You start pushing out of [src]... (This will take about [escape_time/10] seconds.)") if(!do_after(user, escape_time, target = user) || open || !locked || !(user in occupants)) return loc.visible_message("[user] shoves out of [src]!", null, null, null, user) @@ -180,21 +189,22 @@ /obj/item/pet_carrier/proc/load_occupant(mob/living/user, mob/living/target) if(pet_carrier_full(src)) to_chat(user, "[src] is already carrying too much!") - return + return FALSE user.visible_message("[user] starts loading [target] into [src].", \ "You start loading [target] into [src]...", null, null, target) to_chat(target, "[user] starts loading you into [user.p_their()] [name]!") if(!do_mob(user, target, load_time)) - return + return FALSE if(target in occupants) - return + return FALSE if(pet_carrier_full(src)) //Run the checks again, just in case to_chat(user, "[src] is already carrying too much!") - return + return FALSE user.visible_message("[user] loads [target] into [src]!", \ "You load [target] into [src].", null, null, target) to_chat(target, "[user] loads you into [user.p_their()] [name]!") add_occupant(target) + return TRUE /obj/item/pet_carrier/proc/add_occupant(mob/living/occupant) if(occupant in occupants || !istype(occupant)) @@ -230,7 +240,8 @@ allows_hostiles = TRUE //can fit hostile creatures, with the move resist restrictions in place, this means they still cannot take things like legions/goliaths/etc regardless has_lock_sprites = FALSE //jar doesn't show the regular lock overlay custom_materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 600) - escape_time = 10 //half the time of a bluespace bodybag + escape_time = 200 //equal to the time of a bluespace bodybag + alternate_escape_time = 100 var/datum/gas_mixture/occupant_gas_supply /obj/item/pet_carrier/bluespace/update_icon_state() @@ -271,10 +282,15 @@ REMOVE_TRAIT(occupant, TRAIT_NOBREATH, "bluespace_container_no_breath") REMOVE_TRAIT(occupant, TRAIT_RESISTHIGHPRESSURE, "bluespace_container_resist_high_pressure") REMOVE_TRAIT(occupant, TRAIT_RESISTLOWPRESSURE, "bluespace_container_resist_low_pressure") + name = initial(name) /obj/item/pet_carrier/bluespace/return_air() if(!occupant_gas_supply) occupant_gas_supply = new return occupant_gas_supply +/obj/item/pet_carrier/bluespace/load_occupant(mob/living/user, mob/living/target) + if(..()) + name = "[initial(name)] ([target])" + #undef pet_carrier_full diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index d703f6a4e2..22cb10026b 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -91,6 +91,7 @@ return " (as [get_id_name("Unknown")])" /mob/living/carbon/human/proc/forcesay(list/append) //this proc is at the bottom of the file because quote fuckery makes notepad++ cri + set waitfor = FALSE // WINGET IS A SLEEP. DO. NOT. SLEEP. if(stat == CONSCIOUS) if(client) var/temp = winget(client, "input", "text") diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index a812159685..7b69942344 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -366,8 +366,7 @@ "Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekmed"), "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinamed"), "Eyebot" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "eyebotmed"), - "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymed"), - "Zoomba" = image(icon = 'icons/mob/robots.dmi', icon_state = "zoomba_med") + "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymed") ) var/list/L = list("Medihound" = "medihound", "Medihound Dark" = "medihounddark", "Vale" = "valemed") for(var/a in L) @@ -383,8 +382,6 @@ switch(med_borg_icon) if("Default") cyborg_base_icon = "medical" - if("Zoomba") - cyborg_base_icon = "zoomba_med" if("Droid") cyborg_base_icon = "medical" cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' @@ -487,8 +484,7 @@ "Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "caneng"), "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinaeng"), "Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidereng"), - "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyeng"), - "Zoomba" = image(icon = 'icons/mob/robots.dmi', icon_state = "zoomba_engi") + "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyeng") ) var/list/L = list("Pup Dozer" = "pupdozer", "Vale" = "valeeng") for(var/a in L) @@ -504,8 +500,6 @@ switch(engi_borg_icon) if("Default") cyborg_base_icon = "engineer" - if("Zoomba") - cyborg_base_icon = "zoomba_engi" if("Default - Treads") cyborg_base_icon = "engi-tread" special_light_key = "engineer" @@ -587,8 +581,7 @@ "Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "cansec"), "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinasec"), "Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "spidersec"), - "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavysec"), - "Zoomba" = image(icon = 'icons/mob/robots.dmi', icon_state = "zoomba_sec") + "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavysec") ) var/list/L = list("K9" = "k9", "Vale" = "valesec", "K9 Dark" = "k9dark") for(var/a in L) @@ -604,8 +597,6 @@ switch(sec_borg_icon) if("Default") cyborg_base_icon = "sec" - if("Zoomba") - cyborg_base_icon = "zoomba_sec" if("Default - Treads") cyborg_base_icon = "sec-tread" special_light_key = "sec" @@ -845,8 +836,7 @@ "(Janitor) Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinajan"), "(Janitor) Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekjan"), "(Janitor) Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "canjan"), - "(Janitor) Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyjan"), - "Zoomba" = image(icon = 'icons/mob/robots.dmi', icon_state = "zoomba_jani") + "(Janitor) Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavyjan") ) var/list/L = list("(Service) DarkK9" = "k50", "(Service) Vale" = "valeserv", "(Service) ValeDark" = "valeservdark", "(Janitor) Scrubpuppy" = "scrubpup") @@ -861,8 +851,6 @@ service_icons = sortList(service_icons) var/service_robot_icon = show_radial_menu(R, R , service_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE) switch(service_robot_icon) - if("Zoomba") - cyborg_base_icon = "zoomba_jani" if("(Service) Waitress") cyborg_base_icon = "service_f" special_light_key = "service" @@ -966,8 +954,7 @@ "Sleek" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "sleekmin"), "Marina" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "marinamin"), "Can" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "canmin"), - "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymin"), - "Zoomba" = image(icon = 'icons/mob/robots.dmi', icon_state = "zoomba_miner") + "Heavy" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "heavymin") ) var/list/L = list("Blade" = "blade", "Vale" = "valemine") for(var/a in L) @@ -1011,8 +998,6 @@ cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' sleeper_overlay = "valeminesleeper" dogborg = TRUE - if("Zoomba") - cyborg_base_icon = "zoomba_miner" else return FALSE return ..() diff --git a/html/changelogs/AutoChangeLog-pr-12896.yml b/html/changelogs/AutoChangeLog-pr-12896.yml new file mode 100644 index 0000000000..5ea8b8acb2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12896.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - bugfix: "changed up pet carriers / bluespace jars a bit so you can't fit certain things inside them and also the text shown for resist times is accurate" diff --git a/html/changelogs/AutoChangeLog-pr-12903.yml b/html/changelogs/AutoChangeLog-pr-12903.yml new file mode 100644 index 0000000000..f137f88c30 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12903.yml @@ -0,0 +1,4 @@ +author: "Sishen1542" +delete-after: True +changes: + - rscdel: "removed zoomba" diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 2bb8af7c61..082bfb3c3e 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ