mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 00:21:11 +01:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user