Fix cult door

This commit is contained in:
Aviu00
2024-01-28 08:28:30 +03:00
parent 6781a6c350
commit 5cec339558
4 changed files with 102 additions and 42 deletions

View File

@@ -3,6 +3,7 @@ using Content.Server.Administration.Logs;
using Content.Server.Atmos.Components;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Power.EntitySystems;
using Content.Server.White.Cult.Structures;
using Content.Shared.Database;
using Content.Shared.Doors.Components;
using Content.Shared.Doors.Systems;
@@ -156,7 +157,7 @@ public sealed class DoorSystem : SharedDoorSystem
{
if (TryComp<AirlockComponent>(uid, out var airlockComponent))
{
if (_bolts.IsBolted(uid) || !this.IsPowered(uid, EntityManager))
if (_bolts.IsBolted(uid) || !this.IsPowered(uid, EntityManager) && !HasComp<RunicDoorComponent>(uid)) // WD EDIT
return;
if (door.State == DoorState.Closed)

View File

@@ -64,11 +64,11 @@ public sealed class RunicDoorSystem : EntitySystem
return false;
var direction = Transform(user).MapPosition.Position - Transform(airlock).MapPosition.Position;
var impulseVector = direction * 7000;
var impulseVector = direction * 2000;
_physics.ApplyLinearImpulse(user, impulseVector);
_stunSystem.TryParalyze(user, TimeSpan.FromSeconds(3), true);
return false;
}
}
}

View File

@@ -196,17 +196,25 @@
sprite: Structures/Walls/cult.rsi
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 1200
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:SpawnEntitiesBehavior
spawn:
CultGirder:
min: 1
max: 1
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/metalbreak.ogg
- !type:ChangeConstructionNodeBehavior
node: girder
- !type:DoActsBehavior
acts: [ "Destruction" ]
acts: ["Destruction"]
destroySound:
path: /Audio/Effects/metalbreak.ogg
- type: IconSmooth
key: walls
base: cult

View File

@@ -1,40 +1,91 @@
- type: entity
id: AirlockGlassCult
parent: Airlock
parent: BaseStructure
name: runic airlock
description: Strange glass airlock with a rune.
components:
- type: MeleeSound
soundGroups:
Brute:
path:
"/Audio/Effects/glass_hit.ogg"
- type: Door
occludes: false
- type: Occluder
enabled: false
- type: Sprite
sprite: /Textures/White/Cult/Structures/cult_airlock.rsi
- type: Fixtures
fixtures:
airlockFix:
shape:
!type:PhysShapeAabb
bounds: "-0.49,-0.49,0.49,0.49" # don't want this colliding with walls or they won't close
density: 100
mask:
- FullTileMask
layer: #removed opaque from the layer, allowing lasers to pass through glass airlocks
- GlassAirlockLayer
- type: LayerChangeOnWeld
unWeldedLayer: GlassAirlockLayer
weldedLayer: GlassLayer
- type: RadiationBlocker
resistance: 2
- type: RunicDoor
- type: Construction
graph: AirlockGlassCult
node: airlock
- type: MeleeSound
soundGroups:
Brute:
path:
"/Audio/Effects/glass_hit.ogg"
- type: InteractionOutline
- type: Sprite
sprite: /Textures/White/Cult/Structures/cult_airlock.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- state: closed_unlit
shader: unshaded
map: ["enum.DoorVisualLayers.BaseUnlit"]
- state: welded
map: ["enum.WeldableLayers.BaseWelded"]
visible: false
- state: bolted_unlit
shader: unshaded
map: ["enum.DoorVisualLayers.BaseBolted"]
- state: emergency_unlit
map: ["enum.DoorVisualLayers.BaseEmergencyAccess"]
shader: unshaded
- state: panel_closed
map: ["enum.WiresVisualLayers.MaintenancePanel"]
visible: false
- type: AnimationPlayer
- type: Physics
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.49,-0.49,0.49,0.49" # don't want this colliding with walls or they won't close
density: 100
mask:
- FullTileMask
layer:
- GlassAirlockLayer
- type: Door
occludes: false
crushDamage:
types:
Blunt: 15
openSound:
path: /Audio/Machines/airlock_open.ogg
closeSound:
path: /Audio/Machines/airlock_close.ogg
denySound:
path: /Audio/Machines/airlock_deny.ogg
- type: Airlock
openUnlitVisible: true
- type: DoorBolt
- type: Appearance
- type: Airtight
fixVacuum: true
noAirWhenFullyAirBlocked: false
- type: RadiationBlocker
resistance: 2
- type: Occluder
enabled: false
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 500
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- type: RunicDoor
- type: ApcPowerReceiver
needsPower: false
- type: Construction
graph: AirlockGlassCult
node: airlock
- type: PlacementReplacement
key: walls
placement:
mode: SnapgridCenter
- type: entity
id: CultGirder
@@ -79,7 +130,7 @@
behaviors:
- !type:SpawnEntitiesBehavior
spawn:
SheetSteel1:
CultRunicMetal1:
min: 1
max: 1
- !type:DoActsBehavior