Icebox ruin: RoroCo glove factory (#92473)

## About The Pull Request

Adds a new surface ruin to icebox, the RoroCo factory. Contains a couple
of puzzles, and a small amount of loot in the form of ~~3 total pairs of
insulated gloves~~ a pair of insulated gloves, two adorable roros and a
cool unique labcoat. Just don't ask where the gloves come from...

Puzzles can of course be avoided/brute-forced by breaking down the walls
but that's for chumps.

<img width="1152" height="1024" alt="Space Station 13 2025-08-06 221903"
src="https://github.com/user-attachments/assets/21050aa6-9b27-494d-a949-7496aeda18cf"
/>

## Why It's Good For The Game

The upcoming 1x3 icebox surface calls for more ruin content to help fill
that space.

## Changelog
🆑
add: A new insulated glove factory has popped up on the ice moon.
add: Freezer floor tiles now come in the full range of shapes.
/🆑
This commit is contained in:
Thunder12345
2025-08-15 01:10:01 +01:00
committed by GitHub
parent 5fe090cd3e
commit d1b8145ad2
28 changed files with 2584 additions and 7 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -160,6 +160,8 @@
#define ACCESS_AWAY_GENERIC2 "away_generic2"
#define ACCESS_AWAY_GENERIC3 "away_generic3"
#define ACCESS_AWAY_GENERIC4 "away_generic4"
#define ACCESS_ROROCO "roroco"
#define ACCESS_ROROCO_SECURE "roroco_secure"
/// - - - MECH - - -
// Mech Access, allows maintanenace of internal components and altering keycard requirements.

View File

@@ -285,6 +285,7 @@ GLOBAL_LIST_EMPTY(sfx_datum_by_key)
#define SFX_CIG_PACK_PICKUP "cig_pack_pickup"
#define SFX_CIG_PACK_RUSTLE "cig_pack_rustle"
#define SFX_CIG_PACK_THROW_DROP "cig_pack_throw_drop"
#define SFX_RORO_WARBLE "roro_warble"
// Standard is 44.1khz
#define MIN_EMOTE_PITCH 40000

View File

@@ -181,6 +181,17 @@
access = list(ACCESS_SYNDICATE, ACCESS_AWAY_COMMAND)
big_pointer = TRUE
//Roroco Factory IDs
/datum/id_trim/away/roroco
assignment = "Glove Packer"
department_color = COLOR_ENGINEERING_ORANGE
access = list(ACCESS_ROROCO)
/datum/id_trim/away/roroco/boss
assignment = "Fabric Technician"
access = list(ACCESS_ROROCO, ACCESS_ROROCO_SECURE)
big_pointer = TRUE
//Film Studio Trims
/datum/id_trim/away/actor
assignment = "Actor"

View File

@@ -79,6 +79,12 @@
description = "Here lies Charles Morlbaro. He died the way he lived."
suffix = "icemoon_surface_smoking_room.dmm"
/datum/map_template/ruin/icemoon/roro
name = "Ice-Ruin RoroCo Factory"
id = "gloves"
description = "A manufacturing and packaging facility producing insulated gloves."
suffix = "icemoon_surface_gloves.dmm"
// above and below ground together
/datum/map_template/ruin/icemoon/mining_site

View File

@@ -54,7 +54,6 @@
/area/ruin/pizzeria/kitchen
name = "\improper Moffuchi's Kitchen"
/area/ruin/syndibiodome
name = "\improper Syndicate Biodome"
sound_environment = SOUND_AREA_SMALL_ENCLOSED

View File

@@ -187,7 +187,8 @@
//Bottom
/obj/effect/turf_decal/syndicateemblem/bottom/left
/obj/effect/turf_decal/syndicateemblem/bottom/left/obj/effect/turf_decal/raven/nine
icon_state = "RAVEN9"
icon_state = "synd1,1"
/obj/effect/turf_decal/syndicateemblem/bottom/middle
@@ -219,6 +220,9 @@
icon_state = "synd3,3"
/obj/effect/turf_decal/roroco
icon_state = "roroco"
/obj/effect/turf_decal/mining
icon_state = "mining"

View File

@@ -645,6 +645,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/contraband/blood_geometer
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/contraband/singletank_bomb, 32)
/obj/structure/sign/poster/contraband/roroco
name = "Roroco Gloves"
desc = "Roro says: Wear RoroCo insulated gloves, the safest brand on the market."
icon_state = "roroco"
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/contraband/roroco, 32)
///a special poster meant to fool people into thinking this is a bombable wall at a glance.
/obj/structure/sign/poster/contraband/fake_bombable
name = "fake bombable poster"

