Fixes and stuff (#229)

* - add: Add rites description.

* - fix: Fix fuel tank explosion.

* - tweak: Jug can attack now.

* - tweak: Less material size.

* - fix: Translation fix.

* - tweak: Dead people are collideable.

* - tweak: Less small mobs damage.

* - add: You can now shoot yourself.

* - add: Mood effect for felinids.

* Revert "- fix: Fix fuel tank explosion."

This reverts commit 72d9d6d2c5a3e579c50e8fa63a58e6d989dbe9e9.

* - fix: Keyhole fixes.

* - tweak: Doors now cost less material.

* - fix: Change loc.
This commit is contained in:
Aviu00
2024-03-24 18:43:51 +09:00
committed by GitHub
parent 2b227be6f6
commit daffcf9a2d
19 changed files with 159 additions and 70 deletions

View File

@@ -91,6 +91,7 @@ public sealed class InteractionPopupSystem : EntitySystem
{ {
var ev = new MoodEffectEvent("PetAnimal"); var ev = new MoodEffectEvent("PetAnimal");
RaiseLocalEvent(user, ev); RaiseLocalEvent(user, ev);
RaiseLocalEvent(uid, new MoodEffectEvent("BeingPet"));
} }
//WD end //WD end
} }

View File

@@ -0,0 +1,33 @@
using Content.Shared._White.Keyhole.Components;
using Content.Shared.Construction;
using Content.Shared.Examine;
using JetBrains.Annotations;
namespace Content.Server._White.Construction;
[UsedImplicitly, DataDefinition]
public sealed partial class DoorUnlocked : IGraphCondition
{
public bool Condition(EntityUid uid, IEntityManager entityManager)
{
return !entityManager.TryGetComponent(uid, out KeyholeComponent? keyhole) || !keyhole.Locked;
}
public bool DoExamine(ExaminedEvent args)
{
if (Condition(args.Examined, IoCManager.Resolve<IEntityManager>()))
return false;
args.PushMarkup(Loc.GetString("construction-examine-condition-door-locked"));
return true;
}
public IEnumerable<ConstructionGuideEntry> GenerateGuideEntry()
{
yield return new ConstructionGuideEntry
{
Localization = "construction-examine-condition-door-locked"
};
}
}

View File

