Many borg changes (seriously) (#69)

This commit is contained in:
SandPoot
2020-09-15 23:25:59 -03:00
committed by GitHub
parent 3dc899779e
commit 6809afb45c
20 changed files with 1451 additions and 32 deletions
@@ -0,0 +1,21 @@
/mob/living/silicon/robot
speed = 0.2
var/hasShrunk = FALSE
/mob/living/silicon/robot/modules/roleplay
lawupdate = FALSE
scrambledcodes = TRUE // Roleplay borgs aren't real
set_module = /obj/item/robot_module/roleplay
/mob/living/silicon/robot/modules/roleplay/Initialize()
. = ..()
cell = new /obj/item/stock_parts/cell/infinite(src, 30000)
laws = new /datum/ai_laws/roleplay()
//You aren't allowed to unlock, not sorry
src.verbs -= /mob/living/silicon/robot/verb/unlock_own_cover
//This part is because the camera stays in the list, so we'll just do a check
if(!QDELETED(builtInCamera))
QDEL_NULL(builtInCamera)
/mob/living/silicon/robot/modules/roleplay/binarycheck()
return 0 //Roleplay borgs aren't truly borgs
@@ -0,0 +1,216 @@
/obj/item/robot_module/proc/add_module(obj/item/I, nonstandard, requires_rebuild)
rad_flags |= RAD_NO_CONTAMINATE
if(istype(I, /obj/item/stack))
var/obj/item/stack/S = I
if(is_type_in_list(S, list(/obj/item/stack/sheet/metal, /obj/item/stack/rods, /obj/item/stack/tile/plasteel)))
if(S.custom_materials?.len && S.custom_materials[SSmaterials.GetMaterialRef(/datum/material/iron)])
S.cost = S.custom_materials[SSmaterials.GetMaterialRef(/datum/material/iron)] * 0.25
S.source = get_or_create_estorage(/datum/robot_energy_storage/metal)
else if(istype(S, /obj/item/stack/sheet/glass))
S.cost = 500
S.source = get_or_create_estorage(/datum/robot_energy_storage/glass)
else if(istype(S, /obj/item/stack/sheet/rglass/cyborg))
var/obj/item/stack/sheet/rglass/cyborg/G = S
G.source = get_or_create_estorage(/datum/robot_energy_storage/metal)
G.glasource = get_or_create_estorage(/datum/robot_energy_storage/glass)
else if(istype(S, /obj/item/stack/sheet/plasmaglass/cyborg))
//var/obj/item/stack/sheet/plasmaglass/cyborg/G = S
//G.plasource = get_or_create_estorage(/datum/robot_energy_storage/plasma)
//G.glasource = get_or_create_estorage(/datum/robot_energy_storage/glass)
S.cost = 500
S.source = get_or_create_estorage(/datum/robot_energy_storage/plasma)
else if(istype(S, /obj/item/stack/sheet/plasmarglass/cyborg))
//var/obj/item/stack/sheet/plasmarglass/cyborg/G = S
//G.plasource = get_or_create_estorage(/datum/robot_energy_storage/plasma)
//G.glasource = get_or_create_estorage(/datum/robot_energy_storage/glass)
S.cost = 1000
S.source = get_or_create_estorage(/datum/robot_energy_storage/plasma)
else if(istype(S, /obj/item/stack/sheet/plasteel/cyborg))
//var/obj/item/stack/sheet/plasteel/cyborg/G = S
//G.source = get_or_create_estorage(/datum/robot_energy_storage/metal)
//G.plasource = get_or_create_estorage(/datum/robot_energy_storage/plasma)
S.cost = 500
S.source = get_or_create_estorage(/datum/robot_energy_storage/plasma)
else if(istype(S, /obj/item/stack/sheet/mineral/plasma/cyborg))
S.cost = 500
S.source = get_or_create_estorage(/datum/robot_energy_storage/plasma)
else if(istype(S, /obj/item/stack/medical))
S.cost = 250
S.source = get_or_create_estorage(/datum/robot_energy_storage/medical)
else if(istype(S, /obj/item/stack/cable_coil))
S.cost = 1
S.source = get_or_create_estorage(/datum/robot_energy_storage/wire)
else if(istype(S, /obj/item/stack/marker_beacon))
S.cost = 1
S.source = get_or_create_estorage(/datum/robot_energy_storage/beacon)
else if(istype(S, /obj/item/stack/packageWrap))
S.cost = 1
S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper)
if(S && S.source)
S.custom_materials = null
S.is_cyborg = 1
if(I.loc != src)
I.forceMove(src)
modules += I
ADD_TRAIT(I, TRAIT_NODROP, CYBORG_ITEM_TRAIT)
I.mouse_opacity = MOUSE_OPACITY_OPAQUE
if(nonstandard)
added_modules += I
if(requires_rebuild)
rebuild_modules()
return I
/obj/item/robot_module/engineering/Initialize()
basic_modules += /obj/item/pen
basic_modules += /obj/item/electronics/airlock
basic_modules += /obj/item/stack/sheet/plasmaglass/cyborg
basic_modules += /obj/item/stack/sheet/plasmarglass/cyborg
basic_modules += /obj/item/stack/sheet/plasteel/cyborg
basic_modules += /obj/item/stack/sheet/mineral/plasma/cyborg
. = ..()
/obj/item/robot_module/butler/Initialize()
basic_modules -= /obj/item/reagent_containers/borghypo/borgshaker
basic_modules += /obj/item/reagent_containers/borghypo/borgshaker/beershaker
basic_modules += /obj/item/reagent_containers/borghypo/borgshaker/juiceshaker
basic_modules += /obj/item/reagent_containers/borghypo/borgshaker/sodashaker
basic_modules += /obj/item/reagent_containers/borghypo/borgshaker/miscshaker
. = ..()
/obj/item/robot_module/miner/Initialize()
basic_modules += /obj/item/card/id/miningborg
. = ..()
/datum/robot_energy_storage/plasma
name = "Plasma Buffer Container"
recharge_rate = 0
/obj/item/robot_module/syndicatejack
name = "Syndicate"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
/obj/item/borg/sight/thermal,
/obj/item/extinguisher,
/obj/item/weldingtool/experimental,
/obj/item/screwdriver/nuke,
/obj/item/wrench/cyborg,
/obj/item/crowbar/cyborg,
/obj/item/wirecutters/cyborg,
/obj/item/multitool/cyborg,
/obj/item/weapon/gripper,
/obj/item/cyborg_clamp,
/obj/item/lightreplacer/cyborg,
/obj/item/stack/sheet/metal/cyborg,
/obj/item/stack/sheet/glass/cyborg,
/obj/item/stack/sheet/rglass/cyborg,
/obj/item/stack/rods/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/destTagger/borg,
/obj/item/stack/cable_coil/cyborg,
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/stack/medical/gauze/cyborg,
/obj/item/shockpaddles/cyborg,
/obj/item/healthanalyzer/advanced,
/obj/item/surgical_drapes/advanced,
/obj/item/retractor/advanced,
/obj/item/surgicaldrill/advanced,
/obj/item/scalpel/advanced,
/obj/item/gun/medbeam,
/obj/item/reagent_containers/borghypo/syndicate,
/obj/item/borg/lollipop,
/obj/item/holosign_creator/cyborg,
/obj/item/stamp/chameleon,
/obj/item/borg_shapeshifter
)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/slab/cyborg/engineer,
/obj/item/clockwork/replica_fabricator/cyborg)
cyborg_base_icon = "synd_engi"
moduleselect_icon = "malf"
magpulsing = TRUE
hat_offset = INFINITY
canDispose = TRUE
/obj/item/robot_module/syndicatejack/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
var/static/list/syndicatejack_icons = sortList(list(
"Saboteur" = image(icon = 'icons/mob/robots.dmi', icon_state = "synd_engi"),
"Medical" = image(icon = 'icons/mob/robots.dmi', icon_state = "synd_medical"),
"Assault" = image(icon = 'icons/mob/robots.dmi', icon_state = "synd_sec"),
))
var/syndiejack_icon = show_radial_menu(R, R , syndicatejack_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
switch(syndiejack_icon)
if("Saboteur")
cyborg_base_icon = "synd_engi"
cyborg_icon_override = 'icons/mob/robots.dmi'
if("Medical")
cyborg_base_icon = "synd_medical"
cyborg_icon_override = 'icons/mob/robots.dmi'
if("Assault")
cyborg_base_icon = "synd_sec"
cyborg_icon_override = 'icons/mob/robots.dmi'
else
return FALSE
return ..()
/obj/item/robot_module/syndicatejack/rebuild_modules()
..()
var/mob/living/silicon/robot/syndicatejack = loc
syndicatejack.scrambledcodes = TRUE // We're rouge now
/obj/item/robot_module/syndicatejack/remove_module(obj/item/I, delete_after)
..()
var/mob/living/silicon/robot/syndicatejack = loc
syndicatejack.scrambledcodes = FALSE // Friends with the AI again
/obj/item/robot_module/roleplay
name = "Roleplay"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/weldingtool/largetank/cyborg,
/obj/item/screwdriver/cyborg,
/obj/item/wrench/cyborg,
/obj/item/crowbar/cyborg,
/obj/item/wirecutters/cyborg,
/obj/item/multitool/cyborg,
/obj/item/stack/sheet/metal/cyborg,
/obj/item/stack/sheet/glass/cyborg,
/obj/item/stack/sheet/rglass/cyborg,
/obj/item/stack/rods/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/stack/cable_coil/cyborg,
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/rsf/cyborg,
/obj/item/reagent_containers/food/drinks/drinkingglass,
/obj/item/reagent_containers/borghypo/borgshaker/beershaker,
/obj/item/reagent_containers/borghypo/borgshaker/juiceshaker,
/obj/item/reagent_containers/borghypo/borgshaker/sodashaker,
/obj/item/reagent_containers/borghypo/borgshaker/miscshaker,
/obj/item/soap/nanotrasen,
/obj/item/borg/cyborghug,
/obj/item/dogborg_nose,
/obj/item/dogborg_tongue,
/obj/item/borg_shapeshifter/stable)
moduleselect_icon = "standard"
hat_offset = -3
/obj/item/robot_module/Initialize()
basic_modules += /obj/item/dildo/custom
. = ..()
@@ -0,0 +1,128 @@
/*
Borg Shaker
*/
/obj/item/reagent_containers/borghypo/borgshaker/beershaker
name = "cyborg shaker"
desc = "An advanced drink synthesizer and mixer."
icon = 'sandcode/icons/obj/drinks.dmi'
icon_state = "beershaker"
possible_transfer_amounts = list(5,10,20)
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 1
accepts_reagent_upgrades = FALSE
reagent_ids = list( /datum/reagent/consumable/ethanol/beer,
/datum/reagent/consumable/ethanol/whiskey,
/datum/reagent/consumable/ethanol/vodka,
/datum/reagent/consumable/ethanol/rum,
/datum/reagent/consumable/ethanol/gin,
/datum/reagent/consumable/ethanol/tequila,
/datum/reagent/consumable/ethanol/vermouth,
/datum/reagent/consumable/ethanol/wine,
/datum/reagent/consumable/ethanol/kahlua,
/datum/reagent/consumable/ethanol/cognac,
/datum/reagent/consumable/ethanol/ale,
/datum/reagent/consumable/ethanol/fernet,
/datum/reagent/consumable/ethanol/triple_sec,
/datum/reagent/consumable/nothing,
/datum/reagent/consumable/laughter,
/datum/reagent/consumable/ethanol/creme_de_menthe,
/datum/reagent/consumable/ethanol/creme_de_cacao,
/datum/reagent/consumable/ethanol/creme_de_coconut,
/datum/reagent/consumable/ethanol/champagne,
/datum/reagent/consumable/ethanol/thirteenloko,
/datum/reagent/consumable/ethanol/absinthe,
/datum/reagent/consumable/ethanol/hooch,
/datum/reagent/consumable/ethanol/moonshine)
/obj/item/reagent_containers/borghypo/borgshaker/juiceshaker
name = "cyborg shaker"
desc = "An advanced drink synthesizer and mixer."
icon = 'sandcode/icons/obj/drinks.dmi'
icon_state = "juiceshaker"
possible_transfer_amounts = list(5,10,20)
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 1
accepts_reagent_upgrades = FALSE
reagent_ids = list( /datum/reagent/consumable/orangejuice,
/datum/reagent/consumable/limejuice,
/datum/reagent/consumable/tomatojuice,
/datum/reagent/consumable/carrotjuice,
/datum/reagent/consumable/berryjuice,
/datum/reagent/consumable/applejuice,
/datum/reagent/consumable/peachjuice,
/datum/reagent/consumable/strawberryjuice,
/datum/reagent/consumable/pineapplejuice,
/datum/reagent/consumable/watermelonjuice,
/datum/reagent/consumable/parsnipjuice,
/datum/reagent/consumable/grapejuice,
/datum/reagent/consumable/potato_juice,
/datum/reagent/consumable/pumpkinjuice,
/datum/reagent/consumable/lemonjuice)
/obj/item/reagent_containers/borghypo/borgshaker/sodashaker
name = "cyborg shaker"
desc = "An advanced drink synthesizer and mixer."
icon = 'sandcode/icons/obj/drinks.dmi'
icon_state = "sodashaker"
possible_transfer_amounts = list(5,10,20)
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 1
accepts_reagent_upgrades = FALSE
reagent_ids = list( /datum/reagent/consumable/space_cola,
/datum/reagent/consumable/nuka_cola,
/datum/reagent/consumable/spacemountainwind,
/datum/reagent/consumable/dr_gibb,
/datum/reagent/consumable/space_up,
/datum/reagent/consumable/lemon_lime,
/datum/reagent/consumable/pwr_game,
/datum/reagent/consumable/shamblers,
/datum/reagent/consumable/buzz_fuzz,
/datum/reagent/consumable/grey_bull,
/datum/reagent/consumable/cream_soda,
/datum/reagent/consumable/sol_dry,
/datum/reagent/consumable/tonic,
/datum/reagent/consumable/sodawater)
/obj/item/reagent_containers/borghypo/borgshaker/miscshaker
name = "cyborg shaker"
desc = "An advanced drink synthesizer and mixer."
icon = 'sandcode/icons/obj/drinks.dmi'
icon_state = "miscshaker"
possible_transfer_amounts = list(5,10,20)
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 1
accepts_reagent_upgrades = FALSE
reagent_ids = list( /datum/reagent/consumable/grenadine,
/datum/reagent/consumable/banana,
/datum/reagent/consumable/honey,
/datum/reagent/consumable/sugar,
/datum/reagent/consumable/vanilla,
/datum/reagent/blood/synthetics,
/datum/reagent/consumable/capsaicin,
/datum/reagent/consumable/coco,
/datum/reagent/consumable/menthol,
/datum/reagent/consumable/ice,
/datum/reagent/consumable/cream,
/datum/reagent/consumable/milk,
/datum/reagent/consumable/soymilk,
/datum/reagent/consumable/coconutmilk,
/datum/reagent/consumable/coffee,
/datum/reagent/consumable/tea,
/datum/reagent/consumable/lemonade,
/datum/reagent/water)
/obj/item/reagent_containers/borghypo/borgshaker/hacked
name = "cyborg shaker"
desc = "Will mix drinks that knock them dead."
icon = 'icons/obj/drinks.dmi'
icon_state = "threemileislandglass"
possible_transfer_amounts = list(5,10,20)
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 1
accepts_reagent_upgrades = FALSE
reagent_ids = list( /datum/reagent/toxin/fakebeer,
/datum/reagent/consumable/poisonberryjuice,
/datum/reagent/toxin/itching_powder,
/datum/reagent/toxin/bungotoxin,
/datum/reagent/consumable/superlaughter)
@@ -1,3 +1,21 @@
/datum/design/borg_upgrade_xwelding
name = "Cyborg Upgrade (Experimental Welding Tool)"
id = "borg_upgrade_xwelding"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/xwelding
materials = list(/datum/material/iron = 1000, /datum/material/plasma = 1000, /datum/material/titanium = 1000)
construction_time = 100
category = list("Cyborg Upgrade Modules")
/* Shit doesnt work, work on it later
/datum/design/borg_upgrade_plasma
name = "Cyborg Upgrade (Plasma Resource)"
id = "borg_upgrade_plasma"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/plasma
materials = list(/datum/material/plasma = 1000, /datum/material/bluespace = 1000)
construction_time = 100
category = list("Cyborg Upgrade Modules")
*/
/datum/design/borg_upgrade_bsrpd
name = "Cyborg Upgrade (Bluespace RPD)"
id = "borg_upgrade_bsrpd"
@@ -7,6 +25,34 @@
construction_time = 100
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_premiumka
name = "Cyborg Upgrade (Premium Kinetic Accelerator)"
id = "borg_upgrade_premiumka"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/premiumka
materials = list(/datum/material/iron=8000, /datum/material/glass=4000, /datum/material/titanium=2000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_expand
name = "Cyborg Upgrade (Expand)"
id = "borg_upgrade_expand"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/expand
materials = list(/datum/material/iron=20000, /datum/material/glass=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_shrink
name = "Cyborg Upgrade (shrink)"
id = "borg_upgrade_shrink"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/shrink
materials = list(/datum/material/iron=20000, /datum/material/glass=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
///Power Armor
/datum/design/powerarmor_skeleton
name = "Power Armor Skeleton"
@@ -5,3 +5,13 @@
prereq_ids = list("adv_biotech", "adv_bluespace", "adv_robotics")
design_ids = list("powerarmor_skeleton","powerarmor_torso","powerarmor_helmet","powerarmor_armR","powerarmor_armL","powerarmor_legR","powerarmor_legL")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500)
/datum/techweb_node/adv_robotics/New()
design_ids += "borg_upgrade_premiumka"
. = ..()
/datum/techweb_node/cyborg_upg_util/New()
design_ids += "borg_upgrade_xwelding"
design_ids += "borg_upgrade_shrink"
//design_ids += "borg_upgrade_plasma"
. = ..()
@@ -0,0 +1,3 @@
/obj/item/hilbertshotel/ghostdojo/attack_robot(mob/user)
. = ..()
interact(user)