Merge remote-tracking branch 'upstream/master' into leather_and_backpacks
This commit is contained in:
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,17 +1,23 @@
|
||||
## About the PR
|
||||
<!-- What did you change in this PR? -->
|
||||
<!-- Что вы изменили в своем пулл реквесте? -->
|
||||
|
||||
## Why / Balance
|
||||
<!-- Why was it changed? Link any discussions or issues here. Please discuss how this would affect game balance. -->
|
||||
<!-- Зачем нужно это изменение? Прикрепите любые обсуждения или проблемы здесь. Опишите, как это повлияет на текущий баланс игры. -->
|
||||
|
||||
## Media
|
||||
<!--
|
||||
PRs which make ingame changes (adding clothing, items, new features, etc) are required to have media attached that showcase the changes.
|
||||
Small fixes/refactors are exempt.
|
||||
-->
|
||||
|
||||
**Changelog**
|
||||
<!-- Add a Changelog entry to make players aware of new features or changes that could affect gameplay.
|
||||
Make sure to read the guidelines and take this Changelog template out of the comment block in order for it to show up.
|
||||
Changelog must have a :cl: symbol, so the bot recognizes the changes and adds them to the game's changelog. -->
|
||||
<!--
|
||||
Пулл реквесты, которые несут за собой игровые изменения (добавления одежды, предметов и так далее) требуют чтобы вы прикрепили скриншоты или видеоролики, демонстрирующие эти изменения.
|
||||
Небольшие исправления не считаются.
|
||||
:cl:
|
||||
- add: Added fun!
|
||||
- remove: Removed fun!
|
||||
- tweak: Changed fun!
|
||||
- fix: Fixed fun!
|
||||
-->
|
||||
|
||||
18
.github/workflows/CP14Publish.yml
vendored
18
.github/workflows/CP14Publish.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: Publish
|
||||
name: Edge Publish
|
||||
|
||||
concurrency:
|
||||
group: publish
|
||||
@@ -10,6 +10,15 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: sudo apt-get install -y python3-paramiko python3-lxml
|
||||
|
||||
- name: Send POST-request
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
@@ -18,3 +27,10 @@ jobs:
|
||||
password: ${{ secrets.BUILD_PASS }}
|
||||
port: 22
|
||||
script: sh update.sh &> /dev/null
|
||||
|
||||
- name: Publish changelog (Discord)
|
||||
continue-on-error: true
|
||||
run: Tools/actions_changelogs_since_last_run.py
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.CHANGELOG_DISCORD_WEBHOOK }}
|
||||
@@ -40,7 +40,7 @@ public sealed class ClientClothingSystem : ClothingSystem
|
||||
{Jumpsuit, "INNERCLOTHING"},
|
||||
{"neck", "NECK"},
|
||||
{"back", "BACKPACK"},
|
||||
{"belt1", "BELT1"},
|
||||
{"belt", "BELT"},
|
||||
{"belt2", "BELT2"},
|
||||
{"gloves", "HAND"},
|
||||
{"shoes", "FEET"},
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Content.Client._CP14.Discord;
|
||||
using Content.Client._CP14.JoinQueue;
|
||||
using Content.Client._CP14.Input;
|
||||
using Content.Client.Administration.Managers;
|
||||
using Content.Client.Changelog;
|
||||
using Content.Client.Chat.Managers;
|
||||
@@ -171,6 +172,7 @@ namespace Content.Client.Entry
|
||||
_parallaxManager.LoadDefaultParallax();
|
||||
|
||||
//CP14
|
||||
CP14ContentContexts.SetupContexts(_inputManager.Contexts);
|
||||
_overlayManager.AddOverlay(new CP14BasePostProcessOverlay());
|
||||
_discordAuth.Initialize();
|
||||
_joinQueueManager.Initialize();
|
||||
|
||||
@@ -26,27 +26,6 @@
|
||||
<!-- Products will be added as children here -->
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
<!-- CP14 random reactions begin -->
|
||||
<!--<BoxContainer Name="RandomVariations"
|
||||
Orientation="Vertical"
|
||||
VerticalExpand="True"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Center">
|
||||
<controls:SplitBar MinHeight="10">
|
||||
</controls:SplitBar>
|
||||
<Label Name="RandomVariationsLabel"
|
||||
Text="{Loc 'cp14-guidebook-random-variations-title'}"
|
||||
Visible="False"
|
||||
HorizontalAlignment="Center"
|
||||
FontColorOverride="#1e6651" />
|
||||
<BoxContainer Orientation="Vertical" HorizontalExpand="True" VerticalAlignment="Center">
|
||||
<BoxContainer Name="RandomProductsContainer" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical">
|
||||
~1~ Random products will be added as children here @1@
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
</BoxContainer>-->
|
||||
<!-- CP14 random reactions end -->
|
||||
|
||||
</BoxContainer>
|
||||
<PanelContainer StyleClasses="LowDivider" Margin="0 5 0 5" />
|
||||
</BoxContainer>
|
||||
|
||||
@@ -37,7 +37,7 @@ public sealed partial class GuideReagentReaction : BoxContainer, ISearchableCont
|
||||
Container container = ReactantsContainer;
|
||||
SetReagents(prototype.Reactants, ref container, protoMan);
|
||||
Container productContainer = ProductsContainer;
|
||||
var products = new Dictionary<string, FixedPoint2>(prototype._products); // CP14 random reactions
|
||||
var products = new Dictionary<string, FixedPoint2>(prototype.Products);
|
||||
foreach (var (reagent, reactantProto) in prototype.Reactants)
|
||||
{
|
||||
if (reactantProto.Catalyst)
|
||||
@@ -45,14 +45,6 @@ public sealed partial class GuideReagentReaction : BoxContainer, ISearchableCont
|
||||
}
|
||||
SetReagents(products, ref productContainer, protoMan, false);
|
||||
|
||||
// CP14 random reagents begin
|
||||
if (prototype.Cp14RandomProducts.Count > 0)
|
||||
{
|
||||
var randomProducts = new Dictionary<string, FixedPoint2>(prototype.Cp14RandomProducts[prototype.Cp14RandomProductIndex]);
|
||||
SetReagents(randomProducts, ref productContainer, protoMan, false);
|
||||
}
|
||||
// CP14 random reagents end
|
||||
|
||||
var mixingCategories = new List<MixingCategoryPrototype>();
|
||||
if (prototype.MixingCategories != null)
|
||||
{
|
||||
|
||||
@@ -85,9 +85,6 @@ namespace Content.Client.Input
|
||||
human.AddFunction(ContentKeyFunctions.Arcade1);
|
||||
human.AddFunction(ContentKeyFunctions.Arcade2);
|
||||
human.AddFunction(ContentKeyFunctions.Arcade3);
|
||||
//CP14 Keys
|
||||
human.AddFunction(ContentKeyFunctions.CP14OpenSkillMenu);
|
||||
//CP14 Keys end
|
||||
|
||||
// actions should be common (for ghosts, mobs, etc)
|
||||
common.AddFunction(ContentKeyFunctions.OpenActionsMenu);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Shared._CP14.Input;
|
||||
using System.Numerics;
|
||||
using Content.Client.Stylesheets;
|
||||
using Content.Shared.CCVar;
|
||||
@@ -313,7 +314,9 @@ namespace Content.Client.Options.UI.Tabs
|
||||
|
||||
//CP14
|
||||
AddHeader("ui-options-header-cp14");
|
||||
AddButton(ContentKeyFunctions.CP14OpenSkillMenu);
|
||||
AddButton(CP14ContentKeyFunctions.CP14OpenSkillMenu);
|
||||
AddButton(CP14ContentKeyFunctions.OpenBelt2);
|
||||
AddButton(CP14ContentKeyFunctions.SmartEquipBelt2);
|
||||
//CP14 end
|
||||
|
||||
foreach (var control in _keyControls.Values)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
xmlns:style="clr-namespace:Content.Client.Stylesheets"
|
||||
xmlns:ic="clr-namespace:Robust.Shared.Input;assembly=Robust.Shared"
|
||||
xmlns:is="clr-namespace:Content.Shared.Input;assembly=Content.Shared"
|
||||
xmlns:isc="clr-namespace:Content.Shared._CP14.Input;assembly=Content.Shared"
|
||||
xmlns:xe="clr-namespace:Content.Client.UserInterface.XamlExtensions"
|
||||
xmlns:ui="clr-namespace:Content.Client.UserInterface.Controls"
|
||||
xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.MenuBar.Widgets"
|
||||
@@ -39,7 +40,7 @@
|
||||
Access="Internal"
|
||||
Icon="{xe:Tex '/Textures/Interface/students-cap.svg.192dpi.png'}"
|
||||
ToolTip="{Loc 'cp14-game-hud-open-skill-menu-button-tooltip'}"
|
||||
BoundKey = "{x:Static is:ContentKeyFunctions.CP14OpenSkillMenu}"
|
||||
BoundKey = "{x:Static isc:CP14ContentKeyFunctions.CP14OpenSkillMenu}"
|
||||
MinSize="42 64"
|
||||
HorizontalExpand="True"
|
||||
AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}"
|
||||
|
||||
16
Content.Client/_CP14/Input/CP14ContentContexts.cs
Normal file
16
Content.Client/_CP14/Input/CP14ContentContexts.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using Content.Shared._CP14.Input;
|
||||
using Robust.Shared.Input;
|
||||
|
||||
namespace Content.Client._CP14.Input
|
||||
{
|
||||
public static class CP14ContentContexts
|
||||
{
|
||||
public static void SetupContexts(IInputContextContainer contexts)
|
||||
{
|
||||
var human = contexts.GetContext("human");
|
||||
human.AddFunction(CP14ContentKeyFunctions.OpenBelt2);
|
||||
human.AddFunction(CP14ContentKeyFunctions.SmartEquipBelt2);
|
||||
human.AddFunction(CP14ContentKeyFunctions.CP14OpenSkillMenu);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,6 @@ public sealed class CP14TradingPlatformBoundUserInterface(EntityUid owner, Enum
|
||||
|
||||
_window = this.CreateWindow<CP14TradingPlatformWindow>();
|
||||
|
||||
_window.OnUnlock += pos => SendMessage(new CP14TradingPositionUnlockAttempt(pos));
|
||||
_window.OnBuy += pos => SendMessage(new CP14TradingPositionBuyAttempt(pos));
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,10 @@
|
||||
<Label Name="Name" Access="Public" StyleClasses="LabelHeadingBigger" VAlign="Center"
|
||||
HorizontalExpand="True" HorizontalAlignment="Center" />
|
||||
</BoxContainer>
|
||||
<BoxContainer Orientation="Horizontal" HorizontalExpand="True" HorizontalAlignment="Center">
|
||||
<TextureRect VerticalAlignment="Center" Margin="20 0 5 0" HorizontalAlignment="Left" TextureScale="2, 2" TexturePath="/Textures/_CP14/Interface/Misc/star.png"/>
|
||||
<RichTextLabel Name="UnlockCost" Access="Public" Text="0"/>
|
||||
</BoxContainer>
|
||||
<!-- Description -->
|
||||
<BoxContainer HorizontalExpand="True">
|
||||
<RichTextLabel Name="Description" HorizontalExpand="True" Access="Public" />
|
||||
@@ -47,17 +51,6 @@
|
||||
|
||||
<!-- Buttons -->
|
||||
<BoxContainer Orientation="Vertical" HorizontalExpand="True">
|
||||
|
||||
<BoxContainer Name="UnlockBox" Orientation="Horizontal" HorizontalExpand="True" Visible="True">
|
||||
<Button Name="UnlockButton" Text="{Loc 'cp14-trading-ui-button-unlock'}"
|
||||
ToolTip="{Loc 'cp14-trading-ui-button-unlock-tooltip'}" StyleClasses="OpenRight"
|
||||
HorizontalExpand="True" MinHeight="35" Access="Public"/>
|
||||
<BoxContainer SetWidth="100" MaxWidth="100" Orientation="Horizontal">
|
||||
<TextureRect VerticalAlignment="Center" Margin="20 0 5 0" HorizontalAlignment="Left" TextureScale="2, 2" TexturePath="/Textures/_CP14/Interface/Misc/star.png"/>
|
||||
<RichTextLabel Name="UnlockCost" Access="Public" Text="0"/>
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
|
||||
<BoxContainer Name="BuyBox" Orientation="Horizontal" HorizontalExpand="True" Visible="True">
|
||||
<Button Name="BuyButton" Text="{Loc 'cp14-trading-ui-button-buy'}"
|
||||
ToolTip="{Loc 'cp14-trading-ui-button-buy-tooltip'}" StyleClasses="OpenRight"
|
||||
|
||||
@@ -6,6 +6,7 @@ using Content.Shared._CP14.Trading;
|
||||
using Content.Shared._CP14.Trading.Components;
|
||||
using Content.Shared._CP14.Trading.Prototypes;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
@@ -25,6 +26,7 @@ public sealed partial class CP14TradingPlatformWindow : DefaultWindow
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly IEntityManager _e = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly IPlayerManager _player = default!;
|
||||
|
||||
private readonly CP14ClientTradingPlatformSystem _tradingSystem;
|
||||
private readonly CP14ClientStationEconomySystem _economySystem;
|
||||
@@ -39,8 +41,6 @@ public sealed partial class CP14TradingPlatformWindow : DefaultWindow
|
||||
|
||||
private ProtoId<CP14TradingFactionPrototype>? _selectedFaction;
|
||||
private CP14TradingPositionPrototype? _selectedPosition;
|
||||
|
||||
public event Action<ProtoId<CP14TradingPositionPrototype>>? OnUnlock;
|
||||
public event Action<ProtoId<CP14TradingPositionPrototype>>? OnBuy;
|
||||
|
||||
private ISawmill Sawmill { get; init; }
|
||||
@@ -75,21 +75,9 @@ public sealed partial class CP14TradingPlatformWindow : DefaultWindow
|
||||
ParallaxBackground.Offset = -offset * 0.25f + new Vector2(1000, 1000); //hardcoding is bad
|
||||
};
|
||||
GraphControl.OnNodeSelected += SelectNode;
|
||||
UnlockButton.OnPressed += UnlockPressed;
|
||||
BuyButton.OnPressed += BuyPressed;
|
||||
}
|
||||
|
||||
private void UnlockPressed(BaseButton.ButtonEventArgs obj)
|
||||
{
|
||||
if (_selectedPosition is null)
|
||||
return;
|
||||
|
||||
OnUnlock?.Invoke(_selectedPosition);
|
||||
|
||||
if (_cachedUser is not null)
|
||||
_audio.PlayGlobal(new SoundCollectionSpecifier("CP14CoinImpact"), _cachedUser.Value);
|
||||
}
|
||||
|
||||
private void BuyPressed(BaseButton.ButtonEventArgs obj)
|
||||
{
|
||||
if (_selectedPosition is null)
|
||||
@@ -133,16 +121,15 @@ public sealed partial class CP14TradingPlatformWindow : DefaultWindow
|
||||
}
|
||||
|
||||
_selectedPosition = node;
|
||||
var unlocked = _cachedUser.Value.Comp.UnlockedPositions;
|
||||
var unlocked = _cachedUser.Value.Comp.Reputation[_selectedPosition.Faction] >= _selectedPosition.ReputationLevel;
|
||||
|
||||
Name.Text = _tradingSystem.GetTradeName(_selectedPosition);
|
||||
Description.Text = _tradingSystem.GetTradeDescription(_selectedPosition);
|
||||
|
||||
LocationView.Texture = _selectedPosition.Icon.Frame0();
|
||||
UnlockButton.Disabled = !_tradingSystem.CanUnlockPosition((_cachedUser.Value.Owner, _cachedUser.Value.Comp), _selectedPosition);
|
||||
BuyButton.Disabled = !unlocked.Contains(_selectedPosition);
|
||||
BuyButton.Disabled = !unlocked;
|
||||
|
||||
UnlockCost.Text = _selectedPosition.UnlockReputationCost.ToString();
|
||||
UnlockCost.Text = _selectedPosition.ReputationLevel.ToString();
|
||||
|
||||
BuyPriceHolder.RemoveAllChildren();
|
||||
BuyPriceHolder.AddChild(new CP14PriceControl(_economySystem.GetPrice(_selectedPosition) ?? 0));
|
||||
@@ -153,24 +140,23 @@ public sealed partial class CP14TradingPlatformWindow : DefaultWindow
|
||||
Name.Text = string.Empty;
|
||||
Description.Text = string.Empty;
|
||||
LocationView.Texture = null;
|
||||
UnlockButton.Disabled = true;
|
||||
}
|
||||
|
||||
private void CacheSkillProto()
|
||||
{
|
||||
_allPositions = _proto.EnumeratePrototypes<CP14TradingPositionPrototype>();
|
||||
_allFactions = _proto.EnumeratePrototypes<CP14TradingFactionPrototype>().OrderBy(tree => Loc.GetString(tree.Name));
|
||||
UpdateGraphControl();
|
||||
}
|
||||
|
||||
public void UpdateState(CP14TradingPlatformUiState state)
|
||||
{
|
||||
_cacheState = state;
|
||||
var ent = _e.GetEntity(state.User);
|
||||
|
||||
if (!_e.TryGetComponent<CP14TradingReputationComponent>(ent, out var repComp))
|
||||
if (!_e.TryGetComponent<CP14TradingReputationComponent>(_player.LocalEntity, out var repComp))
|
||||
return;
|
||||
|
||||
_cachedUser = (ent, repComp);
|
||||
_cachedUser = (_player.LocalEntity.Value, repComp);
|
||||
|
||||
var plat = _e.GetEntity(state.Platform);
|
||||
if (!_e.TryGetComponent<CP14TradingPlatformComponent>(plat, out var platComp))
|
||||
@@ -192,15 +178,10 @@ public sealed partial class CP14TradingPlatformWindow : DefaultWindow
|
||||
if (position.Faction != _selectedFaction)
|
||||
continue;
|
||||
|
||||
var unlocked = _cachedUser.Value.Comp.UnlockedPositions;
|
||||
var gained = unlocked.Contains(position);
|
||||
var active = _tradingSystem.CanUnlockPosition((_cachedUser.Value.Owner, _cachedUser.Value.Comp), position);
|
||||
var node = new CP14NodeTreeElement(position.ID, gained, active, position.UiPosition * 66, position.Icon);
|
||||
var unlocked = _cachedUser.Value.Comp.Reputation[position.Faction] >= position.ReputationLevel;
|
||||
var active = _tradingSystem.CanBuyPosition((_cachedUser.Value.Owner, _cachedUser.Value.Comp), position);
|
||||
var node = new CP14NodeTreeElement(position.ID, unlocked, active, new Vector2(position.ReputationLevel.Float() * 50, position.UiPosition * 50) , position.Icon);
|
||||
nodeTreeElements.Add(node);
|
||||
if (position.Prerequisite != null)
|
||||
{
|
||||
edges.Add((position.Prerequisite, position.ID));
|
||||
}
|
||||
}
|
||||
|
||||
GraphControl.UpdateState(
|
||||
|
||||
@@ -11,6 +11,7 @@ using Content.Shared._CP14.Skill.Components;
|
||||
using Content.Shared._CP14.Skill.Prototypes;
|
||||
using Content.Shared._CP14.Skill.Restrictions;
|
||||
using Content.Shared.Input;
|
||||
using Content.Shared._CP14.Input;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Client.UserInterface;
|
||||
@@ -53,7 +54,7 @@ public sealed class CP14SkillUIController : UIController, IOnStateEntered<Gamepl
|
||||
LayoutContainer.SetAnchorPreset(_window, LayoutContainer.LayoutPreset.CenterTop);
|
||||
|
||||
CommandBinds.Builder
|
||||
.Bind(ContentKeyFunctions.CP14OpenSkillMenu,
|
||||
.Bind(CP14ContentKeyFunctions.CP14OpenSkillMenu,
|
||||
InputCmdHandler.FromDelegate(_ => ToggleWindow()))
|
||||
.Register<CP14SkillUIController>();
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
using Content.Server.GameTicking.Events;
|
||||
using Content.Shared.Chemistry.Reaction;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._CP14.Alchemy.EntitySystems;
|
||||
|
||||
public sealed class CP14RandomReagentReactionsSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<RoundStartingEvent>(OnRoundStart);
|
||||
}
|
||||
|
||||
private void OnRoundStart(RoundStartingEvent ev)
|
||||
{
|
||||
foreach (var reaction in _proto.EnumeratePrototypes<ReactionPrototype>())
|
||||
{
|
||||
reaction.Cp14RandomProductIndex = _random.Next(reaction.Cp14RandomProducts.Count);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -68,11 +68,19 @@ public sealed partial class CP14DemiplaneSystem
|
||||
|
||||
private void GeneratorUsedInHand(Entity<CP14DemiplaneUsingOpenComponent> ent, ref UseInHandEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14DemiplaneDataComponent>(ent, out var generator))
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
UseGenerator((ent, generator), args.User);
|
||||
|
||||
QueueDel(ent);
|
||||
}
|
||||
|
||||
//Ed: I hate this function.
|
||||
private void UseGenerator(Entity<CP14DemiplaneDataComponent> generator, EntityUid? user = null)
|
||||
{
|
||||
@@ -130,10 +138,6 @@ public sealed partial class CP14DemiplaneSystem
|
||||
var connection = EnsureComp<CP14DemiplaneRiftComponent>(spawnedRift);
|
||||
AddDemiplaneRandomExitPoint(demiplane.Value, (spawnedRift, connection));
|
||||
}
|
||||
|
||||
#if !DEBUG
|
||||
QueueDel(generator); //wtf its crash debug build!
|
||||
#endif
|
||||
}
|
||||
|
||||
private void OnVerbExamine(Entity<CP14DemiplaneDataComponent> ent, ref GetVerbsEvent<ExamineVerb> args)
|
||||
|
||||
@@ -20,6 +20,19 @@ public sealed partial class CP14StationEconomySystem : CP14SharedStationEconomyS
|
||||
InitPriceEvents();
|
||||
|
||||
SubscribeLocalEvent<CP14StationEconomyComponent, StationPostInitEvent>(OnStationPostInit);
|
||||
SubscribeLocalEvent<PrototypesReloadedEventArgs>(OnPrototypesReloaded);
|
||||
}
|
||||
|
||||
private void OnPrototypesReloaded(PrototypesReloadedEventArgs ev)
|
||||
{
|
||||
if (!ev.WasModified<CP14TradingPositionPrototype>())
|
||||
return;
|
||||
|
||||
var query = EntityQueryEnumerator<CP14StationEconomyComponent>();
|
||||
while (query.MoveNext(out var uid, out var economyComponent))
|
||||
{
|
||||
UpdatePricing((uid, economyComponent));
|
||||
}
|
||||
}
|
||||
|
||||
private void OnStationPostInit(Entity<CP14StationEconomyComponent> ent, ref StationPostInitEvent args)
|
||||
|
||||
@@ -31,11 +31,14 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14TradingPlatformComponent, CP14TradingPositionBuyAttempt>(OnBuyAttempt);
|
||||
SubscribeLocalEvent<CP14SellingPlatformComponent, CP14MagicEnergyOverloadEvent>(OnMagicOverload);
|
||||
SubscribeLocalEvent<CP14SellingPlatformComponent, CP14MagicEnergyLevelChangeEvent>(OnMagicChange);
|
||||
}
|
||||
|
||||
private void OnMagicOverload(Entity<CP14SellingPlatformComponent> ent, ref CP14MagicEnergyOverloadEvent args)
|
||||
private void OnMagicChange(Entity<CP14SellingPlatformComponent> ent, ref CP14MagicEnergyLevelChangeEvent args)
|
||||
{
|
||||
if (args.NewValue != args.MaxValue)
|
||||
return;
|
||||
|
||||
_magicEnergy.ClearEnergy(ent.Owner);
|
||||
|
||||
if (!TryComp<ItemPlacerComponent>(ent, out var itemPlacer))
|
||||
@@ -69,7 +72,10 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor
|
||||
|
||||
public bool TryBuyPosition(Entity<CP14TradingReputationComponent?> user, Entity<CP14TradingPlatformComponent> platform, ProtoId<CP14TradingPositionPrototype> position)
|
||||
{
|
||||
if (!CanBuyPosition(user, platform!, position))
|
||||
if (Timing.CurTime < platform.Comp.NextBuyTime)
|
||||
return false;
|
||||
|
||||
if (!CanBuyPosition(user, position))
|
||||
return false;
|
||||
|
||||
if (!Proto.TryIndex(position, out var indexedPosition))
|
||||
@@ -112,8 +118,8 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor
|
||||
|
||||
if (indexedPosition.Service is not null)
|
||||
indexedPosition.Service.Buy(EntityManager, Proto, platform);
|
||||
user.Comp.Reputation[indexedPosition.Faction] += (float)price / 10;
|
||||
Dirty(user);
|
||||
|
||||
AddReputation(user, indexedPosition.Faction, (float)price / 100);
|
||||
|
||||
_audio.PlayPvs(platform.Comp.BuySound, Transform(platform).Coordinates);
|
||||
|
||||
|
||||
@@ -51,42 +51,11 @@ namespace Content.Shared.Chemistry.Reaction
|
||||
[DataField("requiredMixerCategories")]
|
||||
public List<ProtoId<MixingCategoryPrototype>>? MixingCategories;
|
||||
|
||||
// CP14 random reactions begin
|
||||
/// <summary>
|
||||
/// Reagents created when the reaction occurs.
|
||||
/// </summary>
|
||||
[DataField("products", customTypeSerializer:typeof(PrototypeIdDictionarySerializer<FixedPoint2, ReagentPrototype>))]
|
||||
public Dictionary<string, FixedPoint2> _products = new(); // CP14 random reactions
|
||||
|
||||
public Dictionary<string, FixedPoint2> Products
|
||||
{
|
||||
get {
|
||||
if (Cp14RandomProducts.Count == 0)
|
||||
return _products;
|
||||
// New dict because we don't want to modify original products dict
|
||||
Dictionary<string, FixedPoint2> res = new(_products);
|
||||
foreach (var product in Cp14RandomProducts[Cp14RandomProductIndex])
|
||||
{
|
||||
if (res.ContainsKey(product.Key))
|
||||
res[product.Key] += product.Value;
|
||||
else
|
||||
res[product.Key] = product.Value;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
set {
|
||||
_products = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int Cp14RandomProductIndex = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Random reagents groups, one of which will be selected at the roundstart and will be used as a reaction product.
|
||||
/// </summary>
|
||||
[DataField("cp14RandomProducts")]
|
||||
public List<Dictionary<string, FixedPoint2>> Cp14RandomProducts = new();
|
||||
// CP14 random reactions end
|
||||
public Dictionary<string, FixedPoint2> Products = new();
|
||||
|
||||
/// <summary>
|
||||
/// Effects to be triggered when the reaction occurs.
|
||||
|
||||
@@ -128,9 +128,5 @@ namespace Content.Shared.Input
|
||||
public static readonly BoundKeyFunction MappingRemoveDecal = "MappingRemoveDecal";
|
||||
public static readonly BoundKeyFunction MappingCancelEraseDecal = "MappingCancelEraseDecal";
|
||||
public static readonly BoundKeyFunction MappingOpenContextMenu = "MappingOpenContextMenu";
|
||||
|
||||
//CP14 keys
|
||||
public static readonly BoundKeyFunction CP14OpenSkillMenu = "CP14OpenSkillMenu";
|
||||
//CP14 keys end
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using Content.Shared.Containers.ItemSlots;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Input;
|
||||
using Content.Shared._CP14.Input;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Stacks;
|
||||
@@ -35,6 +36,9 @@ public sealed class SmartEquipSystem : EntitySystem
|
||||
CommandBinds.Builder
|
||||
.Bind(ContentKeyFunctions.SmartEquipBackpack, InputCmdHandler.FromDelegate(HandleSmartEquipBackpack, handle: false, outsidePrediction: false))
|
||||
.Bind(ContentKeyFunctions.SmartEquipBelt, InputCmdHandler.FromDelegate(HandleSmartEquipBelt, handle: false, outsidePrediction: false))
|
||||
//CP14
|
||||
.Bind(CP14ContentKeyFunctions.SmartEquipBelt2, InputCmdHandler.FromDelegate(HandleSmartEquipBelt2, handle: false, outsidePrediction: false))
|
||||
//CP14 end
|
||||
.Register<SmartEquipSystem>();
|
||||
}
|
||||
|
||||
@@ -55,6 +59,11 @@ public sealed class SmartEquipSystem : EntitySystem
|
||||
HandleSmartEquip(session, "belt");
|
||||
}
|
||||
|
||||
private void HandleSmartEquipBelt2(ICommonSession? session)
|
||||
{
|
||||
HandleSmartEquip(session, "belt2");
|
||||
}
|
||||
//CP14 end
|
||||
private void HandleSmartEquip(ICommonSession? session, string equipmentSlot)
|
||||
{
|
||||
if (session is not { } playerSession)
|
||||
|
||||
@@ -12,6 +12,7 @@ using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Implants.Components;
|
||||
using Content.Shared.Input;
|
||||
using Content.Shared._CP14.Input;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Interaction.Components;
|
||||
using Content.Shared.Inventory;
|
||||
@@ -172,6 +173,9 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
CommandBinds.Builder
|
||||
.Bind(ContentKeyFunctions.OpenBackpack, InputCmdHandler.FromDelegate(HandleOpenBackpack, handle: false))
|
||||
.Bind(ContentKeyFunctions.OpenBelt, InputCmdHandler.FromDelegate(HandleOpenBelt, handle: false))
|
||||
//CP14
|
||||
.Bind(CP14ContentKeyFunctions.OpenBelt2, InputCmdHandler.FromDelegate(HandleOpenBelt2, handle: false))
|
||||
//CP14 end
|
||||
.Register<SharedStorageSystem>();
|
||||
|
||||
Subs.CVar(_cfg, CCVars.NestedStorage, OnNestedStorageCvar, true);
|
||||
@@ -1832,6 +1836,12 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
{
|
||||
HandleToggleSlotUI(session, "belt");
|
||||
}
|
||||
//CP14
|
||||
private void HandleOpenBelt2(ICommonSession? session)
|
||||
{
|
||||
HandleToggleSlotUI(session, "belt2");
|
||||
}
|
||||
//CP14 end
|
||||
|
||||
private void HandleToggleSlotUI(ICommonSession? session, string slot)
|
||||
{
|
||||
|
||||
13
Content.Shared/_CP14/Input/CP14ContentKeyFunctions.cs
Normal file
13
Content.Shared/_CP14/Input/CP14ContentKeyFunctions.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using Robust.Shared.Input;
|
||||
|
||||
namespace Content.Shared._CP14.Input
|
||||
{
|
||||
[KeyFunctions]
|
||||
|
||||
public static class CP14ContentKeyFunctions
|
||||
{
|
||||
public static readonly BoundKeyFunction OpenBelt2 = "OpenBelt2";
|
||||
public static readonly BoundKeyFunction SmartEquipBelt2 = "SmartEquipBelt2";
|
||||
public static readonly BoundKeyFunction CP14OpenSkillMenu = "CP14OpenSkillMenu";
|
||||
}
|
||||
}
|
||||
64
Content.Shared/_CP14/MagicSpell/Spells/CP14SpellArea.cs
Normal file
64
Content.Shared/_CP14/MagicSpell/Spells/CP14SpellArea.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Map;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellArea : CP14SpellEffect
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public List<CP14SpellEffect> Effects { get; set; } = new();
|
||||
|
||||
[DataField]
|
||||
public EntityWhitelist? Whitelist;
|
||||
|
||||
/// <summary>
|
||||
/// How many entities can be subject to EntityEffect? Leave 0 to remove the restriction.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public int MaxTargets = 0;
|
||||
|
||||
[DataField(required: true)]
|
||||
public float Range = 1f;
|
||||
|
||||
[DataField]
|
||||
public bool AffectCaster = false;
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
EntityCoordinates? targetPoint = null;
|
||||
|
||||
if (args.Target is not null &&
|
||||
entManager.TryGetComponent<TransformComponent>(args.Target.Value, out var transformComponent))
|
||||
targetPoint = transformComponent.Coordinates;
|
||||
else if (args.Position is not null)
|
||||
targetPoint = args.Position;
|
||||
|
||||
if (targetPoint is null)
|
||||
return;
|
||||
|
||||
var lookup = entManager.System<EntityLookupSystem>();
|
||||
var whitelist = entManager.System<EntityWhitelistSystem>();
|
||||
|
||||
var entitiesAround = lookup.GetEntitiesInRange(targetPoint.Value, Range, LookupFlags.Uncontained);
|
||||
|
||||
var count = 0;
|
||||
foreach (var entity in entitiesAround)
|
||||
{
|
||||
if (entity == args.User && !AffectCaster)
|
||||
continue;
|
||||
|
||||
if (Whitelist is not null && !whitelist.IsValid(Whitelist, entity))
|
||||
continue;
|
||||
|
||||
foreach (var effect in Effects)
|
||||
{
|
||||
effect.Effect(entManager, new CP14SpellEffectBaseArgs(args.User, null, entity, targetPoint));
|
||||
}
|
||||
|
||||
count++;
|
||||
|
||||
if (MaxTargets > 0 && count >= MaxTargets)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -244,6 +244,26 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
/// <summary>
|
||||
/// Helper function to reset skills to only learned skills
|
||||
/// </summary>
|
||||
public bool TryResetSkills(EntityUid target,
|
||||
CP14SkillStorageComponent? component = null)
|
||||
{
|
||||
if (!Resolve(target, ref component, false))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
for(var i = component.LearnedSkills.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if(HaveFreeSkill(target, component.LearnedSkills[i], component))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
TryRemoveSkill(target, component.LearnedSkills[i], component);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
[ByRefEvent]
|
||||
|
||||
@@ -6,6 +6,7 @@ using Content.Shared.Administration.Managers;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CP14.Skill;
|
||||
|
||||
@@ -89,5 +90,19 @@ public abstract partial class CP14SharedSkillSystem
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
//Reset/Remove All Skills
|
||||
args.Verbs.Add(new Verb
|
||||
{
|
||||
Text = "Reset skills",
|
||||
Message = "Remove all learned skills",
|
||||
Category = VerbCategory.CP14AdminSkillRemove,
|
||||
Icon = new SpriteSpecifier.Rsi(new("/Textures/_CP14/Interface/Misc/reroll.rsi"), "reroll"),
|
||||
Act = () =>
|
||||
{
|
||||
TryResetSkills(target);
|
||||
},
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using Content.Shared._CP14.Trading.Prototypes;
|
||||
using Content.Shared._CP14.Trading.Systems;
|
||||
using Content.Shared.Roles;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Trading;
|
||||
|
||||
public sealed partial class CP14AddGlobalReputationSpecial : JobSpecial
|
||||
{
|
||||
[DataField]
|
||||
public float Reputation = 1f;
|
||||
|
||||
public override void AfterEquip(EntityUid mob)
|
||||
{
|
||||
var entMan = IoCManager.Resolve<IEntityManager>();
|
||||
var protoMan = IoCManager.Resolve<IPrototypeManager>();
|
||||
var tradeSys = entMan.System<CP14SharedTradingPlatformSystem>();
|
||||
|
||||
foreach (var faction in protoMan.EnumeratePrototypes<CP14TradingFactionPrototype>())
|
||||
{
|
||||
tradeSys.AddReputation(mob, faction, Reputation);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,8 @@ public enum CP14TradingUiKey
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CP14TradingPlatformUiState(NetEntity user, NetEntity platform) : BoundUserInterfaceState
|
||||
public sealed class CP14TradingPlatformUiState(NetEntity platform) : BoundUserInterfaceState
|
||||
{
|
||||
public NetEntity User = user;
|
||||
public NetEntity Platform = platform;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,12 +7,6 @@ namespace Content.Shared._CP14.Trading.Components;
|
||||
[RegisterComponent, Access(typeof(CP14SharedTradingPlatformSystem))]
|
||||
public sealed partial class CP14TradingContractComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public TimeSpan Delay = TimeSpan.FromSeconds(2);
|
||||
|
||||
[DataField]
|
||||
public ProtoId<CP14TradingFactionPrototype> Faction;
|
||||
|
||||
[DataField]
|
||||
public float StartReputation = 1f;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,4 @@ public sealed partial class CP14TradingReputationComponent : Component
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public Dictionary<ProtoId<CP14TradingFactionPrototype>, FixedPoint2> Reputation = new();
|
||||
|
||||
[DataField, AutoNetworkedField]
|
||||
public HashSet<ProtoId<CP14TradingPositionPrototype>> UnlockedPositions = new();
|
||||
}
|
||||
|
||||
@@ -33,17 +33,14 @@ public sealed partial class CP14TradingPositionPrototype : IPrototype
|
||||
public ProtoId<CP14TradingFactionPrototype> Faction;
|
||||
|
||||
[DataField]
|
||||
public FixedPoint2 UnlockReputationCost = 1f;
|
||||
public FixedPoint2 ReputationLevel = 0f;
|
||||
|
||||
[DataField(required: true)]
|
||||
public Vector2 UiPosition = default!;
|
||||
public float UiPosition = default!;
|
||||
|
||||
[DataField(required: true)]
|
||||
public CP14StoreBuyService? Service = null;
|
||||
|
||||
[DataField]
|
||||
public ProtoId<CP14TradingPositionPrototype>? Prerequisite;
|
||||
|
||||
[DataField]
|
||||
public int PriceMarkup = 1;
|
||||
|
||||
@@ -51,7 +48,7 @@ public sealed partial class CP14TradingPositionPrototype : IPrototype
|
||||
/// each round prices will differ within +X percent of the calculated value
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float PriceFluctuation = 0.2f;
|
||||
public float PriceFluctuation = 0.6f;
|
||||
}
|
||||
|
||||
[ImplicitDataDefinitionForInheritors]
|
||||
|
||||
@@ -8,16 +8,9 @@ public abstract partial class CP14SharedTradingPlatformSystem
|
||||
{
|
||||
private void InitializeUI()
|
||||
{
|
||||
SubscribeLocalEvent<CP14TradingPlatformComponent, CP14TradingPositionUnlockAttempt>(OnUnlockAttempt);
|
||||
SubscribeLocalEvent<CP14TradingPlatformComponent, BeforeActivatableUIOpenEvent>(OnBeforeUIOpen);
|
||||
}
|
||||
|
||||
private void OnUnlockAttempt(Entity<CP14TradingPlatformComponent> ent, ref CP14TradingPositionUnlockAttempt args)
|
||||
{
|
||||
TryUnlockPosition(args.Actor, args.Position);
|
||||
UpdateUIState(ent, args.Actor);
|
||||
}
|
||||
|
||||
private void OnBeforeUIOpen(Entity<CP14TradingPlatformComponent> ent, ref BeforeActivatableUIOpenEvent args)
|
||||
{
|
||||
UpdateUIState(ent, args.User);
|
||||
|
||||
@@ -2,6 +2,8 @@ using Content.Shared._CP14.Trading.Components;
|
||||
using Content.Shared._CP14.Trading.Prototypes;
|
||||
using Content.Shared.Interaction.Events;
|
||||
using Content.Shared.Popups;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
@@ -16,6 +18,7 @@ public abstract partial class CP14SharedTradingPlatformSystem : EntitySystem
|
||||
[Dependency] protected readonly IGameTiming Timing = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -40,12 +43,18 @@ public abstract partial class CP14SharedTradingPlatformSystem : EntitySystem
|
||||
|
||||
private void OnContractUse(Entity<CP14TradingContractComponent> ent, ref UseInHandEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
if (!Proto.TryIndex(ent.Comp.Faction, out var indexedFaction))
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
var repComp = EnsureComp<CP14TradingReputationComponent>(args.User);
|
||||
repComp.Reputation.TryAdd(ent.Comp.Faction, ent.Comp.StartReputation);
|
||||
repComp.Reputation.TryAdd(ent.Comp.Faction, 0);
|
||||
_audio.PlayLocal(new SoundCollectionSpecifier("CP14CoinImpact"), args.User, args.User);
|
||||
_popup.PopupPredicted(Loc.GetString("cp14-trading-contract-use", ("name", Loc.GetString(indexedFaction.Name))), args.User, args.User);
|
||||
|
||||
if (_net.IsServer)
|
||||
QueueDel(ent);
|
||||
}
|
||||
@@ -55,68 +64,35 @@ public abstract partial class CP14SharedTradingPlatformSystem : EntitySystem
|
||||
if (!TryComp<CP14TradingReputationComponent>(user, out var repComp))
|
||||
return;
|
||||
|
||||
_userInterface.SetUiState(ent.Owner, CP14TradingUiKey.Key, new CP14TradingPlatformUiState(GetNetEntity(user), GetNetEntity(ent)));
|
||||
_userInterface.SetUiState(ent.Owner, CP14TradingUiKey.Key, new CP14TradingPlatformUiState(GetNetEntity(ent)));
|
||||
}
|
||||
|
||||
public bool TryUnlockPosition(Entity<CP14TradingReputationComponent?> user, ProtoId<CP14TradingPositionPrototype> position)
|
||||
public bool CanBuyPosition(Entity<CP14TradingReputationComponent?> user, ProtoId<CP14TradingPositionPrototype> position)
|
||||
{
|
||||
if (!CanUnlockPosition(user, position))
|
||||
if (!Resolve(user.Owner, ref user.Comp, false))
|
||||
return false;
|
||||
|
||||
if (!Proto.TryIndex(position, out var indexedPosition))
|
||||
return false;
|
||||
|
||||
if (!Resolve(user.Owner, ref user.Comp, false))
|
||||
if (user.Comp.Reputation[indexedPosition.Faction] < indexedPosition.ReputationLevel)
|
||||
return false;
|
||||
|
||||
user.Comp.Reputation[indexedPosition.Faction] -= indexedPosition.UnlockReputationCost;
|
||||
user.Comp.UnlockedPositions.Add(position);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void AddReputation(Entity<CP14TradingReputationComponent?> user,
|
||||
ProtoId<CP14TradingFactionPrototype> faction, float rep)
|
||||
{
|
||||
if (!Resolve(user.Owner, ref user.Comp, false))
|
||||
return;
|
||||
|
||||
if (!user.Comp.Reputation.ContainsKey(faction))
|
||||
user.Comp.Reputation.Add(faction, rep);
|
||||
else
|
||||
user.Comp.Reputation[faction] += rep;
|
||||
|
||||
Dirty(user);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool CanUnlockPosition(Entity<CP14TradingReputationComponent?> user, ProtoId<CP14TradingPositionPrototype> position)
|
||||
{
|
||||
if (!Resolve(user.Owner, ref user.Comp, false))
|
||||
return false;
|
||||
|
||||
if (!Proto.TryIndex(position, out var indexedPosition))
|
||||
return false;
|
||||
|
||||
if (!user.Comp.Reputation.ContainsKey(indexedPosition.Faction))
|
||||
return false;
|
||||
|
||||
if (user.Comp.UnlockedPositions.Contains(position))
|
||||
return false;
|
||||
|
||||
if (indexedPosition.Prerequisite is not null && !user.Comp.UnlockedPositions.Contains(indexedPosition.Prerequisite.Value))
|
||||
return false;
|
||||
|
||||
return user.Comp.Reputation.GetValueOrDefault(indexedPosition.Faction, 0f) >= indexedPosition.UnlockReputationCost;
|
||||
}
|
||||
|
||||
public bool CanBuyPosition(Entity<CP14TradingReputationComponent?> user, Entity<CP14TradingPlatformComponent?> platform, ProtoId<CP14TradingPositionPrototype> position)
|
||||
{
|
||||
if (!Resolve(user.Owner, ref user.Comp, false))
|
||||
return false;
|
||||
if (!Resolve(platform.Owner, ref platform.Comp, false))
|
||||
return false;
|
||||
|
||||
if (!user.Comp.UnlockedPositions.Contains(position))
|
||||
return false;
|
||||
|
||||
if (Timing.CurTime < platform.Comp.NextBuyTime)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CP14TradingPositionUnlockAttempt(ProtoId<CP14TradingPositionPrototype> position) : BoundUserInterfaceMessage
|
||||
{
|
||||
public readonly ProtoId<CP14TradingPositionPrototype> Position = position;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
|
||||
141
Resources/Changelog/CP14_Changelog.yml
Normal file
141
Resources/Changelog/CP14_Changelog.yml
Normal file
@@ -0,0 +1,141 @@
|
||||
Entries:
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: Added fun!
|
||||
type: Add
|
||||
- message: Removed fun!
|
||||
type: Remove
|
||||
- message: Changed fun!
|
||||
type: Tweak
|
||||
- message: Fixed fun!
|
||||
type: Fix
|
||||
id: 8052
|
||||
time: '2025-06-02T18:40:15.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1359
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: Added fun!
|
||||
type: Add
|
||||
- message: Removed fun!
|
||||
type: Remove
|
||||
- message: Changed fun!
|
||||
type: Tweak
|
||||
- message: Fixed fun!
|
||||
type: Fix
|
||||
id: 8053
|
||||
time: '2025-06-02T19:33:16.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1364
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: Added fun!
|
||||
type: Add
|
||||
- message: Removed fun!
|
||||
type: Remove
|
||||
- message: Changed fun!
|
||||
type: Tweak
|
||||
- message: Fixed fun!
|
||||
type: Fix
|
||||
id: 8054
|
||||
time: '2025-06-02T20:00:16.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1365
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: "A new trade contract with the \u201CCozy Home\u201D store has been added.\
|
||||
\ Now you can buy wallpaper, home decorations, and some other items."
|
||||
type: Add
|
||||
id: 8055
|
||||
time: '2025-06-02T21:38:19.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1367
|
||||
- author: paige404
|
||||
changes:
|
||||
- message: Tweaked slime damage resistances and immunities. Elemental slimes are
|
||||
now immune to their own elements, but weak to an opposing element. Electric
|
||||
slimes take equal damage from both heat and cold, and have had their oppressive
|
||||
stunlocking power somewhat reduced. Additionally, all slimes are now immune
|
||||
to airloss damage.
|
||||
type: Tweak
|
||||
id: 8056
|
||||
time: '2025-06-02T21:59:07.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1300
|
||||
- author: ArZarLordOfMango
|
||||
changes:
|
||||
- message: Fixed Guild moral book
|
||||
type: Fix
|
||||
id: 8057
|
||||
time: '2025-06-02T22:04:33.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1368
|
||||
- author: TheKittehJesus
|
||||
changes:
|
||||
- message: Cash converters can be anchored on tables
|
||||
type: Fix
|
||||
id: 8058
|
||||
time: '2025-06-03T06:41:17.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1371
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: Music magic no longer applies the effect on the musician. Tieflings with
|
||||
Hell Ballad are now OP
|
||||
type: Tweak
|
||||
- message: The radius of action of the peace ballad has been increased by 2 times
|
||||
and the maximum number of entities that can be affected has been increased from
|
||||
4 to 8
|
||||
type: Tweak
|
||||
- message: The speed increase from the speed ballad is increased by 5%
|
||||
type: Tweak
|
||||
id: 8059
|
||||
time: '2025-06-03T09:43:21.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1372
|
||||
- author: DeLTaAlarm0
|
||||
changes:
|
||||
- message: Added flippable open/closed table sign
|
||||
type: Add
|
||||
- message: Added workbench recipe for open/closed sign
|
||||
type: Add
|
||||
id: 8060
|
||||
time: '2025-06-03T11:22:24.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1275
|
||||
- author: TheKittehJesus
|
||||
changes:
|
||||
- message: Added controls for quick pickup both belt slots! Check your controls,
|
||||
as belt2 controls may be unbound.
|
||||
type: Add
|
||||
id: 8061
|
||||
time: '2025-06-03T11:39:39.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1298
|
||||
- author: Mandranir
|
||||
changes:
|
||||
- message: dropper size is now 1x1
|
||||
type: Fix
|
||||
id: 8062
|
||||
time: '2025-06-03T11:41:00.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1373
|
||||
- author: Nimfar11
|
||||
changes:
|
||||
- message: Adds a new artifact Skeleton Lockpick.
|
||||
type: Add
|
||||
id: 8063
|
||||
time: '2025-06-03T12:37:25.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1374
|
||||
- author: KittyCat432
|
||||
changes:
|
||||
- message: Changed Healing solution to not "waste" any of its healing on types of
|
||||
brute you do not have.
|
||||
type: Tweak
|
||||
id: 8064
|
||||
time: '2025-06-03T14:10:33.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1340
|
||||
- author: TheShuEd
|
||||
changes:
|
||||
- message: All merchants now gain +1 reputation with each faction at the start of
|
||||
the round, greatly expanding their range of goods.
|
||||
type: Tweak
|
||||
id: 8065
|
||||
time: '2025-06-03T15:12:44.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1376
|
||||
- author: Nimfar11
|
||||
changes:
|
||||
- message: Adds new carpets in different colours.
|
||||
type: Add
|
||||
id: 8066
|
||||
time: '2025-06-04T06:57:09.0000000+00:00'
|
||||
url: https://github.com/crystallpunk-14/crystall-punk-14/pull/1375
|
||||
1
Resources/Locale/en-US/_CP14/changelog.ftl
Normal file
1
Resources/Locale/en-US/_CP14/changelog.ftl
Normal file
@@ -0,0 +1 @@
|
||||
changelog-tab-title-CP14_Changelog = CrystallEdge Changelog
|
||||
@@ -9,7 +9,7 @@ cp14-ui-options-main-graphics-label = Graphics
|
||||
cp14-ui-options-main-graphics-wave-shader = Wave shader
|
||||
|
||||
cp14-ui-options-postprocess = Cosmetic Post-processing
|
||||
cp14-ui-options-postprocess-tooltip =
|
||||
cp14-ui-options-postprocess-tooltip =
|
||||
When enabled, cosmetic post-processing effects such as
|
||||
additive lighting will be present. This does not control
|
||||
post-process effects that affect the game or otherwise
|
||||
@@ -19,4 +19,6 @@ cp14-ui-options-postprocess-tooltip =
|
||||
## Controls menu
|
||||
|
||||
ui-options-header-cp14 = CrystallEdge
|
||||
ui-options-function-cp14-open-knowledge-menu = Open character knowledge menu.
|
||||
ui-options-function-cp14-open-skill-menu = Open character knowledge menu.
|
||||
ui-options-function-open-belt2 = Open belt 2
|
||||
ui-options-function-smart-equip-belt2 = Smart-equip to belt 2
|
||||
@@ -5,4 +5,4 @@ cp14-ghost-role-information-name-lurker = Lurker
|
||||
cp14-ghost-role-information-description-lurker = A spirit of night and hunger that preys on loners separated from their companions.
|
||||
|
||||
cp14-ghost-role-information-name-raid-undead = Undead raid
|
||||
cp14-ghost-role-information-description-raid-undead = Lead the attack on the city by the forces of the dead. Destroy the demiplane communication crystal at any cost.
|
||||
cp14-ghost-role-information-description-raid-undead = Lead the attack on the city by the forces of the dead. Destroy the demiplane communication crystal at any cost.
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
cp14-trade-faction-contracts = Zellasian Trade Guild
|
||||
cp14-trade-faction-victoria-gardens = Victoria Gardens
|
||||
cp14-trade-faction-brad-potions = Brad's marvelous potions
|
||||
cp14-trade-faction-brad-potions = Brad's marvelous potions
|
||||
cp14-trade-faction-dwarf-mining = 'Dwarf Steel' mining branch
|
||||
cp14-trade-faction-thaumaturgy = Academy of Thaumaturgy
|
||||
cp14-trade-faction-home-decor = Cozy home
|
||||
@@ -1,6 +1,3 @@
|
||||
cp14-trading-ui-button-unlock = Unlock contract
|
||||
cp14-trading-ui-button-unlock-tooltip = You contract to purchase the specified equipment or service by spending your reputation. After that, you can buy that equipment or service with money in unlimited quantities.
|
||||
|
||||
cp14-trading-ui-button-buy = Buy
|
||||
cp14-trading-ui-button-buy-tooltip = You spend the funds on the trading platform and buy the specified equipment or service from the selected vendor, which also increases your reputation. The equipment will be instantly delivered to you by spatial magic, and the service will be rendered as soon as possible.
|
||||
|
||||
|
||||
@@ -5,4 +5,4 @@ cp14-ghost-role-information-name-lurker = Таящийся
|
||||
cp14-ghost-role-information-description-lurker = Дух ночи и голода, охотящийся за одиночками, отделившихся от своих товарищей.
|
||||
|
||||
cp14-ghost-role-information-name-raid-undead = Рейд нежити
|
||||
cp14-ghost-role-information-description-raid-undead = Возглавьте атаку на город силами мертвых. Уничтожьте кристалл связи с демипланами любой ценой.
|
||||
cp14-ghost-role-information-description-raid-undead = Возглавьте атаку на город силами мертвых. Уничтожьте кристалл связи с демипланами любой ценой.
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
cp14-trade-faction-contracts = Торговая гильдия Зелласиан
|
||||
cp14-trade-faction-victoria-gardens = Сады Виктории
|
||||
cp14-trade-faction-brad-potions = Великолепные зелья Брада
|
||||
cp14-trade-faction-brad-potions = Великолепные зелья Брада
|
||||
cp14-trade-faction-dwarf-mining = Шахтерский филиал 'Дворфийская сталь'
|
||||
cp14-trade-faction-thaumaturgy = Тауматургическая академия
|
||||
cp14-trade-faction-home-decor = Уютный дом
|
||||
@@ -1,6 +1,3 @@
|
||||
cp14-trading-ui-button-unlock = Разблокировать контракт
|
||||
cp14-trading-ui-button-unlock-tooltip = Вы заключаете контракт, затрачивая на это свою репутацию. После этого, вы можете покупать это снаряжение или услугу за деньги в неограниченном количестве.
|
||||
|
||||
cp14-trading-ui-button-buy = Купить
|
||||
cp14-trading-ui-button-buy-tooltip = Вы тратите средства, расположенные на торговой платформе и закупаете указанное снаряжение или услугу у выбранного продавца, что так же увеличивает вашу репутацию. Снаряжение будет мгновенно доставлено вам путем пространственной магии, а услуга оказана в ближайшее время.
|
||||
|
||||
|
||||
@@ -38027,7 +38027,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38086,7 +38086,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38146,7 +38146,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38205,7 +38205,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38265,7 +38265,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38325,7 +38325,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38385,7 +38385,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38444,7 +38444,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38503,7 +38503,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38563,7 +38563,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38623,7 +38623,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38682,7 +38682,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -38741,7 +38741,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
|
||||
@@ -47638,7 +47638,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
|
||||
@@ -104553,7 +104553,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -104616,7 +104616,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: 19735
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -104680,7 +104680,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -104745,7 +104745,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
@@ -104809,7 +104809,7 @@ entities:
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
|
||||
@@ -151,7 +151,7 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -8.5,3.5
|
||||
parent: 2
|
||||
- proto: CP14AlchemyFurnaceDebug
|
||||
- proto: CP14AlchemyFurnace
|
||||
entities:
|
||||
- uid: 301
|
||||
components:
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
type: InstrumentBoundUserInterface
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: StaticPrice
|
||||
price: 200
|
||||
#- type: StaticPrice
|
||||
# price: 200
|
||||
|
||||
#These are for instruments that are larger, can't be picked up, or have collision
|
||||
- type: entity
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
amount: 1.5
|
||||
- !type:PlantAdjustHealth
|
||||
amount: 0.75
|
||||
pricePerUnit: 0.2
|
||||
pricePerUnit: 0.05
|
||||
|
||||
- type: reagent
|
||||
id: Vitamin #Anything "healthy"
|
||||
@@ -53,7 +53,7 @@
|
||||
amount: 0.5
|
||||
- !type:PlantAdjustHealth
|
||||
amount: 1.5
|
||||
pricePerUnit: 0.25
|
||||
pricePerUnit: 0.07
|
||||
|
||||
- type: reagent
|
||||
id: Protein #Meat and beans
|
||||
@@ -78,7 +78,7 @@
|
||||
- !type:OrganType
|
||||
type: CP14Vampire
|
||||
shouldHave: false
|
||||
pricePerUnit: 0.3
|
||||
pricePerUnit: 0.1
|
||||
|
||||
- type: reagent
|
||||
id: Sugar #Candy and grains
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
- id: HandLabeler #TODO custom cp14 labeler
|
||||
- id: CP14StampDenied
|
||||
- id: CP14StampApproved
|
||||
- id: CP14ManaOperationGlove
|
||||
- id: AppraisalTool
|
||||
- id: CP14PaperFolderRed
|
||||
amount: 2
|
||||
- id: CP14PaperFolderBlue
|
||||
|
||||
@@ -30,13 +30,13 @@
|
||||
- !type:NestedSelector
|
||||
tableId: CP14StationCrateLootTools
|
||||
rolls: !type:RangeNumberSelector
|
||||
range: 1, 5
|
||||
range: 4, 5
|
||||
# Fluff
|
||||
- !type:NestedSelector
|
||||
tableId: CP14StationCrateLootFluff
|
||||
prob: 0.33
|
||||
prob: 0.5
|
||||
rolls: !type:RangeNumberSelector
|
||||
range: 0, 2
|
||||
range: 4, 5
|
||||
|
||||
- type: entityTable
|
||||
id: CP14StationCrateLootTools
|
||||
@@ -51,11 +51,17 @@
|
||||
- id: CP14Scissors
|
||||
- id: CP14Torch
|
||||
- id: CP14Lighter
|
||||
- id: CP14ManaOperationGlove
|
||||
- id: CP14ModularIronShovel
|
||||
- id: CP14KeyFile
|
||||
- id: CP14BaseMop
|
||||
- id: CP14LockCopper
|
||||
- id: CP14ModularIronPickaxe
|
||||
- id: CP14ModularIronSickle
|
||||
- !type:GroupSelector
|
||||
children:
|
||||
- id: CP14FluteInstrument
|
||||
- id: CP14LyraInstrument
|
||||
- id: CP14LuteInstrument
|
||||
- !type:GroupSelector
|
||||
children:
|
||||
- id: CP14Candle
|
||||
@@ -88,9 +94,11 @@
|
||||
id: CP14StationCrateLootFluff
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
- id: CP14PaperFolderBlue
|
||||
- id: CP14PaperFolderRed
|
||||
- id: CP14PenFeather
|
||||
- id: CP14FoodPotato
|
||||
- id: CP14FoodOnion
|
||||
- id: CP14AgaricMushroom #dont eat
|
||||
- id: CP14Cloth10
|
||||
- id: CP14CrayonWhite
|
||||
- !type:GroupSelector
|
||||
@@ -112,6 +120,17 @@
|
||||
- id: CP14DyePurple
|
||||
- id: CP14DyeBlack
|
||||
- id: CP14DyeBlue
|
||||
- !type:GroupSelector
|
||||
children:
|
||||
- id: CP14BloodFlower
|
||||
- id: CP14AgaricMushroom
|
||||
- id: CP14ChromiumSlime
|
||||
weight: 0.5
|
||||
- id: CP14WildSage
|
||||
- id: CP14LumiMushroom
|
||||
- id: CP14BlueAmanita
|
||||
- id: CP14Dayflin
|
||||
- id: CP14AirLily
|
||||
|
||||
- type: entityTable
|
||||
id: CP14RandomVials
|
||||
|
||||
@@ -7,3 +7,12 @@
|
||||
- Airloss
|
||||
- Genetic
|
||||
- CP14Magic
|
||||
|
||||
- type: damageContainer
|
||||
id: CP14BiologicalAnaerobic
|
||||
supportedGroups:
|
||||
- Brute
|
||||
- Burn
|
||||
- Toxin
|
||||
- Genetic
|
||||
- CP14Magic
|
||||
|
||||
@@ -123,6 +123,49 @@
|
||||
Heat: 0.2
|
||||
Cold: 1.4
|
||||
|
||||
# Slimes
|
||||
# TODO: upstream a way to get modifier sets to inherit from each other
|
||||
|
||||
- type: damageModifierSet
|
||||
id: CP14Slime
|
||||
coefficients:
|
||||
Blunt: 0.6
|
||||
Slash: 1.2
|
||||
Piercing: 1.2
|
||||
Cold: 1.5
|
||||
Poison: 0.8
|
||||
|
||||
- type: damageModifierSet
|
||||
id: CP14SlimeElectric
|
||||
coefficients:
|
||||
Blunt: 0.6
|
||||
Slash: 1.2
|
||||
Piercing: 1.2
|
||||
Heat: 1.2
|
||||
Cold: 1.5
|
||||
Shock: 0.0
|
||||
Poison: 0.8
|
||||
|
||||
- type: damageModifierSet
|
||||
id: CP14SlimeFire
|
||||
coefficients:
|
||||
Blunt: 0.6
|
||||
Slash: 1.2
|
||||
Piercing: 1.2
|
||||
Heat: 0.0
|
||||
Cold: 2.0
|
||||
Poison: 0.8
|
||||
|
||||
- type: damageModifierSet
|
||||
id: CP14SlimeIce
|
||||
coefficients:
|
||||
Blunt: 0.6
|
||||
Slash: 1.2
|
||||
Piercing: 1.2
|
||||
Heat: 2.0
|
||||
Cold: 0.0
|
||||
Poison: 0.8
|
||||
|
||||
# Species
|
||||
|
||||
- type: damageModifierSet
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
- type: CP14MagicEffectManaCost
|
||||
manaCost: 1
|
||||
- type: CP14MagicEffect
|
||||
magicType: Life
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget # TODO заставить работать только на нежить
|
||||
spawns:
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
- type: entity
|
||||
id: CP14ActionSpellCureFromDeath
|
||||
name: Cure from death
|
||||
description: You heal the target from all kinds of damage.
|
||||
id: CP14ActionSpellResurrectionDead
|
||||
name: Death resurrection
|
||||
description: You resurrect the target and cure it from damage.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Actions/Spells/necromancy.rsi
|
||||
state: cure_dead
|
||||
- type: CP14MagicEffectCastSlowdown
|
||||
speedMultiplier: 0.7
|
||||
speedMultiplier: 0.9
|
||||
- type: CP14MagicEffectManaCost
|
||||
manaCost: 4
|
||||
manaCost: 20
|
||||
- type: CP14MagicEffectAliveTargetRequired
|
||||
inverted: true
|
||||
- type: CP14MagicEffect
|
||||
magicType: Life
|
||||
telegraphyEffects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
@@ -19,27 +22,27 @@
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectResurrection
|
||||
- !type:CP14SpellResurrectionEffect # TODO заставить работать только на нежить
|
||||
- !type:CP14SpellResurrectionEffect
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:HealthChange
|
||||
damage:
|
||||
types:
|
||||
Asphyxiation: -2
|
||||
Bloodloss: -2
|
||||
Blunt: -2
|
||||
Cellular: -1
|
||||
Caustic: -2
|
||||
Cold: -1
|
||||
Heat: -1
|
||||
Piercing: -2
|
||||
Poison: -2
|
||||
Radiation: -2
|
||||
Shock: -2
|
||||
Slash: -2
|
||||
- type: CP14MagicEffectSomaticAspect
|
||||
Asphyxiation: -500
|
||||
Bloodloss: -100
|
||||
Blunt: -25
|
||||
Caustic: -25
|
||||
Cold: -25
|
||||
Heat: -50
|
||||
Piercing: -25
|
||||
Poison: -25
|
||||
Radiation: -25
|
||||
Shock: -25
|
||||
Slash: -25
|
||||
- !type:Jitter
|
||||
- type: CP14MagicEffectVerbalAspect
|
||||
startSpeech: "Surge, hominem mortuum!"
|
||||
startSpeech: "Surge..."
|
||||
endSpeech: "Hominem mortuum"
|
||||
- type: CP14MagicEffectCastingVisual
|
||||
proto: CP14RuneResurrection
|
||||
- type: EntityTargetAction
|
||||
@@ -49,14 +52,15 @@
|
||||
range: 10
|
||||
itemIconStyle: BigAction
|
||||
interactOnMiss: false
|
||||
canTargetSelf: false
|
||||
sound: !type:SoundPathSpecifier
|
||||
path: /Audio/Magic/rumble.ogg
|
||||
icon:
|
||||
sprite: _CP14/Actions/Spells/necromancy.rsi
|
||||
state: cure_dead
|
||||
event: !type:CP14ToggleableEntityTargetActionEvent
|
||||
cooldown: 2
|
||||
castTime: 10
|
||||
event: !type:CP14DelayedEntityTargetActionEvent
|
||||
cooldown: 10
|
||||
castDelay: 2
|
||||
breakOnMove: false
|
||||
breakOnDamage: false
|
||||
|
||||
@@ -13,9 +13,24 @@
|
||||
- type: CP14MagicEffect
|
||||
magicType: Fire
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14AreaEntityEffectHellBallade
|
||||
- !type:CP14SpellArea
|
||||
range: 3
|
||||
maxTargets: 4
|
||||
whitelist:
|
||||
components:
|
||||
- MobState
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectHellBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:Jitter
|
||||
- !type:FlammableReaction
|
||||
multiplier: 0.5
|
||||
- !type:AdjustTemperature
|
||||
amount: 500
|
||||
- !type:Ignite
|
||||
- type: CP14MagicEffectRequiredMusicTool
|
||||
- type: CP14MagicEffectCastingVisual
|
||||
proto: CP14RuneHellBallade
|
||||
@@ -32,32 +47,6 @@
|
||||
castTime: 120
|
||||
hidden: true
|
||||
|
||||
- type: entity
|
||||
id: CP14AreaEntityEffectHellBallade
|
||||
categories: [ HideSpawnMenu ]
|
||||
save: false
|
||||
components:
|
||||
- type: TimedDespawn
|
||||
lifetime: 1.6
|
||||
- type: CP14AreaEntityEffect
|
||||
range: 3
|
||||
maxTargets: 4
|
||||
whitelist:
|
||||
components:
|
||||
- MobState
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectHellBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:Jitter
|
||||
- !type:FlammableReaction
|
||||
multiplier: 0.5
|
||||
- !type:AdjustTemperature
|
||||
amount: 500
|
||||
- !type:Ignite
|
||||
|
||||
- type: entity
|
||||
id: CP14ImpactEffectHellBallade
|
||||
parent: CP14BaseMagicImpact
|
||||
@@ -85,4 +74,3 @@
|
||||
- state: notes_3
|
||||
color: "#eea911"
|
||||
shader: unshaded
|
||||
|
||||
|
||||
@@ -13,9 +13,30 @@
|
||||
- type: CP14MagicEffect
|
||||
magicType: Life
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14AreaEntityEffectHealBallade
|
||||
- !type:CP14SpellArea
|
||||
range: 3
|
||||
maxTargets: 4
|
||||
whitelist:
|
||||
components:
|
||||
- MobState
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectHealthBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:HealthChange
|
||||
damage:
|
||||
types:
|
||||
Slash: -0.70
|
||||
Blunt: -0.70
|
||||
Piercing: -0.70
|
||||
Cold: -0.40
|
||||
Heat: -0.40
|
||||
Shock: -0.40
|
||||
Poison: -0.25
|
||||
Bloodloss: -0.40
|
||||
Caustic: -0.30
|
||||
- type: CP14MagicEffectRequiredMusicTool
|
||||
- type: CP14MagicEffectCastingVisual
|
||||
proto: CP14RuneHealBallade
|
||||
@@ -32,38 +53,6 @@
|
||||
castTime: 120
|
||||
hidden: true
|
||||
|
||||
- type: entity
|
||||
id: CP14AreaEntityEffectHealBallade
|
||||
categories: [ HideSpawnMenu ]
|
||||
save: false
|
||||
components:
|
||||
- type: TimedDespawn
|
||||
lifetime: 1.6
|
||||
- type: CP14AreaEntityEffect
|
||||
range: 3
|
||||
maxTargets: 4
|
||||
whitelist:
|
||||
components:
|
||||
- MobState
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectHealthBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:HealthChange
|
||||
damage:
|
||||
types:
|
||||
Slash: -0.70
|
||||
Blunt: -0.70
|
||||
Piercing: -0.70
|
||||
Cold: -0.40
|
||||
Heat: -0.40
|
||||
Shock: -0.40
|
||||
Poison: -0.25
|
||||
Bloodloss: -0.40
|
||||
Caustic: -0.30
|
||||
|
||||
- type: entity
|
||||
id: CP14ImpactEffectHealthBallade
|
||||
parent: CP14BaseMagicImpact
|
||||
|
||||
@@ -13,9 +13,23 @@
|
||||
- type: CP14MagicEffect
|
||||
magicType: Life
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14AreaEntityEffectPeaceBallade
|
||||
- !type:CP14SpellArea
|
||||
range: 4
|
||||
maxTargets: 8
|
||||
whitelist:
|
||||
components:
|
||||
- MobState
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectPeaceBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:GenericStatusEffect
|
||||
key: Pacified
|
||||
component: Pacified
|
||||
type: Add
|
||||
time: 1.8
|
||||
- type: CP14MagicEffectRequiredMusicTool
|
||||
- type: CP14MagicEffectCastingVisual
|
||||
proto: CP14RunePeaceBallade
|
||||
@@ -32,31 +46,6 @@
|
||||
castTime: 120
|
||||
hidden: true
|
||||
|
||||
- type: entity
|
||||
id: CP14AreaEntityEffectPeaceBallade
|
||||
categories: [ HideSpawnMenu ]
|
||||
save: false
|
||||
components:
|
||||
- type: TimedDespawn
|
||||
lifetime: 1.6
|
||||
- type: CP14AreaEntityEffect
|
||||
range: 3
|
||||
maxTargets: 4
|
||||
whitelist:
|
||||
components:
|
||||
- MobState
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectPeaceBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:GenericStatusEffect
|
||||
key: Pacified
|
||||
component: Pacified
|
||||
type: Add
|
||||
time: 1.8
|
||||
|
||||
- type: entity
|
||||
id: CP14ImpactEffectPeaceBallade
|
||||
parent: CP14BaseMagicImpact
|
||||
|
||||
@@ -74,3 +74,11 @@
|
||||
color: "#db35c8"
|
||||
shader: unshaded
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseSpellScrollHealing
|
||||
id: CP14SpellScrollSheepPolymorph
|
||||
name: sheep polymorph spell scroll
|
||||
components:
|
||||
- type: CP14SpellStorage
|
||||
spells:
|
||||
- CP14ActionSpellSheepPolymorph
|
||||
@@ -13,9 +13,23 @@
|
||||
- type: CP14MagicEffect
|
||||
magicType: Life
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14AreaEntityEffectSpeedBallade
|
||||
- !type:CP14SpellArea
|
||||
affectCaster: true
|
||||
range: 5
|
||||
maxTargets: 4
|
||||
whitelist:
|
||||
components:
|
||||
- MobState
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectSpeedBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:MovespeedModifier
|
||||
walkSpeedModifier: 1.2
|
||||
sprintSpeedModifier: 1.2
|
||||
statusLifetime: 1.8
|
||||
- type: CP14MagicEffectRequiredMusicTool
|
||||
- type: CP14MagicEffectCastingVisual
|
||||
proto: CP14RuneSpeedBallade
|
||||
@@ -32,30 +46,6 @@
|
||||
castTime: 120
|
||||
hidden: true
|
||||
|
||||
- type: entity
|
||||
id: CP14AreaEntityEffectSpeedBallade
|
||||
categories: [ HideSpawnMenu ]
|
||||
save: false
|
||||
components:
|
||||
- type: TimedDespawn
|
||||
lifetime: 1.6
|
||||
- type: CP14AreaEntityEffect
|
||||
range: 3
|
||||
maxTargets: 4
|
||||
whitelist:
|
||||
components:
|
||||
- MobState
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectSpeedBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:MovespeedModifier
|
||||
walkSpeedModifier: 1.15
|
||||
sprintSpeedModifier: 1.15
|
||||
statusLifetime: 1.8
|
||||
|
||||
- type: entity
|
||||
id: CP14ImpactEffectSpeedBallade
|
||||
parent: CP14BaseMagicImpact
|
||||
|
||||
@@ -89,3 +89,11 @@
|
||||
tags:
|
||||
- HideContextMenu
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseSpellScrollLight
|
||||
id: CP14SpellScrollSearchOfLife
|
||||
name: search of life spell scroll
|
||||
components:
|
||||
- type: CP14SpellStorage
|
||||
spells:
|
||||
- CP14ActionSpellSearchOfLife
|
||||
|
||||
@@ -13,9 +13,22 @@
|
||||
canModifyManacost: false
|
||||
- type: CP14MagicEffect
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14AreaEntityEffectMagicBallade
|
||||
- !type:CP14SpellArea
|
||||
range: 5
|
||||
maxTargets: 5
|
||||
whitelist:
|
||||
components:
|
||||
- CP14MagicEnergyContainer
|
||||
- CP14MagicEnergyCrystalSlot
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectMagicBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:CP14ManaChange
|
||||
manaDelta: 1.2
|
||||
safe: true
|
||||
- type: CP14MagicEffectRequiredMusicTool
|
||||
- type: CP14MagicEffectCastingVisual
|
||||
proto: CP14RuneMagicBallade
|
||||
@@ -32,30 +45,6 @@
|
||||
castTime: 120
|
||||
hidden: true
|
||||
|
||||
- type: entity
|
||||
id: CP14AreaEntityEffectMagicBallade
|
||||
categories: [ HideSpawnMenu ]
|
||||
save: false
|
||||
components:
|
||||
- type: TimedDespawn
|
||||
lifetime: 1.6
|
||||
- type: CP14AreaEntityEffect
|
||||
range: 5
|
||||
maxTargets: 5
|
||||
whitelist:
|
||||
components:
|
||||
- CP14MagicEnergyContainer
|
||||
- CP14MagicEnergyCrystalSlot
|
||||
effects:
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ImpactEffectMagicBallade
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:CP14ManaChange
|
||||
manaDelta: 1.2
|
||||
safe: true
|
||||
|
||||
- type: entity
|
||||
id: CP14ImpactEffectMagicBallade
|
||||
parent: CP14BaseMagicImpact
|
||||
|
||||
@@ -94,4 +94,6 @@
|
||||
event: !type:CP14DelayedEntityTargetActionEvent
|
||||
cooldown: 5
|
||||
castDelay: 0.4
|
||||
|
||||
distanceThreshold: 1.5
|
||||
breakOnMove: false
|
||||
breakOnDamage: false
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
- type: entity
|
||||
id: CP14ActionSpellSlimeJump
|
||||
name: Slime jump
|
||||
description: Jump! JUMP!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Actions/Spells/slime.rsi
|
||||
state: jump
|
||||
- type: CP14MagicEffectCastSlowdown
|
||||
speedMultiplier: 0.1
|
||||
- type: CP14MagicEffect
|
||||
effects:
|
||||
- !type:CP14SpellThrowUserTo
|
||||
throwPower: 8
|
||||
- type: EntityWorldTargetAction
|
||||
useDelay: 8
|
||||
range: 10
|
||||
checkCanAccess: false
|
||||
itemIconStyle: BigAction
|
||||
icon:
|
||||
sprite: _CP14/Actions/Spells/slime.rsi
|
||||
state: jump
|
||||
event: !type:CP14DelayedEntityWorldTargetActionEvent
|
||||
hidden: true
|
||||
breakOnMove: false
|
||||
breakOnDamage: false
|
||||
castDelay: 1
|
||||
raiseOnUser: true
|
||||
@@ -88,5 +88,4 @@
|
||||
components:
|
||||
- type: CP14SpellStorage
|
||||
spells:
|
||||
- CP14ActionSpellBeerCreation
|
||||
|
||||
- CP14ActionSpellBeerCreation
|
||||
@@ -63,6 +63,8 @@
|
||||
energy: 30
|
||||
maxEnergy: 50
|
||||
- type: CP14MagicUnsafeDamage
|
||||
- type: StaticPrice
|
||||
price: 5
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
id: CP14ClothingHeadSlimeCrown
|
||||
name: slime crown
|
||||
description: Earl of Ooze. Grand Duke of Goo. Lord of the Slimes.
|
||||
categories: [ DoNotMap ]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Clothing/Head/slime_crown.rsi
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
params:
|
||||
volume: 3
|
||||
- type: Damageable
|
||||
damageContainer: CP14Biological
|
||||
damageModifierSet: Slime
|
||||
damageContainer: CP14BiologicalAnaerobic
|
||||
damageModifierSet: CP14Slime
|
||||
- type: MeleeWeapon
|
||||
altDisarm: false
|
||||
soundHit:
|
||||
@@ -72,6 +72,8 @@
|
||||
speechSounds: Slime
|
||||
- type: TypingIndicator
|
||||
proto: slime
|
||||
- type: ReplacementAccent
|
||||
accent: slimes
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
slime:
|
||||
@@ -91,6 +93,9 @@
|
||||
solution: slime
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
# TODO: shouldn't be openable by others
|
||||
# TODO: custom sound for opening and closing--shouldn't be a chest
|
||||
# TODO: allow player-controlled slime to open its own storage?
|
||||
- type: EntityStorage
|
||||
isCollidableWhenOpen: true
|
||||
enteringOffset: 0, 0
|
||||
@@ -98,6 +103,9 @@
|
||||
showContents: true
|
||||
occludesLight: false
|
||||
- type: CP14MagicCasterSlowdown
|
||||
- type: Tag
|
||||
tags:
|
||||
- FootstepSound
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
entity_storage: !type:GroupSelector
|
||||
@@ -110,32 +118,3 @@
|
||||
- id: CP14ScrapIron
|
||||
- id: CP14CopperCoin1
|
||||
weight: 3
|
||||
|
||||
- type: entity
|
||||
id: CP14ActionSpellSlimeJump
|
||||
name: Slime jump
|
||||
description: Jump! JUMP!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Actions/Spells/physical.rsi
|
||||
state: kick #TODO
|
||||
- type: CP14MagicEffectCastSlowdown
|
||||
speedMultiplier: 0.1
|
||||
- type: CP14MagicEffect
|
||||
effects:
|
||||
- !type:CP14SpellThrowUserTo
|
||||
throwPower: 8
|
||||
- type: EntityWorldTargetAction
|
||||
useDelay: 8
|
||||
range: 10
|
||||
checkCanAccess: false
|
||||
itemIconStyle: BigAction
|
||||
icon:
|
||||
sprite: _CP14/Actions/Spells/physical.rsi
|
||||
state: kick #TODO
|
||||
event: !type:CP14DelayedEntityWorldTargetActionEvent
|
||||
hidden: true
|
||||
breakOnMove: false
|
||||
breakOnDamage: false
|
||||
castDelay: 1
|
||||
raiseOnUser: true
|
||||
|
||||
@@ -23,26 +23,23 @@
|
||||
- ReagentId: CP14EssenceEnergia
|
||||
Quantity: 30
|
||||
- type: MeleeWeapon
|
||||
altDisarm: false
|
||||
soundHit:
|
||||
path: /Audio/Weapons/punch3.ogg
|
||||
angle: 0
|
||||
animation: WeaponArcPunch
|
||||
damage:
|
||||
types:
|
||||
Blunt: 3
|
||||
Shock: 3
|
||||
- type: CP14SpellEffectOnHit
|
||||
prob: 0.3
|
||||
prob: 0.15
|
||||
effects:
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:Electrocute
|
||||
electrocuteTime: 1
|
||||
electrocuteTime: 0.5
|
||||
electrocuteDamageScale: 1
|
||||
- !type:CP14SpellSpawnEntityOnTarget
|
||||
spawns:
|
||||
- CP14ElectrifiedEffect
|
||||
- type: Damageable
|
||||
damageModifierSet: CP14SlimeElectric
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
@@ -102,6 +99,5 @@
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:Electrocute
|
||||
electrocuteTime: 3.5
|
||||
electrocuteTime: 2
|
||||
electrocuteDamageScale: 1
|
||||
|
||||
|
||||
@@ -25,15 +25,19 @@
|
||||
- ReagentId: CP14BasicEffectDamageHeat
|
||||
Quantity: 10
|
||||
- type: MeleeWeapon
|
||||
altDisarm: false
|
||||
soundHit:
|
||||
path: /Audio/Weapons/punch3.ogg
|
||||
angle: 0
|
||||
animation: WeaponArcPunch
|
||||
damage:
|
||||
types:
|
||||
Blunt: 3
|
||||
Heat: 3
|
||||
- type: Damageable
|
||||
damageModifierSet: CP14SlimeFire
|
||||
- type: Temperature
|
||||
coldDamage:
|
||||
types:
|
||||
Cold: 1
|
||||
heatDamage:
|
||||
types:
|
||||
Heat: 0
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
@@ -100,4 +104,3 @@
|
||||
- !type:AdjustTemperature
|
||||
amount: 6000
|
||||
- !type:Ignite
|
||||
|
||||
|
||||
@@ -20,14 +20,9 @@
|
||||
reagents:
|
||||
- ReagentId: CP14ChromiumSlime
|
||||
Quantity: 20
|
||||
- ReagentId: CP14EssenceWater
|
||||
- ReagentId: CP14EssenceFrost
|
||||
Quantity: 30
|
||||
- type: MeleeWeapon
|
||||
altDisarm: false
|
||||
soundHit:
|
||||
path: /Audio/Weapons/punch3.ogg
|
||||
angle: 0
|
||||
animation: WeaponArcPunch
|
||||
damage:
|
||||
types:
|
||||
Blunt: 3
|
||||
@@ -49,6 +44,15 @@
|
||||
- !type:AdjustTemperature
|
||||
amount: -6000
|
||||
- !type:ExtinguishReaction
|
||||
- type: Damageable
|
||||
damageModifierSet: CP14SlimeIce
|
||||
- type: Temperature
|
||||
coldDamage:
|
||||
types:
|
||||
Cold: 0
|
||||
heatDamage:
|
||||
types:
|
||||
Heat: 3
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
@@ -114,4 +118,3 @@
|
||||
- !type:AdjustTemperature
|
||||
amount: -82000
|
||||
- !type:ExtinguishReaction
|
||||
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- CP14Monster
|
||||
- type: CP14SkillStorage
|
||||
experienceMaxCap: 0
|
||||
freeLearnedSkills:
|
||||
- SwordMastery
|
||||
- RapierMastery
|
||||
- SkimitarMastery
|
||||
|
||||
- type: entity
|
||||
id: CP14MobUndeadSkeletonHalberdT1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
- type: entity
|
||||
id: CP14MobUndeadSkeletonDemiplaneT2
|
||||
parent: CP14BaseMobSkeleton
|
||||
parent: CP14MobUndeadSkeletonDemiplaneT1
|
||||
name: skeleton
|
||||
abstract: true
|
||||
components:
|
||||
@@ -77,20 +77,38 @@
|
||||
- type: Loadout
|
||||
prototypes:
|
||||
- CP14MobSkeletonWizardT2
|
||||
- type: CP14MagicEnergyDraw
|
||||
energy: 1
|
||||
delay: 1
|
||||
- type: CP14MagicEnergyContainer
|
||||
magicAlert: CP14MagicEnergy
|
||||
maxEnergy: 200
|
||||
energy: 200
|
||||
unsafeSupport: true
|
||||
- type: PassiveDamage
|
||||
allowedStates:
|
||||
- Alive
|
||||
damage:
|
||||
types:
|
||||
CP14ManaDepletion: -0.1
|
||||
- type: CP14SkillStorage
|
||||
experienceMaxCap: 0
|
||||
freeLearnedSkills:
|
||||
- SwordMastery
|
||||
- RapierMastery
|
||||
- SkimitarMastery
|
||||
- HydrosophistryT1
|
||||
- HydrosophistryT2
|
||||
- MetamagicT1
|
||||
- MetamagicT2
|
||||
- CP14ActionSpellFreeze
|
||||
- CP14ActionSpellIceShards
|
||||
- CP14ActionSpellManaConsumeElf
|
||||
- CP14ActionSpellManaGiftElf
|
||||
- CP14ActionSpellMagicSplitting
|
||||
- CP14ActionSpellManaTrance
|
||||
- type: CP14SpellStorage
|
||||
grantAccessToSelf: true
|
||||
spells:
|
||||
- CP14ActionSpellFreeze
|
||||
- CP14ActionSpellIceShards
|
||||
- CP14ActionSpellIceDagger
|
||||
- CP14ActionSpellCureFromDeath
|
||||
- CP14ActionSpellResurrectionDead
|
||||
- CP14ActionSpellShadowStep
|
||||
- CP14ActionSpellShadowSwap
|
||||
- CP14ActionSpellShadowGrab
|
||||
|
||||
- type: entity
|
||||
id: CP14MobUndeadSkeletonBardT2
|
||||
parent: CP14MobUndeadSkeletonDemiplaneT2
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
offset: 1
|
||||
table: !type:GroupSelector
|
||||
rolls: !type:RangeNumberSelector
|
||||
range: 1, 5
|
||||
range: 3, 5
|
||||
children:
|
||||
- id: CP14MobUndeadZombie
|
||||
weight: 2
|
||||
@@ -50,6 +50,32 @@
|
||||
tags:
|
||||
- FootstepSound
|
||||
- CP14RaidLeader
|
||||
- type: CP14SkillStorage
|
||||
experienceMaxCap: 0
|
||||
freeLearnedSkills:
|
||||
- SwordMastery
|
||||
- RapierMastery
|
||||
- SkimitarMastery
|
||||
- MetamagicT1
|
||||
- MetamagicT2
|
||||
- HydrosophistryT1
|
||||
- HydrosophistryT2
|
||||
- PyrokineticT1
|
||||
- PyrokineticT2
|
||||
- CP14ActionSpellFireball
|
||||
- CP14ActionSpellFreeze
|
||||
- CP14ActionSpellIceShards
|
||||
- CP14ActionSpellManaConsumeElf
|
||||
- CP14ActionSpellManaGiftElf
|
||||
- CP14ActionSpellMagicSplitting
|
||||
- CP14ActionSpellManaTrance
|
||||
- type: CP14SpellStorage
|
||||
grantAccessToSelf: true
|
||||
spells:
|
||||
- CP14ActionSpellResurrectionDead
|
||||
- type: Loadout
|
||||
prototypes:
|
||||
- CP14MobSkeletonWizardTownRaid
|
||||
|
||||
- type: entity
|
||||
id: CP14SpawnPointTownRaidUndeadEasy
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
@@ -210,7 +210,7 @@
|
||||
attributes:
|
||||
proper: true
|
||||
- type: MobPrice
|
||||
price: 1500 # Kidnapping a living person and selling them for cred is a good move.
|
||||
price: 150 # Kidnapping a living person and selling them for cred is a good move.
|
||||
deathPenalty: 0.01 # However they really ought to be living and intact, otherwise they're worth 100x less.
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -365,7 +365,7 @@
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
@@ -400,6 +400,7 @@
|
||||
- BaseMob
|
||||
- CP14MobDamageable
|
||||
- CP14MobMagical
|
||||
- CP14BaseMobSpecies
|
||||
id: CP14BaseMobSpeciesNoLife
|
||||
categories: [ ForkFiltered ]
|
||||
abstract: true
|
||||
@@ -438,7 +439,7 @@
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
@@ -154,7 +154,7 @@
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
|
||||
@@ -109,7 +109,6 @@
|
||||
- type: entity
|
||||
parent:
|
||||
- CP14MobDamageable
|
||||
- MobRespirator
|
||||
- MobAtmosStandard
|
||||
- CP14SimpleSpaceMobNoLifeBase
|
||||
id: CP14SimpleMobNoLifeBase
|
||||
|
||||
@@ -18,4 +18,4 @@
|
||||
- state: bookmark_short
|
||||
map: [ "overlay" ]
|
||||
- type: Paper
|
||||
content: cp14-book-text-guild_moral
|
||||
content: cp14-book-text-guild-moral
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
storagebase: !type:Container
|
||||
- type: StaticPrice
|
||||
price: 1
|
||||
|
||||
- type: entity
|
||||
id: CP14PaperFolderBlue
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- Document
|
||||
- type: StaticPrice
|
||||
price: 2
|
||||
|
||||
- type: entity
|
||||
parent: CP14BasePaper
|
||||
|
||||
@@ -22,6 +22,11 @@
|
||||
collection: PaperScribbles
|
||||
params:
|
||||
variation: 0.1
|
||||
- type: StaticPrice
|
||||
price: 3
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
Steel: 0 #Parenting from vanilla moment
|
||||
|
||||
# TODO: Чернильницу нужно доделать. Перо должно быть видно, пока оно внутри чернильницы. Предмет должен быть через ItemSlots, чтобы перо вставлять забирать можно было кликом. Нужно добавить прикольные звуки вставляния, выставляния. И добавить механ, который будет требовать периодически макать перо в чернильницу.
|
||||
- type: entity
|
||||
|
||||
@@ -39,3 +39,36 @@
|
||||
- type: CP14TradingContract
|
||||
faction: BradPotions
|
||||
|
||||
- type: entity
|
||||
parent: CP14TradeContractBase
|
||||
id: CP14TradeContractDwarfMining
|
||||
description: Trading contract with the "Dwarf Steel" mining branch. Allows you to purchase various ore and mining tools.
|
||||
suffix: Dwarf Miners
|
||||
components:
|
||||
- type: Sprite
|
||||
state: dwarf_mining
|
||||
- type: CP14TradingContract
|
||||
faction: DwarfMining
|
||||
|
||||
- type: entity
|
||||
parent: CP14TradeContractBase
|
||||
id: CP14TradeContractThaumaturgy
|
||||
description: Trading contract with the "Academy of Thaumaturgy". Allows you to purchase various omagic device, tools and scrolls.
|
||||
suffix: Thaumaturgy
|
||||
components:
|
||||
- type: Sprite
|
||||
state: magic
|
||||
- type: CP14TradingContract
|
||||
faction: Thaumaturgy
|
||||
|
||||
- type: entity
|
||||
parent: CP14TradeContractBase
|
||||
id: CP14TradeContractHomeDecor
|
||||
description: Trading contract with the "Cozy House" store. Allows you to buy various decorations and nice things to furnish your home.
|
||||
suffix: Home Decor
|
||||
components:
|
||||
- type: Sprite
|
||||
state: house
|
||||
- type: CP14TradingContract
|
||||
faction: HomeDecor
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
tags:
|
||||
- CP14Wheat
|
||||
- CP14FarmFood
|
||||
- type: StaticPrice
|
||||
price: 1
|
||||
|
||||
- type: entity
|
||||
id: CP14Cotton
|
||||
@@ -45,3 +47,5 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- type: StaticPrice
|
||||
price: 1
|
||||
|
||||
@@ -32,6 +32,19 @@
|
||||
materialComposition:
|
||||
CP14Mithril: 10
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseLockpick
|
||||
id: CP14LockpickSkeletonArtifact
|
||||
name: lockpick skeleton
|
||||
description: A lockpick made from the bone of an unknown creature, it can open anything... though not immediately.
|
||||
categories: [ DoNotMap ]
|
||||
suffix: Artifact
|
||||
components:
|
||||
- type: CP14Lockpick
|
||||
health: 1000
|
||||
- type: Sprite
|
||||
state: lockpick_skeleton
|
||||
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: CP14KeyFile
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/string.rsi
|
||||
state: icon
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14Cloth: 5
|
||||
|
||||
- type: entity
|
||||
id: CP14Web
|
||||
@@ -34,6 +37,9 @@
|
||||
icon2: ""
|
||||
icon3: ""
|
||||
icon4: ""
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14Cloth: 2
|
||||
|
||||
- type: entity
|
||||
id: CP14Cloth1
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- Payload
|
||||
- type: StaticPrice
|
||||
price: 5
|
||||
- type: InteractionPopup
|
||||
successChance: 1
|
||||
interactSuccessSound:
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
- type: entity
|
||||
id: CP14OpenSign
|
||||
name: flip sign "Open"
|
||||
description: A small double-sided sign that can be turned over
|
||||
parent:
|
||||
- BaseItem
|
||||
- CP14BaseFlammable
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
sprite: _CP14/Objects/Misc/openclosed_sign.rsi
|
||||
layers:
|
||||
- state: table_sign
|
||||
- state: en_open_sign
|
||||
map: [signState]
|
||||
- type: Item
|
||||
size: Small
|
||||
- type: Flippable
|
||||
mirrorEntity: CP14ClosedSign
|
||||
- type: Appearance
|
||||
- type: InteractionOutline
|
||||
- type: CP14LocalizationVisuals
|
||||
mapStates:
|
||||
signState:
|
||||
ru-RU: ru_open_sign
|
||||
en-US: en_open_sign
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
damageModifierSet: Wood
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTypeTrigger
|
||||
damageType: Heat
|
||||
damage: 6
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: WoodDestroy
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14Ash1:
|
||||
min: 1
|
||||
max: 2
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 10
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: WoodDestroy
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14WoodenPlanks1:
|
||||
min: 1
|
||||
max: 1
|
||||
|
||||
- type: entity
|
||||
id: CP14ClosedSign
|
||||
name: flip sign "Closed"
|
||||
description: A small double-sided sign that can be turned over
|
||||
parent:
|
||||
- CP14OpenSign
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
sprite: _CP14/Objects/Misc/openclosed_sign.rsi
|
||||
layers:
|
||||
- state: table_sign
|
||||
- state: en_close_sign
|
||||
map: [signState]
|
||||
- type: Flippable
|
||||
mirrorEntity: CP14OpenSign
|
||||
- type: CP14LocalizationVisuals
|
||||
mapStates:
|
||||
signState:
|
||||
ru-RU: ru_close_sign
|
||||
en-US: en_close_sign
|
||||
@@ -231,6 +231,8 @@
|
||||
- type: SolutionContainerVisuals
|
||||
maxFillLevels: 2
|
||||
fillBaseName: liq-
|
||||
- type: Item
|
||||
size: Tiny
|
||||
|
||||
- type: entity
|
||||
id: CP14Syringe
|
||||
|
||||
@@ -39,4 +39,7 @@
|
||||
- state: label
|
||||
visible: false
|
||||
map: ["enum.PaperLabelVisuals.Layer"]
|
||||
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14Glass: 10
|
||||
CP14Gold: 10
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14EnergyCrystal
|
||||
- type: StaticPrice
|
||||
price: 10
|
||||
|
||||
- type: entity
|
||||
id: CP14EnergyCrystalMedium
|
||||
@@ -25,7 +27,6 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: medium
|
||||
- state: medium_connector
|
||||
- type: CP14MagicEnergyContainer
|
||||
energy: 50
|
||||
maxEnergy: 50
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
collection: MetalThud
|
||||
cPAnimationLength: 0.25
|
||||
cPAnimationOffset: -1.3
|
||||
- type: StaticPrice
|
||||
price: 50
|
||||
- type: NetworkConfigurator
|
||||
- type: ActivatableUI
|
||||
key: enum.NetworkConfiguratorUiKey.List
|
||||
|
||||
@@ -60,6 +60,10 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Torch
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14WoodenPlanks: 10
|
||||
CP14Cloth: 10
|
||||
|
||||
- type: entity
|
||||
parent: CP14Torch
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
sprite: _CP14/Structures/Wallpaper/icons.rsi
|
||||
- type: Stack
|
||||
count: 30
|
||||
- type: StackPrice
|
||||
price: 0.5
|
||||
|
||||
- type: entity
|
||||
id: CP14WallpaperBlack
|
||||
|
||||
@@ -43,5 +43,4 @@
|
||||
- type: CP14ModularCraftAutoAssemble
|
||||
details:
|
||||
- BladeIronDagger
|
||||
- InlayQuartzElectric
|
||||
|
||||
- InlayQuartzElectric
|
||||
@@ -13,3 +13,49 @@
|
||||
details:
|
||||
- BladeIronSkimitar
|
||||
|
||||
- type: entity
|
||||
id: CP14ModularCopperSkimitar
|
||||
parent: CP14ModularGripWooden
|
||||
name: copper skimitar
|
||||
description: the gold standard of edged weapons. Medium length, comfortable grip. No frills.
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: icon
|
||||
- sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi
|
||||
state: icon
|
||||
- type: CP14ModularCraftAutoAssemble
|
||||
details:
|
||||
- BladeCopperSkimitar
|
||||
|
||||
- type: entity
|
||||
id: CP14ModularIronSkimitarTundra
|
||||
parent: CP14ModularGripWooden
|
||||
name: Skimitar Tundra
|
||||
description: the gold standard of edged weapons. Medium length, comfortable grip. It has "tundra" engraved on it.
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: icon
|
||||
- sprite: _CP14/Objects/ModularTools/Blade/Dagger/metall_dagger.rsi
|
||||
state: icon
|
||||
- type: CP14ModularCraftAutoAssemble
|
||||
details:
|
||||
- BladeIronSkimitar
|
||||
- InlayQuartzWater
|
||||
|
||||
- type: entity
|
||||
id: CP14ModularGoldSkimitarAgony
|
||||
parent: CP14ModularGripWooden
|
||||
name: Skimitar Agony
|
||||
description: the gold standard of edged weapons. Medium length, comfortable grip. It has "agony" engraved on it.
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: icon
|
||||
- sprite: _CP14/Objects/ModularTools/Blade/Dagger/metall_dagger.rsi
|
||||
state: icon
|
||||
- type: CP14ModularCraftAutoAssemble
|
||||
details:
|
||||
- BladeGoldSkimitar
|
||||
- InlayQuartzElectric
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
- type: CP14WaveShader
|
||||
speed: 2.5
|
||||
dis: 4
|
||||
- type: SpriteFade
|
||||
#- type: SpriteFade #Hard to attack
|
||||
- type: Clickable
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
- type: entity
|
||||
id: CP14CarpetBase
|
||||
parent: BaseStructure
|
||||
parent:
|
||||
- BaseStructure
|
||||
- CP14BaseFlammableSpreadingStrong
|
||||
name: carpet
|
||||
description: "Fancy walking surface."
|
||||
categories: [ ForkFiltered ]
|
||||
@@ -57,3 +59,42 @@
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Furniture/Carpets/red_carpet.rsi
|
||||
|
||||
- type: entity
|
||||
id: CP14CarpetCyan
|
||||
parent: CP14CarpetBase
|
||||
suffix: Cyan
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Furniture/Carpets/cyan_carpet.rsi
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Furniture/Carpets/cyan_carpet.rsi
|
||||
|
||||
- type: entity
|
||||
id: CP14CarpetGreen
|
||||
parent: CP14CarpetBase
|
||||
suffix: Green
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Furniture/Carpets/green_carpet.rsi
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Furniture/Carpets/green_carpet.rsi
|
||||
|
||||
- type: entity
|
||||
id: CP14CarpetOrange
|
||||
parent: CP14CarpetBase
|
||||
suffix: Orange
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Furniture/Carpets/orange_carpet.rsi
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Furniture/Carpets/orange_carpet.rsi
|
||||
|
||||
- type: entity
|
||||
id: CP14CarpetPink
|
||||
parent: CP14CarpetBase
|
||||
suffix: Pink
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Furniture/Carpets/pink_carpet.rsi
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Furniture/Carpets/pink_carpet.rsi
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "cloak" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt1" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "belt2" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "mask" ]
|
||||
@@ -90,7 +90,7 @@
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
belt1: !type:ContainerSlot
|
||||
belt: !type:ContainerSlot
|
||||
showEnts: False
|
||||
occludes: False
|
||||
ent: null
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user