Merge pull request #1710 from Cruix/Free_Miners

Readded Free Miners
This commit is contained in:
morrowwolf
2018-07-22 01:39:39 -06:00
committed by GitHub
12 changed files with 12295 additions and 818 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,2 +1,4 @@
#define ACCESS_PARAMEDIC 69 //Paramedic Office #define ACCESS_PARAMEDIC 69 //Paramedic Office
#define ACCESS_TCOM_ADMIN 70 #define ACCESS_TCOM_ADMIN 70
#define ACCESS_FREEMINER 71
#define ACCESS_FREEMINER_CAPTAIN 72

View File

@@ -1,3 +1,4 @@
// yogs - This file is mirrored to yogstation/game/mecha/mecha_wreckage.dm
/////////////////////////////////// ///////////////////////////////////
//////// Mecha wreckage //////// //////// Mecha wreckage ////////
/////////////////////////////////// ///////////////////////////////////

View File

@@ -51,6 +51,7 @@
var/list/forced_ruins = list() //These go first on the z level associated (same random one by default) var/list/forced_ruins = list() //These go first on the z level associated (same random one by default)
var/list/ruins_availible = list() //we can try these in the current pass var/list/ruins_availible = list() //we can try these in the current pass
var/list/ruins_placed = list() // yogs
var/forced_z //If set we won't pick z level and use this one instead. var/forced_z //If set we won't pick z level and use this one instead.
//Set up the starting ruin list //Set up the starting ruin list
@@ -101,6 +102,7 @@
ruins_availible -= R ruins_availible -= R
log_world("Failed to place [current_pick.name] ruin.") log_world("Failed to place [current_pick.name] ruin.")
else else
ruins_placed[current_pick.type] = TRUE // yogs
budget -= current_pick.cost budget -= current_pick.cost
if(!current_pick.allow_duplicates) if(!current_pick.allow_duplicates)
for(var/datum/map_template/ruin/R in ruins_availible) for(var/datum/map_template/ruin/R in ruins_availible)
@@ -113,6 +115,11 @@
ruins_availible -= possible_exclusion ruins_availible -= possible_exclusion
if(current_pick.always_spawn_with) if(current_pick.always_spawn_with)
for(var/v in current_pick.always_spawn_with) for(var/v in current_pick.always_spawn_with)
// yogs start
var/datum/map_template/ruin/RT = v
if(!initial(RT.allow_duplicates) && ruins_placed[v])
continue
// yogs end
for(var/ruin_name in SSmapping.ruins_templates) //Because we might want to add space templates as linked of lava templates. for(var/ruin_name in SSmapping.ruins_templates) //Because we might want to add space templates as linked of lava templates.
var/datum/map_template/ruin/linked = SSmapping.ruins_templates[ruin_name] //why are these assoc, very annoying. var/datum/map_template/ruin/linked = SSmapping.ruins_templates[ruin_name] //why are these assoc, very annoying.
if(istype(linked,v)) if(istype(linked,v))

View File

