Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions code/game/objects/effects/spawners/corpsespawner.dm
Original file line number Diff line number Diff line change
Expand Up @@ -450,3 +450,16 @@

/obj/landmark/corpse/russian/ranged
corpsehelmet = /obj/item/clothing/head/ushanka

/obj/landmark/corpse/skeleton/miner
name = "Fallen Miner"
corpseuniform = /obj/item/clothing/under/rank/miner
corpsesuit = /obj/item/clothing/suit/space/void/mining
corpseshoes = /obj/item/clothing/shoes/color/brown
corpsegloves = /obj/item/clothing/gloves/thick
corpseradio = /obj/item/device/radio/headset/headset_cargo
corpseglasses = /obj/item/clothing/glasses/powered/meson
corpsemask = /obj/item/clothing/mask/breath
corpsebelt = /obj/item/storage/belt/utility
corpseback = /obj/item/storage/backpack
injury_level = 1
13 changes: 13 additions & 0 deletions code/game/objects/structures/crates_lockers/largecrate.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,19 @@
matter = list(MATERIAL_WOOD = 10)
density = TRUE

/obj/structure/largecrate/Initialize(mapload)
..()
return mapload ? INITIALIZE_HINT_LATELOAD : INITIALIZE_HINT_NORMAL

/obj/structure/largecrate/LateInitialize()
. = ..()

//stuff any items on tile into contents when initialized
var/obj/item/I
for(I in src.loc)
if(I.density || I.anchored || I == src) continue
I.forceMove(src)

/obj/structure/largecrate/attack_hand(mob/user)
to_chat(user, span_notice("You need a crowbar to pry this open!"))
return
Expand Down
22 changes: 22 additions & 0 deletions code/game/turfs/unsimulated.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
icon = 'icons/turf/floors.dmi'
icon_state = "Floor3"
is_simulated = FALSE
initial_flooring = null

/turf/floor/dummy/airless
oxygen = 0
Expand All @@ -30,6 +31,27 @@
/turf/floor/dummy/shuttle_ceiling
icon_state = "reinforced"

/turf/floor/dummy/lino
icon_state = "lino"

/turf/floor/dummy/lino/airless
oxygen = 0
nitrogen = 0

/turf/floor/dummy/cult
icon_state = "cult"

/turf/floor/dummy/cult/airless
oxygen = 0
nitrogen = 0

/turf/floor/dummy/freezer
icon_state = "freezerfloor"

/turf/floor/dummy/freezer/airless
oxygen = 0
nitrogen = 0

/turf/mask
name = "mask"
icon = 'icons/turf/walls.dmi'
Expand Down
38 changes: 26 additions & 12 deletions code/modules/mining/drilling/cave_generator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
#define CAVE_COOLDOWN 5 MINUTES
#define CAVE_COLLAPSE 3 MINUTES

#define POI_SIZE_SMALL 1 //several of these smaller pois are allowed to spawn
#define POI_SIZE_LARGE 2 //only one of these larger pois are allowed to spawn

// Cave generator statuses
#define CAVE_CLOSED 0
#define CAVE_GENERATING 1
Expand Down Expand Up @@ -206,17 +209,28 @@
pois_placed = list()
pois_placed_pos = list()

// Get pool of points of interest for current seismic level
var/list/datum/map_template/cave_pois/pool = list()
if (!length(pool_pois))
stack_trace("pool_pois is of 0 length!")
for(var/datum/map_template/cave_pois/cave_poi_tmpl as anything in pool_pois)
if(cave_poi_tmpl.min_seismic_lvl >= seismic_lvl)
pool += cave_poi_tmpl.type
pool[cave_poi_tmpl.type] = cave_poi_tmpl.spawn_prob

