Compare commits
20 Commits
ed-revert-
...
fishing
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6575aa19c4 | ||
|
|
7ac03a54e4 | ||
|
|
874c524538 | ||
|
|
8623324fab | ||
|
|
80e429c8fa | ||
|
|
355fc410a3 | ||
|
|
948d711336 | ||
|
|
de5ec12791 | ||
|
|
41b84f43eb | ||
|
|
d96a4b6638 | ||
|
|
0decd375e4 | ||
|
|
48a5620099 | ||
|
|
ad70108cdf | ||
|
|
97d08097fe | ||
|
|
961f365f52 | ||
|
|
78c711950a | ||
|
|
c0221b1445 | ||
|
|
dbcf17bab2 | ||
|
|
a88e0ee00f | ||
|
|
ba60bc7176 |
149
Content.Client/_CP14/Fishing/CP14FishingOverlay.cs
Normal file
149
Content.Client/_CP14/Fishing/CP14FishingOverlay.cs
Normal file
@@ -0,0 +1,149 @@
|
||||
using System.Numerics;
|
||||
using Content.Client.Resources;
|
||||
using Content.Shared._CP14.Fishing.Components;
|
||||
using Content.Shared._CP14.Fishing.Prototypes;
|
||||
using Content.Shared._CP14.Fishing.Systems;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Client.ResourceManagement;
|
||||
using Robust.Shared.Enums;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._CP14.Fishing;
|
||||
|
||||
public sealed class CP14FishingOverlay : Overlay
|
||||
{
|
||||
[Dependency] private readonly IComponentFactory _factory = default!;
|
||||
[Dependency] private readonly IEntityManager _entity = default!;
|
||||
[Dependency] private readonly IPlayerManager _player = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
[Dependency] private readonly IResourceCache _resourceCache = default!;
|
||||
|
||||
private readonly SpriteSystem _sprite;
|
||||
private readonly TransformSystem _transform;
|
||||
private readonly CP14SharedFishingProcessSystem _sharedFishingProcess;
|
||||
|
||||
private Texture _backgroundTexture = default!;
|
||||
private Texture _handleTopTexture = default!;
|
||||
private Texture _handleMiddleTexture = default!;
|
||||
private Texture _handleBottomTexture = default!;
|
||||
|
||||
private Texture _lootTexture = default!;
|
||||
|
||||
private Vector2 _backgroundOffset;
|
||||
private Vector2 _backgroundHandleOffset;
|
||||
private Vector2 _backgroundHandleSize;
|
||||
|
||||
private Vector2 _progressOffset;
|
||||
private Vector2 _progressSize;
|
||||
|
||||
private EntityUid _process = EntityUid.Invalid;
|
||||
|
||||
public override OverlaySpace Space => OverlaySpace.WorldSpace;
|
||||
|
||||
public CP14FishingOverlay()
|
||||
{
|
||||
IoCManager.InjectDependencies(this);
|
||||
|
||||
_sprite = _entity.System<SpriteSystem>();
|
||||
_transform = _entity.System<TransformSystem>();
|
||||
_sharedFishingProcess = _entity.System<CP14SharedFishingProcessSystem>();
|
||||
}
|
||||
|
||||
protected override void Draw(in OverlayDrawArgs args)
|
||||
{
|
||||
if (_player.LocalEntity is not { } localEntity)
|
||||
return;
|
||||
|
||||
if (!_sharedFishingProcess.TryGetByUser(localEntity, out var fishingProcess))
|
||||
return;
|
||||
|
||||
// Refresh the texture cache, with a new fishing process
|
||||
if (_process != fishingProcess.Value.Owner)
|
||||
{
|
||||
_process = fishingProcess.Value.Owner;
|
||||
|
||||
UpdateCachedStyleSheet(_sharedFishingProcess.GetStyle(fishingProcess.Value));
|
||||
|
||||
var prototype = _prototype.Index(fishingProcess.Value.Comp.LootProtoId);
|
||||
var iconPath = CP14FishingIconComponent.DefaultTexturePath;
|
||||
|
||||
if (prototype.Components.TryGetComponent(_factory.GetComponentName(typeof(CP14FishingIconComponent)), out var iconComponent))
|
||||
{
|
||||
var comp = (CP14FishingIconComponent) iconComponent;
|
||||
iconPath = comp.TexturePath;
|
||||
}
|
||||
|
||||
_lootTexture = _resourceCache.GetTexture(iconPath);
|
||||
}
|
||||
|
||||
// Getting the position of the player we will be working from
|
||||
var worldPosition = _transform.GetWorldPosition(localEntity);
|
||||
|
||||
// Calculate the shift of the player relative to the bottom of the coordinates
|
||||
var playerOffset = fishingProcess.Value.Comp.PlayerPositionNormalized * _backgroundHandleSize;
|
||||
var playerHalfSize = fishingProcess.Value.Comp.PlayerHalfSizeNormalized * _backgroundHandleSize;
|
||||
|
||||
var lootOffset = fishingProcess.Value.Comp.LootPositionNormalized * _backgroundHandleSize + Vector2.UnitX * _backgroundHandleSize.X / 2;
|
||||
|
||||
DrawBackground(args.WorldHandle, worldPosition - _backgroundOffset);
|
||||
DrawProgress(args.WorldHandle, worldPosition - _backgroundOffset + _progressOffset, _progressSize, fishingProcess.Value.Comp.Progress);
|
||||
DrawHandle(args.WorldHandle, worldPosition - _backgroundOffset + _backgroundHandleOffset + playerOffset, playerHalfSize);
|
||||
DrawLoot(args.WorldHandle, worldPosition - _backgroundOffset + _backgroundHandleOffset + lootOffset);
|
||||
}
|
||||
|
||||
private void DrawBackground(DrawingHandleWorld handle, Vector2 position)
|
||||
{
|
||||
handle.DrawTexture(_backgroundTexture, position);
|
||||
}
|
||||
|
||||
private void DrawProgress(DrawingHandleWorld handle, Vector2 position, Vector2 size, float progress)
|
||||
{
|
||||
var vectorA = position;
|
||||
var vectorB = position + new Vector2(size.X, size.Y * progress);
|
||||
var box = new Box2(vectorA, vectorB);
|
||||
|
||||
handle.DrawRect(box, Color.Aqua);
|
||||
}
|
||||
|
||||
private void DrawHandle(DrawingHandleWorld handle, Vector2 position, Vector2 halfSize)
|
||||
{
|
||||
var cursor = position - halfSize;
|
||||
|
||||
// Bottom
|
||||
handle.DrawTexture(_handleBottomTexture, cursor);
|
||||
cursor += new Vector2(0, _handleBottomTexture.Height / 32f);
|
||||
|
||||
// Middle
|
||||
while (cursor.Y < position.Y + halfSize.Y - _handleTopTexture.Height / 32f)
|
||||
{
|
||||
handle.DrawTexture(_handleMiddleTexture, cursor);
|
||||
cursor += new Vector2(0, _handleMiddleTexture.Height / 32f);
|
||||
}
|
||||
|
||||
// Front
|
||||
handle.DrawTexture(_handleTopTexture, cursor);
|
||||
}
|
||||
|
||||
private void DrawLoot(DrawingHandleWorld handle, Vector2 position)
|
||||
{
|
||||
handle.DrawTexture(_lootTexture, position - _lootTexture.Size / 64f);
|
||||
}
|
||||
|
||||
private void UpdateCachedStyleSheet(CP14FishingProcessStyleSheetPrototype styleSheet)
|
||||
{
|
||||
_backgroundTexture = _resourceCache.GetTexture(styleSheet.Background.Texture);
|
||||
_handleTopTexture = _resourceCache.GetTexture(styleSheet.Handle.TopTexture);
|
||||
_handleMiddleTexture = _resourceCache.GetTexture(styleSheet.Handle.MiddleTexture);
|
||||
_handleBottomTexture = _resourceCache.GetTexture(styleSheet.Handle.BottomTexture);
|
||||
|
||||
_backgroundOffset = styleSheet.Background.Offset + Vector2.UnitX * _backgroundTexture.Width / 32f;
|
||||
|
||||
_backgroundHandleOffset = styleSheet.Background.HandleOffset;
|
||||
_backgroundHandleSize = styleSheet.Background.HandleSize;
|
||||
|
||||
_progressOffset = styleSheet.Background.ProgressOffset;
|
||||
_progressSize = styleSheet.Background.ProgressSize;
|
||||
}
|
||||
}
|
||||
23
Content.Client/_CP14/Fishing/CP14FishingOverlaySystem.cs
Normal file
23
Content.Client/_CP14/Fishing/CP14FishingOverlaySystem.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using Content.Client.Overlays;
|
||||
using Robust.Client.Graphics;
|
||||
|
||||
namespace Content.Client._CP14.Fishing;
|
||||
|
||||
public sealed class CP14FishingOverlaySystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IOverlayManager _overlay = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_overlay.AddOverlay(new CP14FishingOverlay());
|
||||
}
|
||||
|
||||
public override void Shutdown()
|
||||
{
|
||||
base.Shutdown();
|
||||
|
||||
_overlay.RemoveOverlay<StencilOverlay>();
|
||||
}
|
||||
}
|
||||
5
Content.Client/_CP14/Fishing/CP14FishingProcessSystem.cs
Normal file
5
Content.Client/_CP14/Fishing/CP14FishingProcessSystem.cs
Normal file
@@ -0,0 +1,5 @@
|
||||
using Content.Shared._CP14.Fishing.Systems;
|
||||
|
||||
namespace Content.Client._CP14.Fishing;
|
||||
|
||||
public sealed class CP14FishingProcessSystem : CP14SharedFishingProcessSystem;
|
||||
35
Content.Client/_CP14/Fishing/CP14FishingRodSystem.cs
Normal file
35
Content.Client/_CP14/Fishing/CP14FishingRodSystem.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using Content.Client.Hands.Systems;
|
||||
using Content.Shared._CP14.Fishing.Components;
|
||||
using Content.Shared._CP14.Fishing.Systems;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.Input;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Client._CP14.Fishing;
|
||||
|
||||
public sealed class CP14FishingRodSystem : CP14SharedFishingRodSystem
|
||||
{
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly InputSystem _input = default!;
|
||||
[Dependency] private readonly HandsSystem _hands = default!;
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
|
||||
if (!_timing.IsFirstTimePredicted)
|
||||
return;
|
||||
|
||||
var handUid = _hands.GetActiveHandEntity();
|
||||
|
||||
if (!TryComp<CP14FishingRodComponent>(handUid, out var fishingRodComponent))
|
||||
return;
|
||||
|
||||
var reelKey = _input.CmdStates.GetState(EngineKeyFunctions.UseSecondary) == BoundKeyState.Down;
|
||||
|
||||
if (fishingRodComponent.Reeling == reelKey)
|
||||
return;
|
||||
|
||||
RaisePredictiveEvent(new RequestFishingRodReelMessage(reelKey));
|
||||
}
|
||||
}
|
||||
@@ -40,6 +40,7 @@ namespace Content.IntegrationTests.Tests
|
||||
.Where(p => !pair.IsTestPrototype(p))
|
||||
.Where(p => !p.Components.ContainsKey("MapGrid")) // This will smash stuff otherwise.
|
||||
.Where(p => !p.Components.ContainsKey("RoomFill")) // This comp can delete all entities, and spawn others
|
||||
.Where(p => !p.Components.ContainsKey("CP14BiomeSpawner")) // CP14 this component delete all entities on this tile
|
||||
.Select(p => p.ID)
|
||||
.ToList();
|
||||
|
||||
@@ -103,6 +104,7 @@ namespace Content.IntegrationTests.Tests
|
||||
.Where(p => !pair.IsTestPrototype(p))
|
||||
.Where(p => !p.Components.ContainsKey("MapGrid")) // This will smash stuff otherwise.
|
||||
.Where(p => !p.Components.ContainsKey("RoomFill")) // This comp can delete all entities, and spawn others
|
||||
.Where(p => !p.Components.ContainsKey("CP14BiomeSpawner")) // CP14 this component delete all entities on this tile
|
||||
.Select(p => p.ID)
|
||||
.ToList();
|
||||
foreach (var protoId in protoIds)
|
||||
@@ -344,6 +346,7 @@ namespace Content.IntegrationTests.Tests
|
||||
"DebugExceptionStartup",
|
||||
"GridFill",
|
||||
"RoomFill",
|
||||
"CP14BiomeSpawner", // CP14 this component delete all entities on this tile
|
||||
"Map", // We aren't testing a map entity in this test
|
||||
"MapGrid",
|
||||
"Broadphase",
|
||||
|
||||
@@ -70,7 +70,6 @@ namespace Content.IntegrationTests.Tests
|
||||
"Dev",
|
||||
"MeteorArena",
|
||||
"Comoss",
|
||||
"Factoria",
|
||||
//CrystallEdge Map replacement end
|
||||
};
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Content.Server.Construction.Components;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.Construction;
|
||||
using Content.Shared.Construction.Prototypes;
|
||||
@@ -236,6 +237,36 @@ namespace Content.Server.Construction
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
//CP14 stack group support
|
||||
case CP14StackGroupConstructionGraphStep stackGroupStep:
|
||||
foreach (var entity in new HashSet<EntityUid>(EnumerateNearby(user)))
|
||||
{
|
||||
if (!stackGroupStep.EntityValid(entity, out var stack))
|
||||
continue;
|
||||
|
||||
if (used.Contains(entity))
|
||||
continue;
|
||||
|
||||
var splitStack = _stackSystem.Split(entity, stackGroupStep.Amount, user.ToCoordinates(0, 0), stack);
|
||||
|
||||
if (splitStack == null)
|
||||
continue;
|
||||
|
||||
if (string.IsNullOrEmpty(stackGroupStep.Store))
|
||||
{
|
||||
if (!_container.Insert(splitStack.Value, container))
|
||||
continue;
|
||||
}
|
||||
else if (!_container.Insert(splitStack.Value, GetContainer(stackGroupStep.Store)))
|
||||
continue;
|
||||
|
||||
handled = true;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
//CP14 stack group support end
|
||||
}
|
||||
|
||||
if (handled == false)
|
||||
|
||||
121
Content.Server/_CP14/Fishing/CP14FishingProcessSystem.cs
Normal file
121
Content.Server/_CP14/Fishing/CP14FishingProcessSystem.cs
Normal file
@@ -0,0 +1,121 @@
|
||||
using Content.Shared._CP14.Fishing.Components;
|
||||
using Content.Shared._CP14.Fishing.Core;
|
||||
using Content.Shared._CP14.Fishing.Core.Behaviors;
|
||||
using Content.Shared._CP14.Fishing.Events;
|
||||
using Content.Shared._CP14.Fishing.Systems;
|
||||
using Content.Shared.Throwing;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Server._CP14.Fishing;
|
||||
|
||||
public sealed class CP14FishingProcessSystem : CP14SharedFishingProcessSystem
|
||||
{
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly ThrowingSystem _throwing = default!;
|
||||
[Dependency] private readonly CP14FishingPoolSystem _pool = default!;
|
||||
|
||||
/*
|
||||
private readonly TimeSpan _dirtyDelay = TimeSpan.FromTicks(10000000000000);
|
||||
private TimeSpan _dirtyDelayTime;
|
||||
*/
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
// DON'T CALL BASE METHOD!!!
|
||||
|
||||
var query = EntityQueryEnumerator<CP14FishingProcessComponent>();
|
||||
while (query.MoveNext(out var entityUid, out var processComponent))
|
||||
{
|
||||
Update((entityUid, processComponent), frameTime * 2);
|
||||
}
|
||||
}
|
||||
|
||||
public override void FishPreUpdate(Entity<CP14FishingProcessComponent> process, Fish fish, float frameTime)
|
||||
{
|
||||
base.FishPreUpdate(process, fish, frameTime);
|
||||
|
||||
fish.UpdateSpeed(_random, _timing);
|
||||
Dirty(process);
|
||||
}
|
||||
|
||||
public override void UpdateDirty(Entity<CP14FishingProcessComponent> process)
|
||||
{
|
||||
base.UpdateDirty(process);
|
||||
|
||||
/*
|
||||
if (_timing.CurTime < _dirtyDelayTime)
|
||||
return;
|
||||
|
||||
_dirtyDelayTime = _timing.CurTime + _dirtyDelay;
|
||||
Dirty(process);
|
||||
*/
|
||||
}
|
||||
|
||||
public override void Finish(Entity<CP14FishingProcessComponent> process, bool success)
|
||||
{
|
||||
base.Finish(process, success);
|
||||
|
||||
if (success)
|
||||
{
|
||||
Reward(process);
|
||||
}
|
||||
|
||||
// Raising events before deletion
|
||||
var ev = new CP14FishingFinishedEvent(success);
|
||||
RaiseLocalEvent(process, ref ev, true);
|
||||
|
||||
// Either way, we need to delete the process
|
||||
Stop(process);
|
||||
}
|
||||
|
||||
public override void Reward(Entity<CP14FishingProcessComponent> process)
|
||||
{
|
||||
base.Reward(process);
|
||||
|
||||
var pool = GetPool(process);
|
||||
var rod = GetRod(process);
|
||||
|
||||
var coordinates = Transform(pool).Coordinates;
|
||||
var targetCoordinates = Transform(process.Comp.User!.Value).Coordinates;
|
||||
|
||||
var loot = Spawn(process.Comp.LootProtoId, coordinates);
|
||||
|
||||
_throwing.TryThrow(loot, targetCoordinates, rod.Comp.ThrowPower);
|
||||
}
|
||||
|
||||
public Entity<CP14FishingProcessComponent> Start(
|
||||
Entity<CP14FishingRodComponent> fishingRod,
|
||||
Entity<CP14FishingPoolComponent> fishingPool,
|
||||
EntityUid user)
|
||||
{
|
||||
var process = CreateProcess(fishingRod.Owner);
|
||||
var loot = _pool.GetLootPrototypeId(fishingPool);
|
||||
var style = GetStyle(fishingRod);
|
||||
|
||||
// Save entities
|
||||
process.Comp.FishingRod = fishingRod;
|
||||
process.Comp.FishingPool = fishingPool;
|
||||
process.Comp.User = user;
|
||||
|
||||
process.Comp.Player = new Player(fishingRod.Comp.Size);
|
||||
process.Comp.Fish = new Fish(new MixedBehavior(), _timing.CurTime + TimeSpan.FromSeconds(0.5f));
|
||||
|
||||
process.Comp.LootProtoId = loot;
|
||||
process.Comp.StyleSheet = style;
|
||||
|
||||
Dirty(process);
|
||||
|
||||
Log.Debug($"Started new fishing process at {process}");
|
||||
return process;
|
||||
}
|
||||
|
||||
public Entity<CP14FishingProcessComponent> CreateProcess(EntityUid parent)
|
||||
{
|
||||
var entityUid = SpawnAttachedTo(null, Transform(parent).Coordinates);
|
||||
var ensureComponent = AddComp<CP14FishingProcessComponent>(entityUid);
|
||||
|
||||
return (entityUid, ensureComponent);
|
||||
}
|
||||
}
|
||||
31
Content.Server/_CP14/Fishing/CP14FishingRodSystem.cs
Normal file
31
Content.Server/_CP14/Fishing/CP14FishingRodSystem.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using Content.Shared._CP14.Fishing.Components;
|
||||
using Content.Shared._CP14.Fishing.Systems;
|
||||
using Content.Shared.Interaction;
|
||||
|
||||
namespace Content.Server._CP14.Fishing;
|
||||
|
||||
public sealed class CP14FishingRodSystem : CP14SharedFishingRodSystem
|
||||
{
|
||||
[Dependency] private readonly CP14FishingProcessSystem _fishingProcess = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14FishingPoolComponent, AfterInteractUsingEvent>(OnAfterInteractUsing);
|
||||
}
|
||||
|
||||
private void OnAfterInteractUsing(Entity<CP14FishingPoolComponent> entity, ref AfterInteractUsingEvent args)
|
||||
{
|
||||
if (args.Handled || !args.CanReach)
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14FishingRodComponent>(args.Used, out var fishingRodComponent))
|
||||
return;
|
||||
|
||||
if (fishingRodComponent.Process is not null)
|
||||
return;
|
||||
|
||||
fishingRodComponent.Process = _fishingProcess.Start((args.Used, fishingRodComponent), entity, args.User);
|
||||
}
|
||||
}
|
||||
@@ -97,13 +97,13 @@ public sealed partial class CP14WorkbenchSystem : SharedCP14WorkbenchSystem
|
||||
|
||||
foreach (var req in recipe.Requirements)
|
||||
{
|
||||
req.PostCraft(EntityManager, placedEntities, args.User);
|
||||
req.PostCraft(EntityManager, _proto, placedEntities, args.User);
|
||||
}
|
||||
|
||||
//We teleport result to workbench AFTER craft.
|
||||
foreach (var resultEntity in resultEntities)
|
||||
{
|
||||
_transform.SetCoordinates(resultEntity, Transform(ent).Coordinates.Offset(new Vector2(_random.NextFloat(-0.5f, 0.5f), _random.NextFloat(-0.5f, 0.5f))));
|
||||
_transform.SetCoordinates(resultEntity, Transform(ent).Coordinates.Offset(new Vector2(_random.NextFloat(-0.25f, 0.25f), _random.NextFloat(-0.25f, 0.25f))));
|
||||
}
|
||||
|
||||
UpdateUIRecipes(ent, args.User);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Robust.Shared.Serialization;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
using Robust.Shared.Serialization.Markdown.Mapping;
|
||||
using Robust.Shared.Serialization.Markdown.Validation;
|
||||
@@ -46,6 +47,13 @@ namespace Content.Shared.Construction.Steps
|
||||
return typeof(PartAssemblyConstructionGraphStep);
|
||||
}
|
||||
|
||||
//CP14 stack group support
|
||||
if (node.Has("stackGroup"))
|
||||
{
|
||||
return typeof(CP14StackGroupConstructionGraphStep);
|
||||
}
|
||||
//CP14 stack group support end
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class CP14FishingIconComponent : Component
|
||||
{
|
||||
public static readonly ResPath DefaultTexturePath = new("/Textures/_CP14/Interface/Fishing/Icons/default.png");
|
||||
|
||||
[DataField]
|
||||
public ResPath TexturePath = DefaultTexturePath;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using Content.Shared._CP14.Fishing.Prototypes;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class CP14FishingPoolComponent : Component
|
||||
{
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public ProtoId<CP14FishingPoolLootTablePrototype> LootTable = "Default";
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
using System.Numerics;
|
||||
using Content.Shared._CP14.Fishing.Core;
|
||||
using Content.Shared._CP14.Fishing.Prototypes;
|
||||
using Content.Shared._CP14.Fishing.Systems;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Components;
|
||||
|
||||
[Access(typeof(CP14SharedFishingProcessSystem))]
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
public sealed partial class CP14FishingProcessComponent : Component
|
||||
{
|
||||
/**
|
||||
* Boxes
|
||||
*/
|
||||
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public Player? Player;
|
||||
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public Fish? Fish;
|
||||
|
||||
/**
|
||||
* Progress
|
||||
*/
|
||||
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public float Progress;
|
||||
|
||||
/**
|
||||
* Saved entities
|
||||
*/
|
||||
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public EntityUid? FishingRod = null;
|
||||
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public EntityUid? User = null;
|
||||
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public EntityUid? FishingPool = null;
|
||||
|
||||
/**
|
||||
* Loot
|
||||
*/
|
||||
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public EntProtoId LootProtoId;
|
||||
|
||||
/**
|
||||
* Style
|
||||
*/
|
||||
|
||||
[ViewVariables]
|
||||
public CP14FishingProcessStyleSheetPrototype? StyleSheet;
|
||||
|
||||
/**
|
||||
* Normalized
|
||||
*/
|
||||
|
||||
public Vector2 LootPositionNormalized => Vector2.UnitY * Fish?.Position ?? Vector2.Zero;
|
||||
public Vector2 PlayerPositionNormalized => Vector2.UnitY * Player?.Position ?? Vector2.Zero;
|
||||
public Vector2 PlayerHalfSizeNormalized => Vector2.UnitY * Player?.HalfSize ?? Vector2.Zero;
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using Content.Shared._CP14.Fishing.Prototypes;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
public sealed partial class CP14FishingRodComponent : Component
|
||||
{
|
||||
[ViewVariables]
|
||||
public static readonly ProtoId<CP14FishingProcessStyleSheetPrototype> DefaultStyle = "Default";
|
||||
|
||||
[ViewVariables]
|
||||
public EntityUid? Process;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public bool Reeling;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public float Speed = 0.1f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public float Gravity = 0.075f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public float MaxVelocity = 0.3f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public float MinVelocity = -0.325f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public float Bouncing = 0.07f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public float Drag = 0.98f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public float Size = 0.25f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public float ThrowPower = 10f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public ProtoId<CP14FishingProcessStyleSheetPrototype> Style = DefaultStyle;
|
||||
}
|
||||
18
Content.Shared/_CP14/Fishing/Core/Behaviors/Behavior.cs
Normal file
18
Content.Shared/_CP14/Fishing/Core/Behaviors/Behavior.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Core.Behaviors;
|
||||
|
||||
[ImplicitDataDefinitionForInheritors, MeansImplicitUse]
|
||||
[Serializable, NetSerializable]
|
||||
public abstract partial class Behavior
|
||||
{
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public float Speed { get; set; } = 0.25f;
|
||||
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public float Difficulty { get; set; } = 2f;
|
||||
|
||||
public abstract float CalculateSpeed(IRobustRandom random);
|
||||
}
|
||||
11
Content.Shared/_CP14/Fishing/Core/Behaviors/DartBehavior.cs
Normal file
11
Content.Shared/_CP14/Fishing/Core/Behaviors/DartBehavior.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Core.Behaviors;
|
||||
|
||||
public sealed partial class DartBehavior : Behavior
|
||||
{
|
||||
public override float CalculateSpeed(IRobustRandom random)
|
||||
{
|
||||
return Speed * (0.5f + random.NextFloat() * Difficulty);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Core.Behaviors;
|
||||
|
||||
public sealed partial class FloaterBehaviour : Behavior
|
||||
{
|
||||
public override float CalculateSpeed(IRobustRandom random)
|
||||
{
|
||||
return Speed * (0.5f + random.NextFloat() * Difficulty);
|
||||
}
|
||||
}
|
||||
13
Content.Shared/_CP14/Fishing/Core/Behaviors/MixedBehavior.cs
Normal file
13
Content.Shared/_CP14/Fishing/Core/Behaviors/MixedBehavior.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Core.Behaviors;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class MixedBehavior : Behavior
|
||||
{
|
||||
public override float CalculateSpeed(IRobustRandom random)
|
||||
{
|
||||
return Speed * (random.NextFloat() - 0.5f);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Core.Behaviors;
|
||||
|
||||
public sealed partial class SinkerBehavior : Behavior
|
||||
{
|
||||
public override float CalculateSpeed(IRobustRandom random)
|
||||
{
|
||||
return Speed * (1.0f + random.NextFloat() * 0.5f);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Core.Behaviors;
|
||||
|
||||
public sealed partial class SmoothBehavior : Behavior
|
||||
{
|
||||
public override float CalculateSpeed(IRobustRandom random)
|
||||
{
|
||||
return Speed * (0.5f + random.NextFloat() * Difficulty);
|
||||
}
|
||||
}
|
||||
49
Content.Shared/_CP14/Fishing/Core/Fish.cs
Normal file
49
Content.Shared/_CP14/Fishing/Core/Fish.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using Content.Shared._CP14.Fishing.Core.Behaviors;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Core;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class Fish
|
||||
{
|
||||
private const float MaxPosition = 1f;
|
||||
private const float MinPosition = 0f;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public float Position { get; private set; }
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
private readonly Behavior _behavior;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
private float _speed;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
private TimeSpan _updateSpeedTime;
|
||||
|
||||
public Fish(Behavior behavior, TimeSpan updateSpeedTime)
|
||||
{
|
||||
_behavior = behavior;
|
||||
_updateSpeedTime = updateSpeedTime;
|
||||
}
|
||||
|
||||
public void Update(float frameTime)
|
||||
{
|
||||
// Update position
|
||||
Position += _speed * frameTime;
|
||||
|
||||
// Clamp position
|
||||
Position = Math.Clamp(Position, MinPosition, MaxPosition);
|
||||
}
|
||||
|
||||
public void UpdateSpeed(IRobustRandom random, IGameTiming timing)
|
||||
{
|
||||
if (_updateSpeedTime > timing.CurTime)
|
||||
return;
|
||||
|
||||
_speed = _behavior.CalculateSpeed(random);
|
||||
_updateSpeedTime = timing.CurTime + TimeSpan.FromSeconds(random.NextFloat(1.5f - 1f / _behavior.Difficulty, 2.5f - 1f / _behavior.Difficulty));
|
||||
}
|
||||
}
|
||||
25
Content.Shared/_CP14/Fishing/Core/Player.cs
Normal file
25
Content.Shared/_CP14/Fishing/Core/Player.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Core;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class Player
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public float Size;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public float Position;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public float Velocity;
|
||||
|
||||
[ViewVariables]
|
||||
public float HalfSize => Size / 2f;
|
||||
|
||||
public Player(float size = 0.25f)
|
||||
{
|
||||
Size = size;
|
||||
Position = HalfSize;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace Content.Shared._CP14.Fishing.Events;
|
||||
|
||||
[ByRefEvent]
|
||||
public readonly struct CP14FishingFinishedEvent
|
||||
{
|
||||
public readonly bool Success;
|
||||
|
||||
public CP14FishingFinishedEvent(bool success)
|
||||
{
|
||||
Success = success;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Prototypes;
|
||||
|
||||
[Prototype("CP14FishingPoolLootTable")]
|
||||
public sealed class CP14FishingPoolLootTablePrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; } = string.Empty;
|
||||
|
||||
[DataField]
|
||||
public List<EntProtoId> Prototypes = [];
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Prototypes;
|
||||
|
||||
[Prototype("CP14FishingProcess")]
|
||||
public sealed class CP14FishingProcessPrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; } = string.Empty;
|
||||
|
||||
[DataField, ViewVariables]
|
||||
public EntProtoId LootProtoId;
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
using System.Numerics;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Prototypes;
|
||||
|
||||
/// <summary>
|
||||
/// Represents the style sheet for the fishing process, containing UI elements like background and handle configurations.
|
||||
/// </summary>
|
||||
[Prototype("CP14FishingProcessStyleSheet")]
|
||||
public sealed partial class CP14FishingProcessStyleSheetPrototype : IPrototype
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the unique identifier for this fishing process style sheet prototype.
|
||||
/// </summary>
|
||||
[IdDataField]
|
||||
public string ID { get; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Background settings for the fishing process UI.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables]
|
||||
public BackgroundData Background = new();
|
||||
|
||||
/// <summary>
|
||||
/// Handle settings for the fishing process UI.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables]
|
||||
public HandleData Handle = new();
|
||||
|
||||
/// <summary>
|
||||
/// Contains data related to the background of the fishing process UI.
|
||||
/// </summary>
|
||||
[DataDefinition, Serializable]
|
||||
public sealed partial class BackgroundData
|
||||
{
|
||||
/// <summary>
|
||||
/// Path to the background texture image.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public string Texture = "/Textures/_CP14/Interface/Fishing/background.png";
|
||||
|
||||
/// <summary>
|
||||
/// Offset of the background texture in pixels.
|
||||
/// </summary>
|
||||
[DataField("offset"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public Vector2 OffsetPixels = new(10, 0);
|
||||
|
||||
/// <summary>
|
||||
/// Offset of the handle in pixels.
|
||||
/// </summary>
|
||||
[DataField("handleOffset"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public Vector2 HandleOffsetPixels = new(16, 4);
|
||||
|
||||
/// <summary>
|
||||
/// Size of the handle in pixels.
|
||||
/// </summary>
|
||||
[DataField("handleSize"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public Vector2 HandleSizePixels = new(149, 0);
|
||||
|
||||
/// <summary>
|
||||
/// Offset of the progress bar in pixels.
|
||||
/// </summary>
|
||||
[DataField("progressOffset"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public Vector2 ProgressOffsetPixels = new(31, 3);
|
||||
|
||||
/// <summary>
|
||||
/// Size of the progress bar in pixels.
|
||||
/// </summary>
|
||||
[DataField("progressSize"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public Vector2 ProgressSizePixels = new(4, 144);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the background offset in units (pixels divided by 32).
|
||||
/// </summary>
|
||||
[ViewVariables]
|
||||
public Vector2 Offset => OffsetPixels / 32f;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the handle offset in units (pixels divided by 32).
|
||||
/// </summary>
|
||||
[ViewVariables]
|
||||
public Vector2 HandleOffset => HandleOffsetPixels / 32f;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the progress bar offset in units (pixels divided by 32).
|
||||
/// </summary>
|
||||
[ViewVariables]
|
||||
public Vector2 ProgressOffset => ProgressOffsetPixels / 32f;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the progress bar size in units (pixels divided by 32).
|
||||
/// </summary>
|
||||
[ViewVariables]
|
||||
public Vector2 ProgressSize => ProgressSizePixels / 32f;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the handle size in units (pixels divided by 32).
|
||||
/// </summary>
|
||||
[ViewVariables]
|
||||
public Vector2 HandleSize => HandleSizePixels / 32f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contains data related to the handle elements of the fishing process UI.
|
||||
/// </summary>
|
||||
[DataDefinition, Serializable]
|
||||
public sealed partial class HandleData
|
||||
{
|
||||
/// <summary>
|
||||
/// Path to the texture for the top part of the handle.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public string TopTexture = "/Textures/_CP14/Interface/Fishing/Handle/top.png";
|
||||
|
||||
/// <summary>
|
||||
/// Path to the texture for the middle part of the handle.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public string MiddleTexture = "/Textures/_CP14/Interface/Fishing/Handle/middle.png";
|
||||
|
||||
/// <summary>
|
||||
/// Path to the texture for the bottom part of the handle.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public string BottomTexture = "/Textures/_CP14/Interface/Fishing/Handle/bottom.png";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using Content.Shared._CP14.Fishing.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Systems;
|
||||
|
||||
public sealed class CP14FishingPoolSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
|
||||
public EntProtoId GetLootPrototypeId(Entity<CP14FishingPoolComponent> pool)
|
||||
{
|
||||
var lootTable = _prototype.Index(pool.Comp.LootTable);
|
||||
var loot = _random.Pick(lootTable.Prototypes);
|
||||
|
||||
return loot;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
using Content.Shared._CP14.Fishing.Components;
|
||||
using Content.Shared._CP14.Fishing.Core;
|
||||
using Content.Shared._CP14.Fishing.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Systems;
|
||||
|
||||
public abstract partial class CP14SharedFishingProcessSystem
|
||||
{
|
||||
protected Entity<CP14FishingRodComponent> GetRod(Entity<CP14FishingProcessComponent> process)
|
||||
{
|
||||
var entityUid = process.Comp.FishingRod!.Value;
|
||||
var component = FishingRod.GetComponent(entityUid);
|
||||
return (entityUid, component);
|
||||
}
|
||||
|
||||
protected Entity<CP14FishingPoolComponent> GetPool(Entity<CP14FishingProcessComponent> process)
|
||||
{
|
||||
var entityUid = process.Comp.FishingPool!.Value;
|
||||
var component = FishingPool.GetComponent(entityUid);
|
||||
return (entityUid, component);
|
||||
}
|
||||
|
||||
public CP14FishingProcessStyleSheetPrototype GetStyle(Entity<CP14FishingProcessComponent> process)
|
||||
{
|
||||
return GetStyle(GetRod(process));
|
||||
}
|
||||
|
||||
public CP14FishingProcessStyleSheetPrototype GetStyle(Entity<CP14FishingRodComponent> fishingRod)
|
||||
{
|
||||
if (_prototype.TryIndex(fishingRod.Comp.Style, out var style))
|
||||
return style;
|
||||
|
||||
Log.Error($"Failed to retrieve fishing rod style, {fishingRod.Comp.Style} not found. Reverting to default style.");
|
||||
return _prototype.Index(CP14FishingRodComponent.DefaultStyle);
|
||||
}
|
||||
|
||||
protected static bool Collide(Fish fish, Player player)
|
||||
{
|
||||
var playerMin = player.Position - player.HalfSize;
|
||||
var playerMax = player.Position + player.HalfSize;
|
||||
return fish.Position >= playerMin && fish.Position <= playerMax;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Content.Shared._CP14.Fishing.Components;
|
||||
using Content.Shared._CP14.Fishing.Core;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Systems;
|
||||
|
||||
public abstract partial class CP14SharedFishingProcessSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
|
||||
protected EntityQuery<CP14FishingRodComponent> FishingRod;
|
||||
protected EntityQuery<CP14FishingPoolComponent> FishingPool;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
FishingRod = GetEntityQuery<CP14FishingRodComponent>();
|
||||
FishingPool = GetEntityQuery<CP14FishingPoolComponent>();
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
|
||||
var query = EntityQueryEnumerator<CP14FishingProcessComponent>();
|
||||
while (query.MoveNext(out var entityUid, out var processComponent))
|
||||
{
|
||||
Update((entityUid, processComponent), frameTime);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateReeling(Entity<CP14FishingProcessComponent> process,
|
||||
Entity<CP14FishingRodComponent> fishingRod,
|
||||
float frameTime)
|
||||
{
|
||||
if (process.Comp.Player is not { } player)
|
||||
return;
|
||||
|
||||
if (fishingRod.Comp.Reeling)
|
||||
{
|
||||
player.Velocity += fishingRod.Comp.Speed * frameTime;
|
||||
return;
|
||||
}
|
||||
|
||||
player.Velocity -= fishingRod.Comp.Gravity * frameTime;
|
||||
}
|
||||
|
||||
private void UpdateVelocity(Entity<CP14FishingProcessComponent> process,
|
||||
Entity<CP14FishingRodComponent> fishingRod)
|
||||
{
|
||||
if (process.Comp.Player is not { } player)
|
||||
return;
|
||||
|
||||
player.Velocity *= fishingRod.Comp.Drag;
|
||||
player.Velocity = Math.Clamp(player.Velocity,
|
||||
fishingRod.Comp.MinVelocity,
|
||||
fishingRod.Comp.MaxVelocity);
|
||||
}
|
||||
|
||||
private void UpdatePosition(Entity<CP14FishingProcessComponent> process,
|
||||
float frameTime)
|
||||
{
|
||||
if (process.Comp.Player is not { } player)
|
||||
return;
|
||||
|
||||
player.Position += process.Comp.Player.Velocity * frameTime;
|
||||
|
||||
var halfSize = process.Comp.Player.HalfSize;
|
||||
process.Comp.Player.Position = Math.Clamp(process.Comp.Player.Position, halfSize, 1 - halfSize);
|
||||
}
|
||||
|
||||
public void Update(Entity<CP14FishingProcessComponent> process, float frameTime)
|
||||
{
|
||||
if (process.Comp.Player is not { } player)
|
||||
return;
|
||||
|
||||
var fishingRod = GetRod(process);
|
||||
|
||||
UpdateReeling(process, fishingRod, frameTime);
|
||||
UpdateVelocity(process, fishingRod);
|
||||
UpdatePosition(process, frameTime);
|
||||
|
||||
if (process.Comp.Fish is { } fish)
|
||||
{
|
||||
FishPreUpdate(process, fish, frameTime);
|
||||
|
||||
fish.Update(frameTime);
|
||||
var collides = Collide(fish, player);
|
||||
|
||||
var progressAdditive = collides ? 0.1f : -0.2f;
|
||||
process.Comp.Progress = Math.Clamp(process.Comp.Progress + progressAdditive * frameTime, 0, 1);
|
||||
}
|
||||
|
||||
UpdateDirty(process);
|
||||
|
||||
if (process.Comp.Progress is 1 or 0)
|
||||
Finish(process, process.Comp.Progress is 1);
|
||||
}
|
||||
|
||||
public virtual void FishPreUpdate(Entity<CP14FishingProcessComponent> process, Fish fish, float frameTime)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void UpdateDirty(Entity<CP14FishingProcessComponent> process)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void Finish(Entity<CP14FishingProcessComponent> process, bool success)
|
||||
{
|
||||
}
|
||||
|
||||
public void Stop(Entity<CP14FishingProcessComponent> process)
|
||||
{
|
||||
var rod = GetRod(process);
|
||||
rod.Comp.Process = null;
|
||||
Dirty(rod);
|
||||
|
||||
Del(process);
|
||||
}
|
||||
|
||||
public virtual void Reward(Entity<CP14FishingProcessComponent> process)
|
||||
{
|
||||
}
|
||||
|
||||
public bool TryGetByUser(EntityUid userEntityUid, [NotNullWhen(true)] out Entity<CP14FishingProcessComponent>? process)
|
||||
{
|
||||
process = null;
|
||||
|
||||
var query = EntityQueryEnumerator<CP14FishingProcessComponent>();
|
||||
while (query.MoveNext(out var entityUid, out var processComponent))
|
||||
{
|
||||
if (processComponent.User != userEntityUid)
|
||||
continue;
|
||||
|
||||
process = (entityUid, processComponent);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using Content.Shared._CP14.Fishing.Components;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.Fishing.Systems;
|
||||
|
||||
public abstract class CP14SharedFishingRodSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeAllEvent<RequestFishingRodReelMessage>(OnReel);
|
||||
SubscribeLocalEvent<CP14FishingRodComponent, HandDeselectedEvent>(OnDeselected);
|
||||
}
|
||||
|
||||
private void OnReel(RequestFishingRodReelMessage msg, EntitySessionEventArgs args)
|
||||
{
|
||||
var player = args.SenderSession.AttachedEntity;
|
||||
|
||||
if (!TryComp<HandsComponent>(player, out var hands))
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14FishingRodComponent>(hands.ActiveHandEntity, out var fishingRodComponent))
|
||||
return;
|
||||
|
||||
if (fishingRodComponent.Reeling == msg.Reeling)
|
||||
return;
|
||||
|
||||
fishingRodComponent.Reeling = msg.Reeling;
|
||||
Dirty(hands.ActiveHandEntity.Value, fishingRodComponent);
|
||||
}
|
||||
|
||||
private void OnDeselected(Entity<CP14FishingRodComponent> entity, ref HandDeselectedEvent args)
|
||||
{
|
||||
entity.Comp.Reeling = false;
|
||||
Dirty(entity);
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
protected sealed class RequestFishingRodReelMessage : EntityEventArgs
|
||||
{
|
||||
public bool Reeling;
|
||||
|
||||
public RequestFishingRodReelMessage(bool reeling)
|
||||
{
|
||||
Reeling = reeling;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Content.Shared.Construction;
|
||||
using Content.Shared.Construction.Steps;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CP14.Workbench.Prototypes;
|
||||
|
||||
[DataDefinition]
|
||||
public sealed partial class CP14StackGroupConstructionGraphStep : EntityInsertConstructionGraphStep
|
||||
{
|
||||
[DataField]
|
||||
public ProtoId<CP14StackGroupPrototype> StackGroup = default!;
|
||||
|
||||
[DataField]
|
||||
public int Amount = 1;
|
||||
|
||||
public override void DoExamine(ExaminedEvent examinedEvent)
|
||||
{
|
||||
var group = IoCManager.Resolve<IPrototypeManager>().Index(StackGroup);
|
||||
|
||||
examinedEvent.PushMarkup(Loc.GetString("construction-insert-material-entity", ("amount", Amount), ("materialName", Loc.GetString(group.Name))));
|
||||
}
|
||||
|
||||
public override bool EntityValid(EntityUid uid, IEntityManager entityManager, IComponentFactory compFactory)
|
||||
{
|
||||
var group = IoCManager.Resolve<IPrototypeManager>().Index(StackGroup);
|
||||
|
||||
return entityManager.TryGetComponent(uid, out StackComponent? stack) && group.Stacks.Contains(stack.StackTypeId) && stack.Count >= Amount;
|
||||
}
|
||||
|
||||
public bool EntityValid(EntityUid entity, [NotNullWhen(true)] out StackComponent? stack)
|
||||
{
|
||||
var group = IoCManager.Resolve<IPrototypeManager>().Index(StackGroup);
|
||||
|
||||
if (IoCManager.Resolve<IEntityManager>().TryGetComponent(entity, out StackComponent? otherStack) && group.Stacks.Contains(otherStack.StackTypeId) && otherStack.Count >= Amount)
|
||||
stack = otherStack;
|
||||
else
|
||||
stack = null;
|
||||
|
||||
return stack != null;
|
||||
}
|
||||
|
||||
public override ConstructionGuideEntry GenerateGuideEntry()
|
||||
{
|
||||
var proto = IoCManager.Resolve<IPrototypeManager>();
|
||||
var group = proto.Index(StackGroup);
|
||||
|
||||
var firstStack = group.Stacks.FirstOrNull();
|
||||
|
||||
return new ConstructionGuideEntry()
|
||||
{
|
||||
Localization = "construction-presenter-material-step",
|
||||
Arguments = new (string, object)[]{("amount", Amount), ("material", Loc.GetString(group.Name))},
|
||||
Icon = firstStack != null ? proto.Index(firstStack.Value).Icon : SpriteSpecifier.Invalid,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Workbench.Prototypes;
|
||||
|
||||
/// <summary>
|
||||
/// Allows you to group several different kinds of stacks into one group. Can be used for situations where different stacks are appropriate for a particular situation
|
||||
/// </summary>
|
||||
[Prototype("CP14StackGroup")]
|
||||
public sealed class CP14StackGroupPrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; private set; } = default!;
|
||||
|
||||
[DataField(required: true)]
|
||||
public LocId Name = default!;
|
||||
|
||||
[DataField(required: true)]
|
||||
public List<ProtoId<StackPrototype>> Stacks = new();
|
||||
}
|
||||
@@ -34,7 +34,7 @@ public sealed partial class SkillRequired : CP14WorkbenchCraftRequirement
|
||||
return haveAllSkills;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, HashSet<EntityUid> placedEntities, EntityUid user)
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities, EntityUid user)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, HashSet<EntityUid> placedEntities, EntityUid user)
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities, EntityUid user)
|
||||
{
|
||||
var stackSystem = entManager.System<SharedStackSystem>();
|
||||
|
||||
|
||||
@@ -30,9 +30,7 @@ public sealed partial class ProtoIdResource : CP14WorkbenchCraftRequirement
|
||||
return indexedIngredients.TryGetValue(ProtoId, out var availableQuantity) && availableQuantity >= Count;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid user)
|
||||
public override void PostCraft(EntityManager entManager,IPrototypeManager protoManager, HashSet<EntityUid> placedEntities, EntityUid user)
|
||||
{
|
||||
var requiredCount = Count;
|
||||
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CP14.Workbench.Requirements;
|
||||
|
||||
public sealed partial class StackGroupResource : CP14WorkbenchCraftRequirement
|
||||
{
|
||||
public override bool HideRecipe { get; set; } = false;
|
||||
|
||||
[DataField(required: true)]
|
||||
public ProtoId<CP14StackGroupPrototype> Group;
|
||||
|
||||
[DataField]
|
||||
public int Count = 1;
|
||||
|
||||
public override bool CheckRequirement(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid user,
|
||||
CP14WorkbenchRecipePrototype recipe)
|
||||
{
|
||||
if (!protoManager.TryIndex(Group, out var indexedGroup))
|
||||
return false;
|
||||
|
||||
var count = 0;
|
||||
foreach (var ent in placedEntities)
|
||||
{
|
||||
if (!entManager.TryGetComponent<StackComponent>(ent, out var stack))
|
||||
continue;
|
||||
|
||||
if (!indexedGroup.Stacks.Contains(stack.StackTypeId))
|
||||
continue;
|
||||
|
||||
count += stack.Count;
|
||||
}
|
||||
|
||||
if (count < Count)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid user)
|
||||
{
|
||||
var stackSystem = entManager.System<SharedStackSystem>();
|
||||
|
||||
if (!protoManager.TryIndex(Group, out var indexedGroup))
|
||||
return;
|
||||
|
||||
var requiredCount = Count;
|
||||
foreach (var placedEntity in placedEntities)
|
||||
{
|
||||
if (!entManager.TryGetComponent<StackComponent>(placedEntity, out var stack))
|
||||
continue;
|
||||
|
||||
if (!indexedGroup.Stacks.Contains(stack.StackTypeId))
|
||||
continue;
|
||||
|
||||
var count = (int)MathF.Min(requiredCount, stack.Count);
|
||||
|
||||
if (stack.Count - count <= 0)
|
||||
entManager.DeleteEntity(placedEntity);
|
||||
else
|
||||
stackSystem.SetCount(placedEntity, stack.Count - count, stack);
|
||||
|
||||
requiredCount -= count;
|
||||
}
|
||||
}
|
||||
|
||||
public override string GetRequirementTitle(IPrototypeManager protoManager)
|
||||
{
|
||||
var indexedGroup = protoManager.Index(Group);
|
||||
|
||||
return $"{Loc.GetString(indexedGroup.Name)} x{Count}";
|
||||
}
|
||||
|
||||
public override EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager)
|
||||
{
|
||||
var indexedGroup = protoManager.Index(Group);
|
||||
|
||||
return !protoManager.TryIndex(indexedGroup.Stacks.FirstOrNull(), out var indexedStack) ? null : indexedStack.Icon;
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@ public sealed partial class StackResource : CP14WorkbenchCraftRequirement
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager,
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid user)
|
||||
{
|
||||
|
||||
@@ -50,7 +50,7 @@ public sealed partial class TagResource : CP14WorkbenchCraftRequirement
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, HashSet<EntityUid> placedEntities, EntityUid user)
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities, EntityUid user)
|
||||
{
|
||||
var tagSystem = entManager.System<TagSystem>();
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ public abstract partial class CP14WorkbenchCraftRequirement
|
||||
/// An event that is triggered after crafting. This is the place to put important things like removing items, spending stacks or other things.
|
||||
/// </summary>
|
||||
public abstract void PostCraft(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid user);
|
||||
|
||||
|
||||
@@ -1,14 +1,34 @@
|
||||
marking-CP14HumanFacialHair3Clock = 3 O'clock
|
||||
marking-CP14HumanFacialHairAbe = Abe
|
||||
marking-CP14HumanFacialHairDwarf = Dwarf
|
||||
marking-CP14HumanFacialHairGoateeMush = Goatee
|
||||
marking-CP14HumanFacialHairBriefs = Briefs
|
||||
marking-CP14HumanFacialHairCircle = Circle
|
||||
marking-CP14HumanFacialHairEspanol = Espanol
|
||||
marking-CP14HumanFacialHairImperial = Imperial
|
||||
marking-CP14HumanFacialHairMachete = Machete
|
||||
marking-CP14HumanFacialHairMutton = Mutton
|
||||
marking-CP14HumanFacialHairPigtail = Pigtail
|
||||
marking-CP14HumanFacialHairSage = Sage
|
||||
marking-CP14HumanFacialHairWatson = Watson
|
||||
marking-CP14HumanFacialHairWhiskers = Whiskers
|
||||
marking-CP14HumanFacialHair3Clock = morning stubble
|
||||
marking-CP14HumanFacialHair5oclockmoustache = evening mustache
|
||||
marking-CP14HumanFacialHair7oclock = dusk stubble
|
||||
marking-CP14HumanFacialHair7oclockmoustache = dusk mustache
|
||||
marking-CP14HumanFacialHairAbe = elderborn
|
||||
marking-CP14HumanFacialHairChinlessbeard = chinless
|
||||
marking-CP14HumanFacialHairDwarf = stone short
|
||||
marking-CP14HumanFacialHairDwarf2 = forge battle
|
||||
marking-CP14HumanFacialHairElvis = curled courtly
|
||||
marking-CP14HumanFacialHairFiveoclock = noon shadow
|
||||
marking-CP14HumanFacialHairFullbeard = full war
|
||||
marking-CP14HumanFacialHairFumanchu = mustache of desert winds
|
||||
marking-CP14HumanFacialHairGoateemush = mossy goat
|
||||
marking-CP14HumanFacialHairGt = steel trim
|
||||
marking-CP14HumanFacialHairHip = wildgrass
|
||||
marking-CP14HumanFacialHairHogan = stormblade
|
||||
marking-CP14HumanFacialHairJensen = northern hold
|
||||
marking-CP14HumanFacialHairLongbeard = longhang
|
||||
marking-CP14HumanFacialHairMartialartist = path of silence
|
||||
marking-CP14HumanFacialHairMartialartist2 = path of the blade
|
||||
marking-CP14HumanFacialHairMoonshiner = moon wanderer
|
||||
marking-CP14HumanFacialHairMoustache = commoner’s mustache
|
||||
marking-CP14HumanFacialHairMutton = road whiskers
|
||||
marking-CP14HumanFacialHairMuttonmus = herald’s whiskers
|
||||
marking-CP14HumanFacialHairNeckbeard = shadow chin
|
||||
marking-CP14HumanFacialHairPencilstache = line of the mustached
|
||||
marking-CP14HumanFacialHairSelleck = hunter’s cluster
|
||||
marking-CP14HumanFacialHairSideburn = side mark
|
||||
marking-CP14HumanFacialHairSmallstache = page’s mustache
|
||||
marking-CP14HumanFacialHairVandyke = evening branch
|
||||
marking-CP14HumanFacialHairVolaju = steppe fringe
|
||||
marking-CP14HumanFacialHairWalrus = walrus storm
|
||||
marking-CP14HumanFacialHairWatson = scholarly classic
|
||||
marking-CP14HumanFacialHairWise = runebound
|
||||
@@ -1,7 +1,8 @@
|
||||
cp14-stack-dirt-block = dirt blocks
|
||||
cp14-stack-stone-block = stone blocks
|
||||
cp14-stack-marble-block = marble rocks
|
||||
cp14-stack-wood-planks = wooden planks
|
||||
cp14-stack-wood-planks = oak planks
|
||||
cp14-stack-wood-planks-birch = birch planks
|
||||
cp14-stack-nails = nails
|
||||
cp14-stack-cloth = rolls of fabric
|
||||
cp14-stack-flora = tufts of grass
|
||||
@@ -22,3 +23,5 @@ cp14-stack-wallpaper = rolls of wallpaper
|
||||
cp14-stack-glass-sheet = glass
|
||||
|
||||
cp14-stack-ash-pile = pile of ashes
|
||||
|
||||
cp14-stack-group-wooden-planks-any = planks (any)
|
||||
@@ -10,7 +10,6 @@ cp14-tiles-sand = sand
|
||||
cp14-tiles-snow = snow
|
||||
cp14-tiles-snow-deep = deep snow
|
||||
cp14-tiles-snow-deep-deep = deep deep snow
|
||||
cp14-tiles-marble-cave = marble floor
|
||||
|
||||
# Produced
|
||||
cp14-tiles-foundation = foundation
|
||||
@@ -62,7 +61,7 @@ cp14-tiles-stonebricks-small-carved2 = carved brick floor
|
||||
cp14-tiles-stonebricks-square-carved = carved brick floor
|
||||
cp14-tiles-stonebricks = stonebrick floor
|
||||
cp14-tiles-stonebricks-weather = street stonebrick floor
|
||||
cp14-tiles-stonebricks-marble = marble brick floor
|
||||
cp14-tiles-stonebricks-marble = marble floor
|
||||
|
||||
cp14-tiles-lucens-woodplanks = lucens woodplanks
|
||||
cp14-tiles-lucens-woodplanks-big = big lucens planks
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
cp14-stack-dirt-block = блоки земли
|
||||
cp14-stack-stone-block = каменные блоки
|
||||
cp14-stack-marble-block = мраморные камни
|
||||
cp14-stack-wood-planks = деревянные доски
|
||||
cp14-stack-wood-planks = дубовые доски
|
||||
cp14-stack-wood-planks-birch = березовые доски
|
||||
cp14-stack-nails = гвозди
|
||||
cp14-stack-cloth = рулоны ткани
|
||||
cp14-stack-flora = пучки травы
|
||||
@@ -22,3 +23,7 @@ cp14-stack-wallpaper = рулон обоев
|
||||
cp14-stack-glass-sheet = стекло
|
||||
|
||||
cp14-stack-ash-pile = кучка пепла
|
||||
|
||||
|
||||
|
||||
cp14-stack-group-wooden-planks-any = доски (любые)
|
||||
@@ -10,7 +10,6 @@ cp14-tiles-sand = песок
|
||||
cp14-tiles-snow = снег
|
||||
cp14-tiles-snow-deep = глубокий снег
|
||||
cp14-tiles-snow-deep-deep = очень глубокий снег
|
||||
cp14-tiles-marble-cave = мраморный пол
|
||||
|
||||
# Produced
|
||||
cp14-tiles-foundation = фундамент
|
||||
@@ -62,7 +61,7 @@ cp14-tiles-stonebricks-small-carved2 = пол из резного кирпича
|
||||
cp14-tiles-stonebricks-square-carved = пол из резного кирпича
|
||||
cp14-tiles-stonebricks = каменный кирпичный пол
|
||||
cp14-tiles-stonebricks-weather = уличный каменный кирпичный пол
|
||||
cp14-tiles-stonebricks-marble = мраморный кирпич
|
||||
cp14-tiles-stonebricks-marble = мраморный пол
|
||||
|
||||
cp14-tiles-lucens-woodplanks = люценcовые доски
|
||||
cp14-tiles-lucens-woodplanks-big = большие люценcовые доски
|
||||
|
||||
@@ -43,10 +43,9 @@ entities:
|
||||
data: {}
|
||||
- type: CP14CloudShadows
|
||||
- type: MapLight
|
||||
ambientLightColor: "#DDDDDDFF"
|
||||
- type: LightCycle
|
||||
- type: SunShadow
|
||||
alpha: 0.8
|
||||
direction: 1, -1.5
|
||||
- type: SunShadowCycle
|
||||
- type: Biome
|
||||
forcedMarkerLayers: []
|
||||
markerLayers: []
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -84,18 +84,4 @@
|
||||
- type: Sprite
|
||||
sprite: _CP14/Clothing/Head/Roles/General/jagermeister_hat.rsi
|
||||
- type: Clothing
|
||||
sprite: _CP14/Clothing/Head/Roles/General/jagermeister_hat.rsi
|
||||
|
||||
- type: entity
|
||||
parent: CP14ClothingHeadBase
|
||||
id: CP14ClothingHeadStrawHat
|
||||
name: straw hat
|
||||
description: Easy to make, not too bad to lose.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Clothing/Head/Roles/General/straw_hat.rsi
|
||||
- type: Clothing
|
||||
sprite: _CP14/Clothing/Head/Roles/General/straw_hat.rsi
|
||||
- type: Construction
|
||||
graph: CP14StrawHat
|
||||
node: cp14headstrawhat
|
||||
sprite: _CP14/Clothing/Head/Roles/General/jagermeister_hat.rsi
|
||||
@@ -1,45 +0,0 @@
|
||||
- type: entity
|
||||
id: CP14ConstrainedSpawnerBase
|
||||
abstract: true
|
||||
parent: MarkerBase
|
||||
description: lol
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: red
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
fixedRotation: true
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
spawn:
|
||||
shape:
|
||||
!type:PhysShapeCircle
|
||||
radius: 15
|
||||
hard: false
|
||||
layer:
|
||||
- AllMask
|
||||
- type: TriggerOnCollide
|
||||
fixtureID: spawn
|
||||
- type: StepTrigger
|
||||
requiredTriggeredSpeed: 0
|
||||
stepOn: true
|
||||
|
||||
- type: entity
|
||||
parent: CP14ConstrainedSpawnerBase
|
||||
id: CP14ConstrainedSpawnerXeno
|
||||
name: xeno constrained spawner
|
||||
components:
|
||||
- type: TriggerOnCollide
|
||||
fixtureID: spawn
|
||||
- type: CP14ConstrainedSpawnerOnTrigger
|
||||
prototypes:
|
||||
- CP14MobXeno
|
||||
- CP14MobXenoDrone
|
||||
- CP14MobSpaceCobra
|
||||
- CP14MobSmallPurpleSnake
|
||||
- CP14MobPurpleSnake
|
||||
- MobLuminousEntity
|
||||
- MobLuminousObject
|
||||
- CP14MobWatcherMagmawing
|
||||
@@ -137,18 +137,4 @@
|
||||
color: green
|
||||
- state: frame
|
||||
- type: CP14BiomeSpawner
|
||||
biome: CP14LeafMaze
|
||||
|
||||
- type: entity
|
||||
id: CP14BiomeSpawnerMarbleCave
|
||||
parent: CP14BaseBiomeSpawner
|
||||
suffix: Marble cave
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: cave
|
||||
- state: frame
|
||||
- sprite: _CP14/Objects/Materials/marble_block.rsi
|
||||
state: stone_3
|
||||
- type: CP14BiomeSpawner
|
||||
biome: CP14MarbleCaves
|
||||
biome: CP14LeafMaze
|
||||
@@ -6,6 +6,30 @@
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: 3oclock
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHair5oclockmoustache
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: 5oclockmoustache
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHair7oclock
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: 7oclock
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHair7oclockmoustache
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: 7oclockmoustache
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairAbe
|
||||
bodyPart: FacialHair
|
||||
@@ -14,6 +38,14 @@
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: abe
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairChinlessbeard
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: chinlessbeard
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairDwarf
|
||||
bodyPart: FacialHair
|
||||
@@ -23,7 +55,47 @@
|
||||
state: dwarf
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairGoateeMush
|
||||
id: CP14HumanFacialHairDwarf2
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: dwarf2
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairElvis
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: elvis
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairFiveoclock
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: fiveoclock
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairFullbeard
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: fullbeard
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairFumanchu
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: fumanchu
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairGoateemush
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
@@ -31,44 +103,76 @@
|
||||
state: goateemush
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairBriefs
|
||||
id: CP14HumanFacialHairGt
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: briefs
|
||||
state: gt
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairCircle
|
||||
id: CP14HumanFacialHairHip
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: circle
|
||||
state: hip
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairEspanol
|
||||
id: CP14HumanFacialHairHogan
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: espanol
|
||||
state: hogan
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairImperial
|
||||
id: CP14HumanFacialHairJensen
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: imperial
|
||||
state: jensen
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairMachete
|
||||
id: CP14HumanFacialHairLongbeard
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: machete
|
||||
state: longbeard
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairMartialartist
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: martialartist
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairMartialartist2
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: martialartist2
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairMoonshiner
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: moonshiner
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairMoustache
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: moustache
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairMutton
|
||||
@@ -79,20 +183,76 @@
|
||||
state: mutton
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairPigtail
|
||||
id: CP14HumanFacialHairMuttonmus
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: pigtail
|
||||
state: muttonmus
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairSage
|
||||
id: CP14HumanFacialHairNeckbeard
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: sage
|
||||
state: neckbeard
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairPencilstache
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: pencilstache
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairSelleck
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: selleck
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairSideburn
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: sideburn
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairSmallstache
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: smallstache
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairVandyke
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: vandyke
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairVolaju
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: volaju
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairWalrus
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: walrus
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairWatson
|
||||
@@ -103,9 +263,9 @@
|
||||
state: watson
|
||||
|
||||
- type: marking
|
||||
id: CP14HumanFacialHairWhiskers
|
||||
id: CP14HumanFacialHairWise
|
||||
bodyPart: FacialHair
|
||||
markingCategory: FacialHair
|
||||
sprites:
|
||||
- sprite: _CP14/Mobs/Customization/human_facial_hair.rsi
|
||||
state: whiskers
|
||||
state: wise
|
||||
@@ -45,8 +45,10 @@
|
||||
0: Alive
|
||||
50: Dead
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 5
|
||||
baseSprintSpeed: 7
|
||||
baseWalkSpeed: 2
|
||||
baseSprintSpeed: 4
|
||||
friction: 0.5
|
||||
acceleration: 3
|
||||
- type: ProjectileBatteryAmmoProvider
|
||||
proto: WatcherBolt
|
||||
fireCost: 50
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
- type: entity
|
||||
id: CP14MobXeno
|
||||
parent: MobXeno
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- CP14Monster
|
||||
|
||||
- type: entity
|
||||
id: CP14MobXenoDrone
|
||||
parent: MobXenoDrone
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- CP14Monster
|
||||
|
||||
- type: entity
|
||||
id: CP14MobSpaceCobra
|
||||
name: cobra
|
||||
parent: MobCobraSpace
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- CP14Monster
|
||||
- type: MeleeChemicalInjector
|
||||
transferAmount: 2
|
||||
- type: MeleeWeapon
|
||||
hidden: true
|
||||
soundHit:
|
||||
path: /Audio/Effects/bite.ogg
|
||||
angle: 0
|
||||
animation: WeaponArcBite
|
||||
damage:
|
||||
types:
|
||||
Piercing: 2
|
||||
Poison: 2
|
||||
|
||||
- type: entity
|
||||
id: CP14MobPurpleSnake
|
||||
parent: MobPurpleSnake
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- CP14Monster
|
||||
- type: MeleeWeapon
|
||||
angle: 0
|
||||
animation: WeaponArcBite
|
||||
damage:
|
||||
types:
|
||||
Piercing: 1
|
||||
- type: MeleeChemicalInjector
|
||||
transferAmount: 3
|
||||
|
||||
- type: entity
|
||||
id: CP14MobSmallPurpleSnake
|
||||
parent: MobSmallPurpleSnake
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- CP14Monster
|
||||
- type: SolutionTransfer
|
||||
maxTransferAmount: 0.2
|
||||
- type: MeleeWeapon
|
||||
angle: 0
|
||||
animation: WeaponArcBite
|
||||
damage:
|
||||
types:
|
||||
Piercing: 0.5
|
||||
- type: MeleeChemicalInjector
|
||||
transferAmount: 2
|
||||
|
||||
- type: entity
|
||||
id: CP14MobWatcherMagmawing
|
||||
parent: MobWatcherMagmawing
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- CP14Monster
|
||||
@@ -1,124 +0,0 @@
|
||||
- type: entity
|
||||
id: CP14DirtBlock1
|
||||
parent: BaseItem
|
||||
name: dirt block
|
||||
description: A block of excellent black soil.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
sprite: _CP14/Objects/Materials/dirt_block.rsi
|
||||
layers:
|
||||
- state: dirt
|
||||
map: ["base"]
|
||||
- type: FloorTile
|
||||
placeTileSound:
|
||||
collection: CP14Digging
|
||||
params:
|
||||
variation: 0.03
|
||||
volume: 2
|
||||
outputs:
|
||||
- CP14FloorDirt
|
||||
- type: Appearance
|
||||
- type: Stack
|
||||
stackType: CP14Dirt
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- dirt
|
||||
- dirt_2
|
||||
- dirt_3
|
||||
- type: Material
|
||||
- type: PhysicalComposition # точно ли это нужно?
|
||||
materialComposition:
|
||||
CP14Dirt: 100
|
||||
- type: CP14MagicEssenceContainer
|
||||
essences:
|
||||
Earth: 1
|
||||
|
||||
- type: entity
|
||||
id: CP14DirtBlock10
|
||||
parent: CP14DirtBlock1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14StoneBlock1
|
||||
parent: BaseItem
|
||||
name: stone block
|
||||
description: A block of cold stone.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
sprite: _CP14/Objects/Materials/stone_block.rsi
|
||||
layers:
|
||||
- state: stone
|
||||
map: ["base"]
|
||||
- type: Appearance
|
||||
- type: Stack
|
||||
stackType: CP14Stone
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- stone
|
||||
- stone_2
|
||||
- stone_3
|
||||
- type: Material
|
||||
- type: PhysicalComposition # точно ли это нужно?
|
||||
materialComposition:
|
||||
CP14Stone: 100
|
||||
- type: CP14MagicEssenceContainer
|
||||
essences:
|
||||
Earth: 1
|
||||
|
||||
- type: entity
|
||||
id: CP14StoneBlock10
|
||||
parent: CP14StoneBlock1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14MarbleBlock1
|
||||
parent: BaseItem
|
||||
name: marble block
|
||||
description: A block of white marble.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
sprite: _CP14/Objects/Materials/marble_block.rsi
|
||||
layers:
|
||||
- state: stone
|
||||
map: ["base"]
|
||||
- type: Appearance
|
||||
- type: Stack
|
||||
stackType: CP14MarbleStone
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- stone
|
||||
- stone_2
|
||||
- stone_3
|
||||
- type: Material
|
||||
- type: PhysicalComposition # точно ли это нужно?
|
||||
materialComposition:
|
||||
CP14MarbleStone: 100
|
||||
|
||||
- type: entity
|
||||
id: CP14MarbleBlock10
|
||||
parent: CP14MarbleBlock1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 10
|
||||
@@ -1,192 +1,90 @@
|
||||
- type: entity
|
||||
id: CP14WoodLog
|
||||
id: CP14DirtBlock1
|
||||
parent: BaseItem
|
||||
name: wooden log
|
||||
description: A piece of unprocessed wood. Good material for building, or starting a fire.
|
||||
name: dirt block
|
||||
description: A block of excellent black soil.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
shape:
|
||||
- 0,0,1,0
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/wood.rsi
|
||||
noRot: true
|
||||
sprite: _CP14/Objects/Materials/dirt_block.rsi
|
||||
layers:
|
||||
- state: log
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
log: ""
|
||||
log_2: ""
|
||||
log_3: ""
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FireplaceFuel
|
||||
- Wooden
|
||||
- type: Flammable
|
||||
fireSpread: false
|
||||
canResistFire: false
|
||||
alwaysCombustible: true
|
||||
canExtinguish: true
|
||||
cP14FireplaceFuel: 30
|
||||
damage:
|
||||
types:
|
||||
Heat: 1
|
||||
- type: Log
|
||||
spawnedPrototype: CP14WoodenPlanks1
|
||||
spawnCount: 3
|
||||
- type: Appearance
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
damageModifierSet: Wood
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 25
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: WoodDestroy
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14WoodenPlanks1
|
||||
parent: BaseItem
|
||||
name: wooden planks
|
||||
description: Treated and ready-to-use wood.
|
||||
categories: [ ForkFiltered ]
|
||||
suffix: 1
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/wood.rsi
|
||||
layers:
|
||||
- state: planks
|
||||
- state: dirt
|
||||
map: ["base"]
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FireplaceFuel
|
||||
- Wooden
|
||||
- type: Flammable
|
||||
fireSpread: false
|
||||
canResistFire: false
|
||||
alwaysCombustible: true
|
||||
canExtinguish: true
|
||||
cP14FireplaceFuel: 12
|
||||
damage:
|
||||
types:
|
||||
Heat: 1
|
||||
- type: Appearance
|
||||
- type: Stack
|
||||
stackType: CP14WoodenPlanks
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- planks
|
||||
- planks_2
|
||||
- planks_3
|
||||
- type: Material
|
||||
- type: PhysicalComposition # точно ли это нужно?
|
||||
materialComposition:
|
||||
CP14WoodenPlanks: 100
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
damageModifierSet: Wood
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 25
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: WoodDestroy
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14WoodenPlanks10
|
||||
parent: CP14WoodenPlanks1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14WoodenPlanks20
|
||||
parent: CP14WoodenPlanks1
|
||||
suffix: 20
|
||||
components:
|
||||
- type: Stack
|
||||
count: 20
|
||||
|
||||
- type: entity
|
||||
id: CP14LucensWoodLog
|
||||
parent: CP14WoodLog
|
||||
name: lucens log
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/lucens_wood.rsi
|
||||
layers:
|
||||
- state: log
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
log: ""
|
||||
log_2: ""
|
||||
log_3: ""
|
||||
- type: Log
|
||||
spawnedPrototype: CP14LucensWoodenPlanks1
|
||||
spawnCount: 3
|
||||
|
||||
- type: entity
|
||||
id: CP14LucensWoodenPlanks1
|
||||
parent: CP14WoodenPlanks1
|
||||
name: lucens planks
|
||||
suffix: 1
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/lucens_wood.rsi
|
||||
layers:
|
||||
- state: planks
|
||||
map: ["base"]
|
||||
- type: Stack
|
||||
stackType: CP14LucensWoodenPlanks
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- planks
|
||||
- planks_2
|
||||
- planks_3
|
||||
- type: FloorTile
|
||||
placeTileSound:
|
||||
path: /Audio/Effects/woodenclosetclose.ogg
|
||||
collection: CP14Digging
|
||||
params:
|
||||
variation: 0.03
|
||||
volume: 2
|
||||
outputs:
|
||||
- CP14FloorLucensWoodPlanks
|
||||
- CP14FloorDirt
|
||||
- type: Appearance
|
||||
- type: Stack
|
||||
stackType: CP14Dirt
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- dirt
|
||||
- dirt_2
|
||||
- dirt_3
|
||||
- type: Material
|
||||
- type: PhysicalComposition # точно ли это нужно?
|
||||
materialComposition:
|
||||
CP14Dirt: 100
|
||||
- type: CP14MagicEssenceContainer
|
||||
essences:
|
||||
Earth: 1
|
||||
|
||||
- type: entity
|
||||
id: CP14LucensWoodenPlanks10
|
||||
parent: CP14LucensWoodenPlanks1
|
||||
id: CP14DirtBlock10
|
||||
parent: CP14DirtBlock1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14LucensWoodenPlanks20
|
||||
parent: CP14LucensWoodenPlanks1
|
||||
suffix: 20
|
||||
id: CP14StoneBlock1
|
||||
parent: BaseItem
|
||||
name: stone block
|
||||
description: A block of cold stone.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
sprite: _CP14/Objects/Materials/stone_block.rsi
|
||||
layers:
|
||||
- state: stone
|
||||
map: ["base"]
|
||||
- type: Appearance
|
||||
- type: Stack
|
||||
stackType: CP14Stone
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- stone
|
||||
- stone_2
|
||||
- stone_3
|
||||
- type: Material
|
||||
- type: PhysicalComposition # точно ли это нужно?
|
||||
materialComposition:
|
||||
CP14Stone: 100
|
||||
- type: CP14MagicEssenceContainer
|
||||
essences:
|
||||
Earth: 1
|
||||
|
||||
- type: entity
|
||||
id: CP14StoneBlock10
|
||||
parent: CP14StoneBlock1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 20
|
||||
count: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14Nail1
|
||||
|
||||
241
Resources/Prototypes/_CP14/Entities/Objects/Materials/wood.yml
Normal file
241
Resources/Prototypes/_CP14/Entities/Objects/Materials/wood.yml
Normal file
@@ -0,0 +1,241 @@
|
||||
- type: entity
|
||||
id: CP14WoodLog
|
||||
parent: BaseItem
|
||||
name: wooden log
|
||||
description: A piece of unprocessed wood. Good material for building, or starting a fire.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
shape:
|
||||
- 0,0,1,0
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/wood.rsi
|
||||
layers:
|
||||
- state: log
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
log: ""
|
||||
log_2: ""
|
||||
log_3: ""
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FireplaceFuel
|
||||
- Wooden
|
||||
- type: Flammable
|
||||
fireSpread: false
|
||||
canResistFire: false
|
||||
alwaysCombustible: true
|
||||
canExtinguish: true
|
||||
cP14FireplaceFuel: 30
|
||||
damage:
|
||||
types:
|
||||
Heat: 1
|
||||
- type: Log
|
||||
spawnedPrototype: CP14WoodenPlanks1
|
||||
spawnCount: 3
|
||||
- type: Appearance
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
damageModifierSet: Wood
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 25
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: WoodDestroy
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14WoodenPlanks1
|
||||
parent: BaseItem
|
||||
name: wooden planks
|
||||
description: Treated and ready-to-use wood.
|
||||
categories: [ ForkFiltered ]
|
||||
suffix: 1
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/wood.rsi
|
||||
layers:
|
||||
- state: planks
|
||||
map: ["base"]
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FireplaceFuel
|
||||
- Wooden
|
||||
- type: Flammable
|
||||
fireSpread: false
|
||||
canResistFire: false
|
||||
alwaysCombustible: true
|
||||
canExtinguish: true
|
||||
cP14FireplaceFuel: 12
|
||||
damage:
|
||||
types:
|
||||
Heat: 1
|
||||
- type: Appearance
|
||||
- type: Stack
|
||||
stackType: CP14WoodenPlanks
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- planks
|
||||
- planks_2
|
||||
- planks_3
|
||||
- type: Material
|
||||
- type: PhysicalComposition # точно ли это нужно?
|
||||
materialComposition:
|
||||
CP14WoodenPlanks: 100
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
damageModifierSet: Wood
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 25
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: WoodDestroy
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14WoodenPlanks10
|
||||
parent: CP14WoodenPlanks1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14WoodenPlanks20
|
||||
parent: CP14WoodenPlanks1
|
||||
suffix: 20
|
||||
components:
|
||||
- type: Stack
|
||||
count: 20
|
||||
|
||||
# Lucen
|
||||
|
||||
- type: entity
|
||||
id: CP14LucensWoodLog
|
||||
parent: CP14WoodLog
|
||||
name: lucens log
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/wood_lucens.rsi
|
||||
layers:
|
||||
- state: log
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
log: ""
|
||||
log_2: ""
|
||||
log_3: ""
|
||||
- type: Log
|
||||
spawnedPrototype: CP14LucensWoodenPlanks1
|
||||
spawnCount: 3
|
||||
|
||||
- type: entity
|
||||
id: CP14LucensWoodenPlanks1
|
||||
parent: CP14WoodenPlanks1
|
||||
name: lucens planks
|
||||
suffix: 1
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/wood_lucens.rsi
|
||||
layers:
|
||||
- state: planks
|
||||
map: ["base"]
|
||||
- type: Stack
|
||||
stackType: CP14LucensWoodenPlanks
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- planks
|
||||
- planks_2
|
||||
- planks_3
|
||||
|
||||
- type: entity
|
||||
id: CP14LucensWoodenPlanks10
|
||||
parent: CP14LucensWoodenPlanks1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14LucensWoodenPlanks20
|
||||
parent: CP14LucensWoodenPlanks1
|
||||
suffix: 20
|
||||
components:
|
||||
- type: Stack
|
||||
count: 20
|
||||
|
||||
#Birch
|
||||
|
||||
- type: entity
|
||||
id: CP14BirchWoodLog
|
||||
parent: CP14WoodLog
|
||||
name: birch log
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/wood_birch.rsi
|
||||
layers:
|
||||
- state: log
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
log: ""
|
||||
log_2: ""
|
||||
log_3: ""
|
||||
- type: Log
|
||||
spawnedPrototype: CP14BirchWoodenPlanks1
|
||||
spawnCount: 3
|
||||
|
||||
- type: entity
|
||||
id: CP14BirchWoodenPlanks1
|
||||
parent: CP14WoodenPlanks1
|
||||
name: birch planks
|
||||
suffix: 1
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/wood_birch.rsi
|
||||
layers:
|
||||
- state: planks
|
||||
map: ["base"]
|
||||
- type: Stack
|
||||
stackType: CP14BirchWoodenPlanks
|
||||
count: 1
|
||||
baseLayer: base
|
||||
layerStates:
|
||||
- planks
|
||||
- planks_2
|
||||
- planks_3
|
||||
|
||||
- type: entity
|
||||
id: CP14BirchWoodenPlanks10
|
||||
parent: CP14BirchWoodenPlanks1
|
||||
suffix: 10
|
||||
components:
|
||||
- type: Stack
|
||||
count: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14BirchWoodenPlanks20
|
||||
parent: CP14BirchWoodenPlanks1
|
||||
suffix: 20
|
||||
components:
|
||||
- type: Stack
|
||||
count: 20
|
||||
@@ -66,19 +66,6 @@
|
||||
- type: Stack
|
||||
stackType: CP14FloorTileMarbleBrick
|
||||
|
||||
- type: entity
|
||||
parent: CP14FloorTileBase
|
||||
id: CP14FloorTileMarbleSmallbricks
|
||||
name: marble small brick
|
||||
components:
|
||||
- type: Sprite
|
||||
state: marble_smallbricks
|
||||
- type: FloorTile
|
||||
outputs:
|
||||
- CP14FloorMarbleSmallbricks
|
||||
- type: Stack
|
||||
stackType: CP14FloorTileMarbleSmallbricks
|
||||
|
||||
- type: entity
|
||||
parent: CP14FloorTileBase
|
||||
id: CP14FloorTileOakWoodplanks
|
||||
@@ -87,6 +74,11 @@
|
||||
- type: Sprite
|
||||
state: oak_woodplanks
|
||||
- type: FloorTile
|
||||
placeTileSound:
|
||||
path: /Audio/Effects/woodenclosetclose.ogg
|
||||
params:
|
||||
variation: 0.03
|
||||
volume: 2
|
||||
outputs:
|
||||
- CP14FloorOakWoodPlanks
|
||||
- type: Stack
|
||||
@@ -196,4 +188,77 @@
|
||||
outputs:
|
||||
- CP14FloorStonebricksSquareCarved
|
||||
- type: Stack
|
||||
stackType: CP14FloorTileStonebricksSquareCarved
|
||||
stackType: CP14FloorTileStonebricksSquareCarved
|
||||
|
||||
|
||||
- type: entity
|
||||
parent: CP14FloorTileBase
|
||||
id: CP14FloorTileBirchWoodplanks
|
||||
name: birch woodplanks
|
||||
components:
|
||||
- type: Sprite
|
||||
state: birch_woodplanks
|
||||
- type: FloorTile
|
||||
placeTileSound:
|
||||
path: /Audio/Effects/woodenclosetclose.ogg
|
||||
params:
|
||||
variation: 0.03
|
||||
volume: 2
|
||||
outputs:
|
||||
- CP14FloorBirchWoodPlanks
|
||||
- type: Stack
|
||||
stackType: CP14FloorTileBirchWoodplanks
|
||||
|
||||
- type: entity
|
||||
parent: CP14FloorTileBase
|
||||
id: CP14FloorTileBirchWoodplanksBig
|
||||
name: birch big woodplanks
|
||||
components:
|
||||
- type: Sprite
|
||||
state: birch_woodplanks_big
|
||||
- type: FloorTile
|
||||
placeTileSound:
|
||||
path: /Audio/Effects/woodenclosetclose.ogg
|
||||
params:
|
||||
variation: 0.03
|
||||
volume: 2
|
||||
outputs:
|
||||
- CP14FloorBirchWoodPlanksBig
|
||||
- type: Stack
|
||||
stackType: CP14FloorTileBirchWoodplanksBig
|
||||
|
||||
- type: entity
|
||||
parent: CP14FloorTileBase
|
||||
id: CP14FloorTileBirchWoodplanksCruciform
|
||||
name: birch cruciform woodplanks
|
||||
components:
|
||||
- type: Sprite
|
||||
state: birch_woodplanks_cruciform
|
||||
- type: FloorTile
|
||||
placeTileSound:
|
||||
path: /Audio/Effects/woodenclosetclose.ogg
|
||||
params:
|
||||
variation: 0.03
|
||||
volume: 2
|
||||
outputs:
|
||||
- CP14FloorBirchWoodPlanksCruciform
|
||||
- type: Stack
|
||||
stackType: CP14FloorTileBirchWoodplanksCruciform
|
||||
|
||||
- type: entity
|
||||
parent: CP14FloorTileBase
|
||||
id: CP14FloorTileBirchWoodplanksStairs
|
||||
name: birch stairs woodplanks
|
||||
components:
|
||||
- type: Sprite
|
||||
state: birch_woodplanks_stairways
|
||||
- type: FloorTile
|
||||
placeTileSound:
|
||||
path: /Audio/Effects/woodenclosetclose.ogg
|
||||
params:
|
||||
variation: 0.03
|
||||
volume: 2
|
||||
outputs:
|
||||
- CP14FloorBirchWoodPlanksStairways
|
||||
- type: Stack
|
||||
stackType: CP14FloorTileBirchWoodplanksStairs
|
||||
@@ -0,0 +1,49 @@
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: CP14FishingRod
|
||||
name: fishing rod
|
||||
description: Wooden stick with string attached.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Item
|
||||
shape:
|
||||
- 0,0,0,1
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Tools/fishing_rod.rsi
|
||||
state: icon
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 50
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: MetalBreak
|
||||
- !type:CP14ModularDisassembleBehavior
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- type: CP14ModularCraftStartPoint
|
||||
startSlots:
|
||||
- FishingRodShaft
|
||||
- type: MeleeWeapon
|
||||
angle: 45
|
||||
attackRate: 1
|
||||
wideAnimationRotation: 135
|
||||
wideAnimation: CP14WeaponArcSlash
|
||||
damage:
|
||||
types:
|
||||
Blunt: 0.1
|
||||
soundHit:
|
||||
collection: MetalThud
|
||||
cPAnimationLength: 0.25
|
||||
- type: Clothing
|
||||
equipDelay: 0.25
|
||||
unequipDelay: 0.25
|
||||
quickEquip: false
|
||||
breakOnMove: false
|
||||
slots:
|
||||
- neck
|
||||
- type: CP14FishingRod
|
||||
@@ -9,6 +9,7 @@
|
||||
snap:
|
||||
- Wall
|
||||
components:
|
||||
- type: CP14FishingPool
|
||||
- type: PlacementReplacement
|
||||
key: floorTile
|
||||
- type: Sprite
|
||||
@@ -120,4 +121,4 @@
|
||||
- CP14GatherableWaterAirLily
|
||||
chance: 1
|
||||
offset: 0.2
|
||||
deleteSpawnerAfterSpawn: false
|
||||
deleteSpawnerAfterSpawn: false
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeAabb
|
||||
bounds: "-0.35,-0.4,0.35,0.4"
|
||||
bounds: "-0.2,-0.2,0.2,0.2"
|
||||
density: 1000
|
||||
layer:
|
||||
- WallLayer
|
||||
@@ -82,15 +82,6 @@
|
||||
components:
|
||||
- type: Sprite
|
||||
offset: 0,1.55
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeAabb
|
||||
bounds: "-0.18,-0.35,0.18,0.35"
|
||||
density: 2000
|
||||
layer:
|
||||
- WallLayer
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
@@ -148,7 +139,7 @@
|
||||
id: CP14FloraTreeSnow
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Flora/snow_trees.rsi
|
||||
sprite: _CP14/Structures/Flora/tree_snow.rsi
|
||||
layers:
|
||||
- state: tree01
|
||||
map: ["random"]
|
||||
@@ -256,15 +247,6 @@
|
||||
- random:
|
||||
tree01: ""
|
||||
tree02: ""
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeAabb
|
||||
bounds: "-0.18,-0.35,0.18,0.35"
|
||||
density: 2000
|
||||
layer:
|
||||
- WallLayer
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
@@ -297,3 +279,151 @@
|
||||
CP14LucensWoodLog:
|
||||
min: 3
|
||||
max: 6
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseTree
|
||||
id: CP14FloraTreeBirchSmall
|
||||
suffix: Small
|
||||
components:
|
||||
- type: Sprite
|
||||
offset: 0,1.3
|
||||
sprite: _CP14/Structures/Flora/tree_birch_small.rsi
|
||||
layers:
|
||||
- state: tree01
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
tree01: ""
|
||||
tree02: ""
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTypeTrigger
|
||||
damageType: Heat
|
||||
damage: 100
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 200
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 75
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/tree_fell.ogg
|
||||
params:
|
||||
volume: 5
|
||||
variation: 0.05
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14BirchWoodLog:
|
||||
min: 1
|
||||
max: 2
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseTree
|
||||
id: CP14FloraTreeBirchMedium
|
||||
suffix: Medium
|
||||
components:
|
||||
- type: Sprite
|
||||
offset: 0,1.8
|
||||
sprite: _CP14/Structures/Flora/tree_birch_medium.rsi
|
||||
layers:
|
||||
- state: tree01
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
tree01: ""
|
||||
tree02: ""
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTypeTrigger
|
||||
damageType: Heat
|
||||
damage: 100
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 200
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 75
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/tree_fell.ogg
|
||||
params:
|
||||
volume: 5
|
||||
variation: 0.05
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14BirchWoodLog:
|
||||
min: 2
|
||||
max: 4
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseTree
|
||||
id: CP14FloraTreeBirchLarge
|
||||
suffix: Large
|
||||
components:
|
||||
- type: Sprite
|
||||
offset: 0,2.6
|
||||
sprite: _CP14/Structures/Flora/tree_birch_big.rsi
|
||||
layers:
|
||||
- state: tree01
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
tree01: ""
|
||||
tree02: ""
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTypeTrigger
|
||||
damageType: Heat
|
||||
damage: 100
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 200
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 75
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/tree_fell.ogg
|
||||
params:
|
||||
volume: 5
|
||||
variation: 0.05
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14BirchWoodLog:
|
||||
min: 3
|
||||
max: 6
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
- type: entity
|
||||
parent:
|
||||
- BaseStructure
|
||||
id: CP14TableBase
|
||||
- CP14BaseFlammable
|
||||
id: CP14WoodenTableBase
|
||||
categories: [ ForkFiltered ]
|
||||
abstract: true
|
||||
components:
|
||||
@@ -16,31 +17,6 @@
|
||||
- TableMask
|
||||
layer:
|
||||
- TableLayer
|
||||
- type: Damageable
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 60
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/picaxe2.ogg
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
collection: FootstepHull
|
||||
- type: Climbable
|
||||
- type: PlaceableSurface
|
||||
|
||||
- type: entity
|
||||
parent:
|
||||
- CP14TableBase
|
||||
- CP14BaseFlammable
|
||||
id: CP14WoodenTableBase
|
||||
abstract: true
|
||||
components:
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
damageModifierSet: Wood
|
||||
@@ -76,6 +52,8 @@
|
||||
- type: FireVisuals
|
||||
sprite: _CP14/Effects/fire.rsi
|
||||
normalState: full
|
||||
- type: Climbable
|
||||
- type: PlaceableSurface
|
||||
|
||||
- type: entity
|
||||
parent: CP14WoodenTableBase
|
||||
@@ -138,25 +116,4 @@
|
||||
state: full
|
||||
- type: Construction
|
||||
graph: CP14TableWoodenCounter
|
||||
node: CP14TableWoodenCounter
|
||||
|
||||
- type: entity
|
||||
parent: CP14TableBase
|
||||
id: CP14TableMarble
|
||||
name: marble table
|
||||
description: Exquisite white marble table.
|
||||
components:
|
||||
- type: Damageable
|
||||
damageContainer: StructuralInorganic
|
||||
damageModifierSet: Metallic
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Furniture/Tables/marble.rsi
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Furniture/Tables/marble.rsi
|
||||
state: full
|
||||
- type: IconSmooth
|
||||
key: state
|
||||
base: state
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
collection: FootstepFloor
|
||||
node: CP14TableWoodenCounter
|
||||
@@ -38,39 +38,6 @@
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
|
||||
- type: entity
|
||||
id: CP14WallMarbleStone
|
||||
name: marble
|
||||
parent: CP14WallStone
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Walls/Natural/marble_stone.rsi
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Walls/Natural/marble_stone.rsi
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 350
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 100
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/break_stone.ogg
|
||||
params:
|
||||
volume: -6
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14MarbleBlock1:
|
||||
min: 2
|
||||
max: 3
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
|
||||
- type: entity
|
||||
id: CP14WallStoneIndestructable
|
||||
|
||||
@@ -71,25 +71,6 @@
|
||||
sprite: _CP14/Structures/Walls/marblebricks_stone_wall.rsi
|
||||
- type: IconSmooth
|
||||
base: stonebricks
|
||||
- type: Damageable
|
||||
damageContainer: StructuralInorganic
|
||||
damageModifierSet: Rock
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 200
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/break_stone.ogg
|
||||
params:
|
||||
volume: -6
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: Construction
|
||||
graph: CP14WallMarbleBrick
|
||||
node: CP14WallMarbleBrick
|
||||
- type: CP14WallpaperHolder
|
||||
|
||||
- type: entity
|
||||
@@ -147,6 +128,18 @@
|
||||
node: WallWooden
|
||||
- type: CP14WallpaperHolder
|
||||
|
||||
- type: entity
|
||||
id: CP14WallWoodenBirch
|
||||
parent: CP14WallWooden
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Walls/wooden_wall_birch.rsi
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Walls/wooden_wall_birch.rsi
|
||||
- type: Construction
|
||||
graph: CP14WallWood
|
||||
node: WallWoodenBirch
|
||||
|
||||
- type: entity
|
||||
id: CP14WallWoodenPalisade
|
||||
name: palisade
|
||||
|
||||
4
Resources/Prototypes/_CP14/Fishing/lootTables.yml
Normal file
4
Resources/Prototypes/_CP14/Fishing/lootTables.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
- type: CP14FishingPoolLootTable
|
||||
id: Default
|
||||
prototypes:
|
||||
- CP14BaseLockpick
|
||||
13
Resources/Prototypes/_CP14/Fishing/styleSheets.yml
Normal file
13
Resources/Prototypes/_CP14/Fishing/styleSheets.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
- type: CP14FishingProcessStyleSheet
|
||||
id: Default
|
||||
background:
|
||||
texture: /Textures/_CP14/Interface/Fishing/Styles/Default/background.png
|
||||
offset: 10, 0
|
||||
handleOffset: 14, 5
|
||||
handleSize: 11, 141
|
||||
progressOffset: 4, 4
|
||||
progressSize: 2, 142
|
||||
handle:
|
||||
topTexture: /Textures/_CP14/Interface/Fishing/Styles/Default/Handle/top.png
|
||||
middleTexture: /Textures/_CP14/Interface/Fishing/Styles/Default/Handle/middle.png
|
||||
bottomTexture: /Textures/_CP14/Interface/Fishing/Styles/Default/Handle/bottom.png
|
||||
@@ -202,7 +202,6 @@
|
||||
- CP14ClothingHeadJestersCap
|
||||
- CP14ClothingHeadHuntersHat
|
||||
- CP14ClothingHeadJagermeisterHat
|
||||
- CP14ClothingHeadStrawHat
|
||||
|
||||
- type: loadout
|
||||
id: CP14ClothingHeadMetalHeadband
|
||||
@@ -224,11 +223,6 @@
|
||||
equipment:
|
||||
head: CP14ClothingHeadJestersCap
|
||||
|
||||
- type: loadout
|
||||
id: CP14ClothingHeadStrawHat
|
||||
equipment:
|
||||
head: CP14ClothingHeadStrawHat
|
||||
|
||||
- type: loadout
|
||||
id: CP14ClothingHeadHuntersHat
|
||||
equipment:
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
- type: gameMap
|
||||
id: Factoria
|
||||
mapName: "Factoria"
|
||||
mapPath: /Maps/_CP14/factoria.yml
|
||||
maxRandomOffset: 0
|
||||
randomRotation: false
|
||||
minPlayers: 0
|
||||
stations:
|
||||
Factoria:
|
||||
stationProto: CP14BaseExpedition
|
||||
components:
|
||||
- type: StationNameSetup
|
||||
mapNameTemplate: "Factoria"
|
||||
- type: StationJobs
|
||||
availableJobs:
|
||||
#Mercenary
|
||||
CP14Guildmaster: [1, 1]
|
||||
CP14Adventurer: [ -1, -1 ]
|
||||
#Artisans
|
||||
CP14Apprentice: [ 5, 5 ]
|
||||
CP14Alchemist: [ 2, 2 ]
|
||||
CP14Blacksmith: [ 2, 2 ]
|
||||
CP14Innkeeper: [ 3, 4 ]
|
||||
CP14Merchant: [2, 2]
|
||||
#Guard
|
||||
CP14Guard: [8, 8]
|
||||
CP14GuardCommander: [1, 1]
|
||||
- type: CP14StationZLevels
|
||||
defaultMapLevel: 0
|
||||
levels:
|
||||
-1:
|
||||
path: /Maps/_CP14/factoria_d.yml
|
||||
- type: CP14StationKeyDistribution
|
||||
keys:
|
||||
- Alchemy1
|
||||
- Alchemy2
|
||||
- Blacksmith1
|
||||
- Blacksmith2
|
||||
- PersonalHouse1
|
||||
- PersonalHouse2
|
||||
- PersonalHouse3
|
||||
- PersonalHouse4
|
||||
- PersonalHouse5
|
||||
- PersonalHouse6
|
||||
- PersonalHouse7
|
||||
- PersonalHouse8
|
||||
- PersonalHouse9
|
||||
- PersonalHouse10
|
||||
- PersonalHouse11
|
||||
- PersonalHouse12
|
||||
- PersonalHouse13
|
||||
- PersonalHouse14
|
||||
- PersonalHouse15
|
||||
- PersonalHouse16
|
||||
@@ -25,15 +25,6 @@
|
||||
color: "#555963"
|
||||
price: 0
|
||||
|
||||
- type: material
|
||||
id: CP14MarbleStone
|
||||
stackEntity: CP14MarbleBlock1
|
||||
name: cp14-material-stone-block #TODO
|
||||
unit: materials-unit-chunk
|
||||
icon: { sprite: _CP14/Objects/Materials/marble_block.rsi, state: stone_2 }
|
||||
color: "#555963"
|
||||
price: 0
|
||||
|
||||
- type: material
|
||||
id: CP14Nail
|
||||
stackEntity: CP14Nail1
|
||||
@@ -93,7 +84,7 @@
|
||||
stackEntity: CP14LucensWoodenPlanks1
|
||||
name: cp14-material-lucens-planks
|
||||
unit: materials-unit-bar
|
||||
icon: { sprite: _CP14/Objects/Materials/lucens_wood.rsi, state: planks_2 }
|
||||
icon: { sprite: _CP14/Objects/Materials/wood_lucens.rsi, state: planks_2 }
|
||||
color: "#1a1e22"
|
||||
price: 0
|
||||
|
||||
|
||||
@@ -41,10 +41,6 @@
|
||||
biomeTemplate: CP14CavesFloor
|
||||
tileMask:
|
||||
- CP14FloorGrass
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14MarbleCaves
|
||||
tileMask:
|
||||
- CP14FloorMarble
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneCavesRingFloorMaskStone
|
||||
@@ -106,9 +102,9 @@
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 50, 50
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.8
|
||||
blendWeight: 0.6
|
||||
layers:
|
||||
- tile: CP14FloorMarble
|
||||
- tile: Space
|
||||
threshold: 0.50
|
||||
noise:
|
||||
frequency: 0.010
|
||||
@@ -116,4 +112,18 @@
|
||||
fractalType: FBm
|
||||
octaves: 5
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 80, 50
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.2
|
||||
layers:
|
||||
- tile: Space
|
||||
threshold: 0.50
|
||||
noise:
|
||||
frequency: 0.08
|
||||
noiseType: OpenSimplex2
|
||||
fractalType: FBm
|
||||
octaves: 5
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
@@ -220,7 +220,7 @@
|
||||
- CP14DemiplaneHot
|
||||
layers:
|
||||
- !type:OreDunGen
|
||||
entity: CP14MobSlimeBase
|
||||
entity: CP14MobWatcherIce
|
||||
count: 2
|
||||
minGroupSize: 2
|
||||
maxGroupSize: 3
|
||||
@@ -239,7 +239,7 @@
|
||||
- CP14DemiplaneCold
|
||||
layers:
|
||||
- !type:OreDunGen
|
||||
entity: CP14MobSlimeBase
|
||||
entity: CP14MobWatcherMagma
|
||||
count: 2
|
||||
minGroupSize: 2
|
||||
maxGroupSize: 3
|
||||
|
||||
@@ -126,8 +126,12 @@
|
||||
- CP14FloorGrassLight
|
||||
- CP14FloorGrassTall
|
||||
entities:
|
||||
- CP14FloraTreeGreen
|
||||
- CP14FloraTreeGreen
|
||||
- CP14FloraTreeGreenLarge
|
||||
- CP14FloraTreeBirchSmall
|
||||
- CP14FloraTreeBirchMedium
|
||||
- CP14FloraTreeBirchLarge
|
||||
- !type:BiomeEntityLayer # More Rocks
|
||||
threshold: 0.7
|
||||
noise:
|
||||
@@ -174,8 +178,12 @@
|
||||
- CP14FloorGrassLight
|
||||
- CP14FloorGrassTall
|
||||
entities:
|
||||
- CP14FloraTreeGreen
|
||||
- CP14FloraTreeGreen
|
||||
- CP14FloraTreeGreenLarge
|
||||
- CP14FloraTreeBirchSmall
|
||||
- CP14FloraTreeBirchMedium
|
||||
- CP14FloraTreeBirchLarge
|
||||
|
||||
- type: biomeTemplate
|
||||
id: CP14GrasslandHills # Холмы
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
- type: biomeTemplate
|
||||
id: CP14MarbleCaves
|
||||
layers:
|
||||
- !type:BiomeTileLayer
|
||||
threshold: -1.0
|
||||
tile: CP14FloorMarbleCave
|
||||
#Rocks
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: 0.4
|
||||
noise:
|
||||
seed: 1
|
||||
noiseType: OpenSimplex2
|
||||
fractalType: FBm
|
||||
frequency: 2
|
||||
allowedTiles:
|
||||
- CP14FloorMarbleCave
|
||||
entities:
|
||||
- CP14RockSmall
|
||||
# Lakes
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -0.45
|
||||
invert: true
|
||||
noise:
|
||||
seed: 12
|
||||
noiseType: Perlin
|
||||
fractalType: Ridged
|
||||
octaves: 1
|
||||
frequency: 0.1
|
||||
gain: 0.5
|
||||
allowedTiles:
|
||||
- CP14FloorMarbleCave
|
||||
entities:
|
||||
- CP14FloorLava
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -0.45
|
||||
invert: true
|
||||
noise:
|
||||
seed: 0
|
||||
noiseType: Perlin
|
||||
fractalType: Ridged
|
||||
octaves: 1
|
||||
frequency: 0.1
|
||||
gain: 0.5
|
||||
allowedTiles:
|
||||
- CP14FloorMarbleCave
|
||||
entities:
|
||||
- CP14WallMarbleStone
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14WoodenBed
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
- material: CP14Cloth
|
||||
amount: 1
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
- material: CP14Nail
|
||||
amount: 2
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 4
|
||||
- material: CP14Nail
|
||||
amount: 2
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14CurtainsWhite
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 1
|
||||
doAfter: 2
|
||||
- material: CP14Nail
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
- material: CP14Stone
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
completed:
|
||||
- !type:SnapToGrid { }
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 5
|
||||
doAfter: 3
|
||||
- node: CP14mannequin
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14WallmountOrdersBorder
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 3
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14ChairWooden
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- node: CP14ChairWooden
|
||||
@@ -24,7 +24,7 @@
|
||||
edges:
|
||||
- to: CP14BenchWood
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- node: CP14BenchWood
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14TableWooden
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- node: CP14TableWooden
|
||||
@@ -24,7 +24,7 @@
|
||||
edges:
|
||||
- to: CP14TableWoodenRound
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- node: CP14TableWoodenRound
|
||||
@@ -40,7 +40,7 @@
|
||||
edges:
|
||||
- to: CP14TableWoodenCounter
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- node: CP14TableWoodenCounter
|
||||
@@ -56,7 +56,7 @@
|
||||
edges:
|
||||
- to: CP14Workbench
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- node: CP14Workbench
|
||||
@@ -72,7 +72,7 @@
|
||||
edges:
|
||||
- to: CP14WorkbenchCooking
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- node: CP14WorkbenchCooking
|
||||
@@ -88,7 +88,7 @@
|
||||
edges:
|
||||
- to: CP14WorkbenchSewing
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- node: CP14WorkbenchSewing
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14WoodenPallet
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- node: CP14WoodenPallet
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
- !type:SnapToGrid
|
||||
southRotation: true
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
|
||||
@@ -18,16 +18,13 @@
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:GivePrototype
|
||||
prototype: CP14WoodenPlanks1
|
||||
amount: 2
|
||||
- !type:DeleteEntity {}
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- to: CP14target
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 1
|
||||
- material: CP14Nail
|
||||
@@ -64,7 +61,7 @@
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 5
|
||||
- material: CP14Cloth
|
||||
amount: 2
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14BaseBarrel
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 5
|
||||
doAfter: 3
|
||||
- material: CP14Nail
|
||||
@@ -27,7 +27,7 @@
|
||||
edges:
|
||||
- to: CP14CraneBarrel
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 5
|
||||
doAfter: 3
|
||||
- material: CP14Nail
|
||||
@@ -46,7 +46,7 @@
|
||||
edges:
|
||||
- to: CP14CraneBarrelSmall
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 3
|
||||
- material: CP14Nail
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14WoodenChestFrame
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
edges:
|
||||
- to: CP14WoodenChest
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- material: CP14Nail
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
- material: CP14Cloth
|
||||
amount: 2
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
- material: CP14Nail
|
||||
amount: 1
|
||||
@@ -26,7 +26,7 @@
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 4
|
||||
- material: CP14Nail
|
||||
amount: 2
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14WoodenDoorFrame
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
doAfter: 1
|
||||
- to: CP14WoodenDoor
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- to: CP14WoodenDoorWindowed
|
||||
@@ -47,9 +47,6 @@
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: CP14WoodenPlanks1
|
||||
amount: 2
|
||||
- !type:DeleteEntity {}
|
||||
steps:
|
||||
- tool: Prying #TODO - new tool
|
||||
@@ -76,10 +73,6 @@
|
||||
entity: CP14WoodenDoor
|
||||
edges:
|
||||
- to: CP14WoodenDoorFrame
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: CP14WoodenPlanks1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Prying #TODO - new tool
|
||||
doAfter: 5
|
||||
@@ -88,10 +81,6 @@
|
||||
entity: CP14WoodenDoorMirrored
|
||||
edges:
|
||||
- to: CP14WoodenDoorFrameMirrored
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: CP14WoodenPlanks1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Prying #TODO - new tool
|
||||
doAfter: 5
|
||||
@@ -100,10 +89,6 @@
|
||||
entity: CP14WoodenDoorWindowed
|
||||
edges:
|
||||
- to: CP14WoodenDoorFrame
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: CP14WoodenPlanks1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Prying #TODO - new tool
|
||||
doAfter: 5
|
||||
@@ -112,10 +97,6 @@
|
||||
entity: CP14WoodenDoorWindowedMirrored
|
||||
edges:
|
||||
- to: CP14WoodenDoorFrameMirrored
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: CP14WoodenPlanks1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Prying #TODO - new tool
|
||||
doAfter: 5
|
||||
|
||||
@@ -8,32 +8,32 @@
|
||||
edges:
|
||||
- to: CP14FenceWoodSmallStraight
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- to: CP14FenceWoodSmallCorner
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- to: CP14FenceWoodSmallGate
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- to: CP14FenceWoodStraight
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 4
|
||||
doAfter: 2
|
||||
- to: CP14FenceWoodCorner
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 4
|
||||
doAfter: 2
|
||||
- to: CP14FenceWoodGate
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 4
|
||||
doAfter: 2
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
edges:
|
||||
- to: CP14RoofWooden
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14WallmountTorch
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 3
|
||||
doAfter: 3
|
||||
- material: CP14Cloth
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
edges:
|
||||
- to: CP14WallmountBarShelfA
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- node: CP14WallmountBarShelfA
|
||||
@@ -24,7 +24,7 @@
|
||||
edges:
|
||||
- to: CP14WallmountBarShelfB
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
- node: CP14WallmountBarShelfB
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
- type: constructionGraph
|
||||
id: CP14WallMarbleBrick
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
edges:
|
||||
- to: CP14WallMarbleBrick
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
southRotation: true
|
||||
steps:
|
||||
- material: CP14MarbleStone
|
||||
amount: 3
|
||||
doAfter: 2
|
||||
- node: CP14WallMarbleBrick
|
||||
entity: CP14WallMarbleBrick
|
||||
@@ -9,7 +9,7 @@
|
||||
- !type:SnapToGrid
|
||||
southRotation: true
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 2
|
||||
|
||||
@@ -35,6 +35,16 @@
|
||||
doAfter: 1
|
||||
- tool: CP14Hammering
|
||||
doAfter: 2
|
||||
- to: WallWoodenBirch
|
||||
steps:
|
||||
- material: CP14BirchWoodenPlanks
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- material: CP14Nail
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- tool: CP14Hammering
|
||||
doAfter: 2
|
||||
- to: WindowWooden
|
||||
steps:
|
||||
- material: CP14GlassSheet
|
||||
@@ -49,6 +59,14 @@
|
||||
- tool: CP14Hammering
|
||||
doAfter: 2
|
||||
|
||||
- node: WallWoodenBirch
|
||||
entity: CP14WallWoodenBirch
|
||||
edges:
|
||||
- to: FrameWooden
|
||||
steps:
|
||||
- tool: CP14Hammering
|
||||
doAfter: 2
|
||||
|
||||
- node: WindowWooden
|
||||
entity: CP14WindowWooden
|
||||
|
||||
@@ -63,7 +81,7 @@
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
steps:
|
||||
- material: CP14WoodenPlanks
|
||||
- stackGroup: WoodenPlanks
|
||||
amount: 4
|
||||
doAfter: 2
|
||||
- node: CP14WallWoodenPalisade
|
||||
|
||||
@@ -16,6 +16,24 @@
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
crystallPunkAllowed: true
|
||||
name: wooden birch wall
|
||||
description: Sturdy enough to cover you from threats or cold winds.
|
||||
id: CP14WoodenWallBirch
|
||||
graph: CP14WallWood
|
||||
startNode: start
|
||||
targetNode: WallWoodenBirch
|
||||
category: construction-category-structures
|
||||
icon:
|
||||
sprite: _CP14/Structures/Walls/wooden_wall_birch.rsi
|
||||
state: full
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
crystallPunkAllowed: true
|
||||
name: palisade
|
||||
@@ -72,7 +90,7 @@
|
||||
|
||||
- type: construction
|
||||
crystallPunkAllowed: true
|
||||
name: stonebrick wall
|
||||
name: stone wall
|
||||
description: Sturdy enough to cover you from threats or cold winds.
|
||||
id: CP14WallStonebrick
|
||||
graph: CP14WallStonebrick
|
||||
@@ -88,24 +106,6 @@
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
crystallPunkAllowed: true
|
||||
name: marble brick wall
|
||||
description: Sturdy enough to cover you from threats or cold winds.
|
||||
id: CP14WallMarbleBrick
|
||||
graph: CP14WallMarbleBrick
|
||||
startNode: start
|
||||
targetNode: CP14WallMarbleBrick
|
||||
category: construction-category-structures
|
||||
icon:
|
||||
sprite: _CP14/Structures/Walls/marblebricks_stone_wall.rsi
|
||||
state: full
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
crystallPunkAllowed: true
|
||||
name: iron grille
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
- type: constructionGraph
|
||||
id: CP14StrawHat
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
edges:
|
||||
- to: cp14headstrawhat
|
||||
steps:
|
||||
- tag: CP14Wheat
|
||||
name: wheat
|
||||
icon:
|
||||
sprite: _CP14/Objects/Flora/Farm/wheat.rsi
|
||||
state: base1
|
||||
doAfter: 4
|
||||
|
||||
- node: cp14headstrawhat
|
||||
entity: CP14ClothingHeadStrawHat
|
||||
@@ -11,17 +11,3 @@
|
||||
icon:
|
||||
sprite: _CP14/Clothing/Head/Produced/wreath.rsi
|
||||
state: icon
|
||||
|
||||
- type: construction
|
||||
crystallPunkAllowed: true
|
||||
name: straw hat
|
||||
id: cp14headstrawhat
|
||||
graph: CP14StrawHat
|
||||
startNode: start
|
||||
targetNode: cp14headstrawhat
|
||||
category: construction-category-clothing
|
||||
objectType: Item
|
||||
description: Easy to make, not too bad to lose.
|
||||
icon:
|
||||
sprite: _CP14/Clothing/Head/Roles/General/straw_hat.rsi
|
||||
state: icon
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 2
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
- !type:StackGroupResource
|
||||
group: WoodenPlanks
|
||||
count: 3
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14Rope
|
||||
@@ -16,8 +16,8 @@
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 3
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
- !type:StackGroupResource
|
||||
group: WoodenPlanks
|
||||
count: 2
|
||||
- !type:StackResource
|
||||
stack: CP14Nail
|
||||
@@ -29,8 +29,8 @@
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 3
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
- !type:StackGroupResource
|
||||
group: WoodenPlanks
|
||||
count: 2
|
||||
result: CP14SmokingPipe
|
||||
|
||||
@@ -39,8 +39,8 @@
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 3
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
- !type:StackGroupResource
|
||||
group: WoodenPlanks
|
||||
count: 2
|
||||
result: CP14Plate
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 3
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
- !type:StackGroupResource
|
||||
group: WoodenPlanks
|
||||
count: 2
|
||||
- !type:StackResource
|
||||
stack: CP14Cloth
|
||||
@@ -115,8 +115,8 @@
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 2
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
- !type:StackGroupResource
|
||||
group: WoodenPlanks
|
||||
count: 4
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14String
|
||||
@@ -150,8 +150,8 @@
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
- !type:StackGroupResource
|
||||
group: WoodenPlanks
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14CrystalShardBase
|
||||
result: CP14CrayonWhite
|
||||
|
||||
@@ -15,22 +15,11 @@
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14MarbleStone
|
||||
stack: CP14Stone
|
||||
count: 1
|
||||
result: CP14FloorTileMarbleBrick
|
||||
resultCount: 4
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FloorTileMarbleSmallbricks
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14MarbleStone
|
||||
count: 1
|
||||
result: CP14FloorTileMarbleSmallbricks
|
||||
resultCount: 4
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FloorTileStonebricks
|
||||
tag: CP14RecipeWorkbench
|
||||
@@ -117,4 +106,48 @@
|
||||
stack: CP14WoodenPlanks
|
||||
count: 1
|
||||
result: CP14FloorTileOakWoodplanksStairs
|
||||
resultCount: 4
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FloorTileBirchWoodplanks
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14BirchWoodenPlanks
|
||||
count: 1
|
||||
result: CP14FloorTileBirchWoodplanks
|
||||
resultCount: 4
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FloorTileBirchWoodplanksBig
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14BirchWoodenPlanks
|
||||
count: 1
|
||||
result: CP14FloorTileBirchWoodplanksBig
|
||||
resultCount: 4
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FloorTileBirchWoodplanksCruciform
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14BirchWoodenPlanks
|
||||
count: 1
|
||||
result: CP14FloorTileBirchWoodplanksCruciform
|
||||
resultCount: 4
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FloorTileBirchWoodplanksStairs
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14BirchWoodenPlanks
|
||||
count: 1
|
||||
result: CP14FloorTileBirchWoodplanksStairs
|
||||
resultCount: 4
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user