@@ -656,7 +656,6 @@
#include "code\game\mecha\mecha_defense.dm" #include "code\game\mecha\mecha_defense.dm"
#include "code\game\mecha\mecha_parts.dm" #include "code\game\mecha\mecha_parts.dm"
#include "code\game\mecha\mecha_topic.dm" #include "code\game\mecha\mecha_topic.dm"
#include "code\game\mecha\mecha_wreckage.dm"
#include "code\game\mecha\combat\combat.dm" #include "code\game\mecha\combat\combat.dm"
#include "code\game\mecha\combat\durand.dm" #include "code\game\mecha\combat\durand.dm"
#include "code\game\mecha\combat\gygax.dm" #include "code\game\mecha\combat\gygax.dm"
@@ -2629,8 +2628,10 @@
#include "yogstation\code\__HELPERS\unsorted.dm" #include "yogstation\code\__HELPERS\unsorted.dm"
#include "yogstation\code\controllers\subsystem\input.dm" #include "yogstation\code\controllers\subsystem\input.dm"
#include "yogstation\code\datums\mind.dm" #include "yogstation\code\datums\mind.dm"
#include "yogstation\code\datums\shuttles.dm"
#include "yogstation\code\datums\world_topic.dm" #include "yogstation\code\datums\world_topic.dm"
#include "yogstation\code\datums\components\uplink.dm" #include "yogstation\code\datums\components\uplink.dm"
#include "yogstation\code\datums\ruins\free_miners.dm"
#include "yogstation\code\game\world.dm" #include "yogstation\code\game\world.dm"
#include "yogstation\code\game\area\Space_Station_13_areas.dm" #include "yogstation\code\game\area\Space_Station_13_areas.dm"
#include "yogstation\code\game\gamemodes\traitor\double_agents.dm" #include "yogstation\code\game\gamemodes\traitor\double_agents.dm"
@@ -2641,10 +2642,12 @@
#include "yogstation\code\game\machinery\computer\Operating.dm" #include "yogstation\code\game\machinery\computer\Operating.dm"
#include "yogstation\code\game\machinery\telecomms\computers\logbrowser.dm" #include "yogstation\code\game\machinery\telecomms\computers\logbrowser.dm"
#include "yogstation\code\game\machinery\telecomms\computers\telemonitor.dm" #include "yogstation\code\game\machinery\telecomms\computers\telemonitor.dm"
#include "yogstation\code\game\mecha\mecha_wreckage.dm"
#include "yogstation\code\game\objects\effects\landmarks.dm" #include "yogstation\code\game\objects\effects\landmarks.dm"
#include "yogstation\code\game\objects\items\cards_ids.dm" #include "yogstation\code\game\objects\items\cards_ids.dm"
#include "yogstation\code\game\objects\items\crayons.dm" #include "yogstation\code\game\objects\items\crayons.dm"
#include "yogstation\code\game\objects\items\sharpener.dm" #include "yogstation\code\game\objects\items\sharpener.dm"
#include "yogstation\code\game\objects\items\circuitboards\computer_circuitboards.dm"
#include "yogstation\code\game\objects\items\devices\powersink.dm" #include "yogstation\code\game\objects\items\devices\powersink.dm"
#include "yogstation\code\game\objects\items\devices\PDA\cart.dm" #include "yogstation\code\game\objects\items\devices\PDA\cart.dm"
#include "yogstation\code\game\objects\items\devices\PDA\PDA.dm" #include "yogstation\code\game\objects\items\devices\PDA\PDA.dm"

View File

