From 369f7a2a1c020e3a42edf628057a2893bbfa26eb Mon Sep 17 00:00:00 2001 From: CrimeMoot Date: Sat, 2 Nov 2024 15:54:07 +0500 Subject: [PATCH 1/6] add new xenos virus --- .../_Backmen/Diseases/noninfectious.yml | 10 +- .../_Backmen/Entities/Mobs/NPCs/xeno.yml | 127 ++++++++++++++++++ .../Prototypes/_Backmen/Polymorphs/xeno.yml | 11 ++ .../Mobs/Aliens/Xenos/maidxenos.rsi/dead.png | Bin 0 -> 1125 bytes .../Mobs/Aliens/Xenos/maidxenos.rsi/meta.json | 18 +++ .../Aliens/Xenos/maidxenos.rsi/running.png | Bin 0 -> 2529 bytes 6 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/xeno.yml create mode 100644 Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/dead.png create mode 100644 Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/meta.json create mode 100644 Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/running.png diff --git a/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml b/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml index 7e725985cde..206d5835c97 100644 --- a/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml +++ b/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml @@ -127,7 +127,15 @@ - 2 # possible xeno polymorph - !type:DiseasePolymorph - probability: 0.050 + probability: 0.070 + polymorphId: MobMaidXeno + polymorphMessage: disease-xeno-polymorph + polymorphSound: + path: /Audio/Animals/cat_meow.ogg + stages: + - 2 + - !type:DiseasePolymorph + probability: 0.030 polymorphId: XenoDroneMorph polymorphMessage: disease-xeno-polymorph polymorphSound: diff --git a/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/xeno.yml new file mode 100644 index 00000000000..08e25989789 --- /dev/null +++ b/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/xeno.yml @@ -0,0 +1,127 @@ +- type: entity + id: MobMaidXeno + parent: SimpleSpaceMobBase + name: maid xeno + description: So Cute + components: + - type: Insulated + - type: CombatMode + - type: InputMover + - type: MobMover + - type: HTN + rootTask: + task: XenoCompound + blackboard: + NavClimb: !type:Bool + true + NavInteract: !type:Bool + true + NavPry: !type:Bool + true + NavSmash: !type:Bool + true + - type: Prying + pryPowered: true + force: true + speedModifier: 1.5 + useSound: + path: /Audio/Items/crowbar.ogg + - type: Reactive + groups: + Flammable: [Touch] + Extinguish: [Touch] + - type: NpcFactionMember + factions: + - Xeno + - type: Hands + - type: ComplexInteraction + - type: Sprite + drawdepth: Mobs + sprite: Backmen\Mobs\Aliens\Xenos\maidxenos.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: running + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.25 + density: 1000 + mask: + - MobMask + layer: + - MobLayer + - type: MobState + allowedStates: + - Alive + - Dead + - type: MobThresholds + thresholds: + 0: Alive + 100: Dead + - type: SlowOnDamage + speedModifierThresholds: + 25: 0.5 + - type: Stamina + critThreshold: 200 + - type: Bloodstream + bloodReagent: FluorosulfuricAcid + bloodMaxVolume: 650 + - type: MeleeWeapon + altDisarm: false + angle: 0 + soundHit: + collection: AlienClaw + animation: WeaponArcBite + damage: + groups: + Brute: 6 + - type: DamageStateVisuals + rotate: true + states: + Alive: + Base: running + Dead: + Base: dead + - type: Puller + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeatXeno + amount: 5 + - id: ClothingUniformJumpskirtJanimaid + amount: 1 + - type: GhostTakeoverAvailable + - type: TypingIndicator + proto: alien + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: -150 + currentTemperature: 310.15 + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + - FootstepSound + - type: NoSlip + - type: Perishable + molsPerSecondPerUnitMass: 0.0005 + - type: Speech + speechVerb: LargeMob + - type: PotentialPsionic + chance: -2 + - type: Psionic + removable: false + - type: NightVision + isToggle: true + color: "#808080" + playSoundOn: false + - type: LanguageSpeaker + currentLanguage: Xeno + - type: LanguageKnowledge + speaks: + - Xeno + understands: + - Xeno + - TauCetiBasic \ No newline at end of file diff --git a/Resources/Prototypes/_Backmen/Polymorphs/xeno.yml b/Resources/Prototypes/_Backmen/Polymorphs/xeno.yml index 5d5275a4879..564b6ade6ed 100644 --- a/Resources/Prototypes/_Backmen/Polymorphs/xeno.yml +++ b/Resources/Prototypes/_Backmen/Polymorphs/xeno.yml @@ -1,4 +1,15 @@ # XenoVirus + +- type: polymorph + id: XenoMaidMorph + configuration: + entity: MobMaidXeno + forced: true + inventory: Drop + transferName: true + revertOnCrit: true + revertOnDeath: true + - type: polymorph id: XenoQueenMorph configuration: diff --git a/Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/dead.png b/Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..ede10aeada87301a0201de43a7d420c616c371b1 GIT binary patch literal 1125 zcmV-r1e*JaP)E~_kMq8H&7l3Y}QP_xkr5uj$(&l>NZFD`-F7I~-PdV%FJvAtDh6>`tWMcd;0qW*}Dul_^ z=de_3LyY3XMn>|i0#u)?q^cM;({wJk)&&QJ;cm|h?R=bgKk=xXx~ z+XBbs80oUsfgHji#>)zM)d7$(;F8nzC*^%lPmdI|`fDRCEgSOG@!KRvkmFh2E&w

