* Add brass material, bars

Introduces the new brass material, including its prototype, stack, and bar entities, along with associated sprites. Updates English and Russian localization files to include brass and adds a new construction condition for mana power. Also moves glass sheet entities to the correct file.

* Add CP14ManaFilled construction condition

Introduces a new construction condition that checks if an entity's mana container is fully filled. Includes examination feedback and construction guide entry for user clarity.

* electromancy respawn

* Update T2.yml

* Update meta.json

* ffif

* Update speed_ballade.yml

* Update thaumaturgy.yml

* Update undead.yml
This commit is contained in:
Red
2025-07-05 14:54:09 +03:00
committed by GitHub
parent 82876b2c6f
commit a68da0eacd
35 changed files with 235 additions and 300 deletions

View File

@@ -0,0 +1,41 @@
using Content.Shared._CP14.MagicEnergy.Components;
using Content.Shared.Construction;
using Content.Shared.Examine;
using JetBrains.Annotations;
using Robust.Shared.Utility;
namespace Content.Server._CP14.Construction.Condition;
/// <summary>
/// Makes the condition fail if any entities on a tile have (or not) a component.
/// </summary>
[UsedImplicitly]
[DataDefinition]
public sealed partial class CP14ManaFilled : IGraphCondition
{
public bool Condition(EntityUid uid, IEntityManager entityManager)
{
if (!entityManager.TryGetComponent(uid, out CP14MagicEnergyContainerComponent? container))
return true;
return container.Energy >= container.MaxEnergy;
}
public bool DoExamine(ExaminedEvent args)
{
if (Condition(args.Examined, IoCManager.Resolve<IEntityManager>()))
return false;
args.PushMarkup(Loc.GetString("cp14-construction-condition-mana-filled"));
return true;
}
public IEnumerable<ConstructionGuideEntry> GenerateGuideEntry()
{
yield return new ConstructionGuideEntry()
{
Localization = "cp14-construction-condition-mana-filled",
Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/_CP14/Actions/Spells/meta.rsi"), "mana"),
};
}
}

View File

@@ -0,0 +1 @@
cp14-construction-condition-mana-filled = The structure must be fully powered by mana.

View File

@@ -6,6 +6,7 @@ cp14-material-stone-block = stone
cp14-material-cloth = cloth
cp14-material-copper = copper
cp14-material-iron = iron
cp14-material-brass = brass
cp14-material-gold = gold
cp14-material-mithril = mithril
cp14-material-lucens-planks = lucens planks

View File

@@ -9,6 +9,7 @@ cp14-stack-compost = compost piles
cp14-stack-copper-bars = copper bars
cp14-stack-iron-bars = iron bars
cp14-stack-brass-bars = brass bars
cp14-stack-gold-bars = gold bars
cp14-stack-mithril-bars = mithril bars

View File

@@ -0,0 +1 @@
cp14-construction-condition-mana-filled = Структура должна быть полностью запитана маной.

View File

@@ -6,6 +6,7 @@ cp14-material-stone-block = камень
cp14-material-cloth = ткань
cp14-material-copper = медь
cp14-material-iron = железо
cp14-material-brass = латунь
cp14-material-gold = золото
cp14-material-mithril = мифрил
cp14-material-lucens-planks = люценсовые доски

View File

@@ -9,6 +9,7 @@ cp14-stack-compost = кучи компоста
cp14-stack-copper-bars = медные слитки
cp14-stack-iron-bars = железные слитки
cp14-stack-brass-bars = латунные слитки
cp14-stack-gold-bars = золотые слитки
cp14-stack-mithril-bars = мифриловые слитки

View File

