Tech Fixes: (#1888)

Fixes #1790 
Fixes #1791 

Fixes a number of issues with robot sprites, chem master machine, and surgery steps

The issue with borg sprites was caused by duplicate calls to ..()
Ive standardised robot module parent calls to the top of the function

Fixed the chemmaster not depositing pills in bottles properly. I added a new add_to_storage proc to storage.dm which is just a simple, safe means of putting stuff in stuff. it handles the checking.

Fixed some issues with surgery. A few surgery steps had incorrect "open" var ranges defined which was causing organ repair surgery to be interfered with

Also removed screwdriver from the list of bone mending tools, and added duct tape instead as the ghetto alternative. And allowed energyswords + chainswords to be used for cutting open ribs. theyre already useable for amputation

Fixed an incorrect return var for surgery that was making surgeons able to attack their patients on help intent. Shouldnt happen anymore

And also fixed the experimental welder being un-makeable at the protolathe.
This commit is contained in:
NanakoAC
2017-03-12 11:52:33 +02:00
committed by skull132
parent cd52c36313
commit ceff4ae424
11 changed files with 84 additions and 36 deletions
@@ -6,5 +6,5 @@
winset(src, null, "mainwindow.macro=borgmacro hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5")
// Forces synths to select an icon relevant to their module
if(!icon_selected)
if(module && !icon_selected)
choose_icon(icon_selection_tries, module_sprites)
@@ -254,7 +254,7 @@
if(new_sprites && new_sprites.len)
module_sprites = new_sprites.Copy()
//Custom_sprite check and entry
if (custom_sprite == 1)
var/list/valid_states = icon_states(CUSTOM_ITEM_SYNTH)
if("[ckey]-[modtype]" in valid_states)
@@ -268,7 +268,7 @@
else
icontype = module_sprites[1]
icon_state = module_sprites[icontype]
updateicon()
return module_sprites
@@ -463,7 +463,7 @@
/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj)
..(Proj)
if(prob(75) && Proj.damage > 0)
if(prob(75) && Proj.damage > 0)
spark_system.queue()
return 2
@@ -1031,6 +1031,7 @@
verbs -= /mob/living/silicon/robot/proc/choose_icon
src << "Your icon has been set. You now require a module reset to change it."
/mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs
set name = "Set Sensor Augmentation"
set category = "Robot Commands"
@@ -173,6 +173,7 @@ var/global/list/robot_modules = list(
)
/obj/item/weapon/robot_module/standard/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
src.modules += new /obj/item/weapon/extinguisher(src)
@@ -180,7 +181,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/crowbar(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.emag = new /obj/item/weapon/melee/energy/sword(src)
..()
/obj/item/weapon/robot_module/medical
name = "medical robot module"
@@ -194,7 +195,7 @@ var/global/list/robot_modules = list(
"Heavy" = "heavyMed",
"Needles" = "medicalrobot",
"Standard" = "surgeon",
"Advanced Droid - Medical" = "droid-surgery",
"Advanced Droid - Medical" = "droid-medical",
"Advanced Droid - Chemistry" = "droid-chemistry",
"Drone - Medical" = "drone-surgery",
"Drone - Chemistry" = "drone-chemistry",
@@ -241,7 +242,6 @@ var/global/list/robot_modules = list(
src.modules += N
src.modules += B
..()
/obj/item/weapon/robot_module/medical/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
@@ -307,7 +307,6 @@ var/global/list/robot_modules = list(
src.modules += B
src.modules += S
..()
/obj/item/weapon/robot_module/medical/rescue/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
@@ -388,6 +387,7 @@ var/global/list/robot_modules = list(
src.modules += RG
/obj/item/weapon/robot_module/engineering/general/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/extinguisher(src)
@@ -450,8 +450,6 @@ var/global/list/robot_modules = list(
PL.synths = list(plasteel)
src.modules += PL
..()
/obj/item/weapon/robot_module/security
name = "security robot module"
channels = list("Security" = 1)
@@ -477,6 +475,7 @@ var/global/list/robot_modules = list(
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
/obj/item/weapon/robot_module/security/general/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/hud/sec(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
@@ -485,7 +484,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/taperoll/police(src)
src.modules += new /obj/item/device/holowarrant(src)
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src)
..()
/obj/item/weapon/robot_module/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
..()
@@ -513,6 +511,7 @@ var/global/list/robot_modules = list(
)
/obj/item/weapon/robot_module/janitor/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
src.modules += new /obj/item/weapon/storage/bag/trash(src)
@@ -521,7 +520,6 @@ var/global/list/robot_modules = list(
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("lube", 250)
src.emag.name = "Lube spray"
..()
/obj/item/weapon/robot_module/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
..()
@@ -563,6 +561,7 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/clerical/butler/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/gripper/service(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
@@ -593,19 +592,18 @@ var/global/list/robot_modules = list(
R.my_atom = src.emag
R.add_reagent("beer2", 50)
src.emag.name = "Mickey Finn's Special Brew"
..()
/obj/item/weapon/robot_module/clerical/general
name = "clerical robot module"
/obj/item/weapon/robot_module/clerical/general/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/pen/robopen(src)
src.modules += new /obj/item/weapon/form_printer(src)
src.modules += new /obj/item/weapon/gripper/paperwork(src)
src.modules += new /obj/item/weapon/hand_labeler(src)
src.emag = new /obj/item/weapon/stamp/denied(src)
..()
/obj/item/weapon/robot_module/general/butler/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
..()
@@ -632,6 +630,7 @@ var/global/list/robot_modules = list(
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
/obj/item/weapon/robot_module/miner/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/material(src)
src.modules += new /obj/item/weapon/wrench(src)
@@ -643,7 +642,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/mining_scanner(src)
src.modules += new /obj/item/weapon/crowbar(src)
src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src)
..()
/obj/item/weapon/robot_module/research
name = "research module"
@@ -657,6 +655,7 @@ var/global/list/robot_modules = list(
)
/obj/item/weapon/robot_module/research/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/portable_destructive_analyzer(src)
src.modules += new /obj/item/weapon/gripper/research(src)
@@ -687,8 +686,6 @@ var/global/list/robot_modules = list(
N.synths = list(nanite)
src.modules += N
..()
/obj/item/weapon/robot_module/syndicate
name = "syndicate robot module"
languages = list(
@@ -733,6 +730,7 @@ var/global/list/robot_modules = list(
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
/obj/item/weapon/robot_module/combat/New()
..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/hud/sec(src)
src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src)
@@ -741,7 +739,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/borg/combat/mobility(src)
src.modules += new /obj/item/weapon/crowbar(src)
src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
..()
/obj/item/weapon/robot_module/drone
name = "drone module"
@@ -749,6 +746,7 @@ var/global/list/robot_modules = list(
networks = list(NETWORK_ENGINEERING)
/obj/item/weapon/robot_module/drone/New(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/weapon/weldingtool(src)
src.modules += new /obj/item/weapon/screwdriver(src)
src.modules += new /obj/item/weapon/wrench(src)
@@ -823,16 +821,14 @@ var/global/list/robot_modules = list(
P.synths = list(plastic)
src.modules += P
..()
/obj/item/weapon/robot_module/drone/construction
name = "construction drone module"
channels = list("Engineering" = 1)
languages = list()
/obj/item/weapon/robot_module/drone/construction/New()
src.modules += new /obj/item/weapon/rcd/borg(src)
..()
src.modules += new /obj/item/weapon/rcd/borg(src)
/obj/item/weapon/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/lightreplacer/LR = locate() in src.modules
+3 -5
View File
@@ -184,9 +184,7 @@
P.icon_state = "pill"+pillsprite
reagents.trans_to_obj(P,amount_per_pill)
if(src.loaded_pill_bottle)
if(loaded_pill_bottle.contents.len < loaded_pill_bottle.max_storage_space)
P.loc = loaded_pill_bottle
src.updateUsrDialog()
loaded_pill_bottle.insert_into_storage(P)
else if (href_list["createbottle"])
if(!condi)
@@ -243,7 +241,7 @@
if(!beaker)
dat = "Please insert beaker.<BR>"
if(src.loaded_pill_bottle)
dat += "<A href='?src=\ref[src];ejectp=1'>Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]</A><BR><BR>"
dat += "<A href='?src=\ref[src];ejectp=1'>Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\]</A><BR><BR>"
else
dat += "No pill bottle inserted.<BR><BR>"
dat += "<A href='?src=\ref[src];close=1'>Close</A>"
@@ -251,7 +249,7 @@
var/datum/reagents/R = beaker:reagents
dat += "<A href='?src=\ref[src];eject=1'>Eject beaker and Clear Buffer</A><BR>"
if(src.loaded_pill_bottle)
dat += "<A href='?src=\ref[src];ejectp=1'>Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]</A><BR><BR>"
dat += "<A href='?src=\ref[src];ejectp=1'>Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\]</A><BR><BR>"
else
dat += "No pill bottle inserted.<BR><BR>"
if(!R.total_volume)
+1 -1
View File
@@ -766,7 +766,7 @@ datum/design/item/experimental_welder
name = "Experimental Welding Tool"
desc = "A scientifically-enhanced welding tool that uses fuel-producing microbes to gradually replenish its fuel supply"
id = "experimental_welder"
req_tech = list(ENGINEERING = 4, TECH_MATERIAL = 4)
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 4)
materials = list(DEFAULT_WALL_MATERIAL = 500)
build_path =/obj/item/weapon/weldingtool/experimental
sort_string = "VABAJ"
+4 -4
View File
@@ -6,7 +6,7 @@
/datum/surgery_step/glue_bone
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
/obj/item/weapon/screwdriver = 75
/obj/item/weapon/tape_roll = 60
)
can_infect = 1
blood_level = 1
@@ -18,7 +18,7 @@
if (!hasorgans(target))
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && !(affected.status & ORGAN_ROBOT) && affected.open >= 2 && affected.stage == 0
return affected && !(affected.status & ORGAN_ROBOT) && affected.open >= 2 && affected.open < 3 && affected.stage == 0
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -115,7 +115,7 @@
/datum/surgery_step/finish_bone
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
/obj/item/weapon/screwdriver = 75
/obj/item/weapon/tape_roll = 60
)
can_infect = 1
blood_level = 1
@@ -127,7 +127,7 @@
if (!hasorgans(target))
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open >= 2 && !(affected.status & ORGAN_ROBOT) && affected.stage == 2
return affected && affected.open >= 2 && affected.open < 3 && !(affected.status & ORGAN_ROBOT) && affected.stage == 2
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
+5 -3
View File
@@ -17,7 +17,9 @@
/datum/surgery_step/open_encased/saw
allowed_tools = list(
/obj/item/weapon/circular_saw = 100, \
/obj/item/weapon/circular_saw = 100,
/obj/item/weapon/melee/energy = 100,
/obj/item/weapon/melee/chainsword = 70,
/obj/item/weapon/material/hatchet = 75
)
@@ -172,7 +174,7 @@
affected.createwound(BRUISE, 20)
affected.fracture()
if(affected.internal_organs && affected.internal_organs.len)
if(prob(40))
var/obj/item/organ/O = pick(affected.internal_organs) //TODO weight by organ size
@@ -182,7 +184,7 @@
/datum/surgery_step/open_encased/mend
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
/obj/item/weapon/screwdriver = 75
/obj/item/weapon/tape_roll = 60
)
min_duration = 20
+2 -2
View File
@@ -205,11 +205,11 @@
max_duration = 90
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if (!hasorgans(target))
return
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if(!affected) return
if(!affected)
return
var/is_organ_damaged = 0
for(var/obj/item/organ/I in affected.internal_organs)
if(I.damage > 0 && I.robotic >= 2)
+1
View File
@@ -110,6 +110,7 @@ proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool)
if (user.a_intent == I_HELP)
user << "<span class='warning'>You can't see any useful way to use [tool] on [M].</span>"
return 1 //Prevents attacking your patient on help intent
return 0
proc/sort_surgeries()