From 6a41149f3a6730ef9f89c34a5edbef795a1b26c9 Mon Sep 17 00:00:00 2001 From: Geeves Date: Wed, 13 Oct 2021 21:40:26 +0200 Subject: [PATCH] Bulwark Fixes (#12616) --- code/modules/clothing/suits/armor.dm | 2 ++ code/modules/mob/living/carbon/human/human.dm | 5 ++++- .../mob/living/carbon/human/human_helpers.dm | 12 ++++++++++++ .../living/carbon/human/species/species.dm | 5 ++++- .../station/vaurca/vaurca_subspecies.dm | 6 +++++- .../mob/living/carbon/human/whisper.dm | 2 +- code/modules/mob/living/say.dm | 4 ++-- code/modules/mob/mob_helpers.dm | 17 +++++++++++------ code/modules/mob/typing_indicator.dm | 4 ++-- html/changelogs/geeves-bulwark_fixes.yml | 7 +++++++ icons/mob/species/bulwark/shoes.dmi | Bin 1458 -> 1450 bytes icons/mob/species/bulwark/suit.dmi | Bin 23991 -> 23992 bytes icons/mob/species/bulwark/uniform.dmi | Bin 187011 -> 187014 bytes icons/mob/talk_bulwark.dmi | Bin 0 -> 440 bytes 14 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 html/changelogs/geeves-bulwark_fixes.yml create mode 100644 icons/mob/talk_bulwark.dmi diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index b85431b00af..8bfb8af3879 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -8,6 +8,8 @@ heat_protection = UPPER_TORSO|LOWER_TORSO max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE siemens_coefficient = 0.5 + + species_restricted = list("exclude", BODYTYPE_VAURCA_BREEDER, BODYTYPE_VAURCA_WARFORM, BODYTYPE_VAURCA_BULWARK) var/obj/item/storage/internal/pockets = /obj/item/storage/internal var/pocket_slots = 2 var/pocket_size = 2 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 53c3cec462f..4229446f993 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1873,7 +1873,7 @@ // For a blood pressure, e.g. 120/80 var/systolic_alert // this is the top number '120' -- highest pressure when heart beats var/diastolic_alert // this is the bottom number '80' -- lowest pressure when heart relaxes - + var/blood_pressure_systolic = bp_list[1] if (blood_pressure_systolic) if (blood_pressure_systolic >= (species.bp_base_systolic - BP_SYS_IDEAL_MOD) && blood_pressure_systolic <= (species.bp_base_systolic + HIGH_BP_MOD)) @@ -1981,6 +1981,9 @@ src.adjustToxLoss(-damage) to_chat(src, SPAN_NOTICE("You can feel flow of energy which makes you regenerate.")) + if(species.radiation_mod <= 0) + return + apply_damage((rand(15,30)), IRRADIATE, damage_flags = DAM_DISPERSED) if(prob(4)) apply_damage((rand(20,60)), IRRADIATE, damage_flags = DAM_DISPERSED) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 906e0b5f3e5..f9b9841e964 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -320,3 +320,15 @@ return TRUE else return FALSE + +/mob/living/carbon/human/get_talk_bubble() + if(!species || !species.talk_bubble_icon) + return ..() + return species.talk_bubble_icon + +/mob/living/carbon/human/get_floating_chat_x_offset() + if(!species) + return ..() + if(!isnull(species.floating_chat_x_offset)) + return species.floating_chat_x_offset + return species.icon_x_offset diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 9f014173d31..10b52752d04 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -24,6 +24,8 @@ var/preview_icon = 'icons/mob/human_races/human/human_preview.dmi' var/bandages_icon + var/talk_bubble_icon + // Damage overlay and masks. var/damage_overlays = 'icons/mob/human_races/masks/dam_human.dmi' var/damage_mask = 'icons/mob/human_races/masks/dam_mask_human.dmi' @@ -33,6 +35,7 @@ var/prone_icon // If set, draws this from icobase when mob is prone. var/icon_x_offset = 0 var/icon_y_offset = 0 + var/floating_chat_x_offset = null var/eyes = "eyes_s" // Icon for eyes. var/eyes_icons = 'icons/mob/human_face/eyes.dmi' // DMI file for eyes, mostly for none 32x32 species. var/has_floating_eyes // Eyes will overlay over darkness (glow) @@ -779,4 +782,4 @@ if(C?.can_support) stance_damage -=2 - return stance_damage \ No newline at end of file + return stance_damage diff --git a/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca_subspecies.dm index d0e9a591d60..9b6c9e3aec2 100644 --- a/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca_subspecies.dm @@ -181,10 +181,14 @@ icon_template = 'icons/mob/human_races/vaurca/r_vaurcae.dmi' icobase = 'icons/mob/human_races/vaurca/r_vaurcae.dmi' deform = 'icons/mob/human_races/vaurca/r_vaurcae.dmi' + talk_bubble_icon = 'icons/mob/talk_bulwark.dmi' + + bald = TRUE icon_x_offset = -9 healths_x = 22 healths_overlay_x = 9 + floating_chat_x_offset = 6 damage_overlays = 'icons/mob/human_races/masks/dam_mask_bulwark.dmi' damage_mask = 'icons/mob/human_races/masks/dam_mask_bulwark.dmi' @@ -238,4 +242,4 @@ Bulwarks are much larger and have significantly thicker carapaces than most Vaur slot_belt_str = list("[NORTH]" = list("x" = 9, "y" = 2), "[EAST]" = list("x" = 10, "y" = 1), "[SOUTH]" = list("x" = 9, "y" = 2), "[WEST]" = list("x" = 6, "y" = 1)), slot_wear_id_str = list("[NORTH]" = list("x" = 0, "y" = 0), "[EAST]" = list("x" = 12, "y" = 0), "[SOUTH]" = list("x" = 9, "y" = 0), "[WEST]" = list("x" = 0, "y" = 0)), slot_shoes_str = list("[NORTH]" = list("x" = 9, "y" = 0), "[EAST]" = list("x" = 8, "y" = 0), "[SOUTH]" = list("x" = 9, "y" = 0), "[WEST]" = list("x" = 8, "y" = 0)) - ) \ No newline at end of file + ) diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 3aa888503e3..af1c6321500 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -150,7 +150,7 @@ listening_clients += M.client var/speech_bubble_test = say_test(message) - var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") + var/image/speech_bubble = image(get_talk_bubble(),src,"h[speech_bubble_test]") INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, speech_bubble, listening_clients, 30) if (watching.len) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index c155e31aa1f..98e98be1608 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -306,7 +306,7 @@ proc/get_radio_key_from_channel(var/channel) hear_clients += M.client var/speech_bubble_test = say_test(message) - var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") + var/image/speech_bubble = image(get_talk_bubble(),src,"h[speech_bubble_test]") speech_bubble.appearance_flags = RESET_COLOR|RESET_ALPHA INVOKE_ASYNC(GLOBAL_PROC, /proc/animate_speechbubble, speech_bubble, hear_clients, 30) do_animate_chat(message, speaking, italics, hear_clients, 30) @@ -351,4 +351,4 @@ proc/get_radio_key_from_channel(var/channel) var/mob/parent /mob/proc/GetVoice() - return name \ No newline at end of file + return name diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 861f9829027..3100575bd65 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -90,16 +90,18 @@ if(istype(A, /mob/living/carbon/human)) switch(A:get_species()) if(SPECIES_VAURCA_WORKER) - return 1 + return TRUE if(SPECIES_VAURCA_WARRIOR) - return 1 + return TRUE if(SPECIES_VAURCA_BREEDER) - return 1 + return TRUE + if(SPECIES_VAURCA_BULWARK) + return TRUE if(SPECIES_VAURCA_WARFORM) - return 1 + return TRUE if(SPECIES_MONKEY_VAURCA) - return 1 - return 0 + return TRUE + return FALSE /proc/isipc(A) . = 0 @@ -1277,3 +1279,6 @@ proc/is_blind(A) //We also need to update name of internal camera. if(camera) camera.c_tag = real_name + +/mob/proc/get_talk_bubble() + return 'icons/mob/talk.dmi' diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm index 433d04f5b8e..c75dbd9f5e4 100644 --- a/code/modules/mob/typing_indicator.dm +++ b/code/modules/mob/typing_indicator.dm @@ -10,7 +10,7 @@ mob/var/obj/effect/decal/typing_indicator /mob/proc/set_typing_indicator(var/state) if(!typing_indicator) typing_indicator = new - typing_indicator.icon = 'icons/mob/talk.dmi' + typing_indicator.icon = get_talk_bubble() typing_indicator.icon_state = "typing" if(client && !stat) @@ -73,4 +73,4 @@ mob/var/obj/effect/decal/typing_indicator if(prefs.toggles & SHOW_TYPING) if(istype(mob)) mob.set_typing_indicator(0) - feedback_add_details("admin_verb","TID") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! \ No newline at end of file + feedback_add_details("admin_verb","TID") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/html/changelogs/geeves-bulwark_fixes.yml b/html/changelogs/geeves-bulwark_fixes.yml new file mode 100644 index 00000000000..4c136de8c85 --- /dev/null +++ b/html/changelogs/geeves-bulwark_fixes.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Fixed various Bulwark bugs. They can no longer wear armor, their talk bubbles are no longer on their faces, their floating messages are centred, they are now properly bald, they now successfully pass isvaurca checks, their shoes no longer have a white dot, their vaurca clothes and hive cloak (one of them) have icons." + - bugfix: "Rad immune species no longer get radstorm radiation side-effects." \ No newline at end of file diff --git a/icons/mob/species/bulwark/shoes.dmi b/icons/mob/species/bulwark/shoes.dmi index 6e3994b812fc22d69f75181d79adbea399e2425b..0ab7fffaee23f09d98b2fe1d057d580cb6273263 100644 GIT binary patch delta 1094 zcmdnQy^4E+3ggU)s`3-v>sZwCGFT>_+*>c?>EaktG3V{wyG6IGMA{PnC+bK!bF{I= zTw-eT%<{;1_y5th6zNrq*Q&BzN_kdWw87$sioQP2$xby#1~gE^m{?LJ>bg)x{@C5s z7E_+=-(}F{FMMhJopPDu7b_hCW&Y=1+tsDWbKEy#$H%ub8Mn?ozNwzkHSo?dr_VuU z6D@j_DsQALy}ZZPc)_yLU=?Pr-JCOja^xS@xu{frDP!}Z{@?Bv`?tT9etyRMt~qm7 zo=XL7oRwttp1vKD9_>2v~$d#b~lJuntQIl?!Bh!ZOsQm=1+41bl$7I{r-Dp zXzZrCTj$qkWh{H`T6O&So1CDZ=wnpfwR$J&WLEwy$mKirt(kT|`c`K9ueKf14s6@;hrtyn(g zRpi%Om1v;?V+-uh)QSOJaXO{_^sSm{C;Q|ie`c7R zTKlT#V1t{LrBK@JKOXt-Ch~`5^}X&?pE7fE?aE1IleeFpv&wpY`OlatVJ-9i%ji^$V|#v(8^+_4~o)%gy(qs^(=c zGW}Z;I%$5y)s-{+mbZq+rd>|5+Pvz(_v1hBEO6S>L#y;w#Y{Q1%I|27 znf4lx6Xm!z@6@>+<5V8xp}y+^{~@4?d(5*$FV`ofg_iGo@u^i~z3m^3uH!o^oHqYV z4*WBLFJqCH>Bd#vQ95EkbCQ={xv}c{IrinuX@?4SZ~kL*>(k4ZnVF&Kart|HEZSG_#N=ggXDR{wN1|DLqU zn@zL%GWOogxfWLXe6?PD=O?vYYquSGk;?t0VUkP9uXU!LLj89e3_iUh}>-NU!uhohyI{Dwd{_z?Kbmu>qUs+dI`Sb1O2j5Sh{``6EuAeQh z{{9Q7*0p%^J&rr?<<$+VO#Y{x(EGTRJw(3$_^nmv{_M+}WgmKSQuF_YKVo-+*2;H) z1XY=>_I1uXckcD;+aEvkyeQpoKdb-L?ZW-ywMSm<%KH>6x`Llw|KYReeSGuN9qM_2 oQN4ce{_2+9bMN0@`f>Fye%?=UCnl+^T>^5Sr>mdKI;Vst0P1@h*#H0l delta 1103 zcmZ3*y@`8*3geuKs`AYL|No!pQpX~A`t#z6$M)8Xd%8G=RLpsM_ioWGE0MOuKh1`V z3|kU14z!9H_yjpS761RfP4)H?t6Nb?3chLg)Y-e6{Xcy=G(nknE*}Fb_`u5Y@Mow5 z+oT$St?L&#O#1(-$-v6rV}H^8LXp<@%v_6K)Nj5P%9CiZ>hPi7{PR33UfN8m=hfg@ ztR^~R`lfCdM~PF1)wJh6dpncy>e|^#k^vX|PMmSCkWT9q+cnv3vS{rc`$NC0Z|^BQ zS97=4cEK;Vmg@$}Q|sh>^(O2ImsiVRSIK=@>rf~DLFv8PyRzLIL)XuJUvs9xMqT9O zZqKT{aY>=mw@m*Mw3=&HX7$8-AFJd3xn|YxyKmzra&rH_uL+k-eAm2sWV>L+-&dS1 z|I`0HQ+^rCl6c|!j?~)LI)%EXOG~CN2`ha**=&Btr(JXFst?!RY-lo*|GKn)!o6Mk zxBuJ;+^;Ve5UzQ3>#MDwQ9}mAoA=1#U6pL~i?XjmFP}9ZRM-YoHFsD2|AP)U{CwZ* zyu1Hn+Lw3lYV-=quY2#~+?;?Mp9{qCx)`V+x+nF-VJlp4*oUx963R4ugO$d zz3fk!TGmx5DT^;^Y+iMmm09ZL6OS2dKP&Iu>Ar8VP;rdE&B7~l-g-~jGJ8$tvzWU- z*PKniG&^8srOnZD8>90@YH#=Nb9ii4|FN-;Z%x(P8fnq?y^k?nE%)eSg-rC#rrOz?KYu_zjJL%7nRenE9tj?}|WiuVbEdUVcCK=I%ur zVqv9$M;8Tzm7Yr99GMq7oty2;gxP0PZ~hY6H95xWVr!iMP(}SmxeGe;pBb;-^|^BP zdDqIf58db4pF1i%>#Y3eKkX$B!l5fVLu0QbZ3LPlrM>i6*xs^z#dZm5Jm%J?&o9;u zUw!q`s&jkpRb_@^xcx!4;OTRXe_{=09=XJ7U;om6b)5D3nNRc+t;KaCR(!pc@9=u- zqAuF*U-`^CCDoQtRHUSRG@zW8$YF_k`B zwk`MHn}?M?)0diXFXl%7vcq-EQJP!zxIVV1xo!-5#Q64f?#}J2PA}6r-5bh!B`RB+TT>UGbM-^F_xUK@ufMl$S!KNcX3n&*sr5QLpM1Y)q0NTw{2%G_=FOX5 z|6AwB-#>r8l&sFPTllKLA}o%(uf6$tQ*@Q#8m+VYr8arjyk!hsetG4lRmSxzUOhV> zy6MRadxib1+e2QmF9HdkZ17vZX!+)^pFUOnvSF^Wl<|AE_*0dYjEnrnRjXdrm_)O# zdK|dpXSMtB^TrG8+kkoI`n`KLhu)sc&%g8|^e_9PCrSMib83@7?(=l@b6Mw<&;$V5 CY8xQ{ diff --git a/icons/mob/species/bulwark/suit.dmi b/icons/mob/species/bulwark/suit.dmi index 48901a3302457cab4e414253de3678f2e243c462..6cff3b70b9574c92662783d359d9a2ad1eea15b1 100644 GIT binary patch delta 346 zcmV-g0j2)8y8*bn0k9tf0Z)@40~CMOy>5dr6b0ZJo&qI%)k+<@bg2?m8JbtH3|wrt zH`uZblstWb6scsW@7+N9e2#5?_r=@s{d6u4AE&$rAB=5_*W&r%G0z55M?IgseO`F9!#6$X8{IR_75<6gFUcB;hWMN*s>%2qy{BN9BF#@6;n4DG-I_Gc{ zH8}Apt1pQB5ws#`mEqLfdE#m+R>zhTE5P@xj;*Ja^bn#Lw2A5aYM~`g;Y8}~kev42I9}6sWyVo3z6&yG*U79@bZg3>cEl zB~b`4`t$=jq)};#eM_Xz-|vI~*=KLZ_tQB$e4NrAeQRu!y=Ko3k7+WPGU$2ok|r8W zt;2271_(F}cN(tXOEoC#u-Tf1r%1d=|2JF~F(Q#2gg7sv?VO`g zmFUzb6kizR6}%v9Y9oocXJ08G*hRWo&s~NRMq$gEk?4t`;<>NzO#Q9pVkl zZy7jm!=@oNDu#!eRj rAZp|PKhtAD7UBnWUZb};{_EUl$Ma#ih5P{AADNRuSa~3`cLYIMhlZVQ diff --git a/icons/mob/species/bulwark/uniform.dmi b/icons/mob/species/bulwark/uniform.dmi index f32bf5905d46f3727a5dea9c1a21bd985e2d6b90..449efd9e11cb9cc177773e9a0f1a8c9c459e77bc 100644 GIT binary patch delta 967 zcmV;&133JHwF`!|3y>s#p?XwUbVOxyV{&P5bZKvH004NLoteRI+d2?M*Y;Nk?e?K) zfh@Z5<{?FqMf(fFh#He)Q6w`YE4W|Zg)GNOi~6$2D!{py(rCyTj^B6xfBE|Ky?gxj zwEw}HC5GV1BN-P_Qt+1_Pzfu?BmL zeu7?LaZ)%@C=jhY!tCJ5OfX$2!0hB`5(G3fN7!}bEH<$A@W&sObH@E&=z)DfB)O=h zhL9IBMNEtyR-BlBLRLwM$F_9DHHE}S)q_ zyQn3jXUWZ`Y!hy0%SF|C#K4Q)>{eKF-LtSF*DxyQ+%HZFau8ny_fg~ch++zWj+5&- zSP9JSJgg{eTo5CK)W)|8copT$q{cP#$O=O&6wWw^cuFXLtf9|FI2a^T9BIH3B^#|n zPF0iti}6l*kud&A3U@L_>yW{gV}r52XU#JlL_$twj!67g4sl$Z6rOn$L*B*(irFMu zdLOa&Xr&G1N*?D^Js!_Eo)=D7xnA8l7-@K#QU`8u_aso+-EgLY)#+8>#JYyiOjH=E zwJU$BbNUB=-idXlLf_yg2itPmz2=dmeyt#1{z-$ZG?T`NY?=#*czUs}U>Bw1YB@~076)c}GESg`S@fC$S zAvZ|#;Rc3(z7}YUJ6dI=54Or!7mQw$Ru0Qh ztifD4#L+|_l?EuAURWrX^4U24GxmAE8`;yjJ9MA^d-ZoyZAiiZ9r(sk@+1L`&TAe% z8PfSgGa)^;^4LHRp3Ky6)vpZ0R+$4#D~~PCXMAvAOaqJF88;I7fE$Z7e77{>UZ@%_ z;@Jv+)bYLHITQ(jeY4WDCFq2?$W~PnACV~7qZjM$Pt-149}@%9L38vcG85nTy}YD} zbf48Y#3BaD@(qQ?FXvHXiUG5}r4jeb^`25{#ew-F1t}35Wo_(z@&{El)Egg*W9)|n z>T?xrA8jmfgp=Bc6*y8G;hntFEw13@3VW?Fs1z)+p)VkG50wB;G*|LI_dG*(&oi=S p(|idZNxkpBe1Gg7zdh}L0fs@?2t9vR)q~3ehsy&2x61~+f4uf delta 964 zcmV;#13UbNwF`r_3y>s#o_bVRbVOxyV{&P5bZKvH004NLotVLn+d2$I*U48H?e?K) zfmw8u&BGMMEZSc%Xqk~1%aVqYYNTJ^h2u^uGK5%h#vx-Q%~X z{SVeGF?5IS;ls!MZjrIL?$AAa-tQcXb!GjN3l;7T-MhTV+^4F4sn75ByHPZEhwfp& zJ1WhbyF>Ts4QrJ-pzz?yOem~8;=Yvu_QVu&UjqgjPdST$`MKso!NU9+43s{{8tgIp z33`FWN#R7HK(z7*vx6ry!E~Vjvy-Dq5YW&ZVb_tf*udJuAAeNN8TWso2lfS#a;YXML*d zqLz%-lABH0CfsVvMb%nj;KgosE3CQhSy+*47?pGG7bgWN#8<(6)Hpt(m;#{V62Fy092X~rXCB3nw{d}DHi?$r zM{GP=X+yb^$N5x`$1{%Sg%j4US9cCZ8lI-qfg9XC3DkBsoT*@adKEaat|2rN6^454 z%Ae|-{(*OYVx6hbH~7iHwp6>(io9Va{&=gFV+?8z;s0sU(6D9 z8%Zb3aU&7eGkYHw9K=1*j&MsO?x-*B=*7B%+TOrW19`55V(_zq?em32^9wY-qR=FS zdBT48hLpD;997u(mWG~K0y4iO2~$H3C^kIYz|hx!0&Q_etBlOSRvDXu(PPreVHt`I zm@9`kn&_j_0A$Q^QfeG7MW~4lu1ewm6^hivwdCSoF-ek;n(!SZv_Cr4jc+)o>Bd zR-lQ0?+wqPNC@nkm7Xm@73LyaRY`nAqF|3+th;}scH#P%7`PoYM}HzS@qORROPWac zS&c(1VxTPFQ0V&QJZelaVAi)Z;(j^aQ%bEkaQ{d_O2n?RHugUGgQ^-bJ{HG7t)f0x z!S>L`0_B_3My$D!+6eFBm2Pnb4_4S~MWtXakTVwvStMcEAbmU@r(tovLymdKI;Vst0Jjye!2kdN literal 0 HcmV?d00001