Cult stuff (#249)
* - tweak: Change sounds. * - tweak: Update stun desc. * - add: Add hint. * - tweak: Change juggernaut ability. * - add: Constructs can't harm allies. * - add: Name identifier for constructs. * - add: Pylon now produces oxygen. * - tweak: Change sledgehammer sound. * - tweak: Increase conceal presence audio max distance.
This commit is contained in:
@@ -79,6 +79,7 @@ public sealed class CultRuleSystem : GameRuleSystem<CultRuleComponent>
|
||||
private void OnGetBriefing(Entity<CultistRoleComponent> ent, ref GetBriefingEvent args)
|
||||
{
|
||||
args.Append(Loc.GetString("cult-role-briefing-short"));
|
||||
args.Append(Loc.GetString("cult-role-briefing-hint"));
|
||||
}
|
||||
|
||||
private void OnCultistsStateChanged(EntityUid uid, CultistComponent component, MobStateChangedEvent ev)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Content.Server.Atmos.Piping.Other.Components;
|
||||
using Content.Server.Body.Components;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Server.Maps;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Doors.Components;
|
||||
using Content.Shared.Interaction;
|
||||
@@ -11,7 +11,6 @@ using Content.Shared.Mobs.Systems;
|
||||
using Content.Shared.Physics;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Tag;
|
||||
using Content.Shared._White.Cult;
|
||||
using Content.Shared._White.Cult.Pylon;
|
||||
using Content.Shared._White.Cult.Systems;
|
||||
using Robust.Server.GameObjects;
|
||||
@@ -55,9 +54,7 @@ public sealed class PylonSystem : EntitySystem
|
||||
|
||||
private void OnConceal(Entity<SharedPylonComponent> ent, ref ConcealEvent args)
|
||||
{
|
||||
ent.Comp.Activated = !args.Conceal;
|
||||
UpdateAppearance(ent, ent.Comp);
|
||||
_pointLight.SetEnabled(ent, !args.Conceal);
|
||||
SetActivated(ent, ent.Comp, !args.Conceal);
|
||||
_physics.SetCanCollide(ent, !args.Conceal);
|
||||
}
|
||||
|
||||
@@ -229,12 +226,7 @@ public sealed class PylonSystem : EntitySystem
|
||||
|
||||
if (HasComp<CultistComponent>(user))
|
||||
{
|
||||
comp.Activated = !comp.Activated;
|
||||
|
||||
UpdateAppearance(uid, comp);
|
||||
|
||||
_pointLight.SetEnabled(uid, comp.Activated);
|
||||
|
||||
SetActivated(uid, comp, !comp.Activated);
|
||||
var toggleMsg = Loc.GetString(comp.Activated ? "pylon-toggle-on" : "pylon-toggle-off");
|
||||
_popupSystem.PopupEntity(toggleMsg, uid);
|
||||
return;
|
||||
@@ -272,4 +264,16 @@ public sealed class PylonSystem : EntitySystem
|
||||
|
||||
_appearance.SetData(uid, PylonVisuals.Activated, comp.Activated, appearance);
|
||||
}
|
||||
|
||||
private void SetActivated(EntityUid uid, SharedPylonComponent comp, bool activated)
|
||||
{
|
||||
comp.Activated = activated;
|
||||
|
||||
if (TryComp(uid, out GasMinerComponent? miner))
|
||||
miner.Enabled = activated;
|
||||
|
||||
UpdateAppearance(uid, comp);
|
||||
|
||||
_pointLight.SetEnabled(uid, activated);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -332,7 +332,7 @@ public partial class CultSystem
|
||||
if (success)
|
||||
{
|
||||
_audio.PlayPvs(conceal ? "/Audio/White/Cult/smoke.ogg" : "/Audio/White/Cult/enter_blood.ogg", uid,
|
||||
AudioParams.Default.WithMaxDistance(2f));
|
||||
AudioParams.Default.WithMaxDistance(5f));
|
||||
_bloodstreamSystem.TryModifyBloodLevel(uid, -2, bloodstream, createPuddle: false);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
using Content.Shared.Containers.ItemSlots;
|
||||
using System.Linq;
|
||||
using Content.Shared._White.Cult.Components;
|
||||
using Content.Shared.Containers.ItemSlots;
|
||||
using Content.Shared.Mind.Components;
|
||||
using Content.Shared._White.Cult.UI;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -19,6 +22,13 @@ public partial class CultSystem
|
||||
SubscribeLocalEvent<ConstructShellComponent, ComponentInit>(OnShellInit);
|
||||
SubscribeLocalEvent<ConstructShellComponent, ComponentRemove>(OnShellRemove);
|
||||
SubscribeLocalEvent<ConstructShellComponent, ConstructFormSelectedEvent>(OnShellSelected);
|
||||
SubscribeLocalEvent<ConstructComponent, MeleeHitEvent>(OnMeleeHit);
|
||||
}
|
||||
|
||||
private void OnMeleeHit(Entity<ConstructComponent> ent, ref MeleeHitEvent args)
|
||||
{
|
||||
if (args.HitEntities.Any(e => HasComp<CultistComponent>(e) || HasComp<ConstructComponent>(e)))
|
||||
args.BonusDamage = -args.BaseDamage;
|
||||
}
|
||||
|
||||
private void OnShellSelected(EntityUid uid, ConstructShellComponent component, ConstructFormSelectedEvent args)
|
||||
|
||||
BIN
Resources/Audio/White/Cult/Hammer/fstatk1.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/fstatk1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/White/Cult/Hammer/fstatk2.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/fstatk2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/White/Cult/Hammer/fstatk3.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/fstatk3.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/White/Cult/Hammer/plspnch1.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/plspnch1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/White/Cult/Hammer/plspnch2.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/plspnch2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/White/Cult/Hammer/plspnch3.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/plspnch3.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/White/Cult/Hammer/plspnch4.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/plspnch4.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/White/Cult/Hammer/plspnch5.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/plspnch5.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/White/Cult/Hammer/plspnch6.ogg
Normal file
BIN
Resources/Audio/White/Cult/Hammer/plspnch6.ogg
Normal file
Binary file not shown.
@@ -6,6 +6,7 @@ cult-role-greeting =
|
||||
Слава Нар`си!
|
||||
|
||||
cult-role-briefing-short = Используйте '^' для связи с другими членами культа.
|
||||
cult-role-briefing-hint = Нажмите правой кнопкой мыши по своему персонажу и выберите меню 'Культ' для действий, связанных с культом.
|
||||
|
||||
cult-cond-cultwin = Культ одержал победу
|
||||
cult-cond-cultfailure = Экипаж уничтожил культ
|
||||
|
||||
@@ -28,7 +28,7 @@ ent-InstantActionBloodRites = Кровавые Обряды
|
||||
.desc = Высасывает кровь и исцеляет вас.
|
||||
|
||||
ent-ActionCultStun = Оглушение
|
||||
.desc = Сильное заклинание, которое оглушает и обезмолвливает жертв.
|
||||
.desc = Сильное заклинание, которое оглушает и обезмолвливает жертв. Не работает на священника и на экипаж с чипом защиты разума.
|
||||
|
||||
ent-ActionCultShadowShackles = Теневые Узы
|
||||
.desc = Бесшумное заклинание, которое наложит на человека теневые наручники и заставит вашу жертву замолчать на 10 секунд.
|
||||
|
||||
@@ -15,6 +15,8 @@ ent-CultGirder = руническая балка
|
||||
.desc = Большой конструктивный элемент, изготовленный из металла. На этом есть руна.
|
||||
ent-AirlockGlassCult = рунический шлюз
|
||||
.desc = Странный стеклянный шлюз с руной.
|
||||
ent-WallForceCult = светящаяся стена
|
||||
.desc = Нечестивый щит, блокирующий все атаки.
|
||||
cult-structure-craft-not-enough-metal = Недостаточно металла.
|
||||
cult-structure-craft-craft-failed = Не удалось начать постройку.
|
||||
cult-structure-craft-blocked = Что-то мешает построить.
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
types:
|
||||
Blunt: 10
|
||||
Structural: 10
|
||||
soundHit:
|
||||
collection: HammerHit
|
||||
soundSwing:
|
||||
collection: HammerMiss
|
||||
- type: Wieldable
|
||||
- type: IncreaseDamageOnWield
|
||||
damage:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- type: entity
|
||||
- type: entity
|
||||
id: InstantActionArtificerCreateSoulStone
|
||||
name: artificer-create-soul-stone-action-name
|
||||
description: artificer-create-soul-stone-action-description
|
||||
@@ -98,5 +98,10 @@
|
||||
icon:
|
||||
sprite: /Textures/White/Cult/actions_cult.rsi
|
||||
state: cultforcewall
|
||||
useDelay: 35
|
||||
event: !type:JuggernautCreateWallActionEvent
|
||||
sound: !type:SoundPathSpecifier
|
||||
path: /Audio/Magic/forcewall.ogg
|
||||
useDelay: 40
|
||||
event: !type:InstantSpawnSpellEvent
|
||||
prototype: WallForceCult
|
||||
posData: !type:TargetInFront
|
||||
preventCollide: false
|
||||
|
||||
@@ -69,6 +69,11 @@
|
||||
graph: CultPylon
|
||||
node: pylon
|
||||
- type: Concealable
|
||||
- type: AtmosDevice
|
||||
- type: GasMiner
|
||||
maxExternalPressure: 100
|
||||
spawnAmount: 10
|
||||
spawnGas: Oxygen
|
||||
|
||||
- type: entity
|
||||
id: AltarTome
|
||||
|
||||
@@ -76,6 +76,8 @@
|
||||
tags:
|
||||
- CannotSuicide
|
||||
- DoorBumpOpener
|
||||
- type: NameIdentifier
|
||||
group: Construct
|
||||
|
||||
- type: entity
|
||||
id: JuggernautConstruct
|
||||
@@ -102,6 +104,10 @@
|
||||
types:
|
||||
Structural: 90
|
||||
Blunt: 25
|
||||
soundHit:
|
||||
collection: HammerHit
|
||||
soundSwing:
|
||||
collection: HammerMiss
|
||||
|
||||
- type: entity
|
||||
id: ArtificerConstruct
|
||||
@@ -170,9 +176,11 @@
|
||||
attackRate: 1
|
||||
damage:
|
||||
types:
|
||||
Blunt: 10
|
||||
Piercing: 10
|
||||
Slash: 10
|
||||
Structural: 40
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
|
||||
- type: entity
|
||||
id: ReaperConstruct
|
||||
@@ -200,9 +208,11 @@
|
||||
attackRate: 1
|
||||
damage:
|
||||
types:
|
||||
Blunt: 20
|
||||
Piercing: 20
|
||||
Slash: 20
|
||||
Structural: 80
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
|
||||
- type: entity
|
||||
id: ConstructShell
|
||||
@@ -229,3 +239,7 @@
|
||||
containers:
|
||||
Shard: !type:ContainerSlot
|
||||
- type: CultItem
|
||||
|
||||
- type: nameIdentifierGroup
|
||||
id: Construct
|
||||
prefix: CO
|
||||
|
||||
@@ -128,3 +128,16 @@
|
||||
concealedDesc: Большой металлический каркас; Необходимо покрыть листами металла, чтобы он считался стеной.
|
||||
revealedName: руническая балка
|
||||
revealedDesc: Большой конструктивный элемент, изготовленный из металла. На этом есть руна.
|
||||
|
||||
- type: entity
|
||||
id: WallForceCult
|
||||
parent: WallForce
|
||||
name: glowing wall
|
||||
description: An unholy shield that blocks all attacks.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Cult/Structures/cult_shield.rsi
|
||||
state: icon
|
||||
- type: Icon
|
||||
sprite: White/Cult/Structures/cult_shield.rsi
|
||||
state: icon
|
||||
|
||||
@@ -413,6 +413,10 @@
|
||||
types:
|
||||
Blunt: 24
|
||||
Structural: 80
|
||||
soundHit:
|
||||
collection: HammerHit
|
||||
soundSwing:
|
||||
collection: HammerMiss
|
||||
- type: Item
|
||||
size: Huge
|
||||
sprite: White/Objects/Weapons/Chaplain/hammer.rsi
|
||||
|
||||
16
Resources/Prototypes/_White/SoundCollections/hammer.yml
Normal file
16
Resources/Prototypes/_White/SoundCollections/hammer.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
- type: soundCollection
|
||||
id: HammerHit
|
||||
files:
|
||||
- /Audio/White/Cult/Hammer/plspnch1.ogg
|
||||
- /Audio/White/Cult/Hammer/plspnch2.ogg
|
||||
- /Audio/White/Cult/Hammer/plspnch3.ogg
|
||||
- /Audio/White/Cult/Hammer/plspnch4.ogg
|
||||
- /Audio/White/Cult/Hammer/plspnch5.ogg
|
||||
- /Audio/White/Cult/Hammer/plspnch6.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HammerMiss
|
||||
files:
|
||||
- /Audio/White/Cult/Hammer/fstatk1.ogg
|
||||
- /Audio/White/Cult/Hammer/fstatk2.ogg
|
||||
- /Audio/White/Cult/Hammer/fstatk3.ogg
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "https://github.com/frosty-dev/white",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon",
|
||||
"delays": [
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1,
|
||||
0.1,
|
||||
0.1,
|
||||
0.1,
|
||||
0.1,
|
||||
1
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user