mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Fire extinguishers no longer lose their examine description after being used. (#23570)
* more bad extinguisher code * guh * Update code/game/objects/items/weapons/extinguisher.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/objects/items/weapons/extinguisher.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/game/objects/items/weapons/extinguisher.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "fire_extinguisher0"
|
||||
item_state = "fire_extinguisher"
|
||||
base_icon_state = "fire_extinguisher"
|
||||
hitsound = 'sound/weapons/smash.ogg'
|
||||
flags = CONDUCT
|
||||
throwforce = 10
|
||||
@@ -17,27 +18,26 @@
|
||||
dog_fashion = /datum/dog_fashion/back
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/max_water = 50
|
||||
var/last_use = 1.0
|
||||
var/safety = 1
|
||||
var/safety = TRUE
|
||||
var/refilling = FALSE
|
||||
var/sprite_name = "fire_extinguisher"
|
||||
var/power = 5 //Maximum distance launched water will travel
|
||||
var/precision = 0 //By default, turfs picked from a spray are random, set to 1 to make it always have at least one water effect per row
|
||||
/// FALSE by default, turfs picked from a spray are random, set to TRUE to make it always have at least one water effect per row
|
||||
var/precision = FALSE
|
||||
var/cooling_power = 2 //Sets the cooling_temperature of the water reagent datum inside of the extinguisher when it is refilled
|
||||
COOLDOWN_DECLARE(last_use)
|
||||
|
||||
/obj/item/extinguisher/mini
|
||||
name = "pocket fire extinguisher"
|
||||
desc = "A light and compact fibreglass-framed model fire extinguisher."
|
||||
icon_state = "miniFE0"
|
||||
item_state = "miniFE"
|
||||
base_icon_state = "miniFE"
|
||||
hitsound = null //it is much lighter, after all.
|
||||
flags = null //doesn't CONDUCT
|
||||
throwforce = 2
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force = 3.0
|
||||
force = 3
|
||||
materials = list()
|
||||
max_water = 30
|
||||
sprite_name = "miniFE"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/extinguisher/examine(mob/user)
|
||||
@@ -54,10 +54,8 @@
|
||||
|
||||
/obj/item/extinguisher/attack_self(mob/user as mob)
|
||||
safety = !safety
|
||||
src.icon_state = "[sprite_name][!safety]"
|
||||
src.desc = "The safety is [safety ? "on" : "off"]."
|
||||
to_chat(user, "The safety is [safety ? "on" : "off"].")
|
||||
return
|
||||
icon_state = "[base_icon_state][!safety]"
|
||||
to_chat(user, "<span class='notice'>You [safety ? "enable" : "disable"] [src]'s safety.</span>")
|
||||
|
||||
/obj/item/extinguisher/attack_obj(obj/O, mob/living/user, params)
|
||||
if(AttemptRefill(O, user))
|
||||
@@ -67,26 +65,26 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/extinguisher/proc/AttemptRefill(atom/target, mob/user)
|
||||
if(istype(target, /obj/structure/reagent_dispensers/watertank) && target.Adjacent(user))
|
||||
var/safety_save = safety
|
||||
safety = 1
|
||||
if(reagents.total_volume == reagents.maximum_volume)
|
||||
to_chat(user, "<span class='notice'>\The [src] is already full!</span>")
|
||||
safety = safety_save
|
||||
return 1
|
||||
var/obj/structure/reagent_dispensers/watertank/W = target
|
||||
var/transferred = W.reagents.trans_to(src, max_water)
|
||||
if(transferred > 0)
|
||||
to_chat(user, "<span class='notice'>\The [src] has been refilled by [transferred] units</span>")
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
for(var/datum/reagent/water/R in reagents.reagent_list)
|
||||
R.cooling_temperature = cooling_power
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [W] is empty!</span>")
|
||||
safety = safety_save
|
||||
return 1
|
||||
if(!istype(target, /obj/structure/reagent_dispensers/watertank) || !target.Adjacent(user))
|
||||
return FALSE
|
||||
var/old_safety = safety
|
||||
safety = TRUE
|
||||
if(reagents.total_volume == reagents.maximum_volume)
|
||||
to_chat(user, "<span class='notice'>\The [src] is already full!</span>")
|
||||
safety = old_safety
|
||||
return TRUE
|
||||
var/obj/structure/reagent_dispensers/watertank/W = target
|
||||
var/transferred = W.reagents.trans_to(src, max_water)
|
||||
if(transferred > 0)
|
||||
to_chat(user, "<span class='notice'>\The [src] has been refilled by [transferred] units.</span>")
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, TRUE, -6)
|
||||
for(var/datum/reagent/water/R in reagents.reagent_list)
|
||||
R.cooling_temperature = cooling_power
|
||||
else
|
||||
return 0
|
||||
to_chat(user, "<span class='notice'>\The [W] is empty!</span>")
|
||||
safety = old_safety
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/extinguisher/afterattack(atom/target, mob/user , flag)
|
||||
. = ..()
|
||||
@@ -103,10 +101,10 @@
|
||||
to_chat(usr, "<span class='danger'>\The [src] is empty.</span>")
|
||||
return
|
||||
|
||||
if(world.time < src.last_use + 20)
|
||||
if(!COOLDOWN_FINISHED(src, last_use))
|
||||
return
|
||||
|
||||
src.last_use = world.time
|
||||
COOLDOWN_START(src, last_use, 2 SECONDS)
|
||||
|
||||
if(reagents.chem_temp > 300 || reagents.chem_temp < 280)
|
||||
add_attack_logs(user, target, "Sprayed with superheated or cooled fire extinguisher at Temperature [reagents.chem_temp]K")
|
||||
|
||||
@@ -226,7 +226,6 @@
|
||||
item_state = "nozzleatmos"
|
||||
safety = 0
|
||||
max_water = 500
|
||||
power = 8
|
||||
precision = 1
|
||||
cooling_power = 5
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
|
||||
Reference in New Issue
Block a user