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