From fecaf91e0ef81d61c20e2b0f948a69789763f2df Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Wed, 6 Jul 2016 13:25:19 +0100 Subject: [PATCH] Burnt matches can no longer ignite paper or people Fixes #19162. --- code/_onclick/item_attack.dm | 4 +- .../objects/items/weapons/cigs_lighters.dm | 45 +++++++++---------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 7c6037355d7..838f913536f 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -87,7 +87,7 @@ /mob/living/proc/send_item_attack_message(obj/item/I, mob/living/user, hit_area) var/message_verb = "attacked" - if(I.attack_verb.len) + if(I.attack_verb && I.attack_verb.len) message_verb = "[pick(I.attack_verb)]" else if(!I.force) return 0 @@ -110,4 +110,4 @@ visible_message("[I] bounces harmlessly off of [src].",\ "[I] bounces harmlessly off of [src]!") else - return ..() \ No newline at end of file + return ..() diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index c7de7be5915..992ebfbcf4f 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -20,7 +20,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A simple match stick, used for lighting fine smokables." icon = 'icons/obj/cigarettes.dmi' icon_state = "match_unlit" - var/lit = 0 + var/lit = FALSE + var/burnt = FALSE var/smoketime = 5 w_class = 1 origin_tech = "materials=1" @@ -37,8 +38,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM matchignite() /obj/item/weapon/match/proc/matchignite() - if(lit == 0) - lit = 1 + if(!lit && !burnt) + lit = TRUE icon_state = "match_lit" damtype = "fire" force = 3 @@ -49,31 +50,31 @@ CIGARETTE PACKETS ARE IN FANCY.DM attack_verb = list("burnt","singed") START_PROCESSING(SSobj, src) update_icon() - return /obj/item/weapon/match/proc/matchburnout() - if(lit == 1) - lit = -1 + if(lit) + lit = FALSE + burnt = TRUE damtype = "brute" force = initial(force) icon_state = "match_burnt" item_state = "cigoff" name = "burnt match" desc = "A match. This one has seen better days." - attack_verb = null + attack_verb = list("flicked") STOP_PROCESSING(SSobj, src) /obj/item/weapon/match/dropped(mob/user) matchburnout() - return ..() + . = ..() /obj/item/weapon/match/attack(mob/living/carbon/M, mob/living/carbon/user) if(!isliving(M)) return - if(M.IgniteMob()) + if(lit && M.IgniteMob()) message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") log_game("[key_name(user)] set [key_name(M)] on fire") - var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M,user) + var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == "help") if(cig.lit) user << "The [cig.name] is already lit." @@ -84,12 +85,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM else ..() -/obj/item/proc/help_light_cig(mob/living/carbon/M, mob/living/carbon/user) - if(!iscarbon(M)) - return - if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette)) - var/obj/item/clothing/mask/cigarette/cig = M.wear_mask - return cig +/obj/item/proc/help_light_cig(mob/living/M) + var/mask_item = M.get_item_by_slot(slot_wear_mask) + if(istype(mask_item, /obj/item/clothing/mask/cigarette)) + return mask_item /obj/item/weapon/match/is_hot() return lit * heat @@ -120,7 +119,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/New() ..() - create_reagents(chem_volume) // making the cigarette a chemical holder with a maximum volume of 15 + create_reagents(chem_volume) reagents.set_reacting(FALSE) // so it doesn't react until you light it reagents.add_reagent("nicotine", 15) @@ -229,17 +228,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM handle_reagents() /obj/item/clothing/mask/cigarette/attack_self(mob/user) - if(lit == 1) + if(lit) user.visible_message("[user] calmly drops and treads on \the [src], putting it out instantly.") new type_butt(user.loc) new /obj/effect/decal/cleanable/ash(user.loc) qdel(src) - return ..() + . = ..() /obj/item/clothing/mask/cigarette/attack(mob/living/carbon/M, mob/living/carbon/user) if(!istype(M)) return ..() - var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M,user) + var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == "help") if(cig.lit) user << "The [cig.name] is already lit." @@ -277,7 +276,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM ..() reagents.add_reagent("mushroomhallucinogen", 50) light() - //for(var/mob/M in player_list) M << 'sound/misc/Smoke_Weed_Everyday.ogg' /obj/item/weapon/cigbutt/roach @@ -507,14 +505,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.AddLuminosity(-1) STOP_PROCESSING(SSobj, src) else - return ..() - return + . = ..() /obj/item/weapon/lighter/attack(mob/living/carbon/M, mob/living/carbon/user) if(lit && M.IgniteMob()) message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") log_game("[key_name(user)] set [key_name(M)] on fire") - var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M,user) + var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == "help") if(cig.lit) user << "The [cig.name] is already lit."