Example #1
0
        static void Initialize()
        {
            initialized = true;

            InitShape();
            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None);
            DefaultMovementInfo   = new ShipMovementInfo(
                new Bounded <float>(TimeWarp.AngularAcceleration),
                new Bounded <float>(TimeWarp.ScaleTurning(0)),
                new Bounded <float>(8000),
                new Bounded <float>(TimeWarp.ScaleVelocity(25)));
            DefaultState    = new ShipState(new Bounded <float>(1), new Bounded <float>(0), new Bounded <float>(0), new Bounded <float>(0));
            DefaultCost     = new Costs(new ShipStateChange(0, 2, 0, 0), null, null);
            DefaultDelay    = new Bounded <float>(TimeWarp.RateToTime(7));
            DefaultLifeTime = new LifeSpan(TimeWarp.RangeToTime(35, 25));
            DefaultEffectCollection.Effects.Add(
                new VuxSlowDownEffect(
                    DefaultTargetingTypes,
                    EffectTypes.None,
                    new EffectSounds("Bite", null, null),
                    new LifeSpan(),
                    new ShipMovementInfoChange(0, -.125f, -.125f, 0)));
            DefaultActionSounds = new ActionSounds("OrganicGun2", null, null);
            DefaultEffectCollection.AttachmentFlags |= EffectAttachmentFlags.WeaponExpires;
        }
Example #2
0
        static void Initialize()
        {
            initialized = true;

            InitShape();
            DefaultMovementInfo = new ShipMovementInfo(
                new Bounded <float>(TimeWarp.AngularAcceleration),
                new Bounded <float>(TimeWarp.ScaleTurning(3)),
                new Bounded <float>(TimeWarp.ScaleAcceleration(40, 4)),
                new Bounded <float>(TimeWarp.ScaleVelocity(40)));
            DefaultState    = new ShipState(new Bounded <float>(3), new Bounded <float>(0), new Bounded <float>(0), new Bounded <float>(0));
            DefaultCost     = new Costs(new ShipStateChange(1, 0, 0, 0), null, null);
            DefaultDelay    = new Bounded <float>(TimeWarp.RateToTime(12));
            DefaultLifeTime = new LifeSpan(TimeWarp.RangeToTime(600, 80));
            DefaultEffectCollection.Effects.Add(new MedKitEffect(new TargetingInfo(TargetingTypes.None, TargetingTypes.Ally | TargetingTypes.Ship, TargetingTypes.None), EffectTypes.None, new EffectSounds(), 1));

            DefaultEffectCollection.ProlongedEffects.Add(new BordingPartyEffect(
                                                             new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None),
                                                             EffectTypes.Health,
                                                             new EffectSounds("Intruder", "Zap", "Argh"),
                                                             new LifeSpan(),
                                                             new Bounded <float>(TimeWarp.RateToTime(7)), 1));
            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None);
            DefaultActionSounds   = new ActionSounds("Go", null, null);
        }
        static void Initialize()
        {
            initialized = true;

            DefaultMovementInfo = new ShipMovementInfo(
                new Bounded <float>(0),
                new Bounded <float>(0),
                new Bounded <float>(0),
                new Bounded <float>(TimeWarp.ScaleVelocity(120)));
            DefaultDelay    = new Bounded <float>(TimeWarp.RateToTime(20));
            DefaultLifeTime = new LifeSpan(TimeWarp.RangeToTime(45, 120));
            DefaultState    = new ShipState(new Bounded <float>(99), new Bounded <float>(0), new Bounded <float>(0), new Bounded <float>(0));
            DefaultCost     = new Costs(new ShipStateChange(0, 20, 0, 0), null, null);


            DefaultEffectCollection.ProlongedEffects.Add(
                new ControlerEffect(
                    TargetingInfo.All,
                    EffectTypes.Controls,
                    new EffectSounds(),
                    new LifeSpan(12),
                    new ConfusionControler(new LifeSpan(12))
                    ));
            DefaultTargetingTypes = TargetingInfo.None;
            DefaultActionSounds   = new ActionSounds("EnergyGun2", null, null);
        }
