151 lines
5.2 KiB
C#
151 lines
5.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace IdleSpectator;
|
|
|
|
public sealed class StatusInterestEntry
|
|
{
|
|
public string Id = "";
|
|
public float EventStrength = 40f;
|
|
public string Category = "Status";
|
|
public bool CreatesInterest;
|
|
public bool ExtendsGrief;
|
|
public bool IsFallback;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Authored interest policy for every live status asset. Prose stays in ActivityStatusProse.
|
|
/// </summary>
|
|
public static partial class EventCatalog
|
|
{
|
|
public static class Status
|
|
{
|
|
private static readonly Dictionary<string, StatusInterestEntry> Entries =
|
|
new Dictionary<string, StatusInterestEntry>(StringComparer.OrdinalIgnoreCase);
|
|
|
|
static Status()
|
|
{
|
|
// Spectacle / camera-worthy transformations
|
|
Add("burning", 70f, "StatusTransformation", true);
|
|
Add("possessed", 72f, "StatusTransformation", true);
|
|
Add("possessed_follower", 60f, "StatusTransformation", true);
|
|
Add("frozen", 65f, "StatusTransformation", true);
|
|
Add("poisoned", 58f, "StatusTransformation", true);
|
|
Add("drowning", 50f, "StatusTransformation", true);
|
|
Add("stunned", 50f, "StatusTransformation", true);
|
|
Add("rage", 62f, "StatusTransformation", true);
|
|
Add("angry", 48f, "StatusTransformation", true);
|
|
Add("cursed", 60f, "StatusTransformation", true);
|
|
Add("soul_harvested", 75f, "StatusTransformation", true);
|
|
Add("voices_in_my_head", 55f, "StatusTransformation", true);
|
|
Add("tantrum", 52f, "StatusTransformation", true);
|
|
Add("egg", 40f, "StatusTransformation", false);
|
|
Add("magnetized", 55f, "StatusTransformation", true);
|
|
Add("invincible", 40f, "StatusTransformation", false);
|
|
Add("powerup", 54f, "StatusTransformation", true);
|
|
Add("enchanted", 52f, "StatusTransformation", true);
|
|
Add("ash_fever", 50f, "StatusTransformation", true);
|
|
Add("starving", 48f, "StatusTransformation", true);
|
|
Add("surprised", 42f, "StatusTransformation", true);
|
|
Add("confused", 40f, "StatusTransformation", true);
|
|
Add("strange_urge", 45f, "StatusTransformation", true);
|
|
Add("inspired", 42f, "Emotion", true);
|
|
Add("motivated", 40f, "Emotion", true);
|
|
Add("fell_in_love", 42f, "Relationship", false);
|
|
Add("pregnant", 58f, "LifeChapter", true);
|
|
Add("pregnant_parthenogenesis", 58f, "LifeChapter", true);
|
|
Add("crying", 50f, "Grief", true, extendsGrief: true);
|
|
|
|
// Authored Ambient - never owns camera (task chip / enrichment only).
|
|
Add("festive_spirit", 28f, "StatusAmbient", false);
|
|
Add("laughing", 26f, "StatusAmbient", false);
|
|
Add("singing", 26f, "StatusAmbient", false);
|
|
Add("sleeping", 22f, "StatusAmbient", false);
|
|
Add("handsome_migrant", 30f, "StatusAmbient", false);
|
|
|
|
// Authored but do not create interest candidates (cooldowns / ambient / brief FX)
|
|
AddNoInterest("afterglow");
|
|
AddNoInterest("being_suspicious");
|
|
AddNoInterest("budding");
|
|
AddNoInterest("caffeinated");
|
|
AddNoInterest("cough");
|
|
AddNoInterest("dash");
|
|
AddNoInterest("dodge");
|
|
AddNoInterest("flicked");
|
|
AddNoInterest("had_bad_dream");
|
|
AddNoInterest("had_good_dream");
|
|
AddNoInterest("had_nightmare");
|
|
AddNoInterest("just_ate");
|
|
AddNoInterest("on_guard");
|
|
AddNoInterest("recovery_combat_action");
|
|
AddNoInterest("recovery_plot");
|
|
AddNoInterest("recovery_social");
|
|
AddNoInterest("recovery_spell");
|
|
AddNoInterest("shield");
|
|
AddNoInterest("slowness");
|
|
AddNoInterest("spell_boost");
|
|
AddNoInterest("spell_silence");
|
|
AddNoInterest("swearing");
|
|
AddNoInterest("taking_roots");
|
|
AddNoInterest("uprooting");
|
|
}
|
|
|
|
private static void Add(
|
|
string id,
|
|
float strength,
|
|
string category,
|
|
bool createsInterest,
|
|
bool extendsGrief = false)
|
|
{
|
|
Entries[id] = new StatusInterestEntry
|
|
{
|
|
Id = id,
|
|
EventStrength = strength,
|
|
Category = category,
|
|
CreatesInterest = createsInterest,
|
|
ExtendsGrief = extendsGrief
|
|
};
|
|
}
|
|
|
|
private static void AddNoInterest(string id)
|
|
{
|
|
Add(id, 20f, "StatusAmbient", false);
|
|
}
|
|
|
|
public static IEnumerable<string> AuthoredIds => Entries.Keys;
|
|
|
|
public static bool HasAuthored(string statusId)
|
|
{
|
|
return !string.IsNullOrEmpty(statusId) && Entries.ContainsKey(statusId.Trim());
|
|
}
|
|
|
|
public static bool TryGet(string statusId, out StatusInterestEntry entry)
|
|
{
|
|
entry = null;
|
|
if (string.IsNullOrEmpty(statusId))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return Entries.TryGetValue(statusId.Trim(), out entry);
|
|
}
|
|
|
|
public static StatusInterestEntry GetOrFallback(string statusId)
|
|
{
|
|
if (TryGet(statusId, out StatusInterestEntry entry))
|
|
{
|
|
return entry;
|
|
}
|
|
|
|
string id = string.IsNullOrEmpty(statusId) ? "unknown" : statusId.Trim();
|
|
return new StatusInterestEntry
|
|
{
|
|
Id = id,
|
|
EventStrength = 40f,
|
|
Category = "Status",
|
|
CreatesInterest = false,
|
|
IsFallback = true
|
|
};
|
|
}
|
|
}
|
|
}
|