fix(bloodcult): Match wega exactly - remove SubBloodCult, add missing prototypes

- Remove SubBloodCult from all SubGamemodes variants (doesn't exist in wega)
- Remove SubGamemodesRuleNoBloodCult entity (doesn't exist in wega)
- Use SubGamemodesRule in BloodCult preset (matching wega)
- Add missing weapon prototypes: sword.yml (Chainsword, ForceSword, etc)
- Add missing weapon prototypes: knife.yml (CombatCrowbar, ArrhythmicKnife)
- Add RuneMetal material prototype
- Add metal.rsi and blood_dagger.rsi textures
- Add ru-RU localization for stacks and materials
- Replace stub C# files with exact wega versions (remove TODOs)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-19 22:19:28 +01:00
committed by wylab
parent 6c2fb13345
commit 9770d5e2be
20 changed files with 358 additions and 58 deletions

View File

@@ -1,28 +1,24 @@
// TODO: Port full Disease system from wega if disease mechanics are desired.
// Currently this is a stub component to allow clothing prototypes to load.
// The full system is in ss14-wega: Content.Server/_Wega/Disease/
namespace Content.Shared.Disease.Components;
/// <summary>
/// Value added to clothing to give its wearer
/// protection against infection from diseases.
/// </summary>
[RegisterComponent]
public sealed partial class DiseaseProtectionComponent : Component
namespace Content.Shared.Disease.Components
{
/// <summary>
/// Float value between 0 and 1, will be subtracted
/// from the infection chance (which is base 0.7).
/// Reference guide is a full biosuit w/gloves and mask
/// should add up to exactly 0.7.
/// Value added to clothing to give its wearer
/// protection against infection from diseases
/// </summary>
[DataField("protection")]
public float Protection = 0.1f;
/// <summary>
/// Is the component currently being worn and affecting someone's disease
/// resistance? Making the unequip check not totally CBT.
/// </summary>
public bool IsActive = false;
[RegisterComponent]
public sealed partial class DiseaseProtectionComponent : Component
{
/// <summary>
/// Float value between 0 and 1, will be subtracted
/// from the infection chance (which is base 0.7)
/// Reference guide is a full biosuit w/gloves & mask
/// should add up to exactly 0.7
/// </summary>
[DataField("protection")]
public float Protection = 0.1f;
/// <summary>
/// Is the component currently being worn and affecting someone's disease
/// resistance? Making the unequip check not totally CBT
/// </summary>
public bool IsActive = false;
}
}

View File

@@ -1,12 +1,5 @@
// TODO: Port full Surgery sterility system from wega if surgery infection mechanics are desired.
// Currently this is a stub component to allow clothing prototypes to load.
// The full system is in ss14-wega: Content.Server/_Wega/Surgery/SurgerySystem.Sterility.cs
namespace Content.Shared.Surgery.Components;
/// <summary>
/// Clothing component that provides a sterility modifier for surgery.
/// </summary>
[RegisterComponent]
public sealed partial class ClothingSterilityComponent : Component
{

View File

@@ -0,0 +1 @@
materials-runemetal = рунический метал

View File

@@ -0,0 +1,27 @@
stack-runemetal =
{ $amount ->
[1] лист
[few] листа
*[other] листов
} рунической стали
stack-capacitor =
{ $amount ->
[1] конденсатор
[few] конденсатора
*[other] конденсаторов
}
stack-matter-bin =
{ $amount ->
[1] ёмкость материи
[few] ёмкостей материи
*[other] ёмкостей материи
}
stack-sepia-floor = стальная светлая плитка
stack-tyriumpack = пакет тириума
stack-tourniquet =
{ $amount ->
[1] турникет
[few] турникета
*[other] турникетов
}

View File

@@ -0,0 +1,81 @@
- type: entity
name: combat crowbar
parent: [BaseKnife, BaseRestrictedContraband]
id: CombatCrowbar
description: A deadly knife designed for close combat. Thanks to the improved handle, it also works as a crowbar.
components:
- type: Tag
tags:
- CombatKnife
- Knife
- Crowbar
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/combat_crowbar.rsi
state: icon
- type: MeleeWeapon
wideAnimationRotation: -135
attackRate: 1.5
damage:
types:
Slash: 12
- type: EmbeddableProjectile
sound: /Audio/Weapons/star_hit.ogg
offset: -0.15,0.0
- type: LandAtCursor
- type: DamageOtherOnHit
damage:
types:
Slash: 10
- type: Item
sprite: _Wega/Objects/Weapons/Melee/combat_crowbar.rsi
storedSprite:
state: storage
sprite: _Wega/Objects/Weapons/Melee/combat_crowbar.rsi
- type: DisarmMalus
malus: 0.225
- type: ThrowingAngle
angle: 225
- type: Tool
qualities:
- Prying
useSound:
path: /Audio/Items/crowbar.ogg
- type: Prying
- type: ToolTileCompatible
- type: entity
parent: BaseKnife
id: ArrhythmicKnife
name: arrhythmic knife
description: They say that fear kills the mind, but sticking a knife in your head also works.
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/arrhythmic_knife.rsi
state: icon
- type: Clothing
sprite: _Wega/Objects/Weapons/Melee/arrhythmic_knife.rsi
slots:
- Belt
- type: MeleeWeapon
attackRate: 2.25
damage:
types:
Slash: 15
soundHit:
path: /Audio/Weapons/bladeslice.ogg
- type: EmbeddableProjectile
sound: /Audio/Weapons/star_hit.ogg
offset: -0.15,0.0
- type: LandAtCursor
- type: DamageOtherOnHit
damage:
types:
Slash: 15
- type: DisarmMalus
malus: 0.225
- type: ThrowingAngle
angle: 225
- type: ClothingSpeedModifier
walkModifier: 1.1
sprintModifier: 1.1
- type: HeldSpeedModifier

View File

@@ -0,0 +1,166 @@
- type: entity
parent: Claymore
id: WeaponChainsword
name: chainsword
description: Do not allow the heretic vulpa to live.
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/chainsword.rsi
- type: MeleeWeapon
soundHit:
path: /Audio/Weapons/chainsaw.ogg
params:
volume: -3
- type: Item
storedSprite:
state: icon
sprite: _Wega/Objects/Weapons/Melee/chainsword.rsi
shape:
- 0,0,0,3
- type: Clothing
sprite: _Wega/Objects/Weapons/Melee/chainsword.rsi
slots:
- Belt
- type: entity
parent: Claymore
id: WeaponForceSword
name: force sword
description: It shines with the power of faith. Or the energy of a battery.
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/force_sword.rsi
- type: Clothing
sprite: _Wega/Objects/Weapons/Melee/force_sword.rsi
- type: Item
storedSprite:
state: icon
sprite: _Wega/Objects/Weapons/Melee/force_sword.rsi
- type: entity
parent: [ Katana, Claymore ]
id: WeaponHanzoSteel
name: force sword
description: This katana can cut through a holy Claymore. Along.
components:
- type: Item
storedSprite:
state: icon
sprite: Objects/Weapons/Melee/katana.rsi
- type: entity
parent: Claymore
id: WeaponMultiverseSword
name: multiverse sword
description: Once a messenger of interdimensional war, now it's just a dormant souvenir. But still sharp.
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/multiverse_sword.rsi
- type: Clothing
sprite: _Wega/Objects/Weapons/Melee/multiverse_sword.rsi
- type: Item
storedSprite:
state: icon
sprite: _Wega/Objects/Weapons/Melee/multiverse_sword.rsi
- type: entity
parent: BaseSword
id: WeaponUnrealSword
name: UNREAL SORD
description: He is so indescribably HOLY that you will have problems just holding him.
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/unreal_sword.rsi
- type: NullRod
firstNullDamage: 99.99
nullDamage: 0.01
- type: MeleeWeapon
damage:
types:
Asphyxiation: 0.42
Bloodloss: 0.31
Blunt: 0.15
Cellular: 0.27
Caustic: 0.33
Cold: 0.18
Heat: 0.22
Piercing: 0.11
Poison: 0.49
Radiation: 0.25
Shock: 0.19
Slash: 0.14
Structural: 0.01
Holy: 1.07
soundHit:
path: /Audio/_Wega/Effects/null.ogg
- type: PointLight
radius: 1.2
energy: 2.20 # ///...\\\
castShadows: false
color: "#0639f9"
- type: Item
shape:
- 0,0,0,3
- type: Clothing
sprite: _Wega/Objects/Weapons/Melee/unreal_sword.rsi
slots:
- Belt
- type: entity
parent: BaseSword
id: WeaponReaperScythe
name: reaper scythe
description: Don't ask who the bell is tolling for...
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/reaper_scythe.rsi
- type: NullRod
- type: MeleeWeapon
attackRate: 2
damage:
types:
Slash: 17.5
soundHit:
path: /Audio/Weapons/bladeslice.ogg
- type: Item
shape:
- 0,0,1,3
- type: Clothing
sprite: _Wega/Objects/Weapons/Melee/reaper_scythe.rsi
slots:
- Back
- SuitStorage
- type: DisarmMalus
- type: entity
parent: WeaponReaperScythe
id: WeaponHighFrequencyBlade
name: high frequency blade
description: Bad references are the DNA of the soul.
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/hfrequency_sword.rsi
- type: Clothing
sprite: _Wega/Objects/Weapons/Melee/hfrequency_sword.rsi
- type: entity
parent: WeaponReaperScythe
id: WeaponPossessedBlade
name: possessed blade
description: When the station is in chaos, it's nice to have a friend by your side.
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/possessed_blade.rsi
- type: Clothing
sprite: _Wega/Objects/Weapons/Melee/possessed_blade.rsi
slots:
- Belt
- type: GhostRole
allowSpeech: true
makeSentient: true
name: ghost-role-information-possessed-blade-name
description: ghost-role-information-possessed-blade-description
rules: ghost-role-information-familiar-rules
raffle:
settings: default
- type: GhostTakeoverAvailable

View File

@@ -0,0 +1,7 @@
- type: material
id: RuneMetal
stackEntity: SheetRuneMetal1
name: materials-runemetal
icon: { sprite: _Wega/Objects/Materials/Sheets/metal.rsi, state: runemetal }
color: "#3f4857"
price: 0.05

View File

@@ -8,7 +8,7 @@
showInVote: false
rules:
- BloodCult
- SubGamemodesRuleNoBloodCult
- SubGamemodesRule
- BasicStationEventScheduler
- MeteorSwarmScheduler
- SpaceTrafficControlEventScheduler

View File

@@ -1,4 +1,4 @@
# Wylab SubGamemodes overrides - adds Vampire, BloodBrothers, and BloodCult to all variants
# Wylab SubGamemodes overrides - adds Vampire and BloodBrothers to all variants
- type: entity
parent: BaseGameRule
@@ -16,8 +16,6 @@
prob: 0.3
- id: SubBloodBrothers
prob: 0.3
- id: SubBloodCult
prob: 0.05
- type: entity
parent: BaseGameRule
@@ -33,8 +31,6 @@
prob: 0.3
- id: SubBloodBrothers
prob: 0.3
- id: SubBloodCult
prob: 0.05
- type: entity
parent: BaseGameRule
@@ -50,8 +46,6 @@
prob: 0.3
- id: SubBloodBrothers
prob: 0.3
- id: SubBloodCult
prob: 0.05
- type: entity
parent: BaseGameRule
@@ -65,22 +59,3 @@
prob: 0.3
- id: SubBloodBrothers
prob: 0.3
- id: SubBloodCult
prob: 0.05
- type: entity
parent: BaseGameRule
id: SubGamemodesRuleNoBloodCult
components:
- type: SubGamemodes
rules:
- id: Thief
prob: 0.5
- id: SubWizard
prob: 0.05
- id: Xenoborgs
prob: 0.05
- id: SubVampire
prob: 0.3
- id: SubBloodBrothers
prob: 0.3

View File

@@ -0,0 +1,28 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Sprite taken from https://github.com/ss220-space/Paradise & Resprite created by svarshiksatanist",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "runemetal"
},
{
"name": "runemetal_2"
},
{
"name": "runemetal_3"
},
{
"name": "runemetal-inhand-left",
"directions": 4
},
{
"name": "runemetal-inhand-right",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

View File

@@ -0,0 +1,26 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Created by discord:dragondidlo",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "equipped-BELT",
"directions": 4
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}