From e6f18636ed122044a426314e5bfbab8990e5d4f7 Mon Sep 17 00:00:00 2001 From: lectronyx <78713019+lectronyx@users.noreply.github.com> Date: Sat, 19 Oct 2024 03:22:55 -0400 Subject: [PATCH] Radio sprites updated, new emotes, wallet fix, poster fix holy shit i forgot to commit --- code/__DEFINES/dcs/signals.dm | 3 + code/game/objects/effects/contraband.dm | 2 +- code/game/objects/items/cards_ids.dm | 3 + code/game/objects/items/storage/wallets.dm | 8 +- code/modules/jobs/access.dm | 9 +- code/modules/jobs/job_types/_job.dm | 1 + code/modules/mob/living/emote.dm | 146 +++++++++++++++++++++ code/modules/mob/living/living.dm | 4 +- icons/obj/radio.dmi | Bin 12521 -> 12768 bytes sound/effects/Nose_boop.ogg | Bin 0 -> 27095 bytes sound/effects/boop.ogg | Bin 0 -> 16245 bytes sound/misc/claponce1.ogg | Bin 0 -> 7299 bytes sound/misc/claponce2.ogg | Bin 0 -> 11036 bytes sound/misc/fingersnap1.ogg | Bin 0 -> 7050 bytes sound/misc/fingersnap2.ogg | Bin 0 -> 6004 bytes sound/misc/snap2.ogg | Bin 0 -> 13617 bytes sound/misc/snap3.ogg | Bin 0 -> 18541 bytes 17 files changed, 167 insertions(+), 9 deletions(-) create mode 100644 sound/effects/Nose_boop.ogg create mode 100644 sound/effects/boop.ogg create mode 100644 sound/misc/claponce1.ogg create mode 100644 sound/misc/claponce2.ogg create mode 100644 sound/misc/fingersnap1.ogg create mode 100644 sound/misc/fingersnap2.ogg create mode 100644 sound/misc/snap2.ogg create mode 100644 sound/misc/snap3.ogg diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 97049254cc1..3d962eacf3b 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -789,3 +789,6 @@ ///called when an elzu should unroot #define COMSIG_DIGOUT "dig_out" + +///sent when the access on an id is changed/updated, ensures wallets get updated once ids generate there access +#define COSMIG_ACCESS_UPDATED "acces_updated" \ No newline at end of file diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm index 372df8dc910..f9d098d24fa 100644 --- a/code/game/objects/effects/contraband.dm +++ b/code/game/objects/effects/contraband.dm @@ -386,7 +386,7 @@ icon_state = "poster_dday" // human sprite by quin /obj/structure/sign/poster/contraband/roseusfilm1 - name = "D-Day Promo" + name = "The Last One Out desc = "A movie poster for The Last One Out, a movie about how a cruise ship captain helped evacuate a research facility being attacked by its corporate overlords after being falsely accused of trying to revolt. One of Roseus Galactic's more popular films during the ICW." icon_state = "poster-roseus-thelastoneout" //edited dday promo sprite! diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index ae7aa27cdc3..fb79cc447ab 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -165,6 +165,7 @@ . = ..() if(mapload && access_txt) access = text2access(access_txt) + SEND_SIGNAL(src, COSMIG_ACCESS_UPDATED) update_label() update_appearance() RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, PROC_REF(update_in_wallet)) @@ -259,11 +260,13 @@ /obj/item/card/id/proc/add_ship_access(datum/overmap/ship/controlled/ship) if (ship) ship_access += ship + SEND_SIGNAL(src, COSMIG_ACCESS_UPDATED) // Removes the referenced ship from the card /obj/item/card/id/proc/remove_ship_access(datum/overmap/ship/controlled/ship) if (ship) ship_access -= ship + SEND_SIGNAL(src, COSMIG_ACCESS_UPDATED) // Finds the referenced ship in the list /obj/item/card/id/proc/has_ship_access(datum/overmap/ship/controlled/ship) diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index c031e998cdc..002b7263329 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -42,9 +42,10 @@ /obj/item/storage/wallet/Exited(atom/movable/AM) . = ..() - refreshID() + UnregisterSignal(AM, COSMIG_ACCESS_UPDATED) + refresh_id() -/obj/item/storage/wallet/proc/refreshID() +/obj/item/storage/wallet/proc/refresh_id() LAZYCLEARLIST(combined_access) if(!(front_id in src)) front_id = null @@ -61,7 +62,8 @@ /obj/item/storage/wallet/Entered(atom/movable/AM) . = ..() - refreshID() + RegisterSignal(AM, COSMIG_ACCESS_UPDATED, PROC_REF(refresh_id)) + refresh_id() /obj/item/storage/wallet/update_overlays() . = ..() diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 122cb7ce28b..39eb0874987 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -117,10 +117,11 @@ if (gen_ship_access(ship)) return TRUE - if(istype(item, /obj/item/card/id)) - var/obj/item/card/id/id = item.GetID() - if (id.has_ship_access(ship)) - return TRUE + if(!item) + return FALSE + var/obj/item/card/id/id = item?.GetID() + if (id?.has_ship_access(ship)) + return TRUE return FALSE diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index f850eded96d..ee953b0fb74 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -273,6 +273,7 @@ var/obj/item/card/id/C = H.get_idcard(TRUE) if(istype(C)) C.access = J.get_access() + SEND_SIGNAL(C, COSMIG_ACCESS_UPDATED) shuffle_inplace(C.access) // Shuffle access list to make NTNet passkeys less predictable C.registered_name = H.real_name if(H.job) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 56ae0db795e..f4042464f98 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -232,6 +232,16 @@ message = "jumps!" hands_use_check = TRUE +/datum/emote/living/jump/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_y = user.pixel_y + 4, time = 0.1 SECONDS) + animate(pixel_y = user.pixel_y - 4, time = 0.1 SECONDS) + +/datum/emote/living/jump/get_sound(mob/living/user) + return 'sound/weapons/thudswoosh.ogg' + /datum/emote/living/kiss key = "kiss" key_third_person = "kisses" @@ -361,6 +371,18 @@ message = "shivers." emote_type = EMOTE_AUDIBLE +#define SHIVER_LOOP_DURATION (1 SECONDS) +/datum/emote/living/shiver/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + for(var/i in 1 to SHIVER_LOOP_DURATION / (0.2 SECONDS)) //desired total duration divided by the iteration duration to give the necessary iteration count + animate(pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) +#undef SHIVER_LOOP_DURATION + /datum/emote/living/sigh key = "sigh" key_third_person = "sighs" @@ -460,20 +482,62 @@ key_third_person = "sways" message = "sways around dizzily." +/datum/emote/living/sway/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x + 2, time = 0.5 SECONDS) + for(var/i in 1 to 2) + animate(pixel_x = user.pixel_x - 4, time = 1.0 SECONDS) + animate(pixel_x = user.pixel_x + 4, time = 1.0 SECONDS) + animate(pixel_x = user.pixel_x - 2, time = 0.5 SECONDS) + /datum/emote/living/tremble key = "tremble" key_third_person = "trembles" message = "trembles in fear!" +#define TREMBLE_LOOP_DURATION (4.4 SECONDS) +/datum/emote/living/tremble/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x + 2, time = 0.2 SECONDS) + for(var/i in 1 to TREMBLE_LOOP_DURATION / (0.4 SECONDS)) //desired total duration divided by the iteration duration to give the necessary iteration count + animate(pixel_x = user.pixel_x - 2, time = 0.2 SECONDS) + animate(pixel_x = user.pixel_x + 2, time = 0.2 SECONDS) + animate(pixel_x = user.pixel_x - 2, time = 0.2 SECONDS) +#undef TREMBLE_LOOP_DURATION + /datum/emote/living/twitch key = "twitch" key_third_person = "twitches" message = "twitches violently." +/datum/emote/living/twitch/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + animate(time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + /datum/emote/living/twitch_s key = "twitch_s" message = "twitches." +/datum/emote/living/twitch_s/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + animate(user, pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + animate(time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x - 1, time = 0.1 SECONDS) + animate(pixel_x = user.pixel_x + 1, time = 0.1 SECONDS) + /datum/emote/living/wave key = "wave" key_third_person = "waves" @@ -603,3 +667,85 @@ key_third_person = "clacks" message = "clacks their beak." emote_type = EMOTE_VISIBLE + +/datum/emote/living/tilt + key = "tilt" + key_third_person = "tilts" + message = "tilts their head to the side." + +/datum/emote/living/carbon/snap + key = "snap" + key_third_person = "snaps" + message = "snaps their fingers." + message_param = "snaps their fingers at %t." + emote_type = EMOTE_AUDIBLE + hands_use_check = TRUE + muzzle_ignore = TRUE + +/datum/emote/living/carbon/snap/get_sound(mob/living/user) + if(ishuman(user)) + if(!user.get_bodypart(BODY_ZONE_L_ARM) || !user.get_bodypart(BODY_ZONE_R_ARM)) + return + else + return pick('sound/misc/fingersnap1.ogg', + 'sound/misc/fingersnap2.ogg') + +/datum/emote/living/snap2 + key = "snap2" + key_third_person = "snaps twice" + message = "snaps twice." + message_param = "snaps twice at %t." + emote_type = EMOTE_AUDIBLE + muzzle_ignore = TRUE + hands_use_check = TRUE + vary = TRUE + sound = 'sound/misc/snap2.ogg' + +/datum/emote/living/snap3 + key = "snap3" + key_third_person = "snaps thrice" + message = "snaps thrice." + message_param = "snaps thrice at %t." + emote_type = EMOTE_AUDIBLE + muzzle_ignore = TRUE + hands_use_check = TRUE + vary = TRUE + sound = 'sound/misc/snap3.ogg' + +/datum/emote/living/carbon/clap + key = "clap" + key_third_person = "claps" + message = "claps." + muzzle_ignore = TRUE + hands_use_check = TRUE + emote_type = EMOTE_AUDIBLE + vary = TRUE + +/datum/emote/living/carbon/clap/get_sound(mob/living/user) + if(ishuman(user)) + if(!user.get_bodypart(BODY_ZONE_L_ARM) || !user.get_bodypart(BODY_ZONE_R_ARM)) + return + else + return pick('sound/misc/clap1.ogg', + 'sound/misc/clap2.ogg', + 'sound/misc/clap3.ogg', + 'sound/misc/clap4.ogg') + +/datum/emote/living/clap1 + key = "clap1" + key_third_person = "claps once" + message = "claps once." + emote_type = EMOTE_AUDIBLE + muzzle_ignore = TRUE + hands_use_check = TRUE + vary = TRUE + mob_type_allowed_typecache = list(/mob/living/carbon, /mob/living/silicon/pai) + +/datum/emote/living/clap1/get_sound(mob/living/user) + return pick('sound/misc/claponce1.ogg', + 'sound/misc/claponce2.ogg') + +/datum/emote/living/clap1/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional) + if(user.usable_hands < 2) + return FALSE + return ..() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 269c74a837b..7ffe22bbf1b 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -482,7 +482,9 @@ if(!silent) to_chat(src, "You will now lay down as soon as you are able to.") else - if(!silent) + if(!silent && m_intent == MOVE_INTENT_WALK) + to_chat(src, "You gently lay down.") + else if(!silent) to_chat(src, "You lay down.") set_lying_down() else diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi index d3d1bb2298ce58af004507331c4d40a9d31067a5..bfd0da6cd2be1634591188e5bfb988380cefe0dc 100644 GIT binary patch delta 12141 zcmZvCc|27A_y5?&&LAntj9r9?kQjq^gtDiFMktla9x_~OM#>U}EQ6G-&|(SM_kB$z z>)2(P5e74JzgO?~@BR6FAHVNE&UMatz2?4N_j#VLbI-Yp*C(CgBpGJorSyT0#8XI< z7-lI
Z>i1_YG6zN=zt(7Fwu_ ljXl%}Rm0VD9qNdbX*
z={WkqTp8(uW+ jLR)KmI
zu_Y#X&DRo(K>Y_h%qXY9Fc^B{l63^zojBEgK)jJBDz{_!Z)vcr5_ysq*<9YZl#Aar
zbLP33Nf$VtD#h(7IS3fww6cR97l7f%#puY#H@?5Eqsgem;J7>~Mvzwr%8=(HW?BkZ
z`riBN b
zBSPMD&*R%6Q7PcwI~-_g-NcdAH_^MuAT>A9(i`P7&LzxynijxH#X}teGvI{~K8-+l
z6FR&85(j_{ounGdj}=A;)lG}5*1&r@F08-8)p0}ozwLUXM4Zj2=C6B`N}~$|wp^fl
z9uYrOC1G!xUp;C54~2`5`oI`vO*8*_#Tm&p_jgp_lz@<%qy+~zzmT?-;F7NvXGgB0
z)}1Bpc_DYLXwg|%g&ihngR!u2vUypqd8+*B=%~FV+Gv87#6d$1
z#PkFIUGnj^t@urBLVAI~5yu>waN+}hJj%L+Zt#|z#(niW`8|*d-y|0+4ggYxBx#Y8
zS4jGQ#*6tfOv7K)s!`=NaKFf|cfNWv1X>QGr+zk19d!5&S3Mg2k^Dx)S)6))<5Vc+
z-vjt+QPvk$gsg9oJjgpq1bMd9SaJNJ$qba&w|yE!8@5dGw;Of~q#RD_aU0HDR03j%
zTGwKIQVYA`KkTPT#)(%#yEF1$48|j}wBNk+&mq4zrCM(rdtM^Q%ksRTd@VHOn|@=v
z<2+R1@=gN#aFJ^g85ysbYTmKQn-n&-;r^vSYSXoz#0S;!QPMd&k|7hQ#~b-Zy~QSw
zvfAKqqn;jb%=Wn~wExp$9Q4Y^OdUWIWz2TeffA;eu-GH^P#*UgA`egQ8x;1Fr?k6m
z|FV*j(bRbtY4eTV?4GbDP<&cM3UO_`nN@a=%ee?h`e(0_F8Qq){PE~)_{fm~Q^mON
zK05y7ae)ls#T}JGs!C92=M9XZ1Zh($1SJt({1RMs82jU6+$O#KNJr)zpkFs#i^>qk
zT3p8FtCS-y=CG8o3UxCnia3vUJUXRQSj-rxeKiU3THudUlk2inkyDd0LEgQdZs4KF
zkyp^GXtd4arlKP`LX~g1(66Q88LGN|c*VB>Zv0SQXH`b^Gl_FJI>Pbrlm#pL;UQ@B
z=Iu!?-X}1j+J2>>X>vbMwz&(m&lyn6E2f=2j)gs|ddnIfYhsS6CuQa?0hVc8lX(3!
zfZ!=$70NH`)bwohylD!cp@D1ADm6e-Q!Y*1EmUofr9soUFR%8kjYj5fZ=I8`O262^
zB|gD*=QIuvItkYNO4q|F9F9c3MLkqAwvIK)lMxUqPA8$2IDm6|y;8kSrgf8cfA$`@
z*7$%Xyv-+PtDzGiY}uid!#@jJYTFVHD5jtH+kSeF_jr%ZSsjv|4R&r;HC=pcjFXY_
zP4ONV?qIMt?R7PEzGY64N6k#<>49lqXwdWE(qtd_nMouvjQ6r=Q!u8ZeKT0Pn;`F1
zrP_H1K#pKPgzDhdcvG%`m(TZKp!ifN)}zJo&xzIEPWy0B3F*Vnz~a*gORrLoS|@=j1J~d;`~(IE&-*SEadbT;aV%dUg7@
zWag_;ny_&q)cJlT!)p_+B02`?Qdil4qhln)a+pUFv<`(K{U1Q$uN|#?uayBUMJ?p{
zxef1m{6r%Os*P$@`PSskUS3LPgTkE<7e!e*M*%5U#tiflBt>A?+~5PsaS3Q5sN55w
zD9agBRopIGT!P}o-M(^N?xU(`;2sxu2oHY+xZLXL=Z(!P?X2iL>?zK+knMzX-WZJ5
z?~mzrm#8Xa@<*;!1vdMazg8~7bCqwYACd(}hapZydvdhq*>(p*yJMV>G`YHZrbmqRk
z)>44ipcY+7V@FG0kz0Xw!ULlG`Hv9c)%dd;b#fu>vFg^PWG28nF%|Dp*BE-Bbn9`6
z@Vs2K5`6P+e!;RQS~=}%Vx>;{U&B8*(&e6wzZRsM062H11cq
D_E1Sfu9C{u`;|j
zwWH6%hXC{ICyTg`B1P)cZVm%-;=O2*;+jy?WVP3bh{#Auv(0~RTd$b^b+F}bs2_J3
z>`mCqCT^)D!dZrMFNGL-kixuXw60sQrL_`&H3^ThErm>r8zigYX+k$3w`t?Vtk&x;
zzYCeh%|fjYrEX3DesnLN!@X6$BPsb3E6TD1-$r(ALqh=>WyN-KU0^YsFhnMs5RK@`
z>O^8?vNZL$S!ycwh#|w$M~AoHm%(n(`79A2+6AxK$K7YXAG^k~@-8oL!J3VU+|}J3
zx<|*!
npW4xwkL_3pU
zfyjMY#e+~lS?b-RM=Uay(2lDN#-9uDuk78cRjdCUh#jdt+w~ZZHI3zDlNi1>+WypH
znqAgazZ#xK6-)FMdUDhBFtOD`*5A#?-0#QcVNsR(oONWJ#uC9!=4Je%$jquUY8TJ4nI1RPR3)z
zV9dQ*HfpDp6~s2A5*jM`61>irRX;a#&&d9V+$osTyuT(BmmebAa^n>W9ys@%hs9EN
zAwEjc!$*?K)9&ZVXd(wBUsjzuoy5ea@Vc~2u)0DjILgvJbdSSk-$FY3#foH>QqOtS
z>QaX2W1rNCW}L#vq6!R}bo-?8)9M&K^o7qzj*zU-ItQPnDT^AH-H)Se4qVgdfy-=JY%-
z(QRtuH6@_~uAX=Jf#NOwyBNq_eevy8VpvT}-J1+cCME%r%+^i*%aVJdK&06#$OckljX0p4
zXE+PY@Wk=JZu(qtWpBKbN7je98-i0iZKib-Ed+hbkD#fZz0^SHGbPkjc_gq}#?k>M
z$jez(D##