Exemple #1
0
        protected virtual void OnFire()
        {
            long appliedDamage = Damage;
            //appliedDamage = 0;
            LSProjectile projectile = ProjectileManager.Create(ProjCode, Agent, Target, appliedDamage);

            projectile.TargetPlatform = TargetPlatform;
            ProjectileManager.Fire(projectile);
        }
Exemple #2
0
        public static LSProjectile NDCreateAndFire(string projCode, Vector3d position, Vector3d direction, bool gravity = false)
        {
            curProj = RawCreate(projCode);
            int id = NDProjectileBucket.Add(curProj);

            curProj.Prepare(id, position, (a) => false, (a) => false, (a) => {}, false);
            curProj.InitializeFree(direction, (a) => false, gravity);
            ProjectileManager.Fire(curProj);
            return(curProj);
        }
Exemple #3
0
        protected virtual void OnFire()
        {
            long         appliedDamage = Damage;
            LSProjectile projectile    = ProjectileManager.Create(
                ProjCode,
                this.Agent,
                this.ProjectileOffset,
                this.TargetAllegiance,
                (other) => this.Agent.Healther.IsNotNull(),
                (agent) => agent.Healther.TakeRawDamage(appliedDamage));

            projectile.InitializeHoming(this.Target);
            projectile.TargetPlatform = TargetPlatform;
            ProjectileManager.Fire(projectile);
        }
Exemple #4
0
        public LSProjectile FireProjectile(Vector3d projOffset, LSAgent target)
        {
            LSProjectile currentProjectile = ProjectileManager.Create(
                ProjCode,
                this.Agent,
                projOffset,
                this.TargetAllegiance,
                (other) =>
            {
                Health healther = other.GetAbility <Health>();
                return(healther.IsNotNull() && healther.HealthAmount > 0);
            },
                CachedOnHit);

            switch (currentProjectile.TargetingBehavior)
            {
            case TargetingType.Homing:
                currentProjectile.InitializeHoming(target);
                break;

            case TargetingType.Timed:
                currentProjectile.InitializeTimed(Agent.Body.Forward);
                break;

            case TargetingType.Positional:
                currentProjectile.InitializePositional(target.Body.Position.ToVector3d(target.Body.HeightPos));
                break;

            case TargetingType.Free:
                //TODO
                throw new System.Exception("Not implemented yet.");
                //break;
            }
            if (onPrepareProjectile != null)
            {
                onPrepareProjectile(currentProjectile);
            }
            ProjectileManager.Fire(currentProjectile);
            return(currentProjectile);
        }
Exemple #5
0
        protected virtual void OnFire()
        {
            long appliedDamage = Damage;

            LSProjectile projectile = ProjectileManager.Create(
                ProjCode,
                this.Agent,
                this.ProjectileOffset,
                this.TargetAllegiance,
                (other) =>
            {
                Health healther = other.GetAbility <Health>();
                return(healther.IsNotNull() && healther.HealthAmount > 0);
            },
                CachedOnHit);

            switch (projectile.TargetingBehavior)
            {
            case TargetingType.Homing:
                projectile.InitializeHoming(this.Target);
                break;

            case TargetingType.Timed:
                projectile.InitializeTimed();
                break;

            case TargetingType.Positional:
                projectile.InitializePositional(Target.Body.Position.ToVector3d(Target.Body.HeightPos));
                break;

            case TargetingType.Free:
                //TODO
                throw new System.Exception("Not implemented yet.");
                break;
            }
            ProjectileManager.Fire(projectile);
        }
        private void Fire()
        {
            if (this.ShootType == ShootType.Single)
            {
                this.IsFiring = false;
            }
            this.FireCount = FirePeriod;

            FPSTurn      turn       = Agent.GetAbility <FPSTurn>();
            int          bodyID     = Agent.Body.ID;
            LSProjectile projectile = ProjectileManager.Create(this.ProjCode, Agent, ProjectileStartPosition, AllegianceType.All, (agent) => true, (agent) => agent.Body.TestFlash());

            projectile.InitializeFree(turn.Forward, (body) => body.ID != bodyID);
            ProjectileManager.Fire(projectile);

            if (this.PassedFrames > 0)
            {
                Vector3d delta = projectile.Velocity;
                delta.Mul((int)PassedFrames);
                projectile.RaycastMove(delta);

                PassedFrames = 0;
            }
        }
Exemple #7
0
 public void FireProjectile(LSProjectile projectile)
 {
     ProjectileManager.Fire(projectile);
 }