Flavor profiles (#10991)
* flavor profiles TODO: every single flavor! yeah!!! * adds basic localization, and flavors/lastFlavor values for when you get the flavor profile message * multiple and single flavor messages * start on flavor localization, multiple flavors in localized flavors * flavor prototypes * a few more flavors, descriptions on what each section of the flavor file should be doing * localization for flavor profiles in drink/food system * adds an event that allows a flavor profile list to be transformed base on the user entity * raises it on the food entity too * changes a field in flavor, adds some more flavors, starts adding flavor prototypes * adds basic flavors to several entities, and consumable drinks, renames flavor field to 'flavors' * changes call ordering in flavorprofile, adds flavor to ignored components server-side flavor is really just a popup message, and those are all processed server-side * fixes where food tried to get the flavor of the user instead of the food * single flavors will now get the localized string * getting the flavor message now ensures that flavors are deduplicated * makes flavor processing more strictly unique bu making everything hashsets * yeah, that could just not have distinctby now * adds flavorprofile directly to food base instead for generic food taste * FlavorProfileModificationEvent now passes a hashset of strings and not flavorprototypes * flavorprofilesystem now broadcasts the flavor profile modification event * adds more flavors to the flavor profile loc file * skips a flavor, if the flavor string is null/empty * adds some more flavors, adds generic medicine flavor to medicinal chemicals * more food flavors, adds flavors to swallowing * adds some cocktails to the set of flavor profiles * regenerates flavor prototypes * adds flavor type to all flavors, adds whitespace between variants * adds more flavors, adds flavors to several chemicals and food items this is the part that took the longest * changes backup flavor message * spelling mistake * more flavors, and flavors on food * readds all the type fields, whoops * fixes localization strings for forcefeeding food/drink * fixes multiple flavor profile * adds flavor limit for flavors * makes that fetch the cvardef instead
This commit is contained in:
@@ -30,6 +30,7 @@ namespace Content.Server.Nutrition.EntitySystems
|
||||
public sealed class FoodSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
|
||||
[Dependency] private readonly FlavorProfileSystem _flavorProfileSystem = default!;
|
||||
[Dependency] private readonly BodySystem _bodySystem = default!;
|
||||
[Dependency] private readonly StomachSystem _stomachSystem = default!;
|
||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||
@@ -157,6 +158,8 @@ namespace Content.Server.Nutrition.EntitySystems
|
||||
: args.FoodSolution.CurrentVolume;
|
||||
|
||||
var split = _solutionContainerSystem.SplitSolution((args.Food).Owner, args.FoodSolution, transferAmount);
|
||||
|
||||
|
||||
var firstStomach = stomachs.FirstOrNull(
|
||||
stomach => _stomachSystem.CanTransferSolution((stomach.Comp).Owner, split));
|
||||
|
||||
@@ -177,11 +180,13 @@ namespace Content.Server.Nutrition.EntitySystems
|
||||
split.DoEntityReaction(uid, ReactionMethod.Ingestion);
|
||||
_stomachSystem.TryTransferSolution(firstStomach.Value.Comp.Owner, split, firstStomach.Value.Comp);
|
||||
|
||||
var flavors = _flavorProfileSystem.GetLocalizedFlavorsMessage(args.Food.Owner, args.User, split);
|
||||
|
||||
if (forceFeed)
|
||||
{
|
||||
var targetName = Identity.Entity(uid, EntityManager);
|
||||
var userName = Identity.Entity(args.User, EntityManager);
|
||||
_popupSystem.PopupEntity(Loc.GetString("food-system-force-feed-success", ("user", userName)),
|
||||
_popupSystem.PopupEntity(Loc.GetString("food-system-force-feed-success", ("user", userName), ("flavors", flavors)),
|
||||
uid, Filter.Entities(uid));
|
||||
|
||||
_popupSystem.PopupEntity(Loc.GetString("food-system-force-feed-success-user", ("target", targetName)),
|
||||
@@ -189,7 +194,7 @@ namespace Content.Server.Nutrition.EntitySystems
|
||||
}
|
||||
else
|
||||
{
|
||||
_popupSystem.PopupEntity(Loc.GetString(args.Food.EatMessage, ("food", args.Food.Owner)), args.User, Filter.Entities(args.User));
|
||||
_popupSystem.PopupEntity(Loc.GetString(args.Food.EatMessage, ("food", args.Food.Owner), ("flavors", flavors)), args.User, Filter.Entities(args.User));
|
||||
}
|
||||
|
||||
SoundSystem.Play(args.Food.UseSound.GetSound(), Filter.Pvs(uid), uid, AudioParams.Default.WithVolume(-1f));
|
||||
|
||||
Reference in New Issue
Block a user