Example #4
0
 public BuildUpGunAction(
     Bounded <float> delay,
     TargetingInfo targetableTypes,
     Costs costs,
     bool needsTarget,
     ActionSounds actionSounds,
     Bounded <float> buildUpDelay,
     float velocityAngle,
     float offsetAngle,
     ISolidWeapon[] weapons)
     : base(delay, targetableTypes, costs, needsTarget, actionSounds)
 {
     this.buildUpDelay      = buildUpDelay;
     this.velocityAngle     = velocityAngle;
     this.offsetAngle       = offsetAngle;
     this.weapons           = weapons;
     this.maxBoundingRadius = 0;
     this.stage             = 0;
     this.stageCount        = weapons.Length;
     foreach (ISolidWeapon weapon in weapons)
     {
         maxBoundingRadius = MathHelper.Max(maxBoundingRadius, weapon.BoundingRadius);
     }
     this.aIInfo = new BuildUpGunActionAIInfo(null);
 }
Example #5
0
        static void Initialize()
        {
            initialized = true;

            DefaultTargetingTypes = TargetingInfo.None;
            DefaultEffectsWho     = DefaultTargetingTypes;

            InitShape();
            DefaultState        = new ShipState(new Bounded <float>(99), new Bounded <float>(0), new Bounded <float>(0), new Bounded <float>(0));
            DefaultMovementInfo = new ShipMovementInfo(new Bounded <float>(0),
                                                       new Bounded <float>(0),
                                                       new Bounded <float>(0),
                                                       new Bounded <float>(TimeWarp.ScaleVelocity(20)));
            DefaultLifeTime = new LifeSpan(TimeWarp.RangeToTime(5, 20));
            DefaultDelay    = new Bounded <float>(TimeWarp.RateToTime(9));
            DefaultCost     = new Costs(new ShipStateChange(0, 21, 0, 0), null, null);

            DefaultEffectCollection.Effects.Add(new ShipStateEffect(DefaultEffectsWho, EffectTypes.None, new EffectSounds(), new ShipStateChange(-3, 0, 0, 0)));
            DefaultActionSounds = new ActionSounds("FlameThrower2", null, null);

            DefaultOffsetAngles   = new float[anglecount];
            DefaultVelocityAngles = new float[anglecount];
            float da  = (2 * MathHelper.PI) / (float)anglecount;
            int   pos = 0;

            for (float angle = 0; angle < 2 * MathHelper.PI; angle += da, pos++)
            {
                DefaultOffsetAngles[pos]   = angle;
                DefaultVelocityAngles[pos] = angle;
            }
        }
Example #6
0
        static void Initialize()
        {
            initialized = true;

            InitShape();
            DefaultMovementInfo = new ShipMovementInfo(
                new Bounded <float>(0),
                new Bounded <float>(0),
                new Bounded <float>(0),
                new Bounded <float>(TimeWarp.ScaleVelocity(120)));
            DefaultDelay    = new Bounded <float>(TimeWarp.RateToTime(4));
            DefaultLifeTime = new LifeSpan(TimeWarp.RangeToTime(20, 120));
            DefaultState    = new ShipState(new Bounded <float>(3), new Bounded <float>(0), new Bounded <float>(0), new Bounded <float>(0));

            DefaultCost = new Costs(new ShipStateChange(0, 6, 0, 0), null, null);
            DefaultEffectCollection.Effects.Add(
                new ShipStateEffect(
                    TargetingInfo.All,
                    EffectTypes.None,
                    new EffectSounds("Boom23", null, null),
                    new ShipStateChange(-3, 0, 0, 0)));

            DefaultTargetingTypes = TargetingInfo.None;
            DefaultActionSounds   = new ActionSounds("Gun2", null, null);
        }
        static void Initialize()
        {
            initialized = true;

            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None);
            DefaultEffectsWho     = new TargetingInfo(TargetingTypes.Enemy | TargetingTypes.Debris);
            InitShape();
            DefaultMovementInfo = new ShipMovementInfo(
                new Bounded <float>(0),
                new Bounded <float>(0),
                new Bounded <float>(0),
                new Bounded <float>(TimeWarp.ScaleVelocity(64)));
            DefaultDelay       = new Bounded <float>(TimeWarp.RateToTime(0));
            DefaultLifeTime    = new LifeSpan(20);
            SubDefaultLifeTime = new LifeSpan(TimeWarp.RangeToTime(9, 64));
            DefaultState       = new ShipState(new Bounded <float>(6), new Bounded <float>(0), new Bounded <float>(0), new Bounded <float>(0));
            SubDefaultState    = new ShipState(new Bounded <float>(2), new Bounded <float>(0), new Bounded <float>(0), new Bounded <float>(0));

            DefaultCost = new Costs(new ShipStateChange(0, 5, 0, 0), new ShipStateChange(), new ShipStateChange());

            DefaultEffectCollection.Effects.Add(new ShipStateEffect(DefaultEffectsWho, EffectTypes.None, new EffectSounds(), new ShipStateChange(-6, 0, 0, 0)));

            SubDefaultEffectCollection.Effects.Add(new ShipStateEffect(DefaultEffectsWho, EffectTypes.None, new EffectSounds(), new ShipStateChange(-2, 0, 0, 0)));


            DefaultActionSounds = new ActionSounds("Crystal", null, "GlassBreak");
        }