@@ -1,93 +0,0 @@
- type: entity
id: CP14ActionSpellHealFromDeathBallade
parent: CP14ActionSpellBase
name: Healing from death ballade
description: Your music is filled with healing magic, fast healing all the creatures around you.
components:
- type: Sprite
sprite: _CP14/Actions/Spells/necromancy.rsi
state: dead_heal_ballade
- type: CP14MagicEffectCastSlowdown
speedMultiplier: 1.0
- type: CP14MagicEffectManaCost
manaCost: 1
- type: CP14MagicEffect
magicType: Life
effects:
- !type:CP14SpellSpawnEntityOnTarget # TODO заставить работать только на нежить
spawns:
- CP14AreaEntityEffectDeadHealBallade
- type: CP14MagicEffectRequiredMusicTool
- type: CP14MagicEffectCastingVisual
proto: CP14RuneDeadHealBallade
- type: Action
icon:
sprite: _CP14/Actions/Spells/necromancy.rsi
state: dead_heal_ballade
- type: InstantAction
event: !type:CP14ToggleableInstantActionEvent
effectFrequency: 1
cooldown: 15
castTime: 120
hidden: true
- type: entity
id: CP14AreaEntityEffectDeadHealBallade
categories: [ HideSpawnMenu ]
save: false
components:
- type: TimedDespawn
lifetime: 1.6
- type: CP14AreaEntityEffect
range: 3
maxTargets: 4
whitelist:
components:
- MobState
effects:
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectDeadHealBallade
- !type:CP14SpellApplyEntityEffect
effects:
- !type:HealthChange
damage:
types:
Slash: -1.0
Blunt: -1.0
Piercing: -1.0
Cold: -0.80
Heat: -0.80
Shock: -0.80
Poison: -1.0
Bloodloss: -1.5
Caustic: -0.5
- type: entity
id: CP14ImpactEffectDeadHealBallade
parent: CP14BaseMagicImpact
categories: [ HideSpawnMenu ]
save: false
components:
- type: Sprite
sprite: _CP14/Effects/music.rsi
layers:
- state: notes_5
color: "#36937b"
shader: unshaded
- type: entity
id: CP14RuneDeadHealBallade
parent: CP14BaseMagicRune
categories: [ HideSpawnMenu ]
save: false
components:
- type: PointLight
color: "#54e194"
- type: Sprite
sprite: _CP14/Effects/music.rsi
layers:
- state: notes_3
color: "#54e194"
shader: unshaded

View File

@@ -1,66 +0,0 @@
- type: entity
id: CP14ActionSpellResurrectionDead
parent: CP14ActionSpellBase
name: Death resurrection
description: You resurrect the target and cure it from damage.
components:
- type: Sprite
sprite: _CP14/Actions/Spells/necromancy.rsi
state: cure_dead
- type: CP14MagicEffectCastSlowdown
speedMultiplier: 0.9
- type: CP14MagicEffectManaCost
manaCost: 20
- type: CP14MagicEffectAliveTargetRequired
inverted: true
- type: CP14MagicEffect
magicType: Life
telegraphyEffects:
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectResurrection
effects:
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectResurrection
- !type:CP14SpellResurrectionEffect
- !type:CP14SpellApplyEntityEffect
effects:
- !type:HealthChange
damage:
types:
Asphyxiation: -500
Bloodloss: -100
Blunt: -25
Caustic: -25
Cold: -25
Heat: -50
Piercing: -25
Poison: -25
Radiation: -25
Shock: -25
Slash: -25
- !type:Jitter
- type: CP14MagicEffectVerbalAspect
startSpeech: "Surge..."
endSpeech: "Hominem mortuum"
- type: CP14MagicEffectCastingVisual
proto: CP14RuneResurrection
- type: Action
icon:
sprite: _CP14/Actions/Spells/necromancy.rsi
state: cure_dead
- type: TargetAction
range: 10
interactOnMiss: false
- type: EntityTargetAction
whitelist:
components:
- MobState
canTargetSelf: false
event: !type:CP14DelayedEntityTargetActionEvent
cooldown: 10
castDelay: 2
breakOnMove: false
breakOnDamage: false

View File

