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:
Flipp Syder
2022-09-08 16:14:49 -07:00
committed by GitHub
parent f3510324ea
commit 3cfa00e91c
45 changed files with 2048 additions and 9 deletions

View File

@@ -32,6 +32,7 @@ namespace Content.Server.Nutrition.EntitySystems
public sealed class DrinkSystem : EntitySystem
{
[Dependency] private readonly FoodSystem _foodSystem = default!;
[Dependency] private readonly FlavorProfileSystem _flavorProfileSystem = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
@@ -335,13 +336,15 @@ namespace Content.Server.Nutrition.EntitySystems
return;
}
var flavors = _flavorProfileSystem.GetLocalizedFlavorsMessage(args.User, drained);
if (forceDrink)
{
var targetName = Identity.Entity(uid, EntityManager);
var userName = Identity.Entity(args.User, EntityManager);
_popupSystem.PopupEntity(
Loc.GetString("drink-component-force-feed-success", ("user", userName)), uid, Filter.Entities(uid));
Loc.GetString("drink-component-force-feed-success", ("user", userName), ("flavors", flavors)), uid, Filter.Entities(uid));
_popupSystem.PopupEntity(
Loc.GetString("drink-component-force-feed-success-user", ("target", targetName)),
@@ -350,7 +353,10 @@ namespace Content.Server.Nutrition.EntitySystems
else
{
_popupSystem.PopupEntity(
Loc.GetString("drink-component-try-use-drink-success-slurp"), args.User, Filter.Pvs(args.User));
Loc.GetString("drink-component-try-use-drink-success-slurp-taste", ("flavors", flavors)), args.User,
Filter.Entities(args.User));
_popupSystem.PopupEntity(
Loc.GetString("drink-component-try-use-drink-success-slurp"), args.User, Filter.PvsExcept(args.User));
}
SoundSystem.Play(args.Drink.UseSound.GetSound(), Filter.Pvs(uid), uid, AudioParams.Default.WithVolume(-2f));