Compare commits
30 Commits
TheShuEd-p
...
ed-10-08-2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ccb87bdf30 | ||
|
|
bf256b25e9 | ||
|
|
9f4932a8af | ||
|
|
32ce8f2164 | ||
|
|
f70e3051ed | ||
|
|
e3e142592a | ||
|
|
d4001598d4 | ||
|
|
78e140b4ae | ||
|
|
1b0bf2ad18 | ||
|
|
dc853b6662 | ||
|
|
37e0ffa173 | ||
|
|
6ab9ca6bd0 | ||
|
|
934c1e44a6 | ||
|
|
818eb30d2d | ||
|
|
12d2af692f | ||
|
|
1f4b7f68bf | ||
|
|
9a07a9a052 | ||
|
|
1633895321 | ||
|
|
0cd3a3c2d9 | ||
|
|
72cbed696f | ||
|
|
c620d66dab | ||
|
|
599c599a4e | ||
|
|
31c9485e3b | ||
|
|
56da23925f | ||
|
|
19365c0314 | ||
|
|
82d89a97f1 | ||
|
|
2bb43245c8 | ||
|
|
909fa27450 | ||
|
|
7478e6b445 | ||
|
|
5072800d4a |
14
.github/FUNDING.yml
vendored
Normal file
14
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
polar: # Replace with a single Polar username
|
||||
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
|
||||
custom: ['https://boosty.to/theshued']
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Numerics;
|
||||
using Content.Client.Parallax;
|
||||
using Content.Client.Weather;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.WorldEdge;
|
||||
using Content.Shared.Salvage;
|
||||
using Content.Shared.Weather;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
using System.Numerics;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
@@ -53,7 +53,7 @@ public sealed partial class StencilOverlay
|
||||
worldHandle.UseShader(_protoManager.Index<ShaderPrototype>("StencilMask").Instance());
|
||||
worldHandle.DrawTextureRect(_blep!.Texture, worldBounds);
|
||||
var curTime = _timing.RealTime;
|
||||
var sprite = _sprite.GetFrame(new SpriteSpecifier.Texture(new ResPath(cloudComp.ParallaxPath)), curTime);
|
||||
var sprite = _sprite.GetFrame(new SpriteSpecifier.Texture(cloudComp.ParallaxPath), curTime);
|
||||
|
||||
// Draw the rain
|
||||
worldHandle.UseShader(_protoManager.Index<ShaderPrototype>("StencilDraw").Instance());
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench;
|
||||
using Robust.Client.UserInterface;
|
||||
|
||||
namespace Content.Client._CP14.Workbench;
|
||||
|
||||
public sealed class CP14WorkbenchBoundUserInterface : BoundUserInterface
|
||||
{
|
||||
private CP14WorkbenchWindow? _window;
|
||||
|
||||
public CP14WorkbenchBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Open()
|
||||
{
|
||||
base.Open();
|
||||
|
||||
_window = this.CreateWindow<CP14WorkbenchWindow>();
|
||||
|
||||
_window.OnCraft += entry => SendMessage(new CP14WorkbenchUiCraftMessage(entry.ProtoId));
|
||||
}
|
||||
|
||||
protected override void UpdateState(BoundUserInterfaceState state)
|
||||
{
|
||||
base.UpdateState(state);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case CP14WorkbenchUiRecipesState recipesState:
|
||||
_window?.UpdateRecipes(recipesState);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<Control xmlns="https://spacestation14.io">
|
||||
<GridContainer Columns="2">
|
||||
<TextureRect Name="View"
|
||||
Margin="0,0,4,0"
|
||||
MinSize="48 48"
|
||||
HorizontalAlignment="Left"
|
||||
Stretch="KeepAspectCentered"/>
|
||||
<Label Name="Name"/>
|
||||
</GridContainer>
|
||||
</Control>
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._CP14.Workbench;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class CP14WorkbenchRecipeControl : Control
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entity = default!;
|
||||
|
||||
private readonly SpriteSystem _sprite;
|
||||
|
||||
public CP14WorkbenchRecipeControl()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
IoCManager.InjectDependencies(this);
|
||||
|
||||
_sprite = _entity.System<SpriteSystem>();
|
||||
}
|
||||
|
||||
public CP14WorkbenchRecipeControl(EntityPrototype prototype, int count) : this()
|
||||
{
|
||||
var entityName = prototype.Name;
|
||||
Name.Text = count <= 1 ? entityName : $"{entityName} x{count}";
|
||||
View.Texture = _sprite.GetPrototypeIcon(prototype).Default;
|
||||
}
|
||||
|
||||
public CP14WorkbenchRecipeControl(StackPrototype prototype, int count) : this()
|
||||
{
|
||||
var entityName = Loc.GetString(prototype.Name);
|
||||
Name.Text = $"{entityName} x{count}";
|
||||
|
||||
var icon = prototype.Icon;
|
||||
if (icon is null)
|
||||
return;
|
||||
|
||||
View.Texture = _sprite.Frame0(icon);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<Control xmlns="https://spacestation14.io">
|
||||
<Button Name="Button">
|
||||
<GridContainer Columns="2">
|
||||
<TextureRect Name="View"
|
||||
Margin="0,0,4,0"
|
||||
MinSize="48 48"
|
||||
HorizontalAlignment="Left"
|
||||
Stretch="KeepAspectCentered"/>
|
||||
<Label Name="Name"/>
|
||||
</GridContainer>
|
||||
</Button>
|
||||
</Control>
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._CP14.Workbench;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class CP14WorkbenchRequirementControl : Control
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entity = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
|
||||
public event Action<CP14WorkbenchUiRecipesEntry, CP14WorkbenchRecipePrototype>? OnSelect;
|
||||
|
||||
private readonly SpriteSystem _sprite;
|
||||
|
||||
private readonly CP14WorkbenchRecipePrototype _recipePrototype;
|
||||
private readonly bool _craftable;
|
||||
|
||||
public CP14WorkbenchRequirementControl(CP14WorkbenchUiRecipesEntry entry)
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
IoCManager.InjectDependencies(this);
|
||||
|
||||
_sprite = _entity.System<SpriteSystem>();
|
||||
|
||||
_recipePrototype = _prototype.Index(entry.ProtoId);
|
||||
_craftable = entry.Craftable;
|
||||
|
||||
Button.OnPressed += _ => OnSelect?.Invoke(entry, _recipePrototype);
|
||||
|
||||
UpdateColor();
|
||||
UpdateName();
|
||||
UpdateView();
|
||||
}
|
||||
|
||||
private void UpdateColor()
|
||||
{
|
||||
if (_craftable)
|
||||
return;
|
||||
|
||||
Button.ModulateSelfOverride = Color.FromHex("#302622");
|
||||
}
|
||||
|
||||
private void UpdateName()
|
||||
{
|
||||
var result = _prototype.Index(_recipePrototype.Result);
|
||||
Name.Text = Loc.GetString(result.Name);
|
||||
}
|
||||
|
||||
private void UpdateView()
|
||||
{
|
||||
View.Texture = _sprite.GetPrototypeIcon(_recipePrototype.Result).Default;
|
||||
}
|
||||
}
|
||||
60
Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml
Normal file
60
Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml
Normal file
@@ -0,0 +1,60 @@
|
||||
<DefaultWindow xmlns="https://spacestation14.io"
|
||||
xmlns:graphics="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
|
||||
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
|
||||
Title="{Loc 'cp14-workbench-ui-title'}"
|
||||
MinSize="700 600">
|
||||
<BoxContainer Orientation="Vertical">
|
||||
<!-- Main -->
|
||||
<BoxContainer HorizontalExpand="True" VerticalExpand="True" Orientation="Horizontal">
|
||||
<GridContainer HorizontalExpand="True" VerticalExpand="True" Columns="2">
|
||||
<!-- Crafts container -->
|
||||
<ScrollContainer HorizontalExpand="True" VerticalExpand="True" MinSize="0 200">
|
||||
<BoxContainer Name="CraftsContainer" Orientation="Vertical" HorizontalExpand="True"/>
|
||||
</ScrollContainer>
|
||||
|
||||
<!-- Craft view -->
|
||||
<BoxContainer HorizontalExpand="True" VerticalExpand="True" Orientation="Vertical">
|
||||
<PanelContainer HorizontalExpand="True" VerticalExpand="True">
|
||||
<!-- Background -->
|
||||
<PanelContainer.PanelOverride>
|
||||
<graphics:StyleBoxFlat BackgroundColor="#41332f"/>
|
||||
</PanelContainer.PanelOverride>
|
||||
|
||||
<!-- Content -->
|
||||
<BoxContainer HorizontalExpand="True" VerticalExpand="True" Orientation="Vertical">
|
||||
<!-- Item info -->
|
||||
<GridContainer HorizontalExpand="True" Columns="2">
|
||||
<!-- Left panel - icon -->
|
||||
<TextureRect Name="ItemView"
|
||||
Margin="0,0,4,0"
|
||||
MinSize="64 64"
|
||||
HorizontalAlignment="Left"
|
||||
Stretch="KeepAspectCentered"/>
|
||||
|
||||
<!-- Right panel - name & description -->
|
||||
<BoxContainer HorizontalExpand="True" VerticalExpand="True" Orientation="Vertical">
|
||||
<Label Name="ItemName" Text="Name"/>
|
||||
<Label Name="ItemDescription" Text="Description" ClipText="True"/>
|
||||
</BoxContainer>
|
||||
</GridContainer>
|
||||
|
||||
<controls:HLine Color="#404040" Thickness="2" Margin="0 5"/>
|
||||
|
||||
<!-- Required title -->
|
||||
<Label Text="{Loc 'cp14-workbench-recipe-list'}"/>
|
||||
|
||||
<!-- Craft requirements content -->
|
||||
<!-- Added by code -->
|
||||
<BoxContainer Name="ItemRequirements" Orientation="Vertical" VerticalExpand="True" HorizontalExpand="True"/>
|
||||
|
||||
<controls:HLine Color="#404040" Thickness="2" Margin="0 5"/>
|
||||
|
||||
<!-- Craft button -->
|
||||
<Button Name="CraftButton" Text="{Loc 'cp14-workbench-craft'}"/>
|
||||
</BoxContainer>
|
||||
</PanelContainer>
|
||||
</BoxContainer>
|
||||
</GridContainer>
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
</DefaultWindow>
|
||||
113
Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml.cs
Normal file
113
Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml.cs
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._CP14.Workbench;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class CP14WorkbenchWindow : DefaultWindow
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entity = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
|
||||
public event Action<CP14WorkbenchUiRecipesEntry>? OnCraft;
|
||||
|
||||
private readonly SpriteSystem _sprite;
|
||||
|
||||
private CP14WorkbenchUiRecipesEntry? _selectedEntry ;
|
||||
|
||||
public CP14WorkbenchWindow()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
IoCManager.InjectDependencies(this);
|
||||
|
||||
_sprite = _entity.System<SpriteSystem>();
|
||||
|
||||
CraftButton.OnPressed += _ =>
|
||||
{
|
||||
if (_selectedEntry is null)
|
||||
return;
|
||||
|
||||
OnCraft?.Invoke(_selectedEntry.Value);
|
||||
};
|
||||
}
|
||||
|
||||
public void UpdateRecipes(CP14WorkbenchUiRecipesState recipesState)
|
||||
{
|
||||
CraftsContainer.RemoveAllChildren();
|
||||
|
||||
List<CP14WorkbenchUiRecipesEntry> uncraftableList = new();
|
||||
foreach (var entry in recipesState.Recipes)
|
||||
{
|
||||
if (entry.Craftable)
|
||||
{
|
||||
var control = new CP14WorkbenchRequirementControl(entry);
|
||||
control.OnSelect += RecipeSelect;
|
||||
CraftsContainer.AddChild(control);
|
||||
}
|
||||
else
|
||||
uncraftableList.Add(entry);
|
||||
}
|
||||
|
||||
foreach (var entry in uncraftableList)
|
||||
{
|
||||
var control = new CP14WorkbenchRequirementControl(entry);
|
||||
control.OnSelect += RecipeSelect;
|
||||
CraftsContainer.AddChild(control);
|
||||
}
|
||||
|
||||
if (_selectedEntry is not null && recipesState.Recipes.Contains(_selectedEntry.Value))
|
||||
{
|
||||
RecipeSelect(_selectedEntry.Value, _prototype.Index(_selectedEntry.Value.ProtoId));
|
||||
return;
|
||||
}
|
||||
|
||||
RecipeSelect(recipesState);
|
||||
}
|
||||
|
||||
private void RecipeSelect(CP14WorkbenchUiRecipesState recipesState)
|
||||
{
|
||||
foreach (var entry in recipesState.Recipes)
|
||||
{
|
||||
RecipeSelect(entry, _prototype.Index(entry.ProtoId));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void RecipeSelect(CP14WorkbenchUiRecipesEntry entry, CP14WorkbenchRecipePrototype recipe)
|
||||
{
|
||||
_selectedEntry = entry;
|
||||
|
||||
var result = _prototype.Index(recipe.Result);
|
||||
|
||||
ItemView.Texture = _sprite.GetPrototypeIcon(recipe.Result).Default;
|
||||
ItemName.Text = result.Name;
|
||||
ItemDescription.Text = result.Description;
|
||||
|
||||
ItemRequirements.RemoveAllChildren();
|
||||
foreach (var (entProtoId, count) in recipe.Entities)
|
||||
{
|
||||
ItemRequirements.AddChild(new CP14WorkbenchRecipeControl(_prototype.Index(entProtoId), count));
|
||||
}
|
||||
|
||||
foreach (var (stackProtoId, count) in recipe.Stacks)
|
||||
{
|
||||
ItemRequirements.AddChild(new CP14WorkbenchRecipeControl(_prototype.Index(stackProtoId), count));
|
||||
}
|
||||
|
||||
CraftButton.Disabled = !entry.Craftable;
|
||||
}
|
||||
}
|
||||
@@ -51,6 +51,7 @@ namespace Content.IntegrationTests.Tests
|
||||
//CrystallPunk maps
|
||||
"AlchemyTest",
|
||||
"BattleRoyale",
|
||||
"ExpeditionTest",
|
||||
//CrystallPunk Map replacement end
|
||||
};
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
using Content.Server._CP14.MeleeWeapon;
|
||||
using Content.Server._CP14.MeleeWeapon.Components;
|
||||
using Content.Server.Administration.Logs;
|
||||
using Content.Server.Damage.Components;
|
||||
using Content.Server.Weapons.Ranged.Systems;
|
||||
using Content.Shared._CP14.MeleeWeapon.Components;
|
||||
using Content.Shared.Camera;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Damage.Events;
|
||||
@@ -43,7 +42,7 @@ namespace Content.Server.Damage.Systems
|
||||
damage *= sharp.Sharpness;
|
||||
|
||||
var dmg = _damageable.TryChangeDamage(args.Target, damage, component.IgnoreResistances, origin: args.Component.Thrower);
|
||||
//CrystallPunk Melee pgrade end
|
||||
//CrystallPunk Melee upgrade end
|
||||
|
||||
// Log damage only for mobs. Useful for when people throw spears at each other, but also avoids log-spam when explosions send glass shards flying.
|
||||
if (dmg != null && HasComp<MobStateComponent>(args.Target))
|
||||
|
||||
@@ -68,6 +68,8 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem
|
||||
_spawnerCallbacks = new Dictionary<SpawnPriorityPreference, Action<PlayerSpawningEvent>>()
|
||||
{
|
||||
{ SpawnPriorityPreference.Arrivals, _CP14expedition.HandlePlayerSpawning }, //CP14 expedition system replaced
|
||||
{ SpawnPriorityPreference.Cryosleep, _CP14expedition.HandlePlayerSpawning }, //CP14 expedition system replaced
|
||||
/*
|
||||
{
|
||||
SpawnPriorityPreference.Cryosleep, ev =>
|
||||
{
|
||||
@@ -76,7 +78,7 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem
|
||||
else
|
||||
_containerSpawnPointSystem.HandlePlayerSpawning(ev);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -36,28 +36,25 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem
|
||||
{
|
||||
SpawnBiome(ent);
|
||||
QueueDel(ent);
|
||||
|
||||
}
|
||||
|
||||
private void SpawnBiome(Entity<CP14BiomeSpawnerComponent> ent)
|
||||
{
|
||||
var biome = _proto.Index(ent.Comp.Biome);
|
||||
var spawnerTransform = Transform(ent);
|
||||
if (spawnerTransform.GridUid == null)
|
||||
return;
|
||||
|
||||
var gridUid = spawnerTransform.ParentUid;
|
||||
var gridUid = spawnerTransform.GridUid.Value;
|
||||
|
||||
if (!TryComp<MapGridComponent>(gridUid, out var map))
|
||||
return;
|
||||
|
||||
if (!_roundSeed.TryGetSeed(out var seed))
|
||||
{
|
||||
Log.Warning("Missing RoundSeed. Seed set to 0");
|
||||
seed = 0;
|
||||
}
|
||||
var seed = _roundSeed.GetSeed();
|
||||
|
||||
var vec = _transform.GetGridOrMapTilePosition(ent);
|
||||
|
||||
if (!_biome.TryGetTile(vec, biome.Layers, seed.Value, map, out var tile))
|
||||
if (!_biome.TryGetTile(vec, biome.Layers, seed, map, out var tile))
|
||||
return;
|
||||
|
||||
// Set new tile
|
||||
@@ -73,7 +70,7 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem
|
||||
}
|
||||
|
||||
//Add decals
|
||||
if (_biome.TryGetDecals(vec, biome.Layers, seed.Value, map, out var decals))
|
||||
if (_biome.TryGetDecals(vec, biome.Layers, seed, map, out var decals))
|
||||
{
|
||||
foreach (var decal in decals)
|
||||
{
|
||||
@@ -89,7 +86,7 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem
|
||||
QueueDel(entToRemove);
|
||||
}
|
||||
|
||||
if (_biome.TryGetEntity(vec, biome.Layers, tile.Value, seed.Value, map, out var entityProto))
|
||||
if (_biome.TryGetEntity(vec, biome.Layers, tile.Value, seed, map, out var entityProto))
|
||||
Spawn(entityProto, new EntityCoordinates(gridUid, tileCenterVec));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
using System.Numerics;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle;
|
||||
|
||||
public sealed partial class CP14CloudShadowsSystem : EntitySystem
|
||||
public sealed class CP14CloudShadowsSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
|
||||
@@ -15,10 +14,8 @@ public sealed partial class CP14CloudShadowsSystem : EntitySystem
|
||||
SubscribeLocalEvent<CP14CloudShadowsComponent, MapInitEvent>(OnMapInit);
|
||||
}
|
||||
|
||||
private void OnMapInit(Entity<CP14CloudShadowsComponent> ent, ref MapInitEvent args)
|
||||
private void OnMapInit(Entity<CP14CloudShadowsComponent> entity, ref MapInitEvent args)
|
||||
{
|
||||
ent.Comp.CloudSpeed = new Vector2(
|
||||
_random.NextFloat(-ent.Comp.MaxSpeed, ent.Comp.MaxSpeed),
|
||||
_random.NextFloat(-ent.Comp.MaxSpeed, ent.Comp.MaxSpeed));
|
||||
entity.Comp.CloudSpeed = _random.NextVector2(-entity.Comp.MaxSpeed, entity.Comp.MaxSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
using System.Diagnostics;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared.Maps;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle;
|
||||
namespace Content.Server._CP14.DayCycle;
|
||||
|
||||
public sealed partial class CP14DayCycleSystem : EntitySystem
|
||||
public sealed partial class CP14DayCycleSystem : CP14SharedDayCycleSystem
|
||||
{
|
||||
public const int MinTimeEntryCount = 2;
|
||||
private const float MaxTimeDiff = 0.05f;
|
||||
|
||||
private static readonly ProtoId<CP14DayCyclePeriodPrototype> DayPeriod = "Day";
|
||||
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly SharedMapSystem _maps = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly ITileDefinitionManager _tileDefManager = default!;
|
||||
|
||||
public override void Initialize()
|
||||
@@ -21,17 +24,8 @@ public sealed partial class CP14DayCycleSystem : EntitySystem
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14DayCycleComponent, MapInitEvent>(OnMapInitDayCycle);
|
||||
SubscribeLocalEvent<CP14DayCycleComponent, DayCycleDayStartedEvent>(OnDayStarted);
|
||||
SubscribeLocalEvent<CP14DayCycleComponent, DayCycleNightStartedEvent>(OnNightStarted);
|
||||
}
|
||||
|
||||
private void OnDayStarted(Entity<CP14DayCycleComponent> dayCycle, ref DayCycleDayStartedEvent args)
|
||||
{
|
||||
}
|
||||
|
||||
private void OnNightStarted(Entity<CP14DayCycleComponent> dayCycle, ref DayCycleNightStartedEvent args)
|
||||
{
|
||||
}
|
||||
|
||||
private void OnMapInitDayCycle(Entity<CP14DayCycleComponent> dayCycle, ref MapInitEvent args)
|
||||
{
|
||||
@@ -88,22 +82,8 @@ public sealed partial class CP14DayCycleSystem : EntitySystem
|
||||
dayCycle.Comp.EntryStartTime = dayCycle.Comp.EntryEndTime;
|
||||
dayCycle.Comp.EntryEndTime += dayCycle.Comp.CurrentTimeEntry.Duration;
|
||||
|
||||
// TODO: Made with states,we might need an evening or something, and besides, it's too much hardcore
|
||||
if (dayCycle.Comp.IsNight && !dayCycle.Comp.CurrentTimeEntry.IsNight) // Day started
|
||||
{
|
||||
dayCycle.Comp.IsNight = false;
|
||||
|
||||
var ev = new DayCycleDayStartedEvent(dayCycle);
|
||||
RaiseLocalEvent(dayCycle, ref ev, true);
|
||||
}
|
||||
|
||||
if (!dayCycle.Comp.IsNight && dayCycle.Comp.CurrentTimeEntry.IsNight) // Night started
|
||||
{
|
||||
dayCycle.Comp.IsNight = true;
|
||||
|
||||
var ev = new DayCycleNightStartedEvent(dayCycle);
|
||||
RaiseLocalEvent(dayCycle, ref ev, true);
|
||||
}
|
||||
var ev = new DayCycleChangedEvent(dayCycle.Comp.CurrentTimeEntry);
|
||||
RaiseLocalEvent(dayCycle, ref ev, true);
|
||||
|
||||
Dirty(dayCycle);
|
||||
}
|
||||
@@ -113,28 +93,22 @@ public sealed partial class CP14DayCycleSystem : EntitySystem
|
||||
/// </summary>
|
||||
/// <param name="target">An entity being tested to see if it is in daylight</param>
|
||||
/// <param name="checkRoof">Checks if the tile covers the weather (the only "roof" factor at the moment)</param>
|
||||
/// <param name="isDaylight">daylight test result returned</param>
|
||||
public bool TryDaylightThere(EntityUid target, bool checkRoof)
|
||||
{
|
||||
if (!TryComp<TransformComponent>(target, out var xform))
|
||||
return false;
|
||||
|
||||
var xform = Transform(target);
|
||||
if (!TryComp<CP14DayCycleComponent>(xform.MapUid, out var dayCycle))
|
||||
return false;
|
||||
|
||||
if (checkRoof)
|
||||
{
|
||||
if (!TryComp<MapGridComponent>(xform.GridUid, out var mapGrid))
|
||||
return !dayCycle.IsNight;
|
||||
if (!checkRoof || !TryComp<MapGridComponent>(xform.GridUid, out var mapGrid))
|
||||
return dayCycle.CurrentPeriod == DayPeriod;
|
||||
|
||||
var tileRef = _maps.GetTileRef(xform.GridUid.Value, mapGrid, xform.Coordinates);
|
||||
var tileDef = (ContentTileDefinition) _tileDefManager[tileRef.Tile.TypeId];
|
||||
var tileRef = _maps.GetTileRef(xform.GridUid.Value, mapGrid, xform.Coordinates);
|
||||
var tileDef = (ContentTileDefinition) _tileDefManager[tileRef.Tile.TypeId];
|
||||
|
||||
if (!tileDef.Weather)
|
||||
return false;
|
||||
}
|
||||
if (!tileDef.Weather)
|
||||
return false;
|
||||
|
||||
return !dayCycle.IsNight;
|
||||
return dayCycle.CurrentPeriod == DayPeriod;
|
||||
}
|
||||
|
||||
private void SetAmbientColor(Entity<MapLightComponent> light, Color color)
|
||||
@@ -1,9 +1,11 @@
|
||||
using Content.Server.Administration;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Console;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle;
|
||||
namespace Content.Server._CP14.DayCycle.Commands;
|
||||
|
||||
[AdminCommand(AdminFlags.VarEdit)]
|
||||
public sealed class CP14AddTimeEntryCommand : LocalizedCommands
|
||||
@@ -13,7 +15,7 @@ public sealed class CP14AddTimeEntryCommand : LocalizedCommands
|
||||
|
||||
public override string Command => Name;
|
||||
public override string Description => "Allows you to add a new time entry to the map list";
|
||||
public override string Help => $"{Name} <mapUid> <color> <duration> <isNight>";
|
||||
public override string Help => $"{Name} <mapUid> <color> <duration> <periodId>";
|
||||
|
||||
public override void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||
{
|
||||
@@ -29,7 +31,9 @@ public sealed class CP14AddTimeEntryCommand : LocalizedCommands
|
||||
return;
|
||||
}
|
||||
|
||||
var entityManager = IoCManager.Resolve<EntityManager>();
|
||||
var entityManager = IoCManager.Resolve<IEntityManager>();
|
||||
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
|
||||
|
||||
var dayCycleSystem = entityManager.System<CP14DayCycleSystem>();
|
||||
var entity = entityManager.GetEntity(netEntity);
|
||||
|
||||
@@ -51,9 +55,9 @@ public sealed class CP14AddTimeEntryCommand : LocalizedCommands
|
||||
return;
|
||||
}
|
||||
|
||||
if (!bool.TryParse(args[3], out var isNight))
|
||||
if (!prototypeManager.TryIndex<CP14DayCyclePeriodPrototype>(args[3], out var prototype))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("parse-bool-fail", ("args", args[3])));
|
||||
shell.WriteError(Loc.GetString("parse-prototype-fail", ("args", args[3])));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -61,7 +65,7 @@ public sealed class CP14AddTimeEntryCommand : LocalizedCommands
|
||||
{
|
||||
Color = color,
|
||||
Duration = TimeSpan.FromSeconds(duration),
|
||||
IsNight = isNight
|
||||
Period = prototype.ID,
|
||||
};
|
||||
|
||||
dayCycleSystem.AddTimeEntry((entity, dayCycle), entry);
|
||||
@@ -72,7 +76,7 @@ public sealed class CP14AddTimeEntryCommand : LocalizedCommands
|
||||
return args.Length switch
|
||||
{
|
||||
1 => CompletionResult.FromOptions(CompletionHelper.Components<CP14DayCycleComponent>(args[0])),
|
||||
4 => CompletionResult.FromOptions(CompletionHelper.Booleans),
|
||||
4 => CompletionResult.FromOptions(CompletionHelper.PrototypeIDs<CP14DayCyclePeriodPrototype>()),
|
||||
_ => CompletionResult.Empty,
|
||||
};
|
||||
}
|
||||
@@ -2,8 +2,9 @@ using Content.Server.Administration;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Console;
|
||||
using CP14DayCycleComponent = Content.Shared._CP14.DayCycle.Components.CP14DayCycleComponent;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle;
|
||||
namespace Content.Server._CP14.DayCycle.Commands;
|
||||
|
||||
[AdminCommand(AdminFlags.VarEdit)]
|
||||
public sealed class CP14InitDayCycleCommand : LocalizedCommands
|
||||
@@ -2,8 +2,9 @@ using Content.Server.Administration;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Console;
|
||||
using CP14DayCycleComponent = Content.Shared._CP14.DayCycle.Components.CP14DayCycleComponent;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle;
|
||||
namespace Content.Server._CP14.DayCycle.Commands;
|
||||
|
||||
[AdminCommand(AdminFlags.VarEdit)]
|
||||
public sealed class CP14SetTimeEntryCommand : LocalizedCommands
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Server._CP14.DayCycle;
|
||||
using Content.Server._CP14.Farming.Components;
|
||||
using Content.Server.Destructible;
|
||||
using Content.Server.DoAfter;
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
using System.Linq;
|
||||
using Content.Server.GameTicking.Events;
|
||||
using Content.Shared._CP14.LockKey;
|
||||
using Content.Shared.Containers.ItemSlots;
|
||||
using Content.Shared._CP14.LockKey.Components;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Lock;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.GameTicking;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
using CP14KeyComponent = Content.Shared._CP14.LockKey.Components.CP14KeyComponent;
|
||||
using CP14LockComponent = Content.Shared._CP14.LockKey.Components.CP14LockComponent;
|
||||
|
||||
namespace Content.Server._CP14.LockKey;
|
||||
|
||||
@@ -16,9 +12,6 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly ItemSlotsSystem _itemSlots = default!;
|
||||
[Dependency] private readonly LockSystem _lock = default!;
|
||||
|
||||
private Dictionary<ProtoId<CP14LockCategoryPrototype>, List<int>> _roundKeyData = new();
|
||||
|
||||
@@ -28,7 +21,7 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<RoundStartingEvent>(OnRoundStart);
|
||||
SubscribeLocalEvent<RoundRestartCleanupEvent>(OnRoundEnd);
|
||||
|
||||
SubscribeLocalEvent<CP14LockComponent, MapInitEvent>(OnLockInit);
|
||||
SubscribeLocalEvent<CP14KeyComponent, MapInitEvent>(OnKeyInit);
|
||||
@@ -37,7 +30,7 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem
|
||||
}
|
||||
|
||||
#region Init
|
||||
private void OnRoundStart(RoundStartingEvent ev)
|
||||
private void OnRoundEnd(RoundRestartCleanupEvent ev)
|
||||
{
|
||||
_roundKeyData = new();
|
||||
}
|
||||
@@ -68,7 +61,7 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem
|
||||
if (key.Comp.LockShape == null)
|
||||
return;
|
||||
|
||||
var markup = Loc.GetString("cp-lock-examine-key", ("item", MetaData(key).EntityName));
|
||||
var markup = Loc.GetString("cp14-lock-examine-key", ("item", MetaData(key).EntityName));
|
||||
markup += " (";
|
||||
foreach (var item in key.Comp.LockShape)
|
||||
{
|
||||
|
||||
@@ -10,7 +10,6 @@ public partial class CP14MagicEnergySystem
|
||||
{
|
||||
SubscribeLocalEvent<CP14MagicEnergyDrawComponent, MapInitEvent>(OnDrawMapInit);
|
||||
SubscribeLocalEvent<CP14RandomAuraNodeComponent, MapInitEvent>(OnRandomRangeMapInit);
|
||||
|
||||
}
|
||||
|
||||
private void OnRandomRangeMapInit(Entity<CP14RandomAuraNodeComponent> random, ref MapInitEvent args)
|
||||
|
||||
@@ -1,35 +1,38 @@
|
||||
using Content.Server.Chat.Systems;
|
||||
using Content.Shared._CP14.Magic;
|
||||
using Content.Shared._CP14.Magic.Components;
|
||||
using Content.Shared._CP14.Magic.Events;
|
||||
using Content.Shared._CP14.MagicSpell;
|
||||
using Content.Shared._CP14.MagicSpell.Components;
|
||||
using Content.Shared._CP14.MagicSpell.Events;
|
||||
using Robust.Server.GameObjects;
|
||||
|
||||
namespace Content.Server._CP14.Magic;
|
||||
namespace Content.Server._CP14.MagicSpell;
|
||||
|
||||
public sealed partial class CP14MagicSystem : CP14SharedMagicSystem
|
||||
{
|
||||
[Dependency] private readonly ChatSystem _chat = default!;
|
||||
[Dependency] private readonly TransformSystem _transform = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<CP14MagicEffectVerbalAspectComponent, CP14VerbalAspectSpeechEvent>(OnSpellSpoken);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicEffectCastingVisualComponent, CP14StartCastMagicEffectEvent>(OnSpawnMagicVisualEffect);
|
||||
SubscribeLocalEvent<CP14MagicEffectCastingVisualComponent, CP14StopCastMagicEffectEvent>(OnDespawnMagicVisualEffect);
|
||||
SubscribeLocalEvent<CP14MagicEffectCastingVisualComponent, CP14EndCastMagicEffectEvent>(OnDespawnMagicVisualEffect);
|
||||
}
|
||||
|
||||
private void OnSpellSpoken(Entity<CP14MagicEffectVerbalAspectComponent> ent, ref CP14VerbalAspectSpeechEvent args)
|
||||
{
|
||||
if (args.Performer is not null && args.Speech is not null)
|
||||
_chat.TrySendInGameICMessage(args.Performer.Value, args.Speech, InGameICChatType.Speak, false);
|
||||
_chat.TrySendInGameICMessage(args.Performer.Value, args.Speech, InGameICChatType.Speak, true);
|
||||
}
|
||||
|
||||
private void OnSpawnMagicVisualEffect(Entity<CP14MagicEffectCastingVisualComponent> ent, ref CP14StartCastMagicEffectEvent args)
|
||||
{
|
||||
var vfx = SpawnAttachedTo(ent.Comp.Proto, Transform(args.Performer).Coordinates);
|
||||
_transform.SetParent(vfx, args.Performer);
|
||||
ent.Comp.SpawnedEntity = vfx;
|
||||
}
|
||||
|
||||
private void OnDespawnMagicVisualEffect(Entity<CP14MagicEffectCastingVisualComponent> ent, ref CP14StopCastMagicEffectEvent args)
|
||||
private void OnDespawnMagicVisualEffect(Entity<CP14MagicEffectCastingVisualComponent> ent, ref CP14EndCastMagicEffectEvent args)
|
||||
{
|
||||
QueueDel(ent.Comp.SpawnedEntity);
|
||||
ent.Comp.SpawnedEntity = null;
|
||||
@@ -1,10 +0,0 @@
|
||||
using Content.Shared.Damage;
|
||||
|
||||
namespace Content.Server._CP14.MeleeWeapon.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class CP14MeleeSelfDamageComponent : Component
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public DamageSpecifier DamageToSelf;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using Robust.Shared.Audio;
|
||||
|
||||
namespace Content.Server._CP14.PersonalSignature;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class CP14PersonalSignatureComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public SoundSpecifier? SignSound;
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Content.Server.Mind;
|
||||
using Content.Server.Paper;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Paper;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Server.Audio;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Player;
|
||||
|
||||
namespace Content.Server._CP14.PersonalSignature;
|
||||
|
||||
public sealed class CP14PersonalSignatureSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly AudioSystem _audio = default!;
|
||||
[Dependency] private readonly MindSystem _mind = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<PaperComponent, GetVerbsEvent<AlternativeVerb>>(OnGetVerb);
|
||||
}
|
||||
|
||||
private void OnGetVerb(Entity<PaperComponent> entity, ref GetVerbsEvent<AlternativeVerb> args)
|
||||
{
|
||||
if (!_mind.TryGetMind(args.User, out _, out var mind))
|
||||
return;
|
||||
|
||||
if (mind.CharacterName is null)
|
||||
return;
|
||||
|
||||
if (!CanSign(args.Using, out var signature))
|
||||
return;
|
||||
|
||||
if (HasSign(entity, mind.CharacterName))
|
||||
return;
|
||||
|
||||
args.Verbs.Add(new AlternativeVerb
|
||||
{
|
||||
Text = Loc.GetString("cp-sign-verb"),
|
||||
Act = () =>
|
||||
{
|
||||
Sign(entity, mind.CharacterName, signature.SignSound);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
private bool CanSign(EntityUid? item, [NotNullWhen(true)] out CP14PersonalSignatureComponent? personalSignature)
|
||||
{
|
||||
personalSignature = null;
|
||||
return item is not null && TryComp(item, out personalSignature);
|
||||
}
|
||||
|
||||
private bool HasSign(Entity<PaperComponent> entity, string sign)
|
||||
{
|
||||
foreach (var info in entity.Comp.StampedBy)
|
||||
{
|
||||
if (info.StampedName == sign)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void Sign(Entity<PaperComponent> target, string name, SoundSpecifier? sound)
|
||||
{
|
||||
var info = new StampDisplayInfo
|
||||
{
|
||||
StampedName = name,
|
||||
StampedColor = Color.Gray,
|
||||
};
|
||||
|
||||
if (sound is not null)
|
||||
_audio.PlayEntity(sound, Filter.Pvs(target), target, true);
|
||||
|
||||
target.Comp.StampedBy.Add(info);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._CP14.RoundSeed;
|
||||
@@ -28,17 +29,25 @@ public sealed class CP14RoundSeedSystem : EntitySystem
|
||||
ent.Comp.Seed = _random.Next(CP14RoundSeedComponent.MaxValue);
|
||||
}
|
||||
|
||||
[PublicAPI]
|
||||
public bool TryGetSeed([NotNullWhen(true)] out int? seed)
|
||||
private int SetupSeed()
|
||||
{
|
||||
return AddComp<CP14RoundSeedComponent>(Spawn(null, MapCoordinates.Nullspace)).Seed;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the round seed if assigned, otherwise assigns the round seed itself.
|
||||
/// </summary>
|
||||
/// <returns>seed of the round</returns>
|
||||
public int GetSeed()
|
||||
{
|
||||
seed = null;
|
||||
var query = EntityQuery<CP14RoundSeedComponent>();
|
||||
foreach (var comp in query)
|
||||
{
|
||||
seed = comp.Seed;
|
||||
return true;
|
||||
return comp.Seed;
|
||||
}
|
||||
|
||||
return false;
|
||||
var seed = SetupSeed();
|
||||
Log.Warning($"Missing RoundSeed. Seed set to {seed}");
|
||||
return seed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,21 +29,31 @@ public sealed class CP14ExpeditionSystem : EntitySystem
|
||||
/// </summary>
|
||||
public float ArrivalTime { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// If enabled then spawns players on an expedition ship.
|
||||
/// </summary>
|
||||
public bool Enabled { get; private set; }
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14StationExpeditionTargetComponent, StationPostInitEvent>(OnPostInitSetupExpeditionShip);
|
||||
|
||||
SubscribeLocalEvent<CP14StationExpeditionTargetComponent, FTLCompletedEvent>(OnArrivalsDocked);
|
||||
SubscribeLocalEvent<CP14StationExpeditionTargetComponent, FTLCompletedEvent>(OnExpeditionShipLanded);
|
||||
|
||||
ArrivalTime = _cfgManager.GetCVar(CCVars.CP14ExpeditionArrivalTime);
|
||||
_cfgManager.OnValueChanged(CCVars.CP14ExpeditionArrivalTime, time => ArrivalTime = time, true);
|
||||
}
|
||||
Enabled = _cfgManager.GetCVar(CCVars.CP14ExpeditionShip);
|
||||
|
||||
_cfgManager.OnValueChanged(CCVars.CP14ExpeditionArrivalTime, time => ArrivalTime = time, true);
|
||||
_cfgManager.OnValueChanged(CCVars.CP14ExpeditionShip, value => Enabled = value, true);
|
||||
}
|
||||
|
||||
private void OnPostInitSetupExpeditionShip(Entity<CP14StationExpeditionTargetComponent> station, ref StationPostInitEvent args)
|
||||
{
|
||||
if (!Enabled)
|
||||
return;
|
||||
|
||||
if (!Deleted(station.Comp.Shuttle))
|
||||
return;
|
||||
|
||||
@@ -76,7 +86,7 @@ public sealed class CP14ExpeditionSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
|
||||
private void OnArrivalsDocked(Entity<CP14StationExpeditionTargetComponent> ent, ref FTLCompletedEvent args)
|
||||
private void OnExpeditionShipLanded(Entity<CP14StationExpeditionTargetComponent> ent, ref FTLCompletedEvent args)
|
||||
{
|
||||
//Some announsement logic?
|
||||
}
|
||||
@@ -97,6 +107,9 @@ public sealed class CP14ExpeditionSystem : EntitySystem
|
||||
|
||||
public void HandlePlayerSpawning(PlayerSpawningEvent ev)
|
||||
{
|
||||
if (!Enabled)
|
||||
return;
|
||||
|
||||
if (ev.SpawnResult != null)
|
||||
return;
|
||||
|
||||
@@ -114,8 +127,10 @@ public sealed class CP14ExpeditionSystem : EntitySystem
|
||||
var possiblePositions = new List<EntityCoordinates>();
|
||||
while (points.MoveNext(out var uid, out var spawnPoint, out var xform))
|
||||
{
|
||||
if (ev.Job != null && spawnPoint.Job != ev.Job.Prototype)
|
||||
continue;
|
||||
|
||||
if (spawnPoint.SpawnType != SpawnPointType.LateJoin || xform.GridUid != gridUid)
|
||||
if (xform.GridUid != gridUid)
|
||||
continue;
|
||||
|
||||
possiblePositions.Add(xform.Coordinates);
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
using System.Numerics;
|
||||
using Content.Server._CP14.Alchemy;
|
||||
using Content.Server._CP14.MeleeWeapon;
|
||||
using Content.Server._CP14.MeleeWeapon.EntitySystems;
|
||||
using Content.Server.Popups;
|
||||
using Content.Shared._CP14.MeleeWeapon.EntitySystems;
|
||||
using Content.Shared._CP14.Skills;
|
||||
using Content.Shared._CP14.Skills.Components;
|
||||
using Content.Shared.Chemistry.Components;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Stunnable;
|
||||
using Content.Shared.Throwing;
|
||||
using Content.Shared.Weapons.Melee;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
42
Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs
Normal file
42
Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench;
|
||||
|
||||
namespace Content.Server._CP14.Workbench;
|
||||
|
||||
public sealed partial class CP14WorkbenchSystem
|
||||
{
|
||||
private void OnCraft(Entity<CP14WorkbenchComponent> entity, ref CP14WorkbenchUiCraftMessage args)
|
||||
{
|
||||
if (!entity.Comp.Recipes.Contains(args.Recipe))
|
||||
return;
|
||||
|
||||
if (!_proto.TryIndex(args.Recipe, out var prototype))
|
||||
return;
|
||||
|
||||
StartCraft(entity, args.Actor, prototype);
|
||||
}
|
||||
|
||||
private void UpdateUIRecipes(Entity<CP14WorkbenchComponent> entity)
|
||||
{
|
||||
var placedEntities = _lookup.GetEntitiesInRange(Transform(entity).Coordinates, WorkbenchRadius);
|
||||
|
||||
var recipes = new List<CP14WorkbenchUiRecipesEntry>();
|
||||
foreach (var recipeId in entity.Comp.Recipes)
|
||||
{
|
||||
var recipe = _proto.Index(recipeId);
|
||||
var entry = new CP14WorkbenchUiRecipesEntry(recipeId, CanCraftRecipe(recipe, placedEntities));
|
||||
|
||||
recipes.Add(entry);
|
||||
}
|
||||
|
||||
_userInterface.SetUiState(entity.Owner, CP14WorkbenchUiKey.Key, new CP14WorkbenchUiRecipesState(recipes));
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,41 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Server.DoAfter;
|
||||
using Content.Server.Popups;
|
||||
using Content.Server.Stack;
|
||||
using Content.Shared._CP14.Workbench;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Stacks;
|
||||
using Content.Shared.UserInterface;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Server.Audio;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.Workbench;
|
||||
|
||||
public sealed class CP14WorkbenchSystem : SharedCP14WorkbenchSystem
|
||||
public sealed partial class CP14WorkbenchSystem : SharedCP14WorkbenchSystem
|
||||
{
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly SharedStackSystem _stack = default!;
|
||||
[Dependency] private readonly AudioSystem _audio = default!;
|
||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||
[Dependency] private readonly DoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly StackSystem _stack = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly PopupSystem _popup = default!;
|
||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||
[Dependency] private readonly UserInterfaceSystem _userInterface = default!;
|
||||
|
||||
private EntityQuery<MetaDataComponent> _metaQuery;
|
||||
private EntityQuery<StackComponent> _stackQuery;
|
||||
|
||||
// Why not in component? Why?
|
||||
private const float WorkbenchRadius = 0.5f;
|
||||
|
||||
public override void Initialize()
|
||||
@@ -30,10 +45,18 @@ public sealed class CP14WorkbenchSystem : SharedCP14WorkbenchSystem
|
||||
_metaQuery = GetEntityQuery<MetaDataComponent>();
|
||||
_stackQuery = GetEntityQuery<StackComponent>();
|
||||
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, BeforeActivatableUIOpenEvent>(OnBeforeUIOpen);
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, CP14WorkbenchUiCraftMessage>(OnCraft);
|
||||
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, GetVerbsEvent<InteractionVerb>>(OnInteractionVerb);
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, CP14CraftDoAfterEvent>(OnCraftFinished);
|
||||
}
|
||||
|
||||
private void OnBeforeUIOpen(Entity<CP14WorkbenchComponent> ent, ref BeforeActivatableUIOpenEvent args)
|
||||
{
|
||||
UpdateUIRecipes(ent);
|
||||
}
|
||||
|
||||
private void OnInteractionVerb(Entity<CP14WorkbenchComponent> ent, ref GetVerbsEvent<InteractionVerb> args)
|
||||
{
|
||||
if (!args.CanAccess || !args.CanInteract || args.Hands is null)
|
||||
@@ -64,6 +87,7 @@ public sealed class CP14WorkbenchSystem : SharedCP14WorkbenchSystem
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Replace Del to QueueDel when it's will be works with events
|
||||
private void OnCraftFinished(Entity<CP14WorkbenchComponent> ent, ref CP14CraftDoAfterEvent args)
|
||||
{
|
||||
if (args.Cancelled || args.Handled)
|
||||
@@ -89,7 +113,7 @@ public sealed class CP14WorkbenchSystem : SharedCP14WorkbenchSystem
|
||||
if (placedProto != null && placedProto == requiredIngredient.Key && requiredCount > 0)
|
||||
{
|
||||
requiredCount--;
|
||||
QueueDel(placedEntity);
|
||||
Del(placedEntity);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -106,14 +130,18 @@ public sealed class CP14WorkbenchSystem : SharedCP14WorkbenchSystem
|
||||
continue;
|
||||
|
||||
var count = (int)MathF.Min(requiredCount, stack.Count);
|
||||
_stack.SetCount(placedEntity, stack.Count - count, stack);
|
||||
|
||||
if (stack.Count - count <= 0)
|
||||
Del(placedEntity);
|
||||
else
|
||||
_stack.SetCount(placedEntity, stack.Count - count, stack);
|
||||
|
||||
requiredCount -= count;
|
||||
}
|
||||
}
|
||||
|
||||
Spawn(_proto.Index(args.Recipe).Result, Transform(ent).Coordinates);
|
||||
|
||||
UpdateUIRecipes(ent);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,11 +11,17 @@ namespace Content.Shared.CCVar
|
||||
public sealed class CCVars : CVars
|
||||
{
|
||||
#region CP14
|
||||
|
||||
/// <summary>
|
||||
/// how long does it take to fly an expedition ship to an expedition point?
|
||||
/// </summary>
|
||||
public static readonly CVarDef<float> CP14ExpeditionArrivalTime =
|
||||
CVarDef.Create("cp14.arrival_time", 60f, CVar.SERVERONLY);
|
||||
|
||||
CVarDef.Create("cp14.arrival_time", 180f, CVar.SERVERONLY);
|
||||
|
||||
/// <summary>
|
||||
/// is the expedition ship's system enabled?
|
||||
/// </summary>
|
||||
public static readonly CVarDef<bool> CP14ExpeditionShip =
|
||||
CVarDef.Create("cp14.arrivals_ship", true, CVar.SERVERONLY);
|
||||
#endregion
|
||||
/*
|
||||
* Server
|
||||
@@ -511,7 +517,7 @@ namespace Content.Shared.CCVar
|
||||
/// The dataset prototype to use when selecting a random tip.
|
||||
/// </summary>
|
||||
public static readonly CVarDef<string> TipsDataset =
|
||||
CVarDef.Create("tips.dataset", "Tips");
|
||||
CVarDef.Create("tips.dataset", "CP14Tips");
|
||||
|
||||
/// <summary>
|
||||
/// The number of seconds between each tip being displayed when the round is not actively going
|
||||
@@ -1473,7 +1479,7 @@ namespace Content.Shared.CCVar
|
||||
/// Whether the arrivals shuttle is enabled.
|
||||
/// </summary>
|
||||
public static readonly CVarDef<bool> ArrivalsShuttles =
|
||||
CVarDef.Create("shuttle.arrivals", true, CVar.SERVERONLY);
|
||||
CVarDef.Create("shuttle.arrivals", false, CVar.SERVERONLY); //CP14 arrivals disabled
|
||||
|
||||
/// <summary>
|
||||
/// The map to use for the arrivals station.
|
||||
@@ -1600,7 +1606,7 @@ namespace Content.Shared.CCVar
|
||||
/// Whether the emergency shuttle is enabled or should the round just end.
|
||||
/// </summary>
|
||||
public static readonly CVarDef<bool> EmergencyShuttleEnabled =
|
||||
CVarDef.Create("shuttle.emergency", true, CVar.SERVERONLY);
|
||||
CVarDef.Create("shuttle.emergency", false, CVar.SERVERONLY); //CP14 Emergency disabled
|
||||
|
||||
/// <summary>
|
||||
/// The percentage of time passed from the initial call to when the shuttle can no longer be recalled.
|
||||
|
||||
@@ -26,9 +26,8 @@ namespace Content.Shared.Localizations
|
||||
public void Initialize()
|
||||
{
|
||||
var culture = new CultureInfo(Culture);
|
||||
// Uncomment for Ru localization
|
||||
_loc.LoadCulture(culture);
|
||||
|
||||
// Uncomment for Ru localization
|
||||
var fallbackCulture = new CultureInfo("en-US");
|
||||
_loc.LoadCulture(fallbackCulture);
|
||||
_loc.SetFallbackCluture(fallbackCulture);
|
||||
|
||||
@@ -109,17 +109,14 @@ public sealed class LockSystem : EntitySystem
|
||||
//CrystallPunk Lock System Adapt Start
|
||||
if (lockComp.LockSlotId != null && _lockCp14.TryGetLockFromSlot(uid, out var lockEnt))
|
||||
{
|
||||
args.PushText(Loc.GetString("cp-lock-examine-lock-slot", ("lock", MetaData(lockEnt.Value).EntityName)));
|
||||
args.PushText(Loc.GetString("cp14-lock-examine-lock-slot", ("lock", MetaData(lockEnt.Value).EntityName)));
|
||||
|
||||
args.PushMarkup(Loc.GetString(lockComp.Locked
|
||||
? "lock-comp-on-examined-is-locked"
|
||||
: "lock-comp-on-examined-is-unlocked",
|
||||
("entityName", Identity.Name(uid, EntityManager))));
|
||||
if (lockEnt.Value.Comp.LockpickeddFailMarkup)
|
||||
args.PushMarkup(Loc.GetString("cp-lock-examine-lock-lockpicked", ("lock", MetaData(lockEnt.Value).EntityName)));
|
||||
} else
|
||||
{
|
||||
args.PushText(Loc.GetString("cp-lock-examine-lock-null"));
|
||||
args.PushMarkup(Loc.GetString("cp14-lock-examine-lock-lockpicked", ("lock", MetaData(lockEnt.Value).EntityName)));
|
||||
}
|
||||
//CrystallPunk Lock System Adapt End
|
||||
}
|
||||
@@ -158,7 +155,7 @@ public sealed class LockSystem : EntitySystem
|
||||
|
||||
_sharedPopupSystem.PopupClient(Loc.GetString("lock-comp-do-lock-success",
|
||||
("entityName", Identity.Name(uid, EntityManager))), uid, user);
|
||||
_audio.PlayPredicted(lockComp.LockSound, uid, user);
|
||||
_audio.PlayPvs(lockComp.LockSound, uid);
|
||||
|
||||
lockComp.Locked = true;
|
||||
_appearanceSystem.SetData(uid, LockVisuals.Locked, true);
|
||||
@@ -189,7 +186,7 @@ public sealed class LockSystem : EntitySystem
|
||||
("entityName", Identity.Name(uid, EntityManager))), uid, user.Value);
|
||||
}
|
||||
|
||||
_audio.PlayPredicted(lockComp.UnlockSound, uid, user);
|
||||
_audio.PlayPvs(lockComp.UnlockSound, uid);
|
||||
|
||||
lockComp.Locked = false;
|
||||
_appearanceSystem.SetData(uid, LockVisuals.Locked, false);
|
||||
@@ -309,7 +306,7 @@ public sealed class LockSystem : EntitySystem
|
||||
if (!component.Locked || !component.BreakOnEmag)
|
||||
return;
|
||||
|
||||
_audio.PlayPredicted(component.UnlockSound, uid, args.UserUid);
|
||||
_audio.PlayPvs(component.UnlockSound, uid);
|
||||
|
||||
component.Locked = false;
|
||||
_appearanceSystem.SetData(uid, LockVisuals.Locked, false);
|
||||
|
||||
10
Content.Shared/_CP14/DayCycle/CP14DayCyclePeriodPrototype.cs
Normal file
10
Content.Shared/_CP14/DayCycle/CP14DayCyclePeriodPrototype.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle;
|
||||
|
||||
[Prototype("CP14DayCyclePeriod")]
|
||||
public sealed class CP14DayCyclePeriodPrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; } = string.Empty;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
namespace Content.Shared._CP14.DayCycle;
|
||||
|
||||
public abstract class CP14SharedDayCycleSystem : EntitySystem;
|
||||
@@ -1,16 +1,17 @@
|
||||
using System.Numerics;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle;
|
||||
namespace Content.Shared._CP14.DayCycle.Components;
|
||||
|
||||
/// <summary>
|
||||
/// if added to the map, renders cloud shadows on the map
|
||||
/// If added to the map, renders cloud shadows on the map
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
public sealed partial class CP14CloudShadowsComponent : Component
|
||||
{
|
||||
[DataField, AutoNetworkedField]
|
||||
public Vector2 CloudSpeed = new Vector2(0.5f, 0f);
|
||||
public Vector2 CloudSpeed = new(0.5f, 0f);
|
||||
|
||||
[DataField]
|
||||
public float MaxSpeed = 1.5f;
|
||||
@@ -22,5 +23,5 @@ public sealed partial class CP14CloudShadowsComponent : Component
|
||||
public float Scale = 2.5f;
|
||||
|
||||
[DataField]
|
||||
public string ParallaxPath = "/Textures/_CP14/Parallaxes/Shadows.png";
|
||||
public ResPath ParallaxPath = new("/Textures/_CP14/Parallaxes/Shadows.png");
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle;
|
||||
namespace Content.Shared._CP14.DayCycle.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Stores all the necessary data for the day and night cycle system to work
|
||||
/// Stores all the necessary data for the day and night cycle system to work.
|
||||
/// </summary>
|
||||
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(CP14DayCycleSystem))]
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(CP14SharedDayCycleSystem))]
|
||||
public sealed partial class CP14DayCycleComponent : Component
|
||||
{
|
||||
[ViewVariables]
|
||||
@@ -25,12 +25,12 @@ public sealed partial class CP14DayCycleComponent : Component
|
||||
[ViewVariables]
|
||||
public Color EndColor => NextCurrentTimeEntry.Color;
|
||||
|
||||
[ViewVariables]
|
||||
public ProtoId<CP14DayCyclePeriodPrototype> CurrentPeriod => CurrentTimeEntry.Period;
|
||||
|
||||
[DataField(required: true), ViewVariables, AutoNetworkedField]
|
||||
public List<DayCycleEntry> TimeEntries = new();
|
||||
|
||||
[DataField, ViewVariables, AutoNetworkedField]
|
||||
public bool IsNight; // TODO: Rewrite this shit
|
||||
|
||||
[DataField, ViewVariables, AutoNetworkedField]
|
||||
public int CurrentTimeEntryIndex;
|
||||
|
||||
@@ -57,17 +57,11 @@ public readonly partial record struct DayCycleEntry()
|
||||
public TimeSpan Duration { get; init; } = TimeSpan.FromSeconds(60);
|
||||
|
||||
[DataField]
|
||||
public bool IsNight { get; init; } = false;
|
||||
public ProtoId<CP14DayCyclePeriodPrototype> Period { get; init; } = "Day";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event raised on map entity, wen night is started
|
||||
/// Event raised on map entity, wen day cycle changed.
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public readonly record struct DayCycleNightStartedEvent(EntityUid Map);
|
||||
|
||||
/// <summary>
|
||||
/// Event raised on map entity, wen night is started
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public readonly record struct DayCycleDayStartedEvent(EntityUid Map);
|
||||
public readonly record struct DayCycleChangedEvent(DayCycleEntry Entry);
|
||||
@@ -28,7 +28,6 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
|
||||
private const int DepthComplexity = 2; //TODO - fix this constant duplication from KeyholeGenerationSystem.cs
|
||||
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -54,7 +53,6 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
if (!TryComp<StorageComponent>(keyring, out var storageComp))
|
||||
return;
|
||||
|
||||
|
||||
if (TryComp<LockComponent>(args.Target, out var lockComp) &&
|
||||
TryGetLockFromSlot(args.Target.Value, out var lockEnt))
|
||||
{
|
||||
@@ -71,7 +69,7 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-keyring-use-nofit"), args.Target.Value, args.User);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-keyring-use-nofit"), args.Target.Value, args.User);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,10 +115,11 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
{
|
||||
TryHackDoorElement(user, target, lockpick, lockItemComp, lockComp, height);
|
||||
},
|
||||
Text = Loc.GetString("cp-lock-verb-lockpick-use-text") + $" {height}",
|
||||
Message = Loc.GetString("cp-lock-verb-lockpick-use-message"),
|
||||
Text = Loc.GetString("cp14-lock-verb-lockpick-use-text") + $" {height}",
|
||||
Message = Loc.GetString("cp14-lock-verb-lockpick-use-message"),
|
||||
Category = VerbCategory.Lockpick,
|
||||
Priority = height,
|
||||
CloseMenu = false,
|
||||
};
|
||||
|
||||
args.Verbs.Add(verb);
|
||||
@@ -141,19 +140,19 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
if (lockComp.Locked)
|
||||
{
|
||||
_lock.TryUnlock(target, user, lockComp);
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-unlock-lock", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-unlock-lock", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
lockEnt.LockpickStatus = 0;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_lock.TryLock(target, user, lockComp);
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-lock-lock", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-lock-lock", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
lockEnt.LockpickStatus = 0;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-lockpick-success"), target, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-lockpick-success"), target, user);
|
||||
return true;
|
||||
}
|
||||
else //Fail
|
||||
@@ -164,16 +163,16 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
lockpick.Comp.Health--;
|
||||
if (lockpick.Comp.Health > 0)
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-lockpick-failed-damage", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-lockpick-failed-damage", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
} else
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-lockpick-failed-break", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-lockpick-failed-break", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
QueueDel(lockpick);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-lockpick-failed", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-lockpick-failed", ("lock", MetaData(lockEnt.Owner).EntityName)), target, user);
|
||||
}
|
||||
lockEnt.LockpickeddFailMarkup = true;
|
||||
lockEnt.LockpickStatus = 0;
|
||||
@@ -205,8 +204,8 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
TryUseKeyOnLock(user, target, key, new Entity<CP14LockComponent>(target, lockItemComp));
|
||||
},
|
||||
IconEntity = GetNetEntity(key),
|
||||
Text = Loc.GetString(lockComp.Locked ? "cp-lock-verb-use-key-text-open" : "cp-lock-verb-use-key-text-close", ("item", MetaData(args.Target).EntityName)),
|
||||
Message = Loc.GetString("cp-lock-verb-use-key-message", ("item", MetaData(args.Target).EntityName))
|
||||
Text = Loc.GetString(lockComp.Locked ? "cp14-lock-verb-use-key-text-open" : "cp14-lock-verb-use-key-text-close", ("item", MetaData(args.Target).EntityName)),
|
||||
Message = Loc.GetString("cp14-lock-verb-use-key-message", ("item", MetaData(args.Target).EntityName)),
|
||||
};
|
||||
|
||||
args.Verbs.Add(verb);
|
||||
@@ -220,14 +219,10 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
if (args.Container.ID != lockSlot.Comp.LockSlotId)
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14LockComponent>(args.EntityUid, out var lockComp))
|
||||
{
|
||||
args.Cancel();
|
||||
if (TryComp<CP14LockComponent>(args.EntityUid, out var lockComp))
|
||||
return;
|
||||
}
|
||||
|
||||
if (lockComp == null)
|
||||
return;
|
||||
args.Cancel();
|
||||
|
||||
//if (lockComp.Locked)
|
||||
//{
|
||||
@@ -309,18 +304,18 @@ public sealed class SharedCP14LockKeySystem : EntitySystem
|
||||
if (lockComp.Locked)
|
||||
{
|
||||
if(_lock.TryUnlock(target, user))
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-unlock-lock", ("lock", MetaData(lockEnt).EntityName)), lockEnt, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-unlock-lock", ("lock", MetaData(lockEnt).EntityName)), lockEnt, user);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_lock.TryLock(target, user))
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-lock-lock", ("lock", MetaData(lockEnt).EntityName)), lockEnt, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-lock-lock", ("lock", MetaData(lockEnt).EntityName)), lockEnt, user);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp-lock-key-use-nofit"), lockEnt, user);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-lock-key-use-nofit"), lockEnt, user);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
using Content.Shared._CP14.Magic.Components.Spells;
|
||||
using Content.Shared._CP14.Magic.Events;
|
||||
using Content.Shared.EntityEffects;
|
||||
|
||||
namespace Content.Shared._CP14.Magic;
|
||||
|
||||
public partial class CP14SharedMagicSystem
|
||||
{
|
||||
private void InitializeSpells()
|
||||
{
|
||||
// Instants
|
||||
SubscribeLocalEvent<CP14DelayedSpawnEntitiesSpellComponent, CP14DelayedInstantActionDoAfterEvent>(OnCastEntitiesSpawn);
|
||||
SubscribeLocalEvent<CP14DelayedSelfEntityEffectSpellComponent, CP14DelayedInstantActionDoAfterEvent>(OnCastSelfEntityEffects);
|
||||
//Entity Target
|
||||
SubscribeLocalEvent<CP14DelayedApplyEntityEffectsSpellComponent, CP14DelayedEntityTargetActionDoAfterEvent>(OnCastApplyEntityEffects);
|
||||
//World Target
|
||||
SubscribeLocalEvent<CP14DelayedProjectileSpellComponent, CP14DelayedWorldTargetActionDoAfterEvent>(OnCastProjectileSpell);
|
||||
SubscribeLocalEvent<CP14DelayedSpawnOnWorldTargetSpellComponent, CP14DelayedWorldTargetActionDoAfterEvent>(OnCastSpawnOnPoint);
|
||||
}
|
||||
|
||||
//TODO: Fuck,there's a lot of code repetition here that needs to be squeezed together somehow. Event calls, checks, and all this stuff
|
||||
private void OnCastEntitiesSpawn(Entity<CP14DelayedSpawnEntitiesSpellComponent> spell, ref CP14DelayedInstantActionDoAfterEvent args)
|
||||
{
|
||||
var stopEv = new CP14StopCastMagicEffectEvent();
|
||||
RaiseLocalEvent(spell, ref stopEv);
|
||||
|
||||
if (args.Cancelled || args.Handled || !_net.IsServer)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
foreach (var spawn in spell.Comp.Spawns)
|
||||
{
|
||||
SpawnAtPosition(spawn, Transform(args.User).Coordinates);
|
||||
}
|
||||
|
||||
var ev = new CP14AfterCastMagicEffectEvent {Performer = args.User};
|
||||
RaiseLocalEvent(spell, ref ev);
|
||||
}
|
||||
|
||||
private void OnCastSelfEntityEffects(Entity<CP14DelayedSelfEntityEffectSpellComponent> spell, ref CP14DelayedInstantActionDoAfterEvent args)
|
||||
{
|
||||
var stopEv = new CP14StopCastMagicEffectEvent();
|
||||
RaiseLocalEvent(spell, ref stopEv);
|
||||
|
||||
if (args.Cancelled || args.Handled)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
foreach (var effect in spell.Comp.Effects)
|
||||
{
|
||||
effect.Effect(new EntityEffectBaseArgs(args.User, EntityManager));
|
||||
}
|
||||
|
||||
var ev = new CP14AfterCastMagicEffectEvent {Performer = args.User};
|
||||
RaiseLocalEvent(spell, ref ev);
|
||||
}
|
||||
|
||||
private void OnCastApplyEntityEffects(Entity<CP14DelayedApplyEntityEffectsSpellComponent> spell, ref CP14DelayedEntityTargetActionDoAfterEvent args)
|
||||
{
|
||||
var stopEv = new CP14StopCastMagicEffectEvent();
|
||||
RaiseLocalEvent(spell, ref stopEv);
|
||||
|
||||
if (args.Cancelled || args.Handled || args.Target == null)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
foreach (var effect in spell.Comp.Effects)
|
||||
{
|
||||
effect.Effect(new EntityEffectBaseArgs(args.Target.Value, EntityManager));
|
||||
}
|
||||
|
||||
var ev = new CP14AfterCastMagicEffectEvent {Performer = args.User};
|
||||
RaiseLocalEvent(spell, ref ev);
|
||||
}
|
||||
|
||||
private void OnCastProjectileSpell(Entity<CP14DelayedProjectileSpellComponent> spell, ref CP14DelayedWorldTargetActionDoAfterEvent args)
|
||||
{
|
||||
var stopEv = new CP14StopCastMagicEffectEvent();
|
||||
RaiseLocalEvent(spell, ref stopEv);
|
||||
|
||||
if (args.Cancelled || args.Handled || !_net.IsServer)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
var xform = Transform(args.User);
|
||||
var fromCoords = xform.Coordinates;
|
||||
var toCoords = GetCoordinates(args.Target);
|
||||
var userVelocity = _physics.GetMapLinearVelocity(args.User);
|
||||
|
||||
// If applicable, this ensures the projectile is parented to grid on spawn, instead of the map.
|
||||
var fromMap = fromCoords.ToMap(EntityManager, _transform);
|
||||
var spawnCoords = _mapManager.TryFindGridAt(fromMap, out var gridUid, out _)
|
||||
? fromCoords.WithEntityId(gridUid, EntityManager)
|
||||
: new(_mapManager.GetMapEntityId(fromMap.MapId), fromMap.Position);
|
||||
|
||||
var ent = Spawn(spell.Comp.Prototype, spawnCoords);
|
||||
var direction = toCoords.ToMapPos(EntityManager, _transform) -
|
||||
spawnCoords.ToMapPos(EntityManager, _transform);
|
||||
_gunSystem.ShootProjectile(ent, direction, userVelocity, args.User, args.User);
|
||||
|
||||
var ev = new CP14AfterCastMagicEffectEvent {Performer = args.User};
|
||||
RaiseLocalEvent(spell, ref ev);
|
||||
}
|
||||
|
||||
private void OnCastSpawnOnPoint(Entity<CP14DelayedSpawnOnWorldTargetSpellComponent> spell, ref CP14DelayedWorldTargetActionDoAfterEvent args)
|
||||
{
|
||||
var stopEv = new CP14StopCastMagicEffectEvent();
|
||||
RaiseLocalEvent(spell, ref stopEv);
|
||||
|
||||
if (args.Cancelled || args.Handled || !_net.IsServer)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
var xform = Transform(args.User);
|
||||
var toCoords = GetCoordinates(args.Target);
|
||||
|
||||
foreach (var spawn in spell.Comp.Spawns)
|
||||
{
|
||||
SpawnAtPosition(spawn, toCoords);
|
||||
}
|
||||
|
||||
var ev = new CP14AfterCastMagicEffectEvent {Performer = args.User};
|
||||
RaiseLocalEvent(spell, ref ev);
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
using Content.Shared.FixedPoint;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Restricts the use of this action, by spending mana or user requirements.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicSystem))]
|
||||
public sealed partial class CP14MagicEffectComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public FixedPoint2 ManaCost = 0f;
|
||||
|
||||
[DataField]
|
||||
public bool Safe = false;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using Content.Shared.EntityEffects;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Components.Spells;
|
||||
|
||||
/// <summary>
|
||||
/// Stores a list of effects for delayed actions.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicSystem))]
|
||||
public sealed partial class CP14DelayedApplyEntityEffectsSpellComponent : Component
|
||||
{
|
||||
[DataField(required: true, serverOnly: true)]
|
||||
public List<EntityEffect> Effects = new();
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Components.Spells;
|
||||
|
||||
/// <summary>
|
||||
/// Stores a list of effects for delayed actions.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicSystem))]
|
||||
public sealed partial class CP14DelayedProjectileSpellComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// What entity should be spawned.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public EntProtoId Prototype;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using Content.Shared.EntityEffects;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Components.Spells;
|
||||
|
||||
/// <summary>
|
||||
/// Stores a list of effects for delayed actions.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicSystem))]
|
||||
public sealed partial class CP14DelayedSelfEntityEffectSpellComponent : Component
|
||||
{
|
||||
[DataField(required: true, serverOnly: true)]
|
||||
public List<EntityEffect> Effects = new();
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Components.Spells;
|
||||
|
||||
/// <summary>
|
||||
/// Stores a list of effects for delayed actions.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicSystem))]
|
||||
public sealed partial class CP14DelayedSpawnEntitiesSpellComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// What entities should be spawned.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public HashSet<EntProtoId> Spawns = new();
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Components.Spells;
|
||||
|
||||
/// <summary>
|
||||
/// Stores a list of effects for delayed actions.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicSystem))]
|
||||
public sealed partial class CP14DelayedSpawnOnWorldTargetSpellComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// What entities should be spawned.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public HashSet<EntProtoId> Spawns = new();
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
namespace Content.Shared._CP14.MagicAttuning;
|
||||
|
||||
/// <summary>
|
||||
/// Reflects the fact that this subject can be focused on (Magical attune as a mechanic from DnD.)
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicAttuningSystem))]
|
||||
public sealed partial class CP14MagicAttuningItemComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// how long it takes to focus on that object
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan FocusTime = TimeSpan.FromSeconds(5f);
|
||||
|
||||
public Entity<CP14MagicAttuningMindComponent>? Link = null;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
namespace Content.Shared._CP14.MagicAttuning;
|
||||
|
||||
/// <summary>
|
||||
/// A mind that can focus on objects
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicAttuningSystem))]
|
||||
public sealed partial class CP14MagicAttuningMindComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public int MaxAttuning = 3;
|
||||
/// <summary>
|
||||
/// The entities that this being is focused on
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<EntityUid> AttunedTo = new();
|
||||
|
||||
/// <summary>
|
||||
/// cheat: if added to an entity with MindContainer, automatically copied to the mind, removing it from the body. This is to make it easy to add the component to prototype creatures.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool AutoCopyToMind = false;
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Mind.Components;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Verbs;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.MagicAttuning;
|
||||
|
||||
/// <summary>
|
||||
/// This system controls the customization to magic items by the players.
|
||||
/// </summary>
|
||||
public sealed partial class CP14SharedMagicAttuningSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14MagicAttuningItemComponent, GetVerbsEvent<InteractionVerb>>(OnInteractionVerb);
|
||||
SubscribeLocalEvent<CP14MagicAttuningMindComponent, CP14MagicAttuneDoAfterEvent>(OnAttuneDoAfter);
|
||||
SubscribeLocalEvent<CP14MagicAttuningMindComponent, MindAddedMessage>(OnMindAdded);
|
||||
}
|
||||
|
||||
private void OnMindAdded(Entity<CP14MagicAttuningMindComponent> ent, ref MindAddedMessage args)
|
||||
{
|
||||
if (!ent.Comp.AutoCopyToMind)
|
||||
return;
|
||||
|
||||
if (HasComp<MindComponent>(ent))
|
||||
return;
|
||||
|
||||
if (!_mind.TryGetMind(ent, out var mindId, out var mind))
|
||||
return;
|
||||
|
||||
if (!HasComp<CP14MagicAttuningMindComponent>(mindId))
|
||||
{
|
||||
var attuneMind = AddComp<CP14MagicAttuningMindComponent>(mindId);
|
||||
attuneMind.MaxAttuning = ent.Comp.MaxAttuning;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsAttunedTo(EntityUid mind, EntityUid item)
|
||||
{
|
||||
if (!TryComp<CP14MagicAttuningItemComponent>(item, out var attuningItem))
|
||||
return false;
|
||||
|
||||
if (!TryComp<CP14MagicAttuningMindComponent>(mind, out var attuningMind))
|
||||
return false;
|
||||
|
||||
return attuningMind.AttunedTo.Contains(item);
|
||||
}
|
||||
|
||||
private void OnInteractionVerb(Entity<CP14MagicAttuningItemComponent> attuningItem, ref GetVerbsEvent<InteractionVerb> args)
|
||||
{
|
||||
if (!args.CanAccess || !args.CanInteract)
|
||||
return;
|
||||
|
||||
if (!_mind.TryGetMind(args.User, out var mindId, out var mind))
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14MagicAttuningMindComponent>(mindId, out var attumingMind))
|
||||
return;
|
||||
|
||||
var user = args.User;
|
||||
if (attumingMind.AttunedTo.Contains(args.Target))
|
||||
{
|
||||
args.Verbs.Add(new()
|
||||
{
|
||||
Act = () =>
|
||||
{
|
||||
RemoveAttune((mindId, attumingMind), attuningItem);
|
||||
},
|
||||
Text = Loc.GetString("cp14-magic-deattuning-verb-text"),
|
||||
Message = Loc.GetString("cp14-magic-attuning-verb-message"),
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Verbs.Add(new()
|
||||
{
|
||||
Act = () =>
|
||||
{
|
||||
TryStartAttune(user, attuningItem);
|
||||
},
|
||||
Text = Loc.GetString("cp14-magic-attuning-verb-text"),
|
||||
Message = Loc.GetString("cp14-magic-attuning-verb-message"),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public bool TryStartAttune(EntityUid user, Entity<CP14MagicAttuningItemComponent> item)
|
||||
{
|
||||
if (!_mind.TryGetMind(user, out var mindId, out var mind))
|
||||
return false;
|
||||
|
||||
if (!TryComp<CP14MagicAttuningMindComponent>(mindId, out var attuningMind))
|
||||
return false;
|
||||
|
||||
if (attuningMind.MaxAttuning <= 0)
|
||||
return false;
|
||||
|
||||
//if there's an overabundance of ties, we report that the oldest one is torn.
|
||||
if (attuningMind.AttunedTo.Count >= attuningMind.MaxAttuning)
|
||||
{
|
||||
var oldestAttune = attuningMind.AttunedTo[0];
|
||||
_popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot", ("item", MetaData(oldestAttune).EntityName)), user, user);
|
||||
}
|
||||
|
||||
//we notify the current owner of the item that someone is cutting ties.
|
||||
if (item.Comp.Link is not null &&
|
||||
item.Comp.Link.Value.Owner != mindId &&
|
||||
TryComp<MindComponent>(item.Comp.Link.Value.Owner, out var ownerMind) &&
|
||||
ownerMind.OwnedEntity is not null)
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot", ("item", MetaData(item).EntityName)), ownerMind.OwnedEntity.Value, ownerMind.OwnedEntity.Value);
|
||||
}
|
||||
|
||||
var doAfterArgs = new DoAfterArgs(EntityManager,
|
||||
user,
|
||||
item.Comp.FocusTime,
|
||||
new CP14MagicAttuneDoAfterEvent(),
|
||||
mindId,
|
||||
item)
|
||||
{
|
||||
BreakOnDamage = true,
|
||||
BreakOnMove = true,
|
||||
DistanceThreshold = 2f,
|
||||
BlockDuplicate = true,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterArgs);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void OnAttuneDoAfter(Entity<CP14MagicAttuningMindComponent> ent, ref CP14MagicAttuneDoAfterEvent args)
|
||||
{
|
||||
if (args.Cancelled || args.Handled || args.Target is null)
|
||||
return;
|
||||
|
||||
if (ent.Comp.AttunedTo.Count >= ent.Comp.MaxAttuning)
|
||||
{
|
||||
var oldestAttune = ent.Comp.AttunedTo[0];
|
||||
RemoveAttune(ent, oldestAttune);
|
||||
}
|
||||
|
||||
AddAttune(ent, args.Target.Value);
|
||||
}
|
||||
|
||||
private void RemoveAttune(Entity<CP14MagicAttuningMindComponent> attuningMind, EntityUid item)
|
||||
{
|
||||
if (!attuningMind.Comp.AttunedTo.Contains(item))
|
||||
return;
|
||||
|
||||
attuningMind.Comp.AttunedTo.Remove(item);
|
||||
|
||||
if (!TryComp<CP14MagicAttuningItemComponent>(item, out var attuningItem))
|
||||
return;
|
||||
|
||||
if (!TryComp<MindComponent>(attuningMind, out var mind))
|
||||
return;
|
||||
|
||||
attuningItem.Link = null;
|
||||
|
||||
var ev = new RemovedAttuneFromMindEvent(attuningMind, mind.OwnedEntity, item);
|
||||
RaiseLocalEvent(attuningMind, ev);
|
||||
RaiseLocalEvent(item, ev);
|
||||
|
||||
if (mind.OwnedEntity is not null)
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot-end", ("item", MetaData(item).EntityName)), mind.OwnedEntity.Value, mind.OwnedEntity.Value);
|
||||
}
|
||||
}
|
||||
|
||||
private void AddAttune(Entity<CP14MagicAttuningMindComponent> attuningMind, EntityUid item)
|
||||
{
|
||||
if (attuningMind.Comp.AttunedTo.Contains(item))
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14MagicAttuningItemComponent>(item, out var attuningItem))
|
||||
return;
|
||||
|
||||
if (!TryComp<MindComponent>(attuningMind, out var mind))
|
||||
return;
|
||||
|
||||
if (attuningItem.Link is not null)
|
||||
RemoveAttune(attuningItem.Link.Value, item);
|
||||
|
||||
attuningMind.Comp.AttunedTo.Add(item);
|
||||
attuningItem.Link = attuningMind;
|
||||
|
||||
|
||||
var ev = new AddedAttuneToMindEvent(attuningMind, mind.OwnedEntity, item);
|
||||
RaiseLocalEvent(attuningMind, ev);
|
||||
RaiseLocalEvent(item, ev);
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class CP14MagicAttuneDoAfterEvent : SimpleDoAfterEvent
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// is evoked on both the item and the mind when a new connection between them appears.
|
||||
/// </summary>
|
||||
public sealed class AddedAttuneToMindEvent : EntityEventArgs
|
||||
{
|
||||
public readonly EntityUid Mind;
|
||||
public readonly EntityUid? User;
|
||||
public readonly EntityUid Item;
|
||||
|
||||
public AddedAttuneToMindEvent(EntityUid mind, EntityUid? user, EntityUid item)
|
||||
{
|
||||
Mind = mind;
|
||||
User = user;
|
||||
Item = item;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// is evoked on both the item and the mind when the connection is broken
|
||||
/// </summary>
|
||||
public sealed class RemovedAttuneFromMindEvent : EntityEventArgs
|
||||
{
|
||||
public readonly EntityUid Mind;
|
||||
public readonly EntityUid? User;
|
||||
public readonly EntityUid Item;
|
||||
|
||||
public RemovedAttuneFromMindEvent(EntityUid mind, EntityUid? user, EntityUid item)
|
||||
{
|
||||
Mind = mind;
|
||||
User = user;
|
||||
Item = item;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
using Content.Shared._CP14.Magic.Components;
|
||||
using Content.Shared._CP14.Magic.Events;
|
||||
using Content.Shared._CP14.MagicEnergy;
|
||||
using Content.Shared._CP14.MagicEnergy.Components;
|
||||
using Content.Shared._CP14.MagicSpell.Components;
|
||||
using Content.Shared._CP14.MagicSpell.Events;
|
||||
using Content.Shared._CP14.MagicSpell.Spells;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Speech.Muting;
|
||||
using Content.Shared.Weapons.Ranged.Systems;
|
||||
@@ -13,8 +13,11 @@ using Robust.Shared.Network;
|
||||
using Robust.Shared.Physics.Systems;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._CP14.Magic;
|
||||
namespace Content.Shared._CP14.MagicSpell;
|
||||
|
||||
/// <summary>
|
||||
/// This system handles the basic mechanics of spell use, such as doAfter, event invocation, and energy spending.
|
||||
/// </summary>
|
||||
public partial class CP14SharedMagicSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||
@@ -26,7 +29,6 @@ public partial class CP14SharedMagicSystem : EntitySystem
|
||||
[Dependency] private readonly SharedCP14MagicEnergySystem _magicEnergy = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -34,6 +36,14 @@ public partial class CP14SharedMagicSystem : EntitySystem
|
||||
|
||||
SubscribeLocalEvent<CP14MagicEffectComponent, CP14BeforeCastMagicEffectEvent>(OnBeforeCastMagicEffect);
|
||||
|
||||
SubscribeLocalEvent<CP14DelayedInstantActionEvent>(OnInstantAction);
|
||||
SubscribeLocalEvent<CP14DelayedEntityTargetActionEvent>(OnEntityTargetAction);
|
||||
SubscribeLocalEvent<CP14DelayedWorldTargetActionEvent>(OnWorldTargetAction);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicEffectComponent, CP14DelayedInstantActionDoAfterEvent>(OnDelayedInstantActionDoAfter);
|
||||
SubscribeLocalEvent<CP14MagicEffectComponent, CP14DelayedEntityTargetActionDoAfterEvent>(OnDelayedEntityTargetDoAfter);
|
||||
SubscribeLocalEvent<CP14MagicEffectComponent, CP14DelayedWorldTargetActionDoAfterEvent>(OnDelayedWorldTargetDoAfter);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicEffectSomaticAspectComponent, CP14BeforeCastMagicEffectEvent>(OnSomaticAspectBeforeCast);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicEffectVerbalAspectComponent, CP14BeforeCastMagicEffectEvent>(OnVerbalAspectBeforeCast);
|
||||
@@ -41,22 +51,197 @@ public partial class CP14SharedMagicSystem : EntitySystem
|
||||
|
||||
SubscribeLocalEvent<CP14MagicEffectComponent, CP14AfterCastMagicEffectEvent>(OnAfterCastMagicEffect);
|
||||
|
||||
SubscribeLocalEvent<CP14DelayedInstantActionEvent>(OnInstantAction);
|
||||
SubscribeLocalEvent<CP14DelayedEntityTargetActionEvent>(OnEntityTargetAction);
|
||||
SubscribeLocalEvent<CP14DelayedWorldTargetActionEvent>(OnWorldTargetAction);
|
||||
}
|
||||
|
||||
InitializeSpells();
|
||||
private void OnBeforeCastMagicEffect(Entity<CP14MagicEffectComponent> ent, ref CP14BeforeCastMagicEffectEvent args)
|
||||
{
|
||||
if (!TryComp<CP14MagicEnergyContainerComponent>(args.Performer, out var magicContainer))
|
||||
{
|
||||
args.Cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_magicEnergy.HasEnergy(args.Performer, ent.Comp.ManaCost, magicContainer, ent.Comp.Safe))
|
||||
{
|
||||
args.PushReason(Loc.GetString("cp14-magic-spell-not-enough-mana"));
|
||||
args.Cancel();
|
||||
}
|
||||
else if(!_magicEnergy.HasEnergy(args.Performer, ent.Comp.ManaCost, magicContainer, true) && _net.IsServer)
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp14-magic-spell-not-enough-mana-cast-warning-"+_random.Next(5)), args.Performer, args.Performer, PopupType.SmallCaution);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnInstantAction(CP14DelayedInstantActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
if (args is not ICP14DelayedMagicEffect delayedEffect)
|
||||
return;
|
||||
|
||||
if (!TryCastSpell(args.Action, args.Performer))
|
||||
return;
|
||||
|
||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Performer, delayedEffect.Delay, new CP14DelayedInstantActionDoAfterEvent(), args.Action)
|
||||
{
|
||||
BreakOnMove = delayedEffect.BreakOnMove,
|
||||
BreakOnDamage = delayedEffect.BreakOnDamage,
|
||||
Hidden = delayedEffect.Hidden,
|
||||
BlockDuplicate = true,
|
||||
DistanceThreshold = 100f,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||
|
||||
//Telegraphy effects
|
||||
if (_net.IsServer && TryComp<CP14MagicEffectComponent>(args.Action, out var magicEffect))
|
||||
{
|
||||
foreach (var effect in magicEffect.TelegraphyEffects)
|
||||
{
|
||||
effect.Effect(EntityManager, new CP14SpellEffectBaseArgs(args.Performer, args.Performer, Transform(args.Performer).Coordinates));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnWorldTargetAction(CP14DelayedWorldTargetActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
if (args is not ICP14DelayedMagicEffect delayedEffect)
|
||||
return;
|
||||
|
||||
if (!TryCastSpell(args.Action, args.Performer))
|
||||
return;
|
||||
|
||||
var doAfter = new CP14DelayedWorldTargetActionDoAfterEvent()
|
||||
{
|
||||
Target = EntityManager.GetNetCoordinates(args.Target)
|
||||
};
|
||||
|
||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Performer, delayedEffect.Delay, doAfter, args.Action)
|
||||
{
|
||||
BreakOnMove = delayedEffect.BreakOnMove,
|
||||
BreakOnDamage = delayedEffect.BreakOnDamage,
|
||||
Hidden = delayedEffect.Hidden,
|
||||
BlockDuplicate = true,
|
||||
DistanceThreshold = 100f,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||
|
||||
//Telegraphy effects
|
||||
if (_net.IsServer && TryComp<CP14MagicEffectComponent>(args.Action, out var magicEffect))
|
||||
{
|
||||
foreach (var effect in magicEffect.TelegraphyEffects)
|
||||
{
|
||||
effect.Effect(EntityManager, new CP14SpellEffectBaseArgs(args.Performer, null, args.Target));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnEntityTargetAction(CP14DelayedEntityTargetActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
if (args is not ICP14DelayedMagicEffect delayedEffect)
|
||||
return;
|
||||
|
||||
if (!TryCastSpell(args.Action, args.Performer))
|
||||
return;
|
||||
|
||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Performer, delayedEffect.Delay, new CP14DelayedEntityTargetActionDoAfterEvent(), args.Action, args.Target)
|
||||
{
|
||||
BreakOnMove = delayedEffect.BreakOnMove,
|
||||
BreakOnDamage = delayedEffect.BreakOnDamage,
|
||||
Hidden = delayedEffect.Hidden,
|
||||
BlockDuplicate = true,
|
||||
DistanceThreshold = 100f,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||
|
||||
//Telegraphy effects
|
||||
if (_net.IsServer && TryComp<CP14MagicEffectComponent>(args.Action, out var magicEffect))
|
||||
{
|
||||
foreach (var effect in magicEffect.TelegraphyEffects)
|
||||
{
|
||||
effect.Effect(EntityManager, new CP14SpellEffectBaseArgs(args.Performer, args.Target, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDelayedWorldTargetDoAfter(Entity<CP14MagicEffectComponent> ent, ref CP14DelayedWorldTargetActionDoAfterEvent args)
|
||||
{
|
||||
var endEv = new CP14EndCastMagicEffectEvent();
|
||||
RaiseLocalEvent(ent, ref endEv);
|
||||
|
||||
if (args.Cancelled || !_net.IsServer)
|
||||
return;
|
||||
|
||||
foreach (var effect in ent.Comp.Effects)
|
||||
{
|
||||
effect.Effect(EntityManager, new CP14SpellEffectBaseArgs(args.User, null, GetCoordinates(args.Target)));
|
||||
}
|
||||
|
||||
var ev = new CP14AfterCastMagicEffectEvent {Performer = args.User};
|
||||
RaiseLocalEvent(ent, ref ev);
|
||||
}
|
||||
|
||||
private void OnDelayedEntityTargetDoAfter(Entity<CP14MagicEffectComponent> ent, ref CP14DelayedEntityTargetActionDoAfterEvent args)
|
||||
{
|
||||
var endEv = new CP14EndCastMagicEffectEvent();
|
||||
RaiseLocalEvent(ent, ref endEv);
|
||||
|
||||
if (args.Cancelled || !_net.IsServer)
|
||||
return;
|
||||
|
||||
foreach (var effect in ent.Comp.Effects)
|
||||
{
|
||||
effect.Effect(EntityManager, new CP14SpellEffectBaseArgs(args.User, args.Target, null));
|
||||
}
|
||||
|
||||
var ev = new CP14AfterCastMagicEffectEvent {Performer = args.User};
|
||||
RaiseLocalEvent(ent, ref ev);
|
||||
}
|
||||
|
||||
private void OnDelayedInstantActionDoAfter(Entity<CP14MagicEffectComponent> ent, ref CP14DelayedInstantActionDoAfterEvent args)
|
||||
{
|
||||
var endEv = new CP14EndCastMagicEffectEvent();
|
||||
RaiseLocalEvent(ent, ref endEv);
|
||||
|
||||
if (args.Cancelled || !_net.IsServer)
|
||||
return;
|
||||
|
||||
foreach (var effect in ent.Comp.Effects)
|
||||
{
|
||||
effect.Effect(EntityManager, new CP14SpellEffectBaseArgs(args.User, args.User, Transform(args.User).Coordinates));
|
||||
}
|
||||
|
||||
var ev = new CP14AfterCastMagicEffectEvent {Performer = args.User};
|
||||
RaiseLocalEvent(ent, ref ev);
|
||||
}
|
||||
|
||||
private void OnSomaticAspectBeforeCast(Entity<CP14MagicEffectSomaticAspectComponent> ent, ref CP14BeforeCastMagicEffectEvent args)
|
||||
{
|
||||
if (TryComp<HandsComponent>(args.Performer, out var hands) || hands is not null)
|
||||
{
|
||||
var freeHand = 0;
|
||||
foreach (var hand in hands.Hands)
|
||||
{
|
||||
if (hand.Value.IsEmpty)
|
||||
return;
|
||||
freeHand++;
|
||||
}
|
||||
if (freeHand >= ent.Comp.FreeHandRequired)
|
||||
return;
|
||||
}
|
||||
args.PushReason(Loc.GetString("cp14-magic-spell-need-somatic-component"));
|
||||
args.Cancel();
|
||||
@@ -85,6 +270,9 @@ public partial class CP14SharedMagicSystem : EntitySystem
|
||||
|
||||
private void OnVerbalAspectAfterCast(Entity<CP14MagicEffectVerbalAspectComponent> ent, ref CP14AfterCastMagicEffectEvent args)
|
||||
{
|
||||
if (_net.IsClient)
|
||||
return;
|
||||
|
||||
var ev = new CP14VerbalAspectSpeechEvent
|
||||
{
|
||||
Performer = args.Performer,
|
||||
@@ -93,77 +281,6 @@ public partial class CP14SharedMagicSystem : EntitySystem
|
||||
RaiseLocalEvent(ent, ref ev);
|
||||
}
|
||||
|
||||
private void OnInstantAction(CP14DelayedInstantActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
if (args is not ICP14DelayedMagicEffect delayedEffect)
|
||||
return;
|
||||
|
||||
if (!TryCastSpell(args.Action, args.Performer))
|
||||
return;
|
||||
|
||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Performer, delayedEffect.Delay, new CP14DelayedInstantActionDoAfterEvent(), args.Action)
|
||||
{
|
||||
BreakOnMove = delayedEffect.BreakOnMove,
|
||||
BreakOnDamage = delayedEffect.BreakOnDamage,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||
}
|
||||
|
||||
private void OnWorldTargetAction(CP14DelayedWorldTargetActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
if (args is not ICP14DelayedMagicEffect delayedEffect)
|
||||
return;
|
||||
|
||||
if (!TryCastSpell(args.Action, args.Performer))
|
||||
return;
|
||||
|
||||
var doAfter = new CP14DelayedWorldTargetActionDoAfterEvent()
|
||||
{
|
||||
Target = EntityManager.GetNetCoordinates(args.Target)
|
||||
};
|
||||
|
||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Performer, delayedEffect.Delay, doAfter, args.Action)
|
||||
{
|
||||
BreakOnMove = delayedEffect.BreakOnMove,
|
||||
BreakOnDamage = delayedEffect.BreakOnDamage,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||
}
|
||||
|
||||
private void OnEntityTargetAction(CP14DelayedEntityTargetActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
if (args is not ICP14DelayedMagicEffect delayedEffect)
|
||||
return;
|
||||
|
||||
if (!TryCastSpell(args.Action, args.Performer))
|
||||
return;
|
||||
|
||||
var doAfterEventArgs = new DoAfterArgs(EntityManager, args.Performer, delayedEffect.Delay, new CP14DelayedEntityTargetActionDoAfterEvent(), args.Action, args.Target)
|
||||
{
|
||||
BreakOnMove = delayedEffect.BreakOnMove,
|
||||
BreakOnDamage = delayedEffect.BreakOnDamage,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterEventArgs);
|
||||
}
|
||||
|
||||
private bool TryCastSpell(EntityUid spell, EntityUid performer)
|
||||
{
|
||||
var ev = new CP14BeforeCastMagicEffectEvent
|
||||
@@ -187,25 +304,6 @@ public partial class CP14SharedMagicSystem : EntitySystem
|
||||
return !ev.Cancelled;
|
||||
}
|
||||
|
||||
private void OnBeforeCastMagicEffect(Entity<CP14MagicEffectComponent> ent, ref CP14BeforeCastMagicEffectEvent args)
|
||||
{
|
||||
if (!TryComp<CP14MagicEnergyContainerComponent>(args.Performer, out var magicContainer))
|
||||
{
|
||||
args.Cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_magicEnergy.HasEnergy(args.Performer, ent.Comp.ManaCost, magicContainer, ent.Comp.Safe))
|
||||
{
|
||||
args.PushReason(Loc.GetString("cp14-magic-spell-not-enough-mana"));
|
||||
args.Cancel();
|
||||
}
|
||||
else if(!_magicEnergy.HasEnergy(args.Performer, ent.Comp.ManaCost, magicContainer, true) && _net.IsServer)
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp14-magic-spell-not-enough-mana-cast-warning-"+_random.Next(5)), args.Performer, args.Performer, PopupType.SmallCaution);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnAfterCastMagicEffect(Entity<CP14MagicEffectComponent> ent, ref CP14AfterCastMagicEffectEvent args)
|
||||
{
|
||||
if (_net.IsClient)
|
||||
@@ -1,6 +1,6 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Components;
|
||||
namespace Content.Shared._CP14.MagicSpell.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a temporary entity that exists while the spell is cast, and disappears at the end. For visual special effects.
|
||||
@@ -0,0 +1,26 @@
|
||||
using Content.Shared._CP14.MagicSpell.Spells;
|
||||
using Content.Shared.FixedPoint;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Restricts the use of this action, by spending mana or user requirements.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicSystem))]
|
||||
public sealed partial class CP14MagicEffectComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public FixedPoint2 ManaCost = 0f;
|
||||
|
||||
[DataField]
|
||||
public bool Safe = false;
|
||||
|
||||
/// <summary>
|
||||
/// Effects that will trigger at the beginning of the cast, before mana is spent. Should have no gameplay importance, just special effects, popups and sounds.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<CP14SpellEffect> TelegraphyEffects = new();
|
||||
|
||||
[DataField]
|
||||
public List<CP14SpellEffect> Effects = new();
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Content.Shared._CP14.Magic.Components;
|
||||
namespace Content.Shared._CP14.MagicSpell.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Requires the user to have at least one free hand to use this spell
|
||||
@@ -6,4 +6,6 @@ namespace Content.Shared._CP14.Magic.Components;
|
||||
[RegisterComponent, Access(typeof(CP14SharedMagicSystem))]
|
||||
public sealed partial class CP14MagicEffectSomaticAspectComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public int FreeHandRequired = 1;
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
using Content.Shared.FixedPoint;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Components;
|
||||
namespace Content.Shared._CP14.MagicSpell.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Requires the user to be able to speak in order to use this spell. Also forces the user to use certain phrases at the beginning and end of a spell cast
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Content.Shared._CP14.Magic.Events;
|
||||
namespace Content.Shared._CP14.MagicSpell.Events;
|
||||
|
||||
[ByRefEvent]
|
||||
public sealed class CP14BeforeCastMagicEffectEvent : CancellableEntityEventArgs
|
||||
@@ -34,7 +34,7 @@ public sealed class CP14StartCastMagicEffectEvent : EntityEventArgs
|
||||
/// is invoked on the spell itself when the spell process has been completed or interrupted
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public sealed class CP14StopCastMagicEffectEvent : EntityEventArgs
|
||||
public sealed class CP14EndCastMagicEffectEvent : EntityEventArgs
|
||||
{
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using Content.Shared.DoAfter;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.Magic.Events;
|
||||
namespace Content.Shared._CP14.MagicSpell.Events;
|
||||
|
||||
//World target
|
||||
public sealed partial class CP14DelayedWorldTargetActionEvent : WorldTargetActionEvent, ICP14DelayedMagicEffect
|
||||
@@ -16,6 +16,9 @@ public sealed partial class CP14DelayedWorldTargetActionEvent : WorldTargetActio
|
||||
|
||||
[DataField]
|
||||
public bool BreakOnDamage { get; private set; } = true;
|
||||
|
||||
[DataField]
|
||||
public bool Hidden { get; private set; } = false;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
@@ -38,6 +41,9 @@ public sealed partial class CP14DelayedEntityTargetActionEvent : EntityTargetAct
|
||||
|
||||
[DataField]
|
||||
public bool BreakOnDamage { get; private set; } = true;
|
||||
|
||||
[DataField]
|
||||
public bool Hidden { get; private set; } = false;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
@@ -56,6 +62,9 @@ public sealed partial class CP14DelayedInstantActionEvent : InstantActionEvent,
|
||||
|
||||
[DataField]
|
||||
public bool BreakOnDamage { get; private set; } = true;
|
||||
|
||||
[DataField]
|
||||
public bool Hidden { get; private set; } = false;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Content.Shared._CP14.Magic;
|
||||
namespace Content.Shared._CP14.MagicSpell.Events;
|
||||
|
||||
public interface ICP14DelayedMagicEffect // The speak n spell interface
|
||||
{
|
||||
@@ -10,4 +10,6 @@ public interface ICP14DelayedMagicEffect // The speak n spell interface
|
||||
public bool BreakOnMove { get; }
|
||||
|
||||
public bool BreakOnDamage { get; }
|
||||
|
||||
public bool Hidden{ get; }
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellAddComponent : CP14SpellEffect
|
||||
{
|
||||
[DataField]
|
||||
public ComponentRegistry Components = new();
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
if (args.Target is null)
|
||||
return;
|
||||
|
||||
entManager.AddComponents(args.Target.Value, Components);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using Content.Shared.EntityEffects;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellApplyEntityEffect : CP14SpellEffect
|
||||
{
|
||||
[DataField(required: true, serverOnly: true)]
|
||||
public List<EntityEffect> Effects = new();
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
if (args.Target is null)
|
||||
return;
|
||||
|
||||
var targetEntity = args.Target.Value;
|
||||
|
||||
foreach (var effect in Effects)
|
||||
{
|
||||
effect.Effect(new EntityEffectBaseArgs(targetEntity, entManager));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Popups;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellCasterTeleport : CP14SpellEffect
|
||||
{
|
||||
[DataField]
|
||||
public bool NeedVision = true;
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
EntityCoordinates? targetPoint = null;
|
||||
if (args.Position is not null)
|
||||
targetPoint = args.Position.Value;
|
||||
else if (args.Target is not null && entManager.TryGetComponent<TransformComponent>(args.Target.Value, out var transformComponent))
|
||||
targetPoint = transformComponent.Coordinates;
|
||||
|
||||
if (targetPoint is null || args.User is null)
|
||||
return;
|
||||
|
||||
var transform = entManager.System<SharedTransformSystem>();
|
||||
var examine = entManager.System<ExamineSystemShared>();
|
||||
var popup = entManager.System<SharedPopupSystem>();
|
||||
|
||||
if (NeedVision && !examine.InRangeUnOccluded(args.User.Value, targetPoint.Value))
|
||||
{
|
||||
// can only dash if the destination is visible on screen
|
||||
popup.PopupEntity(Loc.GetString("dash-ability-cant-see"), args.User.Value, args.User.Value);
|
||||
return;
|
||||
}
|
||||
|
||||
transform.SetCoordinates(args.User.Value, targetPoint.Value);
|
||||
}
|
||||
}
|
||||
25
Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs
Normal file
25
Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Map;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
[ImplicitDataDefinitionForInheritors]
|
||||
[MeansImplicitUse]
|
||||
public abstract partial class CP14SpellEffect
|
||||
{
|
||||
public abstract void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args);
|
||||
}
|
||||
|
||||
public record class CP14SpellEffectBaseArgs
|
||||
{
|
||||
public EntityUid? User;
|
||||
public EntityUid? Target;
|
||||
public EntityCoordinates? Position;
|
||||
|
||||
public CP14SpellEffectBaseArgs(EntityUid? user, EntityUid? target, EntityCoordinates? position)
|
||||
{
|
||||
User = user;
|
||||
Target = target;
|
||||
Position = position;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
using Content.Shared.Weapons.Ranged.Systems;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Physics.Systems;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellProjectile : CP14SpellEffect
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public EntProtoId Prototype;
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
EntityCoordinates? targetPoint = null;
|
||||
if (args.Position is not null)
|
||||
targetPoint = args.Position.Value;
|
||||
else if (args.Target is not null && entManager.TryGetComponent<TransformComponent>(args.Target.Value, out var transformComponent))
|
||||
targetPoint = transformComponent.Coordinates;
|
||||
|
||||
if (targetPoint is null)
|
||||
return;
|
||||
|
||||
|
||||
var transform = entManager.System<SharedTransformSystem>();
|
||||
var physics = entManager.System<SharedPhysicsSystem>();
|
||||
var gunSystem = entManager.System<SharedGunSystem>();
|
||||
var mapManager = IoCManager.Resolve<IMapManager>();
|
||||
|
||||
if (!entManager.TryGetComponent<TransformComponent>(args.User, out var xform))
|
||||
return;
|
||||
|
||||
var fromCoords = xform.Coordinates;
|
||||
|
||||
if (fromCoords == targetPoint)
|
||||
return;
|
||||
|
||||
var userVelocity = physics.GetMapLinearVelocity(args.User.Value);
|
||||
|
||||
// If applicable, this ensures the projectile is parented to grid on spawn, instead of the map.
|
||||
var fromMap = transform.ToMapCoordinates(fromCoords);
|
||||
var spawnCoords = mapManager.TryFindGridAt(fromMap, out var gridUid, out _)
|
||||
? transform.WithEntityId(fromCoords, gridUid)
|
||||
: new(mapManager.GetMapEntityId(fromMap.MapId), fromMap.Position);
|
||||
|
||||
|
||||
var ent = entManager.SpawnAtPosition(Prototype, spawnCoords);
|
||||
var direction = targetPoint.Value.ToMapPos(entManager, transform) -
|
||||
spawnCoords.ToMapPos(entManager, transform);
|
||||
gunSystem.ShootProjectile(ent, direction, userVelocity, args.User.Value, args.User);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellSpawnEntityOnTarget : CP14SpellEffect
|
||||
{
|
||||
[DataField]
|
||||
public List<EntProtoId> Spawns = new();
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
EntityCoordinates? targetPoint = null;
|
||||
if (args.Position is not null)
|
||||
targetPoint = args.Position.Value;
|
||||
else if (args.Target is not null && entManager.TryGetComponent<TransformComponent>(args.Target.Value, out var transformComponent))
|
||||
targetPoint = transformComponent.Coordinates;
|
||||
|
||||
if (targetPoint is null)
|
||||
return;
|
||||
|
||||
foreach (var spawn in Spawns)
|
||||
{
|
||||
entManager.SpawnAtPosition(spawn, targetPoint.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellSpawnEntityOnUser : CP14SpellEffect
|
||||
{
|
||||
[DataField]
|
||||
public List<EntProtoId> Spawns = new();
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
if (args.User is null || !entManager.TryGetComponent<TransformComponent>(args.User.Value, out var transformComponent))
|
||||
return;
|
||||
|
||||
foreach (var spawn in Spawns)
|
||||
{
|
||||
entManager.SpawnAtPosition(spawn, transformComponent.Coordinates);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellSpawnInHandEntity : CP14SpellEffect
|
||||
{
|
||||
[DataField]
|
||||
public List<EntProtoId> Spawns = new();
|
||||
|
||||
[DataField]
|
||||
public bool DeleteIfCantPickup = false;
|
||||
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
if (args.Target is null)
|
||||
return;
|
||||
|
||||
if (!entManager.TryGetComponent<TransformComponent>(args.Target.Value, out var transformComponent))
|
||||
return;
|
||||
|
||||
var handSystem = entManager.System<SharedHandsSystem>();
|
||||
|
||||
foreach (var spawn in Spawns)
|
||||
{
|
||||
var item = entManager.SpawnAtPosition(spawn, transformComponent.Coordinates);
|
||||
if (!handSystem.TryPickupAnyHand(args.Target.Value, item) && DeleteIfCantPickup)
|
||||
entManager.QueueDeleteEntity(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
23
Content.Shared/_CP14/MagicSpell/Spells/CP14ThrowToUser.cs
Normal file
23
Content.Shared/_CP14/MagicSpell/Spells/CP14ThrowToUser.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using Content.Shared.Throwing;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
public sealed partial class CP14SpellThrowToUser : CP14SpellEffect
|
||||
{
|
||||
[DataField]
|
||||
public float ThrowPower = 10f;
|
||||
public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args)
|
||||
{
|
||||
if (args.Target is null)
|
||||
return;
|
||||
|
||||
var targetEntity = args.Target.Value;
|
||||
|
||||
var throwing = entManager.System<ThrowingSystem>();
|
||||
|
||||
if (!entManager.TryGetComponent<TransformComponent>(args.User, out var xform))
|
||||
return;
|
||||
|
||||
throwing.TryThrow(targetEntity, xform.Coordinates, ThrowPower);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Content.Shared._CP14.MagicSpellStorage;
|
||||
|
||||
/// <summary>
|
||||
/// Denotes that this item's spells can be accessed while holding it in your hand
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SpellStorageSystem))]
|
||||
public sealed partial class CP14SpellStorageAccessHoldingComponent : Component
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Content.Shared._CP14.MagicSpellStorage;
|
||||
|
||||
/// <summary>
|
||||
/// Denotes that this item's spells can be accessed while wearing it in your body
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SpellStorageSystem))]
|
||||
public sealed partial class CP14SpellStorageAccessWearingComponent : Component
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpellStorage;
|
||||
|
||||
/// <summary>
|
||||
/// A component that allows you to store spells in items
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SpellStorageSystem))]
|
||||
public sealed partial class CP14SpellStorageComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// list of spell prototypes used for initialization.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<EntProtoId> Spells = new();
|
||||
|
||||
/// <summary>
|
||||
/// created after the initialization of spell entities.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<EntityUid> SpellEntities = new();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Content.Shared._CP14.MagicSpellStorage;
|
||||
|
||||
/// <summary>
|
||||
/// The ability to access spellcasting is limited by the attuning requirement
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14SpellStorageSystem))]
|
||||
public sealed partial class CP14SpellStorageRequireAttuneComponent : Component
|
||||
{
|
||||
}
|
||||
109
Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs
Normal file
109
Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs
Normal file
@@ -0,0 +1,109 @@
|
||||
using Content.Shared._CP14.MagicAttuning;
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Clothing;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Mind;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpellStorage;
|
||||
|
||||
/// <summary>
|
||||
/// this part of the system is responsible for storing spells in items, and the methods players use to obtain them.
|
||||
/// </summary>
|
||||
public sealed partial class CP14SpellStorageSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ActionContainerSystem _actionContainer = default!;
|
||||
[Dependency] private readonly SharedActionsSystem _actions = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
[Dependency] private readonly CP14SharedMagicAttuningSystem _attuning = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<CP14SpellStorageComponent, MapInitEvent>(OnMagicStorageInit);
|
||||
|
||||
SubscribeLocalEvent<CP14SpellStorageAccessHoldingComponent, GotEquippedHandEvent>(OnEquippedHand);
|
||||
SubscribeLocalEvent<CP14SpellStorageAccessHoldingComponent, AddedAttuneToMindEvent>(OnHandAddedAttune);
|
||||
|
||||
SubscribeLocalEvent<CP14SpellStorageAccessWearingComponent, ClothingGotEquippedEvent>(OnClothingEquipped);
|
||||
SubscribeLocalEvent<CP14SpellStorageAccessWearingComponent, ClothingGotUnequippedEvent>(OnClothingUnequipped);
|
||||
|
||||
SubscribeLocalEvent<CP14SpellStorageRequireAttuneComponent, RemovedAttuneFromMindEvent>(OnRemovedAttune);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When we initialize, we create action entities, and add them to this item.
|
||||
/// </summary>
|
||||
private void OnMagicStorageInit(Entity<CP14SpellStorageComponent> mStorage, ref MapInitEvent args)
|
||||
{
|
||||
foreach (var spell in mStorage.Comp.Spells)
|
||||
{
|
||||
var spellEnt = _actionContainer.AddAction(mStorage, spell);
|
||||
if (spellEnt is null)
|
||||
continue;
|
||||
|
||||
mStorage.Comp.SpellEntities.Add(spellEnt.Value);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnEquippedHand(Entity<CP14SpellStorageAccessHoldingComponent> ent, ref GotEquippedHandEvent args)
|
||||
{
|
||||
if (!TryComp<CP14SpellStorageComponent>(ent, out var spellStorage))
|
||||
return;
|
||||
|
||||
TryGrantAccess((ent, spellStorage), args.User);
|
||||
}
|
||||
|
||||
private void OnHandAddedAttune(Entity<CP14SpellStorageAccessHoldingComponent> ent, ref AddedAttuneToMindEvent args)
|
||||
{
|
||||
if (!TryComp<CP14SpellStorageComponent>(ent, out var spellStorage))
|
||||
return;
|
||||
|
||||
if (args.User is null)
|
||||
return;
|
||||
|
||||
if (!_hands.IsHolding(args.User.Value, ent))
|
||||
return;
|
||||
|
||||
TryGrantAccess((ent, spellStorage), args.User.Value);
|
||||
}
|
||||
|
||||
private void OnClothingEquipped(Entity<CP14SpellStorageAccessWearingComponent> ent, ref ClothingGotEquippedEvent args)
|
||||
{
|
||||
if (!TryComp<CP14SpellStorageComponent>(ent, out var spellStorage))
|
||||
return;
|
||||
|
||||
TryGrantAccess((ent, spellStorage), args.Wearer);
|
||||
}
|
||||
|
||||
private void OnClothingUnequipped(Entity<CP14SpellStorageAccessWearingComponent> ent, ref ClothingGotUnequippedEvent args)
|
||||
{
|
||||
_actions.RemoveProvidedActions(args.Wearer, ent);
|
||||
}
|
||||
|
||||
private bool TryGrantAccess(Entity<CP14SpellStorageComponent> storage, EntityUid user)
|
||||
{
|
||||
if (!_mind.TryGetMind(user, out var mindId, out var mind))
|
||||
return false;
|
||||
|
||||
if (mind.OwnedEntity is null)
|
||||
return false;
|
||||
|
||||
if (TryComp<CP14SpellStorageRequireAttuneComponent>(storage, out var reqAttune))
|
||||
{
|
||||
if (!_attuning.IsAttunedTo(mindId, storage))
|
||||
return false;
|
||||
}
|
||||
|
||||
_actions.GrantActions(user, storage.Comp.SpellEntities, storage);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void OnRemovedAttune(Entity<CP14SpellStorageRequireAttuneComponent> ent, ref RemovedAttuneFromMindEvent args)
|
||||
{
|
||||
if (args.User is null)
|
||||
return;
|
||||
|
||||
_actions.RemoveProvidedActions(args.User.Value, ent);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using Content.Shared.Damage;
|
||||
|
||||
namespace Content.Shared._CP14.MeleeWeapon.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class CP14MeleeSelfDamageComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public DamageSpecifier DamageToSelf = new()
|
||||
{
|
||||
DamageDict = new()
|
||||
{
|
||||
{ "Blunt", 1 },
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
using Content.Shared._CP14.MeleeWeapon.EntitySystems;
|
||||
|
||||
using Content.Server._CP14.MeleeWeapon.EntitySystems;
|
||||
|
||||
namespace Content.Server._CP14.MeleeWeapon.Components;
|
||||
namespace Content.Shared._CP14.MeleeWeapon.Components;
|
||||
|
||||
/// <summary>
|
||||
/// allows the object to become blunt with use
|
||||
@@ -1,8 +1,8 @@
|
||||
using Content.Server._CP14.MeleeWeapon.EntitySystems;
|
||||
using Content.Shared._CP14.MeleeWeapon.EntitySystems;
|
||||
using Content.Shared.Damage;
|
||||
using Robust.Shared.Audio;
|
||||
|
||||
namespace Content.Server._CP14.MeleeWeapon.Components;
|
||||
namespace Content.Shared._CP14.MeleeWeapon.Components;
|
||||
|
||||
/// <summary>
|
||||
/// component allows you to sharpen objects by restoring their damage.
|
||||
@@ -34,7 +34,7 @@ public sealed partial class CP14SharpeningStoneComponent : Component
|
||||
{
|
||||
DamageDict = new()
|
||||
{
|
||||
{ "Blunt", 1 }
|
||||
{ "Blunt", 1 },
|
||||
}
|
||||
};
|
||||
|
||||
@@ -46,7 +46,7 @@ public sealed partial class CP14SharpeningStoneComponent : Component
|
||||
{
|
||||
DamageDict = new()
|
||||
{
|
||||
{ "Blunt", 1 }
|
||||
{ "Blunt", 1 },
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using Content.Server._CP14.MeleeWeapon.Components;
|
||||
using Content.Shared._CP14.MeleeWeapon.Components;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
|
||||
namespace Content.Server._CP14.MeleeWeapon.EntitySystems;
|
||||
namespace Content.Shared._CP14.MeleeWeapon.EntitySystems;
|
||||
|
||||
public sealed class CP14MeleeSelfDamageSystem : EntitySystem
|
||||
{
|
||||
@@ -1,21 +1,25 @@
|
||||
using System.Linq;
|
||||
using Content.Server._CP14.MeleeWeapon.Components;
|
||||
using Content.Shared._CP14.MeleeWeapon.Components;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Placeable;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Timing;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
using Content.Shared.Wieldable;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Network;
|
||||
|
||||
namespace Content.Server._CP14.MeleeWeapon.EntitySystems;
|
||||
namespace Content.Shared._CP14.MeleeWeapon.EntitySystems;
|
||||
|
||||
public sealed class CP14SharpeningSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
|
||||
[Dependency] private readonly UseDelaySystem _useDelay = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -80,13 +84,19 @@ public sealed class CP14SharpeningSystem : EntitySystem
|
||||
|
||||
if (!ev.Canceled)
|
||||
{
|
||||
_audio.PlayPvs(stone.Comp.SharpeningSound, target);
|
||||
Spawn("EffectSparks", Transform(target).Coordinates);
|
||||
_audio.PlayPredicted(stone.Comp.SharpeningSound, target, user);
|
||||
|
||||
_damageableSystem.TryChangeDamage(stone, stone.Comp.SelfDamage);
|
||||
_damageableSystem.TryChangeDamage(target, stone.Comp.TargetDamage);
|
||||
|
||||
component.Sharpness = MathHelper.Clamp01(component.Sharpness + stone.Comp.SharpnessHeal);
|
||||
|
||||
if (_net.IsServer)
|
||||
{
|
||||
Spawn("EffectSparks", Transform(target).Coordinates);
|
||||
if (component.Sharpness >= 0.99)
|
||||
_popup.PopupEntity(Loc.GetString("sharpening-ready"), target, user);
|
||||
}
|
||||
}
|
||||
|
||||
_useDelay.TryResetDelay(stone);
|
||||
@@ -1,4 +1,3 @@
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared.Random.Rules;
|
||||
|
||||
namespace Content.Shared._CP14.Random.Rules;
|
||||
@@ -11,7 +10,9 @@ public sealed partial class IsDaylight : RulesRule
|
||||
public override bool Check(EntityManager entManager, EntityUid uid)
|
||||
{
|
||||
var transform = entManager.System<SharedTransformSystem>();
|
||||
var dayCycle = entManager.System<CP14DayCycleSystem>();
|
||||
|
||||
// Not shared yet, use raw component data from map
|
||||
// var dayCycle = entManager.System<CP14DayCycleSystem>();
|
||||
|
||||
//черт, нужны комиты из ветки фермерства
|
||||
return !Inverted;
|
||||
|
||||
72
Content.Shared/_CP14/Workbench/CP14WorkbenchUI.cs
Normal file
72
Content.Shared/_CP14/Workbench/CP14WorkbenchUI.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.Workbench;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum CP14WorkbenchUiKey
|
||||
{
|
||||
Key,
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CP14WorkbenchUiCraftMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public readonly ProtoId<CP14WorkbenchRecipePrototype> Recipe;
|
||||
|
||||
public CP14WorkbenchUiCraftMessage(ProtoId<CP14WorkbenchRecipePrototype> recipe)
|
||||
{
|
||||
Recipe = recipe;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CP14WorkbenchUiRecipesState : BoundUserInterfaceState
|
||||
{
|
||||
// It's list (not hashset) BECAUSE CP14WorkbenchComponent contains list of recipes (WHY???)
|
||||
public readonly List<CP14WorkbenchUiRecipesEntry> Recipes;
|
||||
|
||||
public CP14WorkbenchUiRecipesState(List<CP14WorkbenchUiRecipesEntry> recipes)
|
||||
{
|
||||
Recipes = recipes;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public readonly struct CP14WorkbenchUiRecipesEntry : IEquatable<CP14WorkbenchUiRecipesEntry>
|
||||
{
|
||||
public readonly ProtoId<CP14WorkbenchRecipePrototype> ProtoId;
|
||||
public readonly bool Craftable;
|
||||
|
||||
public CP14WorkbenchUiRecipesEntry(ProtoId<CP14WorkbenchRecipePrototype> protoId, bool craftable)
|
||||
{
|
||||
ProtoId = protoId;
|
||||
Craftable = craftable;
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return obj is CP14WorkbenchUiRecipesEntry other && Equals(other);
|
||||
}
|
||||
|
||||
public bool Equals(CP14WorkbenchUiRecipesEntry other)
|
||||
{
|
||||
return ProtoId.Id == other.ProtoId.Id;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(ProtoId, Craftable);
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,21 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Workbench.Prototypes;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[Prototype("CP14Recipe")]
|
||||
public sealed partial class CP14WorkbenchRecipePrototype : IPrototype
|
||||
public sealed class CP14WorkbenchRecipePrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[IdDataField]
|
||||
public string ID { get; private set; } = default!;
|
||||
|
||||
@@ -27,5 +32,5 @@ public sealed partial class CP14WorkbenchRecipePrototype : IPrototype
|
||||
public Dictionary<ProtoId<StackPrototype>, int> Stacks = new();
|
||||
|
||||
[DataField(required: true)]
|
||||
public EntProtoId Result = default!;
|
||||
public EntProtoId Result;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
/*
|
||||
* All right reserved to Crystallpunk.
|
||||
*
|
||||
* BUT this file is sublicensed under CLA License for next projects:
|
||||
* https://github.com/technologists-team/after-rain
|
||||
* https://github.com/EscapeD-14/EscapeD-14
|
||||
*
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Content.Shared.DoAfter;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
793
CrystallPunk14.sln.DotSettings
Normal file
793
CrystallPunk14.sln.DotSettings
Normal file
@@ -0,0 +1,793 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:Boolean x:Key="/Default/CodeEditing/TypingAssist/CSharpAnnotationTypingAssist/IsEnabledAfterTypeName/@EntryValue">False</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeEditing/TypingAssist/CSharpAnnotationTypingAssist/IsEnabledAtOtherPositions/@EntryValue">False</s:Boolean>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=BadControlBracesLineBreaks/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=BadDeclarationBracesLineBreaks/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=BadEmptyBracesLineBreaks/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=BadExpressionBracesLineBreaks/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=BadLinqLineBreaks/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=BadListLineBreaks/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=BadParensLineBreaks/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8600/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8601/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8602/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8603/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8604/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8605/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8610/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8611/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8614/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8617/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8618/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8625/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8629/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=CSharpWarnings_003A_003ACS8670/@EntryIndexedValue">ERROR</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceDoWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceFixedStatementBraces/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForeachStatementBraces/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForStatementBraces/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceIfStatementBraces/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceLockStatementBraces/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceUsingStatementBraces/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MissingLinebreak/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MultipleStatementsOnOneLine/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MultipleTypeMembersOnOneLine/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantLinebreak/@EntryIndexedValue">WARNING</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_DOWHILE/@EntryValue">Required</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FIXED/@EntryValue">Required</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOREACH/@EntryValue">Required</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_IFELSE/@EntryValue">RequiredForMultiline</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_LOCK/@EntryValue">Required</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_USING/@EntryValue">Required</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_WHILE/@EntryValue">Required</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ACCESSOR_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ACCESSOR_OWNER_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INDENT_RAW_LITERAL_STRING/@EntryValue">INDENT</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INITIALIZER_BRACES/@EntryValue">NEXT_LINE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INVOCABLE_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/OTHER_BRACES/@EntryValue">NEXT_LINE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/TYPE_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AABB/@EntryIndexedValue">AABB</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AL/@EntryIndexedValue">AL</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BB/@EntryIndexedValue">BB</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CC/@EntryIndexedValue">CC</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GC/@EntryIndexedValue">GC</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GD/@EntryIndexedValue">GD</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GL/@EntryIndexedValue">GL</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HV/@EntryIndexedValue">HV</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HW/@EntryIndexedValue">HW</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IC/@EntryIndexedValue">IC</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IL/@EntryIndexedValue">IL</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IP/@EntryIndexedValue">IP</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KHR/@EntryIndexedValue">KHR</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MMI/@EntryIndexedValue">MMI</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MS/@EntryIndexedValue">MS</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MV/@EntryIndexedValue">MV</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OGL/@EntryIndexedValue">OGL</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OOC/@EntryIndexedValue">OOC</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OS/@EntryIndexedValue">OS</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PA/@EntryIndexedValue">PA</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PAI/@EntryIndexedValue">PAI</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PCM/@EntryIndexedValue">PCM</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PE/@EntryIndexedValue">PE</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PNG/@EntryIndexedValue">PNG</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RSI/@EntryIndexedValue">RSI</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SA/@EntryIndexedValue">SA</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SZ/@EntryIndexedValue">SZ</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UI/@EntryIndexedValue">UI</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UTF/@EntryIndexedValue">UTF</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UV/@EntryIndexedValue">UV</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VP/@EntryIndexedValue">VP</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FTL/@EntryIndexedValue">FTL</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CP/@EntryIndexedValue">CP</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=UI/@EntryIndexedValue">UI</s:String>
|
||||
<s:Boolean x:Key="/Default/Environment/Filtering/ExcludeCoverageFilters/=Lidgren_002ENetwork_003B_002A_003B_002A_003B_002A/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EdotCover_002EIde_002ECore_002EFilterManagement_002EModel_002ESolutionFilterSettingsManagerMigrateSettings/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EFeature_002EServices_002EDaemon_002ESettings_002EMigration_002ESwaWarningsModeSettingsMigrate/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue"><data /></s:String>
|
||||
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue"><data><IncludeFilters /><ExcludeFilters><Filter ModuleMask="Lidgren.Network" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /></ExcludeFilters></data></s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=034F62B026B5BE4BAFE2102D6FE374CB/@KeyIndexDefined">False</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=142539C9975BA84BA1996ADB02B1E422/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=142539C9975BA84BA1996ADB02B1E422/EntryName/@EntryValue">Entity Component</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=142539C9975BA84BA1996ADB02B1E422/Position/@EntryValue">1</s:Int64>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=2CBD6971A7955044AD2624B84FB49E38/Position/@EntryValue">9</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=42CD33DDCA56314C933090204C703B42/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=42CD33DDCA56314C933090204C703B42/EntryName/@EntryValue">Prototype</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=42CD33DDCA56314C933090204C703B42/Position/@EntryValue">5</s:Int64>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=567DCF4B487C244A9F6BB46E4E9F3B84/Position/@EntryValue">6</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=652E0DBD3559BD4EA35305A83762B0C8/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=652E0DBD3559BD4EA35305A83762B0C8/EntryName/@EntryValue">XAML Control</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=7C233DA875A1B54AB9906002129B9E8C/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=7C233DA875A1B54AB9906002129B9E8C/EntryName/@EntryValue">Client/Server Net Entity System</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=7C233DA875A1B54AB9906002129B9E8C/Position/@EntryValue">8</s:Int64>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=7F2A1BE8D0078241A9AE7802038BAD3C/Position/@EntryValue">7</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=8B1B60A18C22DF418EB1E319EA2FFA90/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=8B1B60A18C22DF418EB1E319EA2FFA90/EntryName/@EntryValue">Entity System</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=8B1B60A18C22DF418EB1E319EA2FFA90/Position/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=A04E4F8184AF3244891524889B282DB9/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=A04E4F8184AF3244891524889B282DB9/EntryName/@EntryValue">Shared Net Component</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=A04E4F8184AF3244891524889B282DB9/Position/@EntryValue">3</s:Int64>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=C4795E57DDEC1C4F97BBC8C7173EBBCA/Position/@EntryValue">8</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=D02105D81279C44393024753C36CA5EA/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=D02105D81279C44393024753C36CA5EA/EntryName/@EntryValue">Shared Net Entity System</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=D02105D81279C44393024753C36CA5EA/Position/@EntryValue">7</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=EA04030275C2A349A1CF0D32838BD1FA/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=EA04030275C2A349A1CF0D32838BD1FA/EntryName/@EntryValue">Inheriting Prototype</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=EA04030275C2A349A1CF0D32838BD1FA/Position/@EntryValue">6</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=F78E2BE57FA393438C0E0AC717B4FC76/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=F78E2BE57FA393438C0E0AC717B4FC76/EntryName/@EntryValue">Client/Server Net Component</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Entry/=F78E2BE57FA393438C0E0AC717B4FC76/Position/@EntryValue">4</s:Int64>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=F0CA621CDF5AB24282D8CDC11C520997/Name/@EntryValue">C# projects</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=034F62B026B5BE4BAFE2102D6FE374CB/@KeyIndexDefined">False</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/CustomProperties/=FileName/@EntryIndexedValue">FooComponent</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Description/@EntryValue">&Entity Component</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=CLASS/Expression/@EntryValue">getFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=CLASS/InitialRange/@EntryValue">-1</s:Int64>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=CLASS/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=NAMESPACE/InitialRange/@EntryValue">-1</s:Int64>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Field/=NAMESPACE/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
/// <summary>
|
||||
/// This is used for...
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class $CLASS$ : Component {
|
||||
$END$
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=142539C9975BA84BA1996ADB02B1E422/UITag/@EntryValue">SS14</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=2CAB0A567F30704CA99AA3EC249E3153/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
public sealed class $CLASS$ {$END$}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=2CBD6971A7955044AD2624B84FB49E38/Text/@EntryValue">$HEADER$using System.ComponentModel;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
public partial class $CLASS$ : Component
|
||||
{
|
||||
public $CLASS$()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public $CLASS$(IContainer container)
|
||||
{
|
||||
container.Add(this);
|
||||
|
||||
InitializeComponent();
|
||||
}
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=37AB964D6E4D424BBE2530F92DA37EEB/CustomProperties/=Category/@EntryIndexedValue"></s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=37AB964D6E4D424BBE2530F92DA37EEB/CustomProperties/=Category/@EntryIndexRemoved">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=37AB964D6E4D424BBE2530F92DA37EEB/Image/@EntryValue"></s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=37AB964D6E4D424BBE2530F92DA37EEB/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
public sealed record $RECORD$($END$);</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=40C163D436D8ED48A6D01A0AFEFC5556/Text/@EntryValue">$HEADER$using NUnit.Framework;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
[TestFixture]
|
||||
public class $CLASS$ {$END$}</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/CustomProperties/=FileName/@EntryIndexedValue">FooPrototype</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Description/@EntryValue">&Prototype</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=CLASS/Expression/@EntryValue">getAlphaNumericFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=CLASS/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Field/=NAMESPACE/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/Text/@EntryValue">$HEADER$using Robust.Shared.Prototypes;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
/// <summary>
|
||||
/// This is a prototype for...
|
||||
/// </summary>
|
||||
[Prototype($END$)]
|
||||
public sealed partial class $CLASS$ : IPrototype {
|
||||
/// <inheritdoc/>
|
||||
[IdDataField]
|
||||
public string ID { get; } = default!;
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=42CD33DDCA56314C933090204C703B42/UITag/@EntryValue">SS14</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Description/@EntryValue">IoC [Dependency]</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Field/=NAME/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Field/=NAME/Expression/@EntryValue">suggestVariableName()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Field/=NAME/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Field/=TYPE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Field/=TYPE/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/Type/@EntryValue">InCSharpTypeMember</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Shortcut/@EntryValue">dep</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4A7DA11A8F5D594A8E27E61AB7E2D78D/Text/@EntryValue">[Robust.Shared.IoC.Dependency] private readonly $TYPE$ $NAME$ = default!;$END$</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/@KeyIndexDefined">False</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Applicability/=Live/@EntryIndexedValue">False</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Applicability/=Live/@EntryIndexRemoved">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Description/@EntryValue"></s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Field/=CLASS/Expression/@EntryValue"></s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Field/=CLASS/Order/@EntryValue">-1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/IsBlessed/@EntryValue">False</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Reformat/@EntryValue">False</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue"></s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexRemoved">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue"></s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/ShortenQualifiedReferences/@EntryValue">False</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=612D1A1D3CD84A4BB90130D6230F13C1/Text/@EntryValue"></s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=CLASS/InitialRange/@EntryValue">-1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=CLASS/Expression/@EntryValue">getFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=CLASS/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=NAMESPACE/InitialRange/@EntryValue">-1</s:Int64>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Field/=NAMESPACE/Order/@EntryValue">2</s:Int64>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/UITag/@EntryValue">SS14</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Description/@EntryValue">&XAML Control</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Text/@EntryValue">$HEADER$using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class $CLASS$ : Control
|
||||
{
|
||||
public $CLASS$()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
}
|
||||
}</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/CustomProperties/=FileName/@EntryIndexedValue">Control.xaml</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Section/=84500DDEC5FA9F44B5EC0DC137ED8589/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Section/=84500DDEC5FA9F44B5EC0DC137ED8589/LocationSelectorName/@EntryValue">manual</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Section/=84500DDEC5FA9F44B5EC0DC137ED8589/LocationSelectorConfig/@EntryValue"><RelativeConfig File="$NAME$.xaml" /></s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Section/=84500DDEC5FA9F44B5EC0DC137ED8589/Order/@EntryValue">0</s:Int64>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=652E0DBD3559BD4EA35305A83762B0C8/Section/=84500DDEC5FA9F44B5EC0DC137ED8589/SectionPlain/Text/@EntryValue"><controls:$CLASS$
|
||||
xmlns="https://spacestation14.io"
|
||||
xmlns:controls="clr-namespace:$NAMESPACE$">$END$
|
||||
</controls:$CLASS$></s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=6FAA6736247D464489DF536819A6D103/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
public interface $INTERFACE$ {$END$}
|
||||
</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7B10AC30B0320A4F95A3763001E1DBF6/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
public enum $ENUM$ {$END$}</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/CustomProperties/=FileName/@EntryIndexedValue">FooSystem</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Description/@EntryValue">&Client/Server Net Entity System</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=CLASS/Expression/@EntryValue">getAlphaNumericFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=CLASS/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Field/=NAMESPACE/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public sealed class $CLASS$ : Shared$CLASS$ {
|
||||
/// <inheritdoc/>
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
$END$
|
||||
}
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7C233DA875A1B54AB9906002129B9E8C/UITag/@EntryValue">SS14</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=7F2A1BE8D0078241A9AE7802038BAD3C/Text/@EntryValue">$HEADER$using System.Windows.Forms;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
public partial class $CLASS$ : Form
|
||||
{
|
||||
public $CLASS$()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Description/@EntryValue">IoC resolve</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Field/=TYPE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Field/=TYPE/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Scope/=2C285F182AC98D44B0B4F29D4D2149EC/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Scope/=2C285F182AC98D44B0B4F29D4D2149EC/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Scope/=2C285F182AC98D44B0B4F29D4D2149EC/Type/@EntryValue">InCSharpStatement</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Scope/=E6E678D4B937A84D8C4585DDD2F27DB0/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Scope/=E6E678D4B937A84D8C4585DDD2F27DB0/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Scope/=E6E678D4B937A84D8C4585DDD2F27DB0/Type/@EntryValue">InCSharpExpression</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Shortcut/@EntryValue">res</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=81EA2D3ED3A77048A10222F86F7F2CAD/Text/@EntryValue">Robust.Shared.IoC.IoCManager.Resolve<$TYPE$>()$END$</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/@KeyIndexDefined">False</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Applicability/=Live/@EntryIndexedValue">False</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Applicability/=Live/@EntryIndexRemoved">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Description/@EntryValue"></s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Field/=COMPONENT/Order/@EntryValue">-1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Reformat/@EntryValue">False</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue"></s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexRemoved">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue"></s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/ShortenQualifiedReferences/@EntryValue">False</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=85FFB8B9F5E9FC4D838C8644A63E422A/Text/@EntryValue"></s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/CustomProperties/=FileName/@EntryIndexedValue">FooSystem</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Description/@EntryValue">&Entity System</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=CLASS/Expression/@EntryValue">getAlphaNumericFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=CLASS/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Field/=NAMESPACE/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
/// <summary>
|
||||
/// This handles...
|
||||
/// </summary>
|
||||
public sealed class $CLASS$ : EntitySystem {
|
||||
/// <inheritdoc/>
|
||||
public override void Initialize()
|
||||
{
|
||||
$END$
|
||||
}
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=8B1B60A18C22DF418EB1E319EA2FFA90/UITag/@EntryValue">SS14</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=9BB83ED0FF792E47BAAB217C25589C77/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
public struct $STRUCT$ {$END$}</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/CustomProperties/=FileName/@EntryIndexedValue">SharedFooComponent</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Description/@EntryValue">&Shared Net Component</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=CLASS/Expression/@EntryValue">getAlphaNumericFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=CLASS/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Field/=NAMESPACE/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/Text/@EntryValue">$HEADER$using Robust.Shared.Serialization;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
/// <summary>
|
||||
/// This is used for...
|
||||
/// </summary>
|
||||
public abstract partial class $CLASS$ : Component {
|
||||
$END$
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contains network state for $CLASS$.
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class $CLASS$State : ComponentState {
|
||||
public $CLASS$State($CLASS$ component) {
|
||||
|
||||
}
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=A04E4F8184AF3244891524889B282DB9/UITag/@EntryValue">SS14</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Description/@EntryValue">Serializable & NetSerializable types</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Scope/=558F05AA0DE96347816FF785232CFB2A/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Scope/=558F05AA0DE96347816FF785232CFB2A/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Scope/=558F05AA0DE96347816FF785232CFB2A/Type/@EntryValue">InCSharpTypeAndNamespace</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/Type/@EntryValue">InCSharpTypeMember</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Shortcut/@EntryValue">netser</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C1EA2E5A7CC15B4387C5C4996D12465E/Text/@EntryValue">[System.Serializable, Robust.Shared.Serialization.NetSerializable]</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=C4795E57DDEC1C4F97BBC8C7173EBBCA/Text/@EntryValue">$HEADER$using System.Windows.Forms;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
public partial class $CLASS$ : UserControl
|
||||
{
|
||||
public $CLASS$()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/CustomProperties/=FileName/@EntryIndexedValue">FooSystem</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Description/@EntryValue">&Shared Net Entity System</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=CLASS/Expression/@EntryValue">getAlphaNumericFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=CLASS/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Field/=NAMESPACE/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/Text/@EntryValue">$HEADER$namespace $NAMESPACE$;
|
||||
|
||||
/// <summary>
|
||||
/// This handles...
|
||||
/// </summary>
|
||||
public abstract class $CLASS$ : EntitySystem {
|
||||
/// <inheritdoc/>
|
||||
public override void Initialize()
|
||||
{
|
||||
$END$
|
||||
}
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=D02105D81279C44393024753C36CA5EA/UITag/@EntryValue">SS14</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/CustomProperties/=FileName/@EntryIndexedValue">FooPrototype</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Description/@EntryValue">&Inheriting Prototype</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=CLASS/Expression/@EntryValue">getAlphaNumericFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=CLASS/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Field/=NAMESPACE/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/Text/@EntryValue">$HEADER$using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
/// <summary>
|
||||
/// This is a prototype for...
|
||||
/// </summary>
|
||||
[Prototype($END$)]
|
||||
public sealed class $CLASS$ : IPrototype, IInheritingPrototype {
|
||||
/// <inheritdoc/>
|
||||
[IdDataField]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <inheritdoc/>
|
||||
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<$CLASS$>))]
|
||||
public string[]? Parents { get; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[NeverPushInheritance]
|
||||
[AbstractDataField]
|
||||
public bool Abstract { get; }
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=EA04030275C2A349A1CF0D32838BD1FA/UITag/@EntryValue">SS14</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Applicability/=File/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/CustomProperties/=Extension/@EntryIndexedValue">cs</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/CustomProperties/=FileName/@EntryIndexedValue">FooComponent</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/CustomProperties/=ValidateFileName/@EntryIndexedValue">True</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Description/@EntryValue">&Client/Server Net Component</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=CLASS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=CLASS/Expression/@EntryValue">getAlphaNumericFileNameWithoutExtension()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=CLASS/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=HEADER/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=HEADER/Expression/@EntryValue">fileheader()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=HEADER/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=NAMESPACE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=NAMESPACE/Expression/@EntryValue">fileDefaultNamespace()</s:String>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Field/=NAMESPACE/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Scope/=E8F0594528C33E45BBFEC6CFE851095D/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Scope/=E8F0594528C33E45BBFEC6CFE851095D/Type/@EntryValue">InCSharpProjectFile</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/Text/@EntryValue">$HEADER$using Robust.Shared.GameStates;
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
/// <inheritdoc/>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
[ComponentReference(typeof(Shared$CLASS$))]
|
||||
public sealed partial class $CLASS$ : Shared$CLASS$ {
|
||||
$END$
|
||||
}</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=F78E2BE57FA393438C0E0AC717B4FC76/UITag/@EntryValue">SS14</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Description/@EntryValue">CVarDef declaration</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Field/=DEFAULT/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Field/=DEFAULT/Order/@EntryValue">3</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Field/=FLAGS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Field/=FLAGS/Order/@EntryValue">4</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Field/=TAG/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Field/=TAG/Order/@EntryValue">2</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Scope/=C3001E7C0DA78E4487072B7E050D86C5/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue">InCSharpFile</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Shortcut/@EntryValue">cvardef</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=FBDED813A3D26A429C42F3215186E80F/Text/@EntryValue">public static readonly CVarDef<$TYPE$> $NAME$ =
|
||||
CVarDef.Create("$TAG$", $DEFAULT$, $FLAGS$);</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Description/@EntryValue">Networked Auto State Component</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Field/=ACCESS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Field/=ACCESS/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Scope/=C3001E7C0DA78E4487072B7E050D86C5/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue">InCSharpFile</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Shortcut/@EntryValue">nscomp</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=43636A0FA0FC32489EDF8E6516687CA0/Text/@EntryValue">[RegisterComponent, Robust.Shared.GameStates.NetworkedComponent, AutoGenerateComponentState]
|
||||
[Access(typeof($ACCESS$))]</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Description/@EntryValue">Networked Component</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Field/=ACCESS/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Field/=ACCESS/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Scope/=C3001E7C0DA78E4487072B7E050D86C5/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Scope/=C3001E7C0DA78E4487072B7E050D86C5/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Scope/=C3001E7C0DA78E4487072B7E050D86C5/Type/@EntryValue">InCSharpFile</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Shortcut/@EntryValue">ncomp</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=493E60636E58114E8CFC22C9E0DF1513/Text/@EntryValue">[RegisterComponent, Robust.Shared.GameStates.NetworkedComponent]
|
||||
[Access(typeof($ACCESS$))]</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Applicability/=Live/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Description/@EntryValue">Automatically Networked Data Field</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Field/=NAME/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Field/=NAME/Order/@EntryValue">1</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Field/=TYPE/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Field/=TYPE/Order/@EntryValue">0</s:Int64>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Reformat/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/@KeyIndexDefined">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/CustomProperties/=minimumLanguageVersion/@EntryIndexedValue">2.0</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Scope/=B68999B9D6B43E47A02B22C12A54C3CC/Type/@EntryValue">InCSharpTypeMember</s:String>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Shortcut/@EntryValue">nfield</s:String>
|
||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/ShortenQualifiedReferences/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=E5309225B3C35D409F6D38F2DEE27CBD/Text/@EntryValue">[DataField, AutoNetworkedField]
|
||||
public $TYPE$ $NAME$;</s:String>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=adminbus/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=adminned/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Aghost/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=ahelp/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Airblocked/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=akms/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Anchorable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Antag/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Antags/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Atmos/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=autoconnect/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Autolathe/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Barotrauma/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bloodloss/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bluespace/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=bluespaced/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=bwoink/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=BYOND/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=cellslot/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=CentCom/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Charlieson/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=circulator/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Clonexadone/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Collidable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Collidables/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=comms/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Computus/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Constructible/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Cooldowns/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Cryostorage/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Deadminned/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Dentification/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Diethylamine/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=doafter/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Drainable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=euid/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Firelock/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Cuffable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=cvar/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=cvars/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Deadzone/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Discharger/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=crit/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=exposable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=firelocks/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=diminishingly/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=flashable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Flatpack/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Fluidsynth/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=formattable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=freepats/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=gamemode/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gibs/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=godmode/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=gridcast/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Grindable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=hardcode/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=hbox/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=hotbar/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=inhand/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Jitteriness/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Jittering/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Juiceable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=keybind/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=keybinds/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Kibibyte/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Kibibytes/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Lacunarity/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Lerp/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=lerping/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=loadout/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=LOOC/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Magboots/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=metabolizable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=metagaming/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=mommi/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Monstermos/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nar_0027/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Noto/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=NTSS/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=occluder/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Occluders/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Octile/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pathfind/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Patreon/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=pdas/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Phoron/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pinpointer/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=pinpointers/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=pipenet/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=pipenode/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=placeable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=preemptively/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=prefs/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Protolathe/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pullable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Redescribe/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Reparenting/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=roundstart/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ruinable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=saltern/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=sandboxing/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=satisfier/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Serilog/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Shrimple/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=singulo/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Smokable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=smokables/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Soundfont/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=soundfonts/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=spammable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=spawnable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Spawner/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Spillable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Spirate/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=squeek/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Strippable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=stunnable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=subfloor/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Superconduct/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=superconduction/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=swsl/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=TCMB/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Teleporter/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Thermite/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Thermo/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Thonk/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=threadsafe/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=tickrate/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=toggleghosts/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Toolshed/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Toolshed_0027s/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Trasen/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unanchor/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unanchored/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unanchoring/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Uncancel/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Uncancels/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Uncuff/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=underplating/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unequip/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unexcite/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unequip/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unhiding/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unlockable/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unobtanium/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unoccluded/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unweld/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=uplink/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Wirecutter/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Xeno/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Xenoarchaeology/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=xform/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Xnor/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=yamls/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Zumos/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
||||
@@ -1,4 +1,7 @@
|
||||
[game]
|
||||
[cp14]
|
||||
arrivals_ship = false
|
||||
|
||||
[game]
|
||||
# Straight in-game baby
|
||||
lobbyenabled = false
|
||||
# Dev map for faster loading & convenience
|
||||
|
||||
21
Resources/Locale/en-US/_CP14/keyring/keyring.ftl
Normal file
21
Resources/Locale/en-US/_CP14/keyring/keyring.ftl
Normal file
@@ -0,0 +1,21 @@
|
||||
cp14-lock-verb-lockpick-use-text = Push: {$height}
|
||||
cp14-lock-verb-lockpick-use-message = If you engage the lock prongs in the correct sequence, you can unlock the lock.
|
||||
|
||||
cp14-lock-keyring-use-nofit = The key does not fit!
|
||||
|
||||
cp14-lock-unlock-lock = You have opened {$lock}
|
||||
cp14-lock-lock-lock = You closed {$lock}
|
||||
|
||||
cp14-lock-lockpick-success = You have successfully picked the lock!
|
||||
cp14-lock-lockpick-failed = {$lock} is reset to its original position.
|
||||
cp14-lock-lockpick-failed-damage = {$lock} is reset to its original position, damaging your lockpick.
|
||||
cp14-lock-lockpick-failed-break = {$lock} resets to its original position, breaking your lockpick.
|
||||
|
||||
cp14-lock-verb-use-key-text-open = Open the lock with {$item}.
|
||||
cp14-lock-verb-use-key-text-close = Close the lock with {$item}
|
||||
cp14-lock-verb-use-key-message = Use {$item} to lock or unlock the lock.
|
||||
|
||||
cp14-lock-examine-lock-slot = {$lock} is hanging here.
|
||||
cp14-lock-examine-lock-lockpicked = {$lock} looks shabby.
|
||||
|
||||
cp14-lock-examine-key = The {$item} has prongs of the following shape:
|
||||
@@ -12,4 +12,6 @@ cp14-loadout-basic-shoes = Shoes
|
||||
# Org
|
||||
|
||||
cp14-loadout-captain-cloak = Captain's cloak
|
||||
cp14-loadout-captain-head = Captain's head
|
||||
cp14-loadout-captain-head = Captain's head
|
||||
|
||||
cp14-loadout-guard-commander-cloak = Guard commander's cloak
|
||||
7
Resources/Locale/en-US/_CP14/magicEnergy/magic-focus.ftl
Normal file
7
Resources/Locale/en-US/_CP14/magicEnergy/magic-focus.ftl
Normal file
@@ -0,0 +1,7 @@
|
||||
cp14-magic-attuning-verb-text = Attune yourself
|
||||
cp14-magic-attuning-verb-message = Some magic items require a creature to form a bond with them before their magical properties can be used.
|
||||
|
||||
cp14-magic-deattuning-verb-text = Break attune
|
||||
|
||||
cp14-magic-attune-oldest-forgot = Your connection to {$item} is weakening ...
|
||||
cp14-magic-attune-oldest-forgot-end = Your connection to {$item} has broken...
|
||||
@@ -7,4 +7,7 @@ cp14-magic-spell-not-enough-mana-cast-warning-3 = Your throat starts to lump...
|
||||
cp14-magic-spell-not-enough-mana-cast-warning-4 = Your head becomes heavy...
|
||||
|
||||
cp14-magic-energy-damage-burn-out = The pain is piercing your body!
|
||||
cp14-magic-energy-damage-burn-out-fall = You pass out from the intense pain!
|
||||
cp14-magic-energy-damage-burn-out-fall = You pass out from the intense pain!
|
||||
|
||||
cp14-magic-spell-need-verbal-component = You can't cast the spell out loud.
|
||||
cp14-magic-spell-need-somatic-component = You don't have your hands free.
|
||||
@@ -0,0 +1 @@
|
||||
cp-sign-verb = Sign
|
||||
@@ -7,3 +7,5 @@ damage-weapon-1 = Looks completely intact
|
||||
damage-weapon-2 = Covered in a couple of scratches.
|
||||
damageable-weapon-3 = Looks worn.
|
||||
damageable-weapon-4 = It's about to break.
|
||||
|
||||
sharpening-ready = Perfectly sharpened
|
||||
|
||||
4
Resources/Locale/en-US/_CP14/stack/coins.ftl
Normal file
4
Resources/Locale/en-US/_CP14/stack/coins.ftl
Normal file
@@ -0,0 +1,4 @@
|
||||
cp14-stack-copper-coin = copper coins
|
||||
cp14-stack-silver-coin = silver coins
|
||||
cp14-stack-gold-coin = gold coins
|
||||
cp14-stack-platinum-coin = platinum coins
|
||||
8
Resources/Locale/en-US/_CP14/stack/materials.ftl
Normal file
8
Resources/Locale/en-US/_CP14/stack/materials.ftl
Normal file
@@ -0,0 +1,8 @@
|
||||
cp14-stack-dirt-block = dirt blocks
|
||||
cp14-stack-stone-block = stone blocks
|
||||
cp14-stack-wood-planks = wooden planks
|
||||
cp14-stack-nails = nails
|
||||
|
||||
cp14-stack-copper-bars = copper bars
|
||||
cp14-stack-iron-bars = iron bars
|
||||
cp14-stack-gold-bars = gold bars
|
||||
12
Resources/Locale/en-US/_CP14/tips/tip.ftl
Normal file
12
Resources/Locale/en-US/_CP14/tips/tip.ftl
Normal file
@@ -0,0 +1,12 @@
|
||||
cp14-tips-1 = Keep an eye on the condition of your weapon! You can inspect it to see its condition and sharpness.
|
||||
cp14-tips-2 = If your weapon is dull, you can sharpen it with sharpening stones.
|
||||
cp14-tips-3 = Some light weapons, such as daggers or sickles, are effective for dual wield combat.
|
||||
cp14-tips-4 = Some magic items can only work after being attuned. To customize the binding, press the RMB and select the desired action.
|
||||
cp14-tips-5 = As an alchemist, if you mix some reagents together, you can no longer separate them! Look for the right alchemical reactions that will allow you to edit your solution.
|
||||
cp14-tips-6 = As an alchemist, remember to keep your cauldron off the stove or fire. Your potion may boil over, releasing a reagent cloud.
|
||||
cp14-tips-7 = DEBUG: To see all crafting recipes available on workbenches - look for them in the context menu on the RMB.
|
||||
cp14-tips-8 = If you run out of magic energy, you can still use spells and spend mana, but it will damage you and potentially render you unconscious!
|
||||
cp14-tips-9 = There are places in the world with positive or negative magical polarity. In these places, mana regenerates faster, or conversely, can be passively spent. To find such places, use the Aura Scanner.
|
||||
cp14-tips-10 = Tall bushes are good for hiding your character! But they slow you down a lot and make a lot of noise if you move in them.
|
||||
cp14-tips-11 = Don't forget to lock your doors if you don't want anyone to get in!
|
||||
cp14-tips-12 = DEBUG: Be careful with fire! Until we add ways to comfortably put out fires!
|
||||
@@ -1,5 +1,6 @@
|
||||
cp14-verb-categories-craft = Select recipe:
|
||||
cp14-workbench-ui-title = Item creation
|
||||
|
||||
cp14-workbench-craft = Craft
|
||||
cp14-workbench-recipe-list = Recipe:
|
||||
|
||||
cp14-workbench-no-resource = There aren't enough ingredients!
|
||||
@@ -18,14 +18,14 @@ ent-CP14BaseKey = ключ
|
||||
ent-CP14BaseLockpick = отмычка
|
||||
.desc = Воровской инструмент, при должном умении и сноровке позволяющий взламывать любые замки.
|
||||
|
||||
ent-CP14KeyTavern = ключ от таверны
|
||||
.desc = { ent-CP14BaseKey.desc }
|
||||
|
||||
ent-CP14BaseLock = стальной замок
|
||||
.desc = Он запирает вещи. И вам потребуется ключ, чтобы открыть их обратно.
|
||||
|
||||
ent-CP14LockTavern = замок от таверны
|
||||
.desc = { ent-CP14BaseLock.desc }
|
||||
ent-CP14BaseMagicRune = magic rune
|
||||
.desc = manifestation of magical energy in the physical plane
|
||||
|
||||
ent-CP14BaseMagicImpact = magic impact
|
||||
.desc = manifestation of magical energy in the physical plane
|
||||
|
||||
ent-CP14ClothingCloakArmoredRed = бронированная красная накидка
|
||||
.desc = Огромные металлические наплечники дают дополнительную защиту от отрубания головы.
|
||||
@@ -33,6 +33,9 @@ ent-CP14ClothingCloakArmoredRed = бронированная красная на
|
||||
ent-CP14ClothingCloakBlacksmithArpon = фартук кузнеца
|
||||
.desc = Свободные кожанные полоски, все еще фактически являющиеся одеждой.
|
||||
|
||||
ent-CP14ClothingCloakMaidArpon = фартук горничной
|
||||
.desc = Чистота, порядок и послушание - вот основные черты хорошей горничной.
|
||||
|
||||
ent-CP14ClothingCloakFurcapeBlack = меховая накидка
|
||||
.desc = Брутальная, выделанная из шерсти, накидка на плечи.
|
||||
|
||||
@@ -108,6 +111,21 @@ ent-CP14ClothingPantsAristocratic = штаны аристократа
|
||||
ent-CP14ClothingPantsLoincloth = набедренная повязка
|
||||
.desc = Свободные, ничего не мешает, да еще и выглядят экстремально брутально
|
||||
|
||||
ent-CP14ClothingDressBlack = черное платье
|
||||
.desc = Просторная женское платье
|
||||
|
||||
ent-CP14ClothingRingIceDagger = conductive ring
|
||||
.desc = A standard mana-conductive ring that allows the user to summon ice daggers.
|
||||
.suffix = Ice Dagger
|
||||
|
||||
ent-CP14ClothingRingFlameCreation = conductive ring
|
||||
.desc = A standard mana-conductive ring that allows the user to summon artificial flames.
|
||||
.suffix = Flame creation
|
||||
|
||||
ent-CP14ClothingRingCureWounds = conductive ring
|
||||
.desc = A standard mana-conductive ring that allows the user to heal physical injuries.
|
||||
.suffix = Cure Wounds
|
||||
|
||||
ent-CP14ClothingShirtCottonBlue = хлопковая синяя рубаха
|
||||
.desc = { ent-CP14ClothingShirtCottonBlue.desc }
|
||||
|
||||
@@ -135,21 +153,26 @@ ent-CP14ClothingShoesBlack = простые черные ботинки
|
||||
ent-CP14ClothingShoesAristocraticBlack = аристократичные черные ботинки
|
||||
.desc = Они достаточно дороги, чтобы вы не захотели в них ходить по пещерам.
|
||||
|
||||
ent-CP14ClothingShoesSandals = сандали
|
||||
.desc = Сандали, сделанные из грубой кожи и металлических креплений.
|
||||
ent-CP14ClothingShoesSandals = сандалии
|
||||
.desc = Сандалии, сделанные из грубой кожи и металлических креплений.
|
||||
|
||||
ent-CP14Mist = облако
|
||||
|
||||
ent-CP14MistVitalExtract = { ent-CP14Mist }
|
||||
.desc = { ent-CP14Mist.desc }
|
||||
|
||||
ent-CP14ExpeditionShipTargetPoint = Expedition ship target point
|
||||
.desc = One of the possible arrival points of a ship carrying players
|
||||
ent-CP14AuraNodeBase = aura node
|
||||
.desc = An energy node that affects the elemental energy in the surrounding space.
|
||||
|
||||
ent-CP14ExpeditionShipTargetPoint = пункт назначения экспедиционного судна
|
||||
.desc = Один из возможных пунктов прибытия корабля с игроками.
|
||||
|
||||
ent-CP14SpawnPointAdventurer = авантюрист
|
||||
|
||||
ent-CP14SpawnPointAlchemist = алхимик
|
||||
|
||||
ent-CP14SpawnPointCaptain = капитан
|
||||
|
||||
ent-CP14ConstrainedSpawnerBase = None
|
||||
.desc = lol
|
||||
|
||||
@@ -213,7 +236,7 @@ ent-CP14OreGold = золотая руда
|
||||
.desc = Кусочек мягкого, чистого золота.
|
||||
|
||||
ent-CP14CopperCoin = медная корона
|
||||
.desc = Минимальная экономическая единица на просторах Эберрона. Является одной десятой серебрянного соверена.
|
||||
.desc = Минимальная экономическая единица на просторах Эберрона. Является одной десятой серебряного соверена.
|
||||
.suffix = 10 монет
|
||||
|
||||
ent-CP14CopperCoin5 = { ent-CP14CopperCoin }
|
||||
@@ -224,7 +247,7 @@ ent-CP14CopperCoin1 = { ent-CP14CopperCoin }
|
||||
.desc = { ent-CP14CopperCoin.desc }
|
||||
.suffix = 1 монета
|
||||
|
||||
ent-CP14SilverCoin = серебрянный соверен
|
||||
ent-CP14SilverCoin = серебряный соверен
|
||||
.desc = Эквивалентен 10 медным коронам, и является одной десятой золотого галифара.
|
||||
.suffix = 10 монет
|
||||
|
||||
@@ -237,7 +260,7 @@ ent-CP14SilverCoin1 = { ent-CP14SilverCoin }
|
||||
.suffix = 1 монета
|
||||
|
||||
ent-CP14GoldCoin = золотой галифар
|
||||
.desc = Эквивалентен 10 серебрянным соверенам, и является одной десятой платинового дракона.
|
||||
.desc = Эквивалентен 10 серебряным соверенам, и является одной десятой платинового дракона.
|
||||
.suffix = 10 монет
|
||||
|
||||
ent-CP14GoldCoin5 = { ent-CP14GoldCoin }
|
||||
@@ -267,6 +290,41 @@ ent-CP14WalletFilledTest = { ent-CP14Wallet }
|
||||
.desc = { ent-CP14Wallet.desc }
|
||||
.suffix = Filled test
|
||||
|
||||
ent-CP14CopperBar1 = медный слиток
|
||||
.desc = Тяжелый, слегка зеленый кусок обработанной меди.
|
||||
.suffix = 1
|
||||
|
||||
ent-CP14CopperBar5 = { ent-CP14CopperBar1 }
|
||||
.desc = { ent-CP14CopperBar1.desc }
|
||||
.suffix = 5
|
||||
|
||||
ent-CP14CopperBar10 = { ent-CP14CopperBar1 }
|
||||
.desc = { ent-CP14CopperBar1.desc }
|
||||
.suffix = 10
|
||||
|
||||
ent-CP14IronBar1 = iron bar
|
||||
.desc = A heavy piece of refined iron
|
||||
.suffix = 1
|
||||
|
||||
ent-CP14IronBar5 = { ent-CP14IronBar1 }
|
||||
.desc = { ent-CP14IronBar1.desc }
|
||||
.suffix = 5
|
||||
|
||||
ent-CP14IronBar10 = { ent-CP14IronBar1 }
|
||||
.desc = { ent-CP14IronBar1.desc }
|
||||
.suffix = 10
|
||||
|
||||
ent-CP14GoldBar1 = золотой слиток
|
||||
.desc = Теплый на ощупь, мягкий кусок изысканного золота.
|
||||
|
||||
ent-CP14GoldBar5 = { ent-CP14GoldBar1 }
|
||||
.desc = { ent-CP14GoldBar1.desc }
|
||||
.suffix = 5
|
||||
|
||||
ent-CP14GoldBar10 = { ent-CP14GoldBar1 }
|
||||
.desc = { ent-CP14GoldBar1.desc }
|
||||
.suffix = 10
|
||||
|
||||
ent-CP14DirtBlock1 = блок земли
|
||||
.desc = Блок великолепной плодородной почвы.
|
||||
|
||||
@@ -345,6 +403,36 @@ ent-CP14VialSmallLumiMushroom = { ent-CP14VialTiny }
|
||||
.desc = { ent-CP14VialTiny.desc }
|
||||
.suffix = Люмигриб
|
||||
|
||||
ent-CP14MeltingMoldBase = форма для выплавки
|
||||
.desc = Деревянная доска для заливки металла в необходимые формы.
|
||||
|
||||
ent-CP14MeltingMoldBlank = форма для выплавки заготовок
|
||||
.desc = Пустая форма для литья металла. Вы можете вырезать в ней любую нужную форму на столе для резки деталей.
|
||||
|
||||
ent-CP14MeltingMoldDaggers = форма для кинжала
|
||||
.desc = { ent-CP14MeltingMoldBase.desc }
|
||||
|
||||
ent-CP14MeltingMoldNails = форма для гвоздей
|
||||
.desc = { ent-CP14MeltingMoldBase.desc }
|
||||
|
||||
ent-CP14MeltingMoldPickaxe = форма для кирки
|
||||
.desc = { ent-CP14MeltingMoldBase.desc }
|
||||
|
||||
ent-CP14MeltingMoldShovel = форма для лопаты
|
||||
.desc = { ent-CP14MeltingMoldBase.desc }
|
||||
|
||||
ent-CP14MeltingMoldSickle = форма для серпа
|
||||
.desc = { ent-CP14MeltingMoldBase.desc }
|
||||
|
||||
ent-CP14MeltingMoldSword = форма для меча
|
||||
.desc = { ent-CP14MeltingMoldBase.desc }
|
||||
|
||||
ent-CP14MeltingMoldThrowableSpear = форма для метательного копья
|
||||
.desc = { ent-CP14MeltingMoldBase.desc }
|
||||
|
||||
ent-CP14MeltingMoldTwoHandedSword = форма для двуручного меча
|
||||
.desc = { ent-CP14MeltingMoldBase.desc }
|
||||
|
||||
ent-CP14Wheat = сноп пшеницы
|
||||
.desc = У вас есть выбор: посадить семена обратно в землю, либо пустить их в муку.
|
||||
|
||||
@@ -367,9 +455,9 @@ ent-CP14LumiMushroom = люмигриб
|
||||
.desc = Слабо светящийся гриб. Часто используется алхимиками как средство для концентрации растворов.
|
||||
|
||||
ent-CP14EnergyCrystalBase = None
|
||||
.desc = Обработанные кристаллы кварца являются прекрасными хранителями магической энергии. А специальные разъемы позволяют удобно вставлять их в магические устройства, превращая в энергетические батарейки.
|
||||
.desc = Shards of one of the Khyber dragon, used to bind and control elemental energy.
|
||||
|
||||
ent-CP14EnergyCrystalSmall = маленький энергокристалл
|
||||
ent-CP14EnergyCrystalSmall = small Khyber shard
|
||||
.desc = { ent-CP14EnergyCrystalBase.desc }
|
||||
.suffix = Full
|
||||
|
||||
@@ -377,7 +465,7 @@ ent-CP14EnergyCrystalSmallEmpty = { ent-CP14EnergyCrystalSmall }
|
||||
.desc = { ent-CP14EnergyCrystalSmall.desc }
|
||||
.suffix = Empty
|
||||
|
||||
ent-CP14EnergyCrystalMedium = энергокристалл
|
||||
ent-CP14EnergyCrystalMedium = Khyber shard
|
||||
.desc = { ent-CP14EnergyCrystalBase.desc }
|
||||
.suffix = Full
|
||||
|
||||
@@ -385,9 +473,12 @@ ent-CP14EnergyCrystalMediumEmpty = { ent-CP14EnergyCrystalMedium }
|
||||
.desc = { ent-CP14EnergyCrystalMedium.desc }
|
||||
.suffix = Empty
|
||||
|
||||
ent-CP14AuraScanner = сканер ауры
|
||||
.desc = Сканирует полярность потоков элементальной энергии в этом месте.
|
||||
|
||||
ent-CP14Bucket = ведро
|
||||
.desc = Старое скучное ведро
|
||||
.suffix = CP14, Нужен респрайт!
|
||||
.suffix = CP14
|
||||
|
||||
ent-CP14OldLantern = Старая Лампа
|
||||
.desc = Пережиток прошлого техномагии. Большой, тяжелый, непрактичный. Таким приятно разве что бить по голове.
|
||||
@@ -399,7 +490,7 @@ ent-CP14BaseSharpeningStone = точильный камень
|
||||
.desc = Позволит заточить притупленное оружие. Если перестараться, вы вполне можете сточить оружие полностью.
|
||||
|
||||
ent-CP14BaseBattleHammer = боевой молот
|
||||
.desc = A big heavy hammer! Bruh!
|
||||
.desc = Большой тяжелый молот. Лучше вам не стоять у него на пути!
|
||||
|
||||
ent-CP14BaseBattleStaff = боевой посох
|
||||
.desc = Нет оружия проще и эффективнее, чем длинная и тяжелая палка!
|
||||
@@ -443,28 +534,12 @@ ent-CP14BasePickaxe = кирка
|
||||
ent-CP14BaseShovel = лопата
|
||||
.desc = Орудие для вскапывания земли, рытья грядок или могил.
|
||||
|
||||
ent-CP14WeaponRevolverNavy = револьвер "Марин"
|
||||
.desc = Увесистый капсюльный револьвер серии "Марин". В настоящее время револьверы серии "Марин" стоят баснословные деньги, и их могут позволить себе исключительно преуспевающие моряки и торговцы.
|
||||
|
||||
ent-CP14BaseLightCrossbow = легкий арбалет
|
||||
.desc = Небольшой, компактный арбалет, который удобно держать одной рукой. Не слишком меткий с обратной стороны.
|
||||
|
||||
ent-CP14WeaponRifleCrush = крушитель
|
||||
.desc = Легкая, дорогая и непростая в обращении винтовка.
|
||||
|
||||
ent-CP14WeaponRifleDurandal = дюрандаль
|
||||
.desc = Винтовка среднего размера, дорогая и не очень удобная в использовании.
|
||||
|
||||
ent-CP14WeaponRifleLebel = лебел
|
||||
.desc = Тяжелая, дорогая и не очень удобная в использовании винтовка.
|
||||
|
||||
ent-CP14Crossbolt = арбалетный болт
|
||||
.desc = Стержень с заостренным концом. Без оперения, это вам не лук.
|
||||
|
||||
ent-CP14CartridgeBulletRifle = винтовочный патрон
|
||||
|
||||
ent-CP14BulletRifle = винтовочная пуля
|
||||
|
||||
ent-CP14DungeonEntrance = спуск в подземелье
|
||||
.desc = Темные глубины подземного мира зовут вас.
|
||||
|
||||
@@ -477,6 +552,22 @@ ent-CP14BaseSharpeningStoneStructure = стационарный точильны
|
||||
ent-CP14Mannequin = манекен
|
||||
.desc = Удобная подставка для одежды или доспехов.
|
||||
|
||||
ent-CP14StatueGob = статуя Гоба
|
||||
.desc = Он прекрасен.
|
||||
.suffix = Нормальная
|
||||
|
||||
ent-CP14StatueGobVines = статуя Гоба
|
||||
.desc = { ent-CP14StatueGob.desc }
|
||||
.suffix = Нормальная. Заросшая
|
||||
|
||||
ent-CP14StatueGobRuined = разрушенная статуя Гоба
|
||||
.desc = { ent-CP14StatueGob.desc }
|
||||
.suffix = Разрушенная
|
||||
|
||||
ent-CP14StatueGobRuinedVines = разрушенная статуя Гоба
|
||||
.desc = { ent-CP14StatueGob.desc }
|
||||
.suffix = Разрушенная. Заросшая
|
||||
|
||||
ent-CP14WallmountWoodenBoards = доски
|
||||
.desc = Прибиты к стене. Зачем? не совсем ясно.
|
||||
|
||||
@@ -492,7 +583,7 @@ ent-CP14BaseWoodDoor = деревянная дверь
|
||||
|
||||
ent-CP14WoodDoorOpened = { ent-CP14BaseWoodDoor }
|
||||
.desc = { ent-CP14BaseWoodDoor.desc }
|
||||
.suffix = Opened
|
||||
.suffix = Открытая
|
||||
|
||||
ent-CP14WoodDoorTavern = { ent-CP14BaseWoodDoor }
|
||||
.desc = { ent-CP14BaseWoodDoor.desc }
|
||||
@@ -604,7 +695,7 @@ ent-CP14CrystalDiamondsBig = { ent-CP14CrystalBase }
|
||||
.suffix = White, Big
|
||||
|
||||
ent-CP14FloorWater = вода
|
||||
.desc = Брух
|
||||
.desc = Впадина с обычной водой. Достаточна чиста для употребления.
|
||||
|
||||
ent-CP14HighBush = высокий куст
|
||||
.desc = Высокие и густые заросли. Возможно кто-то наблюдает за тобой из них.
|
||||
@@ -722,7 +813,7 @@ ent-CP14TableWooden = деревянный стол
|
||||
.desc = Простой стол, сколоченный из досок.
|
||||
|
||||
ent-CP14WallmountTorch = настенный факел
|
||||
.desc = Хороший, надеждный источник света. Жаль, недолговечный.
|
||||
.desc = Хороший, надёжный источник света. Жаль, недолговечный.
|
||||
|
||||
ent-CP14WallmountLamp = вечная лампа
|
||||
.desc = Хрупкий вечный голубой огонь как доказательство превосходства магии над природой.
|
||||
@@ -738,6 +829,9 @@ ent-CP14WallmountBarShelfB = { ent-CP14WallmountBarShelfA }
|
||||
ent-CP14Workbench = верстак
|
||||
.desc = Стол для создания различного базового инструментария.
|
||||
|
||||
ent-CP14WorkbenchMeltingMolds = стол для резки форм
|
||||
.desc = Специализированный стол, позволяющий вырезать формы для выплавки металла.
|
||||
|
||||
ent-CP14FrameWooden = каркас деревянной стены
|
||||
.desc = Деревянный каркас для деревянных стен любых видов.
|
||||
|
||||
@@ -763,7 +857,7 @@ ent-CP14GatherableWildBase = { ent-CP14GatherableBase }
|
||||
ent-CP14GatherablePlantBase = { ent-CP14GatherableBase }
|
||||
.desc = { ent-CP14GatherableBase.desc }
|
||||
|
||||
ent-CP14PlantWheat = пщеница
|
||||
ent-CP14PlantWheat = пшеница
|
||||
.desc = Наиболее популярная культура. Непритязательна, и открывает дорогу к разнообразию мучных изделий.
|
||||
|
||||
ent-CP14PlantWheatDeath = мертвая пшеница
|
||||
@@ -789,6 +883,9 @@ ent-CP14GatherableLumiMushroom = люмигрибы
|
||||
.desc = Слабо светящийся гриб. Часто используется алхимиками как средство для концентрации растворов.
|
||||
.suffix = Gatherable
|
||||
|
||||
ent-CP14ElementalReactor = elemental reactor
|
||||
.desc = A work of art created by the dwarves of Zilagro and House Lyrandar, controlling the fire elemental and allowing it to produce vast amounts of energy.
|
||||
|
||||
ent-CP14ChestGeneric = сундук
|
||||
.desc = Chest.
|
||||
|
||||
@@ -804,6 +901,15 @@ ent-CP14BrassChest = латунный сундук
|
||||
ent-CP14CrateCoffin = гроб
|
||||
.desc = Удобный и красивый гроб, чтобы с удобствами дождаться своего воскрешения.
|
||||
|
||||
ent-CP14BaseSmallCrate = { ent-CP14BaseCrate }
|
||||
.desc = { ent-CP14BaseCrate.desc }
|
||||
|
||||
ent-CP14LargeWoodenCrate = большой деревянный ящик
|
||||
.desc = Ящик из дерева.
|
||||
|
||||
ent-CP14SmallWoodenCrate = малый деревянный ящик
|
||||
.desc = Ящик из дерева.
|
||||
|
||||
ent-CP14Cliff = обрыв
|
||||
.desc = Серьезные неровности природного ландшафта.
|
||||
.suffix = Прямой
|
||||
@@ -840,17 +946,17 @@ ent-CP14IronGrilleTJunction = { ent-CP14IronGrilleBase }
|
||||
.suffix = Т-соединение
|
||||
|
||||
ent-CP14IronGrilleGate = ворота в железной решетке
|
||||
.desc = Do you have any idea what awaits you behind these gates? It can be either a toilet or a luxurious mansion.
|
||||
.desc = Представляете ли вы, что ждет вас за этими воротами? Это может быть как туалет, так и роскошный особняк.
|
||||
|
||||
ent-CP14WallStone = камень
|
||||
.desc = Природная стена из цельного камня. В ней ощущается холод пещеры.
|
||||
|
||||
ent-CP14WallDirt = земляной холм
|
||||
.desc = bruh
|
||||
.desc = Высокая куча земли. Можно ли построить из нее дом?
|
||||
|
||||
ent-CP14WallStoneGoldOre = { ent-CP14WallStone }
|
||||
.desc = A solid stone natural wall. You see the tantalizing particles of gold in it.
|
||||
.suffix = gold ore
|
||||
.desc = Природная стена из цельного камня. Вы видите в ней манящие частицы золота.
|
||||
.suffix = золотая руда
|
||||
|
||||
ent-CP14BaseWall = стена
|
||||
.desc = Достаточно прочная, чтобы укрыть вас от угрозы или холодного ветра.
|
||||
@@ -858,6 +964,14 @@ ent-CP14BaseWall = стена
|
||||
ent-CP14WallStonebrick = каменная кирпичная стена
|
||||
.desc = { ent-CP14BaseWall.desc }
|
||||
|
||||
ent-CP14WallStonebrickCrushedMedium = каменная кирпичная стена
|
||||
.desc = { ent-CP14BaseCrushed.desc }
|
||||
.suffix = CrushedMedium
|
||||
|
||||
ent-CP14WallStonebrickCrushedLow = каменная кирпичная стена
|
||||
.desc = { ent-CP14BaseCrushed.desc }
|
||||
.suffix = CrushedLow
|
||||
|
||||
ent-CP14WallWhitebrick = белая кирпичная стена
|
||||
.desc = { ent-CP14BaseWall.desc }
|
||||
|
||||
@@ -911,15 +1025,15 @@ ent-CP14FenceWoodSmallGate = ворота в деревянном заборе
|
||||
ent-CP14WindowStoneBrick = окно в стене из каменного кирпича
|
||||
.desc = Каменная кирпичная стена, и проделанным в ней стеклянным окном.
|
||||
|
||||
ent-CP14WindowWooden = wooden window
|
||||
.desc = A wooden wall with a glass window in it.
|
||||
ent-CP14WindowWooden = деревянное окно
|
||||
.desc = Деревянная стена со стеклянным окном.
|
||||
|
||||
ent-CP14OreSilver = серебро
|
||||
.desc = Кусочек блестящего, теплого серебра.
|
||||
|
||||
ent-CP14WallStoneSilverOre = { ent-CP14WallStone }
|
||||
.desc = A solid stone natural wall. You see the tantalizing particles of silver in it.
|
||||
.suffix = silver ore
|
||||
.desc = Природная стена из цельного камня. Вы видите в ней манящие частицы серебра.
|
||||
.suffix = серебряная руда
|
||||
|
||||
ent-CP14ClothingHeadWhiteBeret = белый берет
|
||||
.desc = Это берет.
|
||||
@@ -960,3 +1074,88 @@ ent-CP14CardboardWall = стена из картона
|
||||
ent-CPBaseSharpeningStoneStructure = стационарный точильный камень
|
||||
.desc = прочный, долговечный точильный камень, способный затачивать оружие без особого вреда для него.
|
||||
|
||||
ent-CP14GreenBottle = Зеленая бутылка
|
||||
.desc = Зеленая бутылка, идеально подходит для пива.
|
||||
.suffix = Пустая
|
||||
|
||||
ent-CP14BlueVial = Синий флакон
|
||||
.desc = Синий флакон, идеально подходит для рома.
|
||||
.suffix = Пустой
|
||||
|
||||
ent-CP14GreenVial = Зеленый флакон
|
||||
.desc = Маленький зеленый флакон.
|
||||
.suffix = Пустой
|
||||
|
||||
ent-CP14OrangeBottle = Оранжевая бутылка
|
||||
.desc = Просто оранжевая бутылка.
|
||||
.suffix = Пустая
|
||||
|
||||
ent-CP14RedBottle = Красная бутылка
|
||||
.desc = Красная бутылка, идеально подходит для вина.
|
||||
.suffix = Пустая
|
||||
|
||||
ent-CP14MetalBeerMug = Металлическая кружка
|
||||
.desc = Самая обычная металлическая кружка.
|
||||
|
||||
ent-CP14WoodenBeerMug = Деревянная кружка
|
||||
.desc = Деревянная кружка для пива.
|
||||
|
||||
ent-CP14SteelBeerMug = Пивная кружка
|
||||
.desc = Деревянная кружка с железными вкраплениями.
|
||||
|
||||
ent-CP14SteelWoodBeerMug = { ent-CP14SteelBeerMug }
|
||||
.desc = { ent-CP14SteelBeerMug.desc }
|
||||
|
||||
ent-CP14RawFoodMeat = Сырая баранина
|
||||
.desc = Пахнет странно, но выглядит как обычное мясо...
|
||||
|
||||
ent-CP14CookedFoodMeat = Стейк из баранины
|
||||
.desc = Зажаренный кусок мяса. Запах первобытный.
|
||||
|
||||
ent-CP14CuttingBoard = Разделочная доска
|
||||
.desc = Поможет вам приготовить еду.
|
||||
|
||||
ent-CP14ActionSpellCureWounds = Лечение ран
|
||||
.desc = Вы касаетесь существа, исцеляя его тело от физических повреждений.
|
||||
|
||||
ent-CP14ActionSpellEarthWall = Земляная стена
|
||||
.desc = Поднимает из недр прочную стену земли.
|
||||
|
||||
ent-CP14ActionSpellFireball = Огненный шар
|
||||
.desc = Эффективный метод уничтожения - взрывной огненный шар.
|
||||
|
||||
ent-CP14ActionSpellFlameCreation = Создание пламени
|
||||
.desc = В вашей руке образуется искусственное пламя, освещающее окружающее пространство. Вы можете бросить его, чтобы использовать в качестве одноразового оружия.
|
||||
|
||||
ent-CP14FlameCreationArtificialFlame = искусственное пламя
|
||||
.desc = Магически созданное искусственное пламя, горящее прямо в воздухе. Неплохой источник света или оружие, если бросить его кому-нибудь в лицо.
|
||||
|
||||
ent-CP14ActionSpellFlashLight = Вспышка света
|
||||
.desc = Создает вспышку яркого, ослепительного света.
|
||||
|
||||
ent-CP14ActionSpellIceDagger = Ледяной кинжал
|
||||
.desc = Материализация временного острого ледяного метательного кинжала.
|
||||
|
||||
ent-CP14DaggerIce = ледяной кинжал
|
||||
.desc = Кусок острого магического льда. Через некоторое время действие заклинания ослабнет, и он исчезнет.
|
||||
|
||||
ent-CP14ActionSpellIceFloor = Ледяной пол
|
||||
.desc = Покрывает определенный участок земли скользким льдом.
|
||||
|
||||
ent-CP14IceFloor = ледяная корка
|
||||
.desc = Холодно и скользко.
|
||||
|
||||
ent-CP14ActionSpellIceShards = Ледяные осколки
|
||||
.desc = Быстрые ледяные иглы для быстрой стрельбы по мишеням.
|
||||
|
||||
ent-CP14ActionSpellShadowGrab = Теневой захват
|
||||
.desc = Вы вызываете призрачную руку, которая притягивает к вам предмет или сущность.
|
||||
|
||||
ent-CP14ActionSpellShadowStep = Теневой шаг
|
||||
.desc = Шаг сквозь прореху реальности, позволяющий быстро преодолеть небольшое расстояние.
|
||||
|
||||
ent-CP14ActionSpellSphereOfLight = Сфера света
|
||||
.desc = Материализация яркого и безопасного источника света.
|
||||
|
||||
ent-CP14SphereOfLight = Сфера света
|
||||
.desc = Сгусток яркого света в форме сферы.
|
||||
|
||||
21
Resources/Locale/ru-RU/_CP14/keyring/keyring.ftl
Normal file
21
Resources/Locale/ru-RU/_CP14/keyring/keyring.ftl
Normal file
@@ -0,0 +1,21 @@
|
||||
cp14-lock-verb-lockpick-use-text = Надавить: {$height}
|
||||
cp14-lock-verb-lockpick-use-message = Если вы в правильной последовательности заденете зубчики замка, вы сможете разблокировать его.
|
||||
|
||||
cp14-lock-keyring-use-nofit = Ключ не подходит!
|
||||
|
||||
cp14-lock-unlock-lock = Вы открыли {$lock}
|
||||
cp14-lock-lock-lock = Вы закрыли {$lock}
|
||||
|
||||
cp14-lock-lockpick-success = Вы успешно взломали замок!
|
||||
cp14-lock-lockpick-failed = {$lock} сбрасывается в исходное положение.
|
||||
cp14-lock-lockpick-failed-damage = {$lock} сбрасывается в исходное положение, повреждая вашу отмычку.
|
||||
cp14-lock-lockpick-failed-break = {$lock} сбрасывается в исходное положение, ломая вашу отмычку.
|
||||
|
||||
cp14-lock-verb-use-key-text-open = Открыть замок при помощи {$item}
|
||||
cp14-lock-verb-use-key-text-close = Закрыть замок при помощи {$item}
|
||||
cp14-lock-verb-use-key-message = Использовать {$item} чтобы заблокировать или разблокировать замок.
|
||||
|
||||
cp14-lock-examine-lock-slot = Здесь висит {$lock}
|
||||
cp14-lock-examine-lock-lockpicked = {$lock} выглядит потрепанным.
|
||||
|
||||
cp14-lock-examine-key = {$item} имеет зубцы следующей формы:
|
||||
@@ -11,4 +11,7 @@ cp14-loadout-basic-shoes = Обувь
|
||||
|
||||
# Org
|
||||
|
||||
cp14-loadout-captain-cloak = Капитанская накидка
|
||||
cp14-loadout-captain-cloak = Капитанская накидка
|
||||
cp14-loadout-captain-head = Капитанская шляпа
|
||||
|
||||
cp14-loadout-guard-commander-cloak = Накидка командира стражи
|
||||
7
Resources/Locale/ru-RU/_CP14/magicEnergy/magic-focus.ftl
Normal file
7
Resources/Locale/ru-RU/_CP14/magicEnergy/magic-focus.ftl
Normal file
@@ -0,0 +1,7 @@
|
||||
cp14-magic-attuning-verb-text = Настроиться на магический предмет
|
||||
cp14-magic-attuning-verb-message = Некоторые магические предметы требуют того, чтобы существо образовало с ними связь, прежде чем оно сможет использовать их магические свойства.
|
||||
|
||||
cp14-magic-deattuning-verb-text = Разорвать связь с магическим предметом
|
||||
|
||||
cp14-magic-attune-oldest-forgot = Ваша связь с {$item} слабеет...
|
||||
cp14-magic-attune-oldest-forgot-end = Ваша связь с {$item} оборвалась...
|
||||
@@ -10,4 +10,4 @@ cp14-magic-energy-damage-burn-out = Боль пронзает ваше тело!
|
||||
cp14-magic-energy-damage-burn-out-fall = Вы теряете сознание от сильной боли!
|
||||
|
||||
cp14-magic-spell-need-verbal-component = Вы не можете произнести заклинание вслух.
|
||||
cp14-magic-spell-need-somatic-component = Вам нужна свободная рука.
|
||||
cp14-magic-spell-need-somatic-component = Вам не хватает свободных рук.
|
||||
@@ -0,0 +1 @@
|
||||
cp-sign-verb = Подписать
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user