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); } }