Below is some sample code for the required methods, which you may choose to use or modify for your purposes. Unless you are adding Stats that are not actors, you would not need to do any of the following, so long as you inherit GameModulesActor :)
// TryGetGameStat()publicoverrideboolTryGetGameStat(Stat stat,outGameStat gameStat) =>TryGetGameStat(stat.Uid(),out gameStat);publicoverrideboolTryGetGameStat(string uid,outGameStat gameStat){ gameStat =stats.Get(uid,false);return gameStat !=null;}// GetOtherLevels()publicvirtualList<ModificationLevel> GetOtherLevels(bool cache =false){if (_modificationLevels !=null&&!cache)return _modificationLevels;var otherModificationLevels =newList<ModificationLevel>(); // You would add the "Modification Levels" from other Game Module // objects used on this object or actor.otherModificationLevels.AddRange(conditions.ModificationLevels);otherModificationLevels.AddRange(quests.ModificationLevels);otherModificationLevels.AddRange(equippedItems.ModificationLevels); // This example is from DemoActor.cs in the Party Based RPG demo gameif (!string.IsNullOrWhiteSpace(ActorRace.objectName)) otherModificationLevels.Add(ActorRace.ModificationLevel);if (!string.IsNullOrWhiteSpace(ActorClass.objectName)) otherModificationLevels.Add(ActorClass.ModificationLevel); _modificationLevels = otherModificationLevels;return otherModificationLevels;}// SetStatsDirty()publicvirtualvoidSetStatsDirty(List<Stat> statList){ResetOtherLevels(false); // Set this to cache next time it is requiredforeach (var stat in statList) {if (!TryGetGameStat(stat,outvar gameStat)) continue;gameStat.SetDirty(); }}// GetStat()publicvirtualGameStatGetStat(Stat stat,bool addIfNull =true) =>GetStat(stat.Uid(), addIfNull);publicvirtualGameStatGetStat(string uid,bool addIfNull =true) =>stats.Get(uid, addIfNull);