示例#1
0
        public BombBlast(Point3D location, Map map, BlastDirection direction, BombBag bombbag, Mobile planter,
                         int strength, bool baddaboom)
        {
            _Direction = direction;
            _DeltaX    = (_Direction == BlastDirection.West ? -1 : 0) + (_Direction == BlastDirection.East ? 1 : 0);
            _DeltaY    = (_Direction == BlastDirection.North ? -1 : 0) + (_Direction == BlastDirection.South ? 1 : 0);

            _Location = new Point3D(location.X + _DeltaX, location.Y + _DeltaY, location.Z);
            _Map      = map;

            _BombBag = bombbag;
            _Planter = planter;

            _Strength  = strength;
            _BaddaBoom = baddaboom;

            _BlastTimer = new BlastTimer(this);
            _BlastTimer.Start();

            //check for any victims of the blast
            if (_BombBag != null && !_BombBag.Deleted)
            {
                _BombBag.ControlItem.CheckForMobileVictims(_Location, _Map, _BombBag);
            }
        }
示例#2
0
        public BombBlast(Point3D location, Map map, BlastDirection direction, BombBag bombbag, Mobile planter,
            int strength, bool baddaboom)
        {
            _Direction = direction;
            _DeltaX = (_Direction == BlastDirection.West ? -1 : 0) + (_Direction == BlastDirection.East ? 1 : 0);
            _DeltaY = (_Direction == BlastDirection.North ? -1 : 0) + (_Direction == BlastDirection.South ? 1 : 0);

            _Location = new Point3D(location.X + _DeltaX, location.Y + _DeltaY, location.Z);
            _Map = map;

            _BombBag = bombbag;
            _Planter = planter;

            _Strength = strength;
            _BaddaBoom = baddaboom;

            _BlastTimer = new BlastTimer(this);
            _BlastTimer.Start();

            //check for any victims of the blast
            if (_BombBag != null && !_BombBag.Deleted)
            {
                _BombBag.ControlItem.CheckForMobileVictims(_Location, _Map, _BombBag);
            }
        }
示例#3
0
		public void Explode()
		{
			if( _BlastTimer != null )
			{
				_BlastTimer.Stop();
				_BlastTimer = null;
			}
			
			if( _Map == null )
			{
				return;
			}
			
			IPooledEnumerable ie = _Map.GetItemsInRange( _Location, 0 );
			
			bool hitwall = false;
			
			foreach( Item item in ie )
			{
				if( item is BombermanObstacle && !( item is BombermanFloorTile ) )
				{
					
					BombermanObstacle obstacle = (BombermanObstacle)item;
					
					if( obstacle.Destructable )
					{
						obstacle.Destroy();
					}
					else
					{
						hitwall = true;
						_Strength = 0;
					}
					
					//stop the fires here if you don't have a baddaboom bomb
					if( !_BaddaBoom )
					{
						_Strength = 0;
					}
					break;
				}
				
				if( item is Bomb )
				{
					Bomb bomb = (Bomb)item;
					
					//reassign who planted it so that the bomb who originally exploded will get credit for any kills
					bomb.Planter = _BombBag.Owner;
					
					bomb.Explode( ReverseDirection( _Direction ) );
					
					//stop the fires here
					_Strength = 0;
					break;
				}
				
			}
			
			ie.Free();
			
			if( !hitwall )
			{
				RenderBlast();
			}
			
			//check for any victims of the blast
			if( _BombBag != null && !_BombBag.Deleted )
			{
				_BombBag.ControlItem.CheckForMobileVictims( _Location, _Map, _BombBag );
			}
			
			
			if( !hitwall )
			{
				
			}
			
			if( _Strength > 0 )
			{
				
				BombBlast newblast = new BombBlast( _Location, _Map, _Direction, _BombBag, _Planter, _Strength - 1, _BaddaBoom );
			}
		}
示例#4
0
        public void Explode()
        {
            if (_BlastTimer != null)
            {
                _BlastTimer.Stop();
                _BlastTimer = null;
            }

            if (_Map == null)
            {
                return;
            }

            IPooledEnumerable ie = _Map.GetItemsInRange(_Location, 0);

            bool hitwall = false;

            foreach (Item item in ie)
            {
                if (item is BombermanObstacle && !(item is BombermanFloorTile))
                {
                    BombermanObstacle obstacle = (BombermanObstacle)item;

                    if (obstacle.Destructable)
                    {
                        obstacle.Destroy();
                    }
                    else
                    {
                        hitwall   = true;
                        _Strength = 0;
                    }

                    //stop the fires here if you don't have a baddaboom bomb
                    if (!_BaddaBoom)
                    {
                        _Strength = 0;
                    }
                    break;
                }

                if (item is Bomb)
                {
                    Bomb bomb = (Bomb)item;

                    //reassign who planted it so that the bomb who originally exploded will get credit for any kills
                    bomb.Planter = _BombBag.Owner;

                    bomb.Explode(ReverseDirection(_Direction));

                    //stop the fires here
                    _Strength = 0;
                    break;
                }
            }

            ie.Free();

            if (!hitwall)
            {
                RenderBlast();
            }

            //check for any victims of the blast
            if (_BombBag != null && !_BombBag.Deleted)
            {
                _BombBag.ControlItem.CheckForMobileVictims(_Location, _Map, _BombBag);
            }


            if (!hitwall)
            {
            }

            if (_Strength > 0)
            {
                BombBlast newblast = new BombBlast(_Location, _Map, _Direction, _BombBag, _Planter, _Strength - 1, _BaddaBoom);
            }
        }