TKLR43RQKXB47J2YVVSJ7CAZAJZYOKXSDUXAUOVQMFUN73KZVUVQC UBKE7KXKA35CBKZLD366TUQXK72GYT7RLPEMMLCR4XC3TLMXD7EQC CD5FF75KTOBTMVMTMCKMR6F5DFKOF26I5K43ITNHGBI3ZAZHA4RAC IDXWT3DH3C3X7PP4VVKUZTCGDALW6NH7KREI4E2VFQVMCBJKDMTAC CG73LGDDWA4UBELKXPUJBNDMGVO3JRE2A6QUNURTJVEEZAJJM6FAC HUULCHM5GFGZ7GKLCULFHC333LQ3LBI62VKII3YL5O4C5CDGCT4AC DTKCWM4J7PFNWAAES3RZHQGDA6PTDNX4TZVOXAKF5V7LCZBI3XUAC L4TF5YRRHYUPEAF72DU2GO3PBK5CXXHPYZB5SX3NRCUN6AQELH2QC S5OSCH7CRN2YEKVTCTJXNLYR2B3PEGCCBUGTN2M6QOCKBNJR62NAC E6EFTMXHFWSSFW2JIKT2FM62L2GDNKLZ5B5ZVI4QGIZCZFFAMWWQC RJXFDWT7OWTX3DQ7SBJFK6M66AQ2LGGIO32QD6G7VTJJS7U2R7XQC EF6FXKYIVJCURLSC2CLS27FCTECIIIU2EEPI352ZTCIKYKW5VOBQC K4SCXQID5U75KMYJAUGB5DSKWIFGXTRA2B7PIVWR3XMHPJLWZXXAC JC4YSSPLLFZVYO7TPBHS6RGGEYAW3I3LF36QK7A3WDDDTM6P3LJAC 62S5AKAC5VGAT4KZYRO4R6XIHO4CCD3RAUHQSW47VEGVEBNZGTGAC XRWOXKR3MD3O73SH33CWRUYMTS6KVWGN6U2AIKNVNGHN37MY7UYQC 2TVWIUIFZHSTFHGWEXASRH7GPNVPMWGGQVJZ2TKQ5LZK4GPJPQ2AC R475KN7MR3OG7EBLVNOO7QRIKXDGY2PIDXXV3HW4KBD5QM7B5OJQC FQZF2IY4T2F7KEVSHMFID35WNAU55CRRDF6XEXZB7PYZH26UGYPQC YI7M5RWLKUG256YXK6CGZKUPDCNHREU2PGV344L2IV24FF5PHG3AC ROTMK5LNNK7T5YXVOMUODVMCQWIHPZYOME4WDIAMZJ4VXD7SOEBAC CXWTEVMUJI7NXVWZKXTQOOIVCMPCXUEB3Q3SGIYYHDVRA3JHNBBAC JLT7KOJ5QGXMRLXQXOHDTF62W3EGPX7XTHNEYAKGMJKK3V4QUPGQC HXTSBPAP75A7EC4RKWYQMVPPHPNZFPHUORBZWDHGEB6MPAGI7G7AC V5E2JXXCUIBCDKY3KGP6BPAKKYMGDWSUIODFQHTUFULY7447S5DAC 3JTZIZGE6WPLZCIWXXLG3SQA2LVSVP26P7U52YBMBTY2VCC6LBLAC CXQW7UICWDJFL3M44O2XVH6JNCRDGRBMPMYR2LEGFJCANPG4YASAC VPXUP5WZTVC3OVD73TNKPK43IAGFXGUGCEJT56JM4IT4APYQXUHAC // Copyright (c) Rotorz Limited. All rights reserved.// Licensed under the MIT license. See LICENSE file in the project root.using System;using UnityEngine;namespace TypeReferences {/// <summary>/// Indicates how selectable classes should be collated in drop-down menu./// </summary>public enum ClassGrouping {/// <summary>/// No grouping, just show type names in a list; for instance, "Some.Nested.Namespace.SpecialClass"./// </summary>None,/// <summary>/// Group classes by namespace and show foldout menus for nested namespaces; for/// instance, "Some > Nested > Namespace > SpecialClass"./// </summary>ByNamespace,/// <summary>/// Group classes by namespace; for instance, "Some.Nested.Namespace > SpecialClass"./// </summary>ByNamespaceFlat,/// <summary>/// Group classes in the same way as Unity does for its component menu. This/// grouping method must only be used for <see cref="MonoBehaviour"/> types./// </summary>ByAddComponentMenu,}/// <summary>/// Base class for class selection constraints that can be applied when selecting/// a <see cref="ClassTypeReference"/> with the Unity inspector./// </summary>public abstract class ClassTypeConstraintAttribute : PropertyAttribute {private ClassGrouping _grouping = ClassGrouping.ByNamespaceFlat;private bool _allowAbstract = false;/// <summary>/// Gets or sets grouping of selectable classes. Defaults to <see cref="ClassGrouping.ByNamespaceFlat"/>/// unless explicitly specified./// </summary>public ClassGrouping Grouping {get { return _grouping; }set { _grouping = value; }}/// <summary>/// Gets or sets whether abstract classes can be selected from drop-down./// Defaults to a value of <c>false</c> unless explicitly specified./// </summary>public bool AllowAbstract {get { return _allowAbstract; }set { _allowAbstract = value; }}/// <summary>/// Determines whether the specified <see cref="Type"/> satisfies filter constraint./// </summary>/// <param name="type">Type to test.</param>/// <returns>/// A <see cref="bool"/> value indicating if the type specified by <paramref name="type"/>/// satisfies this constraint and should thus be selectable./// </returns>public virtual bool IsConstraintSatisfied(Type type) {return AllowAbstract || (!type.IsAbstract && !type.ContainsGenericParameters);}}/// <summary>/// Constraint that allows selection of classes that extend a specific class when/// selecting a <see cref="ClassTypeReference"/> with the Unity inspector./// </summary>[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]public sealed class ClassExtendsAttribute : ClassTypeConstraintAttribute {/// <summary>/// Initializes a new instance of the <see cref="ClassExtendsAttribute"/> class./// </summary>public ClassExtendsAttribute() {}/// <summary>/// Initializes a new instance of the <see cref="ClassExtendsAttribute"/> class./// </summary>/// <param name="baseType">Type of class that selectable classes must derive from.</param>public ClassExtendsAttribute(Type baseType) {BaseType = baseType;}/// <summary>/// Gets the type of class that selectable classes must derive from./// </summary>public Type BaseType { get; private set; }/// <inheritdoc/>public override bool IsConstraintSatisfied(Type type) {return base.IsConstraintSatisfied(type)&& BaseType.IsAssignableFrom(type) && type != BaseType;}}/// <summary>/// Constraint that allows selection of classes that implement a specific interface/// when selecting a <see cref="ClassTypeReference"/> with the Unity inspector./// </summary>[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]public sealed class ClassImplementsAttribute : ClassTypeConstraintAttribute {/// <summary>/// Initializes a new instance of the <see cref="ClassImplementsAttribute"/> class./// </summary>public ClassImplementsAttribute() {}/// <summary>/// Initializes a new instance of the <see cref="ClassImplementsAttribute"/> class./// </summary>/// <param name="interfaceType">Type of interface that selectable classes must implement.</param>public ClassImplementsAttribute(Type interfaceType) {InterfaceType = interfaceType;}/// <summary>/// Gets the type of interface that selectable classes must implement./// </summary>public Type InterfaceType { get; private set; }/// <inheritdoc/>public override bool IsConstraintSatisfied(Type type) {if (base.IsConstraintSatisfied(type)) {foreach (var interfaceType in type.GetInterfaces())if (interfaceType == InterfaceType)return true;}return false;}}}
fileFormatVersion: 2guid: 264b275c28ca9ab47b1e70d0cb885f43MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
// Copyright (c) Rotorz Limited. All rights reserved.// Licensed under the MIT license. See LICENSE file in the project root.using System;using UnityEngine;namespace TypeReferences {/// <summary>/// Reference to a class <see cref="System.Type"/> with support for Unity serialization./// </summary>[Serializable]public sealed class ClassTypeReference : ISerializationCallbackReceiver {public static string GetClassRef(Type type) {return type != null? type.FullName + ", " + type.Assembly.GetName().Name: "";}/// <summary>/// Initializes a new instance of the <see cref="ClassTypeReference"/> class./// </summary>public ClassTypeReference() {}/// <summary>/// Initializes a new instance of the <see cref="ClassTypeReference"/> class./// </summary>/// <param name="assemblyQualifiedClassName">Assembly qualified class name.</param>public ClassTypeReference(string assemblyQualifiedClassName) {Type = !string.IsNullOrEmpty(assemblyQualifiedClassName)? Type.GetType(assemblyQualifiedClassName): null;}/// <summary>/// Initializes a new instance of the <see cref="ClassTypeReference"/> class./// </summary>/// <param name="type">Class type.</param>/// <exception cref="System.ArgumentException">/// If <paramref name="type"/> is not a class type./// </exception>public ClassTypeReference(Type type) {Type = type;}[SerializeField]private string _classRef;#region ISerializationCallbackReceiver Membersvoid ISerializationCallbackReceiver.OnAfterDeserialize() {if (!string.IsNullOrEmpty(_classRef)) {_type = System.Type.GetType(_classRef);if (_type == null)Debug.LogWarning(string.Format("'{0}' was referenced but class type was not found.", _classRef));}else {_type = null;}}void ISerializationCallbackReceiver.OnBeforeSerialize() {}#endregionprivate Type _type;/// <summary>/// Gets or sets type of class reference./// </summary>/// <exception cref="System.ArgumentException">/// If <paramref name="value"/> is not a class type./// </exception>public Type Type {get { return _type; }set {if (value != null && !value.IsClass)throw new ArgumentException(string.Format("'{0}' is not a class type.", value.FullName), "value");_type = value;_classRef = GetClassRef(value);}}public static implicit operator string(ClassTypeReference typeReference) {return typeReference._classRef;}public static implicit operator Type(ClassTypeReference typeReference) {return typeReference.Type;}public static implicit operator ClassTypeReference(Type type) {return new ClassTypeReference(type);}public override string ToString() {return Type != null ? Type.FullName : "(None)";}}}
fileFormatVersion: 2guid: bbeadb5396d227843b94f9b779273d08MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
// Copyright (c) Rotorz Limited. All rights reserved.// Licensed under the MIT license. See LICENSE file in the project root.using System;using System.Collections.Generic;using System.Reflection;using UnityEditor;using UnityEngine;namespace TypeReferences {/// <summary>/// Custom property drawer for <see cref="ClassTypeReference"/> properties./// </summary>[CustomPropertyDrawer(typeof(ClassTypeReference))][CustomPropertyDrawer(typeof(ClassTypeConstraintAttribute), true)]public sealed class ClassTypeReferencePropertyDrawer : PropertyDrawer {#region Type Filtering/// <summary>/// Gets or sets a function that returns a collection of types that are/// to be excluded from drop-down. A value of <c>null</c> specifies that/// no types are to be excluded./// </summary>/// <remarks>/// <para>This property must be set immediately before presenting a class/// type reference property field using <see cref="EditorGUI.PropertyField"/>/// or <see cref="EditorGUILayout.PropertyField"/> since the value of this/// property is reset to <c>null</c> each time the control is drawn.</para>/// <para>Since filtering makes extensive use of <see cref="ICollection{Type}.Contains"/>/// it is recommended to use a collection that is optimized for fast/// lookups such as <see cref="HashSet{Type}"/> for better performance.</para>/// </remarks>/// <example>/// <para>Exclude a specific type from being selected:</para>/// <code language="csharp"><![CDATA[/// private SerializedProperty _someClassTypeReferenceProperty;////// public override void OnInspectorGUI() {/// serializedObject.Update();////// ClassTypeReferencePropertyDrawer.ExcludedTypeCollectionGetter = GetExcludedTypeCollection;/// EditorGUILayout.PropertyField(_someClassTypeReferenceProperty);////// serializedObject.ApplyModifiedProperties();/// }////// private ICollection<Type> GetExcludedTypeCollection() {/// var set = new HashSet<Type>();/// set.Add(typeof(SpecialClassToHideInDropdown));/// return set;/// }/// ]]></code>/// </example>public static Func<ICollection<Type>> ExcludedTypeCollectionGetter { get; set; }private static List<Type> GetFilteredTypes(ClassTypeConstraintAttribute filter) {var types = new List<Type>();var excludedTypes = (ExcludedTypeCollectionGetter != null ? ExcludedTypeCollectionGetter() : null);var assembly = Assembly.GetExecutingAssembly();FilterTypes(assembly, filter, excludedTypes, types);foreach (var referencedAssembly in assembly.GetReferencedAssemblies())FilterTypes(Assembly.Load(referencedAssembly), filter, excludedTypes, types);types.Sort((a, b) => a.FullName.CompareTo(b.FullName));return types;}private static void FilterTypes(Assembly assembly, ClassTypeConstraintAttribute filter, ICollection<Type> excludedTypes, List<Type> output) {foreach (var type in assembly.GetTypes()) {if (!type.IsVisible || !type.IsClass)continue;if (filter != null && !filter.IsConstraintSatisfied(type))continue;if (excludedTypes != null && excludedTypes.Contains(type))continue;output.Add(type);}}#endregion#region Type Utilityprivate static Dictionary<string, Type> s_TypeMap = new();private static Type ResolveType(string classRef) {if (!s_TypeMap.TryGetValue(classRef, out Type type)) {type = !string.IsNullOrEmpty(classRef) ? Type.GetType(classRef) : null;s_TypeMap[classRef] = type;}return type;}#endregion#region Control Drawing / Event Handlingprivate static readonly int s_ControlHint = typeof(ClassTypeReferencePropertyDrawer).GetHashCode();private static GUIContent s_TempContent = new();private static string DrawTypeSelectionControl(Rect position, GUIContent label, string classRef, ClassTypeConstraintAttribute filter) {if (label != null && label != GUIContent.none)position = EditorGUI.PrefixLabel(position, label);int controlID = GUIUtility.GetControlID(s_ControlHint, FocusType.Keyboard, position);bool triggerDropDown = false;switch (Event.current.GetTypeForControl(controlID)) {case EventType.ExecuteCommand:if (Event.current.commandName == "TypeReferenceUpdated") {if (s_SelectionControlID == controlID) {if (classRef != s_SelectedClassRef) {classRef = s_SelectedClassRef;GUI.changed = true;}s_SelectionControlID = 0;s_SelectedClassRef = null;}}break;case EventType.MouseDown:if (GUI.enabled && position.Contains(Event.current.mousePosition)) {GUIUtility.keyboardControl = controlID;triggerDropDown = true;Event.current.Use();}break;case EventType.KeyDown:if (GUI.enabled && GUIUtility.keyboardControl == controlID) {if (Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.Space) {triggerDropDown = true;Event.current.Use();}}break;case EventType.Repaint:// Remove assembly name from content of popup control.var classRefParts = classRef.Split(',');s_TempContent.text = classRefParts[0].Trim();if (s_TempContent.text == "")s_TempContent.text = "(None)";else if (ResolveType(classRef) == null)s_TempContent.text += " {Missing}";EditorStyles.popup.Draw(position, s_TempContent, controlID);break;}if (triggerDropDown) {s_SelectionControlID = controlID;s_SelectedClassRef = classRef;var filteredTypes = GetFilteredTypes(filter);DisplayDropDown(position, filteredTypes, ResolveType(classRef), filter.Grouping);}return classRef;}private static void DrawTypeSelectionControl(Rect position, SerializedProperty property, GUIContent label, ClassTypeConstraintAttribute filter) {try {bool restoreShowMixedValue = EditorGUI.showMixedValue;EditorGUI.showMixedValue = property.hasMultipleDifferentValues;property.stringValue = DrawTypeSelectionControl(position, label, property.stringValue, filter);EditorGUI.showMixedValue = restoreShowMixedValue;}finally {ExcludedTypeCollectionGetter = null;}}private static void DisplayDropDown(Rect position, List<Type> types, Type selectedType, ClassGrouping grouping) {var menu = new GenericMenu();menu.AddItem(new GUIContent("(None)"), selectedType == null, s_OnSelectedTypeName, null);menu.AddSeparator("");for (int i = 0; i < types.Count; ++i) {var type = types[i];string menuLabel = FormatGroupedTypeName(type, grouping);if (string.IsNullOrEmpty(menuLabel))continue;var content = new GUIContent(menuLabel);menu.AddItem(content, type == selectedType, s_OnSelectedTypeName, type);}menu.DropDown(position);}private static string FormatGroupedTypeName(Type type, ClassGrouping grouping) {string name = type.FullName;switch (grouping) {default:case ClassGrouping.None:return name;case ClassGrouping.ByNamespace:return name.Replace('.', '/');case ClassGrouping.ByNamespaceFlat:int lastPeriodIndex = name.LastIndexOf('.');if (lastPeriodIndex != -1)name = name[..lastPeriodIndex] + "/" + name[(lastPeriodIndex + 1)..];return name;case ClassGrouping.ByAddComponentMenu:var addComponentMenuAttributes = type.GetCustomAttributes(typeof(AddComponentMenu), false);if (addComponentMenuAttributes.Length == 1)return ((AddComponentMenu)addComponentMenuAttributes[0]).componentMenu;return "Scripts/" + type.FullName.Replace('.', '/');}}private static int s_SelectionControlID;private static string s_SelectedClassRef;private static readonly GenericMenu.MenuFunction2 s_OnSelectedTypeName = OnSelectedTypeName;private static void OnSelectedTypeName(object userData) {var selectedType = userData as Type;s_SelectedClassRef = ClassTypeReference.GetClassRef(selectedType);var typeReferenceUpdatedEvent = EditorGUIUtility.CommandEvent("TypeReferenceUpdated");EditorWindow.focusedWindow.SendEvent(typeReferenceUpdatedEvent);}#endregionpublic override float GetPropertyHeight(SerializedProperty property, GUIContent label) {return EditorStyles.popup.CalcHeight(GUIContent.none, 0);}public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {DrawTypeSelectionControl(position, property.FindPropertyRelative("_classRef"), label, attribute as ClassTypeConstraintAttribute);}}}
fileFormatVersion: 2guid: 6a936c5e8011ef24db75cefabc58683aMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
public void Populate() {foreach (var pair in Effects) {pair.Populate();}}public void Clear() {}
if (EffectType == null || EffectType.Type == null) {Effect = null;}else if (Effect == null || EffectType.Type != Effect.GetType()) {Effect = (IEffect)Activator.CreateInstance(EffectType.Type);}}
public sealed class RemovePainEffect : RemoveResourceEffect<Pain, PainUnit> { }public sealed class RemoveFatigueEffect : RemoveResourceEffect<Fatigue, FatigueUnit> { }public sealed class RemoveBlueTagEffect : RemoveResourceEffect<BlueTag, BlueTagUnit> { }public sealed class RemoveRedTagEffect : RemoveResourceEffect<RedTag, RedTagUnit> { }public sealed class RemoveGreenTagEffect : RemoveResourceEffect<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class RemovePainEffect : RemoveResourceEffect<Pain, PainUnit> { }[Serializable] public sealed class RemoveFatigueEffect : RemoveResourceEffect<Fatigue, FatigueUnit> { }[Serializable] public sealed class RemoveBlueTagEffect : RemoveResourceEffect<BlueTag, BlueTagUnit> { }[Serializable] public sealed class RemoveRedTagEffect : RemoveResourceEffect<RedTag, RedTagUnit> { }[Serializable] public sealed class RemoveGreenTagEffect : RemoveResourceEffect<GreenTag, GreenTagUnit> { }
public class CountPainEffect : CountResourceEffect<Pain, PainUnit> { }public class CountFatigueEffect : CountResourceEffect<Fatigue, FatigueUnit> { }public class CountBlueTagEffect : CountResourceEffect<BlueTag, BlueTagUnit> { }public class CountRedTagEffect : CountResourceEffect<RedTag, RedTagUnit> { }public class CountGreenTagEffect : CountResourceEffect<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class CountPainEffect : CountResourceEffect<Pain, PainUnit> { }[Serializable] public sealed class CountFatigueEffect : CountResourceEffect<Fatigue, FatigueUnit> { }[Serializable] public sealed class CountBlueTagEffect : CountResourceEffect<BlueTag, BlueTagUnit> { }[Serializable] public sealed class CountRedTagEffect : CountResourceEffect<RedTag, RedTagUnit> { }[Serializable] public sealed class CountGreenTagEffect : CountResourceEffect<GreenTag, GreenTagUnit> { }
public sealed class ApplyPainEffect : ApplyResourceEffect<Pain, PainUnit> { }public sealed class ApplyFatigueEffect : ApplyResourceEffect<Fatigue, FatigueUnit> { }public sealed class ApplyBlueTagEffect : ApplyResourceEffect<BlueTag, BlueTagUnit> { }public sealed class ApplyRedTagEffect : ApplyResourceEffect<RedTag, RedTagUnit> { }public sealed class ApplyGreenTagEffect : ApplyResourceEffect<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class ApplyPainEffect : ApplyResourceEffect<Pain, PainUnit> { }[Serializable] public sealed class ApplyFatigueEffect : ApplyResourceEffect<Fatigue, FatigueUnit> { }[Serializable] public sealed class ApplyBlueTagEffect : ApplyResourceEffect<BlueTag, BlueTagUnit> { }[Serializable] public sealed class ApplyRedTagEffect : ApplyResourceEffect<RedTag, RedTagUnit> { }[Serializable] public sealed class ApplyGreenTagEffect : ApplyResourceEffect<GreenTag, GreenTagUnit> { }
public sealed class AddPainEffect : AddResourceEffect<Pain, PainUnit> { }public sealed class AddFatigueEffect : AddResourceEffect<Fatigue, FatigueUnit> { }public sealed class AddBlueTagEffect : AddResourceEffect<BlueTag, BlueTagUnit> { }public sealed class AddRedTagEffect : AddResourceEffect<RedTag, RedTagUnit> { }public sealed class AddGreenTagEffect : AddResourceEffect<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class AddPainEffect : AddResourceEffect<Pain, PainUnit> { }[Serializable] public sealed class AddFatigueEffect : AddResourceEffect<Fatigue, FatigueUnit> { }[Serializable] public sealed class AddBlueTagEffect : AddResourceEffect<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AddRedTagEffect : AddResourceEffect<RedTag, RedTagUnit> { }[Serializable] public sealed class AddGreenTagEffect : AddResourceEffect<GreenTag, GreenTagUnit> { }
public sealed class AccumulatePainByPainTagEffect : AccumulatePainByResource<Pain, PainUnit> { }public sealed class AccumulatePainByFatigueTagEffect : AccumulatePainByResource<Fatigue, FatigueUnit> { }public sealed class AccumulatePainByBlueTagEffect : AccumulatePainByResource<BlueTag, BlueTagUnit> { }public sealed class AccumulatePainByRedTagEffect : AccumulatePainByResource<RedTag, RedTagUnit> { }public sealed class AccumulatePainByGreenTagEffect : AccumulatePainByResource<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class AccumulatePainByPainTagEffect : AccumulatePainByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulatePainByFatigueTagEffect : AccumulatePainByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulatePainByBlueTagEffect : AccumulatePainByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulatePainByRedTagEffect : AccumulatePainByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulatePainByGreenTagEffect : AccumulatePainByResource<GreenTag, GreenTagUnit> { }
public sealed class AccumulateFatigueByPainTagEffect : AccumulateFatigueByResource<Pain, PainUnit> { }public sealed class AccumulateFatigueByFatigueTagEffect : AccumulateFatigueByResource<Fatigue, FatigueUnit> { }public sealed class AccumulateFatigueByBlueTagEffect : AccumulateFatigueByResource<BlueTag, BlueTagUnit> { }public sealed class AccumulateFatigueByRedTagEffect : AccumulateFatigueByResource<RedTag, RedTagUnit> { }public sealed class AccumulateFatigueByGreenTagEffect : AccumulateFatigueByResource<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class AccumulateFatigueByPainTagEffect : AccumulateFatigueByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulateFatigueByFatigueTagEffect : AccumulateFatigueByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulateFatigueByBlueTagEffect : AccumulateFatigueByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulateFatigueByRedTagEffect : AccumulateFatigueByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulateFatigueByGreenTagEffect : AccumulateFatigueByResource<GreenTag, GreenTagUnit> { }
public sealed class AccumulateBlueTagByPainTagEffect : AccumulateBlueTagByResource<Pain, PainUnit> { }public sealed class AccumulateBlueTagByFatigueTagEffect : AccumulateBlueTagByResource<Fatigue, FatigueUnit> { }public sealed class AccumulateBlueTagByBlueTagEffect : AccumulateBlueTagByResource<BlueTag, BlueTagUnit> { }public sealed class AccumulateBlueTagByRedTagEffect : AccumulateBlueTagByResource<RedTag, RedTagUnit> { }public sealed class AccumulateBlueTagByGreenTagEffect : AccumulateBlueTagByResource<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class AccumulateBlueTagByPainTagEffect : AccumulateBlueTagByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulateBlueTagByFatigueTagEffect : AccumulateBlueTagByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulateBlueTagByBlueTagEffect : AccumulateBlueTagByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulateBlueTagByRedTagEffect : AccumulateBlueTagByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulateBlueTagByGreenTagEffect : AccumulateBlueTagByResource<GreenTag, GreenTagUnit> { }
public sealed class AccumulateRedTagByPainTagEffect : AccumulateRedTagByResource<Pain, PainUnit> { }public sealed class AccumulateRedTagByFatigueEffect : AccumulateRedTagByResource<Fatigue, FatigueUnit> { }public sealed class AccumulateRedTagByBlueTagEffect : AccumulateRedTagByResource<BlueTag, BlueTagUnit> { }public sealed class AccumulateRedTagByRedTagEffect : AccumulateRedTagByResource<RedTag, RedTagUnit> { }public sealed class AccumulateRedTagByGreenTagEffect : AccumulateRedTagByResource<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class AccumulateRedTagByPainTagEffect : AccumulateRedTagByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulateRedTagByFatigueEffect : AccumulateRedTagByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulateRedTagByBlueTagEffect : AccumulateRedTagByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulateRedTagByRedTagEffect : AccumulateRedTagByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulateRedTagByGreenTagEffect : AccumulateRedTagByResource<GreenTag, GreenTagUnit> { }
public sealed class AccumulateGreenTagByPainTagEffect : AccumulateGreeTagByResource<Pain, PainUnit> { }public sealed class AccumulateGreenTagByFatigueEffect : AccumulateGreeTagByResource<Fatigue, FatigueUnit> { }public sealed class AccumulateGreenTagByBlueTagEffect : AccumulateGreeTagByResource<BlueTag, BlueTagUnit> { }public sealed class AccumulateGreenTagByRedTagEffect : AccumulateGreeTagByResource<RedTag, RedTagUnit> { }public sealed class AccumulateGreenTagByGreenTagEffect : AccumulateGreeTagByResource<GreenTag, GreenTagUnit> { }
[Serializable] public sealed class AccumulateGreenTagByPainTagEffect : AccumulateGreeTagByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulateGreenTagByFatigueEffect : AccumulateGreeTagByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulateGreenTagByBlueTagEffect : AccumulateGreeTagByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulateGreenTagByRedTagEffect : AccumulateGreeTagByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulateGreenTagByGreenTagEffect : AccumulateGreeTagByResource<GreenTag, GreenTagUnit> { }
- _mode:_classRef: TagFighter.Effects.DelayedEffect, Assembly-CSharpMode:rid: 7043444486337986593EffectType:_classRef: TagFighter.Effects.CountResource.CountBlueTagEffect, Assembly-CSharp
- Mode:rid: 7043444504695668742
rid: 7043444400329588761- _mode:_classRef: TagFighter.Effects.DelayedEffect, Assembly-CSharpMode:rid: 7043444486337986590EffectType:_classRef: TagFighter.Effects.AccumulatePainByResource.AccumulatePainByBlueTagEffect,Assembly-CSharp
rid: 7043444504695668745- Mode:rid: 7043444504695668747
rid: 7043444400329588764- _mode:_classRef: TagFighter.Effects.DelayedEffect, Assembly-CSharpMode:rid: 7043444486337986591EffectType:_classRef: TagFighter.Effects.AddResource.AddBlueTagEffect, Assembly-CSharp
rid: 7043444504695668746- Mode:rid: 7043444504695668748
rid: 7043444486337986570- _mode:_classRef: TagFighter.Effects.ReleaseEffect, Assembly-CSharpMode:rid: 7043444486337986594EffectType:_classRef: TagFighter.Effects.AeoEffect, Assembly-CSharp
rid: 7043444504695668749- Mode:rid: 7043444504695668743
- rid: 7043444400329588761
- rid: 7043444504695668742type: {class: DelayedEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}- rid: 7043444504695668743type: {class: ReleaseEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}- rid: 7043444504695668744type: {class: AoeEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}data:_areaOfEffect:length: 15width: 15shape: 1- rid: 7043444504695668745
- rid: 7043444486337986570type: {class: AddBlueTagEffect, ns: TagFighter.Effects.AddResource, asm: Assembly-CSharp}data:Multiplicative: 1Flat:_value: 0MultiplicativeBeforeFlat: 0- rid: 7043444486337986578type: {class: AeoEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}data:_areaOfEffect:length: 15width: 15shape: 1- rid: 7043444486337986590
- rid: 7043444504695668747
Effects:- _mode:_classRef: TagFighter.Effects.ImmediateEffect, Assembly-CSharpMode:rid: 7043444486337986571EffectType:_classRef: TagFighter.Effects.CountResource.CountBlueTagEffect, Assembly-CSharpEffect:rid: 7043444486337986572
Effects: []
RefIds:- rid: 7043444486337986571type: {class: ImmediateEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}data:_areaOfEffect:length: 15width: 15shape: 1- rid: 7043444486337986572type: {class: CountBlueTagEffect, ns: TagFighter.Effects.CountResource, asm: Assembly-CSharp}data:FriendOrFoeOff: 0
RefIds: []