Пример #1
0
        public static TestProjectileInstance CreateNew(ILevelManager level, IProjectile projectile, TestProjectileType type)
        {
            var instance = new TestProjectileInstance(level, projectile, type);

            instance.flier = BallisticProjectile.CreateNew(instance, level);

            return(instance);
        }
Пример #2
0
 public override bool IsInRange(Vector3 source, IRangeTarget target)
 {
     return(BallisticProjectile.GetTimesAndVectorsForStaticTarget(target.CurrentPosition,
                                                                  source,
                                                                  Speed,
                                                                  out var loweTime,
                                                                  out var lowVector,
                                                                  out var highTime,
                                                                  out var highVector));
 }
Пример #3
0
 protected override void InstantEffect()
 {
     if (NPCinfo.target)
     {
         GameObject          newProjectile = Instantiate(boltPrefab, transform.position, Quaternion.identity, transform);
         BallisticProjectile ballistic     = newProjectile.GetComponent <BallisticProjectile>();
         ballistic.targetPos = transform.position + RAG * (NPCinfo.target.transform.position - transform.position).normalized;
         newProjectile.GetComponent <AOEBase>().OnEnter = PiercingDMGDelegate;
         piercingMult = 1.0f;
     }
     base.InstantEffect();
 }
Пример #4
0
    void Fire()
    {
        // fire repeatedly.
        GameObject player = GameObject.FindWithTag("Player");
        GameObject cannon = GameObject.FindWithTag("Cannon");

        if (player && cannon)
        {
            BallisticProjectile cannonball = cannon.GetComponent <BallisticProjectile> ();
            cannonball.Fire(barrelEnd.position, player.transform.position, 2f);
            NotificationCentre.PostNotification(this, "OnCannonFire");
        }
    }
Пример #5
0
        bool ShootMovingTarget(IRangeTarget target)
        {
            int numSolutions = BallisticProjectile.GetVectorsForMovingTarget(target,
                                                                             Projectile.Position,
                                                                             myType.Speed,
                                                                             out Vector3 lowVector,
                                                                             out Vector3 highVector);

            if (numSolutions >= 1)
            {
                flier.StartFlight(lowVector);
                return(true);
            }

            return(false);
        }
Пример #6
0
        public override bool ShootProjectile(IRangeTarget target)
        {
            if (BallisticProjectile.GetTimesAndVectorsForStaticTarget(target.CurrentPosition,
                                                                      Projectile.Position,
                                                                      myType.Speed,
                                                                      out var lowTime,
                                                                      out var lowVector,
                                                                      out var highTime,
                                                                      out var highVector))
            {
                flier.StartFlight(lowVector);
                return(true);
            }

            return(false);
        }
Пример #7
0
        public override void LoadState(PluginDataWrapper pluginData)
        {
            this.flier = Projectile.GetDefaultComponent <BallisticProjectile>();

            var sequential = pluginData.GetReaderForWrappedSequentialData();

            sequential.MoveNext();
            timeToSplit = sequential.GetCurrent <float>();
            sequential.MoveNext();
            splits = sequential.GetCurrent <int>();
            sequential.MoveNext();
            despawning = sequential.GetCurrent <bool>();
            sequential.MoveNext();
            timeToDespawn = sequential.GetCurrent <float>();
            sequential.MoveNext();
        }
Пример #8
0
    protected override void InstantEffect()
    {
        if (NPCinfo.target)
        {
            for (int i = 0; i < cnt; i++)
            {
                GameObject          newProjectile = Instantiate(moganelPrefab, transform.position, Quaternion.identity, transform);
                BallisticProjectile homingArrow   = newProjectile.GetComponent <BallisticProjectile>();

                Vector3 offset = new Vector3(Random.value - 0.5f, Random.value - 0.5f, Random.value - 0.5f);
                offset.Normalize();
                offset *= Random.Range(0.0f, offsetRadius);

                homingArrow.targetPos = NPCinfo.target.transform.position + offset;
                homingArrow.grounded += delegate
                {
                    GameObject AOE = Instantiate(AOEPrefab, homingArrow.transform.position, Quaternion.identity, homingArrow.transform);
                    AOE.GetComponent <AOEBase>().OnEnter = InstantDMGDelegate;
                };
            }
        }
        base.InstantEffect();
    }
Пример #9
0
 public override void LoadState(PluginDataWrapper pluginData)
 {
     this.flier = Projectile.GetDefaultComponent <BallisticProjectile>();
 }