fix emagged lathes (#23318)

* implement

* pass uid

* fix

* fix dementia

* event implementation

* fix
This commit is contained in:
Ilya246
2024-01-02 11:11:13 +04:00
committed by GitHub
parent 9b36232e3b
commit 49dbbc5721
3 changed files with 18 additions and 17 deletions

View File

@@ -107,7 +107,7 @@ namespace Content.Server.Lathe
if (args.Storage != uid)
return;
var materialWhitelist = new List<ProtoId<MaterialPrototype>>();
var recipes = GetAllBaseRecipes(component);
var recipes = GetAvailableRecipes(uid, component, true);
foreach (var id in recipes)
{
if (!_proto.TryIndex(id, out var proto))
@@ -126,18 +126,18 @@ namespace Content.Server.Lathe
}
[PublicAPI]
public bool TryGetAvailableRecipes(EntityUid uid, [NotNullWhen(true)] out List<ProtoId<LatheRecipePrototype>>? recipes, [NotNullWhen(true)] LatheComponent? component = null)
public bool TryGetAvailableRecipes(EntityUid uid, [NotNullWhen(true)] out List<ProtoId<LatheRecipePrototype>>? recipes, [NotNullWhen(true)] LatheComponent? component = null, bool getUnavailable = false)
{
recipes = null;
if (!Resolve(uid, ref component))
return false;
recipes = GetAvailableRecipes(uid, component);
recipes = GetAvailableRecipes(uid, component, getUnavailable);
return true;
}
public List<ProtoId<LatheRecipePrototype>> GetAvailableRecipes(EntityUid uid, LatheComponent component)
public List<ProtoId<LatheRecipePrototype>> GetAvailableRecipes(EntityUid uid, LatheComponent component, bool getUnavailable = false)
{
var ev = new LatheGetRecipesEvent(uid)
var ev = new LatheGetRecipesEvent(uid, getUnavailable)
{
Recipes = new List<ProtoId<LatheRecipePrototype>>(component.StaticRecipes)
};
@@ -236,7 +236,7 @@ namespace Content.Server.Lathe
foreach (var recipe in latheComponent.DynamicRecipes)
{
if (!component.UnlockedRecipes.Contains(recipe) || args.Recipes.Contains(recipe))
if (!(args.getUnavailable || component.UnlockedRecipes.Contains(recipe)) || args.Recipes.Contains(recipe))
continue;
args.Recipes.Add(recipe);
}
@@ -246,11 +246,11 @@ namespace Content.Server.Lathe
{
if (uid != args.Lathe || !TryComp<TechnologyDatabaseComponent>(uid, out var technologyDatabase))
return;
if (!HasComp<EmaggedComponent>(uid))
if (!args.getUnavailable && !HasComp<EmaggedComponent>(uid))
return;
foreach (var recipe in component.EmagDynamicRecipes)
{
if (!technologyDatabase.UnlockedRecipes.Contains(recipe) || args.Recipes.Contains(recipe))
if (!(args.getUnavailable || technologyDatabase.UnlockedRecipes.Contains(recipe)) || args.Recipes.Contains(recipe))
continue;
args.Recipes.Add(recipe);
}