From e1805e04d43bc7c8cb240ebc1d1271fa229bcc62 Mon Sep 17 00:00:00 2001 From: brainfood1183 <113240905+brainfood1183@users.noreply.github.com> Date: Thu, 15 Feb 2024 00:52:24 +0000 Subject: [PATCH] Add French accent beret (#21430) --- .../Components/FrenchAccentComponent.cs | 11 +++++ .../EntitySystems/FrenchAccentSystem.cs | 45 ++++++++++++++++++ .../VendingMachines/Inventories/theater.yml | 1 + .../Entities/Clothing/Head/hats.yml | 17 +++++++ .../Prototypes/Roles/Jobs/Civilian/mime.yml | 1 + .../Hats/beret_french.rsi/equipped-HELMET.png | Bin 0 -> 16970 bytes .../Head/Hats/beret_french.rsi/icon.png | Bin 0 -> 15283 bytes .../Hats/beret_french.rsi/inhand-left.png | Bin 0 -> 16928 bytes .../Hats/beret_french.rsi/inhand-right.png | Bin 0 -> 16926 bytes .../Head/Hats/beret_french.rsi/meta.json | 26 ++++++++++ 10 files changed, 101 insertions(+) create mode 100644 Content.Server/Speech/Components/FrenchAccentComponent.cs create mode 100644 Content.Server/Speech/EntitySystems/FrenchAccentSystem.cs create mode 100644 Resources/Textures/Clothing/Head/Hats/beret_french.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Hats/beret_french.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Head/Hats/beret_french.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hats/beret_french.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Head/Hats/beret_french.rsi/meta.json diff --git a/Content.Server/Speech/Components/FrenchAccentComponent.cs b/Content.Server/Speech/Components/FrenchAccentComponent.cs new file mode 100644 index 0000000000..f696c35ea0 --- /dev/null +++ b/Content.Server/Speech/Components/FrenchAccentComponent.cs @@ -0,0 +1,11 @@ +using Content.Server.Speech.EntitySystems; + +namespace Content.Server.Speech.Components; + +/// +/// French accent replaces spoken letters. "th" becomes "z" and "H" at the start of a word becomes "'". +/// +[RegisterComponent] +[Access(typeof(FrenchAccentSystem))] +public sealed partial class FrenchAccentComponent : Component +{ } diff --git a/Content.Server/Speech/EntitySystems/FrenchAccentSystem.cs b/Content.Server/Speech/EntitySystems/FrenchAccentSystem.cs new file mode 100644 index 0000000000..5637288732 --- /dev/null +++ b/Content.Server/Speech/EntitySystems/FrenchAccentSystem.cs @@ -0,0 +1,45 @@ +using Content.Server.Speech.Components; +using System.Text.RegularExpressions; + +namespace Content.Server.Speech.EntitySystems; + +/// +/// System that gives the speaker a faux-French accent. +/// +public sealed class FrenchAccentSystem : EntitySystem +{ + [Dependency] private readonly ReplacementAccentSystem _replacement = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAccentGet); + } + + public string Accentuate(string message, FrenchAccentComponent component) + { + var msg = message; + + msg = _replacement.ApplyReplacements(msg, "french"); + + // replaces th with dz + msg = Regex.Replace(msg, @"th", "'z", RegexOptions.IgnoreCase); + + // removes the letter h from the start of words. + msg = Regex.Replace(msg, @"(?a z)G>wOG!5Z~3E@g93piwz-mT}St)KbM z%9-=Hg1$qhU06El$+^cl=N`X!gTMHTU$aYA8w(E2>^N#o#mtQH_9gt@WrK5$d^2Le z!ZEWqjKA6LmTzOvmlr=vvtgb-(Y2J9qu@=VfQVxYo0e`4Y8s zaZmDF%hu(e<+>j{e417@*1x*u)-kv)mQ{3V8DC~E#7V}RMNo_rWQDveTtx&i=Z08< ztOC5k3EZ?VM|pF{Zl!{za+G8AcFfM^gG#!f#t%wrMwXH_Riueh=2|k$Ashzq0-jKW zydEEihjNtRxH$YRG^0vI7{XWODD#AbiZZ)Hk zYCVc+Q7xv@XmK5e>okh!OKHh~zs!Ehg%?|gM$^H+a+H-k&*CT=3qC|N+wrY%>uL-a7@5Yf*})tkMEZ%)G(Xf5sxHH z*G+rb@Py$aq)bkcaXcIFd%{?XM1co*VG<6GTb+^zxJXAbP5Cu(6Ft93bL$VZGwr zEe7CeSHf0JrZ4ogNCP3d1)9(kp@mHx@s=6R!EVQ`3>gp>!)CPz%ZXDANmF?ECz%cO zCbb5ZiJr(-=?D|1G69!Sr8PRKY)or30kz32NYOM*!oJZIHXp|mJ`%tb5S&HB_&VTp znMfm{A}}gjrODO-mD8v!hP9!i0I6~s2)HbIOb=X6jX|T;#1e?;E$84E7at`2AkPggW*G(z zrqE=mF-7JW+D9=#u750AQ((&hgO$K%(O?>_3WKA>N-?-i>v63<7AM@FOgE##_UfVk z@2e!zOj;#GTp*$+PcdPighFby3e%OU4Y*c^>x>nxN|fL?U5Us=GjW!JM=9YV`M)n< z%$MJ3)YOX>X>D3@u_|s}p=RNdh37eJ7EKmrM&o}a)Qcb-9)fo#>O zTWBxg1}N)uo6$sLQ=~BXX2@ux2nkJx=lcNxH?mTO@mRjc>LycCMFUoX2a&2wcutFB zYUsH*KLSdk+Zl>>Ri~myEi2GPpkz8c;!y-od{+Q5OcX+NAixV5k`VUYusm=hO~8cG z5cZG3gc}t#o5kmeR_NwbSxPFIpidM`QjTPDlMH!&KFIj1iu^^+*8s^&&CxQwNtR-G zNauKewN0{6DVb*BaE03hpO*w!)1rvqf4YY9UPmAIE(EX{R8V<3~$8pYbq$SU11|ccfI!344oJ@J87YxlgtTyOP2g zpgp{b_9?jHVS~kSL_kp>;dF|_qZGW0)VBzz>OoJ5ki zvRtxUk`#~xmfa=GB}oBEVA)-=T#^)!1eV<;%OyzxNnqJsvRslBkOY?9CCepA0ZCxl zU9wz~6p#d#-6hKHEc442kMYo@xKe*o7xj6kr z;=!iw#h-x_bNLa^(pEIgUp%p4GS>NU;qqPw&Y>B7Kd?Z@BL)?=jo!zGuyS+}5cuAM|brTzs@@)#gj5+iWB6Ec(}#BU?N>wN|Wl z-MUF<-+Qm2eoN&B{p^cho-^9Je9&PvUGpKkrfcU>TXTN&{GCnX$KUG1el+&soVwrk nXxz5{f~l2pgu6a|W8(A3?SeL!4qiYW3N5xFBdr?;zgqWS#yIcZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/icon.png b/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..608a155cfdc842548333de8732dd527a1dc06ec2 GIT binary patch literal 15283 zcmeI3du$X%9LEQZP^&~xt4Po+2O4~A_jP;MTdxPD2W<`4mOiwgMz_0j*9~{O$L_Yh z7XFY&A_O&xiI3Vu{!ol05~DF{w2BW*jE{dvtkE>!Bc^HE>J!2G7hXdC)wym!T1^yv%^oP#w)dIJz%nMteKCg?KVFkzUrzT-<74T1*kd#f+OU1FxkDS=q=j_f%1C86qo4pO=&DR6l{6hCQ|rsdRnTv*ne#E( zF7BpUU!9kb>58>7^_C48xjMjVd?3gKL)C&D4Elq&Fd{F=94~Pa&x(@b=M}%mO z68#F>dR%FXuFa=IR;{ncb<+yR_4oHz_e<55o#2E}D8%t1CyFfU!8!w`t7cf!S(Xbj z6(^Gc-)iA*QY4pHPXYMK+Od9IvD*9w|+ubs>e zP1iV>gehpc4$=u_b?F|r-Bh!+=US|rai>)2t&m__D!at5FX@EKQR(QatNvYp(rzUobWMp{c1m?4MoLXU zE^Q{lT(PmFXJIcX^;Xid(THF~3UlR}OH|qYr8Jq2tC|{YibhaFwPEOrEck=nFc4=Y zwMJ&88o$7*vL>?rZY>b+_N!uCgxR^rVx{sKp`(`8>(vMfojXo+OGDv{!_oqBjT(we zY_MC5vw{F28xkaq4M7>g8Y#dBG&GIeI7@=fNYr8*=(JOlC4IcP=qQ;a`XxOs_|Y`f z5bM|cLAFNfhHOv`KrJ2!Ng=r~moi~yq-r!Av_}U@_Ac7N+4HO&Zl2ycK+^aR7Q#{c{@pU1TUGs|Wted; z{eLS^+`w9oY9^o_;imTPRKvL~T5c()7uD2RFtZ55-oKH83K(rBHCs4Bn48g7%$)1r zq?vWNE1zmlle zk@;X=iVFimHYqMLAIwW}VL-?x#YN_Wc_}Uo2-&2#$b2v_#f1SOn-mwB59Xz~Fd$@; z;v)0Gyc8D(gltk=WImXe;=+KCO^S=m2lG-~7!a~aagq68UWy9?LN+NbG9S!KabZBn zCdEbOgLx?~3<%kzxX64kFU5rcA)6EznGfcrxG*4Olj0)t!Mqd~283)J zkWGq<%m?#QTo@3tNyJrId}b4x=t0eX^hD+}iS*unqw=ux z+R@{$jhV|HNo?-CcH6qXLtCCcJcs$9LfYY&`f2{s*E_0&wd+1TWWVlTxNX;=(7e5G z@9eC4{G*HZ9QL(X@m<2#TO%zWtr|M{$D8-7i=O>+aO47T>aBSnCePf`uA91O!T6rz`|1`|4xn`aO>3H?2Up*_{V&;C!F2!t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..84d21a6738cdc91042032e3fe12be58f727de5c7 GIT binary patch literal 16928 zcmeI4Yj6|S701^BYGdjG11XP|A_PoB%4#2aS&J;NEkD#CaBKtS6d!#5|^@#U?-kghxt=Asr}WCIP2FVG=r+0u9Y%+VC*YyOJzj$ub*v zGSe@s8Ka}S=YP(vPWhk2$JI}b(VwgDav2gx4^$U`9+t(SAVf| zwuB%9hA4j-$c9bB5hPvU9_iS;=2A0{rpikgwpn=?c|tklU8&V{mImPZ+XkK>*2j?2W>9e@!G!H-SoPZx%Miq|m9MOltK3s5M(`VGR`76!uwMkT zh#>aKVUcF)I9cc6s`)^k{`R5w^g5o+)6X)yakp5=)$pZDf?UOtX_d^9I>yH8Cp)t3 zVG0EBb26<9`+Wh43g_t~aVcOc&6r*nagpot^!Z9cU6s2`S11HIo!MYP8QfykS#1Ww zY_*!K6Llm`m@(Xl8F7>}QYM@-k-FGN@5lz0J;-{ga%XWY9r%@}uaRYu!mv;%WC$4z zLa-VmY&IK)lNd>&zyp;U0x}&&1Jc-NkghmRPGW+*DDy%rVCZ# za+k#;DZ{Pi{bFRmU=q?MXPLOaSReF7d|3wLe4HO7kwCwRv^o$kE==3yblr1_GGhYD zqHtoofG!isD#T zrRZwtS;BXp7J{@H2?EDaj}1(Qi7;}ghcPoK;q@}+T(8+;RHh}`B}m?L4oUFJAv(zA zSA!CBlz;-$kp=?SJvECDutG?h&=oD&vFCuH8ZO`8-^2=Nf(tz8s_^(8PL_NxUwCojven+e0#LAC5?35aP=BgTBTh%Tv0Bi&MWFg(Z_SaG#v-4K6wHjtAb+2O1^g?yNjX`3k9(OoH}ac z>7hU`y4j;F8g(kqZ~;m9`om5mu*Z*GB;)I$LpP_;E& zs)%3*4Hry9)z)ySB7z+>Trdq)Tf?P_2zJnL!8BBD4VNk+*g?Yu(@?cFT&jp*2MrfY zL)F%BsUm_MG+ZzZRr|5HvJ-Efa{=(Wc?i5$-cP=>1-z54V@k{22(n~6f;Tv|Qu@FJ1^$0RdShJw582pz53tZ0p%J79-7mlr3h7axc;a4xdsPm2zpM3PF z_0p>4Qc_DD;&Y>jFYjC! zZfx08Iiv0Df6V^T1zX;28Fv4ZcXuCe+?ADsoLIl@)se0H{r88ye|YKYS2jsaSwhCb z)vkukLyQ%xzqr^jza7<2&73T}w_MDfGW#{xgd(E2cEhy*a{2xYv{k>$r4$P<+u3yr8Dy0kEA|@?`)d9{+ekn^QF|sxnS<~i- F_%E>;#d81v literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..aee4b59f97a0cd033d24f6255e6c88fb3ff99e28 GIT binary patch literal 16926 zcmeI4Yj6|S6~~tj6l0(`layC@2oajVu-es1mb8m3YD<0yBkWiP41vIUcO|baX&3Dp z$+#hu$4m$$q);*`=}_KnXoHgm3Y1_5&)7P;d;aI#`@84fz58Lkv3g$l$o%p72!f1sSGa1x=eL#Lysv}52l*8rfRABf z#UcqohTpIJ4nlVPa4doh+RQth)zuAxEJzK4sB=4=Ix#Hx_yC6>(aYO^JFCGv=z+8U z_`}IZ8~5*jYMhH&f>VnMCU-o#XYAnN)1GTkDAL*xkW7tD^_u1b)7r7X*bypp`vU%Gl?cRr8e*EDdoiFRCA$Qzr z?EIPYBDrAWiN9|@a(;;SRy@{WGbz2i<)_OChq@6IEI>?@CSKmE<0>gPW((o@Iz^_Ss(FmG^DZs$;z2d@r`{^pLc`sPMzxb?v8Czfx$GTUEvyBFy|!f!tPlX2@1#IcvJt&{6Kb16m$8faFi=M2%H z2xbvM?6adH%`|bcuAcMrp(1_HiBozV&lc$y7J6`x=;RvsidA9GyJ}u7v#N<9S^aEB zzCB8T06|WsbtZf)Q<1({NvNyyRO_5Vn9~&+EGUCptU4=c zFcw;^X6sBHfg1}k+=Q8MlrT|doH7%-#E;&Q4=j6_^-(phvP3%Ytw`S>%OZtgkx0Z4 zF&TugA2X69iQxoB5Ge3KrIwIPN70ZpH6A1x$HhrZm=|SU2%&33`Ad7NteZXuz>x5X+^MeECxAX1diKKoInXOX9vVUvjq2`S>lwYSf~K&!;}Fl&~x=eOl~}I zfOxel^Od^XZvdJ1rOPT~_{x=jWn7f+N2Xkf%VI?wuPr+mgU3U;1g2S;47banOee(( z49`+AlkwFPoDHW@+{&`3nFOV5D^!?SSSx9wZ7f;nvnwbv!=%eMk-{C4WIDufAO&zX z@F2d0CT!+<&Wc)$W*Q|;W*nvK>q!)6aFRBe!8-J@$<1<0CnRZ|MSwdsGK#*(Zd9jzn1|TvN^2 z{12$2vJY(P1(#Tglj!*WCjH&unJ>Ki#m9%zpK;GQZdW}@T=7P7A>9?>a?E#TDAAXh~~ z1L$VIvUt?FJi~<~;mZ#@hrpgXT2f9SAcVoX;T$G=`osw}r^_2sfd}R4_;a#D*(!DQ z&3r&c`H)VkDKCNJK#ou#<#bAcqZGK+$Ci=lYHPSu5y1``E|`X@t>IEd1UqQBU>d5n zhD#L@?4aR-X{g#7E>%RZgN6&Hp=xWmR1v`r8ZMZIs;%KtMFcx&xL_KpwuVa;5$vGh zf@!GQ8ZK2tu!DvRrlD$UxKt6r4jL|)hN`XMQbhziXt-b+sXwsJNJKK>n_0GZ7bB0WD{c`!zu06U>ds}tHqCZXRn!ubs}qevO3!5Yc*$% z2;$XE56@`Z`Nz)Ay7nj zSM8GE=~Kw+Z6n46JBIvPkZu-yEfINF=gmn->65Rmtem;1U1@Wd&T}0qS-$qagS@{g literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/meta.json new file mode 100644 index 0000000000..a470e00944 --- /dev/null +++ b/Resources/Textures/Clothing/Head/Hats/beret_french.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} -- 2.52.0