void Map::Storm() { PacketBuilder reply; int id; for(int i = 0 ; i < static_cast<int>(this->world->storms_config["TAmount"]) ; i++){ id = static_cast<int>(this->world->storms_config[util::to_string(i+1) + ".map"]); if (this->id == id) { UTIL_PTR_LIST_FOREACH(this->characters, Character, character) { int random = util::rand(0, 100); if (random < 20) { character->map->Effect(MAP_EFFECT_QUAKE, 1); reply.SetID(PACKET_EFFECT, PACKET_AGREE); reply.AddChar(character->x); reply.AddChar(character->y - 11); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y - 5); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y - 9); reply.AddShort(10); reply.AddChar(character->x + 3); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x + 7); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x + 8); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y + 3); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y + 5); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y + 9); reply.AddShort(10); reply.AddChar(character->x - 3); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x - 6); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x - 8); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x + 11); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y + 1); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y +6); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y + 2); reply.AddShort(17); reply.AddChar(character->x - 12); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 4); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 1); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 10); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 4); reply.AddChar(character->y); reply.AddShort(17); if (character->InRange(*character)) { character->player->client->SendBuilder(reply); } } else if (random < 30 && random >= 20) { character->map->Effect(MAP_EFFECT_QUAKE, 1); break; } if(random < 50 && random >= 20) { character->map->Effect(MAP_EFFECT_QUAKE, 3); reply.SetID(PACKET_EFFECT, PACKET_AGREE); reply.AddChar(character->x); reply.AddChar(character->y - 1); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y - 5); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y - 9); reply.AddShort(10); reply.AddChar(character->x + 10); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x + 6); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x + 9); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y + 3); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y + 5); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y + 9); reply.AddShort(10); reply.AddChar(character->x - 3); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 2); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x - 8); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x + 11); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y + 1); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y +6); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y + 4); reply.AddShort(17); reply.AddChar(character->x - 12); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 13); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 3); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 9); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 7); reply.AddChar(character->y); reply.AddShort(17); if (character->InRange(*character)) { character->player->client->SendBuilder(reply); } } else if (random < 60 && random >= 50) { character->map->Effect(MAP_EFFECT_QUAKE, 1); break; } if(random < 90 && random >= 60) { character->map->Effect(MAP_EFFECT_QUAKE, 3); reply.SetID(PACKET_EFFECT, PACKET_AGREE); reply.AddChar(character->x); reply.AddChar(character->y - 3); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y - 5); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y - 9); reply.AddShort(10); reply.AddChar(character->x + 11); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x + 6); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x + 8); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y + 3); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y + 5); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y + 9); reply.AddShort(10); reply.AddChar(character->x - 3); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x - 2); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x - 8); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x + 11); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y + 1); reply.AddShort(10); reply.AddChar(character->x); reply.AddChar(character->y +6); reply.AddShort(17); reply.AddChar(character->x); reply.AddChar(character->y + 4); reply.AddShort(10); reply.AddChar(character->x - 12); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 7); reply.AddChar(character->y); reply.AddShort(17); reply.AddChar(character->x - 3); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x - 6); reply.AddChar(character->y); reply.AddShort(10); reply.AddChar(character->x - 7); reply.AddChar(character->y); reply.AddShort(10); if (character->InRange(*character)) { character->player->client->SendBuilder(reply); } } else if (random < 100 && random >= 90) { character->map->Effect(MAP_EFFECT_QUAKE, 1); break; } } } } }