$*;Jb90X1+7lKj&06&Xb;F)BDc3Ae)H*^q($RPzgwfu+ zLyn02ZN)?#&9US@;|7h6JtLbqEt|4t0fa~&3UhKyKnOA*9*;}%vPz41cG7yMrO%MR zl``yE1F{NmXMtA+v|X8V?)62TCaKXOR~pg!W&wiH4a5M@(X0_VA&{*R`3hiim6$UC z7X!fvH-P-%&;c5G9HuYRA7m}ar4#xJfZs*bntU$>P>HFMt0J_cgQ6yoxDqlIxgCqH z;ka>a&B%s0p^2zZBoZk_2h|T(A`up`pv#kM2*ZqQ^U(|X%Z4RgAmKz{Vt^Foy0I;TBpkjO3 zE_o7=`D|w5dqIUCsXHce62SRym*o^+BG-Q}8Y2Bt%eEi69UIQGi~`in(fx+H4yCQ( zf`fTPy}c$a@|oQIWt~xgx;Zw6E6`xbWd#7`7)3}cFC<#FKhb8ab?Sc#cUR2G1=t+H zbtKp%+|lp2f=|f>2gRqg!Fnh8-I#>e|B9?GU@NfiK(1KALx>gm9Bf=w+3#-4WpzPv zY?04|5Hphy2A6WAr{Bj&RsmiBIp;ZCGBF;ry5+2ut{~-6_L1dvr~@i^GmI#;7{wQl r2_Y;%q_bm7RRY7s00000NkvXXu0mjf`q2e& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/meta.json b/Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/meta.json new file mode 100644 index 00000000000..e7218401160 --- /dev/null +++ b/Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Yogstation at https://github.com/yogstation13/Yogstation/blob/79ec28fd4d17e03308adee9b06f94850ac1cd5c1/icons/mob/alien.dmi | Modificated @CrimeMoot", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "running", + "directions": 4 + }, + { + "name": "dead" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/running.png b/Resources/Textures/Backmen/Mobs/Aliens/Xenos/maidxenos.rsi/running.png new file mode 100644 index 0000000000000000000000000000000000000000..8064eea9296289a7e13f3663fe6bc22d6e13b99d GIT binary patch literal 2529 zcmV<72_E)|P)eVtlJZyw-X=#zRwl*`~+1Z)+Y_TY3j;zmm6@Urq zXE)3J^B<5)=YNdM3&O8k+f{J?$uAGbo`sqIdG&Yv3`!NiMgOZaCuCdqZn=5$MszQ> z0mfIZTv;@IuL8n{0=X)J$;iY*t&f;JX9MFl@rlVX=L+c6@vW4P{&Q>AOY?%Z*nCh1 z#CA>_J1g?t*tULG9nu{yk3;>q0@@Sd``?oA1nRh3$GRMit(HhiV{9m z0h)>0+yBVLk#n+j>&G$XfgEE-h=T`THCtq2@#8Ku3LLn9$orGbPot)9M^H5$dJsFhG1xDC}M)bQ(RZHVaG!sD7vza#}*zkWTyispq9*|%?>^!D}|hX-Lle|d|%^w}X31$dpx$`Lou zH#IfIn6Ou0k3$JQ`i+g_^79WDj1qu>fdT36?l%0u|4{g6);(pe`{);?089+C2NM(w z!0+AnEtHm7vt{(H_oVBuD~2HwCWCa0T1dV61g#*AzPUGCVGaB?7Lr2Wh14)eCMY;o zp16E-Qd(W59=8E+oHIW>XYOxby52B> zd6@B$IoCFT`G<-wxSt-LfKLD)povfXro+SBP^PwsvQlBLyk3zc&~nB`_v1T;V)35L zkujY;UOKN%YD!Hsw*b+S0uwg^uy|~`r-ybN! zV+zw*orW)a)AK-hhG7>}bO^#wm}$Y%6hMZI_Mu^fJ0?CF7{~Q637Td-Z{XVow)wm0 zYhmoIsFO9vbBV}wAi|6c0(NzE8Dcwj>@e5r>gr_Iu3b?A!uwqrnBE2&w)y+$+j$1w z3dcr=V|hXneHSt*0Fz--{sti^LPM{Ji@08W6CPE3M!a4$e+3+_@j134G<}>!z`0^B zhFK^BzsW;Z;epIYVkCmq`u>-Jg6oez{45VI3a&8{aPDzu&3zC?9h^kZQ*b?xt`C%g z%nBeOu7Zsy^U5&>D?u8{RGJK9-}_dGTLIr=if{;S=l8ge{=l_;l8{LObYOHowyA?D z=XEkVDVa<&x+hdbl*}+>PUbB^Z$CgUN|rZ3jm#E6q3j%+X6UnR=$e|ebAD1&Y~@V#S2$?3&6`s4nb#UXGN9J*VkuO9z6+3d{yOT zNLO&N!bo*-<_Bm+=zak(Tqz}BF5Q!$l|aF94vDjYq>8f(sS0q`>BBQWm>e1C=~-jy z_L{L`^Ku{kBS(IV3H?#;PT9NnjQP&DK)^m@lng0xO`5iRb$VRGcjo`wx(jQ2m4u#~ zini14VtNB8x3Pe zwi0gL9u9C82*5-!S@Qy(3sesj9{g_F^dN=|AGI^viV~iSRg+eq*U-%pI2grwJc<** zmCJk$9*%kkDiIDb$DF#kv7`qJ0O8>nQ6peE-q)C63lH%0C~|_X`n(OhUjV1XtkDB! z-@PgyT===-Ie-@Gjm67?Rk=t&;lTsy0c^~;IB+iYL|8|z8WM2T=WV#^^(~|y6W{CH*SpGGkE34o(0gfI$ zYQAUb39x01DIl$W&+~f_LM={%Jp$wALNR@s=EK#a5Ltk$K2EJ%;@Cze6y2XvAUHg5E;sP;T+uDy z8U$@NOF$8-Kfp`d?olubNT|gT$+OCsU(EY(vn(f zfTrCE3f{mYz|#EkC-csorFOeVA+i8peIC&1rK1iX)Jt>z-&k1IuHvycK5eVxxNgnO zCq#F8417Hbu`S@O&)<2#2n$&IEE=aGDy;+v$*wS4cy3Y0Rt$7+fr}^Ssc`DCn8eTD r^?2ILNI8hk0WE){yHgywe Date: Sat, 2 Nov 2024 21:01:10 +0500 Subject: [PATCH 2/6] r --- .../_Backmen/Entities/Mobs/NPCs/xeno.yml | 174 +++++++----------- 1 file changed, 71 insertions(+), 103 deletions(-) diff --git a/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/xeno.yml index 08e25989789..fa18187424b 100644 --- a/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/xeno.yml +++ b/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/xeno.yml @@ -1,122 +1,90 @@ - type: entity id: MobMaidXeno - parent: SimpleSpaceMobBase - name: maid xeno - description: So Cute + parent: MobXeno + name: горничная ксеноморфа + description: Это чертовски мило, пока она сытная. components: - - type: Insulated - - type: CombatMode - - type: InputMover - - type: MobMover - - type: HTN - rootTask: - task: XenoCompound - blackboard: - NavClimb: !type:Bool - true - NavInteract: !type:Bool - true - NavPry: !type:Bool - true - NavSmash: !type:Bool - true - - type: Prying - pryPowered: true - force: true - speedModifier: 1.5 - useSound: - path: /Audio/Items/crowbar.ogg - - type: Reactive - groups: - Flammable: [Touch] - Extinguish: [Touch] - - type: NpcFactionMember - factions: - - Xeno - - type: Hands - - type: ComplexInteraction + - type: LagCompensation + - type: Input + context: "human" + - type: MovedByPressure + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 5 + soundHit: + path: /Audio/Effects/hit_kick.ogg - type: Sprite drawdepth: Mobs - sprite: Backmen\Mobs\Aliens\Xenos\maidxenos.rsi + sprite: Backmen/Mobs/Aliens/Xenos/maidxenos.rsi layers: - map: ["enum.DamageStateVisualLayers.Base"] state: running - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.25 - density: 1000 - mask: - - MobMask - layer: - - MobLayer - - type: MobState - allowedStates: - - Alive - - Dead + noRot: true + netsync: false + - type: Clickable + - type: InteractionOutline + - type: SolutionContainerManager + - type: AtmosExposed - type: MobThresholds thresholds: 0: Alive 100: Dead - - type: SlowOnDamage - speedModifierThresholds: - 25: 0.5 + - type: Internals + - type: Damageable + damageContainer: Biological + damageModifierSet: Xenolian + - type: Body + prototype: Animal + - type: Actions + - type: DoAfter + - type: Polymorphable + - type: Buckle + - type: Insulated + - type: Hands + showInHands: true + - type: MobState + allowedStates: + - Alive + - Dead + - type: MovementSpeedModifier + baseWalkSpeed : 2.5 + baseSprintSpeed : 4 - type: Stamina - critThreshold: 200 + critThreshold: 500 + - type: Appearance - type: Bloodstream - bloodReagent: FluorosulfuricAcid - bloodMaxVolume: 650 - - type: MeleeWeapon - altDisarm: false - angle: 0 - soundHit: - collection: AlienClaw - animation: WeaponArcBite - damage: - groups: - Brute: 6 - - type: DamageStateVisuals - rotate: true - states: - Alive: - Base: running - Dead: - Base: dead + bloodMaxVolume: 0 + - type: UnpoweredFlashlight + - type: PointLight + enabled: false + radius: 4 + color: "purple" - type: Puller - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeatXeno - amount: 5 - - id: ClothingUniformJumpskirtJanimaid - amount: 1 - - type: GhostTakeoverAvailable - - type: TypingIndicator - proto: alien - - type: Temperature - heatDamageThreshold: 360 - coldDamageThreshold: -150 - currentTemperature: 310.15 - - type: Tag - tags: - - CannotSuicide - - DoorBumpOpener - - FootstepSound + needsHands: false - type: NoSlip - - type: Perishable - molsPerSecondPerUnitMass: 0.0005 + - type: IgnoreSpiderWeb + - type: IntrinsicRadioReceiver + - type: ActiveRadio + channels: + - Hivemind + - type: IntrinsicRadioTransmitter + channels: + - Hivemind + - type: LizardAccent - type: Speech - speechVerb: LargeMob - - type: PotentialPsionic - chance: -2 - - type: Psionic - removable: false - - type: NightVision - isToggle: true - color: "#808080" - playSoundOn: false + speechSounds: Xeno + - type: Eye + drawFov: false + - type: SolutionRegeneration + solution: spray + generated: + reagents: + - ReagentId: Water + Quantity: 10 + - type: Access + tags: + - Xeno - type: LanguageSpeaker currentLanguage: Xeno - type: LanguageKnowledge @@ -124,4 +92,4 @@ - Xeno understands: - Xeno - - TauCetiBasic \ No newline at end of file + - TauCetiBasic From 7a4fa9b0bfe72ef8816388e5cfaa4875142e85c6 Mon Sep 17 00:00:00 2001 From: CrimeMoot Date: Sat, 2 Nov 2024 21:26:15 +0500 Subject: [PATCH 3/6] fix MaidMorph --- Resources/Prototypes/_Backmen/Diseases/noninfectious.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml b/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml index 206d5835c97..6e22ab32c49 100644 --- a/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml +++ b/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml @@ -128,7 +128,7 @@ # possible xeno polymorph - !type:DiseasePolymorph probability: 0.070 - polymorphId: MobMaidXeno + polymorphId: XenoMaidMorph polymorphMessage: disease-xeno-polymorph polymorphSound: path: /Audio/Animals/cat_meow.ogg From adf791c6c53b80eca8fa1c75b8be38cd346e88f4 Mon Sep 17 00:00:00 2001 From: Roudenn Date: Sat, 30 Nov 2024 10:27:03 +0300 Subject: [PATCH 4/6] Slerm real --- .../Locale/ru-RU/backmen/reagents/toxins.ftl | 3 + .../_Backmen/Diseases/noninfectious.yml | 81 +++++++++++++++++-- .../Prototypes/_Backmen/Reagents/toxins.yml | 39 +++++++++ 3 files changed, 115 insertions(+), 8 deletions(-) diff --git a/Resources/Locale/ru-RU/backmen/reagents/toxins.ftl b/Resources/Locale/ru-RU/backmen/reagents/toxins.ftl index 455240a4457..e742355b135 100644 --- a/Resources/Locale/ru-RU/backmen/reagents/toxins.ftl +++ b/Resources/Locale/ru-RU/backmen/reagents/toxins.ftl @@ -5,3 +5,6 @@ reagent-desc-lotophagoi-oil = Сверхсильный наркотик, кот reagent-name-bloodsucker-toxin = вампирский вирус reagent-desc-bloodsucker-toxin = Многие называют это лекарством от старости, его состав говорит о том что он относится к классу токсинов и вызывает множество негативных мутаций. + +reagent-name-slerm = слерма ксено +reagent-desc-slerm = Самая мерзкая жидкость в галактике, которая при попадании на кожу вызывает сильные мутации. diff --git a/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml b/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml index 5601af9c739..f849357aa7a 100644 --- a/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml +++ b/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml @@ -126,14 +126,6 @@ stages: - 2 # possible xeno polymorph - - !type:DiseasePolymorph - probability: 0.070 - polymorphId: XenoMaidMorph - polymorphMessage: disease-xeno-polymorph - polymorphSound: - path: /Audio/Animals/cat_meow.ogg - stages: - - 2 - !type:DiseasePolymorph probability: 0.030 polymorphId: XenoDroneMorph @@ -150,3 +142,76 @@ path: /Audio/Animals/space_dragon_roar.ogg stages: - 2 + +- type: disease + id: XenoMaidVirus + name: disease-proto-xeno-maid + cureResist: 1 + infectious: false + stages: + - 0 + - 120 + - 600 + effects: + # compulsion pop ups + - !type:DiseasePopUp + probability: 0.015 + type: Pvs + message: disease-seizures-compulsion + visualType: Medium + stages: + - 0 + - 1 + - 2 + - !type:DiseasePopUp + probability: 0.03 + message: disease-blood-compulsion + visualType: Medium + stages: + - 0 + - 1 + - 2 + - !type:DiseasePopUp + probability: 0.05 + message: disease-eaten-inside + visualType: Medium + # Seizures + - !type:DiseaseAdjustReagent + probability: 0.025 + reagent: + ReagentId: Licoxide + amount: 0.5 + # accent chance when speaking + - !type:DiseaseGenericStatusEffect + probability: 0.1 + key: Stutter + component: XenoAccent + stages: + - 1 + - !type:DiseaseGenericStatusEffect + probability: 0.4 + key: Stutter + component: XenoAccent + stages: + - 2 + # cellular damage, from being eaten on the inside + - !type:DiseaseHealthChange + probability: 0.025 + damage: + types: + Genetic: 0.1 + stages: + - 2 + - !type:DiseasePolymorph + probability: 0.070 + polymorphId: XenoMaidMorph # >w< + polymorphMessage: disease-xeno-polymorph + polymorphSound: + path: /Audio/Animals/cat_meow.ogg + stages: + - 2 + cures: + - !type:DiseaseReagentCure + reagent: + ReagentId: Diphenylmethylamine # the hardest-to-get med known to mankind... good luck + min: 1 diff --git a/Resources/Prototypes/_Backmen/Reagents/toxins.yml b/Resources/Prototypes/_Backmen/Reagents/toxins.yml index 653b4c7dcf4..fdd35f52367 100644 --- a/Resources/Prototypes/_Backmen/Reagents/toxins.yml +++ b/Resources/Prototypes/_Backmen/Reagents/toxins.yml @@ -17,3 +17,42 @@ - !type:ReagentThreshold reagent: BloodSuckerToxin min: 10 + +# Xeno maid liquid real +- type: reagent + id: SlermQueenPlus + name: reagent-name-slerm + group: Toxins + desc: reagent-desc-slerm + physicalDesc: reagent-physical-desc-bubbling + flavor: bitter + color: "#b428c9" + reactiveEffects: + Acidic: + methods: [ Touch ] + effects: + - !type:Emote + emote: Scream + probability: 0.2 +# start-backmen: Disease + - !type:ChemCauseDisease + conditions: + - !type:ReagentThreshold + reagent: SlermQueenPlus + min: 1 + causeChance: 0.3 + disease: XenoMaidVirus +# end-backmen: Disease + metabolisms: + Poison: + metabolismRate: 1 + effects: +# start-backmen: Disease + - !type:ChemCauseDisease + conditions: + - !type:ReagentThreshold + reagent: SlermQueenPlus + min: 5 + causeChance: 0.3 + disease: XenoMaidVirus +# end-backmen: Disease From 66022d0ffb16648cc3277b22e4fcb6e116fdfe63 Mon Sep 17 00:00:00 2001 From: Roudenn Date: Tue, 3 Dec 2024 16:37:11 +0300 Subject: [PATCH 5/6] uuhhh fix it NOW --- .../Abilities/XenoAcidSpillerComponent.cs | 20 +++++++ .../Xeno/Abilities/XenoAcidSpitActionEvent.cs | 5 ++ .../Abilities/Xeno/XenoAbilitiesSystem.cs | 52 +++++++++++++++++++ .../Events/ShadowkinEvents.Powers.cs | 2 + .../Prototypes/_Backmen/Actions/xeno.yml | 33 ++++++++++++ .../_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml | 1 + 6 files changed, 113 insertions(+) create mode 100644 Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpillerComponent.cs create mode 100644 Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpitActionEvent.cs create mode 100644 Content.Server/Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs create mode 100644 Resources/Prototypes/_Backmen/Actions/xeno.yml diff --git a/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpillerComponent.cs b/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpillerComponent.cs new file mode 100644 index 00000000000..b792bafa76c --- /dev/null +++ b/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpillerComponent.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Server.Backmen.Abilities.Xeno.Abilities; + +[RegisterComponent] +public sealed partial class XenoAcidSpillerComponent : Component +{ + [DataField] + public string AcidSpitActionId = "ActionXenoSpitMaidAcid"; + + [DataField] + public EntityUid? AcidSpitAction; + + [DataField] + public EntProtoId BulletSpawnId = "BulletSplashMaidAcid"; + + [DataField] + public SoundSpecifier BulletSound = new SoundPathSpecifier("/Audio/Effects/Fluids/splat.ogg"); +} diff --git a/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpitActionEvent.cs b/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpitActionEvent.cs new file mode 100644 index 00000000000..fca6e7cdbb1 --- /dev/null +++ b/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpitActionEvent.cs @@ -0,0 +1,5 @@ +using Content.Shared.Actions; + +namespace Content.Server.Backmen.Abilities.Xeno.Abilities; + +public sealed partial class XenoAcidSpitActionEvent : WorldTargetActionEvent {} diff --git a/Content.Server/Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs b/Content.Server/Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs new file mode 100644 index 00000000000..e35788fb39d --- /dev/null +++ b/Content.Server/Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs @@ -0,0 +1,52 @@ +using Content.Server.Backmen.Abilities.Xeno.Abilities; +using Content.Server.Weapons.Ranged.Systems; +using Content.Shared.Actions; +using Robust.Server.GameObjects; +using Robust.Shared.Audio.Systems; + +namespace Content.Server.Backmen.Abilities.Xeno; + +public sealed class XenoAbilitiesSystem : EntitySystem +{ + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; + [Dependency] private readonly GunSystem _gunSystem = default!; + [Dependency] private readonly PhysicsSystem _physics = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAcidSpit); + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnShutdown); + } + + private void OnAcidSpit(EntityUid uid, XenoAcidSpillerComponent component, XenoAcidSpitActionEvent args) + { + if (args.Handled) + return; + + var xform = Transform(uid); + var acidBullet = Spawn(component.BulletSpawnId, xform.Coordinates); + var mapCoords = _transform.ToMapCoordinates(args.Target); + var direction = mapCoords.Position - _transform.GetMapCoordinates(xform).Position; + var userVelocity = _physics.GetMapLinearVelocity(uid); + + _gunSystem.ShootProjectile(acidBullet, direction, userVelocity, uid, uid); + _audioSystem.PlayPvs(component.BulletSound, uid, component.BulletSound.Params); + + args.Handled = true; + } + + private void OnStartup(EntityUid uid, XenoAcidSpillerComponent component, ComponentStartup args) + { + _actions.AddAction(uid, ref component.AcidSpitAction, component.AcidSpitActionId); + } + + private void OnShutdown(EntityUid uid, XenoAcidSpillerComponent component, ComponentShutdown args) + { + _actions.RemoveAction(uid, component.AcidSpitAction); + } +} diff --git a/Content.Shared/Backmen/Shadowkin/Events/ShadowkinEvents.Powers.cs b/Content.Shared/Backmen/Shadowkin/Events/ShadowkinEvents.Powers.cs index ed826c01db7..87481d1eb15 100644 --- a/Content.Shared/Backmen/Shadowkin/Events/ShadowkinEvents.Powers.cs +++ b/Content.Shared/Backmen/Shadowkin/Events/ShadowkinEvents.Powers.cs @@ -1,7 +1,9 @@ using Content.Shared.Actions; +using Content.Shared.Ghost; using Content.Shared.Magic; using Robust.Shared.Audio; + namespace Content.Server.Backmen.Species.Shadowkin.Events; ///

