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:
Contrabang
2024-01-09 07:47:44 -05:00
committed by GitHub
parent 6e52fdd161
commit c904802fed
3 changed files with 30 additions and 34 deletions
+30 -32
View File
@@ -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