Bugs, Bugs Everywhere. (#1351)

Fixes #1333 and Fixes #1331
IPCs, and indeed anyone with robotic organs or plant organs, can be rejuv'd properly.
IPCs now have their damage shown on VV, more or less.
IPCs have their brutemod set to 0.8, since prosthetic limbs already have brute mods of their own, and so Industrial IPCs could have a brute mod of 0.5 instead of 0.3
Probably some other stuff. It's all in the diff.
This commit is contained in:
LordFowl
2016-12-30 21:17:02 -05:00
committed by skull132
parent d8a421ae0a
commit 7ccdf4e815
18 changed files with 115 additions and 54 deletions
+4 -3
View File
@@ -25,6 +25,7 @@ var/list/organ_cache = list()
germ_level = 0
var/datum/dna/dna
var/datum/species/species
var/emp_coeff = 1 //coefficient for damages taken by EMP, if the organ is robotic.
/obj/item/organ/Destroy()
if(!owner)
@@ -265,13 +266,13 @@ var/list/organ_cache = list()
return
switch (severity)
if (1.0)
take_damage(20)
take_damage(rand(7,20) * emp_coeff)
return
if (2.0)
take_damage(7)
take_damage(rand(3,7) * emp_coeff)
return
if(3.0)
take_damage(3)
take_damage(rand(3) * emp_coeff)
/obj/item/organ/proc/removed(var/mob/living/user)
+13 -4
View File
@@ -57,6 +57,7 @@
var/can_grasp //It would be more appropriate if these two were named "affects_grasp" and "affects_stand" at this point
var/can_stand
var/body_hair
var/painted = 0
/obj/item/organ/external/Destroy()
if(parent && parent.children)
@@ -343,10 +344,14 @@ This function completely restores a damaged organ to perfect condition.
*/
/obj/item/organ/external/rejuvenate()
damage_state = "00"
if(status & 128) //Robotic organs stay robotic. Fix because right click rejuvinate makes IPC's organs organic.
status = 128
else
status = 0
src.status &= ~ORGAN_BROKEN
src.status &= ~ORGAN_BLEEDING
src.status &= ~ORGAN_SPLINTED
src.status &= ~ORGAN_CUT_AWAY
src.status &= ~ORGAN_DESTROYED
src.status &= ~ORGAN_DEAD
src.status &= ~ORGAN_MUTATED
src.status &= ~ORGAN_SPLINTED
perma_injury = 0
brute_dam = 0
burn_dam = 0
@@ -932,10 +937,14 @@ Note that amputating the affected organ does in fact remove the infection from t
if(company)
model = company
var/datum/robolimb/R = all_robolimbs[company]
if(species && !(species.name in R.species_can_use))
R = basic_robolimb
if(R)
force_icon = R.icon
name = "[R.company] [initial(name)]"
desc = "[R.desc]"
if(R.paintable)
painted = 1
dislocated = -1 //TODO, make robotic limbs a separate type, remove snowflake
cannot_break = 1
+3
View File
@@ -95,6 +95,9 @@ var/global/list/limb_icon_cache = list()
if(force_icon)
mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]")
if(painted)
if(s_col && s_col.len >= 3)
mob_icon.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD)
else
if(!dna)
mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]")
+3 -1
View File
@@ -16,6 +16,7 @@ var/global/datum/robolimb/basic_robolimb
var/icon = 'icons/mob/human_races/robotic.dmi' // Icon base to draw from.
var/unavailable_at_chargen // If set, not available at chargen.
var/list/species_can_use = list("Human","Skrell","Tajara","Zhan-Khaza","M'sai","Unathi","Vaurca Worker","Vaurca Warrior","Baseline Frame")
var/paintable = 0 //tired of istype exceptions. bullshirt to find, and by god do i know it after this project.
/datum/robolimb/bishop
company = "Bishop Cybernetics"
@@ -40,8 +41,9 @@ var/global/datum/robolimb/basic_robolimb
/datum/robolimb/ipc
company = "Hephaestus Integrated Limb"
desc = "This limb is simple and functional; no effort has been made to make it look human."
icon = 'icons/mob/human_races/cyberlimbs/ipc.dmi'
icon = 'icons/mob/human_races/r_machine.dmi'
unavailable_at_chargen = 1
paintable = 1
/datum/robolimb/industrial
company = "Hephaestus Industrial Limb"
+50 -12
View File
@@ -176,6 +176,7 @@
organ_tag = "brain"
parent_organ = "chest"
vital = 1
emp_coeff = 0.1
/obj/item/organ/data
name = "data core"
@@ -184,6 +185,7 @@
icon = 'icons/obj/cloning.dmi'
icon_state = "harddisk"
vital = 0
emp_coeff = 0.1
/obj/item/organ/data/New()
robotize()
@@ -197,9 +199,10 @@
organ_tag = "shielded cell"
parent_organ = "chest"
vital = 1
emp_coeff = 0.1
/obj/item/organ/cell/New()
mechassist()
robotize()
..()
/obj/item/organ/external/head/terminator
@@ -209,70 +212,105 @@
max_damage = 50 //made same as arm, since it is not vital
min_broken_damage = 30
encased = null
emp_coeff = 0.5
/obj/item/organ/optical_sensorterminator
name = "optical sensor"
organ_tag = "optics"
parent_organ = "head"
icon = 'icons/obj/robot_component.dmi'
icon_state = "camera"
dead_icon = "camera_broken"
emp_coeff = 0.5
/obj/item/organ/optical_sensor/terminator/New()
robotize()
..()
/obj/item/organ/external/head/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/chest/terminator
dislocated = -1
encased = null
emp_coeff = 0.5
/obj/item/organ/external/chest/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/groin/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/groin/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/arm/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/arm/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/arm/right/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/arm/right/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/leg/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/leg/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/leg/right/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/leg/right/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/foot/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/foot/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/foot/right/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/foot/right/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/hand/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/hand/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/hand/right/terminator
dislocated = -1
emp_coeff = 0.5
/obj/item/organ/external/hand/right/terminator/New()
mechassist("Hephaestus Vulcanite Limb")
robotize("Hephaestus Vulcanite Limb")
..()
/obj/item/organ/external/head/industrial