Beispiel #1
0
 // Token: 0x0600239D RID: 9117 RVA: 0x00412BE0 File Offset: 0x00410DE0
 public override void FireRange(ArmyGroup targetGroup, FlyingObjectManager mgr, FOKind kind, float ms, ushort skillID, byte param = 0)
 {
     if (this.Target.GroupKind != EGroupKind.CastleGate && param > 0 && param <= 4)
     {
         int currentSoldierCount = this.Target.CurrentSoldierCount;
         for (int i = 0; i < 5; i++)
         {
             Vector3 begin = this.towerFirePoint[(int)(param - 1)] + this.towerFireOffset[i];
             int     num   = (i < currentSoldierCount) ? i : (currentSoldierCount - 1);
             mgr.addFlyingObject(kind, begin, this.Target.soldiers[num].transform, ms, new Vector3(0f, 1f, 0f), null, ChaseType.Straight, null);
         }
     }
 }
Beispiel #2
0
    // Token: 0x060022B3 RID: 8883 RVA: 0x0040A27C File Offset: 0x0040847C
    public virtual void FireRange(ArmyGroup targetGroup, FlyingObjectManager mgr, FOKind kind, float ms, ushort skillID, byte param = 0)
    {
        ushort num = this.heroSoldierFO;

        if (skillID <= 7 && this.soldiers != null && !this.bNpcMode)
        {
            for (int i = 0; i < this.CurrentSoldierCount; i++)
            {
                Soldier soldier = this.soldiers[i];
                if (targetGroup.GroupKind != EGroupKind.CastleGate)
                {
                    Transform end = (soldier.Target == null) ? targetGroup.groupRoot : soldier.Target.transform;
                    mgr.addFlyingObject(kind, soldier.RangeFirePoint, end, ms, new Vector3(0f, 1f, 0f), null, ChaseType.CurveA, null);
                }
                else
                {
                    float   y      = UnityEngine.Random.Range(5f, 10f);
                    Vector3 vector = new Vector3(-3f, y, soldier.transform.position.z - 15f) + this.GetRandVector3(2f);
                    mgr.addFlyingObject(kind, soldier.RangeFirePoint, this.Target.groupRoot, ms, vector, null, ChaseType.CurveA, null);
                    if (soldier.hitParticleCount < 2)
                    {
                        soldier.hitParticlePos[(int)soldier.hitParticleCount] = this.Target.groupRoot.position + vector;
                        Soldier soldier2 = soldier;
                        soldier2.hitParticleCount += 1;
                    }
                }
            }
        }
        if (this.heroSoldier != null)
        {
            Soldier   soldier3   = this.heroSoldier;
            Transform modelTrans = ((Lord)this.heroSoldier).modelTrans;
            bool      flag       = !this.bAttackMode && this.hasLord;
            if (targetGroup.GroupKind != EGroupKind.CastleGate)
            {
                if (skillID <= 7 && this.heroSoldierFO != 0 && this.GroupKind != EGroupKind.Catapults && !flag)
                {
                    Transform end2 = (soldier3.Target == null) ? targetGroup.groupRoot : soldier3.Target.transform;
                    mgr.addFlyingObject((FOKind)(this.heroSoldierFO - 1), soldier3.RangeFirePoint, end2, ms, new Vector3(0f, 1f, 0f), modelTrans, ChaseType.CurveA, null);
                }
                else if (skillID > 7 && this.heroSoldierSkillFO != 0)
                {
                    Transform  end3        = (soldier3.Target == null) ? targetGroup.groupRoot : soldier3.Target.transform;
                    Skill      recordByKey = DataManager.Instance.SkillTable.GetRecordByKey(skillID);
                    GameObject gameObject  = this.particleManager.Spawn(this.heroSoldierSkillFO, null, Vector3.zero, 1f, true, false);
                    if (gameObject != null)
                    {
                        ChaseType curveType = (recordByKey.FlyType != 1) ? ChaseType.Straight : ChaseType.CurveA;
                        mgr.addFlyingObject(FOKind.FreeParticle, soldier3.RangeFirePoint, end3, ms, new Vector3(0f, 1f, 0f), modelTrans, curveType, gameObject);
                    }
                }
            }
            else if (skillID <= 7 && this.heroSoldierFO != 0)
            {
                float   y2      = UnityEngine.Random.Range(5f, 10f);
                Vector3 vector2 = new Vector3(-3f, y2, soldier3.transform.position.z - 15f);
                mgr.addFlyingObject((FOKind)(this.heroSoldierFO - 1), soldier3.RangeFirePoint, this.Target.groupRoot, ms, vector2, modelTrans, ChaseType.CurveA, null);
                if (soldier3.hitParticleCount < 2)
                {
                    soldier3.hitParticlePos[(int)soldier3.hitParticleCount] = this.Target.groupRoot.position + vector2;
                    Soldier soldier4 = soldier3;
                    soldier4.hitParticleCount += 1;
                }
            }
            else if (skillID > 7 && this.heroSoldierSkillFO != 0)
            {
                float      y3           = UnityEngine.Random.Range(5f, 10f);
                Vector3    b            = new Vector3(-3f, y3, soldier3.transform.position.z - 15f);
                Skill      recordByKey2 = DataManager.Instance.SkillTable.GetRecordByKey(skillID);
                GameObject gameObject2  = this.particleManager.Spawn(this.heroSoldierSkillFO, null, Vector3.zero, 1f, true, false);
                if (gameObject2 != null)
                {
                    ChaseType curveType2 = (recordByKey2.FlyType != 1) ? ChaseType.Straight : ChaseType.CurveA;
                    mgr.addFlyingObject(FOKind.FreeParticle, soldier3.RangeFirePoint, this.Target.groupRoot, ms, new Vector3(0f, 1f, 0f), modelTrans, curveType2, gameObject2);
                }
                if (soldier3.hitParticleCount < 2)
                {
                    soldier3.hitParticlePos[(int)soldier3.hitParticleCount] = this.Target.groupRoot.position + b;
                    Soldier soldier5 = soldier3;
                    soldier5.hitParticleCount += 1;
                }
            }
        }
    }