diff --git a/Resources/Prototypes/_Backmen/Actions/xeno.yml b/Resources/Prototypes/_Backmen/Actions/xeno.yml new file mode 100644 index 00000000000..52ffd190fe7 --- /dev/null +++ b/Resources/Prototypes/_Backmen/Actions/xeno.yml @@ -0,0 +1,33 @@ +- type: entity + id: ActionXenoSpitMaidAcid + name: Spit slerm + description: Spit the violet acid on your enemies. + components: + - type: WorldTargetAction + icon: Interface/Actions/fleshAcidSpit.png + #itemIconStyle: NoItem + event: !type:XenoAcidSpitActionEvent + checkCanAccess: true + useDelay: 60 + range: 32 + repeat: true + priority: -20 + +- type: entity + id: BulletSplashMaidAcid + name: maid acid spit + parent: BaseBulletTrigger + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Projectiles/flesh_toxic.rsi + layers: + - state: flesh_toxic + - type: Projectile + damage: + types: + Caustic: 5 + - type: SplashOnTrigger + splashReagents: + - ReagentId: SlermQueenPlus + Quantity: 30 diff --git a/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml b/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml index f374aa99f34..4120ab2f947 100644 --- a/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml +++ b/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml @@ -220,6 +220,7 @@ - id: XenoRCD - id: WeaponXenoHealingSpit - id: PinpointerXeno + - type: XenoAcidSpiller - type: Destructible thresholds: - trigger: From 7d5c8e0f07216c44fa59863bb79f49fa8decccc5 Mon Sep 17 00:00:00 2001 From: Zack Backmen Date: Sun, 8 Dec 2024 17:01:28 +0300 Subject: [PATCH 6/6] fix --- .../Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs | 2 +- .../Backmen/Research/Oracle/OracleSystem.cs | 2 +- Content.Server/Content.Server.csproj | 2 -- .../Abilities/Xeno}/XenoAcidSpillerComponent.cs | 4 ++-- .../Abilities/Xeno}/XenoAcidSpitActionEvent.cs | 4 ++-- Content.Shared/Backmen/Disease/DiseasePrototype.cs | 2 +- .../Locale/en-US/backmen/disease/disease-proto.ftl | 1 + .../Prototypes/_Backmen/Diseases/furry_virus.yml | 7 +++++++ .../Prototypes/_Backmen/Diseases/noninfectious.yml | 14 +++++++++++--- .../_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml | 11 +++++++++++ 10 files changed, 37 insertions(+), 12 deletions(-) rename {Content.Server/Backmen/Abilities/Xeno/Abilities => Content.Shared/Backmen/Abilities/Xeno}/XenoAcidSpillerComponent.cs (77%) rename {Content.Server/Backmen/Abilities/Xeno/Abilities => Content.Shared/Backmen/Abilities/Xeno}/XenoAcidSpitActionEvent.cs (56%) diff --git a/Content.Server/Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs b/Content.Server/Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs index e35788fb39d..23ad1861e8f 100644 --- a/Content.Server/Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs +++ b/Content.Server/Backmen/Abilities/Xeno/XenoAbilitiesSystem.cs @@ -1,6 +1,6 @@ -using Content.Server.Backmen.Abilities.Xeno.Abilities; using Content.Server.Weapons.Ranged.Systems; using Content.Shared.Actions; +using Content.Shared.Backmen.Abilities.Xeno; using Robust.Server.GameObjects; using Robust.Shared.Audio.Systems; diff --git a/Content.Server/Backmen/Research/Oracle/OracleSystem.cs b/Content.Server/Backmen/Research/Oracle/OracleSystem.cs index dc43220bdba..97f1e28fd36 100644 --- a/Content.Server/Backmen/Research/Oracle/OracleSystem.cs +++ b/Content.Server/Backmen/Research/Oracle/OracleSystem.cs @@ -41,7 +41,7 @@ public sealed class OracleSystem : EntitySystem [ValidatePrototypeId] public readonly IReadOnlyList> RewardReagents = new ProtoId[] { - "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "Wine", "Blood", "Ichor", "FluorosulfuricAcid" + "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "Wine", "Blood", "Ichor", "SlermQueenPlus" }; [ViewVariables(VVAccess.ReadWrite)] diff --git a/Content.Server/Content.Server.csproj b/Content.Server/Content.Server.csproj index 853e214196a..e376f400307 100644 --- a/Content.Server/Content.Server.csproj +++ b/Content.Server/Content.Server.csproj @@ -29,8 +29,6 @@ - - diff --git a/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpillerComponent.cs b/Content.Shared/Backmen/Abilities/Xeno/XenoAcidSpillerComponent.cs similarity index 77% rename from Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpillerComponent.cs rename to Content.Shared/Backmen/Abilities/Xeno/XenoAcidSpillerComponent.cs index b792bafa76c..c4003c99766 100644 --- a/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpillerComponent.cs +++ b/Content.Shared/Backmen/Abilities/Xeno/XenoAcidSpillerComponent.cs @@ -1,13 +1,13 @@ using Robust.Shared.Audio; using Robust.Shared.Prototypes; -namespace Content.Server.Backmen.Abilities.Xeno.Abilities; +namespace Content.Shared.Backmen.Abilities.Xeno; [RegisterComponent] public sealed partial class XenoAcidSpillerComponent : Component { [DataField] - public string AcidSpitActionId = "ActionXenoSpitMaidAcid"; + public EntProtoId AcidSpitActionId = "ActionXenoSpitMaidAcid"; [DataField] public EntityUid? AcidSpitAction; diff --git a/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpitActionEvent.cs b/Content.Shared/Backmen/Abilities/Xeno/XenoAcidSpitActionEvent.cs similarity index 56% rename from Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpitActionEvent.cs rename to Content.Shared/Backmen/Abilities/Xeno/XenoAcidSpitActionEvent.cs index fca6e7cdbb1..56c5bf4c97a 100644 --- a/Content.Server/Backmen/Abilities/Xeno/Abilities/XenoAcidSpitActionEvent.cs +++ b/Content.Shared/Backmen/Abilities/Xeno/XenoAcidSpitActionEvent.cs @@ -1,5 +1,5 @@ using Content.Shared.Actions; -namespace Content.Server.Backmen.Abilities.Xeno.Abilities; +namespace Content.Shared.Backmen.Abilities.Xeno; -public sealed partial class XenoAcidSpitActionEvent : WorldTargetActionEvent {} +public sealed partial class XenoAcidSpitActionEvent : WorldTargetActionEvent; diff --git a/Content.Shared/Backmen/Disease/DiseasePrototype.cs b/Content.Shared/Backmen/Disease/DiseasePrototype.cs index 2fc20580862..37629cf6c89 100644 --- a/Content.Shared/Backmen/Disease/DiseasePrototype.cs +++ b/Content.Shared/Backmen/Disease/DiseasePrototype.cs @@ -16,7 +16,7 @@ public sealed partial class DiseasePrototype : IPrototype, IInheritingPrototype public string ID { get; private set; } = default!; [DataField("name")] - public string Name { get; private set; } = string.Empty; + public LocId Name { get; private set; } = string.Empty; [ParentDataField(typeof(AbstractPrototypeIdArraySerializer))] public string[]? Parents { get; private set; } diff --git a/Resources/Locale/en-US/backmen/disease/disease-proto.ftl b/Resources/Locale/en-US/backmen/disease/disease-proto.ftl index 7b1c6ced95b..09e461a8627 100644 --- a/Resources/Locale/en-US/backmen/disease/disease-proto.ftl +++ b/Resources/Locale/en-US/backmen/disease/disease-proto.ftl @@ -18,4 +18,5 @@ disease-proto-tongue-twister = Tongue Twister # XenoVirus disease-proto-xeno = XenoVirus +disease-proto-xeno-slerm = Slerm Alpha-virus disease-proto-xenodrone = XenoVirus diff --git a/Resources/Prototypes/_Backmen/Diseases/furry_virus.yml b/Resources/Prototypes/_Backmen/Diseases/furry_virus.yml index 00777dcacf4..21b0c2f34a5 100644 --- a/Resources/Prototypes/_Backmen/Diseases/furry_virus.yml +++ b/Resources/Prototypes/_Backmen/Diseases/furry_virus.yml @@ -7,11 +7,18 @@ # fake: true # disease: FurryVirus + - type: emote id: BCatMeow name: chat-emote-name-BCatMeow category: Vocal chatMessages: ["chat-emote-msg-BCatMeow"] + +- type: disease + parent: FurryVirus + id: FurryVirusPlus + cures: [] + - type: disease id: FurryVirus name: disease-proto-furry-virus diff --git a/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml b/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml index f849357aa7a..3ec85c84d9d 100644 --- a/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml +++ b/Resources/Prototypes/_Backmen/Diseases/noninfectious.yml @@ -145,7 +145,7 @@ - type: disease id: XenoMaidVirus - name: disease-proto-xeno-maid + name: disease-proto-xeno-slerm cureResist: 1 infectious: false stages: @@ -203,15 +203,23 @@ stages: - 2 - !type:DiseasePolymorph - probability: 0.070 + probability: 0.07 polymorphId: XenoMaidMorph # >w< polymorphMessage: disease-xeno-polymorph polymorphSound: path: /Audio/Animals/cat_meow.ogg stages: - 2 + - !type:DiseasePolymorph + probability: 0.001 + polymorphId: XenoQueenMorph # >w< + polymorphMessage: disease-xeno-polymorph + polymorphSound: + path: /Audio/Animals/cat_meow.ogg + stages: + - 2 cures: - !type:DiseaseReagentCure reagent: ReagentId: Diphenylmethylamine # the hardest-to-get med known to mankind... good luck - min: 1 + min: 5 diff --git a/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml b/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml index 4120ab2f947..9d1476b6f3d 100644 --- a/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml +++ b/Resources/Prototypes/_Backmen/Entities/Mobs/NPCs/TGMC_xeno.yml @@ -221,6 +221,17 @@ - id: WeaponXenoHealingSpit - id: PinpointerXeno - type: XenoAcidSpiller + - type: SolutionContainerManager + solutions: + udder: + maxVol: 250 + reagents: + - ReagentId: SlermQueenPlus + Quantity: 30 + - type: Udder + reagentId: SlermQueenPlus + quantityPerUpdate: 25 + growthDelay: 30 - type: Destructible thresholds: - trigger: