// 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: 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: 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); } }