@@ -1,20 +1,17 @@
- type: entity
id: CP14ActionSpellResurrection
parent: CP14ActionSpellBase
name: Resurrection
description: You're trying to put the soul back into the body.
name: Revitalizing discharge
description: You strike the dying target with a safe electric shock, causing its heart to beat again.
components:
- type: Sprite
sprite: _CP14/Actions/Spells/necromancy.rsi
state: resurrection
- type: CP14MagicEffectCastSlowdown
speedMultiplier: 0.2
- type: CP14MagicEffectManaCost
manaCost: 100
manaCost: 50
- type: CP14MagicEffectAliveTargetRequired
inverted: true
- type: CP14MagicEffect
magicType: Life
magicType: Energia
telegraphyEffects:
- !type:CP14SpellSpawnEntityOnTarget
spawns:
@@ -23,20 +20,15 @@
- !type:CP14SpellSpawnEntityOnTarget
spawns:
- CP14ImpactEffectResurrection
- CP14ElectrifiedEffect
- !type:CP14SpellResurrectionEffect
- !type:CP14SpellApplyEntityEffect
effects:
- !type:ChemVomit
probability: 0.25
- !type:Emote
showInChat: false
emote: Cough
probability: 0.3
- !type:HealthChange
damage:
types:
Asphyxiation: -500
Bloodloss: -10
Shock: 10
- !type:Jitter
- type: CP14MagicEffectVerbalAspect
startSpeech: "Redi animam meam..."
@@ -45,8 +37,8 @@
proto: CP14RuneResurrection
- type: Action
icon:
sprite: _CP14/Actions/Spells/necromancy.rsi
state: resurrection
sprite: _CP14/Actions/Spells/electromancy.rsi
state: defib
- type: TargetAction
range: 7
interactOnMiss: false
@@ -56,8 +48,8 @@
components:
- MobState
event: !type:CP14DelayedEntityTargetActionEvent
cooldown: 300
castDelay: 10
cooldown: 150
castDelay: 5
breakOnMove: true
- type: entity
@@ -86,7 +78,7 @@
- type: Sprite
layers:
- state: wave_up
color: "#55877a"
color: "#e8ff4c"
shader: unshaded
- type: entity

View File

@@ -4,15 +4,12 @@
name: Speed ballade
description: Your music is filled with accelerating magic, speeding up the movement of all creatures nearby
components:
- type: Sprite
sprite: _CP14/Actions/Spells/healing.rsi
state: speed_music
- type: CP14MagicEffectCastSlowdown
speedMultiplier: 1
- type: CP14MagicEffectManaCost
manaCost: 1
- type: CP14MagicEffect
magicType: Life
magicType: Energia
effects:
- !type:CP14SpellArea
affectCaster: true
@@ -36,7 +33,7 @@
proto: CP14RuneSpeedBallade
- type: Action
icon:
sprite: _CP14/Actions/Spells/healing.rsi
sprite: _CP14/Actions/Spells/electromancy.rsi
state: speed_music
- type: InstantAction
event: !type:CP14ToggleableInstantActionEvent

View File

@@ -104,11 +104,7 @@
- CP14ActionSpellManaGiftElf
- CP14ActionSpellMagicSplitting
- CP14ActionSpellManaTrance
- type: CP14SpellStorage
grantAccessToSelf: true
spells:
- CP14ActionSpellResurrectionDead
- CP14ActionSpellShadowStep
- type: entity
id: CP14MobUndeadSkeletonBardT2
parent: CP14MobUndeadSkeletonDemiplaneT2
@@ -121,7 +117,6 @@
- type: CP14SpellStorage
grantAccessToSelf: true
spells:
- CP14ActionSpellHealFromDeathBallade
- CP14ActionSpellMagicBallade
- CP14ActionSpellSpeedBallade
- CP14ActionSpellPeaceBallade

View File

@@ -66,10 +66,6 @@
- CP14ActionSpellManaGiftElf
- CP14ActionSpellMagicSplitting
- CP14ActionSpellManaTrance
- type: CP14SpellStorage
grantAccessToSelf: true
spells:
- CP14ActionSpellResurrectionDead
- type: Loadout
prototypes:
- CP14MobSkeletonWizardTownRaid

View File

@@ -43,8 +43,6 @@
- type: Stack
count: 10
- type: entity
id: CP14IronBar1
parent: BaseItem
@@ -90,6 +88,50 @@
- type: Stack
count: 10
- type: entity
id: CP14BrassBar1
parent: BaseItem
name: brass bar
suffix: 1
description: The best friend for magotechnology. The secrets of its production are hidden.
categories: [ ForkFiltered ]
components:
- type: Item
size: Normal
- type: Sprite
sprite: _CP14/Objects/Materials/brass_bar.rsi
layers:
- state: bar
map: ["base"]
- type: Appearance
- type: Stack
stackType: CP14BrassBar
count: 1
baseLayer: base
layerStates:
- bar
- bar_2
- bar_3
- type: Material
- type: PhysicalComposition
materialComposition:
CP14Brass: 10
- type: entity
id: CP14BrassBar5
parent: CP14BrassBar1
suffix: 5
components:
- type: Stack
count: 5
- type: entity
id: CP14BrassBar10
parent: CP14BrassBar1
suffix: 10
components:
- type: Stack
count: 10
- type: entity
@@ -138,51 +180,6 @@
- type: Stack
count: 10
- type: entity
id: CP14GlassSheet1
parent: BaseItem
name: glass sheet
description: Treated quartz glass, transmits light well, and is nice to look at!
categories: [ ForkFiltered ]
components:
- type: Item
size: Normal
- type: Sprite
sprite: _CP14/Objects/Materials/glass.rsi
layers:
- state: glass
map: ["base"]
- type: Appearance
- type: Stack
stackType: CP14GlassSheet
count: 1
baseLayer: base
layerStates:
- glass
- glass_2
- glass_3
- type: Material
- type: PhysicalComposition
materialComposition:
CP14Glass: 10
- type: entity
id: CP14GlassSheet5
parent: CP14GlassSheet1
suffix: 5
components:
- type: Stack
count: 5
- type: entity
id: CP14GlassSheet10
parent: CP14GlassSheet1
suffix: 10
components:
- type: Stack
count: 10
- type: entity
id: CP14MithrilBar1
parent: BaseItem
@@ -228,3 +225,5 @@
components:
- type: Stack
count: 10

View File

@@ -108,3 +108,47 @@
core2: ""
core3: ""
core4: ""
- type: entity
id: CP14GlassSheet1
parent: BaseItem
name: glass sheet
description: Treated quartz glass, transmits light well, and is nice to look at!
categories: [ ForkFiltered ]
components:
- type: Item
size: Normal
- type: Sprite
sprite: _CP14/Objects/Materials/glass.rsi
layers:
- state: glass
map: ["base"]
- type: Appearance
- type: Stack
stackType: CP14GlassSheet
count: 1
baseLayer: base
layerStates:
- glass
- glass_2
- glass_3
- type: Material
- type: PhysicalComposition
materialComposition:
CP14Glass: 10
- type: entity
id: CP14GlassSheet5
parent: CP14GlassSheet1
suffix: 5
components:
- type: Stack
count: 5
- type: entity
id: CP14GlassSheet10
parent: CP14GlassSheet1
suffix: 10
components:
- type: Stack
count: 10

View File

@@ -78,6 +78,15 @@
color: "#9093a1"
price: 2
- type: material
id: CP14Brass
stackEntity: CP14IronBar1
name: cp14-material-brass
unit: materials-unit-bar
icon: { sprite: _CP14/Objects/Materials/brass_bar.rsi, state: bar_2 }
color: "#bb7547"
price: 2.5
- type: material
id: CP14Gold
stackEntity: CP14GoldBar1

View File

