void Map::Storm() { PacketBuilder reply; int Strikes, Strike_X, Strike_Y, Strike_Type; Strikes = util::rand(1, this->width / 2); //Amount of locations to strike with thunder for(int i = 0; i < Strikes; i++) { Strike_X = util::rand(0, this->width); Strike_Y = util::rand(0, this->height); Strike_Type = util::rand(0, 1); //Ensure its not triggering thunder on non-blank tiles while (this->GetSpec(Strike_X, Strike_Y) != Map_Tile::None) { Strike_X = util::rand(0, this->width); Strike_Y = util::rand(0, this->height); } UTIL_PTR_LIST_FOREACH(this->characters, Character, character) { if (character->InRange(Strike_X, Strike_Y)) { reply.SetID(PACKET_EFFECT, PACKET_AGREE); reply.AddChar(Strike_X); reply.AddChar(Strike_Y); if (Strike_Type == 0) { character->map->Effect(MAP_EFFECT_QUAKE, 1); reply.AddShort(10); } else { character->map->Effect(MAP_EFFECT_QUAKE, 3); reply.AddShort(17); } character->player->client->SendBuilder(reply); } } } }