// Place a few pois on the map
var/N_pois = rand(2, 4)
// Get pools of points of interest for current seismic_lvl
var/list/datum/map_template/cave_pois/small_pool = list()
var/list/datum/map_template/cave_pois/big_pool = list()
for(var/datum/map_template/cave_pois/cave_poi_tmpl in pool_pois)
if(cave_poi_tmpl.min_seismic_lvl <= seismic_lvl && cave_poi_tmpl.max_seismic_lvl >= seismic_lvl)
if(cave_poi_tmpl.size == POI_SIZE_LARGE)
big_pool += cave_poi_tmpl.type
big_pool[cave_poi_tmpl.type] = cave_poi_tmpl.spawn_prob
else
small_pool += cave_poi_tmpl.type
small_pool[cave_poi_tmpl.type] = cave_poi_tmpl.spawn_prob

var/N_pois_small = rand(3, 4)
var/N_pois_large = rand(0, 1)
if(seismic_lvl <= 3)//lower levels only get a few pois
N_pois_small = rand(2, 3)
generate_pool_pois(N_pois_small, small_pool)// Place a few pois on the map
if(N_pois_large)
generate_pool_pois(N_pois_large, big_pool)

//generates pois for a specific pool
/obj/cave_generator/proc/generate_pool_pois(N_pois, var/list/pool)
for(var/i = 1 to N_pois)
var/poi_path = pickweight_n_take(pool)
var/datum/map_template/cave_pois/poi = new poi_path()
Expand Down Expand Up @@ -361,7 +375,7 @@
status = CAVE_GENERATING

spawn(0)
// Generate the map for the given seismic level
// Generate the map for the given seismic_lvl
generate_map(seismic_lvl)

// Place the up ladder on a free spot in the cave
Expand Down
18 changes: 15 additions & 3 deletions code/modules/mining/mining_turret.dm
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,13 @@
if(!check_trajectory(L, src))
return TURRET_NOT_TARGET

if(emagged) // If emagged not even the dead get a rest
return L.stat ? TURRET_SECONDARY_TARGET : TURRET_PRIORITY_TARGET

if(L.stat == DEAD)
return TURRET_NOT_TARGET

//the dead can now rest (to spare the mc from processing infinite turret spam)
if(emagged)
return L.stat ? TURRET_SECONDARY_TARGET : TURRET_PRIORITY_TARGET

if(!isgolem(L)) // Only target golems
return TURRET_NOT_TARGET

Expand Down Expand Up @@ -129,6 +130,17 @@
//Shooting Code:
A.launch(target, def_zone)

/obj/machinery/porta_turret/mining/rogue
name = "malfunctioning mining turret"
desc = "A fully automated anti golem platform ...wait, why is it pointing at-"
//rusty
color = "#a48e70"
health = 45
shot_delay = 10

emagged = TRUE
anchored = TRUE

#undef TURRET_PRIORITY_TARGET
#undef TURRET_SECONDARY_TARGET
#undef TURRET_NOT_TARGET
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
. = ..()

// Spawn ores
if(mineral)
if(mineral && loc)
var/nb_ores = CEILING((mineral.result_amount + rand(-3, 3)) * oremult, 1)
for(var/i in 1 to nb_ores)
new mineral.ore(loc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@
visible_message(span_danger("\The [src] starts glowing!"))
icon_state = "golem_plasma_explosion"
spawn(det_time)
// Plasma ball on location
visible_message(span_danger("\The [src] explodes into a ball of burning plasma!"))
for(var/turf/floor/target_tile as anything in RANGE_TURFS(2, get_turf(src)))
new /obj/effect/decal/cleanable/liquid_fuel(target_tile, 2, 1)
target_tile.hotspot_expose((T20C * 2) + 380, 500) // From flamethrower code
if(loc)//don't explode in nullspace idiot
visible_message(span_danger("\The [src] explodes into a ball of burning plasma!"))
for(var/turf/floor/target_tile as anything in RANGE_TURFS(2, loc))// Plasma ball on location
new /obj/effect/decal/cleanable/liquid_fuel(target_tile, 2, 1)
target_tile.hotspot_expose((T20C * 2) + 380, 500) // From flamethrower code
. = ..()

/mob/living/carbon/superior_animal/golem/plasma/UnarmedAttack(atom/A, proximity)
Expand Down
Loading
Loading