View File

@@ -79,6 +79,10 @@
/obj/item/stack/tile/iron/showroomfloor,
/obj/item/stack/tile/iron/solarpanel,
/obj/item/stack/tile/iron/freezer,
/obj/item/stack/tile/iron/freezer/edge,
/obj/item/stack/tile/iron/freezer/half,
/obj/item/stack/tile/iron/freezer/corner,
/obj/item/stack/tile/iron/freezer/large,
/obj/item/stack/tile/iron/grimy,
/obj/item/stack/tile/iron/sepia,
)
@@ -603,6 +607,37 @@
turf_type = /turf/open/floor/iron/freezer
merge_type = /obj/item/stack/tile/iron/freezer
/obj/item/stack/tile/iron/freezer/edge
name = "freezer edge floor tile"
singular_name = "edged freezer floor tile"
icon_state = "tile_freezer_edge"
turf_type = /turf/open/floor/iron/freezer/edge
merge_type = /obj/item/stack/tile/iron/freezer/edge
tile_rotate_dirs = list(SOUTH, NORTH, EAST, WEST)
/obj/item/stack/tile/iron/freezer/half
name = "freezer half floor tile"
singular_name = "halved freezer floor tile"
icon_state = "tile_freezer_half"
turf_type = /turf/open/floor/iron/freezer/half
merge_type = /obj/item/stack/tile/iron/freezer/half
tile_rotate_dirs = list(SOUTH, NORTH)
/obj/item/stack/tile/iron/freezer/corner
name = "freezer corner floor tile"
singular_name = "cornered freezer floor tile"
icon_state = "tile_freezer_corner"
turf_type = /turf/open/floor/iron/freezer/corner
merge_type = /obj/item/stack/tile/iron/freezer/corner
tile_rotate_dirs = list(SOUTH, NORTH, EAST, WEST)
/obj/item/stack/tile/iron/freezer/large
name = "freezer large floor tile"
singular_name = "large freezer floor tile"
icon_state = "tile_freezer_large"
turf_type = /turf/open/floor/iron/freezer/large
merge_type = /obj/item/stack/tile/iron/freezer/large
/obj/item/stack/tile/iron/grimy
name = "grimy floor tile"
singular_name = "grimy floor tile"

View File

@@ -104,3 +104,8 @@
name = "\improper All-American Diner billboard"
desc = "A billboard advertising an old-school 1950's themed restaurant franchise \"All-American Diner\""
icon_state = "billboard_american_diner"
/obj/structure/billboard/gloves
name = "\improper RoroCo Gloves billboard"
desc = "A billboard advertising RoroCo, a manufacturer of insulated gloves and insulated glove accessories. Features the company's loveable mascot Roro."
icon_state = "billboard_gloves"

View File

@@ -842,3 +842,8 @@
/datum/sound_effect/cig_pack_throw_drop
key = SFX_CIG_PACK_THROW_DROP
file_paths = list('sound/items/cigs/cig_pack_throw_drop1.ogg')
/datum/sound_effect/roro_warble
key = SFX_RORO_WARBLE
file_paths = list(
'sound/mobs/non-humanoids/roro/roro_warble.ogg')

View File

@@ -420,10 +420,30 @@
/turf/open/floor/iron/freezer
icon_state = "freezerfloor"
base_icon_state = "freezerfloor"
icon_state = "freezer"
base_icon_state = "freezer"
floor_tile = /obj/item/stack/tile/iron/freezer
/turf/open/floor/iron/freezer/edge
icon_state = "freezer_edge"
base_icon_state = "freezer_edge"
floor_tile = /obj/item/stack/tile/iron/freezer/edge
/turf/open/floor/iron/freezer/half
icon_state = "freezer_half"
base_icon_state = "freezer_half"
floor_tile = /obj/item/stack/tile/iron/freezer/half
/turf/open/floor/iron/freezer/corner
icon_state = "freezer_corner"
base_icon_state = "freezer_corner"
floor_tile = /obj/item/stack/tile/iron/freezer/corner
/turf/open/floor/iron/freezer/large
icon_state = "freezer_large"
base_icon_state = "freezer_large"
floor_tile = /obj/item/stack/tile/iron/freezer/large
/turf/open/floor/iron/freezer/airless
initial_gas_mix = AIRLESS_ATMOS
@@ -445,8 +465,8 @@
floor_tile = /obj/item/stack/tile/iron/dark/textured
/turf/open/floor/iron/kitchen_coldroom/freezerfloor
icon_state = "freezerfloor"
base_icon_state = "freezerfloor"
icon_state = "freezer"
base_icon_state = "freezer"
floor_tile = /obj/item/stack/tile/iron/freezer
/turf/open/floor/iron/grimy

