From 7cdd4ec5e275d13c7a98242e58b6e7c7e06eb6a7 Mon Sep 17 00:00:00 2001
From: "Wowzewow (Wezzy)" <42310821+alsoandanswer@users.noreply.github.com>
Date: Tue, 14 Jul 2020 17:52:14 +0800
Subject: [PATCH] Cigarettes and chewables stay in your mouth/hands when they
go out, and cigs no longer stay lit in storage (#9302)
---
code/game/objects/items/weapons/chewables.dm | 17 ++++--
.../objects/items/weapons/cigs_lighters.dm | 52 +++++++++---------
html/changelogs/wezzy_cigbutts_stay.yml | 42 ++++++++++++++
icons/mob/items/lefthand_cigs_lighters.dmi | Bin 2076 -> 1970 bytes
icons/mob/items/righthand_cigs_lighters.dmi | Bin 1990 -> 1855 bytes
5 files changed, 82 insertions(+), 29 deletions(-)
create mode 100644 html/changelogs/wezzy_cigbutts_stay.yml
diff --git a/code/game/objects/items/weapons/chewables.dm b/code/game/objects/items/weapons/chewables.dm
index a9699dea89a..e80c91b609a 100644
--- a/code/game/objects/items/weapons/chewables.dm
+++ b/code/game/objects/items/weapons/chewables.dm
@@ -87,16 +87,25 @@ obj/item/clothing/mask/chewable/Destroy()
/obj/item/clothing/mask/chewable/proc/spitout(var/mob/user, var/no_message)
STOP_PROCESSING(SSprocessing, src)
- if (type_butt)
- var/obj/item/butt = new type_butt(get_turf(src))
+ if(type_butt)
+ var/obj/item/butt = new type_butt(user)
transfer_fingerprints_to(butt)
butt.color = color
if(brand)
butt.desc += " This one is \a [brand]."
if(ismob(loc))
var/mob/living/M = loc
- if (!no_message)
- to_chat(M, SPAN_NOTICE("You spit out the [name]."))
+ if(!no_message)
+ to_chat(M, SPAN_NOTICE("The [name] runs out of flavor."))
+ if(M.wear_mask)
+ M.remove_from_mob(src) //un-equip it so the overlays can update
+ M.update_inv_wear_mask(0)
+ M.equip_to_slot_if_possible(butt, slot_wear_mask)
+ else
+ M.remove_from_mob(src) // if it gets blocked somehow, since chewables shouldn't be processing outside the mask slot.
+ M.update_inv_l_hand(0)
+ M.update_inv_r_hand(1)
+ M.put_in_hands(butt)
qdel(src)
/obj/item/clothing/mask/chewable/tobacco/bad
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index cb26eccdf3e..a8a2d3f27cc 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -56,7 +56,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
attack_verb = list("flicked")
drop_sound = 'sound/items/cigs_lighters/cig_snuff.ogg'
pickup_sound = 'sound/items/pickup/food.ogg'
-
+
/obj/item/trash/match/Initialize()
. = ..()
randpixel_xy()
@@ -173,8 +173,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15
/obj/item/clothing/mask/smokable/process()
-
- if(reagents && reagents.total_volume && burn_rate)
+ if(reagents && reagents.total_volume && burn_rate && !istype(loc, /obj/item/storage))
if(!initial_volume)
initial_volume = reagents.total_volume
var/mob/living/carbon/human/C = loc
@@ -225,28 +224,33 @@ CIGARETTE PACKETS ARE IN FANCY.DM
set_light(2, 0.25, "#E38F46")
START_PROCESSING(SSprocessing, src)
-/obj/item/clothing/mask/smokable/proc/die(var/nomessage = FALSE)
+/obj/item/clothing/mask/smokable/proc/die(var/no_message = 0, var/mob/living/M)
var/turf/T = get_turf(src)
set_light(0)
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
- if (type_butt)
- var/obj/item/butt = new type_butt(T)
+ if(type_butt)
+ var/obj/item/butt = new type_butt(src.loc)
transfer_fingerprints_to(butt)
if(ismob(loc))
- var/mob/living/M = loc
- if (!nomessage)
+ M = loc
+ if(!no_message)
to_chat(M, SPAN_NOTICE("Your [name] goes out."))
- M.remove_from_mob(src) //un-equip it so the overlays can update
- M.update_inv_wear_mask(0)
- M.update_inv_l_hand(0)
- M.update_inv_r_hand(1)
+ if(M.wear_mask)
+ M.remove_from_mob(src) //un-equip it so the overlays can update
+ M.update_inv_wear_mask(0)
+ M.equip_to_slot_if_possible(butt, slot_wear_mask)
+ else
+ M.remove_from_mob(src) // if it dies in your hand.
+ M.update_inv_l_hand(0)
+ M.update_inv_r_hand(1)
+ M.put_in_hands(butt)
STOP_PROCESSING(SSprocessing, src)
qdel(src)
else
new /obj/effect/decal/cleanable/ash(T)
if(ismob(loc))
- var/mob/living/M = loc
- if (!nomessage)
+ M = loc
+ if(!no_message)
to_chat(M, SPAN_NOTICE("Your [name] goes out, and you empty the ash."))
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
lit = 0
@@ -287,7 +291,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "cigoff"
throw_speed = 0.5
item_state = "cigoff"
- w_class = 1
+ w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS | SLOT_MASK
attack_verb = list("burnt", "singed")
icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
@@ -306,15 +310,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
reagents.add_reagent(/datum/reagent/toxin/tobacco,10)
reagents.add_reagent(/datum/reagent/mental/nicotine,5) // 2/3 ratio, Adds 0.03 units per second
-
/obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/W as obj, mob/user as mob)
..()
-
if(istype(W, /obj/item/melee/energy/sword))
var/obj/item/melee/energy/sword/S = W
if(S.active)
light(SPAN_WARNING("[user] swings their [W], barely missing themselves. They light their [name] in the process."))
-
return
/obj/item/clothing/mask/smokable/cigarette/attack(mob/living/carbon/human/H, mob/user, def_zone)
@@ -481,10 +482,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon = 'icons/obj/clothing/masks.dmi'
icon_state = "cigbutt"
randpixel = 10
- w_class = 1
- slot_flags = SLOT_EARS
+ w_class = ITEMSIZE_TINY
+ slot_flags = SLOT_EARS | SLOT_MASK
throwforce = 1
drop_sound = 'sound/items/cigs_lighters/cig_snuff.ogg'
+ pickup_sound = 'sound/items/pickup/food.ogg'
/obj/item/trash/cigbutt/Initialize()
. = ..()
@@ -535,7 +537,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_on = "pipeon" //Note - these are in masks.dmi
icon_off = "pipeoff"
burn_rate = 0.003
- w_class = 1
+ w_class = ITEMSIZE_TINY
chem_volume = 30
matchmes = "USER lights their NAME with their FLAME."
lightermes = "USER manages to light their NAME with FLAME."
@@ -641,7 +643,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
slot_l_hand_str = 'icons/mob/items/lefthand_cigs_lighters.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_cigs_lighters.dmi',
)
- w_class = 1
+ w_class = ITEMSIZE_TINY
throwforce = 4
flags = CONDUCT
slot_flags = SLOT_BELT
@@ -802,7 +804,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
desc = "A thin piece of paper used to make smokables."
icon = 'icons/obj/cigs_lighters.dmi'
icon_state = "cigpaper_generic"
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
/obj/item/paper/cig/attackby(obj/item/P as obj, mob/user as mob)
if(istype(P, /obj/item/flame) || P.iswelder())
@@ -821,7 +823,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "cigarette filter"
desc = "A small nub like filter for cigarettes."
icon_state = "cigfilter"
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
/obj/item/paper/cig/filter/attackby(obj/item/P as obj, mob/user as mob)
if(istype(P, /obj/item/flame) || P.iswelder())
@@ -840,7 +842,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
//tobacco sold seperately if you're too snobby to grow it yourself.
/obj/item/reagent_containers/food/snacks/grown/dried_tobacco
plantname = "tobacco"
- w_class = 1.0
+ w_class = ITEMSIZE_TINY
/obj/item/reagent_containers/food/snacks/grown/dried_tobacco/Initialize()
. = ..()
diff --git a/html/changelogs/wezzy_cigbutts_stay.yml b/html/changelogs/wezzy_cigbutts_stay.yml
new file mode 100644
index 00000000000..e139126d87b
--- /dev/null
+++ b/html/changelogs/wezzy_cigbutts_stay.yml
@@ -0,0 +1,42 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: Wowzewow (Wezzy)
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Cigarettes and chewables stay in your mouth/hands when they go out."
+ - rscadd: "Cigarettes no longer stay lit in storage containers."
diff --git a/icons/mob/items/lefthand_cigs_lighters.dmi b/icons/mob/items/lefthand_cigs_lighters.dmi
index b7bf2edc92adaedb99d7a8c4edccf7e1539ab459..68e92071c51f1a5eff606a4c62b3623488566eb1 100644
GIT binary patch
literal 1970
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
I-UgTQ2gNDNCjbBd
diff --git a/icons/mob/items/righthand_cigs_lighters.dmi b/icons/mob/items/righthand_cigs_lighters.dmi
index 17989ce70dca4320c67f8067526006232341f205..01db9a0d8a64a20f13ecedeaf05f93d8381783c3 100644
GIT binary patch
literal 1855
zcmZXTe^k=v9>>4t{IO86qtz`nqPp8PT^4hZDacZ1ZWA3gr#8b(Ei)yTfFcEzKhEl$
zqD`wiM0BQfbBY=&nD}M7O3OqCX-cT<`r{UYh5`Ws7rQ&>+WP$QJnwU!_w#wZKhHVO
z_p#VW*R`A10s!C|bub(U0BdY=4d85V+j{DD^xC$<*e?%7h(sa^g)%xiiosxnLXgYl
zhBBy$@xqjplo#Birt!ik4kP|%e?dWku`QPEiyg!6D=#m%J_DZdfPMf_SAHY?2O#|n
zkmdu@TEO}uF4W)OYPDXvbSddm-yUMJwHRXMV`>3_1_1sU-&`4~RegU1WCNwWiVJ1i
zDs3_B@^IKV05kI}!=~YsLkW4|>1U38mw7rblaK=d`4tW2L)eSEJxjPU&Q@8&<_O_Z
zD&z!7apYI;D$I7jDIR}PA{%&-x=kTY;Ab-Dm#sHSM2I9#05iL+GiRzawf?XNDgugZ
z$ITHHCqcp0+S}!gC-uVSD;1i@5smd%H00?GIM1K5|5o;M+StFEx`MCyF%Dm>Abc>;
zcP9#A=Ml#!bQJgqI?pMiYrZ0tQI|M(s^KolJ}}<|RjaQB@`$o`aD7|)`$sbxZ$SGf
zPC>b{z^V~DmTChoHYhdr$;BJ|z|`mdB~Sl=2<|f~YR7T4?)PAMZR2~KH705DNUHQ^
z!gAzXptOik_lNQ%!g3>|{et4s5c15ORJvcu89xMno4w!luR5aLLfZqX4r>b~&4S+n
zz#$?k{L@4E6)L$5w;k!}5L@-|yq$Ln|Fxrw{f;RsxSQ1vDVBf4$`QP$OS-zVx!r^#
zX-)?^IoTe4rA|qXW-UFKb4N3KYT^fal(L&X-5d#(`DNE9+mRWirxqf!mWDCCkq;Y&
z4%@?FEZ%1X*COhYnWsHF^JuuLMr{BH%3Z69}zKf?XF4|O`WNu^1ejixNj5vN6
zvM}+W8Sdp1jX+|rtS$Nl5<*`CSDwVvOp7e7$DrEFr^P_fFFV|pPgtnO&5UT@r_}X=sdrPBE>tsQmraJ#G@}Fz)evixsnZ$W(>~n-wdS$}uZ)rB8N^mD*danQ!D-1)
zl%PQ9sse?=_ZwEe$*OAdQg<)DAXjV468W@v9&L-7y-|fPGHt9Tu5ztNQV$}8-R082
z35;$6GY=?z>rJLXi^=r$3Doqi=b*v+LgTwv{6pAiWddw38x7TqFY5xj&6fu$j}R;N
zl6UR*!>&E4E+fY)46py+wR+Y=ie}rrorcamx}`FPP5uSSjCqq*Tb9nJZAyx%FGT-k
zLIB_M^3@)m^;Pcrq!{1hwE#A$8z0-YNrLFI9+;xQ|{RB!?
z-8&QeD7aoSsb!NY#DmRlZ~H|#e2ADsu#jKg8;;9RSQ3XU1$^2O9&Md^ejmH~n9tjG
zy1dCn%n1lnWpOs(#j}#*KFXdM$*jUsFl33~
z)7B-$B$n9hJ#X8aBy}>kC{L++f-I@YF7?);&ySheqMxE#)7%~Mk!89En%rIYA^cS5qEO-$9SCbsNdeFHx=10@$?2mVB?-b>e$Oo@2Otj@$
z*#x&34XMk;IVh;J06RUS(~r{!EO|L{i&1Z#ZtXJx$L$aNG*Wrh49+swm|5^ASuY)>
z>d<^a?;Pmu{`SBwl*;yca1o%&iT5#vTf53>$+wa4NvDm!?GC-QyA(*RLb##
zXRcL>xiZ><=K3fNwe?oP7woICRp7@q0n%G%C0TmB^*@Cz^GG-6K4-2Re-crCRs)?e
zvk%3_ub_gkHfB3$J28a*Ip!vXY23y_nH;^L&b|hK!~=~~WA2O=3JIFOmu+16EA(Vt
Y09XF))J~@3k1N!u2yA%cfs_mX1*BzWoB#j-
literal 1990
zcmZ`)4K&;59{yw1(rTP_J#;Ra&aUa)ro^p}Dw&{cEvXjOs%WWFEk=a+h^)7gX)n?m
z?$C;`$n0D7Jtu08;uiQ4Epv;Y9`akcnBJtSj}pLT0$X-P^-;&Qnt6soBSWHOn~
z)RX|frr_Y{{R0%7ejhUaCMo0|&_1H+Gi9srQs^XGgHaNGe-
zBETsFpt)1dmX;6%o&D0{Y5aL8eJ50pDg%Ht0I&@6&l)NNive*)5QR0V<~`TS0M#-y
za6VqA0F+=jOg-O`bova=^-^3&Y(xw$B035H5{t?>ty$L(>60drsW;u34^QG@$;&j2
z%`H9P@n4`F|{hF5-OY~)x4_+PUX%SASt$o{qosFaRMjtn6YqodfeMR^^
z)hLJZQ$hhEr!$`(6S6{0SQ_zL9&Dl3W!2rR(tSq^s9OxC!pz+G)TpWoQWoi8CVvUCr>Xw^m?WNf_
zEz=Ce-}%Bw>NE7&wA$Bek^C0kb_RZZb?WO^lv%N`=r_}A
zn$fiCg?0^<0o5+le*(#R2W$bCXV7Q=9jp3ZQGbk!2+W64KQZwxPvz3+fym%~gU?GL
zvDsae1;!Yn{nquQJn60WOatMkySTm$_sGR7eAEC8GofeGrqA1p0|U+Aw0oIqi31C=
zfS@4qDmLgKT7>qSRQiS+Z{Y$+4%KZcYky-AL1jHOsT7@*Mz_grOWv4@V%8lVIfYh=
zwr_<@q)x9kb0o5gv1pD>tCFr$1>=s6lUMoUQ7)pb!2qX5SJwSVHjAr*J<%1`$rRH9
zEJZq^$c)`!5+C(CFG3GaD&zfjzXv76CS$M2M&409(h)}g|MbHtgKzz+RphFZHJVtw
zmu%&&=(>ur#ZwLZ@VEp6URpw(PSwWKv8iD?4vZrD$3yySou&^I@yD4tg=xm@=tYCB
zUQkD^|MU1NSO7&TO}f7cwy|L4j3|5>_;ftzEhd)sdLDv8_ndvtK3bM&Q@I!BES9MF
z-iJ%#x5feUXVMjyc*$3P9i#-NtIdv&l`@~o#VVI4a@$Ges!3V(#sL$9vOn4kU6LE0
z7>{F3hu@e>3C{7H*O})I+J`ncJ(o{w6?zLYjF4nAn6UrjDLsz88Nsf2@R%LyNfV-0
zaqWss!I9V|S;41_U)r}9ANp%vQYx~`pd$&yt7@bcNO);;X#(ry;-1R8-X*eY`SJ?z
z0v%6miM?+htxD`O)p@$ueaAc`5GA9+oA`5S@&Sd_N&|TmHsfpw1L^6GVY}o>^(lr0
zg$4X%(h(^|m?s#Lr~vu
zb+_kK0bzC>Dy5l(E?@pr2b8@2jPS>5WeNHXxEr=>pHxE2WMz&ov%Z*>N`P!27RSprajpAQ0bMlyc#(=tZ;t%TLr7@t_nDSp8Q|-zC
zwSdHWe)wBcmX}nBUgj9$)RDAR|3Ag3O=-ZYPhv&Sk!@%#&{8twwTequgmCk5u+j9F
z=8k4(`DRn7^G@}}VMY+>e8ylW(Uar+H
H!Pox_$sMFs