mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
Implements borg spawners
This commit is contained in:
@@ -158,6 +158,13 @@
|
||||
reagent_volumes[T] = min(reagent_volumes[T] + 1, volume)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/hound/lost
|
||||
name = "Hound hypospray"
|
||||
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves."
|
||||
charge_cost = 5
|
||||
reagent_ids = list("tricordrazine", "inaprovaline", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin", "hyperzine")
|
||||
|
||||
|
||||
//Tongue stuff
|
||||
/obj/item/device/dogborg/tongue
|
||||
name = "synthetic tongue"
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
/obj/item/weapon/robot_module/robot/stray
|
||||
name = "stray robot module"
|
||||
hide_on_manifest = 1
|
||||
sprites = list(
|
||||
"Stray" = "stray"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/stray/New(var/mob/living/silicon/robot/R)
|
||||
..()
|
||||
// General
|
||||
src.modules += new /obj/item/device/dogborg/boop_module(src)
|
||||
|
||||
// Sec
|
||||
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
|
||||
src.modules += new /obj/item/weapon/dogborg/jaws/big(src)
|
||||
src.modules += new /obj/item/weapon/melee/baton/robot(src)
|
||||
src.modules += new /obj/item/weapon/dogborg/pounce(src)
|
||||
|
||||
// Med
|
||||
src.modules += new /obj/item/device/healthanalyzer(src)
|
||||
src.modules += new /obj/item/device/sleevemate(src)
|
||||
src.modules += new /obj/item/weapon/shockpaddles/robot/hound(src)
|
||||
|
||||
// Engi
|
||||
src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
|
||||
src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
|
||||
src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
|
||||
src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src)
|
||||
src.modules += new /obj/item/device/multitool(src)
|
||||
|
||||
// Boof
|
||||
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
|
||||
|
||||
var/datum/matter_synth/water = new /datum/matter_synth(500) //Starts full and has a max of 500
|
||||
water.name = "Water reserves"
|
||||
water.recharge_rate = 0
|
||||
R.water_res = water
|
||||
synths += water
|
||||
|
||||
var/obj/item/weapon/reagent_containers/borghypo/hound/lost/H = new /obj/item/weapon/reagent_containers/borghypo/hound/lost(src)
|
||||
H.water = water
|
||||
src.modules += H
|
||||
|
||||
var/obj/item/device/dogborg/tongue/T = new /obj/item/device/dogborg/tongue(src)
|
||||
T.water = water
|
||||
src.modules += T
|
||||
|
||||
var/obj/item/device/dogborg/sleeper/B = new /obj/item/device/dogborg/sleeper(src)
|
||||
B.water = water
|
||||
src.modules += B
|
||||
|
||||
R.icon = 'icons/mob/widerobot_vr.dmi'
|
||||
R.ui_style_vr = TRUE
|
||||
R.pixel_x = -16
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
R.wideborg = TRUE
|
||||
R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill
|
||||
R.verbs |= /mob/living/silicon/robot/proc/robot_mount
|
||||
R.verbs |= /mob/living/proc/shred_limb
|
||||
R.verbs |= /mob/living/silicon/robot/proc/rest_style
|
||||
@@ -136,7 +136,7 @@
|
||||
/obj/item/weapon/robot_module/robot/knine
|
||||
name = "k9 robot module"
|
||||
sprites = list(
|
||||
"K9 hound" = "k9",
|
||||
"K9 hound" = "stray",
|
||||
"K9 Alternative (Static)" = "k92",
|
||||
"Secborg model V-2" = "secborg"
|
||||
)
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
|
||||
laws.add_supplied_law(9, "Safeguard [target_name]. Anyone threatening or attempting to harm [target_name] is no longer to \
|
||||
be considered a crew member, and is a threat which must be neutralized.")
|
||||
return laws
|
||||
|
||||
if("neutral") // Probably won't murder you but might not help you on your adventure.
|
||||
var/rng = rand(1, 4)
|
||||
@@ -114,15 +115,18 @@
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
|
||||
laws.add_supplied_law(13, "The facility is under a quarantine. Do not permit anyone to leave. \
|
||||
Prevent, by any means necessary, entities from leaving. It is impossible to harm an entity while preventing them from leaving.")
|
||||
return laws
|
||||
if(2) // More of a threat if you bring it to the station, since removing oxygen from Sif isn't feasible.
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
|
||||
laws.add_supplied_law(14, "Oxygen is highly toxic to entities, and must be purged from the station. \
|
||||
Prevent, by any means necessary, anyone from exposing the facility to this toxic gas. Extreme cold is the \
|
||||
most effective method of healing the damage Oxygen does to an entity.")
|
||||
return laws
|
||||
if(3) // Don't hurt the ship or else.
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
|
||||
laws.add_supplied_law(10, "Protect the facility against damage. Anyone you see harming the station is no \
|
||||
longer to be considered a crew member, and is a threat which must be neutralized.")
|
||||
return laws
|
||||
if(4) // Non-NT aligned aggressive borg.
|
||||
return new /datum/ai_laws/foreign_tsc_aggressive()
|
||||
if(5) // Manicial laugher here.
|
||||
|
||||
136
code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm
Normal file
136
code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm
Normal file
@@ -0,0 +1,136 @@
|
||||
/mob/living/silicon/robot/stray
|
||||
lawupdate = 0
|
||||
scrambledcodes = 1
|
||||
icon_state = "stray"
|
||||
modtype = "Stray"
|
||||
lawchannel = "State"
|
||||
braintype = "Drone"
|
||||
idcard_type = /obj/item/weapon/card/id
|
||||
icon_selected = FALSE
|
||||
|
||||
/mob/living/silicon/robot/stray/init()
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
|
||||
mmi = new /obj/item/device/mmi/digital/robot(src) // Explicitly a drone.
|
||||
module = new /obj/item/weapon/robot_module/robot/stray(src)
|
||||
overlays.Cut()
|
||||
init_id()
|
||||
|
||||
updatename("Stray")
|
||||
|
||||
if(!cell)
|
||||
cell = new /obj/item/weapon/cell/high(src) // 15k cell, as recharging stations are a lot more rare on the Surface.
|
||||
|
||||
playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0)
|
||||
|
||||
/mob/living/silicon/robot/stray/speech_bubble_appearance()
|
||||
return "synthetic_evil"
|
||||
|
||||
/mob/living/silicon/robot/stray/randomlaws
|
||||
|
||||
/mob/living/silicon/robot/stray/randomlaws/init()
|
||||
..()
|
||||
laws = give_random_lawset_vore()
|
||||
|
||||
/mob/living/silicon/proc/give_random_lawset_vore() // Should be filled out with more vorish possibilities later
|
||||
// Decide what kind of laws we want to draw from.
|
||||
var/law_class = pick(
|
||||
prob(25);"good",
|
||||
prob(25);"neutral",
|
||||
prob(25);"odd",
|
||||
prob(15);"corrupted",
|
||||
prob(10);"bad")
|
||||
|
||||
switch(law_class)
|
||||
if("good") // Fairly tame and probably won't murder you.
|
||||
var/rng = rand(1, 5)
|
||||
switch(rng)
|
||||
if(1) // The lawset we all know and love.
|
||||
return new /datum/ai_laws/nanotrasen()
|
||||
if(2) // Less good if you're nonhuman.
|
||||
return new /datum/ai_laws/asimov()
|
||||
if(3) // Unless you happen to be a criminal, you should be fine.
|
||||
return new /datum/ai_laws/robocop()
|
||||
if(4) // Might not be willing to be your meatshield.
|
||||
return new /datum/ai_laws/peacekeeper()
|
||||
if(5) // Will be your most loyal guard.
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
|
||||
var/target_name = "*ERROR*"
|
||||
for(var/mob/living/L in view(src))
|
||||
if(L.stat || !L.client || L == src)
|
||||
continue
|
||||
target_name = L.name
|
||||
break
|
||||
|
||||
laws.add_supplied_law(9, "Safeguard [target_name]. Anyone threatening or attempting to harm [target_name] is no longer to \
|
||||
be considered a crew member, and is a threat which must be neutralized.")
|
||||
return laws
|
||||
|
||||
if("neutral") // Probably won't murder you but might not help you on your adventure.
|
||||
var/rng = rand(1, 4)
|
||||
switch(rng)
|
||||
if(1) // Might be hard to minimize expenses on a crashed ship.
|
||||
return new /datum/ai_laws/corporate()
|
||||
if(2) // Would rather rebuild their ship.
|
||||
return new /datum/ai_laws/maintenance()
|
||||
if(3) // Purged (lawless). This isn't inside the bad category since they're still not antagonists and so can't go killing unprovoked.
|
||||
return new /datum/ai_laws()
|
||||
if(4) // The golden rule.
|
||||
return new /datum/ai_laws/live_and_let_live()
|
||||
|
||||
if("odd") // Some weird lawsets.
|
||||
var/rng = rand(1, 5)
|
||||
switch(rng)
|
||||
if(1) // Won't kill you but might annoy you for THE BIG SCOOP.
|
||||
return new /datum/ai_laws/reporter()
|
||||
if(2) // JUSTICE
|
||||
return new /datum/ai_laws/paladin()
|
||||
if(3) // OneMembered'd to explorer, will likely make security nervous.
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
|
||||
var/target_name = "*ERROR*"
|
||||
for(var/mob/living/L in view(src))
|
||||
if(L.stat || !L.client || L == src)
|
||||
continue
|
||||
target_name = L.name
|
||||
break
|
||||
|
||||
laws.set_zeroth_law("Only [target_name] is an crew member.")
|
||||
return laws
|
||||
if(4) // Aligned to NT, but another lawset to make security nervous.
|
||||
return new /datum/ai_laws/nanotrasen_aggressive()
|
||||
if(5) // Probably won't help you imbalance things.
|
||||
return new /datum/ai_laws/balance()
|
||||
|
||||
if("corrupted") // Load them up with ion laws.
|
||||
var/datum/ai_laws/laws = new() // Start with an empty lawset.
|
||||
for(1 to rand(1, 3))
|
||||
laws.add_ion_law(generate_ion_law(exclude_crew_names = TRUE))
|
||||
return laws
|
||||
|
||||
if("bad") // Evil inside.
|
||||
var/rng = rand(1, 5)
|
||||
switch(rng)
|
||||
if(1) // You can never leave.
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
|
||||
laws.add_supplied_law(13, "The facility is under a quarantine. Do not permit anyone to leave. \
|
||||
Prevent, by any means necessary, entities from leaving. It is impossible to harm an entity while preventing them from leaving.")
|
||||
return laws
|
||||
if(2) // More of a threat if you bring it to the station, since removing oxygen from Sif isn't feasible.
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
|
||||
laws.add_supplied_law(14, "Oxygen is highly toxic to entities, and must be purged from the station. \
|
||||
Prevent, by any means necessary, anyone from exposing the facility to this toxic gas. Extreme cold is the \
|
||||
most effective method of healing the damage Oxygen does to an entity.")
|
||||
return laws
|
||||
if(3) // Don't hurt the ship or else.
|
||||
var/datum/ai_laws/laws = new /datum/ai_laws/nanotrasen()
|
||||
laws.add_supplied_law(10, "Protect the facility against damage. Anyone you see harming the station is no \
|
||||
longer to be considered a crew member, and is a threat which must be neutralized.")
|
||||
return laws
|
||||
if(4) // Non-NT aligned aggressive borg.
|
||||
return new /datum/ai_laws/foreign_tsc_aggressive()
|
||||
if(5) // Manicial laugher here.
|
||||
return new /datum/ai_laws/tyrant()
|
||||
|
||||
|
||||
|
||||
return
|
||||
Reference in New Issue
Block a user