// Token: 0x060022F6 RID: 8950 RVA: 0x0040C444 File Offset: 0x0040A644 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { Transform transform = sam.transform; Vector3 vector = sam.SpreadPos - transform.position; if (vector != Vector3.zero) { Quaternion quaternion = Quaternion.LookRotation(vector); if (transform.rotation != quaternion) { transform.rotation = Quaternion.Slerp(transform.rotation, quaternion, 5f * deltaTime); } } FSMUnit.MoveSoldier(sam, sam.SpreadPos, parent.MoveSpeed * 1.3f * deltaTime); if (GameConstants.DistanceSquare(transform.position, sam.SpreadPos) <= 0.0001f) { sam.SpreadPos = Vector3.zero; sam.SpreadMode = ESpreadMode.NotSpread; if (sam.Parent.Target.GroupKind == EGroupKind.CastleGate) { sam.FSMController = FSMManager.Instance.getState(EStateName.RANGE_FIGHT_WALL); } else { sam.FSMController = FSMManager.Instance.getState(EStateName.RANGE_FIGHT); } } }
// Token: 0x060022E3 RID: 8931 RVA: 0x0040BB54 File Offset: 0x00409D54 public override void Enter(Soldier sam) { if (sam.Parent.Target.GroupKind == EGroupKind.CastleGate) { bool flag = sam.Parent.GroupKind == EGroupKind.Infantry || sam.Parent.GroupKind == EGroupKind.Cavalry; if (flag) { sam.SpreadMode = ESpreadMode.NotSpread; sam.FSMController = FSMManager.Instance.getState(EStateName.SPREAD); } else { if (sam.Parent.GroupKind == EGroupKind.Archer && sam.SpreadMode == ESpreadMode.Enable) { Vector3 position = sam.transform.position; float x = UnityEngine.Random.Range(position.x - 5f, position.x + 5f); float z = UnityEngine.Random.Range(position.z - 5f, position.z + 5f); sam.SpreadPos = new Vector3(x, 0f, z); } sam.FSMController = FSMManager.Instance.getState(EStateName.RANGE_FIGHT_WALL); } } else { if (sam.Target != null && sam.Target.Parent != sam.Parent.Target) { sam.Target = null; } if (sam.Target == null) { sam.Target = FSMUnit.ReallocTarget(sam, sam.Parent.Target); } bool flag2 = sam.Parent.GroupKind == EGroupKind.Infantry || sam.Parent.GroupKind == EGroupKind.Cavalry; if (flag2) { int num = (int)sam.Index / sam.Parent.RowCount; if (num != 0 && sam.SpreadMode == ESpreadMode.Enable) { sam.SpreadMode = ESpreadMode.NotSpread; sam.FSMController = FSMManager.Instance.getState(EStateName.SPREAD); } else { sam.ActionMode = EActionMode.Personal; sam.PlayAnim(ESheetMeshAnim.moving, SAWrapMode.Loop, true, false, false); } } else { if (sam.Parent.GroupKind == EGroupKind.Archer && !this.pManager.bIsSiegeMode && sam.SpreadMode == ESpreadMode.Enable) { Vector3 position2 = sam.transform.position; float x2 = UnityEngine.Random.Range(position2.x - 5f, position2.x + 5f); float z2 = UnityEngine.Random.Range(position2.z - 5f, position2.z + 5f); sam.SpreadPos = new Vector3(x2, 0f, z2); } sam.FSMController = FSMManager.Instance.getState(EStateName.RANGE_FIGHT); } } }
// Token: 0x060022D2 RID: 8914 RVA: 0x0040B49C File Offset: 0x0040969C public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (sam.ActionMode == EActionMode.Personal) { Transform transform = sam.transform; Vector3 transformPoint = parent.getTransformPoint((int)sam.Index); Vector3 vector = transformPoint - transform.position; if (vector != Vector3.zero) { Quaternion to = Quaternion.LookRotation(vector); transform.rotation = Quaternion.Slerp(transform.rotation, to, 5f * deltaTime); } FSMUnit.MoveSoldier(sam, transformPoint, parent.MoveSpeed * 1.3f * deltaTime); if (GameConstants.DistanceSquare(transform.position, transformPoint) <= 0.0001f) { sam.ActionMode = EActionMode.Team; sam.PlayAnim(ESheetMeshAnim.idle, SAWrapMode.Loop, true, false, false); sam.NotifyingParent(0); } } else if (sam.transform.rotation != parent.groupRoot.rotation) { sam.transform.rotation = Quaternion.Slerp(sam.transform.rotation, parent.groupRoot.rotation, 5f * deltaTime); } }
// Token: 0x060022E7 RID: 8935 RVA: 0x0040BF48 File Offset: 0x0040A148 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (parent.Target != null && parent.Target.GroupKind == EGroupKind.CastleGate) { return; } if (sam.Target == null) { sam.FSMController = FSMManager.Instance.getState(EStateName.LOSETARGET); } if (sam.fightTimer > 0f) { sam.fightTimer -= deltaTime; if (sam.fightTimer <= 0f) { sam.PlayAnim(ESheetMeshAnim.attack, SAWrapMode.Default, true, false, false); sam.fightTimer = ((!sam.IsHeroSoldier) ? 1.5f : 3f); } } Transform transform = sam.Target.transform; Transform transform2 = sam.transform; if (parent.Target.CurHP <= 0) { sam.FSMController = FSMManager.Instance.getState(EStateName.IDLE); } else if (sam.Target.CurFSM == EStateName.DIE) { sam.ResetTarget(false); sam.FSMController = FSMManager.Instance.getState(EStateName.TRYFIGHT); } else if (GameConstants.DistanceSquare(sam.LastTargetPos, transform.position) <= 0.0001f) { FSMUnit.CheckDirectionToTarget(sam, deltaTime); if (sam.CurAnim == ESheetMeshAnim.attack && sam.LastAnimTime() < 0.1f && sam.CurAnimTime() >= 0.1f) { ushort num = 1; if (parent.GroupKind == EGroupKind.Catapults) { num = 2006; } if (parent.GroupKind == EGroupKind.Archer && parent.Tier == 4) { num = 2005; } sam.Target.ParticleFlag = ((num <= sam.Target.ParticleFlag) ? sam.Target.ParticleFlag : num); } } else { float num2 = sam.AttackRadius + sam.Target.Radius; if (GameConstants.DistanceSquare(transform2.position, transform.position) > num2 * num2) { sam.FSMController = FSMManager.Instance.getState(EStateName.TRYFIGHT); } } }
// Token: 0x06002308 RID: 8968 RVA: 0x0040CDB4 File Offset: 0x0040AFB4 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (sam.Flag == 0) { sam.Timer -= deltaTime; if (sam.Timer > 0f) { return; } sam.Flag = 1; sam.PlayAnim(ESheetMeshAnim.moving, SAWrapMode.Loop, false, false, false); } Vector3 vector = Vector3.zero; Transform transform = sam.transform; if (sam.Flag == 1) { vector = FSMUnit.WALL_BACK; } else { if (sam.Flag != 2) { sam.Flag = 0; if (FSMManager.Instance.bIsBattleOver && DataManager.Instance.War_LordCapture != 0) { sam.FSMController = FSMManager.Instance.getState(EStateName.GO_CAPTIVING); } else { sam.FSMController = FSMManager.Instance.getState(EStateName.IDLE_FASTRUN); } return; } vector = FSMUnit.WALL_FRONT; } Vector3 vector2 = vector - transform.position; if (vector2 != Vector3.zero) { Quaternion quaternion = Quaternion.LookRotation(vector2); if (transform.rotation != quaternion) { transform.rotation = Quaternion.Slerp(transform.rotation, quaternion, 5f * deltaTime); } } FSMUnit.MoveSoldier(sam, vector, parent.MoveSpeed * deltaTime * 2.5f); if (GameConstants.DistanceSquare(transform.position, vector) <= 0.0001f) { sam.Flag += 1; } }
// Token: 0x060022F9 RID: 8953 RVA: 0x0040C830 File Offset: 0x0040AA30 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (sam.Index == 255) { Transform transform = sam.transform; Vector3 vector = sam.SpreadPos - transform.position; if (vector != Vector3.zero) { transform.rotation = Quaternion.LookRotation(vector); } FSMUnit.MoveSoldier(sam, sam.SpreadPos, sam.DyingValue * deltaTime); if (sam.DieState == 1 && (sam.SpreadPos == Vector3.zero || GameConstants.DistanceSquare(transform.position, sam.SpreadPos) <= 0.0001f)) { sam.FSMController = FSMManager.Instance.getState(EStateName.DIE); } } else if (sam.Flag != 0) { float fightTimer = sam.fightTimer; float inverseLength = 1f / fightTimer; Vector3 center = (sam.SpreadPos + sam.LastTargetPos) * 0.5f; center.y = sam.DyingValue; sam.transform.position = GameConstants.QuadraticBezierCurves(sam.LastTargetPos, center, sam.SpreadPos, inverseLength, sam.Timer); sam.Timer += deltaTime; if (sam.Timer >= fightTimer) { sam.transform.position = sam.SpreadPos; sam.SpreadPos = Vector3.zero; sam.FSMController = FSMManager.Instance.getState(EStateName.DIE); sam.PlayAnim(ESheetMeshAnim.die, SAWrapMode.Once, true, false, false); sam.Flag = 0; } } else { Transform transform2 = sam.transform; Vector3 vector2 = sam.SpreadPos - transform2.position; if (vector2 != Vector3.zero) { transform2.rotation = Quaternion.LookRotation(vector2); FSMUnit.MoveSoldier(sam, sam.SpreadPos, sam.DyingValue * deltaTime); } if (sam.DieState == 1 && (sam.SpreadPos == Vector3.zero || GameConstants.DistanceSquare(transform2.position, sam.SpreadPos) <= 0.0001f)) { sam.FSMController = FSMManager.Instance.getState(EStateName.DIE); } } }
// Token: 0x0600231A RID: 8986 RVA: 0x0040D5FC File Offset: 0x0040B7FC public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { Transform transform = sam.transform; Vector3 vector = sam.SpreadPos - transform.position; if (vector != Vector3.zero) { Quaternion quaternion = Quaternion.LookRotation(vector); if (quaternion != transform.rotation) { transform.rotation = Quaternion.Slerp(transform.rotation, quaternion, 5f * deltaTime); } } float num = (parent != null) ? parent.MoveSpeed : 4.5f; FSMUnit.MoveSoldier(sam, sam.SpreadPos, num * 2.5f * deltaTime * 1.5f); }
// Token: 0x060022F0 RID: 8944 RVA: 0x0040C2E8 File Offset: 0x0040A4E8 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (!FSMUnit.CheckTargetActiving(sam)) { sam.Target = FSMUnit.ReallocTarget(sam, parent.Target); } FSMUnit.CheckDirectionToTarget(sam, deltaTime); if ((parent.OnceFlag & 1u) != 0u) { if (sam.Target.CurFSM == EStateName.DYING || sam.Target.CurFSM == EStateName.DIE) { sam.Target = null; sam.Target = FSMUnit.ReallocTarget(sam, parent.Target); } sam.PlayAnim(ESheetMeshAnim.attack, SAWrapMode.Default, false, false, false); } }
// Token: 0x0600231D RID: 8989 RVA: 0x0040D734 File Offset: 0x0040B934 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (sam.Flag == 1) { return; } if (sam.Flag == 2) { Transform transform = sam.transform; Vector3 vector = Camera.main.transform.position - transform.position; vector.y = 0f; if (vector != Vector3.zero) { Quaternion quaternion = Quaternion.LookRotation(vector); if (quaternion != transform.rotation) { transform.rotation = Quaternion.Slerp(transform.rotation, quaternion, 5f * deltaTime); } else { sam.Flag = 1; } } } else { Transform transform2 = sam.transform; Vector3 vector2 = sam.SpreadPos - transform2.position; if (vector2 != Vector3.zero) { Quaternion quaternion2 = Quaternion.LookRotation(vector2); if (quaternion2 != transform2.rotation) { transform2.rotation = Quaternion.Slerp(transform2.rotation, quaternion2, 5f * deltaTime); } } float num = (parent != null) ? parent.MoveSpeed : 4.5f; FSMUnit.MoveSoldier(sam, sam.SpreadPos, num * 2.5f * deltaTime * 1.5f); if (GameConstants.DistanceSquare(transform2.position, sam.SpreadPos) <= 0.0001f) { sam.Flag = 2; sam.PlayAnim(ESheetMeshAnim.victory, SAWrapMode.Loop, true, false, false); } } }
// Token: 0x060022E4 RID: 8932 RVA: 0x0040BDD4 File Offset: 0x00409FD4 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (sam.Target == null || sam.Target.FSMController == null || sam.Target.CurFSM == EStateName.DIE || sam.Target.CurFSM == EStateName.DYING) { sam.FSMController = FSMManager.Instance.getState(EStateName.LOSETARGET); } Transform transform = sam.Target.transform; Transform transform2 = sam.transform; FSMUnit.CheckDirectionToTarget(sam, deltaTime); FSMUnit.MoveSoldier(sam, transform.position, parent.MoveSpeed * 1.3f * deltaTime); float num = sam.AttackRadius + sam.Target.Radius; if (GameConstants.DistanceSquare(transform2.position, transform.position) < num * num) { sam.FSMController = FSMManager.Instance.getState(EStateName.MELEE_FIGHT); } }
// Token: 0x060022DB RID: 8923 RVA: 0x0040B780 File Offset: 0x00409980 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (sam.Flag != 0) { sam.Timer -= deltaTime; if (sam.Timer > 0f) { return; } sam.Flag = 0; sam.PlayAnim(ESheetMeshAnim.moving, SAWrapMode.Loop, false, false, false); } Vector3 transformPoint = parent.getTransformPoint((int)sam.Index); Transform transform = sam.transform; if (sam.ActionMode == EActionMode.Team) { transform.position = transformPoint; if (transform.rotation != parent.m_Direction) { transform.rotation = Quaternion.Slerp(transform.rotation, parent.m_Direction, 5f * deltaTime); } } else { Vector3 vector = transformPoint - transform.position; if (vector != Vector3.zero) { Quaternion quaternion = Quaternion.LookRotation(vector); if (transform.rotation != quaternion) { transform.rotation = Quaternion.Slerp(transform.rotation, quaternion, 5f * deltaTime); } } FSMUnit.MoveSoldier(sam, transformPoint, parent.MoveSpeed * deltaTime); if (GameConstants.DistanceSquare(transform.position, transformPoint) <= 0.0001f) { sam.ActionMode = EActionMode.Team; } } }
// Token: 0x06002311 RID: 8977 RVA: 0x0040D2A4 File Offset: 0x0040B4A4 public override void Update(Soldier sam, ArmyGroup parent, float deltaTime) { if (sam.CaptiveFlag == 0) { return; } if (sam.CaptiveFlag == 1) { Transform transform = sam.transform; Vector3 vector = sam.CaptivePos - transform.position; if (vector != Vector3.zero) { Quaternion to = Quaternion.LookRotation(vector); transform.rotation = Quaternion.Slerp(transform.rotation, to, 5f * deltaTime); } FSMUnit.MoveSoldier(sam, sam.CaptivePos, parent.MoveSpeed * 2.5f * deltaTime); if (GameConstants.DistanceSquare(transform.position, sam.CaptivePos) <= 0.0001f) { sam.CaptiveFlag = 2; sam.PlayAnim(ESheetMeshAnim.victory, SAWrapMode.Loop, true, false, false); FSMManager.Instance.CaptivingCount++; sam.CaptivePos = sam.Parent.SoldierTarget.transform.position - transform.position; } } else if (sam.CaptiveFlag == 2) { Transform transform2 = sam.transform; if (sam.CaptivePos != Vector3.zero) { Quaternion quaternion = Quaternion.LookRotation(sam.CaptivePos); if (quaternion != transform2.rotation) { transform2.rotation = Quaternion.Slerp(transform2.rotation, quaternion, 5f * deltaTime); } else { sam.CaptiveFlag = 0; } } } }
// Token: 0x060022AB RID: 8875 RVA: 0x00409820 File Offset: 0x00407A20 public virtual void Update(float deltaTime, float moveDeltaTime) { if (this.SoldierCount == 0) { if (this.heroSoldier != null) { this.heroSoldier.FSMController.Update(this.heroSoldier, this, deltaTime); } return; } this.checkMove(moveDeltaTime); FSMUnit fsmunit = null; if (this.ForceEnterFSM || this.lastState != this.m_State) { EStateName name = ArmyGroup.m_FSMMap[this.m_State]; fsmunit = ArmyGroup.FSMMgr.getState(name); if (this.m_State == ArmyGroup.EGROUPSTATE.MOVE_OUTOF_TOWN || this.m_State == ArmyGroup.EGROUPSTATE.JUMP_FROM_WALL) { this.bAttackMode = true; } else if (((WarManager.IsNpcModeEnable && this.Side != 0) || !this.hasLord) && (this.m_State == ArmyGroup.EGROUPSTATE.ATTACKER_RUN_AWAY || this.m_State == ArmyGroup.EGROUPSTATE.DEFENSER_RUN_AWAY)) { this.LordRunAway(this.m_State == ArmyGroup.EGROUPSTATE.ATTACKER_RUN_AWAY); } this.ForceEnterFSM = false; } int num = this.SoldierCountDefault - this.CurrentSoldierCount; if (num != this.DeadCount) { int num2 = num - this.DeadCount; if (num2 > 5) { } this.DeadCount = num; } for (int i = 0; i < this.SoldierCount; i++) { if (i >= this.CurrentSoldierCount) { EStateName curFSM = this.soldiers[i].CurFSM; if (curFSM != EStateName.DIE && curFSM != EStateName.DYING) { this.soldiers[i].Flag = 2; if (this.AttackBy != null) { this.soldiers[i].Target = ((this.AttackBy.heroSoldier == null) ? this.AttackBy.soldiers[0] : this.AttackBy.heroSoldier); } else { this.soldiers[i].Target = null; } this.soldiers[i].FSMController = ArmyGroup.FSMMgr.getState(EStateName.DYING); } } else if (fsmunit != null) { this.soldiers[i].FSMController = fsmunit; } this.soldiers[i].FSMController.Update(this.soldiers[i], this, deltaTime); this.soldiers[i].Update(deltaTime); } if (this.heroSoldier != null) { if (!this.bAttackMode && this.hasLord) { this.SiegeModeDefenserLordRun(deltaTime); } else { if (this.CurrentSoldierCount != 0 && fsmunit != null && this.m_State != ArmyGroup.EGROUPSTATE.ATTACKER_RUN_AWAY && this.m_State != ArmyGroup.EGROUPSTATE.DEFENSER_RUN_AWAY) { if (this.heroSoldier.IsLord && this.m_State == ArmyGroup.EGROUPSTATE.MOVE_OUTOF_TOWN) { this.heroSoldier.FSMController = FSMManager.Instance.getState(EStateName.JUMP_FROM_WALL); } else { this.heroSoldier.FSMController = fsmunit; } } this.heroSoldier.FSMController.Update(this.heroSoldier, this, deltaTime); this.heroSoldier.Update(deltaTime); } } if (this.bInsideSkill) { if (this.heroSoldier != null) { ((Lord)this.heroSoldier).bExtraScaleWork = false; } this.bInsideSkill = false; } this.OnceFlag = 0u; this.AttackBy = null; this.lastState = this.m_State; }