Example #8
0
        static void Initialize()
        {
            initialized = true;

            DefaultMovementInfo = new ShipMovementInfo(
                new Bounded <float>(TimeWarp.AngularAcceleration),
                new Bounded <float>(TimeWarp.ScaleTurning(4)),
                new Bounded <float>(TimeWarp.ScaleAcceleration(2, 1)),
                new Bounded <float>(TimeWarp.ScaleVelocity(28)));
            DefaultState = new ShipState(new Bounded <float>(1),
                                         new Bounded <float>(0),
                                         new Bounded <float>(0),
                                         new Bounded <float>(0));
            DefaultLifeTime = new LifeSpan(TimeWarp.RangeToTime(2.8f, 28));


            DefaultCost           = new Costs(new ShipStateChange(0, 1, 0, 0), null, null);
            DefaultDelay          = new Bounded <float>(TimeWarp.RateToTime(0));
            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None);

            DefaultInitialRadius = 3;
            DefaultExpansionRate = 5 + TimeWarp.ScaleRange(5);
            DefaultMass          = .1f;
            DefaultEffectCollection.Effects.Add(new ShipStateEffect(TargetingInfo.All, EffectTypes.None, new EffectSounds(), new ShipStateChange(-1, 0, 0, 0)));
            DefaultActionSounds = new ActionSounds("FlameThrower", null, "Uncloak");
        }
