fix emagged lathes (#23318)
* implement * pass uid * fix * fix dementia * event implementation * fix
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user