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
. = ..()