Example #9
0
            static void Initialize()
            {
                initialized = true;

                InitShape();
                DefaultMovementInfo = new ShipMovementInfo(
                    new Bounded <float>(TimeWarp.AngularAcceleration),
                    new Bounded <float>(TimeWarp.ScaleTurning(9)),
                    new Bounded <float>(10000),
                    new Bounded <float>(TimeWarp.ScaleVelocity(80)));

                DefaultState = new ShipState(new Bounded <float>(1),
                                             new Bounded <float>(0),
                                             new Bounded <float>(0),
                                             new Bounded <float>(0));
                DefaultCost     = new Costs(new ShipStateChange(0, 1, 0, 0), null, null);
                DefaultDelay    = new Bounded <float>(TimeWarp.RateToTime(20));
                DefaultLifeTime = new LifeSpan(TimeWarp.RangeToTime(50, 80));

                DefaultEffectCollection.Effects.Add(
                    new ShipStateEffect(
                        TargetingInfo.All,
                        EffectTypes.None,
                        new EffectSounds("Boom1", null, null),
                        new ShipStateChange(-1, 0, 0, 0)));
                DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Other | TargetingTypes.Ship, TargetingTypes.None);
                DefaultEffectsWho     = TargetingInfo.All;
                DefaultActionSounds   = new ActionSounds("MissileLaunch2", null, null);
            }
        static void Initialize()
        {
            initialized = true;

            DefaultMovementInfo = new ShipMovementInfo(
                new Bounded <float>(0),
                new Bounded <float>(0),
                new Bounded <float>(TimeWarp.ScaleAcceleration(30, 0)),
                new Bounded <float>(TimeWarp.ScaleVelocity(80)));
            DefaultState = new ShipState(new Bounded <float>(2),
                                         new Bounded <float>(0),
                                         new Bounded <float>(0),
                                         new Bounded <float>(0));
            DefaultLifeTime = new LifeSpan(3);
            DefaultCost     = new Costs(new ShipStateChange(0, 1, 0, 0), null, null);
            DefaultDelay    = new Bounded <float>(TimeWarp.RateToTime(0));

            DefaultTargetingTypes = TargetingInfo.None;
            DefaultInitialRadius  = 20;
            DefaultExpansionRate  = 6;
            DefaultMass           = .8f;
            DefaultEffectCollection.Effects.Add(
                new ShipStateEffect(
                    TargetingInfo.All,
                    EffectTypes.None,
                    new EffectSounds("Boom23", null, null),
                    new ShipStateChange(-2, 0, 0, 0)));
            DefaultActionSounds = new ActionSounds("FlameThrower3", null, null);
        }
Example #11
0
 protected TransformAction(TransformAction copy)
     : base(copy)
 {
     this.mirrorActionSounds = copy.mirrorActionSounds;;
     this.mirrorShip         = (IShip)copy.mirrorShip;;
     this.recosts            = copy.recosts;
     this.zeroVelocity       = copy.zeroVelocity;
 }
 public JumpShipEffect(TargetingInfo effectsWho, int count, ActionSounds actionSounds)
     : base(
         effectsWho,
         EffectTypes.HealthSteal,
         new EffectSounds(),
         new JumpShipAction(count, actionSounds))
 {
 }
Example #13
0
            static void Initialize()
            {
                initialized = true;

                DefaultDelay          = new Bounded <float>(TimeWarp.RateToTime(0));
                DefaultTargetingTypes = new TargetingInfo(TargetingTypes.Self);
                DefaultActionSounds   = new ActionSounds("Transform", null, null);
            }
        static void Initialize()
        {
            initialized = true;

            DefaultCost           = new Costs(new ShipStateChange(0, 0, 0, 0), null, null);
            DefaultDelay          = new Bounded <float>(0);
            DefaultTargetingTypes = TargetingInfo.None;
            DefaultActionSounds   = new ActionSounds();
        }
Example #15
0
            static void Initialize()
            {
                initialized = true;

                DefaultCost           = new Costs(new ShipStateChange(0, 2, 0, 0), null, null);
                DefaultDelay          = new Bounded <float>(TimeWarp.RateToTime(0));
                DefaultTargetingTypes = new TargetingInfo(TargetingTypes.Self);
                DefaultActionSounds   = new ActionSounds("EchoBoom", null, null);
            }
Example #16
0
        static void Initialize()
        {
            initialized = true;

            DefaultCost           = new Costs(new ShipStateChange(0, 3, 0, 0), null, null);
            DefaultDelay          = new Bounded <float>(TimeWarp.RateToTime(7));
            DefaultTargetingTypes = TargetingInfo.None;
            DefaultActionSounds   = new ActionSounds("Cloak", null, "Uncloak");
        }
        static void Initialize()
        {
            initialized = true;

            DefaultCost           = new Costs(new ShipStateChange(-4, 40, 0, 0), null, null);
            DefaultDelay          = new Bounded <float>(TimeWarp.RateToTime(30));
            DefaultTargetingTypes = TargetingInfo.None;
            DefaultActionSounds   = new ActionSounds("DeepBirdCall", null, null);
        }
