Purges Unused Mining Files

This commit is contained in:
Fox-McCloud
2016-07-24 07:31:04 -04:00
parent 3215dbe875
commit 2a3b3fbcb5
10 changed files with 0 additions and 2507 deletions
-27
View File
@@ -1,27 +0,0 @@
//Alloys that contain subsets of each other's ingredients must be ordered in the desired sequence
//eg. steel comes after plasteel because plasteel's ingredients contain the ingredients for steel and
//it would be impossible to produce.
/datum/alloy
var/list/requires
var/product_mod = 1
var/product
var/metaltag
/datum/alloy/plasteel
metaltag = "plasteel"
requires = list(
"platinum" = 1,
"coal" = 2,
"hematite" = 2
)
product_mod = 0.3
product = /obj/item/stack/sheet/plasteel
/datum/alloy/steel
metaltag = "steel"
requires = list(
"coal" = 1,
"hematite" = 1
)
product = /obj/item/stack/sheet/metal
File diff suppressed because it is too large Load Diff
-147
View File
@@ -1,147 +0,0 @@
/**
* Materials system
*
* Replaces all of the horrible variables that tracked each individual thing.
*/
/**
* MATERIALS DATUM
*
* Tracks and manages material storage for an object.
*/
/datum/materials
var/list/datum/material/storage[0]
/datum/materials/New()
for(var/matdata in subtypesof(/datum/material))
var/datum/material/mat = new matdata
storage[mat.id]=mat
/datum/materials/proc/addAmount(var/mat_id,var/amount)
if(!(mat_id in storage))
warning("addAmount(): Unknown material [mat_id]!")
return
// I HATE BYOND
// storage[mat_id].stored++
var/datum/material/mat=storage[mat_id]
mat.stored += amount
storage[mat_id]=mat
/datum/materials/proc/removeAmount(var/mat_id,var/amount)
if(!(mat_id in storage))
warning("removeAmount(): Unknown material [mat_id]!")
return
addAmount(mat_id,-amount)
/datum/materials/proc/getAmount(var/mat_id)
if(!(mat_id in storage))
warning("getAmount(): Unknown material [mat_id]!")
return 0
var/datum/material/mat=getMaterial(mat_id)
return mat.stored
/datum/materials/proc/getMaterial(var/mat_id)
if(!(mat_id in storage))
warning("getMaterial(): Unknown material [mat_id]!")
return 0
return storage[mat_id]
/datum/material
var/name=""
var/processed_name=""
var/id=""
var/stored=0
var/cc_per_sheet=CC_PER_SHEET_MISC
var/oretype=null
var/sheettype=null
var/cointype=null
var/value=0
/datum/material/New()
if(processed_name=="")
processed_name=name
/datum/material/iron
name="Iron"
id="iron"
value=1
cc_per_sheet=CC_PER_SHEET_METAL
oretype=/obj/item/weapon/ore/iron
sheettype=/obj/item/stack/sheet/metal
cointype=/obj/item/weapon/coin/iron
/datum/material/glass
name="Sand"
processed_name="Glass"
id="glass"
value=1
cc_per_sheet=CC_PER_SHEET_GLASS
oretype=/obj/item/weapon/ore/glass
sheettype=/obj/item/stack/sheet/glass
/datum/material/diamond
name="Diamond"
id="diamond"
value=40
oretype=/obj/item/weapon/ore/diamond
sheettype=/obj/item/stack/sheet/mineral/diamond
cointype=/obj/item/weapon/coin/diamond
/datum/material/plasma
name="Plasma"
id="plasma"
value=40
oretype=/obj/item/weapon/ore/plasma
sheettype=/obj/item/stack/sheet/mineral/plasma
cointype=/obj/item/weapon/coin/plasma
/datum/material/gold
name="Gold"
id="gold"
value=20
oretype=/obj/item/weapon/ore/gold
sheettype=/obj/item/stack/sheet/mineral/gold
cointype=/obj/item/weapon/coin/gold
/datum/material/silver
name="Silver"
id="silver"
value=20
oretype=/obj/item/weapon/ore/silver
sheettype=/obj/item/stack/sheet/mineral/silver
cointype=/obj/item/weapon/coin/silver
/datum/material/uranium
name="Uranium"
id="uranium"
value=20
oretype=/obj/item/weapon/ore/uranium
sheettype=/obj/item/stack/sheet/mineral/uranium
cointype=/obj/item/weapon/coin/uranium
/datum/material/clown
name="Bananium"
id="clown"
value=100
oretype=/obj/item/weapon/ore/clown
sheettype=/obj/item/stack/sheet/mineral/clown
cointype=/obj/item/weapon/coin/clown
/datum/material/plastic
name="Plastic"
id="plastic"
value=1
oretype=null
sheettype=/obj/item/stack/sheet/mineral/plastic
cointype=null
/datum/material/fabric
name="Fabric"
id="fabric"
value=20
oretype=/obj/item/weapon/ore/fabric
sheettype=null
cointype=null
-107
View File
@@ -1,107 +0,0 @@
var/list/name_to_mineral
proc/SetupMinerals()
name_to_mineral = list()
for(var/type in subtypesof(/mineral))
var/mineral/new_mineral = new type
if(!new_mineral.name)
continue
name_to_mineral[new_mineral.name] = new_mineral
return 1
mineral
///What am I called?
var/name
var/display_name
///How much ore?
var/result_amount
///Does this type of deposit spread?
var/spread = 1
///Chance of spreading in any direction
var/spread_chance
///Path to the resultant ore.
var/ore
New()
. = ..()
if(!display_name)
display_name = name
proc/UpdateTurf(var/turf/simulated/mineral/T)
T.UpdateMineral()
mineral/uranium
name = "Uranium"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/uranium
mineral/iron
name = "Iron"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/iron
mineral/diamond
name = "Diamond"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/diamond
mineral/gold
name = "Gold"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/gold
mineral/silver
name = "Silver"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/silver
mineral/platinum
name = "Platinum"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/osmium
mineral/plasma
name = "Plasma"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/plasma
mineral/clown
display_name = "Bananium"
name = "Clown"
result_amount = 3
spread = 0
ore = /obj/item/weapon/ore/clown
mineral/coal
name = "Coal"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/coal
mineral/hydrogen
name = "Hydrogen"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/coal
mineral/cave
display_name = "Cave"
name = "Cave"
result_amount = 1
spread_chance = 10
ore = null
UpdateTurf(var/turf/T)
if(!istype(T,/turf/simulated/floor/plating/airless/asteroid/cave))
T.ChangeTurf(/turf/simulated/floor/plating/airless/asteroid/cave)
else
..()
-252
View File
@@ -1,252 +0,0 @@
/obj/machinery/manufacturer/mining
name = "Mining Fabricator"
desc = "A manufacturing unit calibrated to produce mining related equipment."
acceptdisk = 1
New()
..()
src.available += new /datum/manufacture/pick(src)
src.available += new /datum/manufacture/shovel(src)
src.available += new /datum/manufacture/oresatchel(src)
src.available += new /datum/manufacture/breathmask(src)
src.available += new /datum/manufacture/spacesuit(src)
src.available += new /datum/manufacture/spacehelm(src)
src.available += new /datum/manufacture/eyes_meson(src)
src.hidden += new /datum/manufacture/RCD(src)
src.hidden += new /datum/manufacture/RCDammo(src)
// Mining Gear
/datum/manufacture/pick
name = "Pickaxe"
item = /obj/item/weapon/pickaxe
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 5
time = 5
create = 1
/datum/manufacture/shovel
name = "Shovel"
item = /obj/item/weapon/shovel
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 3
time = 2
create = 1
/datum/manufacture/spick
name = "Silver Pickaxe"
item = /obj/item/weapon/pickaxe/silver
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 5
cost2 = /obj/item/weapon/ore/silver
cname2 = "Silver"
amount2 = 5
time = 10
create = 1
/datum/manufacture/gpick
name = "Gold Pickaxe"
item = /obj/item/weapon/pickaxe/gold
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 5
cost2 = /obj/item/weapon/ore/gold
cname2 = "Gold"
amount2 = 5
time = 15
create = 1
/datum/manufacture/dpick
name = "Diamond Pickaxe"
item = /obj/item/weapon/pickaxe/diamond
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 5
cost2 = /obj/item/weapon/ore/diamond
cname2 = "Uranium"
amount2 = 5
time = 30
create = 1
/datum/manufacture/jackhammer
name = "Sonic Jackhammer"
item = /obj/item/weapon/pickaxe/jackhammer
cost1 = /obj/item/weapon/ore/gold
cname1 = "Gold"
amount1 = 8
cost2 = /obj/item/weapon/ore/silver
cname2 = "Silver"
amount2 = 12
time = 30
create = 1
/datum/manufacture/drill
name = "Hand Drill"
item = /obj/item/weapon/pickaxe/drill
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 15
time = 20
create = 1
/datum/manufacture/diamonddrill
name = "Diamond Drill"
item = /obj/item/weapon/pickaxe/diamonddrill
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 15
cost2 = /obj/item/weapon/ore/diamond
cname2 = "Diamond"
amount2 = 15
cost3 = /obj/item/weapon/ore/silver
cname3 = "Silver"
amount3 = 15
time = 40
create = 1
/datum/manufacture/cutter
name = "Plasma Cutter"
item = /obj/item/weapon/pickaxe/plasmacutter
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 10
cost2 = /obj/item/weapon/ore/gold
cname2 = "Gold"
amount2 = 10
cost3 = /obj/item/weapon/ore/plasma
cname3 = "Plasma"
amount3 = 15
time = 30
create = 1
/datum/manufacture/eyes_meson
name = "Optical Meson Scanner"
item = /obj/item/clothing/glasses/meson
cost1 = /obj/item/weapon/ore/glass
cname1 = "Glass"
amount1 = 5
cost2 = /obj/item/weapon/ore/silver
cname2 = "Silver"
amount2 = 3
time = 10
create = 1
/datum/manufacture/miningsuit
name = "Mining Hardsuit"
item = /obj/item/clothing/suit/space/rig/mining
cost1 = /obj/item/weapon/ore/osmium
cname1 = "Platinum"
amount1 = 30
cost2 = /obj/item/weapon/ore/iron
cname2 = "Iron"
amount2 = 30
time = 30
create = 1
/datum/manufacture/mininghelm
name = "Mining Hardsuit Helmet"
item = /obj/item/clothing/head/helmet/space/rig/mining
cost1 = /obj/item/weapon/ore/osmium
cname1 = "Platinum"
amount1 = 30
cost2 = /obj/item/weapon/ore/iron
cname2 = "Iron"
amount2 = 30
time = 20
create = 1
/datum/manufacture/breathmask
name = "Breath Mask"
item = /obj/item/clothing/mask/breath
cost1 = /obj/item/weapon/ore/fabric
cname1 = "Fabric"
amount1 = 1
time = 5
create = 1
/datum/manufacture/spacesuit
name = "Space Suit"
item = /obj/item/clothing/suit/space
cost1 = /obj/item/weapon/ore/fabric
cname1 = "Fabric"
amount1 = 5
cost2 = /obj/item/weapon/ore/iron
cname2 = "Iron"
amount2 = 5
time = 15
create = 1
/datum/manufacture/spacehelm
name = "Space Helmet"
item = /obj/item/clothing/head/helmet/space
cost1 = /obj/item/weapon/ore/fabric
cname1 = "Fabric"
amount1 = 5
cost2 = /obj/item/weapon/ore/glass
cname2 = "Glass"
amount2 = 5
time = 10
create = 1
/datum/manufacture/oresatchel
name = "Ore Satchel"
item = /obj/item/weapon/storage/bag/ore
cost1 = /obj/item/weapon/ore/fabric
cname1 = "Fabric"
amount1 = 5
time = 5
create = 1
/datum/manufacture/jetpack
name = "Jetpack"
item = /obj/item/weapon/tank/jetpack
cost1 = /obj/item/weapon/ore/gold
cname1 = "Gold"
amount1 = 15
cost2 = /obj/item/weapon/ore/silver
cname2 = "Silver"
amount2 = 20
time = 30
create = 1
//Diskettes!
/obj/item/weapon/disk/data/schematic/mining1
name = "Mining Schematics Level 1"
desc = "Contains the schematics for a new range of Pickaxes."
New()
src.schematics += new /datum/manufacture/spick(src)
src.schematics += new /datum/manufacture/gpick(src)
src.schematics += new /datum/manufacture/dpick(src)
/obj/item/weapon/disk/data/schematic/mining2
name = "Mining Schematics Level 2"
desc = "Contains the schematics for a new line of drills. And a Plasma Cutter. Has the previous level as well."
New()
src.schematics += new /datum/manufacture/spick(src)
src.schematics += new /datum/manufacture/gpick(src)
src.schematics += new /datum/manufacture/dpick(src)
src.schematics += new /datum/manufacture/drill(src)
src.schematics += new /datum/manufacture/jackhammer(src)
src.schematics += new /datum/manufacture/diamonddrill(src)
src.schematics += new /datum/manufacture/cutter(src)
/obj/item/weapon/disk/data/schematic/mining3
name = "Mining Schematics Level 3"
desc = "Contains the schematics for a new type of Spacesuit, and schematics for a Jetpack. Has the previous levels as well."
New()
src.schematics += new /datum/manufacture/spick(src)
src.schematics += new /datum/manufacture/gpick(src)
src.schematics += new /datum/manufacture/dpick(src)
src.schematics += new /datum/manufacture/drill(src)
src.schematics += new /datum/manufacture/jackhammer(src)
src.schematics += new /datum/manufacture/diamonddrill(src)
src.schematics += new /datum/manufacture/cutter(src)
src.schematics += new /datum/manufacture/miningsuit(src)
src.schematics += new /datum/manufacture/mininghelm(src)
src.schematics += new /datum/manufacture/jetpack(src)
-55
View File
@@ -1,55 +0,0 @@
/datum/ore
var/oretag
var/alloy
var/smelts_to
var/compresses_to
/datum/ore/uranium
smelts_to = /obj/item/stack/sheet/mineral/uranium
oretag = "uranium"
/datum/ore/iron
smelts_to = /obj/item/stack/sheet/mineral/iron
alloy = 1
oretag = "hematite"
/datum/ore/coal
smelts_to = /obj/item/stack/sheet/mineral/plastic
alloy = 1
oretag = "coal"
/datum/ore/glass
smelts_to = /obj/item/stack/sheet/glass
compresses_to = /obj/item/stack/sheet/mineral/sandstone
oretag = "sand"
/datum/ore/plasma
smelts_to = /obj/item/stack/sheet/mineral/plasma
oretag = "plasma"
/datum/ore/silver
smelts_to = /obj/item/stack/sheet/mineral/silver
oretag = "silver"
/datum/ore/gold
smelts_to = /obj/item/stack/sheet/mineral/gold
oretag = "gold"
/datum/ore/diamond
compresses_to = /obj/item/stack/sheet/mineral/diamond
oretag = "diamond"
/datum/ore/osmium
smelts_to = /obj/item/stack/sheet/mineral/platinum
compresses_to = /obj/item/stack/sheet/mineral/osmium
alloy = 1
oretag = "platinum"
/datum/ore/hydrogen
smelts_to = /obj/item/stack/sheet/mineral/tritium
compresses_to = /obj/item/stack/sheet/mineral/mhydrogen
oretag = "hydrogen"
/datum/ore/clown
smelts_to = /obj/item/stack/sheet/mineral/clown
oretag = "clown"
-128
View File
@@ -1,128 +0,0 @@
/obj/machinery/manufacturer/security
name = "Security Fabricator"
desc = "A manufacturing unit calibrated to produce security and military related equipment."
acceptdisk = 1
New()
..()
src.available += new /datum/manufacture/beret(src)
src.available += new /datum/manufacture/helmet1(src)
src.available += new /datum/manufacture/sunglasses(src)
src.available += new /datum/manufacture/sechud(src)
src.available += new /datum/manufacture/secpants(src)
src.available += new /datum/manufacture/secbelt(src)
src.available += new /datum/manufacture/armor1(src)
src.available += new /datum/manufacture/taser(src)
src.available += new /datum/manufacture/baton(src)
// Security Gear Tier-0. AKA Clothing and basic as shit gear.
/datum/manufacture/beret
name = "Beret"
item = /obj/item/clothing/head/beret/sec
cost1 = /obj/item/weapon/ore/fabric
cname1 = "Fabric"
amount1 = 2
time = 3
create = 1
/datum/manufacture/helmet1
name = "Helmet"
item = /obj/item/clothing/head/helmet
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 10
cost2 = /obj/item/weapon/ore/fabric
cname2 = "Fabric"
amount2 = 10
time = 10
create = 1
/datum/manufacture/sunglasses
name = "Sunglasses"
item = /obj/item/clothing/glasses/sunglasses
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 5
cost2 = /obj/item/weapon/ore/glass
cname2 = "Glass"
amount2 = 10
time = 8
create = 1
/datum/manufacture/sechud
name = "Security HUD"
item = /obj/item/clothing/glasses/hud/security
cost1 = /obj/item/weapon/ore/osmium
cname1 = "Platinum"
amount1 = 10
cost2 = /obj/item/weapon/ore/glass
cname2 = "Glass"
amount2 = 15
time = 12
create = 1
/datum/manufacture/secpants
name = "Security Uniform"
item = /obj/item/clothing/under/rank/security
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 2
cost2 = /obj/item/weapon/ore/fabric
cname2 = "Fabric"
amount2 = 1
time = 10
create = 1
/datum/manufacture/secbelt
name = "Security Belt"
item = /obj/item/weapon/storage/belt/security
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 2
cost2 = /obj/item/weapon/ore/fabric
cname2 = "Fabric"
amount2 = 5
time = 15
create = 1
/datum/manufacture/armor1
name = "Armored Vest"
item = /obj/item/clothing/suit/armor/vest
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 15
cost2 = /obj/item/weapon/ore/fabric
cname2 = "Fabric"
amount2 = 15
time = 20
create = 1
/datum/manufacture/taser
name = "Advanced Taser"
item = /obj/item/weapon/gun/energy/gun/advtaser
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 15
cost2 = /obj/item/weapon/ore/glass
cname2 = "Glass"
amount2 = 10
cost3 = /obj/item/weapon/ore/osmium
cname3 = "Platinum"
amount3 = 20
time = 25
create = 1
/datum/manufacture/baton
name = "Stun Baton"
item = /obj/item/weapon/melee/baton
cost1 = /obj/item/weapon/ore/iron
cname1 = "Iron"
amount1 = 10
cost2 = /obj/item/weapon/ore/glass
cname2 = "Glass"
amount2 = 10
cost3 = /obj/item/weapon/ore/osmium
cname3 = "Platinum"
amount3 = 15
time = 20
create = 1
-342
View File
@@ -1,342 +0,0 @@
#define CONTIGUOUS_WALLS 1
#define CONTIGUOUS_FLOORS 2
#define TURF_FLOOR 0
#define TURF_WALL 1
var/global/list/mining_surprises = subtypesof(/mining_surprise)
/surprise_turf_info
var/list/types[0]
var/list/adjacents
var/turf_type=TURF_FLOOR
New()
adjacents=list(
"[NORTH]"=list(),
"[SOUTH]"=list(),
"[EAST]"=list(),
"[WEST]"=list()
)
proc/GetAdjacentTypes(var/dir)
return adjacents["[dir]"]
/surprise_room
var/list/turfs[0]
// Used for layout system.
var/list/turf_info[0]
var/size_x=0
var/size_y=0
proc/UpdateTurfs()
for(var/turf/T in turfs)
UpdateTurf(T)
proc/GetTurfs(var/ttype)
var/list/selected[0]
for(var/turf/T in turfs)
var/surprise_turf_info/Ti = GetTurfInfo(T)
if(Ti.turf_type==ttype)
selected |= T
return selected
proc/GetTurfInfo(var/turf/T)
var/surprise_turf_info/sti
if(!(T in turf_info))
sti = new
turf_info[T]=sti
else
sti = turf_info[T]
return sti
proc/UpdateTurf(var/turf/T, var/no_adjacent=0)
// List types in this turf.
var/surprise_turf_info/sti = GetTurfInfo(T)
sti.types=0
for(var/atom/A in T.contents)
sti.types |= A.type
if(no_adjacent) return
UpdateAdjacentsOfTurf(T)
proc/AddTypeToTurf(var/turf/T, var/newtype)
var/surprise_turf_info/sti = GetTurfInfo(T)
sti.types |= newtype
//UpdateAdjacentsOfTurf(T)
proc/UpdateAdjacentsOfTurf(var/turf/T)
var/surprise_turf_info/Ti = turf_info[T]
for(var/dir in cardinal)
var/turf/AT = get_step(T,dir)
if(!(AT in turfs))
return
if(!(AT in turf_info))
UpdateTurf(AT, no_adjacent=1)
var/surprise_turf_info/ATi = turf_info[AT]
// By-Ref so shit gets updated.
ATi.adjacents["[reverse_direction(dir)]"]=Ti.types
// For room layouts.
/layout_rule
var/mining_surprise/root
var/surprise_room/room
// What to place if true
var/placetype=null
var/min_to_place=5 // Force placement at ALL candidates.
var/max_to_place=10 // 0 = max amount of ALL candidates.
var/placed_times=0
var/list/decorations=list() // types, empty for no decorations
var/flags = 0
New(var/mining_surprise/_root,var/surprise_room/_room)
root=_root
room=_room
// Called in Evaluate
proc/Plop(var/turf/T)
new placetype(T)
placed_times++
room.AddTypeToTurf(T,placetype)
if(decorations.len)
var/decoration = pickweight(decorations)
new decoration(T)
room.AddTypeToTurf(T,decoration)
// Return 1 if we Plop()'d something.
// Return 0 if we didn't or something went wrong.
proc/Evaluate()
var/list/candidates=GetCandidates()
if(candidates.len==0)
return 0
if(max_to_place<=0)
max_to_place=candidates.len
var/n=candidates.len
if(min_to_place>0)
n = min(candidates.len,rand(min_to_place,max_to_place))
if(n==0)
return 0
for(var/i=0;i<n;i++)
var/turf/T = candidates[1]
candidates-=T
Plop(T)
// Return list of turfs.
proc/GetCandidates()
return list()
/layout_rule/place_adjacent
// MUST be next to any of these. Anywhere if not set.
var/list/next_to=list(
// type = list(NORTH,SOUTH,etc)
)
// MUST NOT be next to these.
var/list/not_next_to=list(
// type = list(NORTH,SOUTH,etc)
)
GetCandidates()
// Organize next_to/not_next_to so it's easier to use.
var/list/opt_nt[0]
var/list/opt_nnt[0]
var/list/candidates[0]
for(var/dir in cardinal)
var/di = "[dir]"
if(!di in opt_nt)
opt_nt[di]=list()
opt_nnt[di]=list()
for(var/t in next_to)
if(dir in next_to[t])
var/list/tl = opt_nt[di]
tl |= t
for(var/t in not_next_to)
if(dir in not_next_to[t])
var/list/tl = opt_nnt[di]
tl |= t
// Check each turf.
for(var/turf/T in room.turfs)
if(IsTurfCandidate(T,opt_nt,opt_nnt))
candidates += T
return candidates
proc/IsTurfCandidate(var/turf/T,var/list/opt_nt,var/list/opt_nnt)
var/surprise_turf_info/sti = room.GetTurfInfo(T)
for(var/dir in cardinal)
var/di = "[dir]"
for(var/_type in sti.adjacents[di])
if(_type in opt_nnt[di])
return 0
if(_type in opt_nt[di])
return 1
return 1
/mining_surprise
var/name = "Hidden Complex"
//: Types of floor to use
var/list/floortypes[0]
var/list/walltypes[0]
var/list/spawntypes[0]
var/list/fluffitems[0]
var/max_richness=2
//: How many rooms?
var/complex_max_size=1
var/room_size_max=5
var/flags=0
var/list/rooms=list()
var/list/goodies=list()
var/list/candidates=list()
var/area/asteroid/artifactroom/complex_area
proc/spawn_complex(var/atom/start_loc)
name = "[initial(name)] #[rand(100,999)]"
complex_area = new
complex_area.name = name
var/atom/pos=start_loc
var/nrooms=complex_max_size
var/maxtries=50
var/l_size_x=0
var/l_size_y=0
while(nrooms && maxtries)
var/sx=rand(3,room_size_max)
var/sy=rand(3,room_size_max)
var/o_x=l_size_x?rand(0,l_size_x):0
var/o_y=l_size_y?rand(0,l_size_y):0
var/atom/npos
switch(pick(cardinal))
if(NORTH)
npos=locate(pos.x+o_x, pos.y+sy-1, pos.z)
if(SOUTH)
npos=locate(pos.x+o_x, pos.y-sy+1, pos.z)
if(WEST)
npos=locate(pos.x-sx-1, pos.y+o_y, pos.z)
if(EAST)
npos=locate(pos.x+sx+1, pos.y+o_y, pos.z)
if(spawn_room(npos,sx,sy,1))
pos=npos
l_size_x=sx
l_size_y=sy
else if(complex_max_size==nrooms)
// Failed to make first room, abort.
del(complex_area)
return 0
else
maxtries--
continue
nrooms--
postProcessComplex()
message_admins("Complex spawned at [formatJumpTo(start_loc)]")
return 1
proc/postProcessRoom(var/surprise_room/room)
for(var/turf/floor in room.turfs)
if(floor.density) continue
for(var/turf/T in floor.AdjacentTurfs())
if(T in room.turfs)
if(T.density) continue
candidates|=T
break
proc/postProcessComplex()
for(var/i=0;i<=rand(1,max_richness);i++)
if(!candidates.len)
return
var/turf/T = pick(candidates)
var/thing = pickweight(spawntypes)
if(thing==null)
continue
new thing(T)
candidates -= T
message_admins("Goodie [thing] spawned at [formatJumpTo(T)]")
for(var/i=0;i<=rand(5,10);i++)
if(!candidates.len)
return
var/turf/T = pick(candidates)
var/thing = pickweight(fluffitems)
if(thing==null)
continue
new thing(T)
proc/spawn_room(var/atom/start_loc, var/x_size, var/y_size, var/clean=0)
if(!check_complex_placement(start_loc,x_size,y_size))
return 0
// If walls/floors are contiguous, pick them out.
var/wall_type
if(flags & CONTIGUOUS_WALLS)
wall_type = pickweight(walltypes)
var/floor_type
if(flags & CONTIGUOUS_FLOORS)
floor_type = pickweight(floortypes)
var/list/walls[0]
var/list/floors[0]
for(var/x = 0,x<x_size,x++)
for(var/y = 0,y<y_size,y++)
var/turf/cur_loc = locate(start_loc.x+x,start_loc.y+y,start_loc.z)
if(clean)
for(var/O in cur_loc)
qdel(O)
if(x == 0 || x==x_size-1 || y==0 || y==y_size-1)
walls |= cur_loc
else
floors |= cur_loc
var/surprise_room/room = new
for(var/turf/turf in walls)
if(!(flags & CONTIGUOUS_WALLS))
wall_type=pickweight(walltypes)
var/turf/T
if(dd_hasprefix("[wall_type]","/obj"))
if(!(flags & CONTIGUOUS_FLOORS))
floor_type=pickweight(floortypes)
T=new floor_type(turf)
new wall_type(T)
else
//testing("Creating wall of type [wall_type].")
T=new wall_type(turf)
room.turfs += T
complex_area.contents += T
var/surprise_turf_info/Ti = room.GetTurfInfo(T)
Ti.turf_type=TURF_WALL
for(var/turf/turf in floors)
if(!(flags & CONTIGUOUS_FLOORS))
floor_type=pickweight(floortypes)
var/turf/T = new floor_type(turf)
room.turfs += T
complex_area.contents += T
var/surprise_turf_info/Ti = room.GetTurfInfo(T)
Ti.turf_type=TURF_FLOOR
room.UpdateTurfs()
postProcessRoom(room)
rooms += room
message_admins("Room spawned at [formatJumpTo(start_loc)]")
return 1
-181
View File
@@ -1,181 +0,0 @@
///////////////////
// /tg/ Surprises
///////////////////
/mining_surprise/organharvest
walltypes = list(
/turf/simulated/wall/r_wall=2,
/turf/simulated/wall=2,
/turf/simulated/mineral/random/high_chance=1
)
floortypes = list(
/turf/simulated/floor=1,
/turf/simulated/floor/engine=1
)
spawntypes = list(
/obj/item/device/mass_spectrometer/adv=1,
/obj/item/clothing/glasses/hud/health=1,
/obj/machinery/bot/medbot/syndicate=1
)
fluffitems = list(
/obj/effect/decal/cleanable/blood=5,
/obj/item/weapon/reagent_containers/food/snacks/appendix=2, // OM NOM
/obj/structure/closet/crate/freezer=2,
/obj/machinery/optable=1,
/obj/item/weapon/scalpel=1,
/obj/item/weapon/storage/firstaid/regular=3,
/obj/item/weapon/tank/anesthetic=1,
///obj/item/weapon/surgical_drapes=2
)
flags = CONTIGUOUS_WALLS | CONTIGUOUS_FLOORS
complex_max_size=3
room_size_max=7
/mining_surprise/cult
name = "Hidden Temple"
walltypes = list(
/turf/simulated/wall/cult=3,
/turf/simulated/mineral/random/high_chance=1
)
floortypes = list(
/turf/simulated/floor/engine/cult=1
)
spawntypes = list(
/mob/living/simple_animal/hostile/creature=1,
// /obj/item/organ/heart=2,
/obj/item/device/soulstone=1
)
fluffitems = list(
/obj/effect/gateway=1,
/obj/effect/gibspawner=1,
/obj/structure/cult/talisman=1,
/obj/item/toy/crayon/red=2,
/obj/effect/decal/cleanable/blood=4,
/obj/structure/table/woodentable=2,
/obj/item/weapon/reagent_containers/food/snacks/ectoplasm=3
)
flags = CONTIGUOUS_WALLS | CONTIGUOUS_FLOORS
complex_max_size=3
room_size_max=5
/mining_surprise/wizden
name = "Hidden Den"
walltypes = list(
/turf/simulated/wall/mineral/plasma=3,
/turf/simulated/mineral/random/high_chance=1
)
floortypes = list(
/turf/simulated/floor/wood=1
)
spawntypes = list(
// /vg/: Let's not. /obj/item/weapon/veilrender/vealrender=1,
// /vg/: /obj/item/key=1
/obj/item/clothing/glasses/monocle=5,
)
fluffitems = list(
/obj/structure/safe/floor=1,
// /obj/structure/wardrobe=1,
/obj/item/weapon/storage/belt/soulstone=1,
/obj/item/trash/candle=3,
/obj/item/weapon/dice=3,
/obj/item/weapon/twohanded/staff=2,
/obj/effect/decal/cleanable/dirt=3,
)
flags = CONTIGUOUS_WALLS | CONTIGUOUS_FLOORS
complex_max_size=1
room_size_max=7
/mining_surprise/cavein
name="Cave-In"
walltypes = list(
/turf/simulated/mineral/random/high_chance=1
)
floortypes = list(
/turf/simulated/floor/plating/airless/asteroid=1
)
spawntypes = list(
/obj/mecha/working/ripley/mining=1,
/obj/item/weapon/pickaxe/jackhammer=2,
/obj/item/weapon/pickaxe/diamonddrill=2
)
fluffitems = list(
/obj/effect/decal/cleanable/blood=3,
/obj/effect/decal/remains/human=1,
/obj/item/clothing/under/overalls=1,
/obj/item/weapon/reagent_containers/food/snacks/grown/chili=1,
/obj/item/weapon/tank/oxygen/red=2
)
complex_max_size=3
room_size_max=7
/mining_surprise/human/hitech
complex_max_size=3
room_size_max=7
walltypes = list(
/turf/simulated/wall/r_wall=1
)
floortypes = list(
/turf/simulated/floor/greengrid=1,
/turf/simulated/floor/bluegrid=1
)
spawntypes = list(
/obj/item/weapon/pickaxe/plasmacutter=1,
/obj/machinery/shieldgen=1,
/obj/item/weapon/stock_parts/cell/hyper=1
)
fluffitems = list(
/obj/structure/table/reinforced=2,
/obj/item/weapon/stock_parts/scanning_module/phasic=3,
/obj/item/weapon/stock_parts/matter_bin/super=3,
/obj/item/weapon/stock_parts/manipulator/pico=3,
/obj/item/weapon/stock_parts/capacitor/super=3,
/obj/item/device/pda/clear=1
)
/mining_surprise/human/speakeasy
complex_max_size=3
room_size_max=7
floortypes = list(
/turf/simulated/floor,
/turf/simulated/floor/wood)
spawntypes = list(
/obj/item/weapon/melee/energy/sword/pirate=1,
/obj/structure/closet/syndicate/resources=2
)
fluffitems = list(
/obj/structure/table/woodentable=2,
/obj/structure/reagent_dispensers/beerkeg=1,
/obj/item/weapon/spacecash/c500=4,
/obj/item/weapon/reagent_containers/food/drinks/shaker=1,
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine=3,
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey=3,
/obj/item/clothing/shoes/laceup=2
)
/mining_surprise/human/plantlab
complex_max_size=2
room_size_max=7
spawntypes = list(
/obj/item/weapon/gun/energy/floragun=1,
/obj/item/seeds/bluespacetomatoseed=2
)
fluffitems = list(
// /obj/structure/flora/kirbyplants=1,
/obj/structure/table/reinforced=2,
/obj/machinery/portable_atmospherics/hydroponics=1,
/obj/effect/glowshroom/single=2,
/obj/item/weapon/reagent_containers/syringe/charcoal=2,
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine=3,
/obj/item/weapon/reagent_containers/glass/bottle/ammonia=3
)
-133
View File
@@ -1,133 +0,0 @@
/* Not quite there yet
#define ANY_SIDE list(NORTH,SOUTH,EAST,WEST)
/layout_rule/place_adjacent/workbench
placetype=/obj/structure/table
min_to_place=3
min_to_place=7
next_to=list(
/turf/simulated/wall = ANY_SIDE,
/turf/simulated/wall/r_wall = ANY_SIDE,
)
// MUST NOT be next to these.
not_next_to=list()
decorations=list(
/obj/item/weapon/screwdriver=2,
/obj/item/weapon/crowbar=2,
/obj/item/stack/metal=1,
/obj/item/weapon/wrench=2
)
/layout_rule/place_adjacent/workbench/wooden
placetype=/obj/structure/table/woodentable
/layout_rule/place_adjacent/workbench/reinforced
placetype=/obj/structure/table/reinforced
/layout_rule/place_adjacent/chair
placetype=/obj/structure/stool/bed/chair
min_to_place=1
min_to_place=2
next_to=list(
/obj/structure/table = ANY_SIDE,
)
// MUST NOT be next to these.
not_next_to=list(
/obj/structure/stool/bed/chair = ANY_SIDE
)
//flags = FACE_MATCH
/layout_rule/place_adjacent/chair/wooden
placetype=/obj/structure/stool/bed/chair/wooden
min_to_place=1
min_to_place=2
next_to=list(
/obj/structure/table/wooden = ANY_SIDE,
)
// MUST NOT be next to these.
not_next_to=list(
/obj/structure/stool/bed/chair = ANY_SIDE
)
//flags = FACE_MATCH
*/
/mining_surprise/human
name="Hidden Complex"
floortypes = list(
/turf/simulated/floor/plasteel/airless=95,
/turf/simulated/floor/plating/airless=5
)
walltypes = list(
/turf/simulated/wall=100
)
spawntypes = list(
/obj/item/weapon/pickaxe/silver =4,
/obj/item/weapon/pickaxe/drill =4,
/obj/item/weapon/pickaxe/jackhammer =4,
/obj/item/weapon/pickaxe/diamond =3,
/obj/item/weapon/pickaxe/diamonddrill =3,
/obj/item/weapon/pickaxe/gold =3,
/obj/item/weapon/pickaxe/plasmacutter =2,
/obj/structure/closet/syndicate/resources =2,
/obj/item/weapon/melee/energy/sword/pirate =1,
/obj/mecha/working/ripley/mining =1
)
complex_max_size=2
flags = CONTIGUOUS_WALLS | CONTIGUOUS_FLOORS
/mining_surprise/alien_nest
name="Hidden Nest"
floortypes = list(
/turf/simulated/floor/plating/airless/asteroid=100
)
walltypes = list(
/turf/simulated/mineral/random/high_chance=1
)
spawntypes = list(
/obj/item/clothing/mask/facehugger =4,
/obj/mecha/working/ripley/mining =1
)
fluffitems = list(
/obj/effect/decal/remains/human = 5,
/obj/effect/decal/cleanable/blood/xeno = 5,
/obj/effect/decal/mecha_wreckage/ripley = 1
)
complex_max_size=6
room_size_max=7
var/const/eggs_left=10 // Per complex
var/turf/weeds[0] // Turfs with weeds.
postProcessComplex()
..()
var/list/all_floors=list()
for(var/surprise_room/room in rooms)
var/list/w_cand=room.GetTurfs(TURF_FLOOR)
all_floors |= w_cand
var/egged=0
while(w_cand.len>0)
var/turf/weed_turf = pick(w_cand)
w_cand -= weed_turf
if(weed_turf.density)
continue
if(locate(/obj/structure/alien) in weed_turf)
continue
if(weed_turf && !egged)
new /obj/structure/alien/weeds/node(weed_turf)
weeds += weed_turf
break
for(var/e=0;e<eggs_left;e++)
var/turf/egg_turf = pick(all_floors)
if(egg_turf && !(locate(/obj/structure/alien) in egg_turf))
new /obj/structure/alien/egg(egg_turf)