mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 16:05:07 +00:00
* Refactors armor into dedicated subtypes * start * most tg things * pain (#18584) * shit * non-mod changes * compile Co-authored-by: John Doe <gamingskeleton3@gmail.com> * #18291 * compile fix * ??? Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: John Doe <gamingskeleton3@gmail.com> Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
56 lines
1.7 KiB
Plaintext
56 lines
1.7 KiB
Plaintext
/obj/machinery/ai_slipper
|
|
name = "foam dispenser"
|
|
desc = "A remotely-activatable dispenser for crowd-controlling foam."
|
|
icon = 'icons/obj/device.dmi'
|
|
icon_state = "ai-slipper0"
|
|
base_icon_state = "ai-slipper"
|
|
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
|
|
plane = FLOOR_PLANE
|
|
max_integrity = 200
|
|
armor_type = /datum/armor/machinery_ai_slipper
|
|
|
|
var/uses = 20
|
|
COOLDOWN_DECLARE(foam_cooldown)
|
|
var/cooldown_time = 10 SECONDS // just about enough cooldown time so you cant waste foam
|
|
req_access = list(ACCESS_AI_UPLOAD)
|
|
|
|
/datum/armor/machinery_ai_slipper
|
|
melee = 50
|
|
bullet = 20
|
|
laser = 20
|
|
energy = 20
|
|
fire = 50
|
|
acid = 30
|
|
|
|
/obj/machinery/ai_slipper/examine(mob/user)
|
|
. = ..()
|
|
. += span_notice("It has <b>[uses]</b> uses of foam remaining.")
|
|
|
|
/obj/machinery/ai_slipper/update_icon_state()
|
|
if(machine_stat & BROKEN)
|
|
return ..()
|
|
if((machine_stat & NOPOWER) || !COOLDOWN_FINISHED(src, foam_cooldown) || !uses)
|
|
icon_state = "[base_icon_state]0"
|
|
return ..()
|
|
icon_state = "[base_icon_state]1"
|
|
return ..()
|
|
|
|
/obj/machinery/ai_slipper/interact(mob/user)
|
|
if(!allowed(user))
|
|
to_chat(user, span_danger("Access denied."))
|
|
return
|
|
if(!uses)
|
|
to_chat(user, span_warning("[src] is out of foam and cannot be activated!"))
|
|
return
|
|
if(!COOLDOWN_FINISHED(src, foam_cooldown))
|
|
to_chat(user, span_warning("[src] cannot be activated for <b>[DisplayTimeText(COOLDOWN_TIMELEFT(src, foam_cooldown))]</b>!"))
|
|
return
|
|
var/datum/effect_system/fluid_spread/foam/foam = new
|
|
foam.set_up(4, holder = src, location = loc)
|
|
foam.start()
|
|
uses--
|
|
to_chat(user, span_notice("You activate [src]. It now has <b>[uses]</b> uses of foam remaining."))
|
|
COOLDOWN_START(src, foam_cooldown,cooldown_time)
|
|
power_change()
|
|
addtimer(CALLBACK(src, PROC_REF(power_change)), cooldown_time)
|