Various Loot Pile and Dungeon objects Stage Uno (#4975)

* Loot Piles

* Mecha Loot Piles, Random Tool Spawners

* Fix Random Spawners, don't use Fiftyspawners
Fix Fiftyspawners
This commit is contained in:
Mechoid
2018-02-28 09:18:44 -08:00
committed by Anewbe
parent 65d3a6f199
commit 5dc7189cf7
4 changed files with 348 additions and 17 deletions

View File

@@ -8,13 +8,17 @@
var/obj/item/stack/type_to_spawn = null
/obj/fiftyspawner/New()
//spawns the 50-stack and qdels self
..()
// var/obj_path = text2path("/obj/item/stack/[material]")
var/obj/item/stack/M = new type_to_spawn(src.loc)
M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty
M.update_icon() // Some stacks have different sprites depending on how full they are.
qdel(src)
spawn()
//spawns the 50-stack and qdels self
..()
if(istype(src.loc, /obj/structure/loot_pile)) //Spawning from a lootpile is weird, need to wait until we're out of it to do our work.
while(istype(src.loc, /obj/structure/loot_pile))
sleep(1)
// var/obj_path = text2path("/obj/item/stack/[material]")
var/obj/item/stack/M = new type_to_spawn(src.loc)
M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty
M.update_icon() // Some stacks have different sprites depending on how full they are.
qdel(src)
/obj/fiftyspawner/rods
name = "stack of rods" //this needs to be defined for cargo

View File

@@ -9,9 +9,13 @@
// creates a new object and deletes itself
/obj/random/New()
..()
if (!prob(spawn_nothing_percentage))
spawn_item()
qdel(src)
spawn()
if(istype(src.loc, /obj/structure/loot_pile)) //Spawning from a lootpile is weird, need to wait until we're out of it to do our work.
while(istype(src.loc, /obj/structure/loot_pile))
sleep(1)
if (!prob(spawn_nothing_percentage))
spawn_item()
qdel(src)
// this function should return a specific item to spawn
@@ -42,7 +46,7 @@
/obj/random/tool
name = "random tool"
desc = "This is a random tool"
icon = 'icons/obj/items.dmi'
icon = 'icons/obj/tools.dmi'
icon_state = "welder"
/obj/random/tool/item_to_spawn()
@@ -55,6 +59,32 @@
/obj/item/device/flashlight,
/obj/item/device/multitool)
/obj/random/tool/power
name = "random powertool"
desc = "This is a random powertool"
icon_state = "jaws_pry"
/obj/random/tool/power/item_to_spawn()
return pick(/obj/item/weapon/screwdriver/power,
/obj/item/weapon/wirecutters/power,
/obj/item/weapon/weldingtool/electric,
/obj/item/weapon/weldingtool/experimental)
/obj/random/tool/alien
name = "random alien tool"
desc = "This is a random tool"
icon = 'icons/obj/abductor.dmi'
icon_state = "welder"
/obj/random/tool/alien/item_to_spawn()
return pick(/obj/item/weapon/screwdriver/alien,
/obj/item/weapon/wirecutters/alien,
/obj/item/weapon/weldingtool/alien,
/obj/item/weapon/crowbar/alien,
/obj/item/weapon/wrench/alien,
/obj/item/stack/cable_coil/alien,
/obj/item/device/multitool/alien)
/obj/random/technology_scanner
name = "random scanner"
desc = "This is a random technology scanner."
@@ -131,6 +161,29 @@
prob(1);/obj/item/taperoll/atmos,
prob(1);/obj/item/device/flashlight/maglight)
/obj/random/tech_supply/component
name = "random tech component"
desc = "This is a random machine component."
icon = 'icons/obj/items.dmi'
icon_state = "portable_analyzer"
/obj/random/tech_supply/component/item_to_spawn()
return pick(prob(3);/obj/item/weapon/stock_parts/gear,
prob(2);/obj/item/weapon/stock_parts/console_screen,
prob(1);/obj/item/weapon/stock_parts/spring,
prob(3);/obj/item/weapon/stock_parts/capacitor,
prob(2);/obj/item/weapon/stock_parts/capacitor/adv,
prob(1);/obj/item/weapon/stock_parts/capacitor/super,
prob(3);/obj/item/weapon/stock_parts/manipulator,
prob(2);/obj/item/weapon/stock_parts/manipulator/nano,
prob(1);/obj/item/weapon/stock_parts/manipulator/pico,
prob(3);/obj/item/weapon/stock_parts/matter_bin,
prob(2);/obj/item/weapon/stock_parts/matter_bin/adv,
prob(1);/obj/item/weapon/stock_parts/matter_bin/super,
prob(3);/obj/item/weapon/stock_parts/scanning_module,
prob(2);/obj/item/weapon/stock_parts/scanning_module/adv,
prob(1);/obj/item/weapon/stock_parts/scanning_module/phasic)
/obj/random/medical
name = "Random Medicine"
desc = "This is a random medical item."

