From 54212e9a804c1a692093f7a2edaa492e486c6a54 Mon Sep 17 00:00:00 2001 From: feartheblackout <59633984+feartheblackout@users.noreply.github.com> Date: Mon, 30 Sep 2024 04:54:27 -0500 Subject: [PATCH] Life Could Be A Dream: Adds Vaurca Attendant as a Warrior subspecies (#19529) ![image](https://github.com/user-attachments/assets/0ee377f9-8321-4928-93d7-9b6d9a62fb83) Basically, Attendants are now a subspecies of Warriors instead of a subspecies of Workers, meaning they carry most of the traits over from Warriors aside from the ones that have been modified by me. They also have a unique appearance that should still work with Vaurca clothing, instead of needing adjustments a la Bulwark. Hopefully, an acceptable alternative to the Attendant subspecies that was previously offered in #17550. @desvenlafaxine --- code/__DEFINES/species.dm | 6 +- code/game/jobs/faction/hephaestus.dm | 1 + code/game/jobs/faction/orion_express.dm | 1 + code/game/jobs/faction/pmc.dm | 1 + code/game/jobs/faction/zavodskoi.dm | 1 + code/game/jobs/faction/zeng_hu.dm | 1 + .../abstract/new_player/sprite_accessories.dm | 8 +-- .../station/vaurca/vaurca_subspecies.dm | 48 +++++++++++++- .../SimpleMaroon-livvecouldbeadream.yml | 61 ++++++++++++++++++ icons/mob/human_face/eyes.dmi | Bin 6272 -> 6345 bytes icons/mob/human_races/vaurca/r_vaurcab.dmi | Bin 2526 -> 2526 bytes icons/mob/human_races/vaurca/r_vaurcabb.dmi | Bin 0 -> 2314 bytes icons/mob/species/vaurca/tail.dmi | Bin 0 -> 787 bytes 13 files changed, 119 insertions(+), 9 deletions(-) create mode 100644 html/changelogs/SimpleMaroon-livvecouldbeadream.yml create mode 100644 icons/mob/human_races/vaurca/r_vaurcabb.dmi create mode 100644 icons/mob/species/vaurca/tail.dmi diff --git a/code/__DEFINES/species.dm b/code/__DEFINES/species.dm index e27da1f94c3..887db4edbca 100644 --- a/code/__DEFINES/species.dm +++ b/code/__DEFINES/species.dm @@ -16,7 +16,8 @@ #define SPECIES_TAJARA_TESLA_BODY "Tesla Rejuvenation Suit Tajara" #define SPECIES_VAURCA_WORKER "Vaurca Worker" -#define SPECIES_VAURCA_WARRIOR "Vaurca Warrior" +#define SPECIES_VAURCA_WARRIOR "Vaurca Myrmidon" +#define SPECIES_VAURCA_ATTENDANT "Vaurca Attendant" #define SPECIES_VAURCA_BREEDER "Vaurca Breeder" #define SPECIES_VAURCA_WARFORM "Vaurca Warform" #define SPECIES_VAURCA_BULWARK "Vaurca Bulwark" @@ -90,6 +91,7 @@ #define BODYTYPE_VAURCA "Vaurca" #define BODYTYPE_VAURCA_BREEDER "Vaurca Breeder" #define BODYTYPE_VAURCA_BULWARK "Vaurca Bulwark" +#define BODYTYPE_VAURCA_ATTENDANT "Vaurca Attendant" #define BODYTYPE_VAURCA_WARFORM "Vaurca Warform" #define BODYTYPE_IPC "Machine" @@ -110,7 +112,7 @@ SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, \ SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, \ SPECIES_UNATHI, \ - SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, \ + SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_ATTENDANT, SPECIES_VAURCA_BREEDER, \ ) #define ALL_HUMAN_SPECIES list(\ diff --git a/code/game/jobs/faction/hephaestus.dm b/code/game/jobs/faction/hephaestus.dm index 1860d96ac7d..ff59d508edd 100644 --- a/code/game/jobs/faction/hephaestus.dm +++ b/code/game/jobs/faction/hephaestus.dm @@ -22,6 +22,7 @@ /datum/species/unathi, /datum/species/bug = TRUE, /datum/species/bug/type_b = TRUE, + /datum/species/bug/type_b/type_bb = TRUE, /datum/species/bug/type_e = TRUE, /datum/species/tajaran, /datum/species/diona diff --git a/code/game/jobs/faction/orion_express.dm b/code/game/jobs/faction/orion_express.dm index 53109d0d3b3..a47497674fa 100644 --- a/code/game/jobs/faction/orion_express.dm +++ b/code/game/jobs/faction/orion_express.dm @@ -20,6 +20,7 @@ /datum/species/unathi, /datum/species/bug = TRUE, /datum/species/bug/type_b = TRUE, + /datum/species/bug/type_b/type_bb = TRUE, /datum/species/bug/type_e = TRUE, /datum/species/tajaran, /datum/species/diona diff --git a/code/game/jobs/faction/pmc.dm b/code/game/jobs/faction/pmc.dm index a4aa7284164..8a0b605531b 100644 --- a/code/game/jobs/faction/pmc.dm +++ b/code/game/jobs/faction/pmc.dm @@ -21,6 +21,7 @@ /datum/species/unathi, /datum/species/bug = TRUE, /datum/species/bug/type_b = TRUE, + /datum/species/bug/type_b/type_bb = TRUE, /datum/species/machine ) diff --git a/code/game/jobs/faction/zavodskoi.dm b/code/game/jobs/faction/zavodskoi.dm index 98b36d866d6..6f76a81a029 100644 --- a/code/game/jobs/faction/zavodskoi.dm +++ b/code/game/jobs/faction/zavodskoi.dm @@ -21,6 +21,7 @@ /datum/species/machine, /datum/species/bug = TRUE, /datum/species/bug/type_b = TRUE, + /datum/species/bug/type_b/type_bb = TRUE, /datum/species/bug/type_e = TRUE ) diff --git a/code/game/jobs/faction/zeng_hu.dm b/code/game/jobs/faction/zeng_hu.dm index 245dd0cc5b0..3287b3a5d03 100644 --- a/code/game/jobs/faction/zeng_hu.dm +++ b/code/game/jobs/faction/zeng_hu.dm @@ -22,6 +22,7 @@ /datum/species/machine, /datum/species/bug = TRUE, /datum/species/bug/type_b = TRUE, + /datum/species/bug/type_b/type_bb = TRUE, /datum/species/bug/type_e = TRUE, /datum/species/diona ) diff --git a/code/modules/mob/abstract/new_player/sprite_accessories.dm b/code/modules/mob/abstract/new_player/sprite_accessories.dm index 667a8486d75..e731533481a 100644 --- a/code/modules/mob/abstract/new_player/sprite_accessories.dm +++ b/code/modules/mob/abstract/new_player/sprite_accessories.dm @@ -3731,7 +3731,7 @@ Follow by example and make good judgement based on length which list to include icon = 'icons/mob/human_face/vaurca_hair.dmi' name = "Classic Antennae" icon_state = "vaurca_classic" - species_allowed = list(/datum/species/bug,/datum/species/bug/type_b) + species_allowed = list(/datum/species/bug, /datum/species/bug/type_b, /datum/species/bug/type_b/type_bb) gender = NEUTER chatname = "antennae" @@ -4879,7 +4879,7 @@ Follow by example and make good judgement based on length which list to include icon_state = "mecha_chest" do_colouration = FALSE body_parts = list(BP_CHEST) - species_allowed = list(/datum/species/bug, /datum/species/bug/type_b) + species_allowed = list(/datum/species/bug, /datum/species/bug/type_b, /datum/species/bug/type_b/type_bb) /datum/sprite_accessory/marking/vaurca_augs/mecha_abdomen name = "Mecha Abdomen" @@ -5967,13 +5967,13 @@ Follow by example and make good judgement based on length which list to include name = "Spelunker" icon_state = "spelunker" body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_GROIN,BP_HEAD) - species_allowed = list(/datum/species/bug,/datum/species/bug/type_b) + species_allowed = list(/datum/species/bug,/datum/species/bug/type_b, /datum/species/bug/type_b/type_bb) /datum/sprite_accessory/marking/delver name = "Delver" icon_state = "delver" body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_GROIN,BP_HEAD) - species_allowed = list(/datum/species/bug,/datum/species/bug/type_b) + species_allowed = list(/datum/species/bug, /datum/species/bug/type_b, /datum/species/bug/type_b/type_bb) /datum/sprite_accessory/marking/skr_tears name = "Skrell Tear Stains (Xiialt)" 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 3060c329806..de5db577db9 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 @@ -38,11 +38,11 @@ stamina_recovery = 3 unarmed_types = list( + /datum/unarmed_attack/bite/warrior, /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, - /datum/unarmed_attack/palm, - /datum/unarmed_attack/bite/warrior + /datum/unarmed_attack/palm ) valid_prosthetics = list(PROSTHETIC_VAURCA, PROSTHETIC_VAURCA_WARRIOR) @@ -66,6 +66,49 @@ "C'thur: Unbound Xetl" = "#370078" ) +/datum/species/bug/type_b/type_bb + name = SPECIES_VAURCA_ATTENDANT + name_plural = "Type BB" + species_height = HEIGHT_CLASS_HUGE + icobase = 'icons/mob/human_races/vaurca/r_vaurcabb.dmi' + eyes = "vaurca_attendant_eyes" + + slowdown = -0.8 + brute_mod = 0.9 + oxy_mod = 1 + radiation_mod = 0.5 + bleed_mod = 2.5 + burn_mod = 1.2 + sprint_speed_factor = 0.6 + sprint_cost_factor = 0.40 + grab_mod = 1.1 + resist_mod = 4 + standing_jump_range = 3 + pain_mod = 1.5 + + unarmed_types = list( + /datum/unarmed_attack/stomp, + /datum/unarmed_attack/kick, + /datum/unarmed_attack/claws, + /datum/unarmed_attack/palm + ) + + mob_size = 8 + blurb = "Type BB Warriors or \"Attendants\" are digitigrade bipeds, built to be agile and quick. They are primarily made to be scouts or serve in support positions and \ + they excel at guerilla tactics. They can possess the same roles as regular warriors, but their speed-built forms are not as hardy. They are commonly attributed to the \ + role of combat medics, providing medical assistance on the field, or removal of the neural socket if the individual cannot be saved." //Copied from the wiki + + stamina = 100 + + tail = "Gaster" + tail_animation = 'icons/mob/species/vaurca/tail.dmi' + selectable_tails = list("Gaster") + +/datum/species/bug/type_b/type_bb/can_hold_s_store(obj/item/I) + if(I.w_class <= WEIGHT_CLASS_NORMAL) + return TRUE + return FALSE + /datum/species/bug/type_c name = SPECIES_VAURCA_BREEDER short_name = "vab" @@ -113,7 +156,6 @@ blood_mask = 'icons/mob/human_races/masks/blood_breeder.dmi' canvas_icon = 'icons/mob/base_48.dmi' - stamina = 175 sprint_speed_factor = 1 sprint_cost_factor = 0.80 diff --git a/html/changelogs/SimpleMaroon-livvecouldbeadream.yml b/html/changelogs/SimpleMaroon-livvecouldbeadream.yml new file mode 100644 index 00000000000..c723f6077cf --- /dev/null +++ b/html/changelogs/SimpleMaroon-livvecouldbeadream.yml @@ -0,0 +1,61 @@ +################################ +# 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 +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: SimpleMaroon + +# 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, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added Vaurca Attendants, a subspecies of a subspecies (Warriors). Compared to Warriors, they're faster, less prone to brute injury but more prone to burns, experience more pain than other Vaurcae, have a signature gaster tail, and no mandibles, along with a somewhat unique appearance compared to Warriors overall. They can also hold normal-sized items instead of small ones with their vestigial arms, and they have no bite attack." + - imageadd: "Added unique sprite aspects for the Vaurca Attendant compared to the Warrior, including a differently-shaped head and feet." + - bugfix: "Fixed the Vaurca Warrior left hand icon state, which was one pixel too far to the side on the north-facing sprite." + - qol: "Changed the name of Vaurca Warriors to Vaurca Myrmidon." diff --git a/icons/mob/human_face/eyes.dmi b/icons/mob/human_face/eyes.dmi index 10ff141d23bc20e80b25a7f2275ca090485aa242..91f747aa1a93b40a853bdbce22351ece52668525 100644 GIT binary patch literal 6345 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 literal 6272 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 M07*qoM6N<$f~9MQm;e9( delta 1718 zcmV;n21)te6W$ZBJp+HXe$fpk%-&DC{iL5`VfDWgRwj1O7-B<@h(OHnl0TRu#V(c7}Zh3$7MhRt-nIZ>6_y}2k zob!O}7wi>BayoLH$3T@kqC1jXYL}kQV05=RYF4I?(rzMiii#>?io<=0O?fD!I42*` zCnx{_00000000000078dtKIGLx9E1;M2v@%uOag}NwhCk_nG1I%6;P*@e}a!HFQ2F zf%XM!9`ZYQNQQs3*!h|``JBz$7fkUqUa{sWR1NHWO`Lqr=Ix7R1dhWicbtGqkg)SL zG4eSHv@g{2@(W@qP4h+hId=nIzJ|=_B+$NCdj`3jW7XK>mUHtpR6Zwx_Qi4>@;u}6 zp9B1S4VBMHpnbvGbO)(4J#P%i>`emgixrR&STD$L`*wen;!ou9jnZp0O+V!*q^MDgkR3Qi96Kv17)ZSei%v#GCLg zsCEB*QvJlMpgVPq!DPlLolORYJI(l#zJMc31ah#Na!L+5j1b`Jb7Wtb2dk5r_`ZM19ii4`xJitT=8`q`by=2me;hsO^x*p4U)JB& zKYrzaQG@3PPU{=5jc+X{@QXVe;>NQtZ0~=DSuX#3@G8*QlP1T#nWuQ1r%*2}p7q9? z^f6Q6{?iUWnC0J(25&EB>kx(D+iv;3o}4$oY6 zOtyciX^O(RUeQ++O}i}c1r51cuJSH=nazsIo4DL+nFe>-a#-BTbZLoAm0SGRG39?x z&$#8Mr)S)G%hj{fV!x1AiMjudd(E$)>W)V2($UD}j-S5zU|AgAxs#PVjsG&M=WjZr zFz!vhI4WxuE!g%z8rbY#3RJ#Z)|;CXb_L^c-waq24MMZP?2n6k5|yNDf9~^kQFC-t z=j@>24m_RmU#L!}(}3*Z2S5QQ-;C9~GYH{80+)?}#NhfAk2} z-w~TX+Jg0W000000000WJ)QrrC0};3>qc%_lGI-1kJ`)s!LK^f-TYA}+s@<^?*B!= z{l6$w{wN)}y}gxpn?K6(7b|}`zW>+UTjh@!`JZ&;dHtPmU>5l!X8tD)xn6&V%KxMx z&+G3{`JXi8di|Xpb(Q~7cQWfkuGin$QCIn&3+k5b+x(A_z;EE!l;8Dt^u-&D zpZT9!W+Rl_^>?iL@_Dt&|ERT$j??+Q|JS~~2>$4*tS;KG+WWj(#L0i{{l6LwTVA#= zFWZ;xMuXqgjAVEJFWr&U+xAt-$?Hwwvs!=0)|*mG(wkxXO+Eaqsk8UvEv1Hk?8QtN z*Is@O_k=^@S<91z>T=$rU^$ zu-Md^RKpI$QCodLGv2Od2DPf9*=i- zcNY{CbZ~I6v9a;+@Gv$u_VMv?a&q$W^78lhS5s5tQ+)ymh=`={L|g&^cRn5f zAXZitKLTd!3Fj;?XlAu~MX$cQ>*9IcA?=E=UPb2a>qTrBCHgo{kw_qCZ*Z6|Rej4= zf=nBGMz?YLM5)n0adNL1Y_^zGI&TMzO56DQ_^83Td-`^9o7IlPse(z4*FkTl-zGiv z;<;hJ_Vj0^hXM1@Dpex-x3a6w6lEx6bS9pNn+coB}c5lCC{oe#12F@rmitgU2 zm;6|qt4=YNno@dypaXGZ=OVg%eBHWOEYsY)iM1YYH3|T5Y|;r~=R>Sqo4(=w$x-h3 zW?}BOf$(*a;C9}-(T!=u_gcKr+}=dFG4ks4E{Ed*ifT=1iKKU`kuUbq4d?Ub8^{!0 zMXM#U>~rpV0D#Ot7ZaWQZC%=_mAJduahr+IjFG~Mkh8JSHGCb2w}=0|E5w;_0=@FxyX%70w*b#Z05(-$eFDE@z0|X?)lEs_28i8k*4S@`3C%UPAtgc zlF$V;n*Hha=H5m0QkSM-=S5oAp7VRH*@iO1iM5FQ3h}Q^1eaG8bEkZR2w`r~yXmlg>D`=%~G9(pUS!wpyAwkUAcl zgbMi#l72t89CL2leE6^NzqhZ~E!9PNT5r;f4VaZ*=T{?AF#aR!-54#q{-JTlg(R`O zw$U5?x{pd49tRT@t!!_#DgKmdiu_~JymYPNA?9{l?e?Mg;DuM?<)sXBg}38qrX25l zOb1fZQS~D-$u{ylSH-_9uP=3aB%ji`;Uc(|cz$1BT&J)%8&l42F-07xsx6_engUNc zmsy9?TShLgi=;$-5uaC|55PD9TpB+8$5h>FVLh|DQPuKMliuJ%DURsI{*PBI(JhOYSw;a%-nSb2R-n$mKRwE)5{{71>dd_4GNc5n?>GBNTVZyf6)5-}zZfKE|5Owb2lM7y|-XE{L368X)m@fGKYV zkHBruVnj&aBwD?!?dDj+(=T?OlJ4&>iGGkCXV=`n8h_hOyK8OYdycM={v69Q+~l#q zUMzKAZ}Xzr)K(?^`OuWSRQPzm^h$^!9-)1vpXHg>r`3S-n@}JQ<7j(3oj*2q;Q7*fj`pWVrBOs)edm}~TQl>r1@nmKctu4NYf=x^?+|u^g6zeWG^@u;_8SOg4 zVtuUOBus)i^6LfaEZ*Stb7+!97?bDHg@z~3REAZvi*_R4BqvcRu4#nr-a$Xoq)o4` zgig$B=;`Rdfw?E2GyiKic%>a1M}8dm`bOfNs{C+)GMyok<+XSn5#L(nbf`B&C3J|0 z$7_akhCJmG9 zWw0Wz`wf;isqdsr7^M1Jpw-6#Gtbc*aG`{)RS! z?YPXg6exnf@8*EEQAZaFUKGNW6f+RE?A%P22rp9^xQ+U~dAVR`Fqw`0f_w|rv05nj zr8^SDV2P}ARCD$-L=reK;5rBCw8IY5Uo22MetLR(jEszJZEa9cPfFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5; z&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KByJ+ZhXwJ09M&rDY0;!Mdb zDh6rh;!G<_%uNNc4KY;b=Ow2St2Q$whiJ7q`S}IJsx8jRFDIzhFJFN)4O*Wg{e6tw<001zoN@HfFDmH)6&HQFy`Ng4kwm#gJ%&+XkB7SG>qw?o70YM$M}RNX&3Hf`rpz-)G&)jU4j zXP>Zm{%*G$8m^w^Pq`he((~q}ZTFX!|FCb{m(6qbPg6X9zaO5ony)ffyW>&69>%=B z4{dvR?QY4u!s7YI<8g5OFh69jcE|s8dKb$1e^(~|o5=pIO#XL){aum# zjJW=;M1G&>{%*2-00000;A+wRUE%!b{;qI-bbnVmKf1pwogdxbO_kp#y1$z&zfW|3 zH(7p<=>BfH{2tN$-E{dqqWilE^8o+=000000000000000000000002S`3<6cCm`2^ Rf$0DM002ovPDHLkV1n+-Y#IOn literal 0 HcmV?d00001