Example #18
0
 public InstantAction(
     Bounded <float> delay,
     TargetingInfo targetableTypes,
     Costs costs,
     ActionSounds actionSounds,
     IWeapon weapon)
     : base(delay, targetableTypes, costs, true, actionSounds)
 {
     this.weapon = weapon;
 }
        static void Initialize()
        {
            initialized = true;

            DefaultCost           = new Costs(new ShipStateChange(1, 4, 0, 0), null, null);
            DefaultDelay          = new Bounded <float>(TimeWarp.RateToTime(9));
            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None);
            DefaultEffectsWho     = new TargetingInfo(TargetingTypes.All, TargetingTypes.None, TargetingTypes.None);
            DefaultActionSounds   = new ActionSounds("launchFighters", null, null);
        }
        static void Initialize()
        {
            initialized = true;

            //what the weapon can effect.
            DefaultEffectsWho = new TargetingInfo(
                TargetingTypes.None,    //must be ANY one of these.
                TargetingTypes.None,    //must be ALL of these.
                TargetingTypes.Ally     //must be NONE of these.
                );
            //Note: about TargetingInfo. if a parameter is set to TargetingTypes.None then it is not applied.

            //what the weapon can target.
            DefaultTargetingTypes = new TargetingInfo(
                TargetingTypes.None,  //must be ANY one of these.
                TargetingTypes.Enemy, //must be ALL of these.
                TargetingTypes.None   //must be NONE of these.
                );
            //Note: about TargetingInfo. if the ANY or the ALL parameter has only one
            //and the other one is set to TargetingTypes.None then they can be
            //swaped and still act the same.

            //what the action cost.
            DefaultCost = new Costs(
                new ShipStateChange( // the cost for it to activate.
                    0,               //the cost in health.
                    2,               //the cost in energy.
                    0,               //the cost in health recharge rate.
                    0),              //the cost in energy recharge rate.
                null,                // the cost in per seconds for it to run. If null then it has no running logic.
                null                 // the cost for it to deactivate. If null then it has no deactivate logic.
                );

            //what the weapon does on contact.
            DefaultEffectCollection.Effects.Add(
                new ShipStateEffect(     //Its a ShipState effect so it can effect health or energy or the recharge of both.
                    DefaultEffectsWho,   //what the weapon can effect.
                    EffectTypes.None,    //extra info about what effects the effect does. usualy is EffectTypes.None
                    new EffectSounds(),  //the sounds assoiated with the effect. right now it has none.
                    new ShipStateChange( // the change it cuases.
                        -1,              //change in health.
                        0,               //change in energy.
                        0,               //change in health's recharge rate.
                        0)               //change in energy's recharge rate.
                    )
                );

            //The amount of time to wait before the action can be triggered again.
            DefaultDelay = new Bounded <float>(TimeWarp.RateToTime(1));
            //The sounds associated with the Action.
            DefaultActionSounds = new ActionSounds(
                "Laser5", // the sound played on activation.
                null,     // the sound played on running.
                null);    // the sound played on deactivation.
        }
        static void Initialize()
        {
            initialized = true;

            DefaultCost           = new Costs(new ShipStateChange(0, 2, 0, 0), null, null);
            DefaultRange          = TimeWarp.ScaleRange(120);
            DefaultDelay          = new Bounded <float>(TimeWarp.RateToTime(0));
            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None);
            DefaultImpulse        = -25000;
            DefaultActionSounds   = new ActionSounds("TractorBeam", null, null);
        }
