GBGS6RTZTCKRMLLDVCBGMRTJNNOSAUTXN5D2EMEQMQAREORE54PAC ZFSIN26KNM3DNHBUA67DKKHQYH62TZ627SNBHPO37IS3AB2XTHEQC VUAVVMQEUYSXHBIUJHGRX237EZFT5MCB73ZKVWMGJDRHYZH4XZKAC P5O6MKCMZL3DK7ZO5SBWTCHOQB6O2MZA5VPSCQX6X4LJQVOWYV7AC HMDPEJRZK3PO6M5Z655Y4HWCUKC5I35GRMVVQOZYXWWCIH5ZWNPQC 4JF64OZ2FPMTXL5XV3Z6HCEKKGCLXPLMNV3YCNX35RL5CXL42VNQC R475KN7MR3OG7EBLVNOO7QRIKXDGY2PIDXXV3HW4KBD5QM7B5OJQC 2RUZ7TTRT7SMZT2V7YWUCCTJJXNRT2LNJ2QBBVN4RMREMOGMGMHQC UBKE7KXKA35CBKZLD366TUQXK72GYT7RLPEMMLCR4XC3TLMXD7EQC DTKCWM4J7PFNWAAES3RZHQGDA6PTDNX4TZVOXAKF5V7LCZBI3XUAC B2LNJNFTE27FCZUPR4YTVTFERSRYIUEF4L27NDAKNRPMAJY7KKNAC RJXFDWT7OWTX3DQ7SBJFK6M66AQ2LGGIO32QD6G7VTJJS7U2R7XQC HDXZWK64UDKEV5JBETQK6KMT5RXW5XPDU3YY4HLBCGP5XA6727BQC 426KOWJWOX7ZE24UIJCIHRI5KUZYO6NIGK7KC2HOONFDX242UYIQC TKLR43RQKXB47J2YVVSJ7CAZAJZYOKXSDUXAUOVQMFUN73KZVUVQC ROTMK5LNNK7T5YXVOMUODVMCQWIHPZYOME4WDIAMZJ4VXD7SOEBAC FQZF2IY4T2F7KEVSHMFID35WNAU55CRRDF6XEXZB7PYZH26UGYPQC L4TF5YRRHYUPEAF72DU2GO3PBK5CXXHPYZB5SX3NRCUN6AQELH2QC JLT7KOJ5QGXMRLXQXOHDTF62W3EGPX7XTHNEYAKGMJKK3V4QUPGQC CD5FF75KTOBTMVMTMCKMR6F5DFKOF26I5K43ITNHGBI3ZAZHA4RAC HXTSBPAP75A7EC4RKWYQMVPPHPNZFPHUORBZWDHGEB6MPAGI7G7AC fileFormatVersion: 2guid: a50932add4e43a644b34e62fe4620e3fMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System.Collections.Generic;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects{{where TResource : Resource<TUnit>where TResource : Resource<TUnit>}}where TUnit : IUnitType;public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, IEnumerable<Unit<TUnit>> values)where TUnit : IUnitType;}public interface IResourceSet : IResourceAccessor{public IEnumerable<Unit<TUnit>> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)public interface IResourceAccessor {}public interface IResourceGet : IResourceAccessor
public IEnumerable<float> Get(EffectContext context, IEnumerable<Transform> affected, IResourceGet accessor);public void Set(EffectContext context, IEnumerable<Transform> affected, IResourceSet accessor, IEnumerable<int> value);
public IEnumerable<double> Get(EffectContext context, IEnumerable<Transform> affected, IResourceLocationGet accessor);public void Set(EffectContext context, IEnumerable<Transform> affected, IResourceLocationSet accessor, IEnumerable<int> value);
public IEnumerable<float> Get(EffectContext context, IEnumerable<Transform> affected, IResourceGet accessor) {return accessor.Get<TResource, TUnit>(context, affected).Select(resource => (float)resource);
public IEnumerable<double> Get(EffectContext context, IEnumerable<Transform> affected, IResourceLocationGet accessor) {return accessor.Get<TResource, TUnit>(context, affected).Select(resource => (double)resource);
namespace Get{[Serializable]public class Pawn : IResourceGet{[SerializeReference, ShowSerializeReference]IPawnResourceProperty Property;public IEnumerable<Unit<TUnit>> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnitType {return affected.Select(transform => transform.GetComponent<TResource>()).Select(resource => resource ? Property.Get<TResource, TUnit>(resource) : (Unit<TUnit>)0);}
namespace Get{using PawnProperties;
public override string ToString() => $"{nameof(Pawn)}.{Property}";
[Serializable]public class Pawn : IResourceLocationGet{[SerializeReference, ShowSerializeReference]IPawnResourceProperty Property;public IEnumerable<Unit<TUnit>> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnitType {return affected.Select(transform => transform.GetComponent<TResource>()).Select(resource => resource ? Property.Get<TResource, TUnit>(resource) : (Unit<TUnit>)0);
[Serializable]public class Pawn : IResourceSet{[SerializeReference, ShowSerializeReference]IPawnResourceProperty Property;public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, IEnumerable<Unit<TUnit>> values)where TResource : Resource<TUnit>where TUnit : IUnitType {var repeatedValues = Enumerable.Repeat(values.ToList(), int.MaxValue).SelectMany(value => value );foreach (var tuple in affected.Zip(repeatedValues, (transform, value) => (resource: transform.GetComponent<TResource>(), value)).Where(tuple => tuple.resource)) {Property.Set(tuple.resource, tuple.value);}
[SerializeReference, ShowSerializeReference]IPawnResourceProperty Property;public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, IEnumerable<Unit<TUnit>> values)where TResource : Resource<TUnit>where TUnit : IUnitType {var repeatedValues = Enumerable.Repeat(values.ToList(), int.MaxValue).SelectMany(value => value);foreach (var tuple in affected.Zip(repeatedValues, (transform, value) => (resource: transform.GetComponent<TResource>(), value)).Where(tuple => tuple.resource)) {Property.Set(tuple.resource, tuple.value);
fileFormatVersion: 2guid: a50932add4e43a644b34e62fe4620e3fMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System.Collections.Generic;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects{public interface IResourceLocationAccessor {}public interface IResourceLocationGet : IResourceLocationAccessor{public IEnumerable<Unit<TUnit>> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnitType;}public interface IResourceLocationSet : IResourceLocationAccessor{public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, IEnumerable<Unit<TUnit>> values)where TResource : Resource<TUnit>where TUnit : IUnitType;}}
[Serializable]public class Context : IResourceGet{[SerializeReference, ShowSerializeReference]IContextRegister Register;public IEnumerable<Unit<TUnit>> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnitType {return Register.Get<TResource, TUnit>(context);}public override string ToString() => $"{nameof(Context)}.{Register}";
[SerializeReference, ShowSerializeReference]IContextRegister Register;public IEnumerable<Unit<TUnit>> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnitType {return Register.Get<TResource, TUnit>(context);
public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, IEnumerable<Unit<TUnit>> values)where TResource : Resource<TUnit>where TUnit : IUnitType {Register.Set<TResource, TUnit>(context, SetAs.OperateEnum(values));}
public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, IEnumerable<Unit<TUnit>> values)where TResource : Resource<TUnit>where TUnit : IUnitType {Register.Set<TResource, TUnit>(context, SetAs.OperateEnum(values));}
effect.Apply(context, _areaOfEffect.GetAffectedUnits(context.EffectLocation));context.EffectSystem.ApplyTagsEffect(null, context.EffectLocation, _areaOfEffect);
effect.Apply(context, areaOfEffect.GetAffectedUnits(context.EffectLocation));context.EffectSystem.ApplyTagsEffect(null, context.EffectLocation, areaOfEffect);
context.AreaOfEffect = _areaOfEffect.ShallowCopy();
context.AreaOfEffect = Shape.AreaOfEffect(context, affected);}}namespace AoeShapes{public interface IAoeShape{public IAreaOfEffect AreaOfEffect(EffectContext context, IEnumerable<Transform> affected);}[Serializable]public class Single : IAoeShape{SingleTarget _areaOfEffect;public IAreaOfEffect AreaOfEffect(EffectContext context, IEnumerable<Transform> affected) {return _areaOfEffect.ShallowCopy();}}[Serializable]public class Circle : IAoeShape{public ResourceInfoGet<IResourceTypeAccessor, ResourceLocationAccessors.Get.Context> Radius;CircleArea _areaOfEffect;public IAreaOfEffect AreaOfEffect(EffectContext context, IEnumerable<Transform> affected) {// Currently only getting from context, so it's a size 1 enumarable_areaOfEffect.Radius = (float)Radius.Get(context, affected).First();return _areaOfEffect.ShallowCopy();}}[Serializable]public class Cone : IAoeShape{public ResourceInfoGet<IResourceTypeAccessor, ResourceLocationAccessors.Get.Context> Radius;public ResourceInfoGet<IResourceTypeAccessor, ResourceLocationAccessors.Get.Context> Angle;ConeArea _areaOfEffect;public IAreaOfEffect AreaOfEffect(EffectContext context, IEnumerable<Transform> affected) {// Currently only getting from context, so it's a size 1 enumarable_areaOfEffect.Radius = (float)Radius.Get(context, affected).First();_areaOfEffect.Angle = (float)Angle.Get(context, affected).First();return _areaOfEffect.ShallowCopy();}}[Serializable]public class Path : IAoeShape{public ResourceInfoGet<IResourceTypeAccessor, ResourceLocationAccessors.Get.Context> Radius;public ResourceInfoGet<IResourceTypeAccessor, ResourceLocationAccessors.Get.Context> Length;PathArea _areaOfEffect;public IAreaOfEffect AreaOfEffect(EffectContext context, IEnumerable<Transform> affected) {// Currently only getting from context, so it's a size 1 enumarable_areaOfEffect.Radius = (float)Radius.Get(context, affected).First();_areaOfEffect.Length = (float)Length.Get(context, affected).First();return _areaOfEffect.ShallowCopy();}
public ResourceInfoGet FromA;public ResourceInfoGet FromB;public ResourceInfoSet To;
public ResourceInfoGet<IResourceTypeAccessor,IResourceLocationGet> FromA;public ResourceInfoGet<IResourceTypeAccessor,IResourceLocationGet> FromB;public ResourceInfoSet<IResourceTypeAccessor,IResourceLocationSet> To;
- rid: 7043444504695668744type: {class: AoeEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}data:_areaOfEffect:rid: 7043444504695668755- rid: 7043444504695668755type: {class: CircleArea, ns: , asm: Assembly-CSharp}data:Radius: 15
- rid: 7043444593006739478type: {class: Context, ns: TagFighter.Effects.Context.Set, asm: Assembly-CSharp}
- rid: 7043444593006739501type: {class: Max, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}- rid: 7043444593006739527type: {class: BlueTag, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739528type: {class: Pawn, ns: TagFighter.Effects.ResourceLocationAccessors.Get, asm: Assembly-CSharp}data:Property:rid: 7043444593006739529- rid: 7043444593006739529type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.PawnProperties,asm: Assembly-CSharp}- rid: 7043444593006739530type: {class: GreenTag, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739531type: {class: Pawn, ns: TagFighter.Effects.ResourceLocationAccessors.Get, asm: Assembly-CSharp}data:Property:rid: 7043444593006739532- rid: 7043444593006739532type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.PawnProperties,asm: Assembly-CSharp}- rid: 7043444593006739533type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739534type: {class: Context, ns: TagFighter.Effects.ResourceLocationAccessors.Set,asm: Assembly-CSharp}
rid: 7043444593006739498- rid: 7043444593006739479type: {class: Current, ns: TagFighter.Effects.Context, asm: Assembly-CSharp}- rid: 7043444593006739481type: {class: Context, ns: TagFighter.Effects.Context.Get, asm: Assembly-CSharp}
rid: 7043444593006739536- rid: 7043444593006739535type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.ContextRegisters,asm: Assembly-CSharp}- rid: 7043444593006739536type: {class: Sum, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}- rid: 7043444593006739537type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739540type: {class: Context, ns: TagFighter.Effects.ResourceLocationAccessors.Get,asm: Assembly-CSharp}
rid: 7043444593006739482- rid: 7043444593006739482type: {class: Current, ns: TagFighter.Effects.Context, asm: Assembly-CSharp}- rid: 7043444593006739483type: {class: Pawn, ns: TagFighter.Effects.Pawn.Get, asm: Assembly-CSharp}
rid: 7043444593006739541- rid: 7043444593006739541type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.ContextRegisters,asm: Assembly-CSharp}- rid: 7043444593006739542type: {class: Fatigue, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739543type: {class: Pawn, ns: TagFighter.Effects.ResourceLocationAccessors.Set, asm: Assembly-CSharp}
rid: 7043444593006739484- rid: 7043444593006739484type: {class: Current, ns: TagFighter.Effects.Pawn, asm: Assembly-CSharp}- rid: 7043444593006739494type: {class: Pawn, ns: TagFighter.Effects.Pawn.Get, asm: Assembly-CSharp}
rid: 7043444593006739544- rid: 7043444593006739544type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.PawnProperties,asm: Assembly-CSharp}- rid: 7043444593006739575type: {class: AoeEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}
Property:rid: 7043444593006739495- rid: 7043444593006739495type: {class: Current, ns: TagFighter.Effects.Pawn, asm: Assembly-CSharp}- rid: 7043444593006739496type: {class: Pawn, ns: TagFighter.Effects.Pawn.Set, asm: Assembly-CSharp}
Shape:rid: 7043444593006739579- rid: 7043444593006739579type: {class: Circle, ns: TagFighter.Effects.AoeShapes, asm: Assembly-CSharp}
Property:rid: 7043444593006739497- rid: 7043444593006739497type: {class: Current, ns: TagFighter.Effects.Pawn, asm: Assembly-CSharp}- rid: 7043444593006739498type: {class: Sum, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}- rid: 7043444593006739501type: {class: Max, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}- rid: 7043444593006739504type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739506type: {class: Fatigue, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739515type: {class: BlueTag, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739516type: {class: GreenTag, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739517type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739520
Radius:Resource:rid: 7043444593006739582Location:rid: 7043444593006739583Multiplier: 1Addend: 15- rid: 7043444593006739582
- rid: 7043444593006739521type: {class: Fatigue, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}
- rid: 7043444593006739583type: {class: Context, ns: TagFighter.Effects.ResourceLocationAccessors.Get,asm: Assembly-CSharp}data:Register:rid: 7043444593006739584- rid: 7043444593006739584type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.ContextRegisters,asm: Assembly-CSharp}- rid: 7043444593006739592type: {class: DelayedEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}
- rid: 7043444593006739473type: {class: Context, ns: TagFighter.Effects.Context.Set, asm: Assembly-CSharp}
- rid: 7043444593006739545type: {class: GreenTag, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739546type: {class: Pawn, ns: TagFighter.Effects.ResourceLocationAccessors.Get, asm: Assembly-CSharp}data:Property:rid: 7043444593006739547- rid: 7043444593006739547type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.PawnProperties,asm: Assembly-CSharp}- rid: 7043444593006739548type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739549type: {class: Context, ns: TagFighter.Effects.ResourceLocationAccessors.Set,asm: Assembly-CSharp}
rid: 7043444593006739499- rid: 7043444593006739474type: {class: Current, ns: TagFighter.Effects.Context, asm: Assembly-CSharp}- rid: 7043444593006739476type: {class: Context, ns: TagFighter.Effects.Context.Get, asm: Assembly-CSharp}
rid: 7043444593006739551- rid: 7043444593006739550type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.ContextRegisters,asm: Assembly-CSharp}- rid: 7043444593006739551type: {class: Sum, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}- rid: 7043444593006739552type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739553type: {class: Context, ns: TagFighter.Effects.ResourceLocationAccessors.Get,asm: Assembly-CSharp}
rid: 7043444593006739477- rid: 7043444593006739477type: {class: Current, ns: TagFighter.Effects.Context, asm: Assembly-CSharp}- rid: 7043444593006739485type: {class: Pawn, ns: TagFighter.Effects.Pawn.Get, asm: Assembly-CSharp}
rid: 7043444593006739554- rid: 7043444593006739554type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.ContextRegisters,asm: Assembly-CSharp}- rid: 7043444593006739555type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739556type: {class: Pawn, ns: TagFighter.Effects.ResourceLocationAccessors.Get, asm: Assembly-CSharp}
rid: 7043444593006739486- rid: 7043444593006739486type: {class: Current, ns: TagFighter.Effects.Pawn, asm: Assembly-CSharp}- rid: 7043444593006739487type: {class: Pawn, ns: TagFighter.Effects.Pawn.Get, asm: Assembly-CSharp}
rid: 7043444593006739557- rid: 7043444593006739557type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.PawnProperties,asm: Assembly-CSharp}- rid: 7043444593006739558type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739559type: {class: Pawn, ns: TagFighter.Effects.ResourceLocationAccessors.Set, asm: Assembly-CSharp}
rid: 7043444593006739488- rid: 7043444593006739488type: {class: Current, ns: TagFighter.Effects.Pawn, asm: Assembly-CSharp}- rid: 7043444593006739492type: {class: Pawn, ns: TagFighter.Effects.Pawn.Set, asm: Assembly-CSharp}
rid: 7043444593006739560- rid: 7043444593006739560type: {class: Current, ns: TagFighter.Effects.ResourceLocationAccessors.PawnProperties,asm: Assembly-CSharp}- rid: 7043444593006739561type: {class: Sum, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}- rid: 7043444593006739580type: {class: AoeEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}data:_areaOfEffect:rid: -2Shape:rid: 7043444593006739581- rid: 7043444593006739581type: {class: Circle, ns: TagFighter.Effects.AoeShapes, asm: Assembly-CSharp}
Property:rid: 7043444593006739493- rid: 7043444593006739493type: {class: Current, ns: TagFighter.Effects.Pawn, asm: Assembly-CSharp}- rid: 7043444593006739499type: {class: Sum, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}- rid: 7043444593006739500type: {class: Sum, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}- rid: 7043444593006739508type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739511type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739512type: {class: GreenTag, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739513type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739514type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739518type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444593006739519type: {class: Pain, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}
Radius:Resource:rid: -2Location:rid: -2Multiplier: 1Addend: 15