Space ruin: The sieged lab, a submap extravaganza. (#28393)
* Space ruin: The sieged lab, a submap extravaganza. * fix airlock access * fix skiff, make whole lab teleproof for now * indestructible rivet command room * add strategically placed helpful items/spawners * fix gun rack placement * no butchering on harbinger murder * small adjustments * esword drop as a treat, m90 seems excessive * make boss door obvious * Lots of map/boss fixes * Update everything for razor wire, try and unfuck some weird AI behavior * stupid mines * sort and fix comments for different ruin categories * always place ruin for TM * first batch of fixes * reinforce hard rock walls * tweaks * improve hard rock design * tiny cleanups * singleton out med and sci rooms * kitchen rework updatepath * run updatepaths * update maplint exceptions
@@ -0,0 +1,46 @@
|
||||
[
|
||||
{
|
||||
// Sieged Lab: Vertical Hallways
|
||||
"type": "SubmapExtractInsert",
|
||||
"submap_size_x": 2,
|
||||
"submap_size_y": 8,
|
||||
"submap_size_z": 1,
|
||||
"submaps_dmm": "submaps/sieged_lab_submaps.dmm",
|
||||
"marker_extract": "/obj/effect/map_effect/marker/mapmanip/submap/extract/ruin/sieged_lab/vert_hallway",
|
||||
"marker_insert": "/obj/effect/map_effect/marker/mapmanip/submap/insert/ruin/sieged_lab/vert_hallway",
|
||||
"submaps_can_repeat": false
|
||||
},
|
||||
{
|
||||
// Sieged Lab: Horizontal Hallways
|
||||
"type": "SubmapExtractInsert",
|
||||
"submap_size_x": 8,
|
||||
"submap_size_y": 2,
|
||||
"submap_size_z": 1,
|
||||
"submaps_dmm": "submaps/sieged_lab_submaps.dmm",
|
||||
"marker_extract": "/obj/effect/map_effect/marker/mapmanip/submap/extract/ruin/sieged_lab/horiz_hallway",
|
||||
"marker_insert": "/obj/effect/map_effect/marker/mapmanip/submap/insert/ruin/sieged_lab/horiz_hallway",
|
||||
"submaps_can_repeat": false
|
||||
},
|
||||
{
|
||||
// Sieged Lab: Medium-sized Rooms
|
||||
"type": "SubmapExtractInsert",
|
||||
"submap_size_x": 5,
|
||||
"submap_size_y": 6,
|
||||
"submap_size_z": 1,
|
||||
"submaps_dmm": "submaps/sieged_lab_submaps.dmm",
|
||||
"marker_extract": "/obj/effect/map_effect/marker/mapmanip/submap/extract/ruin/sieged_lab/medium_room",
|
||||
"marker_insert": "/obj/effect/map_effect/marker/mapmanip/submap/insert/ruin/sieged_lab/medium_room",
|
||||
"submaps_can_repeat": false
|
||||
},
|
||||
{
|
||||
// Sieged Lab: Wide Rooms
|
||||
"type": "SubmapExtractInsert",
|
||||
"submap_size_x": 9,
|
||||
"submap_size_y": 4,
|
||||
"submap_size_z": 1,
|
||||
"submaps_dmm": "submaps/sieged_lab_submaps.dmm",
|
||||
"marker_extract": "/obj/effect/map_effect/marker/mapmanip/submap/extract/ruin/sieged_lab/wide_room",
|
||||
"marker_insert": "/obj/effect/map_effect/marker/mapmanip/submap/insert/ruin/sieged_lab/wide_room",
|
||||
"submaps_can_repeat": false
|
||||
}
|
||||
]
|
||||
@@ -378,6 +378,13 @@
|
||||
description = "A small Drakehound craft, damaged from an engine malfunction."
|
||||
allow_duplicates = FALSE
|
||||
|
||||
/datum/map_template/ruin/space/sieged_lab
|
||||
id = "sieged_lab"
|
||||
suffix = "sieged_lab.dmm"
|
||||
name = "Sieged Lab"
|
||||
description = "A destroyed laboratory, under siege from forces unknown."
|
||||
allow_duplicates = FALSE
|
||||
|
||||
/datum/map_template/ruin/space/clockwork_monastery
|
||||
id = "clockwork_monastery"
|
||||
suffix = "clockwork_monastery.dmm"
|
||||
|
||||
@@ -198,6 +198,11 @@
|
||||
name = "Abandoned NT Engineering Satellite"
|
||||
apc_starts_off = TRUE
|
||||
|
||||
/area/ruin/space/sieged_lab
|
||||
name = "Laboratory X-18"
|
||||
apc_starts_off = TRUE
|
||||
tele_proof = TRUE
|
||||
|
||||
/area/ruin/space/moonbase19
|
||||
name = "Moon Base 19"
|
||||
apc_starts_off = TRUE
|
||||
|
||||
@@ -5,7 +5,7 @@ GLOBAL_LIST_EMPTY(all_airlock_access_buttons)
|
||||
icon_state = "access_button_standby"
|
||||
name = "airlock access button"
|
||||
desc = "Controls an airlock controller, requesting the doors open on this side."
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
layer = ON_EDGED_TURF_LAYER
|
||||
anchored = TRUE
|
||||
power_channel = PW_CHANNEL_ENVIRONMENT
|
||||
power_state = IDLE_POWER_USE
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//base type for controllers of two-door systems
|
||||
/obj/machinery/airlock_controller
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
layer = ON_EDGED_TURF_LAYER
|
||||
name = "airlock controller"
|
||||
icon = 'icons/obj/airlock_machines.dmi'
|
||||
icon_state = "airlock_control_standby"
|
||||
|
||||
@@ -86,6 +86,10 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
|
||||
var/airlock_material //material of inner filling; if its an airlock with glass, this should be set to "glass"
|
||||
var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
var/note_overlay_file = 'icons/obj/doors/airlocks/station/overlays.dmi' //Used for papers and photos pinned to the airlock
|
||||
var/closed_icon_state = "closed"
|
||||
var/open_icon_state = "open"
|
||||
var/opening_icon_state = "opening"
|
||||
var/closing_icon_state = "closing"
|
||||
var/normal_integrity = AIRLOCK_INTEGRITY_N
|
||||
var/prying_so_hard = FALSE
|
||||
var/paintable = TRUE // If the airlock type can be painted with an airlock painter
|
||||
@@ -385,7 +389,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
|
||||
if(operating && !override)
|
||||
return
|
||||
|
||||
icon_state = density ? "closed" : "open"
|
||||
icon_state = density ? closed_icon_state : open_icon_state
|
||||
switch(state)
|
||||
if(0)
|
||||
if(density)
|
||||
@@ -419,7 +423,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
|
||||
var/mutable_appearance/sparks_underlay
|
||||
switch(state)
|
||||
if(AIRLOCK_CLOSED)
|
||||
frame_overlay = get_airlock_overlay("closed", icon)
|
||||
frame_overlay = get_airlock_overlay(closed_icon_state, icon)
|
||||
buttons_underlay = get_airlock_emissive_underlay("closed_lightmask", overlays_file)
|
||||
if(airlock_material)
|
||||
filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file)
|
||||
@@ -453,7 +457,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
|
||||
if(AIRLOCK_DENY)
|
||||
if(!arePowerSystemsOn())
|
||||
return
|
||||
frame_overlay = get_airlock_overlay("closed", icon)
|
||||
frame_overlay = get_airlock_overlay(closed_icon_state, icon)
|
||||
if(airlock_material)
|
||||
filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file)
|
||||
else
|
||||
@@ -478,7 +482,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
|
||||
note_overlay = get_airlock_overlay(notetype, note_overlay_file)
|
||||
|
||||
if(AIRLOCK_EMAG)
|
||||
frame_overlay = get_airlock_overlay("closed", icon)
|
||||
frame_overlay = get_airlock_overlay(closed_icon_state, icon)
|
||||
buttons_underlay = get_airlock_emissive_underlay("closed_lightmask", overlays_file)
|
||||
sparks_overlay = get_airlock_overlay("sparks", overlays_file)
|
||||
sparks_underlay = get_airlock_emissive_underlay("sparks_lightmask", overlays_file)
|
||||
@@ -504,7 +508,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
|
||||
note_overlay = get_airlock_overlay(notetype, note_overlay_file)
|
||||
|
||||
if(AIRLOCK_CLOSING)
|
||||
frame_overlay = get_airlock_overlay("closing", icon)
|
||||
frame_overlay = get_airlock_overlay(closing_icon_state, icon)
|
||||
buttons_underlay = get_airlock_emissive_underlay("closing_lightmask", overlays_file)
|
||||
if(airlock_material)
|
||||
filling_overlay = get_airlock_overlay("[airlock_material]_closing", overlays_file)
|
||||
@@ -523,7 +527,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
|
||||
note_overlay = get_airlock_overlay("[notetype]_closing", note_overlay_file)
|
||||
|
||||
if(AIRLOCK_OPEN)
|
||||
frame_overlay = get_airlock_overlay("open", icon)
|
||||
frame_overlay = get_airlock_overlay(open_icon_state, icon)
|
||||
if(airlock_material)
|
||||
filling_overlay = get_airlock_overlay("[airlock_material]_open", overlays_file)
|
||||
else
|
||||
@@ -540,7 +544,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
|
||||
note_overlay = get_airlock_overlay("[notetype]_open", note_overlay_file)
|
||||
|
||||
if(AIRLOCK_OPENING)
|
||||
frame_overlay = get_airlock_overlay("opening", icon)
|
||||
frame_overlay = get_airlock_overlay(opening_icon_state, icon)
|
||||
buttons_underlay = get_airlock_emissive_underlay("opening_lightmask", overlays_file)
|
||||
if(airlock_material)
|
||||
filling_overlay = get_airlock_overlay("[airlock_material]_opening", overlays_file)
|
||||
|
||||
@@ -89,8 +89,8 @@
|
||||
// Wise words. - Bxil
|
||||
/obj/machinery/door/poddoor/multi_tile
|
||||
name = "large pod door"
|
||||
layer = CLOSED_DOOR_LAYER
|
||||
closingLayer = CLOSED_DOOR_LAYER
|
||||
layer = CLOSED_BLASTDOOR_LAYER
|
||||
closingLayer = CLOSED_BLASTDOOR_LAYER
|
||||
|
||||
/obj/machinery/door/poddoor/multi_tile/four_tile_ver
|
||||
icon = 'icons/obj/doors/1x4blast_vert.dmi'
|
||||
|
||||
@@ -167,3 +167,9 @@
|
||||
|
||||
/obj/machinery/floodlight/anchored
|
||||
anchored = TRUE
|
||||
|
||||
/obj/machinery/floodlight/anchored/darker_on
|
||||
brightness_on = 4
|
||||
light_power = 5
|
||||
light_range = 5
|
||||
on = TRUE
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
name = "mapmanip marker, extract submap"
|
||||
icon = 'icons/effects/map_effects_96x96.dmi'
|
||||
icon_state = "mapmanip_extract"
|
||||
color = "#ff00cc"
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
@@ -19,6 +20,7 @@
|
||||
name = "mapmanip marker, insert submap"
|
||||
icon = 'icons/effects/map_effects_96x96.dmi'
|
||||
icon_state = "mapmanip_insert"
|
||||
color = "#ff00cc"
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
@@ -34,6 +36,7 @@
|
||||
name = "mapmanip marker helper, submap edge"
|
||||
icon = 'icons/effects/mapping_helpers.dmi'
|
||||
icon_state = "mapmanip_submap_edge"
|
||||
color = "#ff00cc"
|
||||
|
||||
// Farragus mapmanips
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/extract/station/cerestation/engineering_science
|
||||
|
||||
@@ -11,6 +11,19 @@
|
||||
/turf/simulated/wall,
|
||||
)
|
||||
|
||||
/obj/effect/spawner/random/barrier/temporary
|
||||
name = "random temporary barrier spawner"
|
||||
icon = 'icons/effects/random_spawners.dmi'
|
||||
icon_state = "barrier"
|
||||
loot = list(
|
||||
/obj/structure/barricade/wooden,
|
||||
/obj/structure/grille,
|
||||
/obj/structure/grille/broken,
|
||||
/obj/structure/girder,
|
||||
/obj/structure/barricade/security,
|
||||
/obj/structure/barricade/sandbags,
|
||||
)
|
||||
|
||||
/obj/effect/spawner/random/barrier/wall_probably
|
||||
name = "probably a wall"
|
||||
icon_state = "wall"
|
||||
|
||||
@@ -131,4 +131,16 @@ GLOBAL_LIST_EMPTY(flame_effects)
|
||||
mob_to_burn.adjust_fire_stacks(application_stacks)
|
||||
mob_to_burn.IgniteMob()
|
||||
|
||||
/obj/effect/fire/mapping
|
||||
|
||||
/obj/effect/fire/mapping/Initialize(mapload)
|
||||
. = ..(mapload, T0C + 300, 4 HOURS, 1)
|
||||
set_light(3, 3, LIGHT_COLOR_LAVA)
|
||||
|
||||
/obj/effect/fire/water_act(volume, temperature, source, method)
|
||||
. = ..()
|
||||
duration -= 30 MINUTES
|
||||
if(duration <= 0)
|
||||
fizzle()
|
||||
|
||||
#undef MAX_FIRE_EXIST_TIME
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/extract/ruin/sieged_lab/vert_hallway
|
||||
name = "Sieged Lab, Vertical Hallway"
|
||||
color = COLOR_CYAN
|
||||
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/insert/ruin/sieged_lab/vert_hallway
|
||||
name = "Sieged Lab, Vertical Hallway"
|
||||
color = COLOR_CYAN
|
||||
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/extract/ruin/sieged_lab/horiz_hallway
|
||||
name = "Sieged Lab, Horizontal hallway"
|
||||
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/insert/ruin/sieged_lab/horiz_hallway
|
||||
name = "Sieged Lab, Horizontal hallway"
|
||||
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/extract/ruin/sieged_lab/medium_room
|
||||
name = "Sieged Lab, Medium room"
|
||||
color = COLOR_LIME
|
||||
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/insert/ruin/sieged_lab/medium_room
|
||||
name = "Sieged Lab, Medium room"
|
||||
color = COLOR_LIME
|
||||
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/extract/ruin/sieged_lab/wide_room
|
||||
name = "Sieged Lab, Wide room"
|
||||
color = COLOR_SUN
|
||||
|
||||
/obj/effect/map_effect/marker/mapmanip/submap/insert/ruin/sieged_lab/wide_room
|
||||
name = "Sieged Lab, Wide room"
|
||||
color = COLOR_SUN
|
||||
|
||||
// MARK: SYNDICATE BOSS
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/syndicate
|
||||
name = "Syndicate Harbinger"
|
||||
desc = "A blood-crazed, murderous Syndicate fanatic."
|
||||
icon = 'icons/mob/simple_human.dmi'
|
||||
icon_state = "syndicate_harbinger"
|
||||
icon_living = "syndicate_harbinger"
|
||||
speak_emote = list("snarls")
|
||||
projectiletype = /obj/item/projectile/bullet/heavybullet
|
||||
projectilesound = 'sound/weapons/gunshots/gunshot_rifle.ogg'
|
||||
internal_gps = null
|
||||
faction = list("syndicate", "spawned_corpse")
|
||||
attack_action_types = list(/datum/action/innate/megafauna_attack/dash)
|
||||
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
|
||||
var/doors_opened = FALSE
|
||||
pixel_x = 0
|
||||
medal_type = null
|
||||
score_type = null
|
||||
crusher_loot = list()
|
||||
health = 750
|
||||
maxHealth = 750
|
||||
rapid_melee = 3
|
||||
wander = FALSE
|
||||
move_force = MOVE_FORCE_DEFAULT
|
||||
loot = list(/obj/item/organ/internal/cyberimp/arm/razorwire/harbinger)
|
||||
death_simplemob_representation = /obj/effect/temp_visual/dir_setting/syndicate_harbinger_death
|
||||
|
||||
/obj/item/melee/razorwire/harbinger
|
||||
force = 15
|
||||
|
||||
/obj/item/melee/razorwire/harbinger/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "razorwire"
|
||||
item_state = "razorwire"
|
||||
update_icon()
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/razorwire/harbinger
|
||||
contents = newlist(/obj/item/melee/razorwire/harbinger)
|
||||
|
||||
/obj/effect/temp_visual/dir_setting/syndicate_harbinger_death
|
||||
icon = 'icons/mob/simple_human.dmi'
|
||||
icon_state = "syndicate_harbinger"
|
||||
duration = 15
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/syndicate/transform_weapon()
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/syndicate/devour(mob/living/L)
|
||||
// Gibbing seems a bit unfair
|
||||
LoseTarget()
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/syndicate/butcher(mob/living/L)
|
||||
// Gibbing seems a bit unfair
|
||||
LoseTarget()
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/CanAttack(atom/the_target)
|
||||
. = ..()
|
||||
if(isliving(the_target))
|
||||
var/mob/living/L = the_target
|
||||
if(L.stat == DEAD)
|
||||
return FALSE // wtf why is this not already the case
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/syndicate/Initialize(mapload)
|
||||
. = ..()
|
||||
qdel(miner_saw)
|
||||
miner_saw = new/obj/item/melee/razorwire/harbinger(src)
|
||||
|
||||
set_light(2, 2, COLOR_RED)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/syndicate/DestroyPathToTarget()
|
||||
if(!doors_opened)
|
||||
for(var/turf/T in RANGE_TURFS(8, src))
|
||||
for(var/obj/machinery/door/airlock/airlock in T)
|
||||
airlock.open(forced = TRUE)
|
||||
airlock.lock(forced = TRUE)
|
||||
doors_opened = TRUE
|
||||
|
||||
// No turf/window smashing for this guy
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/syndicate/DestroyObjectsInDirection(direction)
|
||||
var/turf/T = get_step(targets_from, direction)
|
||||
if(QDELETED(T))
|
||||
return
|
||||
for(var/obj/O in T.contents)
|
||||
if(!O.Adjacent(targets_from))
|
||||
continue
|
||||
if((ismachinery(O) || isstructure(O)) && O.density && environment_smash >= ENVIRONMENT_SMASH_STRUCTURES && !O.IsObscured())
|
||||
O.attack_animal(src)
|
||||
return
|
||||
|
||||
// MARK: LOOT
|
||||
|
||||
// Hacky solution for allowing us to have random spawns
|
||||
// but make sure we don't spawn the same kind of tech
|
||||
// level research paper twice on the ruin.
|
||||
GLOBAL_LIST_INIT(ruin_sieged_lab_research_loot, list(
|
||||
"materials",
|
||||
"engineering",
|
||||
"plasmatech",
|
||||
"powerstorage",
|
||||
"bluespace",
|
||||
"biotech",
|
||||
"combat",
|
||||
"magnets",
|
||||
"programming"
|
||||
))
|
||||
|
||||
/obj/item/paper/sieged_lab_research_paper
|
||||
|
||||
/obj/item/paper/sieged_lab_research_paper/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!length(GLOB.ruin_sieged_lab_research_loot))
|
||||
log_debug("Ran out of research tech levels for sieged lab loot")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
var/tech_level = rand(7, 9)
|
||||
var/tech_name = pick_n_take(GLOB.ruin_sieged_lab_research_loot)
|
||||
origin_tech = "[tech_name]=[tech_level]"
|
||||
name = "research notes - [tech_name] [tech_level]"
|
||||
|
||||
/obj/effect/spawner/random/sieged_lab/research_paper
|
||||
name = "sieged lab loot research paper spawner"
|
||||
loot = list(
|
||||
/obj/item/paper/sieged_lab_research_paper
|
||||
)
|
||||
|
||||
/obj/machinery/door/airlock/bloody
|
||||
icon_state = "closed_bloody"
|
||||
closed_icon_state = "closed_bloody"
|
||||
opening_icon_state = "opening_bloody"
|
||||
closing_icon_state = "closing_bloody"
|
||||
airlock_material = "_" // sentinel value so we don't try adding fillers of any kind
|
||||
|
||||
/obj/effect/spawner/random/mine
|
||||
name = "50pc landmine"
|
||||
icon = 'icons/effects/random_spawners.dmi'
|
||||
icon_state = "mine"
|
||||
loot = list(/obj/effect/mine/sieged_lab)
|
||||
spawn_loot_chance = 50
|
||||
|
||||
/obj/effect/mine/sieged_lab
|
||||
name = "mine"
|
||||
|
||||
/obj/effect/mine/sieged_lab/mineEffect(mob/living/victim)
|
||||
explosion(loc, 1, 0, 0, 1) // devastate the tile you are on, but leave everything else untouched
|
||||
@@ -233,7 +233,7 @@
|
||||
if(mob_species)
|
||||
H.set_species(mob_species)
|
||||
if(random)
|
||||
H.real_name = random_name(H.gender, H.dna.species)
|
||||
H.real_name = random_name(H.gender, H.dna.species.name)
|
||||
|
||||
if(husk)
|
||||
H.Drain()
|
||||
@@ -311,6 +311,11 @@
|
||||
roundstart = FALSE
|
||||
instant = TRUE
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/create(ckey, flavour, name, mob/user)
|
||||
var/mob/corpse = ..()
|
||||
corpse.faction |= "spawned_corpse"
|
||||
return corpse
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/damaged
|
||||
brute_damage = 1000
|
||||
|
||||
@@ -417,6 +422,12 @@
|
||||
id_job = "Assistant"
|
||||
outfit = /datum/outfit/job/assistant
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/random_species/assistant
|
||||
name = "Assistant"
|
||||
mob_name = "Assistant"
|
||||
id_job = "Assistant"
|
||||
outfit = /datum/outfit/job/assistant
|
||||
|
||||
//Yes you guess it, they have disease in corpse.
|
||||
/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection
|
||||
disease = /datum/disease/beesease
|
||||
@@ -552,6 +563,12 @@
|
||||
id_job = "Medical Doctor"
|
||||
outfit = /datum/outfit/job/doctor
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/random_species/doctor
|
||||
name = "Doctor"
|
||||
mob_name = "Medical Doctor"
|
||||
id_job = "Medical Doctor"
|
||||
outfit = /datum/outfit/job/doctor
|
||||
|
||||
//Engineer corpse.
|
||||
/obj/effect/mob_spawn/human/corpse/engineer
|
||||
name = "Engineer"
|
||||
@@ -559,6 +576,25 @@
|
||||
id_job = "Engineer"
|
||||
outfit = /datum/outfit/job/engineer
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/random_species/engineer
|
||||
name = "Engineer"
|
||||
mob_name = "Engineer"
|
||||
id_job = "Engineer"
|
||||
outfit = /datum/outfit/job/engineer
|
||||
|
||||
/datum/outfit/job/officer/nerfed
|
||||
suit_store = null
|
||||
bio_chips = null
|
||||
l_pocket = null
|
||||
l_ear = null
|
||||
id = null
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/random_species/security_officer
|
||||
name = "Security Officer"
|
||||
mob_name = "Security Officer"
|
||||
id_job = "Security Officer"
|
||||
outfit = /datum/outfit/job/officer/nerfed
|
||||
|
||||
//Mime corpse.
|
||||
/obj/effect/mob_spawn/human/corpse/mime
|
||||
name = "Mime"
|
||||
@@ -599,6 +635,12 @@
|
||||
id_job = "Scientist"
|
||||
outfit = /datum/outfit/job/scientist
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/random_species/scientist
|
||||
name = "Scientist"
|
||||
mob_name = "Scientist"
|
||||
id_job = "Scientist"
|
||||
outfit = /datum/outfit/job/scientist
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/skeleton
|
||||
name = "skeletal remains"
|
||||
mob_name = "skeleton"
|
||||
@@ -643,6 +685,7 @@
|
||||
/datum/species/grey,
|
||||
/datum/species/diona,
|
||||
)
|
||||
del_types |= /obj/item/card/id
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ Difficulty: Medium
|
||||
/datum/action/innate/megafauna_attack/transform_weapon)
|
||||
|
||||
initial_traits = list() // Don't want to inherit flight from parent type /megafauna/
|
||||
var/death_simplemob_representation = /obj/effect/temp_visual/dir_setting/miner_death
|
||||
|
||||
/obj/item/gps/internal/miner
|
||||
icon_state = null
|
||||
@@ -140,7 +141,7 @@ Difficulty: Medium
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/death()
|
||||
if(health > 0)
|
||||
return
|
||||
new /obj/effect/temp_visual/dir_setting/miner_death(loc, dir)
|
||||
new death_simplemob_representation(loc, dir)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Move(atom/newloc)
|
||||
@@ -157,6 +158,16 @@ Difficulty: Medium
|
||||
transform_stop_attack = FALSE
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/butcher(mob/living/L)
|
||||
visible_message("<span class='danger'>[src] butchers [L]!</span>",
|
||||
"<span class='userdanger'>You butcher [L], restoring your health!</span>")
|
||||
if(!is_station_level(z) || client) //NPC monsters won't heal while on station
|
||||
if(guidance)
|
||||
adjustHealth(-L.maxHealth)
|
||||
else
|
||||
adjustHealth(-(L.maxHealth * 0.5))
|
||||
L.gib()
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/AttackingTarget()
|
||||
if(client)
|
||||
transform_stop_attack = FALSE
|
||||
@@ -166,14 +177,7 @@ Difficulty: Medium
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(L.stat == DEAD)
|
||||
visible_message("<span class='danger'>[src] butchers [L]!</span>",
|
||||
"<span class='userdanger'>You butcher [L], restoring your health!</span>")
|
||||
if(!is_station_level(z) || client) //NPC monsters won't heal while on station
|
||||
if(guidance)
|
||||
adjustHealth(-L.maxHealth)
|
||||
else
|
||||
adjustHealth(-(L.maxHealth * 0.5))
|
||||
L.gib()
|
||||
butcher(L)
|
||||
return TRUE
|
||||
changeNext_move(CLICK_CD_MELEE)
|
||||
miner_saw.melee_attack_chain(src, target)
|
||||
|
||||
@@ -452,6 +452,9 @@
|
||||
/obj/machinery/power/smes/engineering
|
||||
charge = 0.08e6 // Engineering starts with some charge for singulo
|
||||
|
||||
/obj/machinery/power/smes/empty
|
||||
charge = 0
|
||||
|
||||
/obj/machinery/power/smes/magical
|
||||
name = "magical power storage unit"
|
||||
desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Magically produces power."
|
||||
|
||||
@@ -628,7 +628,9 @@ lavaland_ruin_budget_max = 500
|
||||
# List of all space ruins that can generate in the world
|
||||
# Commenting something out in here DISABLES IT FROM SPAWNING
|
||||
active_space_ruins = [
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/way_home.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/abandoned_engi_sat.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/asteroid1.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/asteroid2.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/asteroid3.dmm",
|
||||
@@ -637,38 +639,39 @@ active_space_ruins = [
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/asteroidmining1.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/asteroidmining2.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/asteroidmining3.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/casino.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/clockwork_monastery.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/debris2.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/debris3.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/derelict1.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/derelict2.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/derelict3.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/derelict4.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/emptyshell.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/freighter.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/meatpackers.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/debris2.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/debris3.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/voyager.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/abandoned_engi_sat.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/casino.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/rocky_motel.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/freighter.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/sieged_lab.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/turretedoutpost.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/unathi_skiff.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/clockwork_monastery.dmm", ### The following ruins are based from past pre-spawned Zlevel content ###
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/voyager.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/way_home.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm",
|
||||
|
||||
### The following ruins are based from past pre-spawned Zlevel content ###
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/abandonedtele.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/blowntcommsat.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm",
|
||||
@@ -678,8 +681,14 @@ active_space_ruins = [
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/ussp_tele.dmm",
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm", # The following is the white ship ruin. Its force-spawned and is required to stop SSshuttle runtiming on startup # Its also important incase a white-ship console is ever built midround # DO NOT DISABLE THIS UNLESS YOU HAVE A GOOD REASON
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm", # The following is a force-spawned ruin consisting mostly of empty space with a shuttle docking port for the free golem shuttle
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm",
|
||||
|
||||
# The following is the white ship ruin. Its force-spawned and is required to stop SSshuttle runtiming on startup
|
||||
# Its also important incase a white-ship console is ever built midround
|
||||
# DO NOT DISABLE THIS UNLESS YOU HAVE A GOOD REASON
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/whiteship.dmm",
|
||||
|
||||
# The following is a force-spawned ruin consisting mostly of empty space with a shuttle docking port for the free golem shuttle
|
||||
# Disabling it will lead to the free golem shuttle sometimes being stuck on lavaland.
|
||||
"_maps/map_files/RandomRuins/SpaceRuins/golemtarget.dmm",
|
||||
]
|
||||
|
||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 7.5 KiB |
@@ -1752,6 +1752,7 @@
|
||||
#include "code\modules\awaymissions\mission_code\ruins\nian_freighter.dm"
|
||||
#include "code\modules\awaymissions\mission_code\ruins\oldstation.dm"
|
||||
#include "code\modules\awaymissions\mission_code\ruins\processing_facility.dm"
|
||||
#include "code\modules\awaymissions\mission_code\ruins\sieged_lab.dm"
|
||||
#include "code\modules\awaymissions\mission_code\ruins\snowbiodome.dm"
|
||||
#include "code\modules\awaymissions\mission_code\ruins\syndiecakesfactory.dm"
|
||||
#include "code\modules\awaymissions\mission_code\ruins\telecomns.dm"
|
||||
|
||||
@@ -2,6 +2,7 @@ help: "Please use a proper relative area for turfs. If this error is on a submap
|
||||
exclude_files:
|
||||
- _maps/map_files/RandomRuins/SpaceRuins/submaps/rocky_motel_submap.dmm
|
||||
- _maps/map_files/RandomRuins/SpaceRuins/submaps/telecomns_returns_submap.dmm
|
||||
- _maps/map_files/RandomRuins/SpaceRuins/submaps/sieged_lab_submaps.dmm
|
||||
/area/template_noop:
|
||||
banned_neighbors:
|
||||
- /turf/simulated
|
||||
|
||||