Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Race] Vulpkanin #1595

Merged
merged 29 commits into from
Dec 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Content.Server.Corvax.Speech.Components;

/// <summary>
/// Rrrr!
/// </summary>
[RegisterComponent]
public sealed partial class GrowlingAccentComponent : Component
{

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using System.Text.RegularExpressions;
using Content.Server.Corvax.Speech.Components;
using Content.Server.Speech;
using Robust.Shared.Random;

namespace Content.Server.Corvax.Speech.EntitySystems;

public sealed class GrowlingAccentSystem : EntitySystem
{
[Dependency] private readonly IRobustRandom _random = default!;

public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<GrowlingAccentComponent, AccentGetEvent>(OnAccent);
}

private void OnAccent(EntityUid uid, GrowlingAccentComponent component, AccentGetEvent args)
{
var message = args.Message;

// r => rrr
message = Regex.Replace(
message,
"r+",
_random.Pick(new List<string> { "rr", "rrr" })
);
// R => RRR
message = Regex.Replace(
message,
"R+",
_random.Pick(new List<string> { "RR", "RRR" })
);

// р => ррр
message = Regex.Replace(
message,
"р+",
_random.Pick(new List<string> { "рр", "ррр" })
);
// Р => РРР
message = Regex.Replace(
message,
"Р+",
_random.Pick(new List<string> { "РР", "РРР" })
);

args.Message = message;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-OrganVulpkaninStomach = { ent-OrganAnimalStomach }
.desc = { ent-OrganAnimalStomach.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
ent-PartVulpkanin = vulpkanin body part
.desc = { ent-BasePart.desc }
ent-TorsoVulpkanin = vulpkanin torso
.desc = { ent-PartVulpkanin.desc }
ent-HeadVulpkanin = vulpkanin head
.desc = { ent-PartVulpkanin.desc }
ent-LeftArmVulpkanin = left vulpkanin arm
.desc = { ent-PartVulpkanin.desc }
ent-RightArmVulpkanin = right vulpkanin arm
.desc = { ent-PartVulpkanin.desc }
ent-LeftHandVulpkanin = left vulpkanin hand
.desc = { ent-PartVulpkanin.desc }
ent-RightHandVulpkanin = right vulpkanin hand
.desc = { ent-PartVulpkanin.desc }
ent-LeftLegVulpkanin = left vulpkanin leg
.desc = { ent-PartVulpkanin.desc }
ent-RightLegVulpkanin = right vulpkanin leg
.desc = { ent-PartVulpkanin.desc }
ent-LeftFootVulpkanin = left vulpkanin foot
.desc = { ent-PartVulpkanin.desc }
ent-RightFootVulpkanin = right vulpkanin foot
.desc = { ent-PartVulpkanin.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-MobVulpkanin = Urist McVulp
.desc = { ent-BaseMobVulpkanin.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ent-BaseMobVulpkanin = Urist McVulp
.desc = { ent-BaseMobOrganic.desc }
ent-MobVulpkaninDummy = Urist McHands
.desc = A dummy vulpkanin meant to be used in character setup.
14 changes: 14 additions & 0 deletions Resources/Locale/ru-RU/corvax/markings/vulpkanin.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
marking-PawSocks-pawsocks = Paw socks
marking-PawSocks = Paw socks
marking-FoxTail-vulp_tail = Fox tail
marking-FoxTail = Fox tail
marking-FoxEar-vulp_ear = Fox ear (outer)
marking-FoxEar-vulp_ear_inner = Fox ear (inner)
marking-FoxEar = Fox ear (inner)
marking-WolfTail-wolf_tail = Wolf tail (base)
marking-WolfTail-wolf_tail_inner = Wolf tail (tip)
marking-WolfTail = Wolf tail (tip)
marking-FoxBelly-vulp_belly-torso = Fox belly
marking-FoxBelly = Fox belly
marking-FoxSnout-vulp_face = Fox snout
marking-FoxSnout = Fox snout
1 change: 1 addition & 0 deletions Resources/Locale/ru-RU/corvax/species/species.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
species-name-vulpkanin = Вульпканин
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-OrganVulpkaninStomach = { ent-OrganAnimalStomach }
.desc = { ent-OrganAnimalStomach.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
ent-PartVulpkanin = vulpkanin body part
.desc = { ent-BasePart.desc }
ent-TorsoVulpkanin = vulpkanin torso
.desc = { ent-PartVulpkanin.desc }
ent-HeadVulpkanin = vulpkanin head
.desc = { ent-PartVulpkanin.desc }
ent-LeftArmVulpkanin = left vulpkanin arm
.desc = { ent-PartVulpkanin.desc }
ent-RightArmVulpkanin = right vulpkanin arm
.desc = { ent-PartVulpkanin.desc }
ent-LeftHandVulpkanin = left vulpkanin hand
.desc = { ent-PartVulpkanin.desc }
ent-RightHandVulpkanin = right vulpkanin hand
.desc = { ent-PartVulpkanin.desc }
ent-LeftLegVulpkanin = left vulpkanin leg
.desc = { ent-PartVulpkanin.desc }
ent-RightLegVulpkanin = right vulpkanin leg
.desc = { ent-PartVulpkanin.desc }
ent-LeftFootVulpkanin = left vulpkanin foot
.desc = { ent-PartVulpkanin.desc }
ent-RightFootVulpkanin = right vulpkanin foot
.desc = { ent-PartVulpkanin.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ent-MobVulpkanin = Urist McVulp
.desc = { ent-BaseMobVulpkanin.desc }
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ent-BaseMobVulpkanin = Urist McVulp
.desc = { ent-BaseMobOrganic.desc }
ent-MobVulpkaninDummy = Urist McHands
.desc = A dummy vulpkanin meant to be used in character setup.
7 changes: 7 additions & 0 deletions Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
- type: entity
id: OrganVulpkaninStomach
parent: OrganAnimalStomach
noSpawn: true
components:
- type: Stomach
maxVolume: 50
125 changes: 125 additions & 0 deletions Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# TODO: Add descriptions (many)
# TODO BODY: Part damage
- type: entity
id: PartVulpkanin
parent: [BaseItem, BasePart]
name: "vulpkanin body part"
abstract: true
components:
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 3
- ReagentId: Blood
Quantity: 10

- type: entity
id: TorsoVulpkanin
name: "vulpkanin torso"
parent: [PartVulpkanin, BaseTorso]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "torso_m"
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 10
- ReagentId: Blood
Quantity: 20

- type: entity
id: HeadVulpkanin
name: "vulpkanin head"
parent: [PartVulpkanin, BaseHead]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "head_m"
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 5
- ReagentId: Blood
Quantity: 10

- type: entity
id: LeftArmVulpkanin
name: "left vulpkanin arm"
parent: [PartVulpkanin, BaseLeftArm]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "l_arm"

- type: entity
id: RightArmVulpkanin
name: "right vulpkanin arm"
parent: [PartVulpkanin, BaseRightArm]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "r_arm"

- type: entity
id: LeftHandVulpkanin
name: "left vulpkanin hand"
parent: [PartVulpkanin, BaseLeftHand]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "l_hand"

- type: entity
id: RightHandVulpkanin
name: "right vulpkanin hand"
parent: [PartVulpkanin, BaseRightHand]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "r_hand"

- type: entity
id: LeftLegVulpkanin
name: "left vulpkanin leg"
parent: [PartVulpkanin, BaseLeftLeg]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "l_leg"
- type: MovementBodyPart
walkSpeed : 2.7
sprintSpeed : 4.5

- type: entity
id: RightLegVulpkanin
name: "right vulpkanin leg"
parent: [PartVulpkanin, BaseRightLeg]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "r_leg"
- type: MovementBodyPart
walkSpeed : 2.7
sprintSpeed : 4.5

- type: entity
id: LeftFootVulpkanin
name: "left vulpkanin foot"
parent: [PartVulpkanin, BaseLeftFoot]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "l_foot"

- type: entity
id: RightFootVulpkanin
name: "right vulpkanin foot"
parent: [PartVulpkanin, BaseRightFoot]
components:
- type: Sprite
sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi
state: "r_foot"
49 changes: 49 additions & 0 deletions Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
- type: body
name: "vulpkanin"
id: Vulpkanin
root: torso
slots:
head:
part: HeadVulpkanin
connections:
- torso
organs:
brain: OrganHumanBrain
eyes: OrganHumanEyes
torso:
part: TorsoVulpkanin
organs:
heart: OrganAnimalHeart
lungs: OrganHumanLungs
stomach: OrganVulpkaninStomach
liver: OrganAnimalLiver
kidneys: OrganHumanKidneys
connections:
- left arm
- right arm
- left leg
- right leg
right arm:
part: RightArmVulpkanin
connections:
- right hand
left arm:
part: LeftArmVulpkanin
connections:
- left hand
right hand:
part: RightHandVulpkanin
left hand:
part: LeftHandVulpkanin
right leg:
part: RightLegVulpkanin
connections:
- right foot
left leg:
part: LeftLegVulpkanin
connections:
- left foot
right foot:
part: RightFootVulpkanin
left foot:
part: LeftFootVulpkanin
5 changes: 5 additions & 0 deletions Resources/Prototypes/Corvax/Damage/modifier_sets.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- type: damageModifierSet
id: Vulpkanin # Because of fur is more flammable and more resistant to cold.
coefficients:
Cold: 0.5
Heat: 1.5
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
- type: marking
id: PawSocks
markingCategory: Overlay
bodyPart: RFoot #highest possible layer
speciesRestriction: [Vulpkanin]
sprites:
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: pawsocks

- type: marking
id: FoxTail
bodyPart: Tail
markingCategory: Tail
speciesRestriction: [Vulpkanin]
sprites:
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: vulp_tail

- type: marking
id: FoxEar
bodyPart: HeadTop
markingCategory: HeadTop
speciesRestriction: [Vulpkanin]
sprites:
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: vulp_ear
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: vulp_ear_inner

- type: marking
id: WolfTail
bodyPart: Tail
markingCategory: Tail
speciesRestriction: [Vulpkanin]
sprites:
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: wolf_tail
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: wolf_tail_inner

- type: marking
id: FoxBelly
bodyPart: Chest
markingCategory: Chest
speciesRestriction: [Vulpkanin]
sprites:
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: vulp_belly-torso

- type: marking
id: FoxSnout
bodyPart: Snout
markingCategory: Snout
speciesRestriction: [Vulpkanin]
sprites:
- sprite: Corvax/Mobs/Customization/vulpkanin.rsi
state: vulp_face
Loading
Loading