@@ -0,0 +1,187 @@
/datum/map_template/ruin/space/freeminer_asteroid
id = "freeminer_asteroid"
suffix = "freeminer_asteroid.dmm"
name = "Free Miner Asteroid"
description = "Some space miners still cling to the old way of getting that \
sweet, sweet plasma - painstakingly digging it out of free-floating asteroids\
instead of flying down to the hellscape of lavaland."
allow_duplicates = FALSE
always_spawn_with = list(/datum/map_template/ruin/space/whiteshipdock = PLACE_SPACE_RUIN)
/datum/map_template/ruin/space/freeminer_asteroid/load(turf/T, centered = FALSE)
. = ..()
if(.)
SSmapping.config.shuttles["whiteship"] = "whiteship_miner"
/obj/machinery/computer/shuttle/white_ship/miner
name = "Free Miner Ship Console"
desc = "Used to control the Free Miner Ship."
circuit = /obj/item/circuitboard/computer/white_ship/miner
shuttleId = "whiteship"
possible_destinations = "whiteship_away;whiteship_home;whiteship_z4;whiteship_mining0;whiteship_mining1;whiteship_mining2;whiteship_custom"
req_access = list(ACCESS_FREEMINER_CAPTAIN)
/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship/miner
name = "Free Miner Navigation Computer"
desc = "Used to designate a precise transit location for the Free Miner Ship."
jumpto_ports = list("whiteship_away" = 1, "whiteship_home" = 1, "whiteship_mining0" = 1, "whiteship_mining1" = 1, "whiteship_mining2" = 1)
x_offset = -4
y_offset = -7
/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship/miner/Initialize(mapload)
. = ..()
for(var/V in SSshuttle.stationary)
var/obj/docking_port/stationary/S = V
if(jumpto_ports[S.id])
z_lock |= S.z
/obj/effect/mob_spawn/human/free_miner
name = "Free Miner"
id_job = "Free Miner"
roundstart = FALSE
death = FALSE
icon = 'icons/obj/machines/sleeper.dmi'
icon_state = "sleeper"
flavour_text = "You are a free miner, making a living mining the asteroids that were left behind when Nanotrasen moved from asteroid mining to lavaland. Try to make a profit and show those corporates who the real miners are!"
assignedrole = "Free Miner"
outfit = /datum/outfit/freeminer
/datum/outfit/freeminer
name = "Free Miner"
uniform = /obj/item/clothing/under/rank/miner
shoes = /obj/item/clothing/shoes/workboots/mining
gloves = /obj/item/clothing/gloves/color/black
back = /obj/item/storage/backpack/industrial
l_pocket = /obj/item/mining_voucher
r_pocket = /obj/item/storage/bag/ore
belt = /obj/item/pickaxe
id = /obj/item/card/id/freeminer
backpack_contents = list(/obj/item/radio)
/obj/effect/mob_spawn/human/free_miner/engi
name = "Free Miner Engineer"
id_job = "Free Miner Engineer"
flavour_text = "You are a free miner, making a living mining the asteroids that were left behind when Nanotrasen moved from asteroid mining to lavaland. Try to make a profit and show those corporates who the real miners are!"
l_pocket = null
r_pocket = null
gloves = /obj/item/clothing/gloves/color/yellow
belt = /obj/item/storage/belt/utility/full
assignedrole = "Free Miner Engineer"
outfit = /datum/outfit/freeminer/engi
/datum/outfit/freeminer/engi
l_pocket = null
r_pocket = null
gloves = /obj/item/clothing/gloves/color/yellow
belt = /obj/item/storage/belt/utility/full
/obj/effect/mob_spawn/human/free_miner/captain
name = "Free Miner Captain"
id_job = "Free Miner Captain"
flavour_text = "You are a free miner, making a living mining the asteroids that were left behind when Nanotrasen moved from asteroid mining to lavaland. Try to make a profit and show those corporates who the real miners are! Try not to lose your ID, as it is the only way to move your ship."
assignedrole = "Free Miner Captain"
outfit = /datum/outfit/freeminer/captain
/datum/outfit/freeminer/captain
uniform = /obj/item/clothing/under/rank/vice
back = /obj/item/storage/backpack
l_pocket = /obj/item/melee/classic_baton/telescopic
r_pocket = null
belt = null
id = /obj/item/card/id/freeminer/captain
/obj/item/card/id/freeminer
name = "Free Miner ID"
access = list(ACCESS_MINERAL_STOREROOM, ACCESS_FREEMINER)
/obj/item/card/id/freeminer/captain
name = "Free Miner Ship Captain ID"
access = list(ACCESS_MINERAL_STOREROOM, ACCESS_FREEMINER, ACCESS_FREEMINER_CAPTAIN)
/****************Free Miner Vendor**************************/
/obj/machinery/mineral/equipment_vendor/free_miner
name = "free miner ship equipment vendor"
desc = "a vendor sold by nanotrasen to profit off small mining contractors."
prize_list = list(
new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000),
new /datum/data/mining_equipment("Mecha Plasma Generator", /obj/item/mecha_parts/mecha_equipment/generator, 1500),
new /datum/data/mining_equipment("Diamond Mecha Drill", /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill, 2000),
new /datum/data/mining_equipment("Mecha Plasma Cutter", /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma, 3000),
new /datum/data/mining_equipment("Stimpack", /obj/item/reagent_containers/hypospray/medipen/stimpack, 50),
new /datum/data/mining_equipment("Stimpack Bundle", /obj/item/storage/box/medipens/utility, 200),
new /datum/data/mining_equipment("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800),
new /datum/data/mining_equipment("Hivelord Stabilizer", /obj/item/hivelordstabilizer, 400),
new /datum/data/mining_equipment("Shelter Capsule", /obj/item/survivalcapsule, 400),
new /datum/data/mining_equipment("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 500),
new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 500),
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600),
new /datum/data/mining_equipment("Fire First-Aid Kit", /obj/item/storage/firstaid/fire, 600),
new /datum/data/mining_equipment("Toxin First-Aid Kit", /obj/item/storage/firstaid/toxin, 600),
new /datum/data/mining_equipment("Resonator", /obj/item/resonator, 800),
new /datum/data/mining_equipment("Lazarus Injector", /obj/item/lazarus_injector, 800),
new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/pickaxe/silver, 750),
new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000),
new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/pickaxe/diamond, 1500),
new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2000),
new /datum/data/mining_equipment("Plasma Cutter" , /obj/item/gun/energy/plasmacutter, 2500),
new /datum/data/mining_equipment("Point Transfer Card", /obj/item/card/mining_point_card, 500),
new /datum/data/mining_equipment("Minebot", /mob/living/simple_animal/hostile/mining_drone, 800),
new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400),
new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400),
new /datum/data/mining_equipment("Minebot Cooldown Upgrade", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600),
new /datum/data/mining_equipment("Minebot AI Upgrade", /obj/item/slimepotion/slime/sentience/mining, 1000),
new /datum/data/mining_equipment("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100),
new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 100),
new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150),
new /datum/data/mining_equipment("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250),
new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000),
new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000)
)
/obj/machinery/mineral/equipment_vendor/free_miner/New()
..()
var/obj/item/circuitboard/machine/B = new /obj/item/circuitboard/machine/mining_equipment_vendor/free_miner(null)
B.apply_default_parts(src)
/obj/machinery/mineral/equipment_vendor/free_miner/RedeemVoucher(obj/item/mining_voucher/voucher, mob/redeemer)
var/list/items = list("Kinetic Accelerator", "Resonator Kit", "Minebot Kit", "Crusher Kit", "Advanced Scanner")
var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") as null|anything in items
if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer)
return
var/drop_location = drop_location()
switch(selection)
if("Kinetic Accelerator")
new /obj/item/gun/energy/kinetic_accelerator(drop_location)
if("Resonator Kit")
new /obj/item/extinguisher/mini(drop_location)
new /obj/item/resonator(drop_location)
if("Minebot Kit")
new /mob/living/simple_animal/hostile/mining_drone(drop_location)
new /obj/item/weldingtool/hugetank(drop_location)
new /obj/item/clothing/head/welding(drop_location)
new /obj/item/borg/upgrade/modkit/minebot_passthrough(drop_location)
if("Crusher Kit")
new /obj/item/extinguisher/mini(drop_location)
new /obj/item/twohanded/required/kinetic_crusher(drop_location)
if("Advanced Scanner")
new /obj/item/t_scanner/adv_mining_scanner(drop_location)
SSblackbox.record_feedback("tally", "mining_voucher_redeemed", 1, selection)
qdel(voucher)
/obj/item/circuitboard/machine/mining_equipment_vendor/free_miner
name = "circuit board (Free Miner Ship Equipment Vendor)"
build_path = /obj/machinery/mineral/equipment_vendor/free_miner

