Cleans Up Medbot Code, Re-Allows Syndicate Medbot

This commit is contained in:
Fox McCloud
2018-05-29 12:15:04 -04:00
parent 639f2a4cdf
commit 202fbe92fb
4 changed files with 92 additions and 82 deletions
@@ -403,6 +403,7 @@
icon_state = "AquaticKit"
throw_speed = 2
throw_range = 8
med_bot_skin = "fish"
/obj/item/storage/firstaid/aquatic_kit/full
desc = "It's a starter kit for an acquarium; includes 1 tank brush, 1 egg scoop, 1 fish net, and 1 container of fish food."
@@ -21,6 +21,8 @@
var/treatment_fire = "salglu_solution"
var/treatment_tox = "charcoal"
var/treatment_virus = "spaceacillin"
var/med_bot_skin = null
var/syndicate_aligned = FALSE
/obj/item/storage/firstaid/fire
@@ -28,6 +30,7 @@
desc = "A medical kit that contains several medical patches and pills for treating burns. Contains one epinephrine syringe for emergency use and a health analyzer."
icon_state = "ointment"
item_state = "firstaid-ointment"
med_bot_skin = "ointment"
New()
..()
@@ -68,6 +71,7 @@
desc = "A medical kit designed to counter poisoning by common toxins. Contains three pills and syringes, and a health analyzer to determine the health of the patient."
icon_state = "antitoxin"
item_state = "firstaid-toxin"
med_bot_skin = "tox"
New()
..()
@@ -92,6 +96,7 @@
desc = "A first aid kit that contains four pills of salbutamol, which is able to counter injuries caused by suffocation. Also contains a health analyzer to determine the health of the patient."
icon_state = "o2"
item_state = "firstaid-o2"
med_bot_skin = "o2"
New()
..()
@@ -111,6 +116,7 @@
desc = "A medical kit that contains several medical patches and pills for treating brute injuries. Contains one epinephrine syringe for emergency use and a health analyzer."
icon_state = "brute"
item_state = "firstaid-brute"
med_bot_skin = "brute"
New()
..()
@@ -135,6 +141,7 @@
desc = "Contains advanced medical treatments."
icon_state = "advfirstaid"
item_state = "firstaid-advanced"
med_bot_skin = "adv"
/obj/item/storage/firstaid/adv/New()
..()
@@ -157,10 +164,12 @@
desc = "I hope you've got insurance."
max_w_class = WEIGHT_CLASS_NORMAL
treatment_oxy = "perfluorodecalin"
treatment_brute = "styptic_powder"
treatment_fire = "silver_sulfadiazine"
treatment_brute = "bicaridine"
treatment_fire = "kelotane"
treatment_tox = "charcoal"
req_one_access =list(access_syndicate)
med_bot_skin = "bezerk"
syndicate_aligned = TRUE
/obj/item/storage/firstaid/tactical/New()
..()
@@ -282,73 +282,66 @@
log_game("[key_name(user)] has renamed a robot to [t]")
//Medbot Assembly
/obj/item/firstaid_arm_assembly
name = "incomplete medibot assembly."
desc = "A first aid kit with a robot arm permanently grafted to it."
icon = 'icons/obj/aibots.dmi'
icon_state = "firstaid_arm"
var/build_step = 0
var/created_name = "Medibot" //To preserve the name if it's a unique medbot I guess
var/skin = null //Same as medbot, set to tox or ointment for the respective kits.
w_class = WEIGHT_CLASS_NORMAL
var/treatment_brute = "salglu_solution"
var/treatment_oxy = "salbutamol"
var/treatment_fire = "salglu_solution"
var/treatment_tox = "charcoal"
var/treatment_virus = "spaceacillin"
req_one_access = list(access_medical, access_robotics)
/obj/item/firstaid_arm_assembly/New()
..()
spawn(5)
if(skin)
overlays += image('icons/obj/aibots.dmi', "kit_skin_[skin]")
/obj/item/storage/firstaid/attackby(obj/item/robot_parts/S, mob/user, params)
if((!istype(S, /obj/item/robot_parts/l_arm)) && (!istype(S, /obj/item/robot_parts/r_arm)))
..()
return
/obj/item/storage/firstaid/attackby(obj/item/I, mob/user, params)
if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm))
return ..()
//Making a medibot!
if(contents.len >= 1)
if(contents.len)
to_chat(user, "<span class='warning'>You need to empty [src] out first!</span>")
return
var/obj/item/firstaid_arm_assembly/A = new /obj/item/firstaid_arm_assembly
if(istype(src,/obj/item/storage/firstaid/fire))
A.skin = "ointment"
else if(istype(src,/obj/item/storage/firstaid/toxin))
A.skin = "tox"
else if(istype(src,/obj/item/storage/firstaid/o2))
A.skin = "o2"
else if(istype(src,/obj/item/storage/firstaid/brute))
A.skin = "brute"
else if(istype(src,/obj/item/storage/firstaid/adv))
A.skin = "adv"
else if(istype(src,/obj/item/storage/firstaid/tactical))
A.skin = "bezerk"
else if(istype(src,/obj/item/storage/firstaid/aquatic_kit))
A.skin = "fish"
var/obj/item/firstaid_arm_assembly/A = new /obj/item/firstaid_arm_assembly(loc, med_bot_skin)
A.req_one_access = req_one_access
A.syndicate_aligned = syndicate_aligned
A.treatment_oxy = treatment_oxy
A.treatment_brute = treatment_brute
A.treatment_fire = treatment_fire
A.treatment_tox = treatment_tox
A.treatment_virus = treatment_virus
qdel(S)
qdel(I)
user.put_in_hands(A)
to_chat(user, "<span class='notice'>You add the robot arm to the first aid kit.</span>")
user.unEquip(src, 1)
qdel(src)
/obj/item/firstaid_arm_assembly
name = "incomplete medibot assembly."
desc = "A first aid kit with a robot arm permanently grafted to it."
icon = 'icons/obj/aibots.dmi'
icon_state = "firstaid_arm"
w_class = WEIGHT_CLASS_NORMAL
req_one_access = list(access_medical, access_robotics)
var/build_step = 0
var/created_name = "Medibot" //To preserve the name if it's a unique medbot I guess
var/skin = null //Same as medbot, set to tox or ointment for the respective kits.
var/syndicate_aligned = FALSE
var/treatment_brute = "salglu_solution"
var/treatment_oxy = "salbutamol"
var/treatment_fire = "salglu_solution"
var/treatment_tox = "charcoal"
var/treatment_virus = "spaceacillin"
/obj/item/firstaid_arm_assembly/attackby(obj/item/W, mob/user, params)
/obj/item/firstaid_arm_assembly/New(loc, new_skin)
..()
if(istype(W, /obj/item/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name,MAX_NAME_LEN)
if(new_skin)
skin = new_skin
update_icon()
/obj/item/firstaid_arm_assembly/update_icon()
overlays.Cut()
if(skin)
overlays += image('icons/obj/aibots.dmi', "kit_skin_[skin]")
if(build_step > 0)
overlays += image('icons/obj/aibots.dmi', "na_scanner")
/obj/item/firstaid_arm_assembly/attackby(obj/item/I, mob/user, params)
..()
if(istype(I, /obj/item/pen))
var/t = stripped_input(user, "Enter new robot name", name, created_name, MAX_NAME_LEN)
if(!t)
return
if(!in_range(src, user) && loc != user)
@@ -358,32 +351,34 @@
else
switch(build_step)
if(0)
if(istype(W, /obj/item/healthanalyzer))
if(!user.unEquip(W))
if(istype(I, /obj/item/healthanalyzer))
if(!user.drop_item())
return
qdel(W)
qdel(I)
build_step++
to_chat(user, "<span class='notice'>You add the health sensor to [src].</span>")
name = "First aid/robot arm/health analyzer assembly"
overlays += image('icons/obj/aibots.dmi', "na_scanner")
update_icon()
if(1)
if(isprox(W))
if(!user.unEquip(W))
if(isprox(I))
if(!user.drop_item())
return
qdel(W)
qdel(I)
build_step++
to_chat(user, "<span class='notice'>You complete the Medibot. Beep boop!</span>")
var/turf/T = get_turf(src)
var/mob/living/simple_animal/bot/medbot/S = new /mob/living/simple_animal/bot/medbot(T)
S.skin = skin
S.name = created_name
S.bot_core.req_one_access = req_one_access
S.treatment_oxy = treatment_oxy
S.treatment_brute = treatment_brute
S.treatment_fire = treatment_fire
S.treatment_tox = treatment_tox
S.treatment_virus = treatment_virus
if(!syndicate_aligned)
var/mob/living/simple_animal/bot/medbot/S = new /mob/living/simple_animal/bot/medbot(T, skin)
S.name = created_name
S.bot_core.req_one_access = req_one_access
S.treatment_oxy = treatment_oxy
S.treatment_brute = treatment_brute
S.treatment_fire = treatment_fire
S.treatment_tox = treatment_tox
S.treatment_virus = treatment_virus
else
new /mob/living/simple_animal/bot/medbot/syndicate(T) //Syndicate medibots are a special case that have so many unique vars on them, it's not worth passing them through construction phases
user.unEquip(src, 1)
qdel(src)
@@ -44,6 +44,7 @@
var/treatment_virus = "spaceacillin"
var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible.
var/shut_up = 0 //self explanatory :)
var/syndicate_aligned = FALSE // Will it only treat operatives?
/mob/living/simple_animal/bot/medbot/tox
skin = "tox"
@@ -68,8 +69,8 @@
desc = "International Medibot of mystery."
skin = "bezerk"
treatment_oxy = "perfluorodecalin"
treatment_brute = "styptic_powder"
treatment_fire = "silver_sulfadiazine"
treatment_brute = "bicaridine"
treatment_fire = "kelotane"
treatment_tox = "charcoal"
/mob/living/simple_animal/bot/medbot/syndicate
@@ -77,9 +78,10 @@
desc = "You'd better have insurance!"
skin = "bezerk"
treatment_oxy = "perfluorodecalin"
treatment_brute = "styptic_powder"
treatment_fire = "silver_sulfadiazine"
treatment_brute = "bicaridine"
treatment_fire = "kelotane"
treatment_tox = "charcoal"
syndicate_aligned = TRUE
bot_core_type = /obj/machinery/bot_core/medbot/syndicate
control_freq = BOT_FREQ + 1000 // make it not show up on lists
radio_channel = "Syndicate"
@@ -90,6 +92,9 @@
Radio.syndie = 1
/mob/living/simple_animal/bot/medbot/update_icon()
overlays.Cut()
if(skin)
overlays += "medskin_[skin]"
if(!on)
icon_state = "medibot0"
return
@@ -101,22 +106,21 @@
else
icon_state = "medibot1"
/mob/living/simple_animal/bot/medbot/New()
/mob/living/simple_animal/bot/medbot/New(loc, new_skin)
..()
update_icon()
spawn(4)
if(skin)
overlays += image('icons/obj/aibots.dmi', "medskin_[skin]")
var/datum/job/doctor/J = new/datum/job/doctor
access_card.access += J.get_access()
prev_access = access_card.access
var/datum/job/doctor/J = new /datum/job/doctor
access_card.access += J.get_access()
prev_access = access_card.access
qdel(J)
var/datum/atom_hud/medsensor = huds[DATA_HUD_MEDICAL_ADVANCED]
medsensor.add_hud_to(src)
permanent_huds |= medsensor
if(new_skin)
skin = new_skin
update_icon()
/mob/living/simple_animal/bot/medbot/bot_reset()
..()
patient = null
@@ -371,7 +375,7 @@
if(emagged == 2) //Everyone needs our medicine. (Our medicine is toxins)
return 1
if((skin == "bezerk") && (!("syndicate" in C.faction)))
if(syndicate_aligned && (!("syndicate" in C.faction)))
return 0
if(declare_crit && C.health <= 0) //Critical condition! Call for help!
@@ -554,7 +558,8 @@
if("adv")
new /obj/item/storage/firstaid/adv/empty(Tsec)
if("bezerk")
new /obj/item/storage/firstaid/tactical/empty(Tsec)
var/obj/item/storage/firstaid/tactical/empty/T = new(Tsec)
T.syndicate_aligned = syndicate_aligned //This is a special case since Syndicate medibots and the mysterious medibot look the same; we also dont' want crew building Syndicate medibots if the mysterious medibot blows up.
if("fish")
new /obj/item/storage/firstaid/aquatic_kit(Tsec)
else
@@ -579,7 +584,7 @@
/mob/living/simple_animal/bot/medbot/proc/declare(crit_patient)
if(declare_cooldown)
return
if((skin == "bezerk"))
if(syndicate_aligned)
return
var/area/location = get_area(src)
speak("Medical emergency! [crit_patient ? "<b>[crit_patient]</b>" : "A patient"] is in critical condition at [location]!", radio_channel)