defib
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
var/on = FALSE //if the paddles are equipped (1) or on the defib (0)
|
||||
var/safety = TRUE //if you can zap people with the defibs on harm mode
|
||||
var/powered = FALSE //if there's a cell in the defib with enough power for a revive, blocks paddles from reviving otherwise
|
||||
/// If the cell can be removed via screwdriver
|
||||
var/cell_removable = TRUE
|
||||
var/obj/item/shockpaddles/paddles
|
||||
var/obj/item/stock_parts/cell/cell
|
||||
var/combat = FALSE //if true, revive through hardsuits, allow for combat shocking, and tint paddles syndicate colors
|
||||
@@ -29,6 +31,16 @@
|
||||
var/timedeath = 10
|
||||
var/disarm_shock_time = 10
|
||||
var/always_emagged = FALSE
|
||||
/// The icon state for the paddle overlay, not applied if null
|
||||
var/paddle_state = "defibunit-paddles"
|
||||
/// The icon state for the powered on overlay, not applied if null
|
||||
var/powered_state = "defibunit-powered"
|
||||
/// The icon state for the charge bar overlay, not applied if null
|
||||
var/charge_state = "defibunit-charge"
|
||||
/// The icon state for the missing cell overlay, not applied if null
|
||||
var/nocell_state = "defibunit-nocell"
|
||||
/// The icon state for the emagged overlay, not applied if null
|
||||
var/emagged_state = "defibunit-emagged"
|
||||
|
||||
/obj/item/defibrillator/get_cell()
|
||||
return cell
|
||||
@@ -56,18 +68,19 @@
|
||||
|
||||
/obj/item/defibrillator/update_overlays()
|
||||
. = ..()
|
||||
if(!on)
|
||||
. += "[initial(icon_state)]-paddles"
|
||||
if(powered)
|
||||
. += "[initial(icon_state)]-powered"
|
||||
if(!QDELETED(cell))
|
||||
|
||||
if(!on && paddle_state)
|
||||
. += paddle_state
|
||||
if(powered && powered_state)
|
||||
. += powered_state
|
||||
if(!QDELETED(cell) && charge_state)
|
||||
var/ratio = cell.charge / cell.maxcharge
|
||||
ratio = CEILING(ratio*4, 1) * 25
|
||||
add_overlay("[initial(icon_state)]-charge[ratio]")
|
||||
if(!cell)
|
||||
. += "[initial(icon_state)]-nocell"
|
||||
if(!safety)
|
||||
. += "[initial(icon_state)]-emagged"
|
||||
. += "[charge_state][ratio]"
|
||||
if(!cell && nocell_state)
|
||||
. += "[nocell_state]"
|
||||
if(!safety && emagged_state)
|
||||
. += emagged_state
|
||||
|
||||
/obj/item/defibrillator/CheckParts(list/parts_list)
|
||||
..()
|
||||
@@ -103,6 +116,18 @@
|
||||
var/atom/movable/screen/inventory/hand/H = over_object
|
||||
M.putItemFromInventoryInHandIfPossible(src, H.held_index)
|
||||
|
||||
/obj/item/defibrillator/screwdriver_act(mob/living/user, obj/item/tool)
|
||||
if(!cell || !cell_removable)
|
||||
return FALSE
|
||||
|
||||
cell.update_appearance()
|
||||
cell.forceMove(get_turf(src))
|
||||
balloon_alert(user, "removed [cell]")
|
||||
cell = null
|
||||
tool.play_tool_sound(src, 50)
|
||||
update_power()
|
||||
return TRUE
|
||||
|
||||
/obj/item/defibrillator/attackby(obj/item/W, mob/user, params)
|
||||
if(W == paddles)
|
||||
toggle_paddles()
|
||||
@@ -120,13 +145,6 @@
|
||||
to_chat(user, "<span class='notice'>You install a cell in [src].</span>")
|
||||
update_power()
|
||||
|
||||
else if(W.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
if(cell)
|
||||
cell.update_icon()
|
||||
cell.forceMove(get_turf(src))
|
||||
cell = null
|
||||
to_chat(user, "<span class='notice'>You remove the cell from [src].</span>")
|
||||
update_power()
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -236,6 +254,11 @@
|
||||
item_state = "defibcompact"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
paddle_state = "defibcompact-paddles"
|
||||
powered_state = "defibcompact-powered"
|
||||
charge_state = "defibcompact-charge"
|
||||
nocell_state = "defibcompact-nocell"
|
||||
emagged_state = "defibcompact-emagged"
|
||||
|
||||
/obj/item/defibrillator/compact/item_action_slot_check(slot, mob/user, datum/action/A)
|
||||
if(slot == user.getBeltSlot())
|
||||
@@ -254,6 +277,13 @@
|
||||
always_emagged = TRUE
|
||||
disarm_shock_time = 0
|
||||
cell = /obj/item/stock_parts/cell/infinite
|
||||
paddles = /obj/item/shockpaddles/syndicate
|
||||
paddle_state = "defibcombat-paddles"
|
||||
powered_state = null
|
||||
emagged_state = null
|
||||
|
||||
/obj/item/defibrillator/compact/combat/loaded
|
||||
cell_removable = FALSE // Don't let people just have an infinite power cell
|
||||
|
||||
/obj/item/defibrillator/compact/combat/loaded/attackby(obj/item/W, mob/user, params)
|
||||
if(W == paddles)
|
||||
|
||||
Reference in New Issue
Block a user