From 586bf3320fe5cb51d3341eeb028ab7a939db14a2 Mon Sep 17 00:00:00 2001 From: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Tue, 12 Aug 2025 08:59:44 -0700 Subject: [PATCH] Adds a Smoke buildmode (#29987) --- code/modules/buildmode/submodes/smoke.dm | 44 +++++++++++++++++++++++ icons/misc/buildmode.dmi | Bin 5271 -> 2445 bytes paradise.dme | 1 + 3 files changed, 45 insertions(+) create mode 100644 code/modules/buildmode/submodes/smoke.dm diff --git a/code/modules/buildmode/submodes/smoke.dm b/code/modules/buildmode/submodes/smoke.dm new file mode 100644 index 00000000000..1296990d2da --- /dev/null +++ b/code/modules/buildmode/submodes/smoke.dm @@ -0,0 +1,44 @@ +/datum/buildmode_mode/smoke + key = "smoke" + var/smoke_type = SMOKE_HARMLESS + var/smoke_amt = 10 + +/datum/buildmode_mode/smoke/show_help(mob/user) + var/list/messages = list( + "Left Click = Smoke 'em!", + "Right Click on Tool Icon = Change Effect Type", + ) + to_chat(user, chat_box_notice(messages.Join("
"))) + +/datum/buildmode_mode/smoke/change_settings(mob/user) + var/smoke_types = list( + "SMOKE_HARMLESS" = SMOKE_HARMLESS, + "SMOKE_COUGHING" = SMOKE_COUGHING, + "SMOKE_SLEEPING" = SMOKE_SLEEPING + ) + + var/new_smonk = tgui_input_list(user, "Pick a smoke type:", "Buildmode Smoke", smoke_types) + if(new_smonk in smoke_types) + smoke_type = smoke_types[new_smonk] + + var/new_smonk_amt = tgui_input_number(user, "Smoke Amount:", "Buildmode Smoke", smoke_amt, 20, 1) + if(new_smonk_amt) + smoke_amt = new_smonk_amt + + +/datum/buildmode_mode/smoke/handle_click(user, params, obj/object) + var/list/pa = params2list(params) + var/left_click = pa.Find("left") + + if(left_click) + var/datum/effect_system/smoke_spread/smoke + switch(smoke_type) + if(SMOKE_HARMLESS) + smoke = new /datum/effect_system/smoke_spread() + if(SMOKE_COUGHING) + smoke = new /datum/effect_system/smoke_spread/bad() + if(SMOKE_SLEEPING) + smoke = new /datum/effect_system/smoke_spread/sleeping() + smoke.set_up(smoke_amt, FALSE, object) + playsound(get_turf(object), 'sound/effects/smoke.ogg', 50, TRUE, -3) + smoke.start() diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi index a0b501864fad334dff36497af6c40bc26afd6d92..c82b9ea057940c32cd11dacaf96a99647d9232c1 100644 GIT binary patch delta 2410 zcmV-w36=JjDUB158CU}V003?FlWzb305ecbR7C&)00tos1u_!@RUHL877JY^08kkK zNEc?z00k%x127Q-APfLV6#!Kn13D81T_gZd7hvVKP5=M^0d!JMQvg8b*k%9#0Q`|9 zCw~+fnky8vMMp#=QH9zJ4PeQVEPosS z1w(JVmL)mC6n(aAj^W48TeAH8k=B2V*Z)bD+u8Ny1mfqnRd8zkc>=dzQ>6U5Eft(w zUrylTV>Zjj$5ug!4$!uLT8Fg=eK~>H2~N{iL4m&1-?D#7r>gxikboV4=P9}fWa~0Q z<@={};0lo5nZP6f^dtaM0o3~vkbixkCjqRM>W6C)fKY?!LIixJtbVu<0RzDL;q?gc zBzGYKSm#zb9RkJ@0Iq}i71V+D5HDZ^0bqr-aq+1|0M>u5e)pz|z+Qy+byg_Cyx0U_ z{pad;Z>k8iw((X1TO}_fu(v;}skjfggZsgF1c5r;$DSdo8wXxB*GcOppntk?U@!rG z{3{W#5J25*bPRz>4aWGvbqE9u0QE8gI#VArcUh;N#9g;d78edeo5~KP6 z9zAFQtFdJVV4l%fIC<|+KO2c{|Gl4X6l3_!lel{BM-@EBn2$imF34cYlc@c{l0nD8c1Y-VsFFk|6 z8h&%O>r4p$MRDj8|Xfe@ZbCB>*sDuUxWxDgTV3$)_>uCXO@Lh{(BF7 zLPjuoTG2jY^nnDyl|agW@1fI2z`g~MEM;Y(NZ|yc{(BF-gg~k5fdr!ddk?*UKw>2J zU%+3BfD2AE!c}?!0eddw>ZaX6Idduhy@!smXSpa&K(%o{4lsb=M|w35g#LRMJ<*2q z2vFDJgR(gi^I&B8^M6@-q!bbW9{vb{(0}iuHxpRH4+tV8knrF8=&b~RO@WLoG_l;k zlSGa`pQ+~(DAwtUOvMm%gj)4X0>!$&CKink!U(kLc@eI=CQkY9{q!(^hF*Nvqg)@@ zTY+iS_X!m1@AZMv`t{A-@%DJ5{^|p?E}-o1Ke!3}AJzx{O@Ha%Y<)nMgID6~^xk(Z z*6DHvv=s=hC&HWRXf~Sg-(NkO^z(gLaK2Cb`%7)%8{rjM;Qpfbcnl%X41(ixojZ4Q zO&oK74HeOJWE}S{w zI=K=t|Gis;y?c6u#3P3MZ8+EyB`^xqPlrQ8yixZ&0dlZ51 z1gy;Znm8RnPla5{Nw!h&QKo3CECM3@Awkf~l!^d|!U^oRVd@v;j_EcE2nlAJfaqs- zA7bs>AONapR|04=g>7^>V-~)00y~6R8#i) z0^ZYrSRVj#K@TKgtWu`y*96)lyh}iYFN`p2-{JZ|qW+VN1DIjNE!Z{Vz&vamfHndw z`+wKE&y9L3fh`C;4b3V`;2`bg3g?YB>;Ezf@mya{z~`RW3e3coZesp^GQw=E$2Eu! z1ak?@_-Qo(KGwU&-g7Rb2H}7JeQFaxW1k0E5ny8}Efn-4uorwlFI2(uLUWPZRn(u)8eCuq)dAp+y{w<|GP zf3FXW)~|2wj<&~}?e*3Qe&1#Jly85ZetqEnCt2>NUmtj$z&%>F6KJac+91jUtik^oO>jG{*5sJkH>ZbP4#EaM$r}m_9AaKxDc=bJbw{5 z0;&Bw%|_i!UfkGrEdn#Mr>*-&Pfq~7NoOqN-@Se|0rS5XS~-f&=x!a zGMvbN0`rcnMgsmJfWj;U&uGIZ-)_H1KrFs_!pau{DV7n)h=4bC#2r&BfhGK6yZs^o zvHa-`KIsby<4!qy)HBIc+Bn`yTz?5=t(6m?8>4BpOxI7bSI!k57s_z?Ok_`#{*oT>X>;`7=6fFAuXH zfyaYdKCpM`J`iRh;1uNXQHl{jSCb_o9U+hbh!WUdlxHC^36KQ%=mfN2EPn{N=QhOY z={9N;@&q2NCuC)z31lCDDNZ1Id?LVSLdFvu(LRzj63b_A{8C&0k(f4DoeRB)KtqHp z2;i`HMFK9t&Q=yWH-Y*HoPxmHl^9H*$)8`0tymvGW2>e9J^edai*4rWaC5h}y{^j3 c?e+fvmDNq+=#{N3Df=7Qs+lMw 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 diff --git a/paradise.dme b/paradise.dme index c09d8b9510e..d1b37be4498 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1871,6 +1871,7 @@ #include "code\modules\buildmode\submodes\portal.dm" #include "code\modules\buildmode\submodes\save.dm" #include "code\modules\buildmode\submodes\say.dm" +#include "code\modules\buildmode\submodes\smoke.dm" #include "code\modules\buildmode\submodes\throwing.dm" #include "code\modules\buildmode\submodes\tilt.dm" #include "code\modules\buildmode\submodes\variable_edit.dm"