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. /🆑
2327
_maps/RandomRuins/IceRuins/icemoon_surface_gloves.dmm
Normal 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.
|
||||
|
||||
@@ -355,6 +355,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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -80,6 +80,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/entemology
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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
|
||||
|
||||
83
code/modules/mapfluff/ruins/icemoonruin_code/roroco.dm
Normal 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
|
||||
68
code/modules/mob/living/basic/space_fauna/roro.dm
Normal 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,
|
||||
)
|
||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 226 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 391 KiB After Width: | Height: | Size: 402 KiB |
@@ -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
|
||||
BIN
sound/mobs/non-humanoids/roro/roro_warble.ogg
Normal file
@@ -4925,6 +4925,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"
|
||||
@@ -5383,6 +5384,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"
|
||||
|
||||