Workbench and crystals (#1502)
* solutionResource * fuck research system + QoL workbench update * colorful quartz returns * Refactor workbench skill requirements handling Replaces the SkillRequired requirement with a direct RequiredSkills field on CP14WorkbenchRecipePrototype. Updates client and server logic to check skills directly, simplifying recipe skill checks and related UI logic. * Initial commit Add initial project files and setup.
This commit is contained in:
@@ -1,14 +0,0 @@
|
||||
<Control xmlns="https://spacestation14.io">
|
||||
<Button Name="Button">
|
||||
<GridContainer Columns="2">
|
||||
<TextureRect Name="View"
|
||||
Stretch="KeepAspectCentered"
|
||||
Margin="0,0,4,0"
|
||||
MinSize="48 48"
|
||||
MaxSize="48 48"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalExpand="True" />
|
||||
<Label Name="Name" />
|
||||
</GridContainer>
|
||||
</Button>
|
||||
</Control>
|
||||
@@ -1,60 +0,0 @@
|
||||
using Content.Shared._CP14.Skill;
|
||||
using Content.Shared._CP14.Skill.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.ResearchTable;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class CP14ResearchRecipeControl : Control
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entity = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
|
||||
public event Action<CP14ResearchUiEntry, CP14SkillPrototype>? OnResearch;
|
||||
|
||||
private readonly SpriteSystem _sprite;
|
||||
private readonly CP14SharedSkillSystem _skillSystem;
|
||||
|
||||
private readonly CP14SkillPrototype _skillPrototype;
|
||||
private readonly bool _craftable;
|
||||
|
||||
public CP14ResearchRecipeControl(CP14ResearchUiEntry entry)
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
IoCManager.InjectDependencies(this);
|
||||
|
||||
_sprite = _entity.System<SpriteSystem>();
|
||||
_skillSystem = _entity.System<CP14SharedSkillSystem>();
|
||||
|
||||
_skillPrototype = _prototype.Index(entry.ProtoId);
|
||||
_craftable = entry.Craftable;
|
||||
|
||||
Button.OnPressed += _ => OnResearch?.Invoke(entry, _skillPrototype);
|
||||
|
||||
UpdateColor();
|
||||
UpdateName();
|
||||
UpdateView();
|
||||
}
|
||||
|
||||
private void UpdateColor()
|
||||
{
|
||||
if (_craftable)
|
||||
return;
|
||||
|
||||
Button.ModulateSelfOverride = Color.FromHex("#302622");
|
||||
}
|
||||
|
||||
private void UpdateName()
|
||||
{
|
||||
Name.Text = $"{Loc.GetString(_skillSystem.GetSkillName(_skillPrototype))}" ;
|
||||
}
|
||||
|
||||
private void UpdateView()
|
||||
{
|
||||
View.Texture =_sprite.Frame0(_skillPrototype.Icon);
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
using Content.Shared._CP14.Skill;
|
||||
using Robust.Client.UserInterface;
|
||||
|
||||
namespace Content.Client._CP14.ResearchTable;
|
||||
|
||||
public sealed class CP14ResearchTableBoundUserInterface : BoundUserInterface
|
||||
{
|
||||
private CP14ResearchTableWindow? _window;
|
||||
|
||||
public CP14ResearchTableBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Open()
|
||||
{
|
||||
base.Open();
|
||||
|
||||
_window = this.CreateWindow<CP14ResearchTableWindow>();
|
||||
|
||||
_window.OnResearch += entry => SendMessage(new CP14ResearchMessage(entry.ProtoId));
|
||||
}
|
||||
|
||||
protected override void UpdateState(BoundUserInterfaceState state)
|
||||
{
|
||||
base.UpdateState(state);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case CP14ResearchTableUiState recipesState:
|
||||
_window?.UpdateState(recipesState);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
<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-research-table-title'}"
|
||||
SetSize="700 500"
|
||||
MinSize="700 300">
|
||||
<BoxContainer Orientation="Horizontal">
|
||||
<!-- Main -->
|
||||
<BoxContainer HorizontalExpand="True" VerticalExpand="True" Orientation="Horizontal">
|
||||
<!-- Product list (left side UI) -->
|
||||
<BoxContainer MinWidth="350" HorizontalExpand="True" Orientation="Vertical" Margin="0 0 10 0">
|
||||
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
|
||||
<!-- Search Bar -->
|
||||
<LineEdit Name="SearchBar" Margin="4" PlaceHolder="Search" HorizontalExpand="True" />
|
||||
<OptionButton Name="OptionCategories" Access="Public" MinSize="130 0" />
|
||||
</BoxContainer>
|
||||
<!-- Crafts container -->
|
||||
<ScrollContainer HorizontalExpand="True" VerticalExpand="True" MinSize="0 200">
|
||||
<BoxContainer Name="CraftsContainer" Orientation="Vertical" HorizontalExpand="True" />
|
||||
</ScrollContainer>
|
||||
</BoxContainer>
|
||||
|
||||
<!-- Craft view (right side UI) -->
|
||||
<BoxContainer MinWidth="350" Orientation="Vertical" HorizontalExpand="True"
|
||||
VerticalExpand="True">
|
||||
<PanelContainer HorizontalExpand="True" VerticalExpand="True">
|
||||
<!-- Background -->
|
||||
<PanelContainer.PanelOverride>
|
||||
<graphics:StyleBoxFlat BackgroundColor="#41332f" />
|
||||
</PanelContainer.PanelOverride>
|
||||
|
||||
<!-- Content -->
|
||||
<BoxContainer HorizontalExpand="True" VerticalExpand="True" Orientation="Vertical">
|
||||
<!-- Item info -->
|
||||
<!-- icon -->
|
||||
<TextureRect Name="ItemView"
|
||||
Stretch="KeepAspectCentered"
|
||||
Margin="5"
|
||||
MinSize="64 64"
|
||||
MaxSize="64 64"
|
||||
HorizontalAlignment="Left" />
|
||||
|
||||
<!-- name & description -->
|
||||
<BoxContainer Margin="5 0 0 0" HorizontalExpand="True" VerticalExpand="True"
|
||||
Orientation="Vertical">
|
||||
<RichTextLabel Name="ItemName" Margin="5" />
|
||||
<RichTextLabel Name="ItemDescription" Margin="5" />
|
||||
</BoxContainer>
|
||||
|
||||
<controls:HLine Color="#404040" Thickness="2" Margin="0 5" />
|
||||
|
||||
<!-- Required title -->
|
||||
<Label Margin="5 0 0 0" Text="{Loc 'cp14-research-recipe-list'}" />
|
||||
|
||||
<!-- Craft requirements content -->
|
||||
<!-- Added by code -->
|
||||
<BoxContainer
|
||||
Margin="5 0 0 0"
|
||||
Name="ItemRequirements"
|
||||
Orientation="Vertical" VerticalExpand="True"
|
||||
HorizontalExpand="True" />
|
||||
|
||||
<controls:HLine Color="#404040" Thickness="5" Margin="0 5" />
|
||||
|
||||
<!-- Craft button -->
|
||||
<Button Name="CraftButton" Text="{Loc 'cp14-research-craft'}" />
|
||||
</BoxContainer>
|
||||
</PanelContainer>
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
</DefaultWindow>
|
||||
@@ -1,235 +0,0 @@
|
||||
using Content.Client._CP14.Workbench;
|
||||
using Content.Shared._CP14.Skill;
|
||||
using Content.Shared._CP14.Skill.Prototypes;
|
||||
using Content.Shared._CP14.Skill.Restrictions;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._CP14.ResearchTable;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class CP14ResearchTableWindow : DefaultWindow
|
||||
{
|
||||
private const int AllCategoryId = -1;
|
||||
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
[Dependency] private readonly ILogManager _log = default!;
|
||||
[Dependency] private readonly IEntityManager _entity = default!;
|
||||
|
||||
private readonly SpriteSystem _sprite;
|
||||
private readonly CP14SharedSkillSystem _skillSystem;
|
||||
|
||||
public event Action<CP14ResearchUiEntry>? OnResearch;
|
||||
|
||||
private readonly Dictionary<int, LocId> _categories = new();
|
||||
|
||||
private CP14ResearchTableUiState? _cachedState;
|
||||
private CP14ResearchUiEntry? _selectedEntry;
|
||||
private string _searchFilter = string.Empty;
|
||||
|
||||
private ISawmill Sawmill { get; init; }
|
||||
|
||||
public CP14ResearchTableWindow()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
IoCManager.InjectDependencies(this);
|
||||
|
||||
_sprite = _entity.System<SpriteSystem>();
|
||||
_skillSystem = _entity.System<CP14SharedSkillSystem>();
|
||||
|
||||
Sawmill = _log.GetSawmill("cp14_research_table_window");
|
||||
|
||||
SearchBar.OnTextChanged += OnSearchChanged;
|
||||
CraftButton.OnPressed += OnCraftPressed;
|
||||
OptionCategories.OnItemSelected += OnCategoryItemSelected;
|
||||
}
|
||||
|
||||
public void UpdateRecipesVisibility()
|
||||
{
|
||||
if (_cachedState is null)
|
||||
return;
|
||||
|
||||
CraftsContainer.RemoveAllChildren();
|
||||
|
||||
var recipes = new List<CP14ResearchUiEntry>();
|
||||
foreach (var entry in _cachedState.Skills)
|
||||
{
|
||||
if (!_prototype.TryIndex(entry.ProtoId, out var indexedEntry))
|
||||
{
|
||||
Sawmill.Error($"No recipe prototype {entry.ProtoId} retrieved from cache found");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!ProcessSearchFilter(indexedEntry))
|
||||
continue;
|
||||
|
||||
if (!ProcessSearchCategoryFilter(indexedEntry))
|
||||
continue;
|
||||
|
||||
recipes.Add(entry);
|
||||
}
|
||||
|
||||
recipes.Sort(CP14ResearchUiEntry.CompareTo);
|
||||
|
||||
foreach (var recipe in recipes)
|
||||
{
|
||||
var control = new CP14ResearchRecipeControl(recipe);
|
||||
control.OnResearch += RecipeSelect;
|
||||
|
||||
CraftsContainer.AddChild(control);
|
||||
}
|
||||
|
||||
if (_selectedEntry is not null && !recipes.Contains(_selectedEntry.Value))
|
||||
RecipeSelectNull();
|
||||
}
|
||||
|
||||
public void UpdateState(CP14ResearchTableUiState recipesState)
|
||||
{
|
||||
_cachedState = recipesState;
|
||||
|
||||
_categories.Clear();
|
||||
OptionCategories.Clear();
|
||||
OptionCategories.AddItem(Loc.GetString("cp14-recipe-category-all"), AllCategoryId);
|
||||
|
||||
var categories = new List<LocId>();
|
||||
var count = 0;
|
||||
|
||||
foreach (var skill in recipesState.Skills)
|
||||
{
|
||||
if (!_prototype.TryIndex(skill.ProtoId, out var indexedSkill))
|
||||
continue;
|
||||
|
||||
if (!_prototype.TryIndex(indexedSkill.Tree, out var indexedTree))
|
||||
continue;
|
||||
|
||||
if (categories.Contains(indexedTree.Name))
|
||||
continue;
|
||||
|
||||
categories.Add(indexedTree.Name);
|
||||
}
|
||||
|
||||
categories.Sort((a, b) => string.Compare(Loc.GetString(a), Loc.GetString(b), StringComparison.Ordinal));
|
||||
|
||||
foreach (var category in categories)
|
||||
{
|
||||
OptionCategories.AddItem(Loc.GetString(category), count);
|
||||
_categories.Add(count, category);
|
||||
count++;
|
||||
}
|
||||
|
||||
UpdateRecipesVisibility();
|
||||
}
|
||||
|
||||
private void OnSearchChanged(LineEdit.LineEditEventArgs _)
|
||||
{
|
||||
_searchFilter = SearchBar.Text.Trim().ToLowerInvariant();
|
||||
UpdateRecipesVisibility();
|
||||
}
|
||||
|
||||
private void OnCraftPressed(BaseButton.ButtonEventArgs _)
|
||||
{
|
||||
if (_selectedEntry is null)
|
||||
return;
|
||||
|
||||
OnResearch?.Invoke(_selectedEntry.Value);
|
||||
}
|
||||
|
||||
private void OnCategoryItemSelected(OptionButton.ItemSelectedEventArgs obj)
|
||||
{
|
||||
OptionCategories.SelectId(obj.Id);
|
||||
UpdateRecipesVisibility();
|
||||
}
|
||||
|
||||
private bool ProcessSearchFilter(CP14SkillPrototype indexedEntry)
|
||||
{
|
||||
if (_searchFilter == string.Empty)
|
||||
return true;
|
||||
|
||||
return Loc.GetString(_skillSystem.GetSkillName(indexedEntry)).Contains(_searchFilter);
|
||||
}
|
||||
|
||||
private bool ProcessSearchCategoryFilter(CP14SkillPrototype indexedEntry)
|
||||
{
|
||||
// If we are searching through all categories, we simply skip the current filter
|
||||
if (OptionCategories.SelectedId == AllCategoryId)
|
||||
return true;
|
||||
|
||||
if (!_categories.TryGetValue(OptionCategories.SelectedId, out var selectedCategory))
|
||||
{
|
||||
Sawmill.Error($"Non-existent {OptionCategories.SelectedId} category id selected. Filter skipped");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!_prototype.TryIndex(indexedEntry.Tree, out var indexedTree))
|
||||
{
|
||||
Sawmill.Error($"Non-existent {indexedEntry.Tree} category prototype id. Filter skipped");
|
||||
return true;
|
||||
}
|
||||
|
||||
return indexedTree.Name == selectedCategory;
|
||||
}
|
||||
|
||||
private void RecipeSelect(CP14ResearchTableUiState recipesState)
|
||||
{
|
||||
foreach (var skill in recipesState.Skills)
|
||||
{
|
||||
RecipeSelect(skill, _prototype.Index(skill.ProtoId));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void RecipeSelect(CP14ResearchUiEntry cachedEntry)
|
||||
{
|
||||
if (_cachedState is null)
|
||||
return;
|
||||
|
||||
if (_cachedState.Skills.Contains(cachedEntry))
|
||||
{
|
||||
Sawmill.Warning($"The selected cache option {cachedEntry} isn't found in recipes");
|
||||
return;
|
||||
}
|
||||
|
||||
RecipeSelect(cachedEntry, _prototype.Index(cachedEntry.ProtoId));
|
||||
}
|
||||
|
||||
private void RecipeSelect(CP14ResearchUiEntry entry, CP14SkillPrototype skill)
|
||||
{
|
||||
_selectedEntry = entry;
|
||||
|
||||
ItemView.Texture = _sprite.Frame0(skill.Icon);
|
||||
ItemName.Text = _skillSystem.GetSkillName(skill);
|
||||
ItemDescription.Text = _skillSystem.GetSkillDescription(skill);
|
||||
ItemRequirements.RemoveAllChildren();
|
||||
|
||||
foreach (var restriction in skill.Restrictions)
|
||||
{
|
||||
switch (restriction)
|
||||
{
|
||||
case Researched researched:
|
||||
foreach (var requirement in researched.Requirements)
|
||||
{
|
||||
ItemRequirements.AddChild(new CP14WorkbenchRequirementControl(requirement));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CraftButton.Disabled = !entry.Craftable;
|
||||
}
|
||||
|
||||
private void RecipeSelectNull()
|
||||
{
|
||||
_selectedEntry = null;
|
||||
|
||||
ItemView.Texture = null;
|
||||
ItemName.Text = string.Empty;
|
||||
ItemDescription.Text = string.Empty;
|
||||
ItemRequirements.RemoveAllChildren();
|
||||
CraftButton.Disabled = true;
|
||||
}
|
||||
}
|
||||
@@ -37,12 +37,14 @@ public sealed partial class CP14WorkbenchRequirementControl : Control
|
||||
{
|
||||
View.Visible = true;
|
||||
View.Texture = _sprite.Frame0(texture);
|
||||
View.Modulate = requirement.GetRequirementColor(_proto);
|
||||
}
|
||||
|
||||
var entityView = requirement.GetRequirementEntityView(_proto);
|
||||
if (entityView is not null)
|
||||
{
|
||||
EntityView.Visible = true;
|
||||
EntityView.Modulate = requirement.GetRequirementColor(_proto);
|
||||
EntityView.SetPrototype(entityView);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Client._CP14.Skill;
|
||||
using Content.Shared._CP14.Workbench;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
@@ -18,8 +20,11 @@ public sealed partial class CP14WorkbenchWindow : DefaultWindow
|
||||
{
|
||||
private const int AllCategoryId = -1;
|
||||
|
||||
[Dependency] private readonly IPlayerManager _player = default!;
|
||||
[Dependency] private readonly IEntityManager _entManager = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
[Dependency] private readonly ILogManager _log = default!;
|
||||
private CP14ClientSkillSystem _skill;
|
||||
|
||||
public event Action<CP14WorkbenchUiRecipesEntry>? OnCraft;
|
||||
|
||||
@@ -36,6 +41,8 @@ public sealed partial class CP14WorkbenchWindow : DefaultWindow
|
||||
RobustXamlLoader.Load(this);
|
||||
IoCManager.InjectDependencies(this);
|
||||
|
||||
_skill = _entManager.System<CP14ClientSkillSystem>();
|
||||
|
||||
Sawmill = _log.GetSawmill("cp14_workbench_window");
|
||||
|
||||
SearchBar.OnTextChanged += OnSearchChanged;
|
||||
@@ -65,6 +72,22 @@ public sealed partial class CP14WorkbenchWindow : DefaultWindow
|
||||
if (!ProcessSearchCategoryFilter(indexedEntry))
|
||||
continue;
|
||||
|
||||
if (_player.LocalEntity is not null)
|
||||
{
|
||||
var skilled = true;
|
||||
foreach (var skill in indexedEntry.RequiredSkills)
|
||||
{
|
||||
if (!_skill.HaveSkill(_player.LocalEntity.Value, skill))
|
||||
{
|
||||
skilled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!skilled)
|
||||
continue;
|
||||
}
|
||||
|
||||
recipes.Add(entry);
|
||||
}
|
||||
|
||||
@@ -84,6 +107,9 @@ public sealed partial class CP14WorkbenchWindow : DefaultWindow
|
||||
|
||||
public void UpdateState(CP14WorkbenchUiRecipesState recipesState)
|
||||
{
|
||||
if (_player.LocalEntity is null)
|
||||
return;
|
||||
|
||||
_cachedState = recipesState;
|
||||
|
||||
_categories.Clear();
|
||||
|
||||
@@ -1,199 +0,0 @@
|
||||
using Content.Server.DoAfter;
|
||||
using Content.Shared._CP14.ResearchTable;
|
||||
using Content.Shared._CP14.Skill;
|
||||
using Content.Shared._CP14.Skill.Components;
|
||||
using Content.Shared._CP14.Skill.Prototypes;
|
||||
using Content.Shared._CP14.Skill.Restrictions;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.UserInterface;
|
||||
using Robust.Server.Audio;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.ResearchTable;
|
||||
|
||||
public sealed class CP14ResearchSystem : CP14SharedResearchSystem
|
||||
{
|
||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly UserInterfaceSystem _userInterface = default!;
|
||||
[Dependency] private readonly DoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly AudioSystem _audio = default!;
|
||||
|
||||
private IEnumerable<CP14SkillPrototype> _allSkills = [];
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_allSkills = _proto.EnumeratePrototypes<CP14SkillPrototype>();
|
||||
|
||||
SubscribeLocalEvent<CP14ResearchTableComponent, BeforeActivatableUIOpenEvent>(OnBeforeUIOpen);
|
||||
SubscribeLocalEvent<CP14ResearchTableComponent, CP14ResearchMessage>(OnResearch);
|
||||
SubscribeLocalEvent<CP14ResearchTableComponent, CP14ResearchDoAfterEvent>(OnResearchEnd);
|
||||
|
||||
SubscribeLocalEvent<PrototypesReloadedEventArgs>(OnReloadPrototypes);
|
||||
}
|
||||
|
||||
private void OnReloadPrototypes(PrototypesReloadedEventArgs ev)
|
||||
{
|
||||
_allSkills = _proto.EnumeratePrototypes<CP14SkillPrototype>();
|
||||
}
|
||||
|
||||
private void OnResearchEnd(Entity<CP14ResearchTableComponent> table, ref CP14ResearchDoAfterEvent args)
|
||||
{
|
||||
if (args.Cancelled || args.Handled)
|
||||
return;
|
||||
|
||||
if (!_proto.TryIndex(args.Skill, out var indexedSkill))
|
||||
return;
|
||||
|
||||
var placedEntities = _lookup.GetEntitiesInRange(Transform(table).Coordinates,
|
||||
table.Comp.ResearchRadius,
|
||||
LookupFlags.Uncontained);
|
||||
|
||||
if (!CanResearch(indexedSkill, placedEntities, args.User))
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14SkillStorageComponent>(args.User, out var storage))
|
||||
return;
|
||||
if (storage.ResearchedSkills.Contains(args.Skill) || storage.LearnedSkills.Contains(args.Skill))
|
||||
return;
|
||||
storage.ResearchedSkills.Add(args.Skill);
|
||||
Dirty(args.User, storage);
|
||||
|
||||
foreach (var restriction in indexedSkill.Restrictions)
|
||||
{
|
||||
switch (restriction)
|
||||
{
|
||||
case Researched researched:
|
||||
foreach (var req in researched.Requirements)
|
||||
{
|
||||
req.PostCraft(EntityManager, _proto, placedEntities, args.User);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_audio.PlayPvs(table.Comp.ResearchSound, table);
|
||||
UpdateUI(table, args.User);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnResearch(Entity<CP14ResearchTableComponent> ent, ref CP14ResearchMessage args)
|
||||
{
|
||||
if (!TryComp<CP14SkillStorageComponent>(args.Actor, out var storage))
|
||||
return;
|
||||
|
||||
if (storage.ResearchedSkills.Contains(args.Skill) || storage.LearnedSkills.Contains(args.Skill))
|
||||
return;
|
||||
|
||||
if (!_proto.TryIndex(args.Skill, out var indexedSkill))
|
||||
return;
|
||||
|
||||
StartResearch(ent, args.Actor, indexedSkill);
|
||||
}
|
||||
|
||||
private void OnBeforeUIOpen(Entity<CP14ResearchTableComponent> ent, ref BeforeActivatableUIOpenEvent args)
|
||||
{
|
||||
UpdateUI(ent, args.User);
|
||||
}
|
||||
|
||||
private void UpdateUI(Entity<CP14ResearchTableComponent> entity, EntityUid user)
|
||||
{
|
||||
var placedEntities = _lookup.GetEntitiesInRange(Transform(entity).Coordinates, entity.Comp.ResearchRadius);
|
||||
|
||||
if (!TryComp<CP14SkillStorageComponent>(user, out var storage))
|
||||
return;
|
||||
|
||||
var researches = new List<CP14ResearchUiEntry>();
|
||||
foreach (var skill in _allSkills)
|
||||
{
|
||||
var researchable = false;
|
||||
var canCraft = true;
|
||||
var hidden = false;
|
||||
|
||||
foreach (var restriction in skill.Restrictions)
|
||||
{
|
||||
if (storage.ResearchedSkills.Contains(skill) || storage.LearnedSkills.Contains(skill))
|
||||
continue;
|
||||
|
||||
switch (restriction)
|
||||
{
|
||||
case SpeciesWhitelist speciesWhitelist: //We cant change species of our character, so hide it
|
||||
if (!speciesWhitelist.Check(EntityManager, user, skill))
|
||||
hidden = true;
|
||||
break;
|
||||
|
||||
case NeedPrerequisite prerequisite:
|
||||
if (!storage.ResearchedSkills.Contains(prerequisite.Prerequisite))
|
||||
hidden = true;
|
||||
break;
|
||||
|
||||
case Researched researched:
|
||||
researchable = true;
|
||||
|
||||
foreach (var req in researched.Requirements)
|
||||
{
|
||||
if (!req.CheckRequirement(EntityManager, _proto, placedEntities, user))
|
||||
{
|
||||
canCraft = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!researchable || hidden)
|
||||
continue;
|
||||
|
||||
var entry = new CP14ResearchUiEntry(skill, canCraft);
|
||||
|
||||
researches.Add(entry);
|
||||
}
|
||||
|
||||
_userInterface.SetUiState(entity.Owner, CP14ResearchTableUiKey.Key, new CP14ResearchTableUiState(researches));
|
||||
}
|
||||
|
||||
private void StartResearch(Entity<CP14ResearchTableComponent> table, EntityUid user, CP14SkillPrototype skill)
|
||||
{
|
||||
var researchDoAfter = new CP14ResearchDoAfterEvent()
|
||||
{
|
||||
Skill = skill
|
||||
};
|
||||
|
||||
var doAfterArgs = new DoAfterArgs(EntityManager,
|
||||
user,
|
||||
TimeSpan.FromSeconds(table.Comp.ResearchSpeed),
|
||||
researchDoAfter,
|
||||
table,
|
||||
table)
|
||||
{
|
||||
BreakOnMove = true,
|
||||
BreakOnDamage = true,
|
||||
NeedHand = true,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterArgs);
|
||||
_audio.PlayPvs(table.Comp.ResearchSound, table);
|
||||
}
|
||||
|
||||
private bool CanResearch(CP14SkillPrototype skill, HashSet<EntityUid> entities, EntityUid user)
|
||||
{
|
||||
foreach (var restriction in skill.Restrictions)
|
||||
{
|
||||
switch (restriction)
|
||||
{
|
||||
case Researched researched:
|
||||
foreach (var req in researched.Requirements)
|
||||
{
|
||||
if (!req.CheckRequirement(EntityManager, _proto, entities, user))
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -87,7 +87,7 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor
|
||||
|
||||
foreach (var req in indexedRequest.Requirements)
|
||||
{
|
||||
req.PostCraft(EntityManager, Proto, itemPlacer.PlacedEntities, null);
|
||||
req.PostCraft(EntityManager, Proto, itemPlacer.PlacedEntities);
|
||||
}
|
||||
|
||||
_audio.PlayPvs(ent.Comp.SellSound, Transform(ent).Coordinates);
|
||||
|
||||
@@ -3,12 +3,16 @@
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Skill;
|
||||
using Content.Shared._CP14.Workbench;
|
||||
using Content.Shared.Placeable;
|
||||
|
||||
namespace Content.Server._CP14.Workbench;
|
||||
|
||||
public sealed partial class CP14WorkbenchSystem
|
||||
{
|
||||
[Dependency] private readonly CP14SharedSkillSystem _skill = default!;
|
||||
|
||||
private void OnCraft(Entity<CP14WorkbenchComponent> entity, ref CP14WorkbenchUiCraftMessage args)
|
||||
{
|
||||
if (!entity.Comp.Recipes.Contains(args.Recipe))
|
||||
@@ -20,9 +24,12 @@ public sealed partial class CP14WorkbenchSystem
|
||||
StartCraft(entity, args.Actor, prototype);
|
||||
}
|
||||
|
||||
private void UpdateUIRecipes(Entity<CP14WorkbenchComponent> entity, EntityUid user)
|
||||
private void UpdateUIRecipes(Entity<CP14WorkbenchComponent> entity)
|
||||
{
|
||||
var placedEntities = _lookup.GetEntitiesInRange(Transform(entity).Coordinates, entity.Comp.WorkbenchRadius);
|
||||
if (!TryComp<ItemPlacerComponent>(entity.Owner, out var placer))
|
||||
return;
|
||||
|
||||
var placedEntities = placer.PlacedEntities;
|
||||
|
||||
var recipes = new List<CP14WorkbenchUiRecipesEntry>();
|
||||
foreach (var recipeId in entity.Comp.Recipes)
|
||||
@@ -31,21 +38,16 @@ public sealed partial class CP14WorkbenchSystem
|
||||
continue;
|
||||
|
||||
var canCraft = true;
|
||||
var hidden = false;
|
||||
|
||||
foreach (var requirement in indexedRecipe.Requirements)
|
||||
{
|
||||
if (!requirement.CheckRequirement(EntityManager, _proto, placedEntities, user))
|
||||
if (!requirement.CheckRequirement(EntityManager, _proto, placedEntities))
|
||||
{
|
||||
canCraft = false;
|
||||
if (requirement.HideRecipe)
|
||||
hidden = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (hidden)
|
||||
continue;
|
||||
|
||||
var entry = new CP14WorkbenchUiRecipesEntry(recipeId, canCraft);
|
||||
|
||||
recipes.Add(entry);
|
||||
|
||||
@@ -6,12 +6,11 @@
|
||||
using System.Numerics;
|
||||
using Content.Server.DoAfter;
|
||||
using Content.Server.Popups;
|
||||
using Content.Server.Stack;
|
||||
using Content.Shared._CP14.Skill;
|
||||
using Content.Shared._CP14.Workbench;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Content.Shared.Chemistry.EntitySystems;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Stacks;
|
||||
using Content.Shared.Placeable;
|
||||
using Content.Shared.UserInterface;
|
||||
using Robust.Server.Audio;
|
||||
using Robust.Server.GameObjects;
|
||||
@@ -25,26 +24,21 @@ public sealed partial class CP14WorkbenchSystem : CP14SharedWorkbenchSystem
|
||||
[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 UserInterfaceSystem _userInterface = default!;
|
||||
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainer = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
|
||||
private EntityQuery<MetaDataComponent> _metaQuery;
|
||||
private EntityQuery<StackComponent> _stackQuery;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_metaQuery = GetEntityQuery<MetaDataComponent>();
|
||||
_stackQuery = GetEntityQuery<StackComponent>();
|
||||
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, MapInitEvent>(OnMapInit);
|
||||
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, ItemPlacedEvent>(OnItemPlaced);
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, ItemRemovedEvent>(OnItemRemoved);
|
||||
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, BeforeActivatableUIOpenEvent>(OnBeforeUIOpen);
|
||||
SubscribeLocalEvent<CP14WorkbenchComponent, CP14WorkbenchUiCraftMessage>(OnCraft);
|
||||
|
||||
@@ -65,9 +59,19 @@ public sealed partial class CP14WorkbenchSystem : CP14SharedWorkbenchSystem
|
||||
}
|
||||
}
|
||||
|
||||
private void OnItemRemoved(Entity<CP14WorkbenchComponent> ent, ref ItemRemovedEvent args)
|
||||
{
|
||||
UpdateUIRecipes(ent);
|
||||
}
|
||||
|
||||
private void OnItemPlaced(Entity<CP14WorkbenchComponent> ent, ref ItemPlacedEvent args)
|
||||
{
|
||||
UpdateUIRecipes(ent);
|
||||
}
|
||||
|
||||
private void OnBeforeUIOpen(Entity<CP14WorkbenchComponent> ent, ref BeforeActivatableUIOpenEvent args)
|
||||
{
|
||||
UpdateUIRecipes(ent, args.User);
|
||||
UpdateUIRecipes(ent);
|
||||
}
|
||||
|
||||
private void OnCraftFinished(Entity<CP14WorkbenchComponent> ent, ref CP14CraftDoAfterEvent args)
|
||||
@@ -97,7 +101,7 @@ public sealed partial class CP14WorkbenchSystem : CP14SharedWorkbenchSystem
|
||||
|
||||
foreach (var req in recipe.Requirements)
|
||||
{
|
||||
req.PostCraft(EntityManager, _proto, placedEntities, args.User);
|
||||
req.PostCraft(EntityManager, _proto, placedEntities);
|
||||
}
|
||||
|
||||
//We teleport result to workbench AFTER craft.
|
||||
@@ -106,7 +110,7 @@ public sealed partial class CP14WorkbenchSystem : CP14SharedWorkbenchSystem
|
||||
_transform.SetCoordinates(resultEntity, Transform(ent).Coordinates.Offset(new Vector2(_random.NextFloat(-0.25f, 0.25f), _random.NextFloat(-0.25f, 0.25f))));
|
||||
}
|
||||
|
||||
UpdateUIRecipes(ent, args.User);
|
||||
UpdateUIRecipes(ent);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
@@ -137,9 +141,14 @@ public sealed partial class CP14WorkbenchSystem : CP14SharedWorkbenchSystem
|
||||
|
||||
private bool CanCraftRecipe(CP14WorkbenchRecipePrototype recipe, HashSet<EntityUid> entities, EntityUid user)
|
||||
{
|
||||
foreach (var skill in recipe.RequiredSkills)
|
||||
{
|
||||
if (!_skill.HaveSkill(user, skill))
|
||||
return false;
|
||||
}
|
||||
foreach (var req in recipe.Requirements)
|
||||
{
|
||||
if (!req.CheckRequirement(EntityManager, _proto, entities, user))
|
||||
if (!req.CheckRequirement(EntityManager, _proto, entities))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._CP14.ResearchTable;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class CP14ResearchTableComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public float ResearchSpeed = 3f;
|
||||
|
||||
[DataField]
|
||||
public float ResearchRadius = 0.5f;
|
||||
|
||||
[DataField]
|
||||
public SoundSpecifier ResearchSound = new SoundCollectionSpecifier("PaperScribbles");
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
using Content.Shared._CP14.Skill.Prototypes;
|
||||
using Content.Shared.DoAfter;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.ResearchTable;
|
||||
|
||||
public abstract class CP14SharedResearchSystem : EntitySystem
|
||||
{
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class CP14ResearchDoAfterEvent : DoAfterEvent
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public ProtoId<CP14SkillPrototype> Skill = default!;
|
||||
|
||||
public override DoAfterEvent Clone() => this;
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
using Content.Shared._CP14.Skill.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.Skill;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum CP14ResearchTableUiKey
|
||||
{
|
||||
Key,
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CP14ResearchMessage(ProtoId<CP14SkillPrototype> skill) : BoundUserInterfaceMessage
|
||||
{
|
||||
public readonly ProtoId<CP14SkillPrototype> Skill = skill;
|
||||
}
|
||||
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CP14ResearchTableUiState(List<CP14ResearchUiEntry> skills) : BoundUserInterfaceState
|
||||
{
|
||||
public readonly List<CP14ResearchUiEntry> Skills = skills;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public readonly struct CP14ResearchUiEntry(ProtoId<CP14SkillPrototype> protoId, bool craftable) : IEquatable<CP14ResearchUiEntry>
|
||||
{
|
||||
public readonly ProtoId<CP14SkillPrototype> ProtoId = protoId;
|
||||
public readonly bool Craftable = craftable;
|
||||
|
||||
public int CompareTo(CP14ResearchUiEntry other)
|
||||
{
|
||||
return Craftable.CompareTo(other.Craftable);
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return obj is CP14ResearchUiEntry other && Equals(other);
|
||||
}
|
||||
|
||||
public bool Equals(CP14ResearchUiEntry other)
|
||||
{
|
||||
return ProtoId.Id == other.ProtoId.Id;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(ProtoId, Craftable);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{ProtoId} ({Craftable})";
|
||||
}
|
||||
|
||||
public static int CompareTo(CP14ResearchUiEntry left, CP14ResearchUiEntry right)
|
||||
{
|
||||
return right.CompareTo(left);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
using Content.Shared._CP14.ResearchTable;
|
||||
using Content.Shared._CP14.Skill.Prototypes;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Robust.Shared.GameStates;
|
||||
@@ -11,7 +10,7 @@ namespace Content.Shared._CP14.Skill.Components;
|
||||
/// Component that stores the skills learned by a player and their progress in the skill trees.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
|
||||
[Access(typeof(CP14SharedSkillSystem), typeof(CP14SharedResearchSystem))]
|
||||
[Access(typeof(CP14SharedSkillSystem))]
|
||||
public sealed partial class CP14SkillStorageComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -36,20 +36,12 @@ public sealed partial class UnlockRecipes : CP14SkillEffect
|
||||
var affectedRecipes = new List<CP14WorkbenchRecipePrototype>();
|
||||
foreach (var recipe in allRecipes)
|
||||
{
|
||||
foreach (var req in recipe.Requirements)
|
||||
foreach (var req in recipe.RequiredSkills)
|
||||
{
|
||||
switch (req)
|
||||
if (req == skill)
|
||||
{
|
||||
case SkillRequired skillReq:
|
||||
foreach (var skillReqSkill in skillReq.Skills)
|
||||
{
|
||||
if (skillReqSkill == skill)
|
||||
{
|
||||
affectedRecipes.Add(recipe);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
affectedRecipes.Add(recipe);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ public abstract partial class CP14SharedTradingPlatformSystem : EntitySystem
|
||||
|
||||
foreach (var requirement in indexedRequest.Requirements)
|
||||
{
|
||||
if (!requirement.CheckRequirement(EntityManager, Proto, itemPlacer.PlacedEntities, null))
|
||||
if (!requirement.CheckRequirement(EntityManager, Proto, itemPlacer.PlacedEntities))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,39 +16,25 @@ public enum CP14WorkbenchUiKey
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CP14WorkbenchUiCraftMessage : BoundUserInterfaceMessage
|
||||
public sealed class CP14WorkbenchUiCraftMessage(ProtoId<CP14WorkbenchRecipePrototype> recipe)
|
||||
: BoundUserInterfaceMessage
|
||||
{
|
||||
public readonly ProtoId<CP14WorkbenchRecipePrototype> Recipe;
|
||||
|
||||
public CP14WorkbenchUiCraftMessage(ProtoId<CP14WorkbenchRecipePrototype> recipe)
|
||||
{
|
||||
Recipe = recipe;
|
||||
}
|
||||
public readonly ProtoId<CP14WorkbenchRecipePrototype> Recipe = recipe;
|
||||
}
|
||||
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CP14WorkbenchUiRecipesState : BoundUserInterfaceState
|
||||
public sealed class CP14WorkbenchUiRecipesState(List<CP14WorkbenchUiRecipesEntry> recipes) : BoundUserInterfaceState
|
||||
{
|
||||
public readonly List<CP14WorkbenchUiRecipesEntry> Recipes;
|
||||
|
||||
public CP14WorkbenchUiRecipesState(List<CP14WorkbenchUiRecipesEntry> recipes)
|
||||
{
|
||||
Recipes = recipes;
|
||||
}
|
||||
public readonly List<CP14WorkbenchUiRecipesEntry> Recipes = recipes;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public readonly struct CP14WorkbenchUiRecipesEntry : IEquatable<CP14WorkbenchUiRecipesEntry>
|
||||
public readonly struct CP14WorkbenchUiRecipesEntry(ProtoId<CP14WorkbenchRecipePrototype> protoId, bool craftable)
|
||||
: IEquatable<CP14WorkbenchUiRecipesEntry>
|
||||
{
|
||||
public readonly ProtoId<CP14WorkbenchRecipePrototype> ProtoId;
|
||||
public readonly bool Craftable;
|
||||
|
||||
public CP14WorkbenchUiRecipesEntry(ProtoId<CP14WorkbenchRecipePrototype> protoId, bool craftable)
|
||||
{
|
||||
ProtoId = protoId;
|
||||
Craftable = craftable;
|
||||
}
|
||||
public readonly ProtoId<CP14WorkbenchRecipePrototype> ProtoId = protoId;
|
||||
public readonly bool Craftable = craftable;
|
||||
|
||||
public int CompareTo(CP14WorkbenchUiRecipesEntry other)
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Skill.Prototypes;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -27,6 +28,9 @@ public sealed class CP14WorkbenchRecipePrototype : IPrototype
|
||||
[DataField(required: true)]
|
||||
public List<CP14WorkbenchCraftRequirement> Requirements = new();
|
||||
|
||||
[DataField]
|
||||
public HashSet<ProtoId<CP14SkillPrototype>> RequiredSkills = new();
|
||||
|
||||
[DataField(required: true)]
|
||||
public EntProtoId Result;
|
||||
|
||||
|
||||
@@ -12,8 +12,6 @@ namespace Content.Shared._CP14.Workbench.Requirements;
|
||||
|
||||
public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement
|
||||
{
|
||||
public override bool HideRecipe { get; set; } = false;
|
||||
|
||||
[DataField(required: true)]
|
||||
public ProtoId<MaterialPrototype> Material;
|
||||
|
||||
@@ -23,8 +21,7 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement
|
||||
public override bool CheckRequirement(
|
||||
EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user)
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var count = 0;
|
||||
foreach (var ent in placedEntities)
|
||||
@@ -56,7 +53,7 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities, EntityUid? user)
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var stackSystem = entManager.System<SharedStackSystem>();
|
||||
|
||||
@@ -118,11 +115,6 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement
|
||||
return $"{Loc.GetString(indexedMaterial.Name)} x{Count}";
|
||||
}
|
||||
|
||||
public override EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager)
|
||||
{
|
||||
return !protoManager.TryIndex(Material, out var indexedMaterial) ? null : indexedMaterial.Icon;
|
||||
|
||||
@@ -11,8 +11,6 @@ namespace Content.Shared._CP14.Workbench.Requirements;
|
||||
|
||||
public sealed partial class ProtoIdResource : CP14WorkbenchCraftRequirement
|
||||
{
|
||||
public override bool HideRecipe { get; set; } = false;
|
||||
|
||||
[DataField(required: true)]
|
||||
public EntProtoId ProtoId;
|
||||
|
||||
@@ -21,15 +19,14 @@ public sealed partial class ProtoIdResource : CP14WorkbenchCraftRequirement
|
||||
|
||||
public override bool CheckRequirement(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user)
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var indexedIngredients = IndexIngredients(entManager, placedEntities);
|
||||
|
||||
return indexedIngredients.TryGetValue(ProtoId, out var availableQuantity) && availableQuantity >= Count;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager,IPrototypeManager protoManager, HashSet<EntityUid> placedEntities, EntityUid? user)
|
||||
public override void PostCraft(EntityManager entManager,IPrototypeManager protoManager, HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var requiredCount = Count;
|
||||
|
||||
@@ -77,11 +74,6 @@ public sealed partial class ProtoIdResource : CP14WorkbenchCraftRequirement
|
||||
return indexedProto;
|
||||
}
|
||||
|
||||
public override SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
private Dictionary<EntProtoId, int> IndexIngredients(EntityManager entManager, HashSet<EntityUid> ingredients)
|
||||
{
|
||||
var indexedIngredients = new Dictionary<EntProtoId, int>();
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
using Content.Shared._CP14.Skill;
|
||||
using Content.Shared._CP14.Skill.Prototypes;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CP14.Workbench.Requirements;
|
||||
|
||||
public sealed partial class SkillRequired : CP14WorkbenchCraftRequirement
|
||||
{
|
||||
public override bool HideRecipe { get; set; } = true;
|
||||
|
||||
[DataField(required: true)]
|
||||
public List<ProtoId<CP14SkillPrototype>> Skills = new();
|
||||
|
||||
public override bool CheckRequirement(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user)
|
||||
{
|
||||
if (user is null)
|
||||
return false;
|
||||
|
||||
var knowledgeSystem = entManager.System<CP14SharedSkillSystem>();
|
||||
|
||||
var haveAllSkills = true;
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (!knowledgeSystem.HaveSkill(user.Value, skill))
|
||||
{
|
||||
haveAllSkills = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return haveAllSkills;
|
||||
}
|
||||
|
||||
public override double GetPrice(EntityManager entManager,
|
||||
IPrototypeManager protoManager)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities, EntityUid? user)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetRequirementTitle(IPrototypeManager protoManager)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
public override EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
116
Content.Shared/_CP14/Workbench/Requirements/SolutionResource.cs
Normal file
116
Content.Shared/_CP14/Workbench/Requirements/SolutionResource.cs
Normal file
@@ -0,0 +1,116 @@
|
||||
using Content.Shared.Chemistry.EntitySystems;
|
||||
using Content.Shared.Chemistry.Reagent;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Workbench.Requirements;
|
||||
|
||||
public sealed partial class SolutionResource : CP14WorkbenchCraftRequirement
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public ProtoId<ReagentPrototype> Reagent = default!;
|
||||
|
||||
/// <summary>
|
||||
/// How much impurity from other reagents is allowed?
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public float Purity = 1f;
|
||||
|
||||
[DataField(required: true)]
|
||||
public FixedPoint2 Amount = 1f;
|
||||
|
||||
[DataField]
|
||||
public EntProtoId DummyEntityIcon = "CP14LiquidDropDummy";
|
||||
|
||||
public override bool CheckRequirement(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var solutionSys = entManager.System<SharedSolutionContainerSystem>();
|
||||
foreach (var ent in placedEntities)
|
||||
{
|
||||
if (!solutionSys.TryGetDrawableSolution(ent, out var soln, out var solution))
|
||||
continue;
|
||||
|
||||
var volume = solution.Volume;
|
||||
foreach (var (id, quantity) in solution.Contents)
|
||||
{
|
||||
if (id.Prototype != Reagent)
|
||||
continue;
|
||||
|
||||
if (quantity < Amount)
|
||||
continue;
|
||||
|
||||
//Purity check
|
||||
if (quantity / volume < Purity)
|
||||
continue;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var solutionSys = entManager.System<SharedSolutionContainerSystem>();
|
||||
foreach (var ent in placedEntities)
|
||||
{
|
||||
if (!solutionSys.TryGetDrawableSolution(ent, out var soln, out var solution))
|
||||
continue;
|
||||
|
||||
|
||||
var volume = solution.Volume;
|
||||
foreach (var (id, quantity) in solution.Contents)
|
||||
{
|
||||
if (id.Prototype != Reagent)
|
||||
continue;
|
||||
|
||||
if (quantity < Amount)
|
||||
continue;
|
||||
|
||||
//Purity check
|
||||
if (quantity / volume < Purity)
|
||||
continue;
|
||||
|
||||
solutionSys.RemoveEachReagent(soln.Value, Amount);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override double GetPrice(EntityManager entManager, IPrototypeManager protoManager)
|
||||
{
|
||||
if (!protoManager.TryIndex(Reagent, out var indexedReagent))
|
||||
return 0;
|
||||
|
||||
return indexedReagent.PricePerUnit * (double)Amount;
|
||||
}
|
||||
|
||||
public override string GetRequirementTitle(IPrototypeManager protoManager)
|
||||
{
|
||||
if (!protoManager.TryIndex(Reagent, out var indexedReagent))
|
||||
return string.Empty;
|
||||
|
||||
return Loc.GetString("cp14-workbench-reagent-req",
|
||||
("reagent", indexedReagent.LocalizedName),
|
||||
("count", Amount),
|
||||
("purity", Purity * 100));
|
||||
}
|
||||
|
||||
public override EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager)
|
||||
{
|
||||
if (!protoManager.TryIndex(DummyEntityIcon, out var indexedEnt))
|
||||
return null;
|
||||
return indexedEnt;
|
||||
}
|
||||
|
||||
public override Color GetRequirementColor(IPrototypeManager protoManager)
|
||||
{
|
||||
if (!protoManager.TryIndex(Reagent, out var indexedReagent))
|
||||
return Color.White;
|
||||
|
||||
return indexedReagent.SubstanceColor;
|
||||
}
|
||||
}
|
||||
@@ -12,8 +12,6 @@ namespace Content.Shared._CP14.Workbench.Requirements;
|
||||
|
||||
public sealed partial class StackGroupResource : CP14WorkbenchCraftRequirement
|
||||
{
|
||||
public override bool HideRecipe { get; set; } = false;
|
||||
|
||||
[DataField(required: true)]
|
||||
public ProtoId<CP14StackGroupPrototype> Group;
|
||||
|
||||
@@ -22,8 +20,7 @@ public sealed partial class StackGroupResource : CP14WorkbenchCraftRequirement
|
||||
|
||||
public override bool CheckRequirement(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user)
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
if (!protoManager.TryIndex(Group, out var indexedGroup))
|
||||
return false;
|
||||
@@ -47,8 +44,7 @@ public sealed partial class StackGroupResource : CP14WorkbenchCraftRequirement
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user)
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var stackSystem = entManager.System<SharedStackSystem>();
|
||||
|
||||
@@ -75,13 +71,6 @@ public sealed partial class StackGroupResource : CP14WorkbenchCraftRequirement
|
||||
}
|
||||
}
|
||||
|
||||
public override double GetPrice(EntityManager entManager,
|
||||
IPrototypeManager protoManager)
|
||||
{
|
||||
//Idk how to price this, so we just return 0.
|
||||
return 0;
|
||||
}
|
||||
|
||||
public override string GetRequirementTitle(IPrototypeManager protoManager)
|
||||
{
|
||||
var indexedGroup = protoManager.Index(Group);
|
||||
@@ -89,11 +78,6 @@ public sealed partial class StackGroupResource : CP14WorkbenchCraftRequirement
|
||||
return $"{Loc.GetString(indexedGroup.Name)} x{Count}";
|
||||
}
|
||||
|
||||
public override EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager)
|
||||
{
|
||||
var indexedGroup = protoManager.Index(Group);
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Trading.Systems;
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
@@ -13,8 +12,6 @@ namespace Content.Shared._CP14.Workbench.Requirements;
|
||||
|
||||
public sealed partial class StackResource : CP14WorkbenchCraftRequirement
|
||||
{
|
||||
public override bool HideRecipe { get; set; } = false;
|
||||
|
||||
[DataField(required: true)]
|
||||
public ProtoId<StackPrototype> Stack;
|
||||
|
||||
@@ -23,8 +20,7 @@ public sealed partial class StackResource : CP14WorkbenchCraftRequirement
|
||||
|
||||
public override bool CheckRequirement(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user)
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var count = 0;
|
||||
foreach (var ent in placedEntities)
|
||||
@@ -45,8 +41,7 @@ public sealed partial class StackResource : CP14WorkbenchCraftRequirement
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user)
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var stackSystem = entManager.System<SharedStackSystem>();
|
||||
|
||||
@@ -92,11 +87,6 @@ public sealed partial class StackResource : CP14WorkbenchCraftRequirement
|
||||
return $"{Loc.GetString(indexedStack.Name)} x{Count}";
|
||||
}
|
||||
|
||||
public override EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager)
|
||||
{
|
||||
return !protoManager.TryIndex(Stack, out var indexedStack) ? null : indexedStack.Icon;
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
@@ -12,8 +11,6 @@ namespace Content.Shared._CP14.Workbench.Requirements;
|
||||
|
||||
public sealed partial class TagResource : CP14WorkbenchCraftRequirement
|
||||
{
|
||||
public override bool HideRecipe { get; set; } = false;
|
||||
|
||||
[DataField(required: true)]
|
||||
public ProtoId<TagPrototype> Tag;
|
||||
|
||||
@@ -29,8 +26,7 @@ public sealed partial class TagResource : CP14WorkbenchCraftRequirement
|
||||
public override bool CheckRequirement(
|
||||
EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user)
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var tagSystem = entManager.System<TagSystem>();
|
||||
|
||||
@@ -49,7 +45,7 @@ public sealed partial class TagResource : CP14WorkbenchCraftRequirement
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities, EntityUid? user)
|
||||
public override void PostCraft(EntityManager entManager, IPrototypeManager protoManager, HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
var tagSystem = entManager.System<TagSystem>();
|
||||
|
||||
@@ -66,12 +62,6 @@ public sealed partial class TagResource : CP14WorkbenchCraftRequirement
|
||||
entManager.DeleteEntity(placedEntity);
|
||||
}
|
||||
}
|
||||
public override double GetPrice(EntityManager entManager,
|
||||
IPrototypeManager protoManager)
|
||||
{
|
||||
//Idk how to price tags, so just return 0 for now.
|
||||
return 0;
|
||||
}
|
||||
|
||||
public override string GetRequirementTitle(IPrototypeManager protoManager)
|
||||
{
|
||||
@@ -81,11 +71,6 @@ public sealed partial class TagResource : CP14WorkbenchCraftRequirement
|
||||
return $"{Loc.GetString(Title)} x{Count}";
|
||||
}
|
||||
|
||||
public override EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager)
|
||||
{
|
||||
return Texture;
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Workbench.Prototypes;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
@@ -14,43 +13,59 @@ namespace Content.Shared._CP14.Workbench;
|
||||
[MeansImplicitUse]
|
||||
public abstract partial class CP14WorkbenchCraftRequirement
|
||||
{
|
||||
/// <summary>
|
||||
/// If true, failure to fulfill this condition will hide recipes from the possible craft workbench menu
|
||||
/// </summary>
|
||||
public abstract bool HideRecipe { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Here a check is made that the recipe as a whole can be fulfilled at the current moment. Do not add anything that affects gameplay here, and only perform checks here.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public abstract bool CheckRequirement(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user);
|
||||
HashSet<EntityUid> placedEntities);
|
||||
|
||||
/// <summary>
|
||||
/// An event that is triggered after crafting. This is the place to put important things like removing items, spending stacks or other things.
|
||||
/// </summary>
|
||||
public abstract void PostCraft(EntityManager entManager,
|
||||
public virtual void PostCraft(EntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
HashSet<EntityUid> placedEntities,
|
||||
EntityUid? user);
|
||||
HashSet<EntityUid> placedEntities)
|
||||
{
|
||||
|
||||
public abstract double GetPrice(EntityManager entManager,
|
||||
IPrototypeManager protoManager);
|
||||
}
|
||||
|
||||
public virtual double GetPrice(EntityManager entManager,
|
||||
IPrototypeManager protoManager)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This text will be displayed in the description of the craft recipe. Write something like ‘Wooden planks: х10’ here
|
||||
/// </summary>
|
||||
public abstract string GetRequirementTitle(IPrototypeManager protoManager);
|
||||
public virtual string GetRequirementTitle(IPrototypeManager protoManager)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// You can specify an icon generated from an entity. It will support layering, colour changes and other layer options. Return null to disable.
|
||||
/// </summary>
|
||||
public abstract EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager);
|
||||
public virtual EntityPrototype? GetRequirementEntityView(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// You can specify the texture directly. Return null to disable.
|
||||
/// </summary>
|
||||
public abstract SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager);
|
||||
public virtual SpriteSpecifier? GetRequirementTexture(IPrototypeManager protoManager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Optional, allows you to repaint the icon.
|
||||
/// </summary>
|
||||
public virtual Color GetRequirementColor(IPrototypeManager protoManager)
|
||||
{
|
||||
return Color.White;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,6 @@ cp14-workbench-ui-title = Item creation
|
||||
cp14-workbench-craft = Craft
|
||||
cp14-workbench-recipe-list = Recipe:
|
||||
|
||||
cp14-workbench-cant-craft = Craft failed!
|
||||
cp14-workbench-cant-craft = Craft failed!
|
||||
|
||||
cp14-workbench-reagent-req = {$count}u {$reagent} with {$purity}% purity
|
||||
@@ -3,4 +3,6 @@ cp14-workbench-ui-title = Создание предметов
|
||||
cp14-workbench-craft = Создать
|
||||
cp14-workbench-recipe-list = Рецепт:
|
||||
|
||||
cp14-workbench-cant-craft = Крафт не удался!
|
||||
cp14-workbench-cant-craft = Крафт не удался!
|
||||
|
||||
cp14-workbench-reagent-req = {$count}u {$reagent} с {$purity}% чистоты
|
||||
@@ -113,3 +113,11 @@
|
||||
tags:
|
||||
- HideContextMenu
|
||||
|
||||
- type: entity
|
||||
id: CP14LiquidDropDummy
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Misc/liquid_drop.rsi
|
||||
layers:
|
||||
- state: liq-1
|
||||
@@ -49,40 +49,6 @@
|
||||
- type: Stack
|
||||
count: 3
|
||||
|
||||
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: CP14CrystalShardQuartz
|
||||
name: quartz shard
|
||||
description: Natural quartz crystals that can absorb the magical energy of the world around them.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FitInMortar
|
||||
- type: Item
|
||||
size: Tiny
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Flora/Crystal/crystal_shard.rsi
|
||||
layers:
|
||||
- state: shard0
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
shard0: ""
|
||||
shard1: ""
|
||||
shard2: ""
|
||||
shard3: ""
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 7
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14Glass: 10
|
||||
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: CP14DimensitCrystal
|
||||
|
||||
148
Resources/Prototypes/_CP14/Entities/Objects/Materials/quartz.yml
Normal file
148
Resources/Prototypes/_CP14/Entities/Objects/Materials/quartz.yml
Normal file
@@ -0,0 +1,148 @@
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: CP14CrystalShardQuartz
|
||||
name: quartz shard
|
||||
description: Natural quartz crystals that can absorb the magical energy of the world around them.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FitInMortar
|
||||
- type: Item
|
||||
size: Tiny
|
||||
- type: Sprite
|
||||
sprite: _CP14/Structures/Flora/Crystal/crystal_shard.rsi
|
||||
layers:
|
||||
- state: shard0
|
||||
map: ["random"]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
shard0: ""
|
||||
shard1: ""
|
||||
shard2: ""
|
||||
shard3: ""
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 5
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14Glass: 10
|
||||
|
||||
# Basic 6
|
||||
|
||||
- type: entity
|
||||
parent: CP14CrystalShardQuartz
|
||||
id: CP14CrystalShardQuartzEarth
|
||||
name: terra shard
|
||||
suffix: Earth
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#1cea42"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 5
|
||||
- ReagentId: CP14EssenceEarth
|
||||
Quantity: 5
|
||||
|
||||
- type: entity
|
||||
parent: CP14CrystalShardQuartz
|
||||
id: CP14CrystalShardQuartzFire
|
||||
name: ignis shard
|
||||
suffix: Fire
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#d9741c"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 5
|
||||
- ReagentId: CP14EssenceFire
|
||||
Quantity: 5
|
||||
|
||||
- type: entity
|
||||
parent: CP14CrystalShardQuartz
|
||||
id: CP14CrystalShardQuartzWater
|
||||
name: aqua shard
|
||||
suffix: Water
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#1c94d9"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 5
|
||||
- ReagentId: CP14EssenceWater
|
||||
Quantity: 5
|
||||
|
||||
- type: entity
|
||||
parent: CP14CrystalShardQuartz
|
||||
id: CP14CrystalShardQuartzAir
|
||||
name: aer shard
|
||||
suffix: Air
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#fdfe86"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 5
|
||||
- ReagentId: CP14EssenceAir
|
||||
Quantity: 5
|
||||
|
||||
- type: entity
|
||||
parent: CP14CrystalShardQuartz
|
||||
id: CP14CrystalShardQuartzOrder
|
||||
name: ordo shard
|
||||
suffix: Order
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#d9d9d9"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 5
|
||||
- ReagentId: CP14EssenceOrder
|
||||
Quantity: 5
|
||||
|
||||
- type: entity
|
||||
parent: CP14CrystalShardQuartz
|
||||
id: CP14CrystalShardQuartzChaos
|
||||
name: perditio shard
|
||||
suffix: Chaos
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#4d4d4d"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 5
|
||||
- ReagentId: CP14EssenceChaos
|
||||
Quantity: 5
|
||||
|
||||
# Complex tier 2
|
||||
|
||||
- type: entity
|
||||
parent: CP14CrystalShardQuartz
|
||||
id: CP14CrystalShardQuartzMagic
|
||||
name: praecantatio shard
|
||||
suffix: Magic
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#5497d6"
|
||||
- type: Extractable
|
||||
juiceSolution:
|
||||
reagents:
|
||||
- ReagentId: CP14GroundQuartz
|
||||
Quantity: 5
|
||||
- ReagentId: CP14EssenceMagic
|
||||
Quantity: 5
|
||||
@@ -95,3 +95,192 @@
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
# Basic 6
|
||||
|
||||
- type: entity
|
||||
id: CP14CrystalQuartzEarth
|
||||
suffix: Earth
|
||||
parent: CP14CrystalBase
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#1cea42"
|
||||
- type: PointLight
|
||||
color: "#1cea42"
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 15
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: GlassBreak
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14CrystalShardQuartzEarth:
|
||||
min: 1
|
||||
max: 2
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14EssenceEarth:
|
||||
min: 3
|
||||
max: 5
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14CrystalQuartzFire
|
||||
suffix: Fire
|
||||
parent: CP14CrystalBase
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#d9741c"
|
||||
- type: PointLight
|
||||
color: "#d9741c"
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 15
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: GlassBreak
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14CrystalShardQuartzFire:
|
||||
min: 1
|
||||
max: 2
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14EssenceFire:
|
||||
min: 3
|
||||
max: 5
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14CrystalQuartzWater
|
||||
suffix: Water
|
||||
parent: CP14CrystalBase
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#1c94d9"
|
||||
- type: PointLight
|
||||
color: "#1c94d9"
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 15
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: GlassBreak
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14CrystalShardQuartzWater:
|
||||
min: 1
|
||||
max: 2
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14EssenceWater:
|
||||
min: 3
|
||||
max: 5
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14CrystalQuartzAir
|
||||
suffix: Air
|
||||
parent: CP14CrystalBase
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#fdfe86"
|
||||
- type: PointLight
|
||||
color: "#fdfe86"
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 15
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: GlassBreak
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14CrystalShardQuartzAir:
|
||||
min: 1
|
||||
max: 2
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14EssenceAir:
|
||||
min: 3
|
||||
max: 5
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14CrystalQuartzOrder
|
||||
suffix: Order
|
||||
parent: CP14CrystalBase
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#d9d9d9"
|
||||
- type: PointLight
|
||||
color: "#d9d9d9"
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 15
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: GlassBreak
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14CrystalShardQuartzOrder:
|
||||
min: 1
|
||||
max: 2
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14EssenceOrder:
|
||||
min: 3
|
||||
max: 5
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: CP14CrystalQuartzChaos
|
||||
suffix: Chaos
|
||||
parent: CP14CrystalBase
|
||||
components:
|
||||
- type: Sprite
|
||||
color: "#4d4d4d"
|
||||
- type: PointLight
|
||||
color: "#4d4d4d"
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 15
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: GlassBreak
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14CrystalShardQuartzChaos:
|
||||
min: 1
|
||||
max: 2
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14EssenceChaos:
|
||||
min: 3
|
||||
max: 5
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
# Complex tier 1
|
||||
@@ -1,58 +0,0 @@
|
||||
- type: entity
|
||||
parent:
|
||||
- BaseStructure
|
||||
id: CP14ResearchTable
|
||||
categories: [ ForkFiltered ]
|
||||
name: research table
|
||||
description: A place of research, experimentation and discovery that allows you to be smarter.
|
||||
components:
|
||||
- type: Sprite
|
||||
snapCardinals: true
|
||||
sprite: _CP14/Structures/Furniture/workbench.rsi
|
||||
state: research_table
|
||||
- type: Icon
|
||||
sprite: _CP14/Structures/Furniture/workbench.rsi
|
||||
state: research_table
|
||||
- type: ActivatableUI
|
||||
key: enum.CP14ResearchTableUiKey.Key
|
||||
requiresComplex: true
|
||||
singleUser: true
|
||||
- type: Climbable
|
||||
- type: Clickable
|
||||
- type: CP14ResearchTable
|
||||
- type: InteractionOutline
|
||||
- type: PlaceableSurface
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.CP14ResearchTableUiKey.Key:
|
||||
type: CP14ResearchTableBoundUserInterface
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
damageModifierSet: Wood
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTypeTrigger
|
||||
damageType: Heat
|
||||
damage: 40
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: WoodDestroy
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 60
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
collection: WoodDestroy
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
CP14WoodenPlanks1:
|
||||
min: 1
|
||||
max: 2
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
- type: CP14Workbench
|
||||
craftSpeed: 1
|
||||
- type: InteractionOutline
|
||||
- type: PlaceableSurface
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.CP14WorkbenchUiKey.Key:
|
||||
@@ -55,6 +54,31 @@
|
||||
CP14WoodenPlanks1:
|
||||
min: 1
|
||||
max: 2
|
||||
- type: PlaceableSurface
|
||||
- type: ItemPlacer
|
||||
maxEntities: 0
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeAabb
|
||||
bounds: "-0.45,-0.45,0.45,0.45"
|
||||
density: 55
|
||||
mask: # tables should collide with other tables
|
||||
- TableMask
|
||||
layer:
|
||||
- TableLayer
|
||||
fix2:
|
||||
shape:
|
||||
!type:PhysShapeAabb
|
||||
bounds: "-0.4,-0.4,0.4,0.4"
|
||||
mask:
|
||||
- TabletopMachineMask
|
||||
layer:
|
||||
- Impassable
|
||||
- MidImpassable
|
||||
- LowImpassable
|
||||
hard: false
|
||||
|
||||
- type: entity
|
||||
parent:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
id: Quartz
|
||||
levels:
|
||||
min: 1
|
||||
max: 8
|
||||
max: 10
|
||||
categories:
|
||||
Reward: 0.15
|
||||
layers:
|
||||
@@ -15,3 +15,118 @@
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 5
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CP14CrystalQuartzEarth
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
requiredTags:
|
||||
- CP14DemiplaneUnderground
|
||||
categories:
|
||||
Reward: 0.15
|
||||
layers:
|
||||
- !type:CP14OreDunGen
|
||||
tileMask:
|
||||
- CP14FloorBase
|
||||
- CP14FloorIce
|
||||
entity: CP14CrystalQuartzEarth
|
||||
count: 15
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 2
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CP14CrystalQuartzFire
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
requiredTags:
|
||||
- CP14DemiplaneHot
|
||||
categories:
|
||||
Reward: 0.15
|
||||
layers:
|
||||
- !type:CP14OreDunGen
|
||||
tileMask:
|
||||
- CP14FloorBase
|
||||
- CP14FloorIce
|
||||
entity: CP14CrystalQuartzFire
|
||||
count: 15
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 2
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CP14CrystalQuartzWater
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
requiredTags:
|
||||
- CP14DemiplaneWater
|
||||
categories:
|
||||
Reward: 0.15
|
||||
layers:
|
||||
- !type:CP14OreDunGen
|
||||
tileMask:
|
||||
- CP14FloorBase
|
||||
- CP14FloorIce
|
||||
entity: CP14CrystalQuartzWater
|
||||
count: 15
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 2
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CP14CrystalQuartzAir
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
requiredTags:
|
||||
- CP14DemiplaneOpenSky
|
||||
categories:
|
||||
Reward: 0.15
|
||||
layers:
|
||||
- !type:CP14OreDunGen
|
||||
tileMask:
|
||||
- CP14FloorBase
|
||||
- CP14FloorIce
|
||||
entity: CP14CrystalQuartzAir
|
||||
count: 15
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 2
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CP14CrystalQuartzOrder
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.15
|
||||
layers:
|
||||
- !type:CP14OreDunGen
|
||||
tileMask:
|
||||
- CP14FloorBase
|
||||
- CP14FloorIce
|
||||
entity: CP14CrystalQuartzOrder
|
||||
count: 15
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 2
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CP14CrystalQuartzChaos
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.15
|
||||
layers:
|
||||
- !type:CP14OreDunGen
|
||||
tileMask:
|
||||
- CP14FloorBase
|
||||
- CP14FloorIce
|
||||
entity: CP14CrystalQuartzChaos
|
||||
count: 15
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 2
|
||||
|
||||
@@ -3,10 +3,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
count: 2
|
||||
@@ -20,10 +19,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -33,10 +31,9 @@
|
||||
id: CP14PlatePie
|
||||
tag: CP14RecipeAnvil
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar # Physical Composition in item
|
||||
count: 1
|
||||
@@ -47,11 +44,10 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar # Physical Composition in item
|
||||
count: 2
|
||||
@@ -65,10 +61,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -79,10 +74,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 4
|
||||
@@ -93,10 +87,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -107,10 +100,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 1
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -122,10 +114,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 1
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -137,10 +128,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 1
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -152,10 +142,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 1
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -167,10 +156,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 1
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -182,10 +170,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 1
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -197,10 +184,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 1
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -212,10 +198,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 1
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -227,10 +212,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -241,10 +225,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -255,11 +238,10 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -276,10 +258,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 5
|
||||
@@ -293,10 +274,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -307,10 +287,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -321,10 +300,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -335,10 +313,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -349,10 +326,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -363,10 +339,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -377,10 +352,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -391,10 +365,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -405,10 +378,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -419,10 +391,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -433,10 +404,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14CrystalShardQuartz
|
||||
count: 1
|
||||
@@ -449,10 +419,9 @@
|
||||
id: CP14Fork
|
||||
tag: CP14RecipeAnvil
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -463,10 +432,9 @@
|
||||
id: CP14Spoon
|
||||
tag: CP14RecipeAnvil
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -477,10 +445,9 @@
|
||||
id: CP14SteelGobletCopper
|
||||
tag: CP14RecipeAnvil
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -490,10 +457,9 @@
|
||||
id: CP14SteelGobletIron
|
||||
tag: CP14RecipeAnvil
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -503,10 +469,9 @@
|
||||
id: CP14SteelGobletGold
|
||||
tag: CP14RecipeAnvil
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -20,10 +19,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -34,10 +32,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -48,10 +45,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -64,10 +60,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -78,10 +73,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -92,10 +86,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -106,10 +99,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -20,10 +19,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -34,10 +32,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -48,10 +45,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -64,10 +60,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -78,10 +73,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -92,10 +86,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -106,10 +99,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -122,10 +114,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -136,10 +127,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -150,10 +140,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -164,10 +153,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -180,10 +168,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -194,10 +181,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -208,10 +194,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -222,10 +207,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
@@ -238,10 +222,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -252,10 +235,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -266,10 +248,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -280,10 +261,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -296,10 +276,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -310,10 +289,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -325,10 +303,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -339,10 +316,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -355,10 +331,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -369,10 +344,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -383,10 +357,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -397,10 +370,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
@@ -413,10 +385,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -427,10 +398,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -441,10 +411,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -455,10 +424,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -471,10 +439,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -485,10 +452,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -499,10 +465,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -513,10 +478,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
@@ -529,10 +493,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -543,10 +506,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -557,10 +519,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -571,10 +532,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -587,10 +547,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -601,10 +560,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -615,10 +573,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -629,10 +586,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
@@ -645,10 +601,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -659,10 +614,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -673,10 +627,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -687,10 +640,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
@@ -703,10 +655,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -717,10 +668,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -731,10 +681,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -745,10 +694,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Tools
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -761,10 +709,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -775,10 +722,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -789,10 +735,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -803,10 +748,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 5
|
||||
@@ -20,10 +19,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 5
|
||||
@@ -34,10 +32,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 5
|
||||
@@ -48,10 +45,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 5
|
||||
@@ -64,10 +60,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 6
|
||||
@@ -78,10 +73,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 6
|
||||
@@ -92,10 +86,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 6
|
||||
@@ -106,10 +99,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 6
|
||||
@@ -122,10 +114,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 8
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 4
|
||||
@@ -136,10 +127,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 8
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 4
|
||||
@@ -150,10 +140,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 8
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 4
|
||||
@@ -164,10 +153,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 8
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 4
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -20,10 +19,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -34,10 +32,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -48,10 +45,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
@@ -64,10 +60,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -78,10 +73,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -92,10 +86,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -106,10 +99,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
|
||||
@@ -5,10 +5,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -19,10 +18,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -33,10 +31,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -47,10 +44,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -63,10 +59,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -77,10 +72,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -91,10 +85,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -105,10 +98,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Weapon
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -20,10 +19,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -34,10 +32,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -48,10 +45,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
@@ -64,10 +60,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -78,10 +73,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -92,10 +86,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -106,10 +99,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -20,10 +19,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -34,10 +32,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -48,10 +45,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
@@ -64,10 +60,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
@@ -78,10 +73,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 2
|
||||
@@ -92,10 +86,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 2
|
||||
@@ -106,10 +99,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 2
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -21,10 +20,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -36,10 +34,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -51,10 +48,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -20,10 +19,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -34,10 +32,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -48,10 +45,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
@@ -64,10 +60,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 1
|
||||
@@ -78,10 +73,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
@@ -92,10 +86,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -106,10 +99,9 @@
|
||||
tag: CP14RecipeAnvil
|
||||
category: Armor
|
||||
craftTime: 6
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:StackResource
|
||||
stack: CP14MithrilBar
|
||||
count: 1
|
||||
|
||||
@@ -2,10 +2,9 @@
|
||||
id: CP14CopperBar1
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- CopperMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- CopperMelting
|
||||
- !type:MaterialResource
|
||||
material: CP14Copper
|
||||
count: 10
|
||||
@@ -15,10 +14,9 @@
|
||||
id: CP14IronBar1
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- IronMelting
|
||||
- !type:MaterialResource
|
||||
material: CP14Iron
|
||||
count: 10
|
||||
@@ -28,10 +26,9 @@
|
||||
id: CP14GoldBar1
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GoldMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GoldMelting
|
||||
- !type:MaterialResource
|
||||
material: CP14Gold
|
||||
count: 10
|
||||
@@ -41,10 +38,9 @@
|
||||
id: CP14MithrilBar1
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- MithrilMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- MithrilMelting
|
||||
- !type:MaterialResource
|
||||
material: CP14Mithril
|
||||
count: 10
|
||||
@@ -54,10 +50,9 @@
|
||||
id: CP14GlassSheet1
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14CrystalShardQuartz
|
||||
count: 1
|
||||
@@ -67,10 +62,9 @@
|
||||
id: CP14GlassSheetShard1
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14GlassShard
|
||||
count: 2
|
||||
@@ -80,10 +74,9 @@
|
||||
id: CP14VialTiny
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GlassSheet
|
||||
count: 1
|
||||
@@ -93,10 +86,9 @@
|
||||
id: CP14VialTinyReinforced
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -109,10 +101,9 @@
|
||||
id: CP14VialSmall
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GlassSheet
|
||||
count: 2
|
||||
@@ -122,10 +113,9 @@
|
||||
id: CP14VialSmallReinforced
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -138,10 +128,9 @@
|
||||
id: CP14VialMedium
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GlassSheet
|
||||
count: 4
|
||||
@@ -151,10 +140,9 @@
|
||||
id: CP14VialMediumReinforced
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -167,10 +155,9 @@
|
||||
id: CP14VialStar
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GlassSheet
|
||||
count: 2
|
||||
@@ -180,10 +167,9 @@
|
||||
id: CP14VialStarReinforced
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 3
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14CopperBar
|
||||
count: 1
|
||||
@@ -196,10 +182,9 @@
|
||||
id: CP14BaseAlchemyBomb
|
||||
tag: CP14RecipeMeltingFurnace
|
||||
craftTime: 4
|
||||
requiredSkills:
|
||||
- GlassMelting
|
||||
requirements:
|
||||
- !type:SkillRequired
|
||||
skills:
|
||||
- GlassMelting
|
||||
- !type:StackResource
|
||||
stack: CP14GlassSheet
|
||||
count: 9
|
||||
|
||||
Reference in New Issue
Block a user