Exemplo n.º 1
0
    // 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);
            }
        }
    }
Exemplo n.º 2
0
 // 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);
     }
 }
Exemplo n.º 3
0
    // 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);
        }
    }