/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" layer = PROJECTILE_HIT_THRESHHOLD_LAYER plane = FLOOR_PLANE anchored = TRUE max_integrity = 200 armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) var/uses = 20 var/cooldown = 0 var/cooldown_time = 100 req_access = list(ACCESS_AI_UPLOAD) /obj/machinery/ai_slipper/examine(mob/user) ..() to_chat(user, "It has [uses] uses of foam remaining.") /obj/machinery/ai_slipper/power_change() if(stat & BROKEN) return else if(powered()) stat &= ~NOPOWER else stat |= NOPOWER if((stat & (NOPOWER|BROKEN)) || cooldown_time > world.time || !uses) icon_state = "ai-slipper0" else icon_state = "ai-slipper1" /obj/machinery/ai_slipper/interact(mob/user) if(!allowed(user)) to_chat(user, "Access denied.") return if(!uses) to_chat(user, "[src] is out of foam and cannot be activated.") return if(cooldown_time > world.time) to_chat(user, "[src] cannot be activated for [DisplayTimeText(world.time - cooldown_time)].") return new /obj/effect/particle_effect/foam(loc) uses-- to_chat(user, "You activate [src]. It now has [uses] uses of foam remaining.") cooldown = world.time + cooldown_time power_change() addtimer(CALLBACK(src, .proc/power_change), cooldown_time)