View File

@@ -0,0 +1,3 @@
/datum/map_template/shuttle/whiteship/miner
suffix = "miner"
name = "Free Miner Ship"

View File

@@ -0,0 +1,265 @@
///////////////////////////////////
//////// Mecha wreckage ////////
///////////////////////////////////
/obj/structure/mecha_wreckage
name = "exosuit wreckage"
desc = "Remains of some unfortunate mecha. Completely irreparable, but perhaps something can be salvaged."
icon = 'icons/mecha/mecha.dmi'
density = TRUE
anchored = FALSE
opacity = 0
var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/metal, /obj/item/stack/rods)
var/list/wirecutters_salvage = list(/obj/item/stack/cable_coil)
var/list/crowbar_salvage = list()
var/mob/living/silicon/ai/AI //AIs to be salvaged
/obj/structure/mecha_wreckage/Initialize(mapload, mob/living/silicon/ai/AI_pilot)
. = ..()
if(!AI_pilot) //Type-checking for this is already done in mecha/Destroy()
return
AI = AI_pilot
AI.apply_damage(150, BURN) //Give the AI a bit of damage from the "shock" of being suddenly shut down
AI.death() //The damage is not enough to kill the AI, but to be 'corrupted files' in need of repair.
AI.forceMove(src) //Put the dead AI inside the wreckage for recovery
add_overlay(mutable_appearance('icons/obj/projectiles.dmi', "green_laser")) //Overlay for the recovery beacon
AI.controlled_mech = null
AI.remote_control = null
/obj/structure/mecha_wreckage/examine(mob/user)
..()
if(AI)
to_chat(user, "<span class='notice'>The AI recovery beacon is active.</span>")
/obj/structure/mecha_wreckage/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weldingtool))
if(!welder_salvage || !welder_salvage.len)
to_chat(user, "<span class='warning'>You don't see anything that can be cut with [I]!</span>")
return
if(!I.use_tool(src, user, 0, volume=50))
return
var/type = prob(70) ? pick(welder_salvage) : null
if(type)
var/N = new type(get_turf(user))
user.visible_message("[user] cuts [N] from [src].", "<span class='notice'>You cut [N] from [src].</span>")
if(istype(N, /obj/item/mecha_parts/part))
welder_salvage -= type
else
to_chat(user, "<span class='warning'>You fail to salvage anything valuable from [src]!</span>")
return
else if(istype(I, /obj/item/wirecutters))
if(!wirecutters_salvage || !wirecutters_salvage.len)
to_chat(user, "<span class='warning'>You don't see anything that can be cut with [I]!</span>")
return
else
var/type = prob(70) ? pick(wirecutters_salvage) : null
if(type)
var/N = new type(get_turf(user))
user.visible_message("[user] cuts [N] from [src].", "<span class='notice'>You cut [N] from [src].</span>")
wirecutters_salvage -= type
else
to_chat(user, "<span class='warning'>You fail to salvage anything valuable from [src]!</span>")
else if(istype(I, /obj/item/crowbar))
if(!crowbar_salvage || !crowbar_salvage.len)
to_chat(user, "<span class='warning'>You don't see anything that can be pried with [I]!</span>")
return
else
var/type = pick(crowbar_salvage)
crowbar_salvage -= type
var/obj/S = new type()
if(S)
S.forceMove(user.drop_location())
user.visible_message("[user] pries [S] from [src].", "<span class='notice'>You pry [S] from [src].</span>")
/obj/structure/mecha_wreckage/transfer_ai(interaction, mob/user, null, obj/item/aicard/card)
if(!..())
return
//Proc called on the wreck by the AI card.
if(interaction == AI_TRANS_TO_CARD) //AIs can only be transferred in one direction, from the wreck to the card.
if(!AI) //No AI in the wreck
to_chat(user, "<span class='warning'>No AI backups found.</span>")
return
cut_overlays() //Remove the recovery beacon overlay
AI.forceMove(card) //Move the dead AI to the card.
card.AI = AI
if(AI.client) //AI player is still in the dead AI and is connected
to_chat(AI, "The remains of your file system have been recovered on a mobile storage device.")
else //Give the AI a heads-up that it is probably going to get fixed.
AI.notify_ghost_cloning("You have been recovered from the wreckage!", source = card)
to_chat(user, "<span class='boldnotice'>Backup files recovered</span>: [AI.name] ([rand(1000,9999)].exe) salvaged from [name] and stored within local memory.")
else
return ..()
/obj/structure/mecha_wreckage/gygax
name = "\improper Gygax wreckage"
icon_state = "gygax-broken"
/obj/structure/mecha_wreckage/gygax/Initialize()
. = ..()
var/list/parts = list(/obj/item/mecha_parts/part/gygax_torso,
/obj/item/mecha_parts/part/gygax_head,
/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)
for(var/i = 0; i < 2; i++)
if(parts.len && prob(40))
var/part = pick(parts)
welder_salvage += part
parts -= part
/obj/structure/mecha_wreckage/gygax/dark
name = "\improper Dark Gygax wreckage"
icon_state = "darkgygax-broken"
/obj/structure/mecha_wreckage/marauder
name = "\improper Marauder wreckage"
icon_state = "marauder-broken"
/obj/structure/mecha_wreckage/mauler
name = "\improper Mauler wreckage"
icon_state = "mauler-broken"
desc = "The syndicate won't be very happy about this..."
/obj/structure/mecha_wreckage/seraph
name = "\improper Seraph wreckage"
icon_state = "seraph-broken"
/obj/structure/mecha_wreckage/reticence
name = "\improper Reticence wreckage"
icon_state = "reticence-broken"
color = "#87878715"
desc = "..."
/obj/structure/mecha_wreckage/ripley
name = "\improper Ripley wreckage"
icon_state = "ripley-broken"
/obj/structure/mecha_wreckage/ripley/Initialize()
. = ..()
var/list/parts = list(/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)
for(var/i = 0; i < 2; i++)
if(parts.len && prob(40))
var/part = pick(parts)
welder_salvage += part
parts -= part
/obj/structure/mecha_wreckage/ripley/loaded
name = "intact Ripley wreckage"
/obj/structure/mecha_wreckage/ripley/loaded/Initialize()
. = ..()
welder_salvage = list(/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)
crowbar_salvage = list(/obj/item/circuitboard/mecha/ripley/peripherals,
/obj/item/circuitboard/mecha/ripley/main)
/obj/structure/mecha_wreckage/ripley/firefighter
name = "\improper Firefighter wreckage"
icon_state = "firefighter-broken"
/obj/structure/mecha_wreckage/ripley/firefighter/Initialize()
. = ..()
var/list/parts = list(/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/clothing/suit/fire)
for(var/i = 0; i < 2; i++)
if(parts.len && prob(40))
var/part = pick(parts)
welder_salvage += part
parts -= part
/obj/structure/mecha_wreckage/ripley/deathripley
name = "\improper Death-Ripley wreckage"
icon_state = "deathripley-broken"
/obj/structure/mecha_wreckage/honker
name = "\improper H.O.N.K wreckage"
icon_state = "honker-broken"
desc = "All is right in the universe."
/obj/structure/mecha_wreckage/honker/Initialize()
. = ..()
var/list/parts = list(
/obj/item/mecha_parts/chassis/honker,
/obj/item/mecha_parts/part/honker_torso,
/obj/item/mecha_parts/part/honker_head,
/obj/item/mecha_parts/part/honker_left_arm,
/obj/item/mecha_parts/part/honker_right_arm,
/obj/item/mecha_parts/part/honker_left_leg,
/obj/item/mecha_parts/part/honker_right_leg)
for(var/i = 0; i < 2; i++)
if(parts.len && prob(40))
var/part = pick(parts)
welder_salvage += part
parts -= part
/obj/structure/mecha_wreckage/durand
name = "\improper Durand wreckage"
icon_state = "durand-broken"
/obj/structure/mecha_wreckage/durand/Initialize()
. = ..()
var/list/parts = list(
/obj/item/mecha_parts/part/durand_torso,
/obj/item/mecha_parts/part/durand_head,
/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)
for(var/i = 0; i < 2; i++)
if(parts.len && prob(40))
var/part = pick(parts)
welder_salvage += part
parts -= part
/obj/structure/mecha_wreckage/phazon
name = "\improper Phazon wreckage"
icon_state = "phazon-broken"
/obj/structure/mecha_wreckage/odysseus
name = "\improper Odysseus wreckage"
icon_state = "odysseus-broken"
/obj/structure/mecha_wreckage/odysseus/Initialize()
. = ..()
var/list/parts = list(
/obj/item/mecha_parts/part/odysseus_torso,
/obj/item/mecha_parts/part/odysseus_head,
/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)
for(var/i = 0; i < 2; i++)
if(parts.len && prob(40))
var/part = pick(parts)
welder_salvage += part
parts -= part

View File

@@ -0,0 +1,3 @@
/obj/item/circuitboard/computer/white_ship/miner
name = "circuit board (Free Miner Ship)"
build_path = /obj/machinery/computer/shuttle/white_ship/miner