Example #22
0
        static void Initialize()
        {
            initialized = true;

            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.Debris);
            DefaultEffectsWho     = DefaultTargetingTypes;
            DefaultCost           = new Costs(new ShipStateChange(0, 0, 0, 0), null, null);
            DefaultEffectCollection.Effects.Add(new ShipStateEffect(DefaultEffectsWho, EffectTypes.None, new EffectSounds(), new ShipStateChange(-1, 0, 0, 0)));
            DefaultDelay        = new Bounded <float>(TimeWarp.RateToTime(2));
            DefaultActionSounds = new ActionSounds("Energize", null, null);
        }
        static void Initialize()
        {
            initialized = true;

            DefaultEffectsWho     = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None);
            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Ship | TargetingTypes.Enemy, TargetingTypes.None);
            DefaultCost           = new Costs(new ShipStateChange(0, 5, 0, 0), null, null);
            DefaultDelay          = new Bounded <float>(TimeWarp.RateToTime(20));
            DefaultActionSounds   = new ActionSounds("SirensCall", null, null);
            DefaultEffectCollection.Effects.Add(new JumpShipEffect(DefaultEffectsWho, 5, new ActionSounds()));
        }
 public ProximityInstantAction(Bounded <float> delay,
                               TargetingInfo targetableTypes,
                               Costs costs,
                               ActionSounds actionSounds,
                               float radius,
                               int maxNumberofTargets,
                               IWeapon weapon)
     : base(delay, targetableTypes, costs, actionSounds, radius, maxNumberofTargets)
 {
     this.weapon = weapon;
 }
 protected BaseAction(BaseAction copy)
 {
     this.source          = copy.source;
     this.target          = copy.target;
     this.delay           = new Bounded <float>(copy.delay);
     this.targetableTypes = copy.targetableTypes;
     this.costs           = copy.costs;
     this.needsTarget     = copy.needsTarget;
     this.actionSounds    = copy.actionSounds;
     this.aIInfo          = Functions.Clone <IActionAIInfo>(copy.aIInfo);
 }
 public TransporterAction(
     Bounded <float> delay,
     TargetingInfo targetableTypes,
     Costs costs,
     bool needsTarget,
     ActionSounds actionSounds,
     ISolidWeapon weapon)
     : base(delay, targetableTypes, costs, needsTarget, actionSounds)
 {
     this.weapon = weapon;
 }
Example #27
0
 public GunPointDefence(Bounded <float> delay,
                        TargetingInfo targetableTypes,
                        Costs costs,
                        ActionSounds actionSounds,
                        float radius,
                        int maxNumberofTargets,
                        ISolidWeapon weapon)
     : base(delay, targetableTypes, costs, actionSounds, radius, maxNumberofTargets)
 {
     this.weapon = weapon;
 }
        static void Initialize()
        {
            initialized = true;

            DefaultCost  = new Costs(new ShipStateChange(0, 30, 0, 0), null, null);
            DefaultDelay = new Bounded <float>(TimeWarp.RateToTime(0));


            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.None, TargetingTypes.Enemy | TargetingTypes.Ship, TargetingTypes.None);
            DefaultActionSounds   = new ActionSounds("Crystal2", null, null);
        }
        static void Initialize()
        {
            initialized = true;

            DefaultTargetingTypes = new TargetingInfo(TargetingTypes.Self);
            DefaultEffectsWho     = DefaultTargetingTypes;
            DefaultCost           = new Costs(new ShipStateChange(0, 1, 0, 0), new ShipStateChange(0, 1, 0, 0), null);
            DefaultEffectCollection.ProlongedEffects.Add(new AbsorptionSheild(DefaultEffectsWho, EffectTypes.None, new EffectSounds(), new LifeSpan(TimeWarp.RateToTime(7)), EffectTypes.Health, 1));
            DefaultDelay        = new Bounded <float>(TimeWarp.RateToTime(0));
            DefaultActionSounds = new ActionSounds(new MeleeSound("Shield1"), new MeleeSound("Shield1", new Bounded <float>(.3f)), null);
        }
        static void Initialize()
        {
            initialized = true;

            DefaultEffectCollection.Effects.Add(new ShipStateEffect(new TargetingInfo(TargetingTypes.Enemy | TargetingTypes.Debris), EffectTypes.None, new EffectSounds(), new ShipStateChange(-1, 0, 0, 0)));
            DefaultTargetingTypes     = new TargetingInfo(TargetingTypes.Enemy);
            DefaultCost               = new Costs(new ShipStateChange(0, 0, 0, 0), null, null);
            DefaultDelay              = new Bounded <float>(TimeWarp.RateToTime(8));
            DefaultRadius             = TimeWarp.ScaleRange(3);
            DefaultMaxNumberofTargets = 1;
            DefaultActionSounds       = new ActionSounds("Laser3", null, null);
        }