@@ -1,4 +1,6 @@
using Content.Shared._White.Keyhole.Components; using System.Diagnostics;
using Content.Server._White.Cult.Structures;
using Content.Shared._White.Keyhole.Components;
using Content.Shared._White.Keyhole; using Content.Shared._White.Keyhole;
using Content.Shared.DoAfter; using Content.Shared.DoAfter;
using Content.Shared.Doors.Components; using Content.Shared.Doors.Components;
@@ -10,10 +12,7 @@ using Robust.Shared.Random;
namespace Content.Server._White.Keyhole; namespace Content.Server._White.Keyhole;
// TODO: Исправить, что дверь на замке можно разобрать через ее id: DoorGraph public sealed class KeyholeSystem : EntitySystem
// TODO: Исправить, что при прерывании закрытия девственной двери форма замка принимает форму ключа, хотя закрытия не произошло
public sealed partial class KeyholeSystem : EntitySystem
{ {
[Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IRobustRandom _random = default!;
@@ -37,52 +36,55 @@ public sealed partial class KeyholeSystem : EntitySystem
private void OnKeyInsert(EntityUid uid, KeyComponent component, AfterInteractEvent ev) private void OnKeyInsert(EntityUid uid, KeyComponent component, AfterInteractEvent ev)
{ {
Debug.Assert(component.FormId != null);
if (TryComp<KeyformComponent>(ev.Target, out var keyformComponent)) if (TryComp<KeyformComponent>(ev.Target, out var keyformComponent))
OnKeyInsertForm(uid, component, keyformComponent, ev); {
OnKeyInsertForm(uid, component, keyformComponent, ev.Target.Value, ev.User);
return;
}
if (!TryComp<KeyholeComponent>(ev.Target, out var keyholeComponent)) if (!TryComp<KeyholeComponent>(ev.Target, out var keyholeComponent) || !CanLock(ev.Target.Value))
return; return;
keyholeComponent.FormId ??= component.FormId; if (keyholeComponent.FormId != null && keyholeComponent.FormId != component.FormId)
{
if (!CanLock(keyholeComponent.Owner, keyholeComponent, component)) _popupSystem.PopupEntity(Loc.GetString("door-keyhole-different-form"), ev.Target.Value);
return; return;
}
var doAfterEventArgs = var doAfterEventArgs =
new DoAfterArgs(EntityManager, ev.User, keyholeComponent.Delay, new KeyInsertDoAfterEvent(), ev.Target, ev.Used) new DoAfterArgs(EntityManager, ev.User, keyholeComponent.Delay,
{ new KeyInsertDoAfterEvent(component.FormId.Value), ev.Target, ev.Used)
BreakOnTargetMove = true, {
BreakOnUserMove = true, BreakOnTargetMove = true,
BreakOnDamage = true BreakOnUserMove = true,
}; BreakOnDamage = true
};
_doAfter.TryStartDoAfter(doAfterEventArgs); _doAfter.TryStartDoAfter(doAfterEventArgs);
} }
private bool CanLock(EntityUid uid, KeyholeComponent keyholeComponent, KeyComponent keyComponent) private bool CanLock(EntityUid uid)
{ {
var can = TryComp<DoorComponent>(uid, out var doorComponent) && return !HasComp<RunicDoorComponent>(uid) && TryComp<DoorComponent>(uid, out var doorComponent) &&
keyholeComponent.FormId == keyComponent.FormId && doorComponent.State == DoorState.Closed;
doorComponent.State == DoorState.Closed;
return can;
} }
private void OnDoAfter(EntityUid uid, KeyholeComponent component, KeyInsertDoAfterEvent args) private void OnDoAfter(EntityUid uid, KeyholeComponent component, KeyInsertDoAfterEvent args)
{ {
if (args.Handled || args.Cancelled || IsStateChanging(uid)) if (args.Handled || args.Cancelled || !CanLock(uid))
return; return;
Debug.Assert(component.FormId == null || component.FormId == args.FormId);
component.FormId = args.FormId;
Lock(uid, component, args.User); Lock(uid, component, args.User);
args.Handled = true; args.Handled = true;
} }
private bool IsStateChanging(EntityUid uid)
{
return TryComp<DoorComponent>(uid, out var doorComponent) &&
(doorComponent.State == DoorState.Closing || doorComponent.State == DoorState.Opening);
}
private void Lock(EntityUid uid, KeyholeComponent component, EntityUid user) private void Lock(EntityUid uid, KeyholeComponent component, EntityUid user)
{ {
var sound = component.Locked ? component.UnlockSound : component.LockSound; var sound = component.Locked ? component.UnlockSound : component.LockSound;
@@ -96,22 +98,22 @@ public sealed partial class KeyholeSystem : EntitySystem
component.Locked = !component.Locked; component.Locked = !component.Locked;
} }
private void OnKeyInsertForm(EntityUid uid, KeyComponent keyComponent, KeyformComponent keyformComponent, AfterInteractEvent args) private void OnKeyInsertForm(EntityUid uid, KeyComponent keyComponent, KeyformComponent keyformComponent, EntityUid keyform, EntityUid user)
{ {
if (!keyformComponent.IsUsed) if (!keyformComponent.IsUsed)
{ {
keyformComponent.FormId ??= keyComponent.FormId; keyformComponent.FormId ??= keyComponent.FormId;
_appearance.SetData(keyformComponent.Owner, KeyformVisuals.IsUsed, true); _appearance.SetData(keyform, KeyformVisuals.IsUsed, true);
_audio.PlayPvs(keyformComponent.PressSound, uid); _audio.PlayPvs(keyformComponent.PressSound, uid);
_popupSystem.PopupEntity(Loc.GetString("key-pressed-in-keyform-message-first", ("user", args.User), ("key", uid)), uid); _popupSystem.PopupEntity(Loc.GetString("key-pressed-in-keyform-message-first", ("user", user), ("key", uid)), uid);
keyformComponent.IsUsed = true; keyformComponent.IsUsed = true;
} }
else else
{ {
keyComponent.FormId = keyformComponent.FormId; keyComponent.FormId = keyformComponent.FormId;
_popupSystem.PopupEntity(Loc.GetString("key-pressed-in-keyform-message", ("user", args.User), ("key", uid)), uid); _popupSystem.PopupEntity(Loc.GetString("key-pressed-in-keyform-message", ("user", user), ("key", uid)), uid);
} }
} }

View File

@@ -15,7 +15,6 @@ using Content.Shared.Speech;
using Content.Shared.Standing; using Content.Shared.Standing;
using Content.Shared.Strip.Components; using Content.Shared.Strip.Components;
using Content.Shared.Throwing; using Content.Shared.Throwing;
using Robust.Shared.Physics.Components;
namespace Content.Shared.Mobs.Systems; namespace Content.Shared.Mobs.Systems;
@@ -56,12 +55,7 @@ public partial class MobStateSystem
_standing.Stand(target); _standing.Stand(target);
break; break;
case MobState.Dead: case MobState.Dead:
RemComp<CollisionWakeComponent>(target);
_standing.Stand(target); _standing.Stand(target);
if (!_standing.IsDown(target) && TryComp<PhysicsComponent>(target, out var physics))
{
_physics.SetCanCollide(target, true, body: physics);
}
break; break;
case MobState.Invalid: case MobState.Invalid:
@@ -91,14 +85,8 @@ public partial class MobStateSystem
_appearance.SetData(target, MobStateVisuals.State, MobState.Critical); _appearance.SetData(target, MobStateVisuals.State, MobState.Critical);
break; break;
case MobState.Dead: case MobState.Dead:
EnsureComp<CollisionWakeComponent>(target);
_standing.Down(target); _standing.Down(target);
if (_standing.IsDown(target) && TryComp<PhysicsComponent>(target, out var physics))
{
_physics.SetCanCollide(target, false, body: physics);
}
_appearance.SetData(target, MobStateVisuals.State, MobState.Dead); _appearance.SetData(target, MobStateVisuals.State, MobState.Dead);
break; break;
case MobState.Invalid: case MobState.Invalid:

View File

@@ -190,6 +190,10 @@ public abstract partial class SharedProjectileSystem : EntitySystem
private void PreventCollision(EntityUid uid, ProjectileComponent component, ref PreventCollideEvent args) private void PreventCollision(EntityUid uid, ProjectileComponent component, ref PreventCollideEvent args)
{ {
// Shoot yourself!
if (args.OtherEntity == component.Target) // WD
return;
if (component.IgnoreShooter && (args.OtherEntity == component.Shooter || args.OtherEntity == component.Weapon)) if (component.IgnoreShooter && (args.OtherEntity == component.Shooter || args.OtherEntity == component.Weapon))
{ {
args.Cancelled = true; args.Cancelled = true;

View File

@@ -1,5 +1,6 @@
using Content.Shared._White.Cult.Components; using Content.Shared._White.Cult.Components;
using Content.Shared.Actions; using Content.Shared.Actions;
using Content.Shared.Examine;
using Content.Shared.Hands; using Content.Shared.Hands;
using Content.Shared.StatusEffect; using Content.Shared.StatusEffect;
using Content.Shared.Stunnable; using Content.Shared.Stunnable;
@@ -23,6 +24,12 @@ public sealed class BloodSpearSystem : EntitySystem
SubscribeLocalEvent<BloodSpearComponent, ComponentRemove>(OnRemove); SubscribeLocalEvent<BloodSpearComponent, ComponentRemove>(OnRemove);
SubscribeLocalEvent<BloodSpearComponent, GotEquippedHandEvent>(OnEquip); SubscribeLocalEvent<BloodSpearComponent, GotEquippedHandEvent>(OnEquip);
SubscribeLocalEvent<BloodSpearComponent, ThrowDoHitEvent>(OnThrowDoHit); SubscribeLocalEvent<BloodSpearComponent, ThrowDoHitEvent>(OnThrowDoHit);
SubscribeLocalEvent<BloodSpearComponent, ExaminedEvent>(OnExamine);
}
private void OnExamine(Entity<BloodSpearComponent> ent, ref ExaminedEvent args)
{
args.PushMarkup(Loc.GetString("blood-spear-component-extra-desc"));
} }
private void OnThrowDoHit(Entity<BloodSpearComponent> ent, ref ThrowDoHitEvent args) private void OnThrowDoHit(Entity<BloodSpearComponent> ent, ref ThrowDoHitEvent args)

View File

@@ -1,5 +1,6 @@
using System.Linq; using System.Linq;
using Content.Shared._White.Cult.Components; using Content.Shared._White.Cult.Components;
using Content.Shared.Examine;
using Content.Shared.Ghost; using Content.Shared.Ghost;
using Content.Shared.Hands; using Content.Shared.Hands;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
@@ -29,6 +30,12 @@ public sealed class BoltBarrageSystem : EntitySystem
SubscribeLocalEvent<BoltBarrageComponent, UnequippedHandEvent>(OnUnequipHand); SubscribeLocalEvent<BoltBarrageComponent, UnequippedHandEvent>(OnUnequipHand);
SubscribeLocalEvent<BoltBarrageComponent, ContainerGettingRemovedAttemptEvent>(OnRemoveAttempt); SubscribeLocalEvent<BoltBarrageComponent, ContainerGettingRemovedAttemptEvent>(OnRemoveAttempt);
SubscribeLocalEvent<BoltBarrageComponent, OnEmptyGunShotEvent>(OnEmptyShot); SubscribeLocalEvent<BoltBarrageComponent, OnEmptyGunShotEvent>(OnEmptyShot);
SubscribeLocalEvent<BoltBarrageComponent, ExaminedEvent>(OnExamine);
}
private void OnExamine(Entity<BoltBarrageComponent> ent, ref ExaminedEvent args)
{
args.PushMarkup(Loc.GetString("bolt-barrage-component-extra-desc"));
} }
private void OnUnequipHand(Entity<BoltBarrageComponent> ent, ref UnequippedHandEvent args) private void OnUnequipHand(Entity<BoltBarrageComponent> ent, ref UnequippedHandEvent args)
@@ -51,7 +58,7 @@ public sealed class BoltBarrageSystem : EntitySystem
private void OnDrop(Entity<BoltBarrageComponent> ent, ref DroppedEvent args) private void OnDrop(Entity<BoltBarrageComponent> ent, ref DroppedEvent args)
{ {
if (_net.IsServer) if (_net.IsServer && ent.Comp.Unremoveable)
QueueDel(ent); QueueDel(ent);
} }

View File

@@ -1,6 +1,6 @@
namespace Content.Shared._White.Keyhole.Components; namespace Content.Shared._White.Keyhole.Components;
[RegisterComponent] [RegisterComponent, Virtual]
public partial class KeyBaseComponent : Component public partial class KeyBaseComponent : Component
{ {
[ViewVariables(VVAccess.ReadWrite)] [ViewVariables(VVAccess.ReadWrite)]

View File

@@ -4,5 +4,13 @@ using Robust.Shared.Serialization;
namespace Content.Shared._White.Keyhole; namespace Content.Shared._White.Keyhole;
[Serializable, NetSerializable] [Serializable, NetSerializable]
public sealed partial class KeyInsertDoAfterEvent : SimpleDoAfterEvent {} public sealed partial class KeyInsertDoAfterEvent : SimpleDoAfterEvent
{
public int FormId;
public KeyInsertDoAfterEvent(int formId)
{
FormId = formId;
}
}

View File

@@ -0,0 +1 @@
blood-spear-component-extra-desc = [color=darkgray]Кровавое копьё можно бросить, что заставит его разбиться и оглушить любого, кого оно поразит.[/color]

View File

@@ -1,2 +1,3 @@
bolt-barrage-component-no-empty-hand = Вам нужно иметь свободную руку, чтобы стрелять. bolt-barrage-component-no-empty-hand = Вам нужно иметь свободную руку, чтобы стрелять.
bolt-barrage-component-not-cultist = Вы не умеете пользоваться магией. bolt-barrage-component-not-cultist = Вы не умеете пользоваться магией.
bolt-barrage-component-extra-desc = [color=darkgray]Для стрельбы залпом необходимо иметь свободную руку. Вобросите залп, чтобы навсегда избавиться от него.[/color]

View File

@@ -7,7 +7,10 @@ comp-mind-ghosting-prevented = Вы не можете стать призрак
comp-mind-examined-catatonic = { CAPITALIZE(SUBJECT($ent)) } в кататоническом ступоре. Стрессы жизни в глубоком космосе, должно быть, оказались слишком тяжелы для { OBJECT($ent) }. Восстановление маловероятно. comp-mind-examined-catatonic = { CAPITALIZE(SUBJECT($ent)) } в кататоническом ступоре. Стрессы жизни в глубоком космосе, должно быть, оказались слишком тяжелы для { OBJECT($ent) }. Восстановление маловероятно.
comp-mind-examined-dead = { CAPITALIZE(POSS-PRONOUN($ent)) } душа покинула тело. comp-mind-examined-dead = { CAPITALIZE(POSS-PRONOUN($ent)) } душа покинула тело.
comp-mind-examined-ssd = { CAPITALIZE(SUBJECT($ent)) } рассеяно смотрит в пустоту и ни на что не реагирует. { CAPITALIZE(SUBJECT($ent)) } может скоро придти в себя. comp-mind-examined-ssd = { CAPITALIZE(SUBJECT($ent)) } рассеяно смотрит в пустоту и ни на что не реагирует. { CAPITALIZE(SUBJECT($ent)) } может скоро придти в себя.
comp-mind-examined-dead-and-ssd = Душа { CAPITALIZE(POSS-ADJ($ent)) } ушла и улетела. Любое восстановление маловероятно. comp-mind-examined-dead-and-ssd = { CAPITALIZE(POSS-ADJ($ent)) } душа дремлет и может скоро вернуться.
comp-mind-examined-dead-and-irrecoverable = { CAPITALIZE(POSS-ADJ($ent)) } душа покинула тело и пропала. Восстановление маловероятно.
mind-component-no-mind-and-alive-text = { CAPITALIZE(SUBJECT($ent)) } в кататоническом ступоре. Стрессы жизни в глубоком космосе, должно быть, оказались слишком тяжелы для него. Восстановление маловероятно. mind-component-no-mind-and-alive-text = { CAPITALIZE(SUBJECT($ent)) } в кататоническом ступоре. Стрессы жизни в глубоком космосе, должно быть, оказались слишком тяжелы для него. Восстановление маловероятно.
mind-component-no-mind-and-dead-text = { CAPITALIZE(POSS-PRONOUN($ent)) } душа покинула тело и пропала. Восстановление маловероятно. mind-component-no-mind-and-dead-text = { CAPITALIZE(POSS-PRONOUN($ent)) } душа покинула тело и пропала. Восстановление маловероятно.
mind-component-mind-and-no-session-text = { CAPITALIZE(SUBJECT($ent)) } рассеяно смотрит в пустоту и ни на что не реагирует. { CAPITALIZE(SUBJECT($ent)) } может скоро придти в себя. mind-component-mind-and-no-session-text = { CAPITALIZE(SUBJECT($ent)) } рассеяно смотрит в пустоту и ни на что не реагирует. { CAPITALIZE(SUBJECT($ent)) } может скоро придти в себя.

View File

@@ -1 +1,3 @@
door-locked-via-key = {$door} закрыта door-locked-via-key = {$door} закрыта
door-keyhole-different-form = Форма замка этой двери не совпадает с формой ключа.
construction-examine-condition-door-locked = Дверь не должна быть закрыта на ключ.

View File

@@ -61,6 +61,11 @@
- type: Tag - type: Tag
tags: tags:
- VimPilot - VimPilot
- type: MobThresholds
thresholds:
0: Alive
20: Critical
30: Dead
- type: entity - type: entity
name: bee name: bee
@@ -466,8 +471,8 @@
- type: MobThresholds - type: MobThresholds
thresholds: thresholds:
0: Alive 0: Alive
40: Critical 20: Critical
60: Dead 30: Dead
- type: MovementSpeedModifier - type: MovementSpeedModifier
baseWalkSpeed : 2.5 baseWalkSpeed : 2.5
baseSprintSpeed : 4 baseSprintSpeed : 4
@@ -2965,8 +2970,8 @@
- type: MobThresholds - type: MobThresholds
thresholds: thresholds:
0: Alive 0: Alive
40: Critical 20: Critical
60: Dead 30: Dead
- type: MovementSpeedModifier - type: MovementSpeedModifier
baseWalkSpeed : 4 baseWalkSpeed : 4
baseSprintSpeed : 4 baseSprintSpeed : 4

View File

@@ -8,7 +8,7 @@
sprite: Objects/Materials/materials.rsi sprite: Objects/Materials/materials.rsi
- type: Item - type: Item
sprite: Objects/Materials/materials.rsi sprite: Objects/Materials/materials.rsi
size: Normal size: Small
- type: Tag - type: Tag
tags: tags:
- DroneUsable - DroneUsable

View File

@@ -77,6 +77,12 @@
acts: [ "Destruction" ] acts: [ "Destruction" ]
- type: Label - type: Label
originalName: jug originalName: jug
- type: MeleeWeapon
soundNoDamage:
path: "/Audio/Effects/Fluids/splat.ogg"
damage:
types:
Blunt: 0
- type: entity - type: entity
parent: Jug parent: Jug

View File

@@ -11,35 +11,35 @@
- !type:SnapToGrid { } - !type:SnapToGrid { }
steps: steps:
- material: Steel - material: Steel
amount: 20 amount: 5
doAfter: 15 doAfter: 15
- to: woodDoor - to: woodDoor
completed: completed:
- !type:SnapToGrid { } - !type:SnapToGrid { }
steps: steps:
- material: WoodPlank - material: WoodPlank
amount: 20 amount: 5
doAfter: 15 doAfter: 15
- to: plasmaDoor - to: plasmaDoor
completed: completed:
- !type:SnapToGrid { } - !type:SnapToGrid { }
steps: steps:
- material: Plasma - material: Plasma
amount: 20 amount: 5
doAfter: 15 doAfter: 15
- to: goldDoor - to: goldDoor
completed: completed:
- !type:SnapToGrid { } - !type:SnapToGrid { }
steps: steps:
- material: Gold - material: Gold
amount: 20 amount: 5
doAfter: 15 doAfter: 15
- to: silverDoor - to: silverDoor
completed: completed:
- !type:SnapToGrid { } - !type:SnapToGrid { }
steps: steps:
- material: Silver - material: Silver
amount: 20 amount: 5
doAfter: 15 doAfter: 15
- to: bananiumDoor - to: bananiumDoor
completed: completed:
@@ -53,7 +53,7 @@
- !type:SnapToGrid { } - !type:SnapToGrid { }
steps: steps:
- material: Paper - material: Paper
amount: 20 amount: 5
doAfter: 15 doAfter: 15
- node: metalDoor - node: metalDoor
entity: MetalDoor entity: MetalDoor
@@ -62,7 +62,9 @@
completed: completed:
- !type:SpawnPrototype - !type:SpawnPrototype
prototype: SheetSteel1 prototype: SheetSteel1
amount: 20 amount: 5
conditions:
- !type:DoorUnlocked
steps: steps:
- tool: Anchoring - tool: Anchoring
doAfter: 15 doAfter: 15
@@ -73,7 +75,9 @@
completed: completed:
- !type:SpawnPrototype - !type:SpawnPrototype
prototype: MaterialWoodPlank1 prototype: MaterialWoodPlank1
amount: 20 amount: 5
conditions:
- !type:DoorUnlocked
steps: steps:
- tool: Anchoring - tool: Anchoring
doAfter: 15 doAfter: 15
@@ -84,7 +88,9 @@
completed: completed:
- !type:SpawnPrototype - !type:SpawnPrototype
prototype: SheetPlasma prototype: SheetPlasma
amount: 20 amount: 5
conditions:
- !type:DoorUnlocked
steps: steps:
- tool: Anchoring - tool: Anchoring
doAfter: 15 doAfter: 15
@@ -95,7 +101,9 @@
completed: completed:
- !type:SpawnPrototype - !type:SpawnPrototype
prototype: IngotGold1 prototype: IngotGold1
amount: 20 amount: 5
conditions:
- !type:DoorUnlocked
steps: steps:
- tool: Anchoring - tool: Anchoring
doAfter: 15 doAfter: 15
@@ -106,7 +114,9 @@
completed: completed:
- !type:SpawnPrototype - !type:SpawnPrototype
prototype: IngotSilver1 prototype: IngotSilver1
amount: 20 amount: 5
conditions:
- !type:DoorUnlocked
steps: steps:
- tool: Anchoring - tool: Anchoring
doAfter: 15 doAfter: 15
@@ -117,7 +127,9 @@
completed: completed:
- !type:SpawnPrototype - !type:SpawnPrototype
prototype: SheetPaper1 prototype: SheetPaper1
amount: 20 amount: 5
conditions:
- !type:DoorUnlocked
steps: steps:
- tool: Anchoring - tool: Anchoring
doAfter: 15 doAfter: 15
@@ -129,6 +141,8 @@
- !type:SpawnPrototype - !type:SpawnPrototype
prototype: MaterialBananium1 prototype: MaterialBananium1
amount: 5 amount: 5
conditions:
- !type:DoorUnlocked
steps: steps:
- tool: Anchoring - tool: Anchoring
doAfter: 15 doAfter: 15

View File

@@ -172,7 +172,7 @@
- key: enum.CultStructureCraftUiKey.Key - key: enum.CultStructureCraftUiKey.Key
type: StructureCraftBoundUserInterface type: StructureCraftBoundUserInterface
- type: Item - type: Item
size: Normal size: Small
- type: CultItem - type: CultItem
- type: entity - type: entity

View File

@@ -1,10 +1,17 @@
- type: moodEffect - type: moodEffect
id: BeingHugged id: BeingHugged
desc: "Обнимашки - круто." desc: "Обнимашки - круто."
moodChange: enum.MoodChangeLevel.Small moodChange: enum.MoodChangeLevel.Small
positiveEffect: true positiveEffect: true
timeout: 2 timeout: 2
- type: moodEffect
id: BeingPet
desc: "Меня погладили!"
moodChange: enum.MoodChangeLevel.Small
positiveEffect: true
timeout: 2
- type: moodEffect - type: moodEffect
id: ArcadePlay id: ArcadePlay
desc: "Я весело поиграл в интересную аркаду." desc: "Я весело поиграл в интересную аркаду."