Skip to content

Commit

Permalink
Вульпканины
Browse files Browse the repository at this point in the history
Файналли, пушистые на космической станции. В этот раз, на основе наработок Корвакса.
  • Loading branch information
temporaldarkness committed Jan 27, 2024
1 parent 2676736 commit 0f1e628
Show file tree
Hide file tree
Showing 43 changed files with 995 additions and 7 deletions.
10 changes: 10 additions & 0 deletions Content.Server/Speech/Components/GrowlingAccentComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Content.Server.Speech.Components;

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

}
33 changes: 33 additions & 0 deletions Content.Server/Speech/EntitySystems/GrowlingAccentSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using System.Text.RegularExpressions;
using Content.Server.Speech.Components;
using Robust.Shared.Random;

namespace Content.Server.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 := rr | rrr
message = Regex.Replace(message, "r+", _random.Pick(new List<string>() { "rr", "rrr" }));
// R := Rr | 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
@@ -1,3 +1,3 @@
marking-FoxTail = Лисий хвост
marking-FoxTail-tail_fox = Лисий хвост
marking-FoxTail-tail_fox_end = Лисий хвост
marking-AnimatedFoxTail = Лисий хвост
marking-AnimatedFoxTail-tail_fox = Лисий хвост
marking-AnimatedFoxTail-tail_fox_end = Лисий хвост
14 changes: 14 additions & 0 deletions Resources/Locale/ru-RU/markings/vulpkanin.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
marking-PawSocks-pawsocks = Носки
marking-PawSocks = Носки
marking-FoxTail-vulp_tail = Лисий хвост
marking-FoxTail = Лисий хвост
marking-FoxEar-vulp_ear = Лисьи уши (внутри)
marking-FoxEar-vulp_ear_inner = Лисьи уши (снаружи)
marking-FoxEar = Лисьи уши
marking-WolfTail-wolf_tail = Волчий хвост (основа)
marking-WolfTail-wolf_tail_inner = Волчий хвост (кончик)
marking-WolfTail = Волчий хвост
marking-FoxBelly-vulp_belly-torso = Лисий животик
marking-FoxBelly = Лисий животик
marking-FoxSnout-vulp_face = Лисья морда
marking-FoxSnout = Лисья морда
1 change: 1 addition & 0 deletions Resources/Locale/ru-RU/species/species.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ species-name-diona = Диона
species-name-arachnid = Арахнид
species-name-moth = Ниан
species-name-skeleton = Скелет
species-name-vulpkanin = Вульпканин
15 changes: 15 additions & 0 deletions Resources/Prototypes/Body/Organs/vulpkanin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
- type: entity
id: OrganVulpkaninStomach
parent: OrganAnimalStomach
noSpawn: true
components:
- type: Stomach
- type: SolutionContainerManager
solutions:
stomach:
maxVol: 50
food:
maxVol: 5
reagents:
- ReagentId: UncookedAnimalProteins
Quantity: 5
123 changes: 123 additions & 0 deletions Resources/Prototypes/Body/Parts/vulpkanin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
- 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: 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: 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: Mobs/Species/Vulpkanin/parts.rsi
state: "l_arm"

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

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

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

- type: entity
id: LeftLegVulpkanin
name: "left vulpkanin leg"
parent: [PartVulpkanin, BaseLeftLeg]
components:
- type: Sprite
sprite: 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: 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: Mobs/Species/Vulpkanin/parts.rsi
state: "l_foot"

- type: entity
id: RightFootVulpkanin
name: "right vulpkanin foot"
parent: [PartVulpkanin, BaseRightFoot]
components:
- type: Sprite
sprite: Mobs/Species/Vulpkanin/parts.rsi
state: "r_foot"
49 changes: 49 additions & 0 deletions Resources/Prototypes/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
7 changes: 7 additions & 0 deletions Resources/Prototypes/Damage/modifier_sets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,13 @@
Radiation: 0.2
Caustic: 0.0

- type: damageModifierSet
id: Vulpkanin # Because of fur is more flammable and more resistant to cold. Blunt resist as a bonus.
coefficients:
Cold: 0.5
Heat: 1.5
Blunt: 0.8

- type: damageModifierSet
id: HellSpawn
coefficients:
Expand Down
Loading

0 comments on commit 0f1e628

Please sign in to comment.