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