View File

@@ -0,0 +1,83 @@
/obj/machinery/door/puzzle/keycard/roro
name = "Fabric Processing"
desc = "A dusty, scratched door with a thick lock attached."
puzzle_id = "roroco"
/obj/item/keycard/roro
name = "Fabric Processing keycard"
desc = ""
color = "#b1634c"
puzzle_id = "roroco"
/area/ruin/roroco
name = "\improper RoroCo Primary Hallway"
/area/ruin/roroco/management
name = "\improper RoroCo Management Office"
/area/ruin/roroco/packing
name = "\improper RoroCo Packing Room"
/area/ruin/roroco/extraction
name = "\improper RoroCo Product Extraction"
/area/ruin/roroco/harvesting
name = "\improper RoroCo Harvesting Room"
/area/ruin/roroco/maintenance
name = "\improper RoroCo Maintenance Hallway"
/area/ruin/roroco/janitor
name = "\improper RoroCo Janitor's Closet"
/obj/item/card/id/away/roroco
name = "\improper RoroCo ID Card"
desc = "A plastic card that identifies its bearer as an employee of RoroCo. There are electronic chips embedded to communicate with airlocks and other machines. It does not have a name attached."
icon_state = "card_roro"
trim = /datum/id_trim/away/roroco
/obj/item/card/id/away/roroco/boss
desc = "A plastic card that identifies its bearer as a senior employee of RoroCo with enhanced access to secure areas. There are electronic chips embedded to communicate with airlocks and other machines. It does not have a name attached."
icon_state = "card_roroboss"
trim = /datum/id_trim/away/roroco/boss
/obj/structure/closet/cardboard/roroco
icon_state = "cardboard_roroco"
/obj/item/clothing/suit/toggle/labcoat/roroco
name = "\improper RoroCo labcoat"
desc = "A suit that protects against minor chemical spills, though the deep red colour makes them hard to see. Great for hiding blood stains, though..."
icon = 'icons/map_icons/clothing/suit/_suit.dmi'
icon_state = "/obj/item/clothing/suit/toggle/labcoat/roroco"
post_init_icon_state = "labcoat_job"
greyscale_config = /datum/greyscale_config/labcoat
greyscale_config_worn = /datum/greyscale_config/labcoat/worn
greyscale_colors = "#88242D#39393F#39393F#39393F"
/obj/item/clothing/under/costume/buttondown/slacks/roroco
icon_state = "/obj/item/clothing/under/costume/buttondown/slacks/roroco"
greyscale_colors = "#FFCCCC#17171B#17171B#88242D"
/datum/outfit/roroco
name = "RoroCo Glove Packer"
gloves = /obj/item/clothing/gloves/cargo_gauntlet
shoes = /obj/item/clothing/shoes/workboots
uniform = /obj/item/clothing/under/costume/buttondown/slacks/roroco
suit = /obj/item/clothing/suit/hazardvest
/datum/outfit/roroco/processing
name = "Roroco Fabric Technician"
glasses = /obj/item/clothing/glasses/science
gloves = /obj/item/clothing/gloves/latex/nitrile
suit = /obj/item/clothing/suit/toggle/labcoat/roroco
id = /obj/item/card/id/away/roroco/boss
/obj/effect/mob_spawn/corpse/human/roroco_packing
name = "Dead RoroCo Glove Packer"
mob_name = "Nameless Glove Packer"
outfit = /datum/outfit/roroco
/obj/effect/mob_spawn/corpse/human/roroco_processing
name = "Dead Roroco Fabric Technician"
mob_name = "Nameless Fabric Technician"
outfit = /datum/outfit/roroco/processing

