IPC battery rework, ion rifle nerf, surge damage. (#10245)

- EMPs no longer deal permanent damage. Instead, they deal a temporary kind of damage called surge damage, that lasts for 10 seconds at maximum.
  - Surge damage makes mechanical or assisted limbs count as broken and nonfunctional.
  - Surge damage has special interactions with the mechanical heart and eyes.
  - EMP damage is no longer randomized. It is now much more consistent.
  - IPC battery is no longer represented as nutrition. Instead, the microbattery organ contains a super-capacity cell that is used for all their actions. This is represented with a new HUD icon.
  - Hardsuits can now be charged in robot chargers if you are wearing them.
  - Ion bolts now have a hit sound.
  - Removed the ion rifle lethal mode.
  - The ion rifle now has four shots.
This commit is contained in:
Matt Atlas
2020-12-19 01:34:40 +01:00
committed by GitHub
parent a61e0e7047
commit 8007ccd2ea
44 changed files with 396 additions and 284 deletions
@@ -19,7 +19,7 @@
/obj/item/organ/internal/brain/slime
name = "slime core"
desc = "A complex, organic knot of jelly and crystalline particles."
robotic = 2
robotic = ROBOTIC_MECHANICAL
icon = 'icons/mob/npc/slimes.dmi'
icon_state = "green slime extract"
can_lobotomize = 0
@@ -27,7 +27,7 @@
/obj/item/organ/internal/brain/golem
name = "chelm"
desc = "A tightly furled roll of paper, covered with indecipherable runes."
robotic = 2
robotic = ROBOTIC_MECHANICAL
icon = 'icons/obj/library.dmi'
icon_state = "scroll"
item_state = "scroll"
@@ -198,6 +198,10 @@
stat("Internal Atmosphere Info", internal.name)
stat("Tank Pressure", internal.air_contents.return_pressure())
stat("Distribution Pressure", internal.distribute_pressure)
var/obj/item/organ/internal/cell/IC = internal_organs_by_name[BP_CELL]
if(IC && IC.cell)
stat("Battery charge:", "[IC.get_charge()]/[IC.cell.maxcharge]")
if(back && istype(back,/obj/item/rig))
var/obj/item/rig/suit = back
@@ -345,12 +345,18 @@
if(I_DISARM)
var/disarm_cost
var/usesStamina
var/obj/item/organ/internal/cell/cell = M.internal_organs_by_name[BP_CELL]
var/obj/item/cell/potato
if(cell)
potato = cell.cell
if(M.max_stamina > 0)
disarm_cost = M.max_stamina / 6
usesStamina = TRUE
else if(M.max_stamina <= 0)
disarm_cost = M.max_nutrition / 8
if(M.isSynthetic())
disarm_cost = potato.maxcharge / 24
disarm_cost = M.max_nutrition / 6
usesStamina = FALSE
if(usesStamina)
@@ -378,14 +384,15 @@
if(usesStamina)
M.stamina = M.stamina - disarm_cost //attempting to knock something out of someone's hands, or pushing them over, is exhausting!
M.stamina = Clamp(M.stamina, 0, M.max_stamina)
else if(M.isSynthetic())
cell.use(disarm_cost)
else
M.nutrition = M.nutrition - disarm_cost
M.nutrition = Clamp(M.nutrition, 0, M.max_nutrition)
M.nutrition = Clamp(M.nutrition - disarm_cost, 0, M.max_nutrition)
if(w_uniform)
w_uniform.add_fingerprint(M)
var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/list/holding = list(get_active_hand() = 40, get_inactive_hand() = 20)
//See if they have any weapons to retaliate with
@@ -187,31 +187,28 @@ emp_act
if(s.surge_left)
visible_message("<span class='warning'>[src] was not affected by EMP pulse.</span>", "<span class='warning'>Warning: EMP detected, integrated surge prevention module activated. There are [s.surge_left] preventions left.</span>")
else
s.broken = 1
s.broken = TRUE
s.icon_state = "surge_ipc_broken"
visible_message("<span class='warning'>[src] was not affected by EMP pulse.</span>", "<span class='warning'>Warning: EMP detected, integrated surge prevention module activated. The surge prevention module is fried, replacement recommended.</span>")
return 1
return TRUE
else if(s.surge_left == 0.5)
to_chat(src, "<span class='danger'>Warning: EMP detected, integrated surge prevention module is damaged and was unable to fully protect from EMP. Half of the damage taken. Replacement recommended.</span>")
for(var/obj/O in src)
if(!O) continue
if(!O)
continue
O.emp_act(severity * 2) // EMP act takes reverse numbers
for(var/obj/item/organ/external/O in organs)
O.emp_act(severity)
for(var/obj/item/organ/I in O.internal_organs)
if(I.robotic == 0) continue
if(I.robotic == ROBOTIC_NONE)
continue
I.emp_act(severity * 2) // EMP act takes reverse numbers
return 1
return TRUE
else
to_chat(src, "<span class='danger'>Warning: EMP detected, integrated surge prevention module is fried and unable to protect from EMP. Replacement recommended.</span>")
for(var/obj/O in src)
if(!O) continue
O.emp_act(severity)
for(var/obj/item/organ/external/O in organs)
O.emp_act(severity)
for(var/obj/item/organ/I in O.internal_organs)
if(I.robotic == 0) continue
I.emp_act(severity)
..()
/mob/living/carbon/human/resolve_item_attack(obj/item/I, mob/living/user, var/target_zone)
@@ -91,7 +91,7 @@
//malfunctioning only happens intermittently so treat it as a missing limb when it procs
stance_damage += 2
if(prob(10))
visible_message("\The [src]'s [E.name] [pick("twitches", "shudders")] and sparks!")
visible_message(SPAN_WARNING("\The [src]'s [E.name] [pick("twitches", "shudders")] and sparks!"))
spark(src, 5)
else if (E.is_broken() || !E.is_usable())
stance_damage += 1
@@ -108,10 +108,11 @@
// standing is poor
if(stance_damage >= 4 || (stance_damage >= 2 && prob(5)))
if(lying || resting)
return
emote("scream")
emote("collapse")
if(!(lying || resting))
emote("scream")
if(!weakened)
custom_emote(VISIBLE_MESSAGE, "collapses!")
Weaken(3)
next_stance_collapse = world.time + (rand(8, 16) SECONDS)
/mob/living/carbon/human/proc/handle_grasp()
@@ -204,7 +205,12 @@
return FALSE
/mob/living/carbon/human/is_asystole()
if(species.has_organ[BP_HEART] && !isSynthetic())
if(isSynthetic())
var/obj/item/organ/internal/cell/C = internal_organs_by_name[BP_CELL]
if(istype(C))
if(!C.is_usable() || !C.percent())
return TRUE
else if(should_have_organ(BP_HEART))
var/obj/item/organ/internal/heart/heart = internal_organs_by_name[BP_HEART]
if(!istype(heart) || !heart.is_working())
return TRUE
@@ -1038,7 +1038,11 @@ mob/living/carbon/human/proc/change_monitor()
output += "Internal Temperature: [convert_k2c(bodytemperature)] Degrees Celsius\n"
output += "Current Charge Level: [nutrition]\n"
var/obj/item/organ/internal/cell/C = internal_organs_by_name[BP_CELL]
if(!C || !C.cell)
output += SPAN_DANGER("ERROR: NO BATTERY DETECTED")
else
output += "Current Charge Level: [C.percent()]\n"
var/toxDam = getToxLoss()
if(toxDam)
@@ -35,12 +35,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
h_style = "blue IPC screen"
. = ..(mapload, SPECIES_IPC)
/mob/living/carbon/human/machine/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/monkey/Initialize(mapload)
. = ..(mapload, SPECIES_MONKEY)
@@ -110,39 +104,15 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
/mob/living/carbon/human/industrial/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_G1)
/mob/living/carbon/human/industrial/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/shell/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_SHELL)
/mob/living/carbon/human/shell/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_hephaestus/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_G2)
/mob/living/carbon/human/industrial_hephaestus/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_xion/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_XION)
/mob/living/carbon/human/industrial_xion/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_xion_remote/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_XION_REMOTE)
@@ -156,12 +126,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
remote_network = REMOTE_GENERIC_ROBOT
SSvirtualreality.add_robot(src, remote_network)
/mob/living/carbon/human/industrial_xion_remote/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_xion_remote_mech/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_XION_REMOTE)
@@ -172,12 +136,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
mind.name = real_name
status_flags |= NO_ANTAG
/mob/living/carbon/human/industrial_xion_remote_mech/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_xion_remote_bunker/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_XION_REMOTE)
@@ -195,12 +153,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
remote_network = REMOTE_BUNKER_ROBOT
SSvirtualreality.add_robot(src, remote_network)
/mob/living/carbon/human/industrial_xion_remote_bunker/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_xion_remote_penal/Initialize(mapload)
. = ..(mapload, "Remote Xion Industrial Frame")
@@ -216,12 +168,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
remote_network = REMOTE_PRISON_ROBOT
SSvirtualreality.add_robot(src, remote_network)
/mob/living/carbon/human/industrial_xion_remote_penal/Stat()
..()
if(client?.statpanel == "Status")
stat(null, "Battery Charge: [nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_xion_remote_warden/Initialize(mapload)
. = ..(mapload, "Remote Xion Industrial Frame")
@@ -244,39 +190,15 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
remote_network = REMOTE_WARDEN_ROBOT
SSvirtualreality.add_robot(src, remote_network)
/mob/living/carbon/human/industrial_xion_remote_warden/Stat()
..()
if(client?.statpanel == "Status")
stat(null, "Battery Charge: [nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_zenghu/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_ZENGHU)
/mob/living/carbon/human/industrial_zenghu/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/industrial_bishop/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_BISHOP)
/mob/living/carbon/human/industrial_bishop/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/unbranded_frame/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_UNBRANDED)
/mob/living/carbon/human/unbranded_frame/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/unbranded_frame_remote/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_UNBRANDED_REMOTE)
@@ -290,12 +212,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
remote_network = REMOTE_GENERIC_ROBOT
SSvirtualreality.add_robot(src, remote_network)
/mob/living/carbon/human/unbranded_frame_remote/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/unbranded_frame_remote_bunker/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_UNBRANDED_REMOTE)
@@ -313,12 +229,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
remote_network = REMOTE_BUNKER_ROBOT
SSvirtualreality.add_robot(src, remote_network)
/mob/living/carbon/human/unbranded_frame_remote_bunker/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/terminator/Initialize(mapload)
. = ..(mapload, SPECIES_IPC_TERMINATOR)
add_language(LANGUAGE_SOL_COMMON, 1)
@@ -347,12 +257,6 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
src.equip_to_slot_or_del(commando_belt, slot_belt)
src.gender = NEUTER
/mob/living/carbon/human/terminator/Stat()
..()
if(client?.statpanel == "Status")
stat("Battery Charge: ", "[nutrition]/[max_nutrition]")
/mob/living/carbon/human/terminator
mob_size = 30
+11 -1
View File
@@ -727,10 +727,11 @@
if(paralysis || sleeping || InStasis())
blinded = TRUE
stat = UNCONSCIOUS
adjustHalLoss(-3)
if (species.tail)
animate_tail_reset()
if(prob(2) && is_asystole() && isSynthetic())
visible_message("<b>[src]</b> [pick("emits low pitched whirr","beeps urgently")]")
if(paralysis)
AdjustParalysis(-1)
@@ -910,6 +911,7 @@
var/new_val = "[isSynthetic() ? "charge" : "nutrition"][nut_icon]"
if (nutrition_icon.icon_state != new_val)
nutrition_icon.icon_state = new_val
if(hydration_icon)
var/hyd_factor = max_hydration ? Clamp(hydration / max_hydration, 0, 1) : 1
var/hyd_icon = 5
@@ -927,6 +929,14 @@
if (hydration_icon.icon_state != new_val)
hydration_icon.icon_state = new_val
if(isSynthetic())
var/obj/item/organ/internal/cell/IC = internal_organs_by_name[BP_CELL]
if (istype(IC))
var/chargeNum = Clamp(Ceiling(IC.percent()/25), 0, 4) //0-100 maps to 0-4, but give it a paranoid clamp just in case.
cells.icon_state = "charge[chargeNum]"
else
cells.icon_state = "charge-empty"
if(pressure)
var/new_pressure = "pressure[pressure_alert]"
if (pressure.icon_state != new_pressure)
@@ -495,7 +495,7 @@
if(!H.client)//no client, no screen to update
return 1
H.set_fullscreen(H.eye_blind && !H.equipment_prescription, "blind", /obj/screen/fullscreen/blind)
H.set_fullscreen(H.eye_blind, "blind", /obj/screen/fullscreen/blind)
H.set_fullscreen(H.stat == UNCONSCIOUS, "blackout", /obj/screen/fullscreen/blackout)
if(config.welder_vision)
@@ -1,18 +1,19 @@
/datum/hud_data
var/icon // If set, overrides ui_style.
var/has_a_intent = 1 // Set to draw intent box.
var/has_m_intent = 1 // Set to draw move intent box.
var/has_warnings = 1 // Set to draw environment warnings.
var/has_pressure = 1 // Draw the pressure indicator.
var/has_nutrition = 1 // Draw the nutrition indicator.
var/has_hydration = 1 // Draw the hydration indicator.
var/has_bodytemp = 1 // Draw the bodytemp indicator.
var/has_hands = 1 // Set to draw hands.
var/has_drop = 1 // Set to draw drop button.
var/has_throw = 1 // Set to draw throw button.
var/has_resist = 1 // Set to draw resist button.
var/has_internals = 1 // Set to draw the internals toggle button.
var/has_up_hint = 1 // Set to draw the "look-up" hint icon.
var/icon // If set, overrides ui_style.
var/has_a_intent = TRUE // Set to draw intent box.
var/has_m_intent = TRUE // Set to draw move intent box.
var/has_warnings = TRUE // Set to draw environment warnings.
var/has_pressure = TRUE // Draw the pressure indicator.
var/has_nutrition = TRUE // Draw the nutrition indicator.
var/has_hydration = TRUE // Draw the hydration indicator.
var/has_bodytemp = TRUE // Draw the bodytemp indicator.
var/has_hands = TRUE // Set to draw hands.
var/has_drop = TRUE // Set to draw drop button.
var/has_throw = TRUE // Set to draw throw button.
var/has_resist = TRUE // Set to draw resist button.
var/has_internals = TRUE // Set to draw the internals toggle button.
var/has_up_hint = TRUE // Set to draw the "look-up" hint icon.
var/has_cell = FALSE //Set if the species has a cell.
var/list/equip_slots = list() // Checked by mob_can_equip().
// Contains information on the position and tag for all inventory slots
@@ -23,10 +24,10 @@
"o_clothing" = list("loc" = ui_oclothing, "name" = "Suit", "slot" = slot_wear_suit, "state" = "suit", "toggle" = 1),
"mask" = list("loc" = ui_mask, "name" = "Mask", "slot" = slot_wear_mask, "state" = "mask", "toggle" = 1),
"gloves" = list("loc" = ui_gloves, "name" = "Gloves", "slot" = slot_gloves, "state" = "gloves", "toggle" = 1),
BP_EYES = list("loc" = ui_glasses, "name" = "Glasses", "slot" = slot_glasses, "state" = "glasses","toggle" = 1),
"eyes" = list("loc" = ui_glasses, "name" = "Glasses", "slot" = slot_glasses, "state" = "glasses","toggle" = 1),
"l_ear" = list("loc" = ui_l_ear, "name" = "Left Ear", "slot" = slot_l_ear, "state" = "ears", "toggle" = 1),
"r_ear" = list("loc" = ui_r_ear, "name" = "Right Ear", "slot" = slot_r_ear, "state" = "ears", "toggle" = 1),
BP_HEAD = list("loc" = ui_head, "name" = "Hat", "slot" = slot_head, "state" = "hair", "toggle" = 1),
"head" = list("loc" = ui_head, "name" = "Hat", "slot" = slot_head, "state" = "hair", "toggle" = 1),
"shoes" = list("loc" = ui_shoes, "name" = "Shoes", "slot" = slot_shoes, "state" = "shoes", "toggle" = 1),
"suit storage" = list("loc" = ui_sstore1, "name" = "Suit Storage", "slot" = slot_s_store, "state" = "suitstore"),
"back" = list("loc" = ui_back, "name" = "Back", "slot" = slot_back, "state" = "back"),
@@ -59,14 +60,14 @@
equip_slots |= slot_legcuffed
/datum/hud_data/diona
has_hydration = 0
has_internals = 0
has_hydration = FALSE
has_internals = FALSE
gear = list(
"i_clothing" = list("loc" = ui_iclothing, "name" = "Uniform", "slot" = slot_w_uniform, "state" = "center", "toggle" = 1),
"o_clothing" = list("loc" = ui_shoes, "name" = "Suit", "slot" = slot_wear_suit, "state" = "suit", "toggle" = 1),
"l_ear" = list("loc" = ui_glasses, "name" = "Left Ear", "slot" = slot_l_ear, "state" = "ears", "toggle" = 1),
"r_ear" = list("loc" = ui_l_ear, "name" = "Right Ear", "slot" = slot_r_ear, "state" = "ears", "toggle" = 1),
BP_HEAD = list("loc" = ui_mask, "name" = "Hat", "slot" = slot_head, "state" = "hair", "toggle" = 1),
"head" = list("loc" = ui_mask, "name" = "Hat", "slot" = slot_head, "state" = "hair", "toggle" = 1),
"suit storage" = list("loc" = ui_sstore1, "name" = "Suit Storage", "slot" = slot_s_store, "state" = "suitstore"),
"back" = list("loc" = ui_back, "name" = "Back", "slot" = slot_back, "state" = "back"),
"id" = list("loc" = ui_id, "name" = "ID", "slot" = slot_wear_id, "state" = "id"),
@@ -74,7 +75,7 @@
"storage2" = list("loc" = ui_storage2, "name" = "Right Pocket", "slot" = slot_r_store, "state" = "pocket"),
"belt" = list("loc" = ui_belt, "name" = "Belt", "slot" = slot_belt, "state" = "belt"),
"mask" = list("loc" = ui_oclothing, "name" = "Mask", "slot" = slot_wear_mask, "state" = "mask", "toggle" = 1),
BP_EYES = list("loc" = ui_gloves, "name" = "Glasses", "slot" = slot_glasses, "state" = "glasses","toggle" = 1)
"eyes" = list("loc" = ui_gloves, "name" = "Glasses", "slot" = slot_glasses, "state" = "glasses","toggle" = 1)
)
/datum/hud_data/monkey
@@ -85,8 +86,10 @@
/datum/hud_data/ipc
has_hydration = 0
has_hydration = FALSE
has_nutrition = FALSE
has_cell = TRUE
/datum/hud_data/construct
has_hydration = 0
has_nutrition = 0
has_hydration = FALSE
has_nutrition = FALSE
@@ -82,11 +82,11 @@
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/mmi_holder/posibrain,
BP_CELL = /obj/item/organ/internal/cell,
BP_OPTICS = /obj/item/organ/internal/eyes/optical_sensor,
BP_EYES = /obj/item/organ/internal/eyes/optical_sensor,
BP_IPCTAG = /obj/item/organ/internal/ipc_tag
)
vision_organ = BP_OPTICS
vision_organ = BP_EYES
has_limbs = list(
BP_CHEST = list("path" = /obj/item/organ/external/chest/ipc),
@@ -125,24 +125,14 @@
var/sprint_temperature_factor = 1.15
var/sprint_charge_factor = 0.65
datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
/datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
. = ..()
check_tag(H, H.client)
/datum/species/machine/handle_sprint_cost(var/mob/living/carbon/human/H, var/cost)
if (H.stat == CONSCIOUS)
H.bodytemperature += cost * sprint_temperature_factor
H.adjustNutritionLoss(cost * sprint_charge_factor)
if(H.nutrition <= 0 && H.max_nutrition > 0)
H.Weaken(15)
H.m_intent = M_WALK
H.hud_used.move_intent.update_move_icon(H)
to_chat(H, SPAN_DANGER("ERROR: Power reserves depleted, emergency shutdown engaged. Backup power will come online in approximately 30 seconds, initiate charging as primary directive."))
playsound(H.loc, 'sound/machines/buzz-two.ogg', 100, 0)
else
return 1
return 0
return TRUE
/datum/species/machine/handle_death(var/mob/living/carbon/human/H)
..()
@@ -302,10 +292,10 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
. = ..()
check_tag(H, H.client)
/datum/species/machine/has_psi_potential()
return FALSE
/datum/species/machine/handle_death_check(var/mob/living/carbon/human/H)
if(H.get_total_health() <= config.health_threshold_dead)
return TRUE
return FALSE
/datum/species/machine/has_psi_potential()
return FALSE
@@ -94,7 +94,7 @@
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/mmi_holder/posibrain,
BP_CELL = /obj/item/organ/internal/cell,
BP_OPTICS = /obj/item/organ/internal/eyes/optical_sensor,
BP_EYES = /obj/item/organ/internal/eyes/optical_sensor,
"surge" = /obj/item/organ/internal/surge/advanced
)
@@ -245,7 +245,7 @@
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/mmi_holder/posibrain/terminator,
"shielded cell" = /obj/item/organ/internal/cell/terminator,
BP_OPTICS = /obj/item/organ/internal/eyes/optical_sensor/terminator,
BP_EYES = /obj/item/organ/internal/eyes/optical_sensor/terminator,
"data core" = /obj/item/organ/internal/data,
"surge" = /obj/item/organ/internal/surge/advanced
)
@@ -393,7 +393,7 @@
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/mmi_holder/circuit,
BP_CELL = /obj/item/organ/internal/cell,
BP_OPTICS = /obj/item/organ/internal/eyes/optical_sensor,
BP_EYES = /obj/item/organ/internal/eyes/optical_sensor,
BP_IPCTAG = /obj/item/organ/internal/ipc_tag
)
@@ -547,7 +547,7 @@
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/mmi_holder/circuit,
BP_CELL = /obj/item/organ/internal/cell,
BP_OPTICS = /obj/item/organ/internal/eyes/optical_sensor,
BP_EYES = /obj/item/organ/internal/eyes/optical_sensor,
BP_IPCTAG = /obj/item/organ/internal/ipc_tag
)
@@ -69,7 +69,11 @@
var/mob/living/carbon/human/H = M
to_chat(user, SPAN_NOTICE("Analyzing Results for \the [H]:"))
to_chat(user, "Key: <font color='#FFA500'>Electronics</font>/<span class='warning'>Brute</span>")
var/obj/item/organ/internal/cell/IC = H.internal_organs_by_name[BP_CELL]
if(IC)
to_chat(user, SPAN_NOTICE("Cell charge: [IC.percent()] %"))
else
to_chat(user, SPAN_NOTICE("Cell charge: ERROR - Cell not present"))
to_chat(user, SPAN_NOTICE("External prosthetics:"))
var/organ_found
if(length(H.internal_organs))
@@ -57,7 +57,6 @@
var/overclock_available = FALSE // if the overclock is available for use
// HUD Stuff
var/obj/screen/cells
var/obj/screen/inv1
var/obj/screen/inv2
var/obj/screen/inv3
+1
View File
@@ -9,6 +9,7 @@
var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak
var/can_buckle = TRUE
var/obj/screen/cells = null
var/obj/screen/flash = null
var/obj/screen/blind = null
var/obj/screen/hands = null