Merge branch 'master' into pumpkin_head

This commit is contained in:
alsoandanswer
2019-11-14 10:49:30 +08:00
committed by GitHub
27 changed files with 1126 additions and 1044 deletions
+14 -1
View File
@@ -2273,7 +2273,6 @@
#include "code\modules\research\stockparts.dm"
#include "code\modules\research\designs\AI_modules_designs.dm"
#include "code\modules\research\designs\circuit_designs.dm"
#include "code\modules\research\designs\mechfab_designs.dm"
#include "code\modules\research\designs\medical_designs.dm"
#include "code\modules\research\designs\mining_designs.dm"
#include "code\modules\research\designs\modular_computer_designs.dm"
@@ -2281,6 +2280,20 @@
#include "code\modules\research\designs\stock_parts_designs.dm"
#include "code\modules\research\designs\tcom_designs.dm"
#include "code\modules\research\designs\weapon_designs.dm"
#include "code\modules\research\designs\mechfab\hardsuit\modules.dm"
#include "code\modules\research\designs\mechfab\hardsuit\rigs.dm"
#include "code\modules\research\designs\mechfab\mechs\durand.dm"
#include "code\modules\research\designs\mechfab\mechs\gygax.dm"
#include "code\modules\research\designs\mechfab\mechs\hermes.dm"
#include "code\modules\research\designs\mechfab\mechs\odysseus.dm"
#include "code\modules\research\designs\mechfab\mechs\ripley.dm"
#include "code\modules\research\designs\mechfab\mechs\mech_equipment\_equipment.dm"
#include "code\modules\research\designs\mechfab\mechs\mech_equipment\tools.dm"
#include "code\modules\research\designs\mechfab\mechs\mech_equipment\weaponry.dm"
#include "code\modules\research\designs\mechfab\prosthetics\external.dm"
#include "code\modules\research\designs\mechfab\prosthetics\internal.dm"
#include "code\modules\research\designs\mechfab\robot\robot.dm"
#include "code\modules\research\designs\mechfab\robot\robot_upgrades.dm"
#include "code\modules\research\xenoarchaeology\chemistry.dm"
#include "code\modules\research\xenoarchaeology\geosample.dm"
#include "code\modules\research\xenoarchaeology\manuals.dm"
@@ -4,6 +4,13 @@ var/list/datum/power/vampire/vampirepowers = list()
/datum/power/vampire
var/blood_cost = 0
/datum/power/vampire/alertness
name = "Alertness"
desc = "Toggle whether you wish for your victims to get paralyzed and forget your deeds."
helptext = "If active, victims will become paralyzed and forget that you fed on them, instead remembering only a pleasant encounter."
blood_cost = 0
verbpath = /mob/living/carbon/human/proc/vampire_alertness
/datum/power/vampire/drain_blood
name = "Drain Blood"
desc = "Feed on the blood of a humanoid creature in order to gain further power."
@@ -37,6 +44,12 @@ var/list/datum/power/vampire/vampirepowers = list()
blood_cost = 50
verbpath = /mob/living/carbon/human/proc/vampire_presence
/datum/power/vampire/touch_of_life
name = "Touch of Life"
desc = "You touch the target, transferring healing chemicals to them."
blood_cost = 50
verbpath = /mob/living/carbon/human/proc/vampire_touch_of_life
/datum/power/vampire/veil_step
name = "Veil Step"
desc = "Enter the Veil for a moment, and skip to a shadow of your choosing."
+1 -3
View File
@@ -8,6 +8,7 @@
var/frenzy = 0 // A vampire's frenzy meter.
var/last_frenzy_message = 0 // Keeps track of when the last frenzy alert was sent.
var/status = 0 // Bitfield including different statuses.
var/stealth = TRUE // Do you want your victims to know of your sucking?
var/list/datum/power/vampire/purchased_powers = list() // List of power datums available for use.
var/obj/effect/dummy/veil_walk/holder = null // The veil_walk dummy.
var/mob/living/carbon/human/master = null // The vampire/thrall's master.
@@ -18,7 +19,6 @@
/datum/vampire/proc/add_power(var/datum/mind/vampire, var/datum/power/vampire/power, var/announce = 0)
if (!vampire || !power)
return
if (power in purchased_powers)
return
@@ -26,11 +26,9 @@
if (power.isVerb && power.verbpath)
vampire.current.verbs += power.verbpath
if (announce)
to_chat(vampire.current, "<span class='notice'><b>You have unlocked a new power:</b> [power.name].</span>")
to_chat(vampire.current, "<span class='notice'>[power.desc]</span>")
if (power.helptext)
to_chat(vampire.current, "<font color='green'>[power.helptext]</font>")
+11 -29
View File
@@ -2,10 +2,8 @@
/mob/proc/make_vampire()
if (!mind)
return
if (!mind.vampire)
mind.vampire = new /datum/vampire()
// No powers to thralls. Ew.
if (mind.vampire.status & VAMP_ISTHRALL)
return
@@ -21,7 +19,7 @@
else if(P.isVerb && P.verbpath)
verbs += P.verbpath
return 1
return TRUE
// Checks the vampire's bloodlevel and unlocks new powers based on that.
/mob/proc/check_vampire_upgrade()
@@ -43,7 +41,6 @@
/mob/proc/vampire_power(var/required_blood = 0, var/max_stat = 0, var/ignore_holder = 0, var/disrupt_healing = 1, var/required_vampire_blood = 0)
if (!mind)
return
if (!ishuman(src))
return
@@ -51,15 +48,12 @@
if (!vampire)
log_debug("[src] has a vampire power but is not a vampire.")
return
if (vampire.holder && !ignore_holder)
to_chat(src, "<span class='warning'>You cannot use this power while walking through the Veil.</span>")
return
if (stat > max_stat)
to_chat(src, "<span class='warning'>You are incapacitated.</span>")
return
if (required_blood > vampire.blood_usable)
to_chat(src, "<span class='warning'>You do not have enough usable blood. [required_blood] needed.</span>")
return
@@ -72,66 +66,57 @@
// Checks whether or not the target can be affected by a vampire's abilities.
/mob/proc/vampire_can_affect_target(var/mob/living/carbon/human/T, var/notify = 1, var/account_loyalty_implant = 0, var/ignore_thrall = FALSE)
if (!T || !istype(T))
return 0
return FALSE
// How did you even get here?
if (!mind.vampire)
return 0
return FALSE
if ((mind.vampire.status & VAMP_FULLPOWER) && !(T.mind && T.mind.vampire && (T.mind.vampire.status & VAMP_FULLPOWER)))
return 1
return TRUE
if (T.mind)
if (T.mind.assigned_role == "Chaplain")
if (notify)
to_chat(src, "<span class='warning'>Your connection with the Veil is not strong enough to affect a man as devout as them.</span>")
return 0
return FALSE
else if (T.mind.vampire && (!(T.mind.vampire.status & VAMP_ISTHRALL) || ((T.mind.vampire.status & VAMP_ISTHRALL) && !ignore_thrall)))
if (notify)
to_chat(src, "<span class='warning'>You lack the power required to affect another creature of the Veil.</span>")
return 0
return FALSE
if (isipc(T))
if (notify)
to_chat(src, "<span class='warning'>You lack the power interact with mechanical constructs.</span>")
return 0
return FALSE
if(is_special_character(T) && (!(T.mind.vampire.status & VAMP_ISTHRALL)))
if (notify)
to_chat(src, "<span class='warning'>\The [T]'s mind is too strong to be affected by our powers!</span>")
return 0
return FALSE
if (account_loyalty_implant)
for (var/obj/item/weapon/implant/loyalty/I in T)
if (I.implanted)
if (notify)
to_chat(src, "<span class='warning'>You feel that [T]'s mind is unreachable due to forced loyalty.</span>")
return 0
return FALSE
return 1
return TRUE
// Plays the vampire phase in animation.
/mob/proc/vampire_phase_in(var/turf/T = null)
if (!T)
return
anim(T, src, 'icons/mob/mob.dmi', , "bloodify_in", , dir)
// Plays the vampire phase out animation.
/mob/proc/vampire_phase_out(var/turf/T = null)
if (!T)
return
anim(T, src, 'icons/mob/mob.dmi', , "bloodify_out", , dir)
// Make a vampire thrall
/mob/proc/vampire_make_thrall()
if (!mind)
return
var/datum/vampire/thrall/thrall = new()
mind.vampire = thrall
/mob/proc/vampire_check_frenzy(var/force_frenzy = 0)
@@ -139,7 +124,6 @@
return
var/datum/vampire/vampire = mind.vampire
// Thralls don't frenzy.
if (vampire.status & VAMP_ISTHRALL)
return
@@ -218,7 +202,7 @@
sight &= ~SEE_MOBS
visible_message("<span class='danger'>[src.name]'s eyes no longer glow with violent rage, their form reverting to resemble that of a normal human's.</span>", "<span class='danger'>The beast within you retreats. You gain control over your body once more.</span>")
visible_message("<span class='danger'>[src.name]'s eyes no longer glow with violent rage, their form reverting to resemble that of a normal person's.</span>", "<span class='danger'>The beast within you retreats. You gain control over your body once more.</span>")
verbs -= /mob/living/carbon/human/proc/grapple
regenerate_icons()
@@ -254,8 +238,6 @@
/mob/living/carbon/human/proc/finish_vamp_timeout(vamp_flags = 0)
if (!mind || !mind.vampire)
return FALSE
if (vamp_flags && !(mind.vampire.status & vamp_flags))
return FALSE
return TRUE
+75 -47
View File
@@ -1,5 +1,18 @@
// Contains all /mob/procs that relate to vampire.
// Makes vampire's victim not get paralyzed, and remember the suckings
/mob/living/carbon/human/proc/vampire_alertness()
set category = "Vampire"
set name = "Victim Alertness"
set desc = "Toggle whether you wish for your victims to get paralyzed and forget your deeds."
var/datum/vampire/vampire = vampire_power(0, 0)
vampire.stealth = !vampire.stealth
if(vampire.stealth)
to_chat(src, span("notice", "Your victims will now forget your interactions, and get paralyzed when you do them."))
else
to_chat(src, span("notice", "Your victims will now remember your interactions, and stay completely mobile during them."))
// Drains the target's blood.
/mob/living/carbon/human/proc/vampire_drain_blood()
set category = "Vampire"
@@ -12,11 +25,10 @@
var/obj/item/weapon/grab/G = get_active_hand()
if (!istype(G))
to_chat(src, "<span class='warning'>You must be grabbing a victim in your active hand to drain their blood.</span>")
to_chat(src, span("warning", "You must be grabbing a victim in your active hand to drain their blood."))
return
if (G.state == GRAB_PASSIVE || G.state == GRAB_UPGRADING)
to_chat(src, "<span class='warning'>You must have the victim pinned to the ground to drain their blood.</span>")
to_chat(src, span("warning", "You must have the victim pinned to the ground to drain their blood."))
return
var/mob/living/carbon/human/T = G.affecting
@@ -24,15 +36,13 @@
//Added this to prevent vampires draining diona and IPCs
//Diona have 'blood' but its really green sap and shouldn't help vampires
//IPCs leak oil
to_chat(src, "<span class='warning'>[T] is not a creature you can drain useful blood from.</span>")
to_chat(src, span("warning", "[T] is not a creature you can drain useful blood from."))
return
if(T.head && (T.head.item_flags & AIRTIGHT))
to_chat(src, "<span class='warning'>[T]'s headgear is blocking the way to the neck.</span>")
to_chat(src, span("warning", "[T]'s headgear is blocking the way to the neck."))
return
if (vampire.status & VAMP_DRAINING)
to_chat(src, "<span class='warning'>Your fangs are already sunk into a victim's neck!</span>")
to_chat(src, span("warning", "Your fangs are already sunk into a victim's neck!"))
return
var/datum/vampire/draining_vamp = null
@@ -46,24 +56,33 @@
vampire.status |= VAMP_DRAINING
visible_message("<span class='danger'>[src.name] bites [T.name]'s neck!</span>", "<span class='danger'>You bite [T.name]'s neck and begin to drain their blood.</span>", "<span class='notice'>You hear a soft puncture and a wet sucking noise</span>")
admin_attack_log(src, T, "drained blood from [key_name(T)]", "was drained blood from by [key_name(src)]", "is draining blood from")
var/remembrance
if(vampire.stealth)
remembrance = "forgot"
else
remembrance = "remembered"
admin_attack_log(src, T, "drained blood from [key_name(T)], who [remembrance] the encounter.", "had their blood drained by [key_name(src)] and [remembrance] the encounter.", "is draining blood from")
to_chat(T, "<span class='warning'>You are unable to resist or even move. Your mind blanks as you're being fed upon.</span>")
if(vampire.stealth)
to_chat(T, span("warning", "You are unable to resist or even move. Your mind blanks as you're being fed upon."))
T.paralysis = 3400
else
to_chat(T, span("warning", "You are unable to resist or even move. Your mind is acutely aware of what's occuring."))
T.paralysis = 3400
playsound(src.loc, 'sound/effects/drain_blood_new.ogg', 50, 1)
T.paralysis = 3400
while (do_mob(src, T, 50))
if (!mind.vampire)
to_chat(src, "<span class='danger'>Your fangs have disappeared!</span>")
to_chat(src, span("danger", "Your fangs have disappeared!"))
return
blood_total = vampire.blood_total
blood_usable = vampire.blood_usable
if (!T.vessel.get_reagent_amount("blood"))
to_chat(src, "<span class='danger'>[T] has no more blood left to give.</span>")
to_chat(src, span("danger", "[T] has no more blood left to give."))
break
if (!T.stunned)
@@ -100,18 +119,27 @@
vampire.frenzy--
if (blood_total != vampire.blood_total)
var/update_msg = "<span class='notice'>You have accumulated [vampire.blood_total] [vampire.blood_total > 1 ? "units" : "unit"] of blood.</span>"
var/update_msg = "<span class='notice'>You have accumulated [vampire.blood_total] [vampire.blood_total > 1 ? "units" : "unit"] of blood</span>"
if (blood_usable != vampire.blood_usable)
update_msg += "<span class='notice'> And have [vampire.blood_usable] left to use.</span>"
update_msg += "<span class='notice'> and have [vampire.blood_usable] left to use.</span>"
else
update_msg += "<span class='notice'>.</span>"
to_chat(src, update_msg)
check_vampire_upgrade()
T.vessel.remove_reagent("blood", 25)
vampire.status &= ~VAMP_DRAINING
visible_message("<span class='danger'>[src.name] stops biting [T.name]'s neck!</span>", "<span class='notice'>You extract your fangs from [T.name]'s neck and stop draining them of blood. They will remember nothing of this occurance. Provided they survived.</span>")
if (T.stat != 2)
to_chat(T, "<span class='warning'>You remember nothing about being fed upon. Instead, you simply remember having a pleasant encounter with [src.name].</span>")
var/endsuckmsg = "You extract your fangs from [T.name]'s neck and stop draining them of blood."
if(vampire.stealth)
endsuckmsg += "They will remember nothing of this occurance, provided they survived."
visible_message("<span class='danger'>[src.name] stops biting [T.name]'s neck!</span>", "<span class='notice'>[endsuckmsg]</span>")
if(T.stat != 2 && vampire.stealth)
to_chat(T, span("warning", "You remember nothing about being fed upon. Instead, you simply remember having a pleasant encounter with [src.name]."))
T.paralysis = 0
else if(T.stat != 2)
to_chat(T, span("warning", "You remember everything about being fed upon. How you react to [src.name]'s actions is up to you."))
T.paralysis = 0
// Small area of effect stun.
@@ -122,11 +150,9 @@
if (!vampire_power(0, 1))
return
if (!has_eyes())
to_chat(src, "<span class='warning'>You don't have eyes!</span>")
return
if (istype(glasses, /obj/item/clothing/glasses/sunglasses/blindfold))
to_chat(src, "<span class='warning'>You're blindfolded!</span>")
return
@@ -136,7 +162,6 @@
for (var/mob/living/carbon/human/H in view(2))
if (H == src)
continue
if (!vampire_can_affect_target(H, 0))
continue
@@ -160,7 +185,6 @@
var/datum/vampire/vampire = vampire_power(10, 1)
if (!vampire)
return
if (!has_eyes())
to_chat(src, "<span class='warning'>You don't have eyes!</span>")
return
@@ -170,7 +194,6 @@
if (H == src)
continue
victims += H
if (!victims.len)
to_chat(src, "<span class='warning'>No suitable targets.</span>")
return
@@ -210,15 +233,12 @@
var/datum/vampire/vampire = vampire_power(20, 1)
if (!vampire)
return
if (!istype(loc, /turf))
to_chat(src, "<span class='warning'>You cannot teleport out of your current location.</span>")
return
if (T.z != src.z || get_dist(T, get_turf(src)) > world.view)
to_chat(src, "<span class='warning'>Your powers are not capable of taking you that far.</span>")
return
if (T.get_lumcount() > 0.1)
// Too bright, cannot jump into.
to_chat(src, "<span class='warning'>The destination is too bright.</span>")
@@ -307,10 +327,8 @@
for (var/mob/living/carbon/human/T in hearers(4, src))
if (T == src)
continue
if (istype(T) && (T:l_ear || T:r_ear) && istype((T:l_ear || T:r_ear), /obj/item/clothing/ears/earmuffs))
if (istype(T) && (T.l_ear || T.r_ear) && istype((T.l_ear || T.r_ear), /obj/item/clothing/ears/earmuffs))
continue
if (!vampire_can_affect_target(T, 0))
continue
@@ -369,10 +387,10 @@
desc = "A red, shimmering presence."
icon = 'icons/mob/mob.dmi'
icon_state = "blank"
density = 0
density = FALSE
var/last_valid_turf = null
var/can_move = 1
var/can_move = TRUE
var/mob/owner_mob = null
var/datum/vampire/owner_vampire = null
var/warning_level = 0
@@ -673,7 +691,6 @@
if (!istype(G))
to_chat(src, "<span class='warning'>You must be grabbing a victim in your active hand to enthrall them.</span>")
return
if (G.state == GRAB_PASSIVE || G.state == GRAB_UPGRADING)
to_chat(src, "<span class='warning'>You must have the victim pinned to the ground to enthrall them.</span>")
return
@@ -682,18 +699,14 @@
if(isipc(T))
to_chat(src, "<span class='warning'>[T] is not a creature you can enthrall.</span>")
return
if (!istype(T))
to_chat(src, "<span class='warning'>[T] is not a creature you can enthrall.</span>")
return
if (!vampire_can_affect_target(T, 1, 1))
return
if (!T.client || !T.mind)
to_chat(src, "<span class='warning'>[T]'s mind is empty and useless. They cannot be forced into a blood bond.</span>")
return
if (vampire.status & VAMP_DRAINING)
to_chat(src, "<span class='warning'>Your fangs are already sunk into a victim's neck!</span>")
return
@@ -733,7 +746,6 @@
if (H == src)
continue
victims += H
if (!victims.len)
to_chat(src, "<span class='warning'>No suitable targets.</span>")
return
@@ -805,10 +817,8 @@
for (var/mob/living/carbon/human/T in view(5))
if (T == src)
continue
if (!vampire_can_affect_target(T, 0, 1))
continue
if (!T.client)
continue
@@ -827,6 +837,32 @@
to_chat(src, "<span class='warning'>You are no longer influencing those weak of mind.</span>")
break
/mob/living/carbon/human/proc/vampire_touch_of_life()
set category = "Vampire"
set name = "Touch of Life (50)"
set desc = "You lay your hands on the target, transferring healing chemicals to them."
var/datum/vampire/vampire = vampire_power(50, 0)
if (!vampire)
return
var/obj/item/weapon/grab/G = get_active_hand()
if (!istype(G))
to_chat(src, "<span class='warning'>You must be grabbing a victim in your active hand to touch them.</span>")
return
var/mob/living/carbon/human/T = G.affecting
if (T.species.flags & NO_BLOOD)
to_chat(src, "<span class='warning'>[T] has no blood and can not be affected by your powers!</span>")
return
visible_message("<b>[src]</b> gently touches [T].")
to_chat(T, span("notice", "You feel pure bliss as [src] touches you."))
vampire.use_blood(50)
T.reagents.add_reagent("rezadone", 3)
T.reagents.add_reagent("oxycodone", 0.15) //enough to get back onto their feet
// Convert a human into a vampire.
/mob/living/carbon/human/proc/vampire_embrace()
set category = "Vampire"
@@ -842,7 +878,6 @@
if (!istype(G))
to_chat(src, "<span class='warning'>You must be grabbing a victim in your active hand to drain their blood.</span>")
return
if (G.state == GRAB_PASSIVE || G.state == GRAB_UPGRADING)
to_chat(src, "<span class='warning'>You must have the victim pinned to the ground to drain their blood.</span>")
return
@@ -850,19 +885,15 @@
var/mob/living/carbon/human/T = G.affecting
if (!vampire_can_affect_target(T, ignore_thrall = TRUE))
return
if (!T.client)
to_chat(src, "<span class='warning'>[T] is a mindless husk. The Veil has no purpose for them.</span>")
return
if (T.stat == 2)
to_chat(src, "<span class='warning'>[T]'s body is broken and damaged beyond salvation. You have no use for them.</span>")
return
if (T.species.flags & NO_BLOOD)
to_chat(src, "<span class='warning'>[T] has no blood and can not be affected by your powers!</span>")
return
if (vampire.status & VAMP_DRAINING)
to_chat(src, "<span class='warning'>Your fangs are already sunk into a victim's neck!</span>")
return
@@ -901,7 +932,6 @@
if (!mind.vampire)
to_chat(src, "<span class='alert'>Your fangs have disappeared!</span>")
return
if (!T.vessel.get_reagent_amount("blood"))
to_chat(src, "<span class='alert'>[T] is now drained of blood. You begin forcing your own blood into their body, spreading the corruption of the Veil to their body.</span>")
break
@@ -941,7 +971,6 @@
if (status_flags & LEAPING)
return
if (stat || paralysis || stunned || weakened || lying || restrained() || buckled)
to_chat(src, "<span class='warning'>You cannot lean in your current state.</span>")
return
@@ -967,7 +996,6 @@
if (status_flags & LEAPING)
status_flags &= ~LEAPING
if (!src.Adjacent(T))
to_chat(src, "<span class='warning'>You miss!</span>")
return
+2 -21
View File
@@ -815,7 +815,7 @@
/obj/item/mecha_parts/mecha_equipment/generator
name = "phoron generator"
desc = "Generates power using solid phoron as fuel. Pollutes the environment."
desc = "Generates power using solid phoron as fuel."
icon_state = "tesla"
origin_tech = list(TECH_PHORON = 2, TECH_POWER = 2, TECH_ENGINEERING = 1)
equip_cooldown = 10
@@ -892,29 +892,13 @@
/obj/item/mecha_parts/mecha_equipment/generator/attackby(weapon,mob/user)
var/result = load_fuel(weapon)
if(isnull(result))
user.visible_message("[user] tries to shove [weapon] into [src]. What a dumb-ass.","<span class='warning'>[fuel] traces minimal. [weapon] cannot be used as fuel.</span>")
user.visible_message("[user] tries to shove [weapon] into [src].","<span class='warning'>[fuel] traces minimal. [weapon] cannot be used as fuel.</span>")
else if(!result)
to_chat(user, "Unit is full.")
else
user.visible_message("[user] loads [src] with [fuel].","[result] unit\s of [fuel] successfully loaded.")
return
/obj/item/mecha_parts/mecha_equipment/generator/critfail()
..()
var/turf/simulated/T = get_turf(src)
if(!T)
return
var/datum/gas_mixture/GM = new
if(prob(10))
T.assume_gas("phoron", 100, 1500+T0C)
T.visible_message("The [src] suddenly disgorges a cloud of heated phoron.")
destroy()
else
T.assume_gas("phoron", 5, istype(T) ? T.air.temperature : T20C)
T.visible_message("The [src] suddenly disgorges a cloud of phoron.")
T.assume_air(GM)
return
/obj/item/mecha_parts/mecha_equipment/generator/process()
// Process every 10 ds.
if ((last_tick + 10) > world.time)
@@ -957,9 +941,6 @@
fuel_type = /obj/item/stack/material/uranium
var/rad_per_cycle = 0.3
/obj/item/mecha_parts/mecha_equipment/generator/nuclear/critfail()
return
/obj/item/mecha_parts/mecha_equipment/generator/nuclear/process()
. = ..()
if(. != PROCESS_KILL)
+2 -2
View File
@@ -1,8 +1,8 @@
/obj/machinery/mecha_part_fabricator
icon = 'icons/obj/robotics.dmi'
icon_state = "fab-idle"
name = "Exosuit Fabricator"
desc = "A machine used for construction of robotcs and mechas."
name = "Mechatronic Fabricator"
desc = "A general purpose fabricator that can be used to fabricate robotic equipment."
density = 1
anchored = 1
use_power = 1
+1 -1
View File
@@ -213,7 +213,7 @@ BREATH ANALYZER
user.show_message(text("<span class='warning'>Internal bleeding detected. Advanced scanner required for location.</span>"), 1)
if(M:vessel)
var/blood_volume = round(M:vessel.get_reagent_amount("blood"))
var/blood_percent = blood_volume / 560
var/blood_percent = blood_volume / 560
var/blood_type = M.dna.b_type
blood_percent *= 100
if(blood_volume <= 500 && blood_volume > 336)
+7 -5
View File
@@ -27,7 +27,7 @@
var/mob_name_pick_message = "Pick a name."
var/mob_name_prefix = null //The prefix that should be applied to the mob (i.e. CCIAA, Tpr., Cmdr.)
var/mob_name_suffix = null //The suffix that should be applied to the mob name
/datum/ghostspawner/New()
. = ..()
if(!jobban_job)
@@ -45,13 +45,13 @@
if(req_head_whitelist && !check_whitelist(user))
return "Missing Head of Staff Whitelist"
if(req_species_whitelist && !is_alien_whitelisted(user, req_species_whitelist))
return "Missing Species Whitelist"
if(jobban_job && jobban_isbanned(user,jobban_job))
return "Job Banned"
if(!enabled && !can_edit(user)) //If its not enabled and the user cant edit it, dont show it
return "Currently Disabled"
@@ -83,10 +83,10 @@
return FALSE
//Proc executed before someone is spawned in
/datum/ghostspawner/proc/pre_spawn(mob/user)
/datum/ghostspawner/proc/pre_spawn(mob/user)
count++ //Increment the spawned in mob count
if(max_count && count >= max_count)
disable()
enabled = FALSE
return TRUE
//This proc selects the spawnpoint to use.
@@ -114,6 +114,8 @@
//Proc executed after someone is spawned in
/datum/ghostspawner/proc/post_spawn(mob/user)
if(max_count && count >= max_count)
disable()
if(welcome_message)
to_chat(user, span("notice", welcome_message))
return TRUE
@@ -64,7 +64,7 @@
var/picked_species = input(user,"Select your species") as null|anything in species_selection
if(!picked_species)
picked_species = "Human"
picked_species = possible_species[1]
//Get the name / age from them first
var/mname = get_mob_name(user, picked_species)
@@ -0,0 +1,132 @@
/datum/design/hardsuitmodules
build_type = MECHFAB
category = "Hardsuit (Modules)"
time = 10
/datum/design/hardsuitmodules/iss_module
name = "IIS module"
desc = "An integrated intelligence system module suitable for most hardsuits."
id = "iis_module"
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 3)
materials = list("glass" = 7500, DEFAULT_WALL_MATERIAL = 5000)
build_path = /obj/item/rig_module/ai_container
/datum/design/hardsuitmodules/sink_module
name = "hardsuit power sink"
desc = "An heavy-duty power sink suitable for hardsuits."
id = "power_sink_module"
req_tech = list(TECH_POWER = 4, TECH_MATERIAL = 3, TECH_ENGINEERING = 4, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold"= 2000, "silver"= 3000, "glass"= 2000)
build_path = /obj/item/rig_module/power_sink
/datum/design/hardsuitmodules/meson_module
name = "hardsuit meson scanner"
desc = "A layered, translucent visor system for a hardsuit."
id = "meson_module"
req_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
materials = list("glass"= 5000, DEFAULT_WALL_MATERIAL= 1500)
build_path = /obj/item/rig_module/vision/meson
/datum/design/hardsuitmodules/sechud_module
name = "hardsuit security hud"
desc = "A simple tactical information system for a hardsuit."
id = "sechud_module"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 2, TECH_MAGNET = 3)
materials = list("glass" = 5000, DEFAULT_WALL_MATERIAL =1500)
build_path = /obj/item/rig_module/vision/sechud
/datum/design/hardsuitmodules/medhud_module
name = "hardsuit medical hud"
desc = "A simple medical status indicator for a hardsuit."
id = "medhu_module"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 2, TECH_MAGNET = 3)
materials = list("glass"= 5000, DEFAULT_WALL_MATERIAL =1500)
build_path = /obj/item/rig_module/vision/medhud
/datum/design/hardsuitmodules/nvg_module
name = "hardsuit night vision interface"
desc = "A multi input night vision system for a hardsuit."
id = "nvg_module"
req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 3, TECH_MAGNET = 4)
materials = list("glass" = 5000, DEFAULT_WALL_MATERIAL = 1500, "uranium" = 5000)
build_path = /obj/item/rig_module/vision/nvg
/datum/design/hardsuitmodules/healthscanner_module
name = "hardsuit health scanner"
desc = "A hardsuit-mounted health scanner."
id = "healthscanner_module"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 2)
materials = list("glass" = 5250, DEFAULT_WALL_MATERIAL = 2500)
build_path = /obj/item/rig_module/device/healthscanner
/datum/design/hardsuitmodules/chem_module
name = "mounted chemical injector"
desc = "A complex web of tubing and a large needle suitable for hardsuit use."
id = "chem_module"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_DATA = 3, TECH_PHORON = 2)
materials = list("glass" = 9250, DEFAULT_WALL_MATERIAL = 10000, "gold" = 2500, "silver" = 4250, "phoron" = 5500)
build_path = /obj/item/rig_module/chem_dispenser/injector
/datum/design/hardsuitmodules/plasmacutter_module
name = "hardsuit plasma cutter"
desc = "A self-sustaining plasma arc capable of cutting through walls."
id = "plasmacutter_module"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_PHORON = 4)
materials = list("glass" = 5250, DEFAULT_WALL_MATERIAL = 30000, "silver" = 5250, "phoron" = 7250)
build_path = /obj/item/rig_module/mounted/plasmacutter
/datum/design/hardsuitmodules/jet_module
name = "hardsuit maneuvering jets"
desc = "A compact gas thruster system for a hardsuit."
id = "jet_module"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list("glass" = 4250, DEFAULT_WALL_MATERIAL = 15000, "silver" = 4250,"uranium" = 5250)
build_path = /obj/item/rig_module/maneuvering_jets
/datum/design/hardsuitmodules/drill_module
name = "hardsuit drill mount"
desc = "A very heavy diamond-tipped drill."
id = "drill_module"
req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4)
materials = list("glass" = 2250, DEFAULT_WALL_MATERIAL = 55000, "silver" = 5250, "diamond" = 3750)
build_path = /obj/item/rig_module/device/drill
/datum/design/hardsuitmodules/rfd_c_module
name = "RFD-C mount"
desc = "A cell-powered Rapid-Fabrication-Device C-Class for a hardsuit."
id = "rcd_module"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 5, TECH_POWER = 5, TECH_BLUESPACE = 4)
materials = list(DEFAULT_WALL_MATERIAL= 30000, "phoron" = 12500, "silver" = 10000, "gold" = 10000)
build_path = /obj/item/rig_module/device/rfd_c
/datum/design/hardsuitmodules/actuators_module
name = "leg actuators"
desc = "A set of electromechanical actuators, for safe traversal of multilevelled areas."
id = "actuators_module"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 4, TECH_POWER = 3)
materials = list(DEFAULT_WALL_MATERIAL = 85000, "glass" = 1250, "silver" = 5250, "gold" = 2750)
build_path = /obj/item/rig_module/actuators
/datum/design/hardsuitmodules/taser_module
name = "mounted taser"
desc = "A palm-mounted nonlethal energy projector."
id = "taser_module"
req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_COMBAT = 3, TECH_MAGNET = 2)
materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 5250)
build_path = /obj/item/rig_module/mounted/taser
/datum/design/hardsuitmodules/egun_module
name = "mounted energy gun"
desc = "A forearm-mounted energy projector."
id = "egun_module"
req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 4, TECH_COMBAT = 4, TECH_MAGNET = 3)
materials = list(DEFAULT_WALL_MATERIAL= 7000, "glass"= 2250, "uranium"= 3250, "gold"= 2500)
build_path = /obj/item/rig_module/mounted/egun
/datum/design/hardsuitmodules/cooling_module
name = "mounted cooling unit"
desc = "A heat sink with liquid cooled radiator."
id = "cooling_module"
req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL= 7000, "glass"= 5500)
build_path = /obj/item/rig_module/cooling_unit
@@ -0,0 +1,64 @@
/datum/design/rig
build_type = MECHFAB
category = "Hardsuit (Assemblies)"
materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 12500)
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_MAGNET = 3, TECH_POWER = 3)
time = 20
/datum/design/rig/ce
name = "advanced voidsuit control module assembly"
desc = "An assembly frame for an advanced voidsuit that protects against hazardous, low pressure environments."
id = "rig_ce"
build_path = /obj/item/rig_assembly/ce
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_POWER = 4)
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 12500, "silver" = 5500, "gold" = 5500, "phoron" = 7550)
/datum/design/rig/eva
name = "EVA suit control module assembly"
desc = "An assembly for light rig that is desiged for repairs and maintenance to the outside of habitats and vessels."
id = "rig_eva"
build_path = /obj/item/rig_assembly/eva
/datum/design/rig/industrial
name = "industrial suit control module assembly"
desc = "An assembly for a heavy, powerful rig used by construction crews and mining corporations."
id = "rig_industrial"
build_path = /obj/item/rig_assembly/industrial
/datum/design/rig/hazmat
name = "AMI control module assembly"
desc = "An assembly for Anomalous Material Interaction hardsuit that protects against the strangest energies the universe can throw at it."
id = "rig_hazmat"
build_path = /obj/item/rig_assembly/hazmat
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 25000, "silver" = 5500, "gold" = 5500, "phoron" = 7550)
/datum/design/rig/medical
name = "rescue suit control module assembly"
desc = "An assembly for a durable suit designed for medical rescue in high risk areas."
id = "rig_medical"
build_path = /obj/item/rig_assembly/medical
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 12500, "silver" = 5500, "gold" = 3500, "phoron" = 7550)
/datum/design/rig/hazard
name = "hazard hardsuit control module"
desc = "An assembly for a security hardsuit designed for prolonged EVA in dangerous environments."
id = "rig_hazard"
build_path = /obj/item/rig_assembly/combat/hazard
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 3)
materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 12500, "silver" = 3500, "gold" = 5500)
/datum/design/rig/combat
name = "combat hardsuit control module assembly"
desc = "An assembly frame for a sleek and dangerous hardsuit for active combat."
id = "rig_combat"
build_path = /obj/item/rig_assembly/combat/combat
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 5)
materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 12500, "silver" = 3500, "gold" = 3500, "uranium" = 5550, "diamond" = 7500)
/datum/design/rig/hacker
name = "cybersuit control module assembly"
desc = "An assembly for an advanced powered armour suit with many cyberwarfare enhancements. Comes with built-in insulated gloves for safely tampering with electronics."
id = "rig_hacker"
build_path = /obj/item/rig_assembly/combat/illegal/hacker
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 3, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 12500, "gold" = 2500, "silver" = 3500, "uranium" = 5550)
@@ -0,0 +1,58 @@
/datum/design/item/mechfab/durand
category = "Durand"
/datum/design/item/mechfab/durand/chassis
name = "Durand chassis"
id = "durand_chassis"
build_path = /obj/item/mecha_parts/chassis/durand
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/durand/torso
name = "Durand torso"
id = "durand_torso"
build_path = /obj/item/mecha_parts/part/durand_torso
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 55000, "glass" = 20000, "silver" = 10000)
/datum/design/item/mechfab/durand/head
name = "Durand head"
id = "durand_head"
build_path = /obj/item/mecha_parts/part/durand_head
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 10000, "silver" = 3000)
/datum/design/item/mechfab/durand/left_arm
name = "Durand left arm"
id = "durand_left_arm"
build_path = /obj/item/mecha_parts/part/durand_left_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 35000, "silver" = 3000)
/datum/design/item/mechfab/durand/right_arm
name = "Durand right arm"
id = "durand_right_arm"
build_path = /obj/item/mecha_parts/part/durand_right_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 35000, "silver" = 3000)
/datum/design/item/mechfab/durand/left_leg
name = "Durand left leg"
id = "durand_left_leg"
build_path = /obj/item/mecha_parts/part/durand_left_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 40000, "silver" = 3000)
/datum/design/item/mechfab/durand/right_leg
name = "Durand right leg"
id = "durand_right_leg"
build_path = /obj/item/mecha_parts/part/durand_right_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 40000, "silver" = 3000)
/datum/design/item/mechfab/durand/armour
name = "Durand armour plates"
id = "durand_armour"
build_path = /obj/item/mecha_parts/part/durand_armour
time = 60
materials = list(DEFAULT_WALL_MATERIAL = 50000, "uranium" = 10000)
@@ -0,0 +1,58 @@
/datum/design/item/mechfab/gygax
category = "Gygax"
/datum/design/item/mechfab/gygax/chassis
name = "Gygax chassis"
id = "gygax_chassis"
build_path = /obj/item/mecha_parts/chassis/gygax
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/gygax/torso
name = "Gygax torso"
id = "gygax_torso"
build_path = /obj/item/mecha_parts/part/gygax_torso
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 50000, "glass" = 20000)
/datum/design/item/mechfab/gygax/head
name = "Gygax head"
id = "gygax_head"
build_path = /obj/item/mecha_parts/part/gygax_head
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 20000, "glass" = 10000)
/datum/design/item/mechfab/gygax/left_arm
name = "Gygax left arm"
id = "gygax_left_arm"
build_path = /obj/item/mecha_parts/part/gygax_left_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/mechfab/gygax/right_arm
name = "Gygax right arm"
id = "gygax_right_arm"
build_path = /obj/item/mecha_parts/part/gygax_right_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/mechfab/gygax/left_leg
name = "Gygax left leg"
id = "gygax_left_leg"
build_path = /obj/item/mecha_parts/part/gygax_left_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 35000)
/datum/design/item/mechfab/gygax/right_leg
name = "Gygax right leg"
id = "gygax_right_leg"
build_path = /obj/item/mecha_parts/part/gygax_right_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 35000)
/datum/design/item/mechfab/gygax/armour
name = "Gygax armour plates"
id = "gygax_armour"
build_path = /obj/item/mecha_parts/part/gygax_armour
time = 60
materials = list(DEFAULT_WALL_MATERIAL = 50000, "diamond" = 10000)
@@ -0,0 +1,51 @@
/datum/design/item/mechfab/hermes
category = "Hermes"
/datum/design/item/mechfab/hermes/chassis
name = "Hermes chassis"
id = "hermes_chassis"
build_path = /obj/item/mecha_parts/chassis/hermes
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 20000)
/datum/design/item/mechfab/hermes/torso
name = "Hermes torso"
id = "hermes_torso"
build_path = /obj/item/mecha_parts/part/hermes_torso
time = 18
materials = list(DEFAULT_WALL_MATERIAL = 21000)
/datum/design/item/mechfab/hermes/head
name = "Hermes head"
id = "hermes_head"
build_path = /obj/item/mecha_parts/part/hermes_head
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000)
/datum/design/item/mechfab/hermes/left_arm
name = "Hermes left arm"
id = "hermes_left_arm"
build_path = /obj/item/mecha_parts/part/hermes_left_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/right_arm
name = "Hermes right arm"
id = "hermes_right_arm"
build_path = /obj/item/mecha_parts/part/hermes_right_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/left_leg
name = "Hermes left leg"
id = "hermes_left_leg"
build_path = /obj/item/mecha_parts/part/hermes_left_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/right_leg
name = "Hermes right leg"
id = "hermes_right_leg"
build_path = /obj/item/mecha_parts/part/hermes_right_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 10000)
@@ -0,0 +1,24 @@
/datum/design/item/mecha
build_type = MECHFAB
category = "Exosuit Equipment"
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mecha/AssembleDesignDesc()
if(!desc)
desc = "Allows for the construction of \a '[item_name]' exosuit module."
/datum/design/item/mecha/tracking
name = "Exosuit tracking beacon"
id = "exotrack"
build_type = MECHFAB
time = 5
materials = list(DEFAULT_WALL_MATERIAL = 500)
build_path = /obj/item/mecha_parts/mecha_tracking
/datum/design/item/mecha/tracking/control
name = "Exosuit control beacon"
id = "exocontrol"
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 3000)
build_path = /obj/item/mecha_parts/mecha_tracking/control
@@ -0,0 +1,144 @@
/datum/design/item/mecha/tool
build_type = MECHFAB
category = "Exosuit Equipment (Tools)"
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mecha/tool/hydraulic_clamp
name = "Hydraulic clamp"
id = "hydraulic_clamp"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
/datum/design/item/mecha/tool/drill
name = "Drill"
id = "drill"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill
/datum/design/item/mecha/tool/kinetic_accelerator
name = "Burst kinetic accelerator"
id = "kinetic_accelerator"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_PHORON = 3)
materials = list("glass" = 2250, DEFAULT_WALL_MATERIAL = 55000, "silver" = 5250)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/kin_accelerator
/datum/design/item/mecha/tool/kinetic_accelerator/burst
name = "Kinetic accelerator"
id = "kinetic_accelerator_burst"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_MAGNET = 4, TECH_PHORON = 4)
materials = list("glass" = 5250, DEFAULT_WALL_MATERIAL = 60000, "silver" = 7250)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/kin_accelerator/burst
/datum/design/item/mecha/tool/extinguisher
name = "Extinguisher"
id = "extinguisher"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/extinguisher
/datum/design/item/mecha/tool/cable_layer
name = "Cable layer"
id = "mech_cable_layer"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer
/datum/design/item/mecha/tool/sleeper
name = "Sleeper"
id = "mech_sleeper"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 10000)
/datum/design/item/mecha/tool/syringe_gun
name = "Syringe gun"
id = "mech_syringe_gun"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000)
/datum/design/item/mecha/tool/passenger
name = "Passenger compartment"
id = "mech_passenger"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/passenger
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000)
/datum/design/item/mecha/tool/wormhole_gen
name = "Wormhole generator"
desc = "An exosuit module that can generate small quasi-stable wormholes."
id = "mech_wormhole_gen"
req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator
/datum/design/item/mecha/tool/teleporter
name = "Teleporter"
desc = "An exosuit module that allows teleportation to any position in view."
id = "mech_teleporter"
req_tech = list(TECH_BLUESPACE = 6, TECH_MAGNET = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/teleporter
/datum/design/item/mecha/tool/rfd_c
name = "RFD-C"
desc = "An exosuit-mounted Rapid-Fabrication-Device C-Class."
id = "mech_rfd_c"
time = 120
materials = list(DEFAULT_WALL_MATERIAL = 30000, "phoron" = 25000, "silver" = 20000, "gold" = 20000)
req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/rfd_c
/datum/design/item/mecha/tool/gravcatapult
name = "Gravitational catapult"
desc = "An exosuit-mounted gravitational catapult."
id = "mech_gravcatapult"
req_tech = list(TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult
/datum/design/item/mecha/tool/repair_droid
name = "Repair droid"
desc = "Automated repair droid, exosuits' best companion. BEEP BOOP"
id = "mech_repair_droid"
req_tech = list(TECH_MAGNET = 3, TECH_DATA = 3, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 1000, "silver" = 2000, "glass" = 5000)
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
/datum/design/item/mecha/tool/phoron_generator
name = "Phoron generator"
desc = "Converts sheets of phoron into energy."
id = "mech_phoron_generator"
req_tech = list(TECH_PHORON = 2, TECH_POWER= 2, TECH_ENGINEERING = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/generator
materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 500, "glass" = 1000)
/datum/design/item/mecha/tool/energy_relay
name = "Energy relay"
desc = "Saps power from APCs in range to power on-board energy cell."
id = "mech_energy_relay"
req_tech = list(TECH_MAGNET = 4, TECH_POWER = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 2000, "silver" = 3000, "glass" = 2000)
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
/datum/design/item/mecha/tool/ccw_armor
name = "CQC armor booster"
desc = "Exosuit close-combat armor booster. Anti-melee."
id = "mech_cqc_armor"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4)
materials = list(DEFAULT_WALL_MATERIAL = 20000, "silver" = 5000)
build_path = /obj/item/mecha_parts/mecha_equipment/armor_booster/anticcw_armor_booster
/datum/design/item/mecha/tool/proj_armor
name = "Ranged-combat armor booster"
desc = "Exosuit projectile armor booster. Anti-firearm."
id = "mech_proj_armor"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 5000)
build_path = /obj/item/mecha_parts/mecha_equipment/armor_booster/antiproj_armor_booster
/datum/design/item/mecha/tool/diamond_drill
name = "Diamond drill"
desc = "A diamond version of the exosuit drill. It's harder, better, faster, stronger."
id = "mech_diamond_drill"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "diamond" = 6500)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
/datum/design/item/mecha/tool/generator_nuclear
name = "Nuclear generator"
desc = "Exosuit-held nuclear reactor. Converts uranium into energy. Leaks radiation."
id = "mech_generator_nuclear"
req_tech = list(TECH_POWER= 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 500, "glass" = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
@@ -0,0 +1,112 @@
/datum/design/item/mecha/weapon
req_tech = list(TECH_COMBAT = 3)
build_type = MECHFAB
category = "Exosuit Equipment (Weapons)"
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mecha/weapon/flamethrower
name = "Flamethrower"
id = "flamethrower"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 4, TECH_COMBAT = 2, TECH_PHORON = 2)
materials = list("glass" = 5250, DEFAULT_WALL_MATERIAL = 40000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/flamethrower
/datum/design/item/mecha/weapon/taser
name = "Mounted taser carbine"
id = "mech_taser"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
/datum/design/item/mecha/weapon/lmg
name = "Mounted machine gun"
id = "mech_lmg"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
/datum/design/item/mecha/weapon/scattershot
name = "Mounted shotgun"
id = "mech_scattershot"
req_tech = list(TECH_COMBAT = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
/datum/design/item/mecha/weapon/laser
name = "Mounted laser carbine"
id = "mech_laser"
req_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
/datum/design/item/mecha/weapon/laser_rigged
name = "Jury-rigged welder-laser"
desc = "Allows for the construction of a welder-laser assembly package for non-combat exosuits."
id = "mech_laser_rigged"
req_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser
/datum/design/item/mecha/weapon/laser_heavy
name = "Mounted laser cannon"
id = "mech_laser_heavy"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
/datum/design/item/mecha/weapon/ion
name = "Heavy ion cannon"
id = "mech_ion"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
/datum/design/item/mecha/weapon/laser_gatling
name = "Mounted gatling laser"
id = "laser_gatling"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/gatling
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 6000)
/datum/design/item/mecha/weapon/xray_gatling
name = "Gatling xray gun"
id = "xray_gatling"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/xray
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 6000, "phoron" = 6000)
/datum/design/item/mecha/weapon/tesla_gun
name = "Mounted tesla cannon"
id = "tesla_gun"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 5, TECH_MATERIAL = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla
materials = list(DEFAULT_WALL_MATERIAL = 20000, "silver" = 6000, "phoron" = 6000)
/datum/design/item/mecha/weapon/gyro_gun
name = "Mounted gyrojet autocannon"
id = "gyro_gun"
req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_MATERIAL = 6, TECH_ILLEGAL = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/gyro
materials = list(DEFAULT_WALL_MATERIAL = 20000, "silver" = 6000, "phoron" = 6000, "diamond" = 7500)
/datum/design/item/mecha/weapon/grenade_launcher
name = "Grenade launcher"
id = "mech_grenade_launcher"
req_tech = list(TECH_COMBAT = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
/datum/design/item/mecha/weapon/clusterbang_launcher
name = "Clusterbang Grenade launcher"
desc = "A weapon that violates the Geneva Convention at 6 rounds per minute."
id = "clusterbang_launcher"
req_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 6000, "uranium" = 6000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited
/datum/design/item/mecha/weapon/plasma_cutter
name = "Heavy plasma cutter"
desc = "A large mining tool capable of expelling concentrated plasma bursts, useful for crushing rocks."
id = "mecha_plasmacutter"
req_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ENGINEERING = 4)
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "gold" = 1000, "phoron" = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma
/datum/design/item/mecha/weapon/incendiary
name = "Mounted incendiary carbine"
desc = "A weapon for combat exosuits. Shoots incendiary shells."
id = "mecha_incendiary"
req_tech = list(TECH_COMBAT= 4, TECH_MATERIAL = 4, TECH_PHORON = 3)
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "phoron" = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/incendiary
@@ -0,0 +1,51 @@
/datum/design/item/mechfab/odysseus
category = "Odysseus"
/datum/design/item/mechfab/odysseus/chassis
name = "Odysseus chassis"
id = "odysseus_chassis"
build_path = /obj/item/mecha_parts/chassis/odysseus
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 20000)
/datum/design/item/mechfab/odysseus/torso
name = "Odysseus torso"
id = "odysseus_torso"
build_path = /obj/item/mecha_parts/part/odysseus_torso
time = 18
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/odysseus/head
name = "Odysseus head"
id = "odysseus_head"
build_path = /obj/item/mecha_parts/part/odysseus_head
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 10000)
/datum/design/item/mechfab/odysseus/left_arm
name = "Odysseus left arm"
id = "odysseus_left_arm"
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/odysseus/right_arm
name = "Odysseus right arm"
id = "odysseus_right_arm"
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/odysseus/left_leg
name = "Odysseus left leg"
id = "odysseus_left_leg"
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/odysseus/right_leg
name = "Odysseus right leg"
id = "odysseus_right_leg"
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 15000)
@@ -0,0 +1,49 @@
/datum/design/item/mechfab/ripley
category = "Ripley"
/datum/design/item/mechfab/ripley/chassis
name = "Ripley chassis"
id = "ripley_chassis"
build_path = /obj/item/mecha_parts/chassis/ripley
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 20000)
/datum/design/item/mechfab/ripley/chassis/firefighter
name = "Firefigher chassis"
id = "firefighter_chassis"
build_path = /obj/item/mecha_parts/chassis/firefighter
/datum/design/item/mechfab/ripley/torso
name = "Ripley torso"
id = "ripley_torso"
build_path = /obj/item/mecha_parts/part/ripley_torso
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 40000, "glass" = 15000)
/datum/design/item/mechfab/ripley/left_arm
name = "Ripley left arm"
id = "ripley_left_arm"
build_path = /obj/item/mecha_parts/part/ripley_left_arm
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/ripley/right_arm
name = "Ripley right arm"
id = "ripley_right_arm"
build_path = /obj/item/mecha_parts/part/ripley_right_arm
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/ripley/left_leg
name = "Ripley left leg"
id = "ripley_left_leg"
build_path = /obj/item/mecha_parts/part/ripley_left_leg
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/mechfab/ripley/right_leg
name = "Ripley right leg"
id = "ripley_right_leg"
build_path = /obj/item/mecha_parts/part/ripley_right_leg
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 30000)
@@ -0,0 +1,38 @@
/datum/design/item/mechfab/prosthetic
category = "Prosthetic (External)"
//if the fabricator is a mech fab pass the manufacturer info over to the robot part constructor
/datum/design/item/mechfab/prosthetic/Fabricate(var/newloc, var/fabricator)
if(istype(fabricator, /obj/machinery/mecha_part_fabricator))
var/obj/machinery/mecha_part_fabricator/mechfab = fabricator
return new build_path(newloc, mechfab.manufacturer)
return ..()
// Copied from robot.dm, but reflavoured to be more fitting to prosthetics.
/datum/design/item/mechfab/prosthetic/l_arm
name = "Prosthetic left arm"
id = "robot_l_arm"
build_path = /obj/item/robot_parts/l_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18000)
/datum/design/item/mechfab/prosthetic/r_arm
name = "Prosthetic right arm"
id = "robot_r_arm"
build_path = /obj/item/robot_parts/r_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18000)
/datum/design/item/mechfab/prosthetic/l_leg
name = "Prosthetic left leg"
id = "robot_l_leg"
build_path = /obj/item/robot_parts/l_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/prosthetic/r_leg
name = "Prosthetic right leg"
id = "robot_r_leg"
build_path = /obj/item/robot_parts/r_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000)
@@ -0,0 +1,35 @@
/datum/design/item/mechfab/prosthetic/internal
category = "Prosthetic (Internal)"
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 9000, "glass" = 3000)
//make sure the printed organ is actually robotic
/datum/design/item/mechfab/prosthetic/internal/Fabricate()
var/obj/item/organ/O = ..()
O.robotize()
return O
/datum/design/item/mechfab/prosthetic/internal/heart
name = "Prosthetic Heart"
id = "robotic_heart"
build_path = /obj/item/organ/heart
/datum/design/item/mechfab/prosthetic/internal/lungs
name = "Prosthetic Lungs"
id = "robotic_lungs"
build_path = /obj/item/organ/lungs
/datum/design/item/mechfab/prosthetic/internal/kidneys
name = "Prosthetic Kidneys"
id = "robotic_kidneys"
build_path = /obj/item/organ/kidneys
/datum/design/item/mechfab/prosthetic/internal/eyes
name = "Prosthetic Eyes"
id = "robotic_eyes"
build_path = /obj/item/organ/eyes
/datum/design/item/mechfab/prosthetic/internal/liver
name = "Prosthetic Liver"
id = "robotic_liver"
build_path = /obj/item/organ/liver
@@ -0,0 +1,111 @@
/datum/design/item/mechfab
build_type = MECHFAB
req_tech = list()
/datum/design/item/mechfab/robot
category = "Robot"
//if the fabricator is a mech fab pass the manufacturer info over to the robot part constructor
/datum/design/item/mechfab/robot/Fabricate(var/newloc, var/fabricator)
if(istype(fabricator, /obj/machinery/mecha_part_fabricator))
var/obj/machinery/mecha_part_fabricator/mechfab = fabricator
return new build_path(newloc, mechfab.manufacturer)
return ..()
/datum/design/item/mechfab/robot/exoskeleton
name = "Robot exoskeleton"
id = "robot_exoskeleton"
build_path = /obj/item/robot_parts/robot_suit
time = 50
materials = list(DEFAULT_WALL_MATERIAL = 50000)
/datum/design/item/mechfab/robot/torso
name = "Robot torso"
id = "robot_torso"
build_path = /obj/item/robot_parts/chest
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 40000)
/datum/design/item/mechfab/robot/head
name = "Robot head"
id = "robot_head"
build_path = /obj/item/robot_parts/head
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/robot/l_arm
name = "Robot left arm"
id = "robot_l_arm"
build_path = /obj/item/robot_parts/l_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18000)
/datum/design/item/mechfab/robot/r_arm
name = "Robot right arm"
id = "robot_r_arm"
build_path = /obj/item/robot_parts/r_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18000)
/datum/design/item/mechfab/robot/l_leg
name = "Robot left leg"
id = "robot_l_leg"
build_path = /obj/item/robot_parts/l_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/robot/r_leg
name = "Robot right leg"
id = "robot_r_leg"
build_path = /obj/item/robot_parts/r_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/robot/component
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 5000)
/datum/design/item/mechfab/robot/component/synthetic_flash
name = "Synthetic flash"
id = "sflash"
req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
materials = list(DEFAULT_WALL_MATERIAL = 750, "glass" = 750)
build_path = /obj/item/device/flash/synthetic
/datum/design/item/mechfab/robot/component/binary_communication_device
name = "Binary communication device"
id = "binary_communication_device"
build_path = /obj/item/robot_parts/robot_component/binary_communication_device
/datum/design/item/mechfab/robot/component/radio
name = "Radio"
id = "radio"
build_path = /obj/item/robot_parts/robot_component/radio
/datum/design/item/mechfab/robot/component/actuator
name = "Actuator"
id = "actuator"
build_path = /obj/item/robot_parts/robot_component/actuator
/datum/design/item/mechfab/robot/component/diagnosis_unit
name = "Diagnosis unit"
id = "diagnosis_unit"
build_path = /obj/item/robot_parts/robot_component/diagnosis_unit
/datum/design/item/mechfab/robot/component/camera
name = "Camera"
id = "camera"
build_path = /obj/item/robot_parts/robot_component/camera
/datum/design/item/mechfab/robot/component/armour
name = "Armour plating"
id = "armour"
build_path = /obj/item/robot_parts/robot_component/armour
/datum/design/item/mechfab/robot/component/surge
name = "Heavy surge prevention module"
desc = "Used to boost prevent damage from EMP. Has limited surge preventions."
id = "borg_surge_module"
materials = list(DEFAULT_WALL_MATERIAL = 20000, "glass" = 6000, "gold" = 5000, "silver" = 7500) // Should be expensive
req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 2, TECH_MAGNET = 5, TECH_POWER = 5, TECH_ENGINEERING = 4, TECH_COMBAT = 3)
build_path = /obj/item/robot_parts/robot_component/surge
@@ -0,0 +1,52 @@
/datum/design/item/robot_upgrade
build_type = MECHFAB
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
category = "Cyborg Upgrade Modules"
/datum/design/item/robot_upgrade/rename
name = "Rename module"
desc = "Used to rename a cyborg."
id = "borg_rename_module"
build_path = /obj/item/borg/upgrade/rename
/datum/design/item/robot_upgrade/reset
name = "Reset module"
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot."
id = "borg_reset_module"
build_path = /obj/item/borg/upgrade/reset
/datum/design/item/robot_upgrade/floodlight
name = "Floodlight module"
desc = "Used to boost cyborg's integrated light intensity."
id = "borg_floodlight_module"
build_path = /obj/item/borg/upgrade/floodlight
/datum/design/item/robot_upgrade/restart
name = "Emergency restart module"
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
id = "borg_restart_module"
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 5000)
build_path = /obj/item/borg/upgrade/restart
/datum/design/item/robot_upgrade/vtec
name = "VTEC module"
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
id = "borg_vtec_module"
materials = list(DEFAULT_WALL_MATERIAL = 80000, "glass" = 6000, "gold" = 5000)
build_path = /obj/item/borg/upgrade/vtec
/datum/design/item/robot_upgrade/jetpack
name = "Jetpack module"
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
id = "borg_jetpack_module"
materials = list(DEFAULT_WALL_MATERIAL = 10000, "phoron" = 15000, "uranium" = 20000)
build_path = /obj/item/robot_parts/robot_component/jetpack
/datum/design/item/robot_upgrade/syndicate
name = "Illegal upgrade"
desc = "Allows for the construction of lethal upgrades for cyborgs."
id = "borg_syndicate_module"
req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 15000, "diamond" = 10000)
build_path = /obj/item/borg/upgrade/syndicate
@@ -1,934 +0,0 @@
/datum/design/item/mechfab
build_type = MECHFAB
category = "Misc"
req_tech = list(TECH_MATERIAL = 1)
/datum/design/item/mechfab/robot
category = "Robot"
//if the fabricator is a mech fab pass the manufacturer info over to the robot part constructor
/datum/design/item/mechfab/robot/Fabricate(var/newloc, var/fabricator)
if(istype(fabricator, /obj/machinery/mecha_part_fabricator))
var/obj/machinery/mecha_part_fabricator/mechfab = fabricator
return new build_path(newloc, mechfab.manufacturer)
return ..()
/datum/design/item/mechfab/robot/exoskeleton
name = "Robot exoskeleton"
id = "robot_exoskeleton"
build_path = /obj/item/robot_parts/robot_suit
time = 50
materials = list(DEFAULT_WALL_MATERIAL = 50000)
/datum/design/item/mechfab/robot/torso
name = "Robot torso"
id = "robot_torso"
build_path = /obj/item/robot_parts/chest
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 40000)
/datum/design/item/mechfab/robot/head
name = "Robot head"
id = "robot_head"
build_path = /obj/item/robot_parts/head
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/robot/l_arm
name = "Robot left arm"
id = "robot_l_arm"
build_path = /obj/item/robot_parts/l_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18000)
/datum/design/item/mechfab/robot/r_arm
name = "Robot right arm"
id = "robot_r_arm"
build_path = /obj/item/robot_parts/r_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18000)
/datum/design/item/mechfab/robot/l_leg
name = "Robot left leg"
id = "robot_l_leg"
build_path = /obj/item/robot_parts/l_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/robot/r_leg
name = "Robot right leg"
id = "robot_r_leg"
build_path = /obj/item/robot_parts/r_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/robot/component
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 5000)
/datum/design/item/mechfab/robot/component/binary_communication_device
name = "Binary communication device"
id = "binary_communication_device"
build_path = /obj/item/robot_parts/robot_component/binary_communication_device
/datum/design/item/mechfab/robot/component/radio
name = "Radio"
id = "radio"
build_path = /obj/item/robot_parts/robot_component/radio
/datum/design/item/mechfab/robot/component/actuator
name = "Actuator"
id = "actuator"
build_path = /obj/item/robot_parts/robot_component/actuator
/datum/design/item/mechfab/robot/component/diagnosis_unit
name = "Diagnosis unit"
id = "diagnosis_unit"
build_path = /obj/item/robot_parts/robot_component/diagnosis_unit
/datum/design/item/mechfab/robot/component/camera
name = "Camera"
id = "camera"
build_path = /obj/item/robot_parts/robot_component/camera
/datum/design/item/mechfab/robot/component/armour
name = "Armour plating"
id = "armour"
build_path = /obj/item/robot_parts/robot_component/armour
/datum/design/item/mechfab/robot/component/surge
name = "Heavy surge prevention module"
desc = "Used to boost prevent damage from EMP. Has limited surge preventions."
id = "borg_surge_module"
materials = list(DEFAULT_WALL_MATERIAL = 20000, "glass" = 6000, "gold" = 5000, "silver" = 7500) // Should be expensive
req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 2, TECH_MAGNET = 5, TECH_POWER = 5, TECH_ENGINEERING = 4, TECH_COMBAT = 3)
build_path = /obj/item/robot_parts/robot_component/surge
/datum/design/item/mechfab/ripley
category = "Ripley"
/datum/design/item/mechfab/ripley/chassis
name = "Ripley chassis"
id = "ripley_chassis"
build_path = /obj/item/mecha_parts/chassis/ripley
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 20000)
/datum/design/item/mechfab/ripley/chassis/firefighter
name = "Firefigher chassis"
id = "firefighter_chassis"
build_path = /obj/item/mecha_parts/chassis/firefighter
/datum/design/item/mechfab/ripley/torso
name = "Ripley torso"
id = "ripley_torso"
build_path = /obj/item/mecha_parts/part/ripley_torso
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 40000, "glass" = 15000)
/datum/design/item/mechfab/ripley/left_arm
name = "Ripley left arm"
id = "ripley_left_arm"
build_path = /obj/item/mecha_parts/part/ripley_left_arm
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/ripley/right_arm
name = "Ripley right arm"
id = "ripley_right_arm"
build_path = /obj/item/mecha_parts/part/ripley_right_arm
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/ripley/left_leg
name = "Ripley left leg"
id = "ripley_left_leg"
build_path = /obj/item/mecha_parts/part/ripley_left_leg
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/mechfab/ripley/right_leg
name = "Ripley right leg"
id = "ripley_right_leg"
build_path = /obj/item/mecha_parts/part/ripley_right_leg
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/mechfab/odysseus
category = "Odysseus"
/datum/design/item/mechfab/odysseus/chassis
name = "Odysseus chassis"
id = "odysseus_chassis"
build_path = /obj/item/mecha_parts/chassis/odysseus
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 20000)
/datum/design/item/mechfab/odysseus/torso
name = "Odysseus torso"
id = "odysseus_torso"
build_path = /obj/item/mecha_parts/part/odysseus_torso
time = 18
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/odysseus/head
name = "Odysseus head"
id = "odysseus_head"
build_path = /obj/item/mecha_parts/part/odysseus_head
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 10000)
/datum/design/item/mechfab/odysseus/left_arm
name = "Odysseus left arm"
id = "odysseus_left_arm"
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/odysseus/right_arm
name = "Odysseus right arm"
id = "odysseus_right_arm"
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/odysseus/left_leg
name = "Odysseus left leg"
id = "odysseus_left_leg"
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/odysseus/right_leg
name = "Odysseus right leg"
id = "odysseus_right_leg"
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/gygax
category = "Gygax"
/datum/design/item/mechfab/gygax/chassis
name = "Gygax chassis"
id = "gygax_chassis"
build_path = /obj/item/mecha_parts/chassis/gygax
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/gygax/torso
name = "Gygax torso"
id = "gygax_torso"
build_path = /obj/item/mecha_parts/part/gygax_torso
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 50000, "glass" = 20000)
/datum/design/item/mechfab/gygax/head
name = "Gygax head"
id = "gygax_head"
build_path = /obj/item/mecha_parts/part/gygax_head
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 20000, "glass" = 10000)
/datum/design/item/mechfab/gygax/left_arm
name = "Gygax left arm"
id = "gygax_left_arm"
build_path = /obj/item/mecha_parts/part/gygax_left_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/mechfab/gygax/right_arm
name = "Gygax right arm"
id = "gygax_right_arm"
build_path = /obj/item/mecha_parts/part/gygax_right_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/mechfab/gygax/left_leg
name = "Gygax left leg"
id = "gygax_left_leg"
build_path = /obj/item/mecha_parts/part/gygax_left_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 35000)
/datum/design/item/mechfab/gygax/right_leg
name = "Gygax right leg"
id = "gygax_right_leg"
build_path = /obj/item/mecha_parts/part/gygax_right_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 35000)
/datum/design/item/mechfab/gygax/armour
name = "Gygax armour plates"
id = "gygax_armour"
build_path = /obj/item/mecha_parts/part/gygax_armour
time = 60
materials = list(DEFAULT_WALL_MATERIAL = 50000, "diamond" = 10000)
/datum/design/item/mechfab/durand
category = "Durand"
/datum/design/item/mechfab/durand/chassis
name = "Durand chassis"
id = "durand_chassis"
build_path = /obj/item/mecha_parts/chassis/durand
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 25000)
/datum/design/item/mechfab/durand/torso
name = "Durand torso"
id = "durand_torso"
build_path = /obj/item/mecha_parts/part/durand_torso
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 55000, "glass" = 20000, "silver" = 10000)
/datum/design/item/mechfab/durand/head
name = "Durand head"
id = "durand_head"
build_path = /obj/item/mecha_parts/part/durand_head
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 10000, "silver" = 3000)
/datum/design/item/mechfab/durand/left_arm
name = "Durand left arm"
id = "durand_left_arm"
build_path = /obj/item/mecha_parts/part/durand_left_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 35000, "silver" = 3000)
/datum/design/item/mechfab/durand/right_arm
name = "Durand right arm"
id = "durand_right_arm"
build_path = /obj/item/mecha_parts/part/durand_right_arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 35000, "silver" = 3000)
/datum/design/item/mechfab/durand/left_leg
name = "Durand left leg"
id = "durand_left_leg"
build_path = /obj/item/mecha_parts/part/durand_left_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 40000, "silver" = 3000)
/datum/design/item/mechfab/durand/right_leg
name = "Durand right leg"
id = "durand_right_leg"
build_path = /obj/item/mecha_parts/part/durand_right_leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 40000, "silver" = 3000)
/datum/design/item/mechfab/durand/armour
name = "Durand armour plates"
id = "durand_armour"
build_path = /obj/item/mecha_parts/part/durand_armour
time = 60
materials = list(DEFAULT_WALL_MATERIAL = 50000, "uranium" = 10000)
/// Hermes
/datum/design/item/mechfab/hermes
category = "Hermes"
/datum/design/item/mechfab/hermes/chassis
name = "Hermes chassis"
id = "hermes_chassis"
build_path = /obj/item/mecha_parts/chassis/hermes
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 20000)
/datum/design/item/mechfab/hermes/torso
name = "Hermes torso"
id = "hermes_torso"
build_path = /obj/item/mecha_parts/part/hermes_torso
time = 18
materials = list(DEFAULT_WALL_MATERIAL = 21000)
/datum/design/item/mechfab/hermes/head
name = "Hermes head"
id = "hermes_head"
build_path = /obj/item/mecha_parts/part/hermes_head
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000)
/datum/design/item/mechfab/hermes/left_arm
name = "Hermes left arm"
id = "hermes_left_arm"
build_path = /obj/item/mecha_parts/part/hermes_left_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/right_arm
name = "Hermes right arm"
id = "hermes_right_arm"
build_path = /obj/item/mecha_parts/part/hermes_right_arm
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/left_leg
name = "Hermes left leg"
id = "hermes_left_leg"
build_path = /obj/item/mecha_parts/part/hermes_left_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mechfab/hermes/right_leg
name = "Hermes right leg"
id = "hermes_right_leg"
build_path = /obj/item/mecha_parts/part/hermes_right_leg
time = 13
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/robot_upgrade
build_type = MECHFAB
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
category = "Cyborg Upgrade Modules"
/datum/design/item/robot_upgrade/rename
name = "Rename module"
desc = "Used to rename a cyborg."
id = "borg_rename_module"
build_path = /obj/item/borg/upgrade/rename
/datum/design/item/robot_upgrade/reset
name = "Reset module"
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot."
id = "borg_reset_module"
build_path = /obj/item/borg/upgrade/reset
/datum/design/item/robot_upgrade/floodlight
name = "Floodlight module"
desc = "Used to boost cyborg's integrated light intensity."
id = "borg_floodlight_module"
build_path = /obj/item/borg/upgrade/floodlight
/datum/design/item/robot_upgrade/restart
name = "Emergency restart module"
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
id = "borg_restart_module"
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 5000)
build_path = /obj/item/borg/upgrade/restart
/datum/design/item/robot_upgrade/vtec
name = "VTEC module"
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
id = "borg_vtec_module"
materials = list(DEFAULT_WALL_MATERIAL = 80000, "glass" = 6000, "gold" = 5000)
build_path = /obj/item/borg/upgrade/vtec
/datum/design/item/robot_upgrade/jetpack
name = "Jetpack module"
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
id = "borg_jetpack_module"
materials = list(DEFAULT_WALL_MATERIAL = 10000, "phoron" = 15000, "uranium" = 20000)
build_path = /obj/item/robot_parts/robot_component/jetpack
/datum/design/item/robot_upgrade/syndicate
name = "Illegal upgrade"
desc = "Allows for the construction of lethal upgrades for cyborgs."
id = "borg_syndicate_module"
req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 15000, "diamond" = 10000)
build_path = /obj/item/borg/upgrade/syndicate
/datum/design/item/mecha_tracking
name = "Exosuit tracking beacon"
id = "exotrack"
build_type = MECHFAB
time = 5
materials = list(DEFAULT_WALL_MATERIAL = 500)
build_path = /obj/item/mecha_parts/mecha_tracking
category = "Misc"
/datum/design/item/mecha_tracking/control
name = "Exosuit control beacon"
id = "exocontrol"
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 3000)
build_path = /obj/item/mecha_parts/mecha_tracking/control
/datum/design/item/mecha
build_type = MECHFAB
category = "Exosuit Equipment"
time = 10
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/mecha/AssembleDesignDesc()
if(!desc)
desc = "Allows for the construction of \a '[item_name]' exosuit module."
/datum/design/item/mecha/hydraulic_clamp
name = "Hydraulic clamp"
id = "hydraulic_clamp"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
/datum/design/item/mecha/drill
name = "Drill"
id = "drill"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill
/datum/design/item/mecha/kinetic_accelerator
name = "Burst kinetic accelerator"
id = "kinetic_accelerator"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_PHORON = 3)
materials = list("glass" = 2250, DEFAULT_WALL_MATERIAL = 55000, "silver" = 5250)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/kin_accelerator
/datum/design/item/mecha/kinetic_accelerator/burst
name = "Kinetic accelerator"
id = "kinetic_accelerator_burst"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_MAGNET = 4, TECH_PHORON = 4)
materials = list("glass" = 5250, DEFAULT_WALL_MATERIAL = 60000, "silver" = 7250)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/kin_accelerator/burst
/datum/design/item/mecha/flamethrower
name = "Flamethrower"
id = "flamethrower"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 4, TECH_COMBAT = 2, TECH_PHORON = 2)
materials = list("glass" = 5250, DEFAULT_WALL_MATERIAL = 40000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/flamethrower
/datum/design/item/mecha/extinguisher
name = "Extinguisher"
id = "extinguisher"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/extinguisher
/datum/design/item/mecha/cable_layer
name = "Cable layer"
id = "mech_cable_layer"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer
/datum/design/item/mecha/sleeper
name = "Sleeper"
id = "mech_sleeper"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 10000)
/datum/design/item/mecha/syringe_gun
name = "Syringe gun"
id = "mech_syringe_gun"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000)
/*
/datum/design/item/mecha/syringe_gun
desc = "Exosuit-mounted syringe gun and chemical synthesizer."
id = "mech_syringe_gun"
req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_MAGNET = 4, TECH_DATA = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
*/
/datum/design/item/mecha/passenger
name = "Passenger compartment"
id = "mech_passenger"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/passenger
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000)
//obj/item/mecha_parts/mecha_equipment/repair_droid,
//obj/item/mecha_parts/mecha_equipment/jetpack, //TODO MECHA JETPACK SPRITE MISSING
/datum/design/item/mecha/generator
name = "Phoron generator"
id = "mech_generator"
build_path = /obj/item/mecha_parts/mecha_equipment/generator
/datum/design/item/mecha/taser
name = "Mounted taser carbine"
id = "mech_taser"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
/datum/design/item/mecha/lmg
name = "Mounted machine gun"
id = "mech_lmg"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
/datum/design/item/mecha/weapon
req_tech = list(TECH_COMBAT = 3)
// *** Weapon modules
/datum/design/item/mecha/weapon/scattershot
name = "Mounted shotgun"
id = "mech_scattershot"
req_tech = list(TECH_COMBAT = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
/datum/design/item/mecha/weapon/laser
name = "Mounted laser carbine"
id = "mech_laser"
req_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
/datum/design/item/mecha/weapon/laser_rigged
name = "Jury-rigged welder-laser"
desc = "Allows for the construction of a welder-laser assembly package for non-combat exosuits."
id = "mech_laser_rigged"
req_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser
/datum/design/item/mecha/weapon/laser_heavy
name = "Mounted laser cannon"
id = "mech_laser_heavy"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
/datum/design/item/mecha/weapon/ion
name = "Heavy ion cannon"
id = "mech_ion"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
/datum/design/item/mecha/weapon/laser_gatling
name = "Mounted gatling laser"
id = "laser_gatling"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/gatling
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 6000)
/datum/design/item/mecha/weapon/xray_gatling
name = "Gatling xray gun"
id = "xray_gatling"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/xray
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 6000, "phoron" = 6000)
/datum/design/item/mecha/weapon/tesla_gun
name = "Mounted tesla cannon"
id = "tesla_gun"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 5, TECH_MATERIAL = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla
materials = list(DEFAULT_WALL_MATERIAL = 20000, "silver" = 6000, "phoron" = 6000)
/datum/design/item/mecha/weapon/gyro_gun
name = "Mounted gyrojet autocannon"
id = "gyro_gun"
req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_MATERIAL = 6, TECH_ILLEGAL = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/gyro
materials = list(DEFAULT_WALL_MATERIAL = 20000, "silver" = 6000, "phoron" = 6000, "diamond" = 7500)
/datum/design/item/mecha/weapon/grenade_launcher
name = "Grenade launcher"
id = "mech_grenade_launcher"
req_tech = list(TECH_COMBAT = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
/datum/design/item/mecha/weapon/clusterbang_launcher
name = "Clusterbang Grenade launcher"
desc = "A weapon that violates the Geneva Convention at 6 rounds per minute."
id = "clusterbang_launcher"
req_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 6000, "uranium" = 6000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited
/datum/design/item/mecha/weapon/plasma_cutter
name = "Heavy plasma cutter"
desc = "A large mining tool capable of expelling concentrated plasma bursts, useful for crushing rocks."
id = "mecha_plasmacutter"
req_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ENGINEERING = 4)
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "gold" = 1000, "phoron" = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma
/datum/design/item/mecha/weapon/incendiary
name = "Mounted incendiary carbine"
desc = "A weapon for combat exosuits. Shoots incendiary shells."
id = "mecha_incendiary"
req_tech = list(TECH_COMBAT= 4, TECH_MATERIAL = 4, TECH_PHORON = 3)
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "phoron" = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/incendiary
// *** Nonweapon modules
/datum/design/item/mecha/wormhole_gen
name = "Wormhole generator"
desc = "An exosuit module that can generate small quasi-stable wormholes."
id = "mech_wormhole_gen"
req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator
/datum/design/item/mecha/teleporter
name = "Teleporter"
desc = "An exosuit module that allows teleportation to any position in view."
id = "mech_teleporter"
req_tech = list(TECH_BLUESPACE = 6, TECH_MAGNET = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/teleporter
/datum/design/item/mecha/rfd_c
name = "RFD-C"
desc = "An exosuit-mounted Rapid-Fabrication-Device C-Class."
id = "mech_rfd_c"
time = 120
materials = list(DEFAULT_WALL_MATERIAL = 30000, "phoron" = 25000, "silver" = 20000, "gold" = 20000)
req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/rfd_c
/datum/design/item/mecha/gravcatapult
name = "Gravitational catapult"
desc = "An exosuit-mounted gravitational catapult."
id = "mech_gravcatapult"
req_tech = list(TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult
/datum/design/item/mecha/repair_droid
name = "Repair droid"
desc = "Automated repair droid, exosuits' best companion. BEEP BOOP"
id = "mech_repair_droid"
req_tech = list(TECH_MAGNET = 3, TECH_DATA = 3, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 1000, "silver" = 2000, "glass" = 5000)
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
/datum/design/item/mecha/phoron_generator
desc = "Phoron reactor."
id = "mech_phoron_generator"
req_tech = list(TECH_PHORON = 2, TECH_POWER= 2, TECH_ENGINEERING = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/generator
materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 500, "glass" = 1000)
/datum/design/item/mecha/energy_relay
name = "Energy relay"
id = "mech_energy_relay"
req_tech = list(TECH_MAGNET = 4, TECH_POWER = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 2000, "silver" = 3000, "glass" = 2000)
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
/datum/design/item/mecha/ccw_armor
name = "CCW armor booster"
desc = "Exosuit close-combat armor booster."
id = "mech_ccw_armor"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4)
materials = list(DEFAULT_WALL_MATERIAL = 20000, "silver" = 5000)
build_path = /obj/item/mecha_parts/mecha_equipment/armor_booster/anticcw_armor_booster
/datum/design/item/mecha/proj_armor
desc = "Exosuit projectile armor booster."
id = "mech_proj_armor"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 5000)
build_path = /obj/item/mecha_parts/mecha_equipment/armor_booster/antiproj_armor_booster
/datum/design/item/mecha/diamond_drill
name = "Diamond drill"
desc = "A diamond version of the exosuit drill. It's harder, better, faster, stronger."
id = "mech_diamond_drill"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "diamond" = 6500)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
/datum/design/item/mecha/generator_nuclear
name = "Nuclear reactor"
desc = "Exosuit-held nuclear reactor. Converts uranium and everyone's health to energy."
id = "mech_generator_nuclear"
req_tech = list(TECH_POWER= 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 500, "glass" = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
/datum/design/item/synthetic_flash
name = "Synthetic flash"
id = "sflash"
req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
build_type = MECHFAB
materials = list(DEFAULT_WALL_MATERIAL = 750, "glass" = 750)
build_path = /obj/item/device/flash/synthetic
category = "Misc"
//hardsuits modules
/datum/design/hardsuitmodules
build_type = MECHFAB
category = "Hardsuit Modules"
time = 10
/datum/design/hardsuitmodules/iss_module
name = "IIS module"
desc = "An integrated intelligence system module suitable for most hardsuits."
id = "iis_module"
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 3)
materials = list("glass" = 7500, DEFAULT_WALL_MATERIAL = 5000)
build_path = /obj/item/rig_module/ai_container
/datum/design/hardsuitmodules/sink_module
name = "hardsuit power sink"
desc = "An heavy-duty power sink suitable for hardsuits."
id = "power_sink_module"
req_tech = list(TECH_POWER = 4, TECH_MATERIAL = 3, TECH_ENGINEERING = 4, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold"= 2000, "silver"= 3000, "glass"= 2000)
build_path = /obj/item/rig_module/power_sink
/datum/design/hardsuitmodules/meson_module
name = "hardsuit meson scanner"
desc = "A layered, translucent visor system for a hardsuit."
id = "meson_module"
req_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
materials = list("glass"= 5000, DEFAULT_WALL_MATERIAL= 1500)
build_path = /obj/item/rig_module/vision/meson
/datum/design/hardsuitmodules/sechud_module
name = "hardsuit security hud"
desc = "A simple tactical information system for a hardsuit."
id = "sechud_module"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 2, TECH_MAGNET = 3)
materials = list("glass" = 5000, DEFAULT_WALL_MATERIAL =1500)
build_path = /obj/item/rig_module/vision/sechud
/datum/design/hardsuitmodules/medhud_module
name = "hardsuit medical hud"
desc = "A simple medical status indicator for a hardsuit."
id = "medhu_module"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 2, TECH_MAGNET = 3)
materials = list("glass"= 5000, DEFAULT_WALL_MATERIAL =1500)
build_path = /obj/item/rig_module/vision/medhud
/datum/design/hardsuitmodules/nvg_module
name = "hardsuit night vision interface"
desc = "A multi input night vision system for a hardsuit."
id = "nvg_module"
req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 3, TECH_MAGNET = 4)
materials = list("glass" = 5000, DEFAULT_WALL_MATERIAL = 1500, "uranium" = 5000)
build_path = /obj/item/rig_module/vision/nvg
/datum/design/hardsuitmodules/healthscanner_module
name = "hardsuit health scanner"
desc = "A hardsuit-mounted health scanner."
id = "healthscanner_module"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 2)
materials = list("glass" = 5250, DEFAULT_WALL_MATERIAL = 2500)
build_path = /obj/item/rig_module/device/healthscanner
/datum/design/hardsuitmodules/chem_module
name = "mounted chemical injector"
desc = "A complex web of tubing and a large needle suitable for hardsuit use."
id = "chem_module"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_DATA = 3, TECH_PHORON = 2)
materials = list("glass" = 9250, DEFAULT_WALL_MATERIAL = 10000, "gold" = 2500, "silver" = 4250, "phoron" = 5500)
build_path = /obj/item/rig_module/chem_dispenser/injector
/datum/design/hardsuitmodules/plasmacutter_module
name = "hardsuit plasma cutter"
desc = "A self-sustaining plasma arc capable of cutting through walls."
id = "plasmacutter_module"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_PHORON = 4)
materials = list("glass" = 5250, DEFAULT_WALL_MATERIAL = 30000, "silver" = 5250, "phoron" = 7250)
build_path = /obj/item/rig_module/mounted/plasmacutter
/datum/design/hardsuitmodules/jet_module
name = "hardsuit maneuvering jets"
desc = "A compact gas thruster system for a hardsuit."
id = "jet_module"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list("glass" = 4250, DEFAULT_WALL_MATERIAL = 15000, "silver" = 4250,"uranium" = 5250)
build_path = /obj/item/rig_module/maneuvering_jets
/datum/design/hardsuitmodules/drill_module
name = "hardsuit drill mount"
desc = "A very heavy diamond-tipped drill."
id = "drill_module"
req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4)
materials = list("glass" = 2250, DEFAULT_WALL_MATERIAL = 55000, "silver" = 5250, "diamond" = 3750)
build_path = /obj/item/rig_module/device/drill
/datum/design/hardsuitmodules/rfd_c_module
name = "RFD-C mount"
desc = "A cell-powered Rapid-Fabrication-Device C-Class for a hardsuit."
id = "rcd_module"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 5, TECH_POWER = 5, TECH_BLUESPACE = 4)
materials = list(DEFAULT_WALL_MATERIAL= 30000, "phoron" = 12500, "silver" = 10000, "gold" = 10000)
build_path = /obj/item/rig_module/device/rfd_c
/datum/design/hardsuitmodules/actuators_module
name = "leg actuators"
desc = "A set of electromechanical actuators, for safe traversal of multilevelled areas."
id = "actuators_module"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 4, TECH_POWER = 3)
materials = list(DEFAULT_WALL_MATERIAL = 85000, "glass" = 1250, "silver" = 5250, "gold" = 2750)
build_path = /obj/item/rig_module/actuators
/datum/design/hardsuitmodules/taser_module
name = "mounted taser"
desc = "A palm-mounted nonlethal energy projector."
id = "taser_module"
req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_COMBAT = 3, TECH_MAGNET = 2)
materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 5250)
build_path = /obj/item/rig_module/mounted/taser
/datum/design/hardsuitmodules/egun_module
name = "mounted energy gun"
desc = "A forearm-mounted energy projector."
id = "egun_module"
req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 4, TECH_COMBAT = 4, TECH_MAGNET = 3)
materials = list(DEFAULT_WALL_MATERIAL= 7000, "glass"= 2250, "uranium"= 3250, "gold"= 2500)
build_path = /obj/item/rig_module/mounted/egun
/datum/design/hardsuitmodules/cooling_module
name = "mounted cooling unit"
desc = "A heat sink with liquid cooled radiator."
id = "cooling_module"
req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL= 7000, "glass"= 5500)
build_path = /obj/item/rig_module/cooling_unit
/// RIGS
/datum/design/rig
build_type = MECHFAB
category = "RIG Assemblies"
materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 12500)
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_MAGNET = 3, TECH_POWER = 3)
time = 20
/datum/design/rig/ce
name = "advanced voidsuit control module assembly"
desc = "An assembly frame for an advanced voidsuit that protects against hazardous, low pressure environments."
id = "rig_ce"
build_path = /obj/item/rig_assembly/ce
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_POWER = 4)
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 12500, "silver" = 5500, "gold" = 5500, "phoron" = 7550)
/datum/design/rig/eva
name = "EVA suit control module assembly"
desc = "An assembly for light rig that is desiged for repairs and maintenance to the outside of habitats and vessels."
id = "rig_eva"
build_path = /obj/item/rig_assembly/eva
/datum/design/rig/industrial
name = "industrial suit control module assembly"
desc = "An assembly for a heavy, powerful rig used by construction crews and mining corporations."
id = "rig_industrial"
build_path = /obj/item/rig_assembly/industrial
/datum/design/rig/hazmat
name = "AMI control module assembly"
desc = "An assembly for Anomalous Material Interaction hardsuit that protects against the strangest energies the universe can throw at it."
id = "rig_hazmat"
build_path = /obj/item/rig_assembly/hazmat
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 25000, "silver" = 5500, "gold" = 5500, "phoron" = 7550)
/datum/design/rig/medical
name = "rescue suit control module assembly"
desc = "An assembly for a durable suit designed for medical rescue in high risk areas."
id = "rig_medical"
build_path = /obj/item/rig_assembly/medical
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 12500, "silver" = 5500, "gold" = 3500, "phoron" = 7550)
/datum/design/rig/hazard
name = "hazard hardsuit control module"
desc = "An assembly for a security hardsuit designed for prolonged EVA in dangerous environments."
id = "rig_hazard"
build_path = /obj/item/rig_assembly/combat/hazard
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 3)
materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 12500, "silver" = 3500, "gold" = 5500)
/datum/design/rig/combat
name = "combat hardsuit control module assembly"
desc = "An assembly frame for a sleek and dangerous hardsuit for active combat."
id = "rig_combat"
build_path = /obj/item/rig_assembly/combat/combat
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 5)
materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 12500, "silver" = 3500, "gold" = 3500, "uranium" = 5550, "diamond" = 7500)
/datum/design/rig/hacker
name = "cybersuit control module assembly"
desc = "An assembly for an advanced powered armour suit with many cyberwarfare enhancements. Comes with built-in insulated gloves for safely tampering with electronics."
id = "rig_hacker"
build_path = /obj/item/rig_assembly/combat/illegal/hacker
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 3, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 12500, "gold" = 2500, "silver" = 3500, "uranium" = 5550)
+8
View File
@@ -48,10 +48,18 @@
<ul class="changes bgimages16">
<li class="tweak">Tweaked the range and heightened the dropoff of some sounds, particularly gunfire. Emitters are also audible through walls again.</li>
<li class="bugfix">Xenobotanists will now spawn with the correct uniform.</li>
<li class="bugfix">Fixed an issue with single slot ghost spawners being disabled preemptively. Made the Kataphracts truly unathi exclusive.</li>
</ul>
<h3 class="author">Geeves updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">You can now crawl under a lot more circumstances, if you click drag yourself while laying down.</li>
<li class="tweak">Robotics updates:</li>
<li class="rscadd">The phoron generator is now safe to use, it does not pollute the environment.</li>
<li class="rscadd">More mechfab things have been split into catagories that make sense. Tech level required for some things have been reduced.</li>
<li class="rscadd">Robotics can now print robotic internal organs to replace organic organs.</li>
<li class="rscadd">Vampires can now choose whether they want their victims to remember the sucking, or forget and be paralyzed.</li>
<li class="rscadd">A new vampire ability has been added, "Touch of Life", which gives the target beneficial chemicals.</li>
<li class="bugfix">Coming down from frenzy will not call xenos human anymore.</li>
</ul>
<h2 class="date">12 November 2019</h2>
+12
View File
@@ -9985,6 +9985,18 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- tweak: Tweaked the range and heightened the dropoff of some sounds, particularly
gunfire. Emitters are also audible through walls again.
- bugfix: Xenobotanists will now spawn with the correct uniform.
- bugfix: Fixed an issue with single slot ghost spawners being disabled preemptively.
Made the Kataphracts truly unathi exclusive.
Geeves:
- rscadd: You can now crawl under a lot more circumstances, if you click drag yourself
while laying down.
- tweak: 'Robotics updates:'
- rscadd: The phoron generator is now safe to use, it does not pollute the environment.
- rscadd: More mechfab things have been split into catagories that make sense. Tech
level required for some things have been reduced.
- rscadd: Robotics can now print robotic internal organs to replace organic organs.
- rscadd: Vampires can now choose whether they want their victims to remember the
sucking, or forget and be paralyzed.
- rscadd: A new vampire ability has been added, "Touch of Life", which gives the
target beneficial chemicals.
- bugfix: Coming down from frenzy will not call xenos human anymore.