View File

@@ -22,6 +22,8 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
density = FALSE
anchored = TRUE
var/list/icon_states_to_use = list() // List of icon states the pile can choose from on initialization. If empty or null, it will stay the initial icon_state.
var/list/searched_by = list() // Keys that have searched this loot pile, with values of searched time.
var/allow_multiple_looting = FALSE // If true, the same person can loot multiple times. Mostly for debugging.
var/busy = FALSE // Used so you can't spamclick to loot.
@@ -113,12 +115,9 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
var/path = pick(rare_loot)
return new path(src)
/obj/structure/loot_pile/maint
var/list/icon_states_to_use = list()
/obj/structure/loot_pile/maint/initialize()
icon_state = pick(icon_states_to_use)
/obj/structure/loot_pile/initialize()
if(icon_states_to_use && icon_states_to_use.len)
icon_state = pick(icon_states_to_use)
. = ..()
// Has large amounts of possible items, most of which may or may not be useful.
@@ -568,3 +567,266 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
/obj/item/weapon/gun/launcher/crossbow
)
// Subtype for mecha and mecha accessories. These might not always be on the surface.
/obj/structure/loot_pile/mecha
name = "pod wreckage"
desc = "The ruins of some unfortunate pod. Perhaps something is salvageable."
icon = 'icons/mecha/mecha.dmi'
icon_state = "engineering_pod-broken"
density = TRUE
chance_uncommon = 20
chance_rare = 10
loot_depletion = TRUE
loot_left = 9
common_loot = list(
/obj/random/tool,
/obj/random/tool,
/obj/random/tool,
/obj/random/tool,
/obj/item/stack/cable_coil/random,
/obj/random/tank,
/obj/random/tech_supply/component,
/obj/random/tech_supply/component,
/obj/random/tech_supply/component,
/obj/effect/decal/remains/lizard,
/obj/effect/decal/remains/mouse,
/obj/effect/decal/remains/robot,
/obj/item/stack/material/steel{amount = 40}
)
uncommon_loot = list(
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser,
/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,
/obj/item/mecha_parts/mecha_equipment/tool/drill,
/obj/item/mecha_parts/mecha_equipment/generator
)
rare_loot = list(
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
/obj/item/mecha_parts/mecha_equipment/generator/nuclear,
/obj/item/mecha_parts/mecha_equipment/tool/jetpack
)
//Stuff you may find attached to a ripley.
/obj/structure/loot_pile/mecha/ripley
name = "ripley wreckage"
desc = "The ruins of some unfortunate ripley. Perhaps something is salvageable."
icon_states_to_use = list("ripley-broken", "firefighter-broken", "ripley-broken-old")
common_loot = list(
/obj/random/tool,
/obj/item/stack/cable_coil/random,
/obj/random/tank,
/obj/random/tech_supply/component,
/obj/item/stack/material/steel{amount = 25},
/obj/item/stack/material/glass{amount = 10},
/obj/item/stack/material/plasteel{amount = 5},
/obj/item/mecha_parts/chassis/ripley,
/obj/item/mecha_parts/part/ripley_torso,
/obj/item/mecha_parts/part/ripley_left_arm,
/obj/item/mecha_parts/part/ripley_right_arm,
/obj/item/mecha_parts/part/ripley_left_leg,
/obj/item/mecha_parts/part/ripley_right_leg,
/obj/item/device/kit/paint/ripley,
/obj/item/device/kit/paint/ripley/flames_red,
/obj/item/device/kit/paint/ripley/flames_blue
)
uncommon_loot = list(
/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,
/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
/obj/item/mecha_parts/mecha_equipment/tool/extinguisher,
)
rare_loot = list(
/obj/item/mecha_parts/mecha_equipment/gravcatapult,
/obj/item/mecha_parts/mecha_equipment/tool/rcd,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged
)
//Death-Ripley, same common, but more combat-exosuit-based
/obj/structure/loot_pile/mecha/deathripley
name = "strange ripley wreckage"
icon_state = "deathripley-broken"
common_loot = list(
/obj/random/tool,
/obj/item/stack/cable_coil/random,
/obj/random/tank,
/obj/random/tech_supply/component,
/obj/item/stack/material/steel{amount = 40},
/obj/item/stack/material/glass{amount = 20},
/obj/item/stack/material/plasteel{amount = 10},
/obj/item/mecha_parts/chassis/ripley,
/obj/item/mecha_parts/part/ripley_torso,
/obj/item/mecha_parts/part/ripley_left_arm,
/obj/item/mecha_parts/part/ripley_right_arm,
/obj/item/mecha_parts/part/ripley_left_leg,
/obj/item/mecha_parts/part/ripley_right_leg,
/obj/item/device/kit/paint/ripley/death
)
uncommon_loot = list(
/obj/item/mecha_parts/mecha_equipment/tool/safety_clamp,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser,
/obj/item/mecha_parts/mecha_equipment/repair_droid,
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
)
rare_loot = list(
/obj/item/mecha_parts/mecha_equipment/tool/rcd,
/obj/item/mecha_parts/mecha_equipment/wormhole_generator,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged
)
/obj/structure/loot_pile/mecha/odysseus
name = "odysseus wreckage"
desc = "The ruins of some unfortunate odysseus. Perhaps something is salvageable."
icon_state = "odysseus-broken"
common_loot = list(
/obj/random/tool,
/obj/item/stack/cable_coil/random,
/obj/random/tank,
/obj/random/tech_supply/component,
/obj/item/stack/material/steel{amount = 25},
/obj/item/stack/material/glass{amount = 10},
/obj/item/stack/material/plasteel{amount = 5},
/obj/item/mecha_parts/chassis/odysseus,
/obj/item/mecha_parts/part/odysseus_head,
/obj/item/mecha_parts/part/odysseus_torso,
/obj/item/mecha_parts/part/odysseus_left_arm,
/obj/item/mecha_parts/part/odysseus_right_arm,
/obj/item/mecha_parts/part/odysseus_left_leg,
/obj/item/mecha_parts/part/odysseus_right_leg
)
uncommon_loot = list(
/obj/item/mecha_parts/mecha_equipment/tool/sleeper,
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare,
/obj/item/mecha_parts/mecha_equipment/tool/extinguisher,
)
rare_loot = list(
/obj/item/mecha_parts/mecha_equipment/gravcatapult,
/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,
/obj/item/mecha_parts/mecha_equipment/shocker
)
/obj/structure/loot_pile/mecha/gygax
name = "gygax wreckage"
desc = "The ruins of some unfortunate gygax. Perhaps something is salvageable."
icon_state = "gygax-broken"
common_loot = list(
/obj/random/tool,
/obj/item/stack/cable_coil/random,
/obj/random/tank,
/obj/random/tech_supply/component,
/obj/item/stack/material/steel{amount = 25},
/obj/item/stack/material/glass{amount = 10},
/obj/item/stack/material/plasteel{amount = 5},
/obj/item/mecha_parts/chassis/gygax,
/obj/item/mecha_parts/part/gygax_head,
/obj/item/mecha_parts/part/gygax_torso,
/obj/item/mecha_parts/part/gygax_left_arm,
/obj/item/mecha_parts/part/gygax_right_arm,
/obj/item/mecha_parts/part/gygax_left_leg,
/obj/item/mecha_parts/part/gygax_right_leg,
/obj/item/mecha_parts/part/gygax_armour
)
uncommon_loot = list(
/obj/item/mecha_parts/mecha_equipment/shocker,
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,
/obj/item/device/kit/paint/gygax,
/obj/item/device/kit/paint/gygax/darkgygax,
/obj/item/device/kit/paint/gygax/recitence
)
rare_loot = list(
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg,
/obj/item/mecha_parts/mecha_equipment/repair_droid,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
)
/obj/structure/loot_pile/mecha/durand
name = "durand wreckage"
desc = "The ruins of some unfortunate durand. Perhaps something is salvageable."
icon_state = "durand-broken"
common_loot = list(
/obj/random/tool,
/obj/item/stack/cable_coil/random,
/obj/random/tank,
/obj/random/tech_supply/component,
/obj/item/stack/material/steel{amount = 25},
/obj/item/stack/material/glass{amount = 10},
/obj/item/stack/material/plasteel{amount = 5},
/obj/item/mecha_parts/chassis/durand,
/obj/item/mecha_parts/part/durand_head,
/obj/item/mecha_parts/part/durand_torso,
/obj/item/mecha_parts/part/durand_left_arm,
/obj/item/mecha_parts/part/durand_right_arm,
/obj/item/mecha_parts/part/durand_left_leg,
/obj/item/mecha_parts/part/durand_right_leg,
/obj/item/mecha_parts/part/durand_armour
)
uncommon_loot = list(
/obj/item/mecha_parts/mecha_equipment/shocker,
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
/obj/item/device/kit/paint/durand,
/obj/item/device/kit/paint/durand/seraph,
/obj/item/device/kit/paint/durand/phazon
)
rare_loot = list(
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot,
/obj/item/mecha_parts/mecha_equipment/repair_droid,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
)
/obj/structure/loot_pile/mecha/phazon
name = "phazon wreckage"
desc = "The ruins of some unfortunate phazon. Perhaps something is salvageable."
icon_state = "phazon-broken"
common_loot = list(
/obj/item/weapon/storage/toolbox/syndicate/powertools,
/obj/item/stack/material/plasteel{amount = 20},
/obj/item/stack/material/durasteel{amount = 10},
/obj/item/mecha_parts/chassis/phazon,
/obj/item/mecha_parts/part/phazon_head,
/obj/item/mecha_parts/part/phazon_torso,
/obj/item/mecha_parts/part/phazon_left_arm,
/obj/item/mecha_parts/part/phazon_right_arm,
/obj/item/mecha_parts/part/phazon_left_leg,
/obj/item/mecha_parts/part/phazon_right_leg
)
uncommon_loot = list(
/obj/item/mecha_parts/mecha_equipment/shocker,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy,
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
)
rare_loot = list(
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,
/obj/item/mecha_parts/mecha_equipment/repair_droid,
/obj/item/mecha_parts/mecha_equipment/teleporter
)

View File

@@ -68,6 +68,18 @@
name = "stack of wood"
type_to_spawn = /obj/item/stack/material/wood
/obj/fiftyspawner/sifwood
name = "stack of alien wood"
type_to_spawn = /obj/item/stack/material/wood/sif
/obj/fiftyspawner/log
name = "stack of logs"
type_to_spawn = /obj/item/stack/material/log
/obj/fiftyspawner/log
name = "stack of alien logs"
type_to_spawn = /obj/item/stack/material/log/sif
/obj/fiftyspawner/cloth
name = "stack of cloth"
type_to_spawn = /obj/item/stack/material/cloth