Merge branch 'master' of https://github.com/PolarisSS13/Polaris into sync

# Conflicts:
#	code/game/mecha/mech_fabricator.dm
This commit is contained in:
Arokha Sieyes
2016-05-31 18:17:58 -04:00
33 changed files with 958 additions and 360 deletions
@@ -57,10 +57,18 @@
display_name = "tie, blue with clip"
path = /obj/item/clothing/accessory/blue_clip
/datum/gear/accessory/tie/blue_long
display_name = "tie, blue long"
path = /obj/item/clothing/accessory/blue_long
/datum/gear/accessory/tie/red
display_name = "tie, red"
path = /obj/item/clothing/accessory/red
/datum/gear/accessory/tie/red_clip
display_name = "tie, red with clip"
path = /obj/item/clothing/accessory/red_clip
/datum/gear/accessory/tie/red_long
display_name = "tie, red long"
path = /obj/item/clothing/accessory/red_long
@@ -137,6 +145,30 @@
display_name = "scarf, striped blue"
path = /obj/item/clothing/accessory/stripedbluescarf
/datum/gear/accessory/suitjacket
display_name = "suit jacket, tan"
path = /obj/item/clothing/accessory/tan_jacket
/datum/gear/accessory/suitjacket/charcoal
display_name = "suit jacket, charcoal"
path = /obj/item/clothing/accessory/charcoal_jacket
/datum/gear/accessory/suitjacket/navy
display_name = "suit jacket, navy blue"
path = /obj/item/clothing/accessory/navy_jacket
/datum/gear/accessory/suitjacket/burgundy
display_name = "suit jacket, burgundy"
path = /obj/item/clothing/accessory/burgundy_jacket
/datum/gear/accessory/suitjacket/checkered
display_name = "suit jacket, checkered"
path = /obj/item/clothing/accessory/checkered_jacket
/datum/gear/accessory/suitvest
display_name = "suit vest"
path = /obj/item/clothing/accessory/vest
/datum/gear/accessory/brown_vest
display_name = "webbing, engineering"
path = /obj/item/clothing/accessory/storage/brown_vest
@@ -84,6 +84,14 @@
name = "blue tie with a clip"
icon_state = "bluecliptie"
/obj/item/clothing/accessory/blue_long
name = "blue long tie"
icon_state = "bluelongtie"
/obj/item/clothing/accessory/red_clip
name = "red tie with a clip"
icon_state = "redcliptie"
/obj/item/clothing/accessory/red_long
name = "red long tie"
icon_state = "redlongtie"
+51 -42
View File
@@ -337,12 +337,50 @@
return impact
/datum/seed/proc/generate_name()
var/prefix = ""
var/name = ""
if(prob(50)) //start with a prefix.
//These are various plant/mushroom genuses.
//I realize these might not be entirely accurate, but it could facilitate RP.
var/list/possible_prefixes
if(seed_noun == "cuttings" || seed_noun == "seeds" || (seed_noun == "nodes" && prob(50)))
possible_prefixes = list("amelanchier", "saskatoon",
"magnolia", "angiosperma", "osmunda", "scabiosa", "spigelia", "psydrax", "chastetree",
"strychnos", "treebine", "caper", "justica", "ragwortus", "everlasting", "combretum",
"loganiaceae", "gelsemium", "logania", "sabadilla", "neuburgia", "canthium", "rytigynia",
"chaste", "vitex", "cissus", "capparis", "senecio", "curry", "cycad", "liverwort", "charophyta",
"glaucophyte", "pinidae", "vascular", "embryophyte", "lillopsida")
else
possible_prefixes = list("bisporus", "bitorquis", "campestris", "crocodilinus", "agaricus",
"armillaria", "matsutake", "mellea", "ponderosa", "auricularia", "auricala",
"polytricha", "boletus", "badius", "edulis", "mirabilis", "zelleri",
"calvatia", "gigantea", "clitopilis", "prumulus", "entoloma", "abortivum",
"suillus", "tuber", "aestivum", "volvacea", "delica", "russula", "rozites")
possible_prefixes |= list("butter", "shad", "sugar", "june", "wild", "rigus", "curry", "hard", "soft", "dark", "brick", "stone", "red", "brown",
"black", "white", "paper", "slippery", "honey", "bitter")
prefix = pick(possible_prefixes)
var/num = rand(2,5)
var/list/possible_name = list("rhon", "cus", "quam", "met", "eget", "was", "reg", "zor", "fra", "rat", "sho", "ghen", "pa",
"eir", "lip", "sum", "lor", "em", "tem", "por", "invi", "dunt", "ut", "la", "bore", "mag", "na",
"al", "i", "qu", "yam", "er", "at", "sed", "di", "am", "vol", "up", "tua", "at", "ve", "ro", "eos",
"et", "ac", "cus")
for(var/i in 1 to num)
var/syl = pick(possible_name)
possible_name -= syl
name += syl
if(prefix)
name = "[prefix] [name]"
seed_name = name
display_name = name
//Creates a random seed. MAKE SURE THE LINE HAS DIVERGED BEFORE THIS IS CALLED.
/datum/seed/proc/randomize()
roundstart = 0
seed_name = "strange plant" // TODO: name generator.
display_name = "strange plants" // TODO: name generator.
mysterious = 1
seed_noun = pick("spores","nodes","cuttings","seeds")
@@ -390,49 +428,18 @@
var/additional_chems = rand(0,5)
if(additional_chems)
var/list/possible_chems = list(
"woodpulp",
"bicaridine",
"hyperzine",
"cryoxadone",
"blood",
"water",
"potassium",
"plasticide",
"mutationtoxin",
"docilitytoxin",
"inaprovaline",
"space_drugs",
"paroxetine",
"mercury",
"sugar",
"radium",
"ryetalyn",
"alkysine",
"thermite",
"tramadol",
"cryptobiolin",
"dermaline",
"dexalin",
"phoron",
"synaptizine",
"impedrezene",
"hyronalin",
"peridaxon",
"toxin",
"rezadone",
"ethylredoxrazine",
"slimejelly",
"cyanide",
"mindbreaker",
"stoxin"
var/list/banned_chems = list(
"adminordrazine",
"nutriment"
)
for(var/x=1;x<=additional_chems;x++)
if(!possible_chems.len)
break
var/new_chem = pick(possible_chems)
possible_chems -= new_chem
var/new_chem = pick(chemical_reagents_list)
if(new_chem in banned_chems)
continue
banned_chems += new_chem
chems[new_chem] = list(rand(1,10),rand(10,20))
if(prob(90))
@@ -487,6 +494,8 @@
set_trait(TRAIT_MATURATION,rand(5,15))
set_trait(TRAIT_PRODUCTION,get_trait(TRAIT_MATURATION)+rand(2,5))
generate_name()
//Returns a key corresponding to an entry in the global seed list.
/datum/seed/proc/get_mutant_variant()
if(!mutants || !mutants.len || get_trait(TRAIT_IMMUTABLE) > 0) return 0
@@ -3,7 +3,7 @@
// Update name.
if(seed)
if(mechanical)
name = "[base_name] (#[seed.uid])"
name = "[base_name] ([seed.seed_name])"
else
name = "[seed.seed_name]"
else
@@ -17,6 +17,7 @@
recipes += new/datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
if(hardness>50)
recipes += new/datum/stack_recipe("[display_name] fork", /obj/item/weapon/material/kitchen/utensil/fork/plastic, 1, on_floor = 1, supplied_material = "[name]")
+11 -2
View File
@@ -43,7 +43,7 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images
"Bland" = "ghost",
"Robed-B" = "ghost1",
"Robed-BAlt" = "ghost2",
"Corgi" = "ghostian",
"Corgi" = "corgi",
"King" = "ghostking",
"Shade" = "shade",
"Hecate" = "ghost-narsie",
@@ -65,7 +65,15 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images
"Pink Elemental" = "magicPink",
"Orange Elemental" = "magicOrange",
"Green Elemental" = "magicGreen",
"Daemon" = "daemon"
"Daemon" = "daemon",
"Guard Spider" = "guard",
"Hunter Spider" = "hunter",
"Nurse Spider" = "nurse",
"Carp" = "carp",
"Space Bear" = "bear",
"Rogue Drone" = "drone",
"ED-209" = "ed209",
"Beepsky" = "secbot"
)
/mob/observer/dead/New(mob/body)
@@ -817,6 +825,7 @@ mob/observer/dead/MayRespawn(var/feedback = 0)
set name = "Choose Sprite"
icon = 'icons/mob/ghost.dmi'
overlays.Cut()
var/choice
var/finalized = "No"
while(finalized == "No" && src.client)
@@ -74,6 +74,7 @@
/obj/item/device/mmi/digital/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
if(src.brainmob && src.brainmob.key) return
world.log << "Resetting Posibrain: [brainmob][brainmob ? ", [brainmob.key]" : ""]"
src.searching = 0
icon_state = "posibrain"
@@ -36,12 +36,13 @@
animate_tail_stop()
//Handle brain slugs.
var/obj/item/organ/external/head = get_organ(BP_HEAD)
var/obj/item/organ/external/Hd = get_organ(BP_HEAD)
var/mob/living/simple_animal/borer/B
for(var/I in head.implants)
if(istype(I,/mob/living/simple_animal/borer))
B = I
if(Hd)
for(var/I in Hd.implants)
if(istype(I,/mob/living/simple_animal/borer))
B = I
if(B)
if(!B.ckey && ckey && B.controlling)
B.ckey = ckey
@@ -64,6 +64,7 @@
if(synthetic) return synthetic //Your synthetic-ness is not going away
var/obj/item/organ/external/T = organs_by_name[BP_TORSO]
if(T && T.robotic >= ORGAN_ROBOT)
src.verbs += /mob/living/carbon/human/proc/self_diagnostics
var/datum/robolimb/R = all_robolimbs[T.model]
synthetic = R
return synthetic
@@ -145,4 +145,27 @@
qdel(src)
/mob/living/carbon/human/proc/self_diagnostics()
set name = "Self-Diagnostics"
set desc = "Run an internal self-diagnostic to check for damage."
set category = "IC"
if(stat == DEAD) return
src << "<span class='notice'>Performing self-diagnostic, please wait...</span>"
sleep(50)
var/output = "<span class='notice'>Self-Diagnostic Results:\n</span>"
for(var/obj/item/organ/external/EO in organs)
if(EO.brute_dam || EO.burn_dam)
output += "[EO.name] - <span class='warning'>[EO.burn_dam + EO.brute_dam > ROBOLIMB_REPAIR_CAP ? "Heavy Damage" : "Light Damage"]</span>\n"
else
output += "[EO.name] - <span style='color:green;'>OK</span>\n"
for(var/obj/item/organ/IO in internal_organs)
if(IO.damage)
output += "[IO.name] - <span class='warning'>[IO.damage > 10 ? "Heavy Damage" : "Light Damage"]</span>\n"
else
output += "[IO.name] - <span style='color:green;'>OK</span>\n"
src << output
+2
View File
@@ -70,6 +70,8 @@ var/list/organ_cache = list()
blood_DNA[dna.unique_enzymes] = dna.b_type
if(internal)
holder.internal_organs |= src
else
species = all_species["Human"]
/obj/item/organ/proc/set_dna(var/datum/dna/new_dna)
if(new_dna)
+1 -2
View File
@@ -44,7 +44,7 @@
var/list/wounds = list() // wound datum list.
var/number_wounds = 0 // number of wounds, which is NOT wounds.len!
var/obj/item/organ/external/parent // Master-limb.
var/list/children // Sub-limbs.
var/list/children = list() // Sub-limbs.
var/list/internal_organs = list() // Internal organs of this body part
var/sabotaged = 0 // If a prosthetic limb is emagged, it will detonate when it fails.
var/list/implants = list() // Currently implanted objects.
@@ -1275,7 +1275,6 @@ Note that amputating the affected organ does in fact remove the infection from t
// Give them a new cell.
owner.internal_organs_by_name["cell"] = new /obj/item/organ/internal/cell(owner,1)
/obj/item/organ/external/groin
name = "lower body"
organ_tag = BP_GROIN
+52 -3
View File
@@ -47,17 +47,20 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
company = "Bishop"
desc = "This limb has a white polymer casing with blue holo-displays."
icon = 'icons/mob/human_races/cyberlimbs/bishop/bishop_main.dmi'
unavailable_to_build = 1
/datum/robolimb/bishop_alt1
company = "Bishop - Glyph"
desc = "This limb has a white polymer casing with blue holo-displays."
icon = 'icons/mob/human_races/cyberlimbs/bishop/bishop_alt1.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
/datum/robolimb/bishop_monitor
company = "Bishop Monitor"
desc = "Bishop Cybernetics' unique spin on a popular prosthetic head model. The themes conflict in an intriguing way."
icon = 'icons/mob/human_races/cyberlimbs/bishop/bishop_monitor.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
monitor_styles = standard_monitor_styles
@@ -65,11 +68,13 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
company = "Hesphiastos"
desc = "This limb has a militaristic black and green casing with gold stripes."
icon = 'icons/mob/human_races/cyberlimbs/hesphiastos/hesphiastos_main.dmi'
unavailable_to_build = 1
/datum/robolimb/hesphiastos_alt1
company = "Hesphiastos - Frontier"
desc = "A rugged prosthetic head featuring the standard Hesphiastos theme, a visor and an external display."
icon = 'icons/mob/human_races/cyberlimbs/hesphiastos/hesphiastos_alt1.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
monitor_styles = "blank=hesphiastos_alt_off;\
pink=hesphiastos_alt_pink;\
@@ -83,6 +88,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
company = "Hesphiastos Monitor"
desc = "Hesphiastos' unique spin on a popular prosthetic head model. It looks rugged and sturdy."
icon = 'icons/mob/human_races/cyberlimbs/hesphiastos/hesphiastos_monitor.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
monitor_styles = standard_monitor_styles
@@ -90,37 +96,42 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
company = "Morpheus"
desc = "This limb is simple and functional; no effort has been made to make it look human."
icon = 'icons/mob/human_races/cyberlimbs/morpheus/morpheus_main.dmi'
unavailable_to_build = 1
monitor_styles = standard_monitor_styles
/datum/robolimb/morpheus_alt1
company = "Morpheus - Zenith"
desc = "This limb is simple and functional; no effort has been made to make it look human."
icon = 'icons/mob/human_races/cyberlimbs/morpheus/morpheus_alt1.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
unavailable_at_chargen = null
/datum/robolimb/veymed
lifelike = 1
blood_color = "#CCCCCC"
company = "Vey-Med"
desc = "This high quality limb is nearly indistinguishable from an organic one."
icon = 'icons/mob/human_races/cyberlimbs/veymed/veymed_main.dmi'
unavailable_to_build = 1
lifelike = 1
blood_color = "#CCCCCC"
/datum/robolimb/wardtakahashi
company = "Ward-Takahashi"
desc = "This limb features sleek black and white polymers."
icon = 'icons/mob/human_races/cyberlimbs/wardtakahashi/wardtakahashi_main.dmi'
unavailable_to_build = 1
/datum/robolimb/wardtakahashi_alt1
company = "Ward-Takahashi - Shroud"
desc = "This limb features sleek black and white polymers. This one looks more like a helmet of some sort."
icon = 'icons/mob/human_races/cyberlimbs/wardtakahashi/wardtakahashi_alt1.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
/datum/robolimb/wardtakahashi_monitor
company = "Ward-Takahashi Monitor"
desc = "Ward-Takahashi's unique spin on a popular prosthetic head model. It looks sleek and modern."
icon = 'icons/mob/human_races/cyberlimbs/wardtakahashi/wardtakahashi_monitor.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
monitor_styles = standard_monitor_styles
@@ -128,17 +139,20 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
company = "Xion"
desc = "This limb has a minimalist black and red casing."
icon = 'icons/mob/human_races/cyberlimbs/xion/xion_main.dmi'
unavailable_to_build = 1
/datum/robolimb/xion_alt1
company = "Xion Mfg. - Breach"
desc = "This limb has a minimalist black and red casing. Looks a bit menacing."
icon = 'icons/mob/human_races/cyberlimbs/xion/xion_alt1.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
/datum/robolimb/xion_monitor
company = "Xion Mfg. Monitor"
desc = "Xion Mfg.'s unique spin on a popular prosthetic head model. It looks and minimalist and utilitarian."
icon = 'icons/mob/human_races/cyberlimbs/xion/xion_monitor.dmi'
unavailable_to_build = 1
parts = list(BP_HEAD)
monitor_styles = standard_monitor_styles
@@ -146,3 +160,38 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
company = "Zeng-Hu"
desc = "This limb has a rubbery fleshtone covering with visible seams."
icon = 'icons/mob/human_races/cyberlimbs/zenghu/zenghu_main.dmi'
unavailable_to_build = 1
/obj/item/weapon/disk/limb
name = "Limb Blueprints"
desc = "A disk containing the blueprints for prosthetics."
icon = 'icons/obj/cloning.dmi'
icon_state = "datadisk2"
var/company = ""
//I'm normally opposed to relative pathing, but pls.
bishop
company = "Bishop"
hesphiastos
company = "Hesphiastos"
morpheus
company = "Morpheus"
veymed
company = "Vey-Med"
wardtakahashi
company = "Ward-Takahashi"
xion
company = "Xion"
zenghu
company = "Zeng-Hu"
/obj/item/weapon/disk/limb/New(var/newloc)
..()
if(company)
name = "[company] [initial(name)]"
+10 -57
View File
@@ -206,60 +206,6 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/storage/part_replacer
sort_string = "CBAAA"
/datum/design/item/powercell
build_type = PROTOLATHE | MECHFAB
/datum/design/item/powercell/AssembleDesignName()
name = "Power cell model ([item_name])"
/datum/design/item/powercell/AssembleDesignDesc()
if(build_path)
var/obj/item/weapon/cell/C = build_path
desc = "Allows the construction of power cells that can hold [initial(C.maxcharge)] units of energy."
/datum/design/item/powercell/Fabricate()
var/obj/item/weapon/cell/C = ..()
C.charge = 0 //shouldn't produce power out of thin air.
return C
/datum/design/item/powercell/basic
name = "basic"
build_type = PROTOLATHE | MECHFAB
id = "basic_cell"
req_tech = list(TECH_POWER = 1)
materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50)
build_path = /obj/item/weapon/cell
category = "Misc"
sort_string = "DAAAA"
/datum/design/item/powercell/high
name = "high-capacity"
build_type = PROTOLATHE | MECHFAB
id = "high_cell"
req_tech = list(TECH_POWER = 2)
materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 60)
build_path = /obj/item/weapon/cell/high
category = "Misc"
sort_string = "DAAAB"
/datum/design/item/powercell/super
name = "super-capacity"
id = "super_cell"
req_tech = list(TECH_POWER = 3, TECH_MATERIAL = 2)
materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 70)
build_path = /obj/item/weapon/cell/super
category = "Misc"
sort_string = "DAAAC"
/datum/design/item/powercell/hyper
name = "hyper-capacity"
id = "hyper_cell"
req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
materials = list(DEFAULT_WALL_MATERIAL = 400, "gold" = 150, "silver" = 150, "glass" = 70)
build_path = /obj/item/weapon/cell/hyper
category = "Misc"
sort_string = "DAAAD"
/datum/design/item/hud
materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
@@ -651,7 +597,7 @@ other types of metals and chemistry for reagents).
name = "Positronic brain"
id = "posibrain"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 6, TECH_BLUESPACE = 2, TECH_DATA = 4)
build_type = PROTOLATHE | MECHFAB
build_type = PROTOLATHE | PROSFAB
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 500, "phoron" = 500, "diamond" = 100)
build_path = /obj/item/device/mmi/digital/posibrain
category = "Misc"
@@ -661,7 +607,7 @@ other types of metals and chemistry for reagents).
name = "Man-machine interface"
id = "mmi"
req_tech = list(TECH_DATA = 2, TECH_BIO = 3)
build_type = PROTOLATHE | MECHFAB
build_type = PROTOLATHE | PROSFAB
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500)
build_path = /obj/item/device/mmi
category = "Misc"
@@ -671,7 +617,7 @@ other types of metals and chemistry for reagents).
name = "Radio-enabled man-machine interface"
id = "mmi_radio"
req_tech = list(TECH_DATA = 2, TECH_BIO = 4)
build_type = PROTOLATHE | MECHFAB
build_type = PROTOLATHE | PROSFAB
materials = list(DEFAULT_WALL_MATERIAL = 1200, "glass" = 500)
build_path = /obj/item/device/mmi/radio_enabled
category = "Misc"
@@ -946,6 +892,13 @@ CIRCUITS BELOW
build_path = /obj/item/weapon/circuitboard/mechfab
sort_string = "HABAE"
/datum/design/circuit/prosfab
name = "prosthetics fabricator"
id = "prosfab"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/weapon/circuitboard/prosthetics
sort_string = "HABAF"
/datum/design/circuit/mech_recharger
name = "mech recharger"
id = "mech_recharger"
+2 -149
View File
@@ -1,101 +1,8 @@
/datum/design/item/mechfab
build_type = MECHFAB
category = "Misc"
category = "Other"
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/ripley
category = "Ripley"
@@ -316,60 +223,6 @@
time = 60
materials = list(DEFAULT_WALL_MATERIAL = 50000, "uranium" = 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/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/tasercooler
name = "Rapid taser cooling module"
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
id = "borg_taser_module"
materials = list(DEFAULT_WALL_MATERIAL = 80000, "glass" = 6000, "gold" = 2000, "diamond" = 500)
build_path = /obj/item/borg/upgrade/tasercooler
/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/borg/upgrade/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"
build_type = MECHFAB
@@ -407,7 +260,7 @@
name = "Cable layer"
id = "mech_cable_layer"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer
/datum/design/item/mecha/flaregun
name = "Flare launcher"
id = "mecha_flare_gun"
+297
View File
@@ -0,0 +1,297 @@
/datum/design/item/prosfab
build_type = PROSFAB
category = "Misc"
req_tech = list(TECH_MATERIAL = 1)
/datum/design/item/prosfab/pros
category = "Prosthetics"
// Make new external organs and make 'em robotish
/datum/design/item/prosfab/pros/Fabricate(var/newloc, var/fabricator)
if(istype(fabricator, /obj/machinery/pros_fabricator))
var/obj/machinery/pros_fabricator/prosfab = fabricator
var/obj/item/organ/O = new build_path(newloc)
O.species = all_species["Human"]
O.robotize(prosfab.manufacturer)
O.dna = new/datum/dna() //Uuughhhh... why do I have to do this?
O.dna.ResetUI()
O.dna.ResetSE()
spawn(10) //Limbs love to flop around. Who am I to deny them?
O.dir = 2
return O
return ..()
// Deep Magic for the torso since it needs to be a new mob
/datum/design/item/prosfab/pros/torso/Fabricate(var/newloc, var/fabricator)
if(istype(fabricator, /obj/machinery/pros_fabricator))
var/obj/machinery/pros_fabricator/prosfab = fabricator
var/mob/living/carbon/human/H = new(newloc,"Human")
H.stat = DEAD
H.gender = gender
for(var/obj/item/organ/external/EO in H.organs)
if(EO.organ_tag == BP_TORSO || EO.organ_tag == BP_GROIN)
continue //Roboticizing a torso does all the children and wastes time, do it later
else
EO.remove_rejuv()
for(var/obj/item/organ/external/O in H.organs)
O.species = all_species["Human"]
O.robotize(prosfab.manufacturer)
O.dna = new/datum/dna()
O.dna.ResetUI()
O.dna.ResetSE()
H.real_name = "Synthmorph #[rand(100,999)]"
H.name = H.real_name
H.dir = 2
return H
//////////////////// Prosthetics ////////////////////
/datum/design/item/prosfab/pros/torso
time = 35
materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 10000, "plasteel" = 2000)
req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3)
var/gender = MALE
/datum/design/item/prosfab/pros/torso/male
name = "FBP torso (M)"
id = "pros_torso_m"
build_path = /obj/item/organ/external/chest
gender = MALE
/obj/item/organ/external/chest/f //To satisfy Travis. :|
/datum/design/item/prosfab/pros/torso/female
name = "FBP torso (F)"
id = "pros_torso_f"
build_path = /obj/item/organ/external/chest/f
gender = FEMALE
/datum/design/item/prosfab/pros/head
name = "Prosthetic head"
id = "pros_head"
build_path = /obj/item/organ/external/head
time = 30
materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 5000, "plasteel" = 1000)
req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3)
/datum/design/item/prosfab/pros/l_arm
name = "Prosthetic left arm"
id = "pros_l_arm"
build_path = /obj/item/organ/external/arm
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18000)
/datum/design/item/prosfab/pros/l_hand
name = "Prosthetic left hand"
id = "pros_l_hand"
build_path = /obj/item/organ/external/hand
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/prosfab/pros/l_leg
name = "Prosthetic left leg"
id = "pros_l_leg"
build_path = /obj/item/organ/external/leg
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/prosfab/pros/l_foot
name = "Prosthetic left foot"
id = "pros_l_foot"
build_path = /obj/item/organ/external/foot
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/prosfab/pros/r_arm
name = "Prosthetic right arm"
id = "pros_r_arm"
build_path = /obj/item/organ/external/arm/right
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 18000)
/datum/design/item/prosfab/pros/r_hand
name = "Prosthetic right hand"
id = "pros_r_hand"
build_path = /obj/item/organ/external/hand/right
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/prosfab/pros/r_leg
name = "Prosthetic right leg"
id = "pros_r_leg"
build_path = /obj/item/organ/external/leg/right
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/prosfab/pros/r_foot
name = "Prosthetic right foot"
id = "pros_r_foot"
build_path = /obj/item/organ/external/foot/right
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/prosfab/pros/cell
name = "Prosthetic powercell"
id = "pros_cell"
build_path = /obj/item/organ/internal/cell
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 4000, "plasteel" = 2000)
req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/eyes
name = "Prosthetic eyes"
id = "pros_eyes"
build_path = /obj/item/organ/internal/eyes/robot
time = 15
materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 7500)
req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
//////////////////// Cyborg Parts ////////////////////
/datum/design/item/prosfab/cyborg
category = "Cyborg Parts"
time = 20
materials = list(DEFAULT_WALL_MATERIAL = 5000)
/datum/design/item/prosfab/cyborg/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/prosfab/cyborg/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/prosfab/cyborg/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/prosfab/cyborg/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/prosfab/cyborg/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/prosfab/cyborg/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/prosfab/cyborg/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)
//////////////////// Cyborg Internals ////////////////////
/datum/design/item/prosfab/cyborg/component
category = "Cyborg Internals"
build_type = PROSFAB
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/prosfab/cyborg/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/prosfab/cyborg/component/radio
name = "Radio"
id = "radio"
build_path = /obj/item/robot_parts/robot_component/radio
/datum/design/item/prosfab/cyborg/component/actuator
name = "Actuator"
id = "actuator"
build_path = /obj/item/robot_parts/robot_component/actuator
/datum/design/item/prosfab/cyborg/component/diagnosis_unit
name = "Diagnosis unit"
id = "diagnosis_unit"
build_path = /obj/item/robot_parts/robot_component/diagnosis_unit
/datum/design/item/prosfab/cyborg/component/camera
name = "Camera"
id = "camera"
build_path = /obj/item/robot_parts/robot_component/camera
/datum/design/item/prosfab/cyborg/component/armour
name = "Armour plating"
id = "armour"
build_path = /obj/item/robot_parts/robot_component/armour
//////////////////// Cyborg Modules ////////////////////
/datum/design/item/prosfab/robot_upgrade
category = "Cyborg Modules"
build_type = PROSFAB
time = 12
materials = list(DEFAULT_WALL_MATERIAL = 10000)
/datum/design/item/prosfab/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/prosfab/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/prosfab/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/prosfab/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/prosfab/robot_upgrade/tasercooler
name = "Rapid taser cooling module"
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
id = "borg_taser_module"
materials = list(DEFAULT_WALL_MATERIAL = 80000, "glass" = 6000, "gold" = 2000, "diamond" = 500)
build_path = /obj/item/borg/upgrade/tasercooler
/datum/design/item/prosfab/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/borg/upgrade/jetpack
/datum/design/item/prosfab/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
+14
View File
@@ -424,6 +424,20 @@
if(M.brainmob && M.brainmob.mind)
M.brainmob.mind.transfer_to(target)
spawn(0) //Name yourself on your own damn time
var/new_name = ""
while(!new_name)
if(!target) return
var/try_name = input(target,"Pick a name for your new form!", "New Name", target.name)
var/clean_name = sanitizeName(try_name)
if(clean_name)
var/okay = alert(target,"New name will be '[clean_name]', ok?", "Cancel", "Ok")
if(okay == "Ok")
new_name = clean_name
target.name = new_name
target.real_name = target.name
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message("<span class='warning'>[user]'s hand slips.</span>", \
"<span class='warning'>Your hand slips.</span>")
+2 -2
View File
@@ -12,12 +12,12 @@ Slime definitions, Life and New live here.
icon_living = "slime adult"
icon_dead = "slime adult dead"
internal_vol = 200
mut_max = 200
mut_max = 50
mutable = COLORMUT
var/is_child = 1
var/cores = 3
var/growthcounter = 0
var/growthpoint = 150 //At what point they grow up.
var/growthpoint = 50 //At what point they grow up.
var/shiny = 0
move_to_delay = 17 //Slimes shouldn't be able to go faster than humans.
default_chems = list("slimejelly" = 5)
@@ -41,11 +41,19 @@
var/datum/xeno/traits/trait_info
var/datum/reagents/prod_reagents
var/targetName
var/growth_level
var/growth_max
if(istype(target,/obj/structure/table))
return ..()
else if(istype(target,/mob/living/simple_animal/xeno))
var/mob/living/simple_animal/xeno/X = target
if(istype(X, /mob/living/simple_animal/xeno/slime))
var/mob/living/simple_animal/xeno/slime/S = X
if(S.is_child)
growth_level = S.growthcounter
growth_max = S.growthpoint
targetName = X.name
trait_info = X.traitdat
@@ -101,6 +109,16 @@
dat += "It bears characteristics that indicate susceptibility to damage.<br>"
else
dat += "It bears no characters indicating resilience to damage.<br>"
if(growth_max)
if(growth_level < 25)
dat += "It appears to be far to growing up.<br>"
else if(growth_level > 40)
dat += "It appears to be close to growing up.<br>"
else
dat += "It appears to be growing.<br>"
else
dat += "It appears to be fully grown.<br>"
if(trait_info.get_trait(TRAIT_XENO_COLDRES))
if(trait_info.get_trait(TRAIT_XENO_COLDRES) < 10)