@@ -15,7 +15,7 @@
skillUiPosition: 0, 4
tree: Electromancy
icon:
sprite: _CP14/Actions/Spells/healing.rsi
sprite: _CP14/Actions/Spells/electromancy.rsi
state: speed_music
effects:
- !type:AddAction
@@ -77,3 +77,17 @@
- !type:NeedPrerequisite
prerequisite: ElectromancyT2
- type: cp14Skill
id: CP14ActionSpellResurrection
skillUiPosition: 12, 4
tree: Electromancy
icon:
sprite: _CP14/Actions/Spells/electromancy.rsi
state: defib
effects:
- !type:AddAction
action: CP14ActionSpellResurrection
restrictions:
- !type:NeedPrerequisite
prerequisite: ElectromancyT3

View File

@@ -111,37 +111,4 @@
action: CP14ActionSpellHealBallade
restrictions:
- !type:NeedPrerequisite
prerequisite: HealingT2
# T3
- type: cp14Skill
id: HealingT3
skillUiPosition: 13, 0
tree: Healing
name: cp14-skill-life-t3-name
learnCost: 0.5
icon:
sprite: _CP14/Actions/skill_tree.rsi
state: heal3
effects:
- !type:ModifyManacost
modifiers:
Life: -0.25
restrictions:
- !type:NeedPrerequisite
prerequisite: HealingT2
- type: cp14Skill
id: CP14ActionSpellResurrection
skillUiPosition: 12, 4
tree: Healing
icon:
sprite: _CP14/Actions/Spells/necromancy.rsi
state: resurrection
effects:
- !type:AddAction
action: CP14ActionSpellResurrection
restrictions:
- !type:NeedPrerequisite
prerequisite: HealingT3
prerequisite: HealingT2

View File

@@ -61,6 +61,13 @@
icon: { sprite: _CP14/Objects/Materials/iron_bar.rsi, state: bar_2 }
maxCount: 10
- type: stack
id: CP14BrassBar
name: cp14-stack-brass-bars
spawn: CP14BrassBar1
icon: { sprite: _CP14/Objects/Materials/brass_bar.rsi, state: bar_2 }
maxCount: 10
- type: stack
id: CP14GoldBar
name: cp14-stack-gold-bars

View File

@@ -11,6 +11,16 @@
service: !type:CP14BuyItemsService
product: CP14EnergyCrystalMediumEmpty
- type: cp14TradingPosition
id: CP14BrassBar5
faction: Thaumaturgy
uiPosition: 1
icon:
sprite: _CP14/Objects/Materials/brass_bar.rsi
state: bar_2
service: !type:CP14BuyItemsService
product: CP14BrassBar5
- type: cp14TradingPosition
id: CP14Paper
faction: Thaumaturgy
@@ -238,8 +248,8 @@
priceMarkup: 5
uiPosition: 9
icon:
sprite: _CP14/Actions/Spells/necromancy.rsi
state: resurrection
sprite: _CP14/Actions/Spells/electromancy.rsi
state: defib
service: !type:CP14BuyItemsService
product: CP14SpellScrollResurrection

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

View File

@@ -9,6 +9,12 @@
"states": [
{
"name": "lightning_strike"
},
{
"name": "speed_music"
},
{
"name": "defib"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

View File

@@ -24,9 +24,6 @@
},
{
"name": "plant_growth"
},
{
"name": "speed_music"
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 515 B

View File

@@ -1,20 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "All right reserved",
"copyright": "Created by TheShuEd",
"states": [
{
"name": "resurrection"
},
{
"name": "cure_dead"
},
{
"name": "dead_heal_ballade"
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

View File

@@ -0,0 +1,20 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-4.0",
"copyright": "Created by TheShuEd (Github)",
"states": [
{
"name": "bar"
},
{
"name": "bar_2"
},
{
"name": "bar_3"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

View File

@@ -0,0 +1,14 @@
{
"version": 1,
"license": "CC-BY-SA-4.0",
"copyright": "Created by TheShuEd (Github) , modified by vladimir.s",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "constuct"
}
]
}