View File

@@ -0,0 +1,68 @@
/mob/living/basic/roro
name = "roro"
desc = "A little round, sharp beaked alien. It bears a striking resemblance to insulated gloves."
icon_state = "roro"
icon_living = "roro"
icon_dead = "roro_dead"
mob_biotypes = MOB_ORGANIC
speed = 0.5
maxHealth = 50
health = 50
butcher_results = list(
/obj/item/clothing/gloves/color/yellow = 1
)
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "shoos"
response_disarm_simple = "shoo"
melee_damage_lower = 1
melee_damage_upper = 4
attack_verb_continuous = "nips"
attack_verb_simple = "nip"
attack_sound = 'sound/items/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
melee_attack_cooldown = 0.5 SECONDS
speak_emote = list("warbles")
unsuitable_atmos_damage = 0
unsuitable_cold_damage = 0
unsuitable_heat_damage = 0
faction = list(FACTION_HOSTILE)
ai_controller = /datum/ai_controller/basic_controller/simple/simple_retaliate
/datum/emote/roro
mob_type_allowed_typecache = /mob/living/basic/roro
mob_type_blacklist_typecache = list()
/datum/emote/roro/warble
key = "warble"
key_third_person = "warbles"
message = "warbles happily!"
emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE
vary = TRUE
sound = SFX_RORO_WARBLE
/mob/living/basic/roro/Initialize(mapload)
. = ..()
AddElement(/datum/element/pet_bonus, "warble")
AddElement(/datum/element/ai_retaliate)
/datum/ai_controller/basic_controller/roro
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
)
ai_traits = DEFAULT_AI_FLAGS | STOP_MOVING_WHEN_PULLED
ai_movement = /datum/ai_movement/basic_avoidance
idle_behavior = /datum/idle_behavior/idle_random_walk
planning_subtrees = list(
/datum/ai_planning_subtree/target_retaliate,
/datum/ai_planning_subtree/basic_melee_attack_subtree,
)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 KiB

After

Width:  |  Height:  |  Size: 402 KiB

View File

@@ -235,4 +235,6 @@ sound/effects/siren.ogg -- siren.wav by IFartInUrGeneralDirection -- https://fre
sound/mobs/non-humanoids/stoats/stoat_sound.ogg -- https://suche.tierstimmenarchiv.de/
sounds/mobs/humanoids/shadow/shadow_wail.ogg -- https://freesound.org/people/Robinhood76/sounds/585631/ -- License: Attribution 4.0
sounds/mobs/humanoids/shadow/shadow_wail.ogg -- https://freesound.org/people/Robinhood76/sounds/585631/ -- License: Attribution 4.0
sound/mobs/non-humanoids/roro/roro_warble.ogg -- Made by cutting, adjusting pitch, and adding echo of https://freesound.org/people/danlucaz/sounds/517734/ -- License: Creating Commons 0

Binary file not shown.

View File

@@ -4782,6 +4782,7 @@
#include "code\modules\mapfluff\ruins\icemoonruin_code\library.dm"
#include "code\modules\mapfluff\ruins\icemoonruin_code\mailroom.dm"
#include "code\modules\mapfluff\ruins\icemoonruin_code\mining_site.dm"
#include "code\modules\mapfluff\ruins\icemoonruin_code\roroco.dm"
#include "code\modules\mapfluff\ruins\icemoonruin_code\wrath.dm"
#include "code\modules\mapfluff\ruins\lavalandruin_code\biodome_clown_planet.dm"
#include "code\modules\mapfluff\ruins\lavalandruin_code\biodome_winter.dm"
@@ -5239,6 +5240,7 @@
#include "code\modules\mob\living\basic\space_fauna\morph.dm"
#include "code\modules\mob\living\basic\space_fauna\mushroom.dm"
#include "code\modules\mob\living\basic\space_fauna\robot_customer.dm"
#include "code\modules\mob\living\basic\space_fauna\roro.dm"
#include "code\modules\mob\living\basic\space_fauna\spaceman.dm"
#include "code\modules\mob\living\basic\space_fauna\supermatter_spider.dm"
#include "code\modules\mob\living\basic\space_fauna\bear\_bear.dm"