示例#1
0
            public void BreakWeapon(bool isExplosion)
            {
                IPlayer pl = User.GetPlayer();

                if (pl != null && !pl.IsDead)
                {
                    if (pl.CurrentWeaponDrawn == WeaponItemType.Rifle)
                    {
                        if (GlobalRandom.Next(0, 100) < (int)(WeaponBreakingChance * Armor.BreakWeaponFactor))
                        {
                            Vector2         pos    = pl.GetWorldPosition();
                            RifleWeaponItem weapon = pl.CurrentPrimaryWeapon;
                            if ((weapon.WeaponItem == WeaponItem.BAZOOKA || weapon.WeaponItem == WeaponItem.GRENADE_LAUNCHER ||
                                 weapon.WeaponItem == WeaponItem.FLAMETHROWER) && weapon.CurrentAmmo > 0 && (GlobalRandom.Next(0, 100) < WeaponExplosionChance || isExplosion))
                            {
                                GlobalGame.TriggerExplosion(pos);
                            }
                            pl.RemoveWeaponItemType(WeaponItemType.Rifle);
                            GlobalGame.PlayEffect("CFTXT", pl.GetWorldPosition(), "WEAPON BROKEN");
                            GlobalGame.CreateObject("MetalDebris00A", pos, (float)rnd.NextDouble());
                            pos.X += 5;
                            GlobalGame.CreateObject("MetalDebris00B", pos, (float)rnd.NextDouble());
                            pos.X -= 10;
                            GlobalGame.CreateObject("MetalDebris00C", pos, (float)rnd.NextDouble());
                        }
                    }
                }
            }
示例#2
0
            public void OnDead()
            {
                AddTeamExp(5, 0, GetEnemyTeam(Team), true);
                IPlayer pl = User.GetPlayer();

                if (pl != null)
                {
                    if (Armor.SuicideMine)
                    {
                        GlobalGame.TriggerExplosion(Position);
                    }
                }
            }
示例#3
0
 public void Destroy()
 {
     StopMovement();
     GlobalGame.TriggerExplosion(MainMotor.GetWorldPosition());
     for (int i = 0; i < DamagedObjects.Count; i++)
     {
         DamagedObjects[i].Destroy();
     }
     for (int i = 0; i < OtherObjects.Count; i++)
     {
         OtherObjects[i].Destroy();
     }
     DamagedObjects.Clear();
     OtherObjects.Clear();
 }
示例#4
0
 public void OnFire(TPlayer player, WeaponItemType type)
 {
     if (CanOverheat)
     {
         Overheating += ShotHeat;
         if (Overheating >= 100)
         {
             player.User.GetPlayer().RemoveWeaponItemType(type);
             GlobalGame.PlayEffect("CFTXT", player.Position, "OVERHEATED");
             GlobalGame.PlayEffect("EXP", player.Position);
             player.Hp      -= 50;
             player.Bleeding = true;
             Vector2 pos = player.Position;
             GlobalGame.CreateObject("MetalDebris00A", pos, (float)rnd.NextDouble());
             pos.X += 5;
             GlobalGame.CreateObject("MetalDebris00B", pos, (float)rnd.NextDouble());
             pos.X -= 10;
             GlobalGame.CreateObject("MetalDebris00C", pos, (float)rnd.NextDouble());
         }
         else
         {
             GlobalGame.PlayEffect("CFTXT", player.Position, "OVERHEATING " + ((int)Overheating).ToString() + "%");
         }
     }
     if (DNAProtection && player.Team != TeamDNA)
     {
         player.User.GetPlayer().RemoveWeaponItemType(type);
         GlobalGame.PlayEffect("CFTXT", player.Position, "DNA SCAN ERROR");
         GlobalGame.TriggerExplosion(player.Position);
         DNAProtection = false;
     }
     if (type == WeaponItemType.Thrown)
     {
         CreateThrownWeapon(Weapon, CustomId, player.Position);
     }
 }