WKHLLZ3K732M7VJ5KWDSLRWZUARDNDP6ODAXD6SW43CHCT5DX5SAC
AU3DVH4U7MBRJJB7MSIMKAJWK3FU24JHPFYCWXJRRZV5D4GQJJ3AC
RZAMG2H2NY73KZJIV4VXLJHJVSRGJDRWWZJERAI6O7AVDW64JEQQC
VZRSH4U473FCZOP5EXURPXXN5J6F3ZLT435YY7A2JHLG2ZZB5KLQC
KAROCU3SAOGWWSFXGCLE5OW76VTDJR4HDIVTK62BIAESN5SOHVDAC
EF6FXKYIVJCURLSC2CLS27FCTECIIIU2EEPI352ZTCIKYKW5VOBQC
GRTHEQW3VTYOB4CSVAB4VBEAW6MRVAJRV4CBXOIRSUFMO7SK3GCAC
62YQ7EMUYX7GS3AB6FAJDKNX53LVG6T2EH6NMVS6JV36J5VCOKIAC
S256EPZUSOF4TV2KGOFZDJXUFDD57GZFYTCARFJ3SD24RPC56PHAC
DGC7DHJWSP6BZMDKZ6FG6YS7P2RXZWKFROBYHEX4KZCG7HFBLSUQC
HXTSBPAP75A7EC4RKWYQMVPPHPNZFPHUORBZWDHGEB6MPAGI7G7AC
A6K2SVTQ3JQ3TC3F44H3ERSX47TRQ6R5EJGIRJKFGKZG6I4HOATQC
N6YTMLNYZLR4BEDGYC7RJQ43KJ3XZFILZ6ODN26Z7RF3LZ6LVUOQC
5YUI4V7A6ONEYREG5CXWHMBYCOP6Q3GMMQD2OTHXZAGKCGM4FWBAC
MNQAZILY2KCL4TQRVIHDZT3IBVF2636GC5BCZPR2YA76C4JI353QC
S5OSCH7CRN2YEKVTCTJXNLYR2B3PEGCCBUGTN2M6QOCKBNJR62NAC
C7P2WYNCCLPXHFMLHMWCB3DDQWOUDPBSXNJQ2UCGUED4JBUJHCNQC
O236B5LO6PHJ4TPZGYXDVSLB5EGXXRRLYYVWI46DPL5LEGXEIHZQC
BJF3R3X6UV7VZ4FUKHMPMYFN3RDEKLNXHLHA2H7QLQVRADSPZD4QC
KM44OG3YNGF45JHSB4HOGBIDHNWS4N6LEODIRYNN6YAPPMEU5I6QC
2ZZM2HIS7HNIMK3Q6ALHIMQYLKNIHUOL6FJ57O6SR77VAMEINLWAC
XF52N4U7HWXOF4PDSCR7LCUENLTSXLWEZGS2IJ6562KYI567Z2GAC
VPXUP5WZTVC3OVD73TNKPK43IAGFXGUGCEJT56JM4IT4APYQXUHAC
R5JJA7VQ5HCQ6TZEFMORFMPYBXTMIOBAH6YMDCG4QZKBJZCQLR4AC
XIPU27GAVXMAKDP42DDSYNA6DSN5WBHH6AG4EK6YIIM43AQQHQAAC
DGUHVA7XX4HWCIXCARJCI7T6VTXEJUOPUYZOLDOOOWIZYFEJQYFQC
FNS4LRFQNFM4BCB23CYHOWA2N4MG2DEUMNK6D55BQ26TX6OJLIBQC
6TAXWREAGU2AW2MHM447UBAE6FNJFTBEGHZCAMVYRI4RKAODDLIQC
3JTZIZGE6WPLZCIWXXLG3SQA2LVSVP26P7U52YBMBTY2VCC6LBLAC
CD5FF75KTOBTMVMTMCKMR6F5DFKOF26I5K43ITNHGBI3ZAZHA4RAC
MDJQTAONL4M7SFFORMXLJHA7WBDTDTRZAZ544JR23SODSCWSVZ3AC
NZIEX6J6Q6DSJKNSCTHNIA6EJDQEGMK3ZSP3LKX2UAEDHURQPRVQC
4PLSNSVW4VOQW5ZXXZGUWB56WI33SXTGWOCD7PNE36OWDGD7NRJAC
QZXURLSF73UL67TIXDHMVS7DCFZLQJAPJ6BAGRGXOHH46VMNKGPQC
LTG4LQJEMFY22QOI6E5HM3U4OE3JCYRFJ6VGW3KI3AFTMHZCTWRAC
TKLR43RQKXB47J2YVVSJ7CAZAJZYOKXSDUXAUOVQMFUN73KZVUVQC
6UYO5OFJ5JDP3ANPDJ3NG66EQHMTBAAP6K4LPRG3DH34R2S4VZUAC
HUULCHM5GFGZ7GKLCULFHC333LQ3LBI62VKII3YL5O4C5CDGCT4AC
CTJSRH7PD2E6PB56AG4VRE2N7DYIQ5HJQAMD5WDBHKEVHFCGRKYQC
CPSTCZQDYQXOBGGW57QYLVGQLCMLXAIIBEZP3IQF3VFNHQC3CUPQC
DIEGZM3YMQCKTQW3NLESFZBOGMWW6FT6TZOUL7IUAJD2X5IISUYAC
S6LIARO3HIMP67ZDRIPPU3NC4GM6JQQODDIFGZH5HBN75JHFFSQAC
FIMVA3BI72IWMBRN5T3PKDCKSJW667BH25INKDWSPWGHLRKCNAPAC
M2C63XUU3TKYAUPPSPEFVF4CMBQMCVLZATANFWQW35MMYNRB2SEAC
MML56TWYWB6SUY5JEWHG2PNLAH3JY72PGCEXIGOYE54EAC2WSWBAC
RJXFDWT7OWTX3DQ7SBJFK6M66AQ2LGGIO32QD6G7VTJJS7U2R7XQC
4JF2MUNF23IFAVVECZNP3JJLFPEB36V7FDRQOKIZNF6Q2FAGOFRQC
CXQW7UICWDJFL3M44O2XVH6JNCRDGRBMPMYR2LEGFJCANPG4YASAC
E6EFTMXHFWSSFW2JIKT2FM62L2GDNKLZ5B5ZVI4QGIZCZFFAMWWQC
RL6GHBTA4QJ7NKPMQGHCR34HFGIYIDKEFNQZUS54E5VKDW3YSWXQC
CG73LGDDWA4UBELKXPUJBNDMGVO3JRE2A6QUNURTJVEEZAJJM6FAC
IFN4UDLTN7TD26CPONDCRHW4G3DJEXEYV62ZHZC4QD7DKJ76JAEQC
GBGS6RTZTCKRMLLDVCBGMRTJNNOSAUTXN5D2EMEQMQAREORE54PAC
OXMN3LHBNH7CWHEZRPSZTN244O3ACTOEKZEAKQNKFXQ7VQSM26YQC
R475KN7MR3OG7EBLVNOO7QRIKXDGY2PIDXXV3HW4KBD5QM7B5OJQC
DTKCWM4J7PFNWAAES3RZHQGDA6PTDNX4TZVOXAKF5V7LCZBI3XUAC
5I5QA3YK5G5QQCXMSDOEAX3A74LVXV7PYWAIHMLFANR2GUFWMKGQC
IA2O33JCJVSJ3IVBBHX2XQU4BCPL3X6JDDZ2R2KNGUFPWXAUKO7QC
VF7O5JL3OV4LGYOBYWTIA5KDC2EBJALKBOUEE2H3GISDPU4HRR2AC
577EKAKIUP5R4STCPLRNJT6IJR6G232FAJ2T7DSCK2LOJZ5EG55QC
NJYBJUV7GME6OP5BFVXZE2MRPZUZEJWJIMJ6FU2UWAM4WSNZQLQQC
JC4YSSPLLFZVYO7TPBHS6RGGEYAW3I3LF36QK7A3WDDDTM6P3LJAC
6ET6RCSSOEHFM5GPIG7LDITMTLL2VHNENY2IEHKXQNQJI7VG6EEAC
_availableWeaponsByName = availableWeapons.Distinct().ToDictionary(weaponRef => weaponRef.Value.name, weaponRef => weaponRef.Value);
_availableWeaponsByName = availableWeapons.Distinct().ToDictionary(weaponRef => weaponRef.Value._name, weaponRef => weaponRef.Value);
if (nextWeave.Move.speed > 0) {
var desiredSpeed = animationLength / nextWeave.Move.speed;
if (nextWeave.Move._speed > 0) {
var desiredSpeed = animationLength / nextWeave.Move._speed;
public GameObject TimeCounterNodeTemplate;
public RectTransform TimeCounterTransform;
public GameObject MartialSequenceNodeTemplate;
public RectTransform MartialSequenceTransform;
public GameObject RuneBindingSequenceNodeTemplate;
public RectTransform RuneBindingSequenceTransform;
[SerializeField] GameObject _timeCounterNodeTemplate;
[SerializeField] RectTransform _timeCounterTransform;
[SerializeField] GameObject _martialSequenceNodeTemplate;
[SerializeField] RectTransform _martialSequenceTransform;
[SerializeField] GameObject _runeBindingSequenceNodeTemplate;
[SerializeField] RectTransform _runeBindingSequenceTransform;
(_runeBindingSequenceTime <= _martialSequenceTime - _martialSequence[positionInSequence].CombatMoveRef.combatMove.speed + 0.01f);
(_runeBindingSequenceTime <= _martialSequenceTime - _martialSequence[positionInSequence].CombatMoveRef.combatMove._speed + 0.01f);
_weaponDropDown.AddOptions(availableWeapons.GetAvailableWeapons().Select(weapon => new TMP_Dropdown.OptionData(weapon.name)).ToList());
_weaponDropDown.AddOptions(availableWeapons.GetAvailableWeapons().Select(weapon => new TMP_Dropdown.OptionData(weapon._name)).ToList());
var weapon = availableWeapons.GetAvailableWeapons().Where(weapon => weapon.name == selectedWeaponName).First();
var weapon = availableWeapons.GetAvailableWeapons().Where(weapon => weapon._name == selectedWeaponName).First();
_selectedWeapon.GetCompatibleFormRefs().Select(combatFormRef => combatFormRef.combatForm)
.Intersect(availableCombatForms.Select(combatFormRef => combatFormRef.combatForm))
.Select(combatForm => new TMP_Dropdown.OptionData(combatForm.name))
_selectedWeapon.GetCompatibleFormRefs().Select(combatFormRef => combatFormRef.Value)
.Intersect(availableCombatForms.Select(combatFormRef => combatFormRef.Value))
.Select(combatForm => new TMP_Dropdown.OptionData(combatForm._name))
var combatFormRef = availableCombatForms.Where(combatFormRef => combatFormRef.Value.name == selectedCombatFormName).First();
var combatFormRef = availableCombatForms.Where(combatFormRef => combatFormRef.Value._name == selectedCombatFormName).First();
[SerializeField] Button weaponButton;
[SerializeField] TextMeshProUGUI weaponName;
[SerializeField] Color selectedColor = Color.green;
[SerializeField] Color notSelectedColor = Color.grey;
[SerializeField] EventAggregator eventAggregator;
[FormerlySerializedAs("weaponButton")]
[SerializeField] Button _weaponButton;
[FormerlySerializedAs("weaponName")]
[SerializeField] TextMeshProUGUI _weaponName;
[FormerlySerializedAs("selectedColor")]
[SerializeField] Color _selectedColor = Color.green;
[FormerlySerializedAs("notSelectedColor")]
[SerializeField] Color _notSelectedColor = Color.grey;
[SerializeField] EventAggregator _eventAggregator;
[SerializeField] Button combatFormButton;
[SerializeField] TextMeshProUGUI combatFormName;
[SerializeField] Color selectedColor = Color.green;
[SerializeField] Color notSelectedColor = Color.grey;
[SerializeField] EventAggregator eventAggregator;
[FormerlySerializedAs("combatFormButton")]
[SerializeField] Button _combatFormButton;
[FormerlySerializedAs("combatFormName")]
[SerializeField] TextMeshProUGUI _combatFormName;
[FormerlySerializedAs("selectedColor")]
[SerializeField] Color _selectedColor = Color.green;
[FormerlySerializedAs("notSelectedColor")]
[SerializeField] Color _notSelectedColor = Color.grey;
[SerializeField] EventAggregator _eventAggregator;
[SerializeField] Vector3 forceToApply;
[SerializeField] Transform affected;
[SerializeField] LayerMask unitMovementLayerMask;
[SerializeField] ForceMode forceMode;
[SerializeField] EventAggregator eventAggregator;
[SerializeField] Vector3 _forceToApply;
[SerializeField] Transform _affected;
[SerializeField] LayerMask _unitMovementLayerMask;
[SerializeField] ForceMode _forceMode;
[SerializeField] EventAggregator _eventAggregator;
r = affected.GetComponent<Renderer>();
rb = affected.GetComponent<Rigidbody>();
nma = affected.GetComponent<NavMeshAgent>();
resetPosition = affected.transform.position;
effectSystem = new EffectSystem(GameObject.Find("RippleOutVfx").GetComponent<ParticleSystem>());
_r = _affected.GetComponent<Renderer>();
_rb = _affected.GetComponent<Rigidbody>();
_nma = _affected.GetComponent<NavMeshAgent>();
_resetPosition = _affected.transform.position;
_effectSystem = new EffectSystem(GameObject.Find("RippleOutVfx").GetComponent<ParticleSystem>());
effectSystem.ApplyTagsEffect(new TagCounter() { }, affected, affected.transform.rotation, new CircleArea() { Radius = 15 });
_effectSystem.ApplyTagsEffect(new TagCounter() { }, _affected, _affected.transform.rotation, new CircleArea() { Radius = 15 });
print($"Velocity ({rb.velocity}), Magnitude {rb.velocity.magnitude}");
print($"world bounds {r.bounds} local bounds {r.localBounds}");
print($"Velocity ({_rb.velocity}), Magnitude {_rb.velocity.magnitude}");
print($"world bounds {_r.bounds} local bounds {_r.localBounds}");
if (rb != null && !rb.isKinematic && nma.isOnNavMesh && rb.velocity.sqrMagnitude < 0.25f) {
if (Physics.Raycast(affected.transform.position, Vector3.down, r.bounds.extents.y + 0.1f, unitMovementLayerMask)) {
rb.isKinematic = true;
nma.updatePosition = true;
nma.updateRotation = true;
nma.Warp(affected.transform.position);
if (_rb != null && !_rb.isKinematic && _nma.isOnNavMesh && _rb.velocity.sqrMagnitude < 0.25f) {
if (Physics.Raycast(_affected.transform.position, Vector3.down, _r.bounds.extents.y + 0.1f, _unitMovementLayerMask)) {
_rb.isKinematic = true;
_nma.updatePosition = true;
_nma.updateRotation = true;
_nma.Warp(_affected.transform.position);
nma.updatePosition = false;
nma.updateRotation = false;
rb.isKinematic = false;
rb.AddForce(forceToApply, forceMode);
pushed = false;
_nma.updatePosition = false;
_nma.updateRotation = false;
_rb.isKinematic = false;
_rb.AddForce(_forceToApply, _forceMode);
_pushed = false;
nma.updatePosition = true;
nma.updateRotation = true;
nma.enabled = true;
pushed = false;
affected.transform.position = resetPosition;
_nma.updatePosition = true;
_nma.updateRotation = true;
_nma.enabled = true;
_pushed = false;
_affected.transform.position = _resetPosition;
[SerializeField] CameraController cameraController;
[SerializeField] LayerMask unitSelectionLayerMask;
[SerializeField] LayerMask unitMovementLayerMask;
[SerializeField] EventAggregator eventAggregator;
[SerializeField] CameraController _cameraController;
[SerializeField] LayerMask _unitSelectionLayerMask;
[SerializeField] LayerMask _unitMovementLayerMask;
[SerializeField] EventAggregator _eventAggregator;
if (unitSelectionLayerMask.IsLayerInMask(objectHit.gameObject.layer)) {
eventAggregator.OnUnitSelected(this, new(objectHit));
if (_unitSelectionLayerMask.IsLayerInMask(objectHit.gameObject.layer)) {
_eventAggregator.OnUnitSelected(this, new(objectHit));
if (unitSelectionLayerMask.IsLayerInMask(objectHit.gameObject.layer)) {
eventAggregator.OnTargetSelected(this, new(objectHit));
if (_unitSelectionLayerMask.IsLayerInMask(objectHit.gameObject.layer)) {
_eventAggregator.OnTargetSelected(this, new(objectHit));
eventAggregator.PlannedActionsClearSelected -= OnPlannedActionsClearSelected;
eventAggregator.RemovePlannedActionSelected -= OnRemovePlannedActionSelected;
eventAggregator.CombatFormSelected -= OnCombatFormSelected;
eventAggregator.UnitMove -= OnUnitMove;
eventAggregator.WeaponSelected -= OnWeaponSelected;
_eventAggregator.PlannedActionsClearSelected -= OnPlannedActionsClearSelected;
_eventAggregator.RemovePlannedActionSelected -= OnRemovePlannedActionSelected;
_eventAggregator.CombatFormSelected -= OnCombatFormSelected;
_eventAggregator.UnitMove -= OnUnitMove;
_eventAggregator.WeaponSelected -= OnWeaponSelected;
eventAggregator.PlannedActionsClearSelected += OnPlannedActionsClearSelected;
eventAggregator.RemovePlannedActionSelected += OnRemovePlannedActionSelected;
eventAggregator.CombatFormSelected += OnCombatFormSelected;
eventAggregator.UnitMove += OnUnitMove;
eventAggregator.WeaponSelected += OnWeaponSelected;
_eventAggregator.PlannedActionsClearSelected += OnPlannedActionsClearSelected;
_eventAggregator.RemovePlannedActionSelected += OnRemovePlannedActionSelected;
_eventAggregator.CombatFormSelected += OnCombatFormSelected;
_eventAggregator.UnitMove += OnUnitMove;
_eventAggregator.WeaponSelected += OnWeaponSelected;
eventAggregator.TimeDilationSpeedUp += OnTimeDilationSpeedUp;
eventAggregator.TimeDilationSpeedDown += OnTimeDilationSpeedDown;
eventAggregator.TimeDilationSpeedReset += OnTimeDilationSpeedReset;
eventAggregator.TimeDilationSpeedPause += OnTimeDilationSpeedPause;
_eventAggregator.TimeDilationSpeedUp += OnTimeDilationSpeedUp;
_eventAggregator.TimeDilationSpeedDown += OnTimeDilationSpeedDown;
_eventAggregator.TimeDilationSpeedReset += OnTimeDilationSpeedReset;
_eventAggregator.TimeDilationSpeedPause += OnTimeDilationSpeedPause;
eventAggregator.TimeDilationSpeedUp -= OnTimeDilationSpeedUp;
eventAggregator.TimeDilationSpeedDown -= OnTimeDilationSpeedDown;
eventAggregator.TimeDilationSpeedReset -= OnTimeDilationSpeedReset;
eventAggregator.TimeDilationSpeedPause -= OnTimeDilationSpeedPause;
_eventAggregator.TimeDilationSpeedUp -= OnTimeDilationSpeedUp;
_eventAggregator.TimeDilationSpeedDown -= OnTimeDilationSpeedDown;
_eventAggregator.TimeDilationSpeedReset -= OnTimeDilationSpeedReset;
_eventAggregator.TimeDilationSpeedPause -= OnTimeDilationSpeedPause;
transform.position += ((transform.forward * moveVector.z) + (transform.right * moveVector.x)) * Time.unscaledDeltaTime * MoveSpeed;
transform.position += ((transform.forward * moveVector.z) + (transform.right * moveVector.x)) * Time.unscaledDeltaTime * _moveSpeed;
runeWeavings.Add(new RuneWeavingContainer(weaveName, runeWeaving));
eventAggregator.OnRuneWeavingBankChanged(this, new EventAggregator.RuneWeavingBankChangedEventArgs(this));
_runeWeavings.Add(new RuneWeavingContainer(weaveName, runeWeaving));
_eventAggregator.OnRuneWeavingBankChanged(this, new EventAggregator.RuneWeavingBankChangedEventArgs(this));
while ((currentMoveIdx < combatMoveRefs.Count) && (currentTime - lastMoveTime >= combatMoveRefs[currentMoveIdx].combatMove.speed)) {
Debug.Log($"Finished executing Martial move {combatMoveRefs[currentMoveIdx].combatMove.moveName} {currentMoveIdx + 1}/{combatMoveRefs.Count} at {currentTime}");
while ((currentMoveIdx < combatMoveRefs.Count) && (currentTime - lastMoveTime >= combatMoveRefs[currentMoveIdx].combatMove._speed)) {
Debug.Log($"Finished executing Martial move {combatMoveRefs[currentMoveIdx].combatMove._moveName} {currentMoveIdx + 1}/{combatMoveRefs.Count} at {currentTime}");
[SerializeField] CombatMoveSetRef weaponMoveSet;
[SerializeField] List<CombatFormRef> compatibleCombatForms;
[SerializeField] CombatMoveSetRef _weaponMoveSet;
[SerializeField] List<CombatFormRef> _compatibleCombatForms;
public CombatForm combatForm;
public static implicit operator CombatForm(CombatFormRef combatFormRef) => combatFormRef.combatForm;
[SerializeField] CombatForm _combatForm;
public static implicit operator CombatForm(CombatFormRef combatFormRef) => combatFormRef._combatForm;
forceToApply: {x: 0, y: 0, z: 0}
affected: {fileID: 1095075964}
unitMovementLayerMask:
_forceToApply: {x: 0, y: 0, z: 0}
_affected: {fileID: 1095075964}
_unitMovementLayerMask:
TimeCounterNodeTemplate: {fileID: 4501771766011598799}
TimeCounterTransform: {fileID: 1153246272052667351}
MartialSequenceNodeTemplate: {fileID: 2976110998535256851}
MartialSequenceTransform: {fileID: 5156459343686032367}
RuneBindingSequenceNodeTemplate: {fileID: 6499572665728223632}
RuneBindingSequenceTransform: {fileID: 34132861383642506}
_timeCounterNodeTemplate: {fileID: 4501771766011598799}
_timeCounterTransform: {fileID: 1153246272052667351}
_martialSequenceNodeTemplate: {fileID: 2976110998535256851}
_martialSequenceTransform: {fileID: 5156459343686032367}
_runeBindingSequenceNodeTemplate: {fileID: 6499572665728223632}
_runeBindingSequenceTransform: {fileID: 34132861383642506}
weaponButton: {fileID: 6579429840975883843}
weaponName: {fileID: 6579429841893294509}
selectedColor: {r: 0, g: 1, b: 0, a: 1}
notSelectedColor: {r: 0, g: 0, b: 0, a: 1}
eventAggregator: {fileID: 11400000, guid: 7674cb78dbff8d447b6c39984750a2da, type: 2}
_weaponButton: {fileID: 6579429840975883843}
_weaponName: {fileID: 6579429841893294509}
_selectedColor: {r: 0, g: 1, b: 0, a: 1}
_notSelectedColor: {r: 0, g: 0, b: 0, a: 1}
_eventAggregator: {fileID: 11400000, guid: 7674cb78dbff8d447b6c39984750a2da, type: 2}
combatFormButton: {fileID: 6579429840975883843}
combatFormName: {fileID: 6579429841893294509}
selectedColor: {r: 0, g: 1, b: 0, a: 1}
notSelectedColor: {r: 0, g: 0, b: 0, a: 1}
eventAggregator: {fileID: 11400000, guid: 7674cb78dbff8d447b6c39984750a2da, type: 2}
_combatFormButton: {fileID: 6579429840975883843}
_combatFormName: {fileID: 6579429841893294509}
_selectedColor: {r: 0, g: 1, b: 0, a: 1}
_notSelectedColor: {r: 0, g: 0, b: 0, a: 1}
_eventAggregator: {fileID: 11400000, guid: 7674cb78dbff8d447b6c39984750a2da, type: 2}