diff --git a/Engine/Game/Multiplayer/session_model.h b/Engine/Game/Multiplayer/session_model.h index ede64ed..041f345 100644 --- a/Engine/Game/Multiplayer/session_model.h +++ b/Engine/Game/Multiplayer/session_model.h @@ -153,6 +153,9 @@ struct MultiplayerModel { // Objects each player may have placed in this session (0: no limit), the limit this // player is held to (0 for the host and a server's admins), and how many they have placed. unsigned object_limit{}, object_limit_own{}, objects_placed{}; + // This player may resize the objects they place (a dedicated server can turn it off for its + // players; its admins always may). + bool object_scaling{true}; // Host setting: whether guests may use noclip / No Bail (the host and server admins always may). bool guest_noclip{true}, guest_no_bail{true}, guest_boosts{true}; // Host setting: guests skate with the host's physics tuning (on a dedicated server: the diff --git a/Extension/Multiplayer/Net/protocol.cpp b/Extension/Multiplayer/Net/protocol.cpp index 31bc983..d56eeb6 100644 --- a/Extension/Multiplayer/Net/protocol.cpp +++ b/Extension/Multiplayer/Net/protocol.cpp @@ -619,6 +619,7 @@ std::vector encode(const Packet &p, bool compact_pose, std::uint32 w.integer(static_cast(p.object_placement), 1); if (!valid_object_limit(p.object_limit)) throw std::invalid_argument("Invalid object limit"); w.integer(p.object_limit, 2); + w.integer(p.object_scaling ? 1 : 0, 1); w.integer(p.force_world_layers, 1); // One mode per world-layer catalog row; both peers read the same catalog // from the same game build. @@ -945,6 +946,9 @@ std::optional decode(std::span bytes) noexcept { const auto object_limit = r.integer(2); if (!valid_object_limit(object_limit)) return {}; p.object_limit = static_cast(object_limit); + const auto scaling = r.integer(1); + if (scaling > 1) return {}; + p.object_scaling = scaling != 0; const auto forced = r.integer(1); if (forced > 1) return {}; p.force_world_layers = forced != 0; diff --git a/Extension/Multiplayer/Net/protocol.h b/Extension/Multiplayer/Net/protocol.h index d04aba5..9bd6c31 100644 --- a/Extension/Multiplayer/Net/protocol.h +++ b/Extension/Multiplayer/Net/protocol.h @@ -188,6 +188,9 @@ struct Packet { ObjectPlacement object_placement = ObjectPlacement::everyone; // Objects each player may have placed (object_placement.h); 0: no limit. unsigned object_limit{}; + // Roster: players may place objects at another size than their own. Off: a dedicated server + // shares every player's objects at their own size (its admins' excepted). + bool object_scaling{true}; // Bumped each time the host deletes all guest objects. Guests delete their // own session objects when it changes after their first roster. std::uint32_t object_clears{}; diff --git a/Extension/Multiplayer/Session/session.cpp b/Extension/Multiplayer/Session/session.cpp index 72d7143..2ec0e09 100644 --- a/Extension/Multiplayer/Session/session.cpp +++ b/Extension/Multiplayer/Session/session.cpp @@ -74,6 +74,7 @@ void stop(Session &s, std::string reason) { s.tps = multiplayer_default_tps; s.object_placement = ObjectPlacement::everyone; s.object_limit = 0; + s.object_scaling = true; set_lobby_object_limit(0); s.server_admin = false; s.server_bans.clear(); diff --git a/Extension/Multiplayer/Session/session_internal.h b/Extension/Multiplayer/Session/session_internal.h index 863fc3e..07a9d23 100644 --- a/Extension/Multiplayer/Session/session_internal.h +++ b/Extension/Multiplayer/Session/session_internal.h @@ -155,6 +155,7 @@ struct Session { MultiplayerDistances distances; ObjectPlacement object_placement = ObjectPlacement::everyone; unsigned object_limit{}; // objects each player may have placed; 0: no limit + bool object_scaling{true}; // the dedicated server lets players resize what they place // What guests may use: the host's choice, or the host's roster for a guest. bool guest_noclip = true, guest_no_bail = true, guest_boosts = true; // Host: guests skate with its physics tuning. Guest: the host's roster says so (a diff --git a/Extension/Multiplayer/Session/session_receive.cpp b/Extension/Multiplayer/Session/session_receive.cpp index 2210655..fedbb72 100644 --- a/Extension/Multiplayer/Session/session_receive.cpp +++ b/Extension/Multiplayer/Session/session_receive.cpp @@ -273,6 +273,7 @@ void apply_roster(Session &s, const Packet &p, std::uint64_t now) { } apply_object_placement(s, p.object_placement); apply_object_limit(s, p.object_limit); // after server_admin, which exempts an admin + s.object_scaling = !dedicated_host(s) || p.object_scaling; apply_guest_tools(s, p.guest_noclip, p.guest_no_bail, p.guest_boosts); s.enforce_tuning = p.enforce_tuning; s.server_votes = dedicated_host(s) ? p.server_votes : 0; diff --git a/Extension/Multiplayer/Session/session_view.cpp b/Extension/Multiplayer/Session/session_view.cpp index b543b6e..0f858aa 100644 --- a/Extension/Multiplayer/Session/session_view.cpp +++ b/Extension/Multiplayer/Session/session_view.cpp @@ -151,6 +151,7 @@ void publish(Session &s, const NativeFrame *local) { view.distances = s.distances; view.object_placement = s.object_placement; view.object_limit = s.object_limit; + view.object_scaling = s.object_scaling || s.server_admin || s.mode != Mode::join; view.object_limit_own = s.mode == Mode::host || s.server_admin ? 0 : s.object_limit; // as apply_object_limit gives this game view.objects_placed = s.mode == Mode::off ? 0 : static_cast(s.local_objects.objects().size()); view.guest_noclip = s.guest_noclip; diff --git a/Extension/Multiplayer/Test/protocol_tests.cpp b/Extension/Multiplayer/Test/protocol_tests.cpp index bc2e636..7453fe8 100644 --- a/Extension/Multiplayer/Test/protocol_tests.cpp +++ b/Extension/Multiplayer/Test/protocol_tests.cpp @@ -585,6 +585,9 @@ void object_codec() { const auto listed = decode(encode(served)); check(listed && listed->members.size() == 34 && listed->capacity == 32, "A server's roster past its limit failed to round-trip"); check(listed && listed->vote == served.vote, "A server's vote failed to round-trip"); + served.object_scaling = false; + const auto fixed = decode(encode(served)); + check(fixed && !fixed->object_scaling && listed && listed->object_scaling, "The roster's object scaling rule failed to round-trip"); served.vote = {}; const auto quiet = decode(encode(served)); check(quiet && quiet->vote == ServerVote{}, "A roster without a vote did not come back without one"); diff --git a/Extension/UI/Overlay/park_editor.cpp b/Extension/UI/Overlay/park_editor.cpp index fccaf6d..11ab2a3 100644 --- a/Extension/UI/Overlay/park_editor.cpp +++ b/Extension/UI/Overlay/park_editor.cpp @@ -120,6 +120,13 @@ bool draw_park_editor(ParkEditorUI &ui, const Model &model, const CallbacksV3 &c } else leave(ui, callbacks, visible, escape_closes); // Esc goes straight back to the game } + // A server that has turned object scaling off shares everything at its own size: nothing is + // resized here either, so what this player sees is what everyone else does. + ui.scaling_allowed = model.multiplayer.object_scaling; + if (!ui.scaling_allowed) { + ui.scale = 1; + if (ui.mode == ParkTransformMode::scale) ui.mode = ParkTransformMode::move; + } namespace skate = dingosdk::skate_theme; const float k = std::clamp(ui.ui_scale, .5f, 3.0f); const auto P = [k](float value) { return value * k; }; @@ -216,6 +223,7 @@ bool draw_park_editor(ParkEditorUI &ui, const Model &model, const CallbacksV3 &c for (std::size_t i = 0; i < modes.size(); ++i) { if (i) ImGui::SameLine(0, P(6)); + if (modes[i].second == ParkTransformMode::scale && !ui.scaling_allowed) continue; // the server has it off if (mode_tile(frame, bold_font, modes[i].first, ui.mode == modes[i].second, k, static_cast(41 + i))) { ui.mode = modes[i].second; ui.dragging = -1; @@ -493,7 +501,7 @@ bool draw_park_editor(ParkEditorUI &ui, const Model &model, const CallbacksV3 &c ui.mode = ParkTransformMode::move; if (ImGui::IsKeyPressed(ImGuiKey_R, false)) ui.mode = ParkTransformMode::rotate; - if (ImGui::IsKeyPressed(ImGuiKey_Y, false)) + if (ImGui::IsKeyPressed(ImGuiKey_Y, false) && ui.scaling_allowed) ui.mode = ParkTransformMode::scale; } if (io.KeyCtrl && ImGui::IsKeyPressed(ImGuiKey_C, false)) diff --git a/Extension/UI/Overlay/park_editor.h b/Extension/UI/Overlay/park_editor.h index 5cc5fd7..e74f7ec 100644 --- a/Extension/UI/Overlay/park_editor.h +++ b/Extension/UI/Overlay/park_editor.h @@ -18,6 +18,7 @@ struct ParkEditorUI { std::string category, placing, feedback, queued_status; editor::Vec3 position{}, angles{}, drag_start{}, drag_axis{}; editor::Quat drag_rotation{0, 0, 0, 1}; + bool scaling_allowed{true}; // off: the server shares objects at their own size, so none is resized here float scale{1}, grid{.5f}, angle_snap{15}, scale_snap{.1f}, plane_height{}, distance{10}, drag_parameter{}, drag_angle{}, drag_scale{1}, drag_gizmo_scale{1}; ParkTransformMode mode{ParkTransformMode::move}; diff --git a/Extension/UI/Overlay/park_editor_panels.cpp b/Extension/UI/Overlay/park_editor_panels.cpp index 9b5eba9..6171fc1 100644 --- a/Extension/UI/Overlay/park_editor_panels.cpp +++ b/Extension/UI/Overlay/park_editor_panels.cpp @@ -194,9 +194,12 @@ void inspector(ParkEditorUI &ui, const Model &model, const CallbacksV3 &callback ui.inspector_dirty = true; ImGui::TextUnformatted(ui.selection.size() > 1 ? "Scale multiplier" : "Uniform scale"); ImGui::SetNextItemWidth(-1); + ImGui::BeginDisabled(!ui.scaling_allowed); if (ImGui::DragFloat("##scale", &ui.scale, .01f, .01f, 100, "%.3f", ImGuiSliderFlags_AlwaysClamp)) ui.inspector_dirty = true; + ImGui::EndDisabled(); + if (!ui.scaling_allowed) ImGui::TextDisabled("This server has object scaling off."); ImGui::BeginDisabled(!selected && ui.surface_mode && !ui.surface_valid && !ui.inspector_dirty); skate_theme::push_primary_button(); ImGui::PushFont(font_or(ui.bold_font)); diff --git a/Server/README.txt b/Server/README.txt index c6dda4c..45677ac 100644 --- a/Server/README.txt +++ b/Server/README.txt @@ -121,6 +121,11 @@ object_placement everyone, admins (only admins can build), or nobody. object_limit How many objects each player may have placed, 1-1024 (default 100), or 0 for no limit. Admins are not limited. A player at the limit deletes one to place another. +allow_object_scaling Let players place objects bigger or smaller than their + own size (default true). false shares every player's + objects at their own size and turns the size controls + off in their park editor. Admins can still resize + theirs. Console: object-scaling on|off. announce_throwdowns Tell everyone in chat when a throwdown drop is placed (default true). @@ -266,6 +271,7 @@ and change voice, distances, placement and kicks from the Multiplayer menu. distances placement everyone|admins|nobody clear-objects objects |off How many objects each player may have placed. + object-scaling on|off Whether players may resize the objects they place. noclip on|off nobail on|off boosts on|off What players may use (admins always can). tuning on|off Everyone on the game's own physics tuning. diff --git a/Server/Test/server_config_tests.cpp b/Server/Test/server_config_tests.cpp index 7322324..7caa465 100644 --- a/Server/Test/server_config_tests.cpp +++ b/Server/Test/server_config_tests.cpp @@ -192,6 +192,17 @@ int run() { "A config in sections did not read back as it was written"); std::filesystem::remove_all(folder / "data"); } + // Object scaling: allowed unless turned off, and kept in the file. + { + ServerConfig sized; + check(sized.object_scaling, "Object scaling is not allowed by default"); + sized.file = folder / "sized.json"; + sized.object_scaling = false; + save_config(sized); + check(!load_config(sized.file).object_scaling && text(sized.file).find("\"allow_object_scaling\": false") != std::string::npos, + "The object scaling setting was not kept"); + std::filesystem::remove_all(folder / "data"); + } // The server's chat colours: violet and lavender unless set, red first as written. { ServerConfig colours; diff --git a/Server/server_commands.cpp b/Server/server_commands.cpp index e185451..d90f955 100644 --- a/Server/server_commands.cpp +++ b/Server/server_commands.cpp @@ -16,7 +16,7 @@ constexpr std::string_view help_text = "status | net [player] | players | say | msg | msg-party | msg-admins | kick | ban [name] | unban | bans\n" "map | maps | name | password | welcome | listed on|off\n" "voice on|off | voice-range <50-1000> | distances | crowd |off | rate | bone-scale <1-8>|off\n" - "placement everyone|admins|nobody | objects |off | clear-objects | noclip on|off | nobail on|off | boosts on|off | tuning on|off\n" + "placement everyone|admins|nobody | objects |off | object-scaling on|off | clear-objects | noclip on|off | nobail on|off | boosts on|off | tuning on|off\n" "tpall [player] | tphere | votes [map|kick|tod on|off|] | vote-cancel\n" "map-pool [add|remove |clear] | rotation [|off]\n" "park | park random | layer-sync on|off | layer default|on|off | tod \n" @@ -438,6 +438,14 @@ std::string Host::command(std::string_view line, std::uint64_t admin) { return changed(*limit ? "Each player can place up to " + std::to_string(*limit) + " objects. Admins are not limited." : std::string("Players can place as many objects as they like.")); } + if (name == "object-scaling") { + const auto value = on_off(argument); + if (!value) return std::string("object-scaling on|off (now ") + (config_.object_scaling ? "on" : "off") + ")"; + config_.object_scaling = *value; + for (auto &[id, guest] : guests_) guest->shared_from = 0; // look at every layout again + return changed(*value ? "Players can resize the objects they place." + : "Placed objects are their own size for everyone. Admins can still resize theirs."); + } if (name == "votes") { // votes | votes on|off| | votes seconds|cooldown const auto [what_text, value_text] = split(argument); diff --git a/Server/server_config.cpp b/Server/server_config.cpp index 2b06693..b89310c 100644 --- a/Server/server_config.cpp +++ b/Server/server_config.cpp @@ -103,6 +103,7 @@ Layout layout(const ServerConfig &c) { players.set("voice_range", static_cast(c.voice_range)); players.set("object_placement", placement_text(c.object_placement)); players.set("object_limit", c.object_limit); + players.set("allow_object_scaling", c.object_scaling); players.set("announce_throwdowns", c.announce_throwdowns); auto &anti_cheat = root.section("anti_cheat"); @@ -256,6 +257,7 @@ ServerConfig load_config(const std::filesystem::path &file, std::vectorcleared.contains(object.id); }); // No more of a player's objects than the server allows each of them; admins are not limited. if (!is_admin(id)) layout = limited_layout(std::move(layout), guest->shared.objects(), config_.object_limit); + // With scaling off, a player's objects reach everyone else at their own size, whatever + // that player's game made of them. + if (!config_.object_scaling && !is_admin(id)) + for (auto &object : layout) object.scale = 1.f; if (config_.activity_log) activity_.objects(id, guest->shared.layout(), layout); guest->shared.replace(layout); guest->shared_from = guest->objects.revision(); diff --git a/assets/emotes/emotes.json b/assets/emotes/emotes.json index c787de4..cafed5f 100644 --- a/assets/emotes/emotes.json +++ b/assets/emotes/emotes.json @@ -80,19 +80,9 @@ 56 ] }, - "DrClef": { - "pos": [ - 427, - 0 - ], - "size": [ - 51, - 56 - ] - }, "ECKSDEE": { "pos": [ - 479, + 427, 0 ], "size": [ @@ -102,7 +92,7 @@ }, "Fs": { "pos": [ - 537, + 485, 0 ], "size": [ @@ -112,7 +102,7 @@ }, "GayThinking": { "pos": [ - 584, + 532, 0 ], "size": [ @@ -122,7 +112,7 @@ }, "KEKW": { "pos": [ - 653, + 601, 0 ], "size": [ @@ -132,7 +122,7 @@ }, "Loot": { "pos": [ - 711, + 659, 0 ], "size": [ @@ -142,7 +132,7 @@ }, "NErd": { "pos": [ - 789, + 737, 0 ], "size": [ @@ -152,7 +142,7 @@ }, "Never": { "pos": [ - 840, + 788, 0 ], "size": [ @@ -162,7 +152,7 @@ }, "Ninetailedfox": { "pos": [ - 897, + 845, 0 ], "size": [ @@ -170,19 +160,9 @@ 56 ] }, - "NoPing": { - "pos": [ - 954, - 0 - ], - "size": [ - 61, - 56 - ] - }, "NoU": { "pos": [ - 1016, + 902, 0 ], "size": [ @@ -190,486 +170,10 @@ 56 ] }, - "PandaWeee": { - "frames": [ - { - "pos": [ - 1110, - 0 - ], - "time": 800 - }, - { - "pos": [ - 1167, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1224, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1281, - 0 - ], - "time": 40 - }, - { - "pos": [ - 1338, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1395, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1452, - 0 - ], - "time": 40 - }, - { - "pos": [ - 1509, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1566, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1623, - 0 - ], - "time": 40 - }, - { - "pos": [ - 1680, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1737, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1794, - 0 - ], - "time": 40 - }, - { - "pos": [ - 1851, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1908, - 0 - ], - "time": 20 - }, - { - "pos": [ - 1965, - 0 - ], - "time": 40 - }, - { - "pos": [ - 0, - 57 - ], - "time": 20 - }, - { - "pos": [ - 57, - 57 - ], - "time": 20 - }, - { - "pos": [ - 114, - 57 - ], - "time": 40 - }, - { - "pos": [ - 171, - 57 - ], - "time": 20 - }, - { - "pos": [ - 228, - 57 - ], - "time": 20 - }, - { - "pos": [ - 285, - 57 - ], - "time": 40 - }, - { - "pos": [ - 342, - 57 - ], - "time": 20 - }, - { - "pos": [ - 399, - 57 - ], - "time": 20 - }, - { - "pos": [ - 456, - 57 - ], - "time": 40 - }, - { - "pos": [ - 513, - 57 - ], - "time": 20 - }, - { - "pos": [ - 570, - 57 - ], - "time": 20 - }, - { - "pos": [ - 627, - 57 - ], - "time": 40 - }, - { - "pos": [ - 684, - 57 - ], - "time": 20 - }, - { - "pos": [ - 741, - 57 - ], - "time": 20 - }, - { - "pos": [ - 798, - 57 - ], - "time": 40 - }, - { - "pos": [ - 855, - 57 - ], - "time": 20 - }, - { - "pos": [ - 912, - 57 - ], - "time": 820 - }, - { - "pos": [ - 969, - 57 - ], - "time": 40 - }, - { - "pos": [ - 1026, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1083, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1140, - 57 - ], - "time": 40 - }, - { - "pos": [ - 1197, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1254, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1311, - 57 - ], - "time": 40 - }, - { - "pos": [ - 1368, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1425, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1482, - 57 - ], - "time": 40 - }, - { - "pos": [ - 1539, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1596, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1653, - 57 - ], - "time": 40 - }, - { - "pos": [ - 1710, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1767, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1824, - 57 - ], - "time": 40 - }, - { - "pos": [ - 1881, - 57 - ], - "time": 20 - }, - { - "pos": [ - 1938, - 57 - ], - "time": 20 - }, - { - "pos": [ - 0, - 114 - ], - "time": 40 - }, - { - "pos": [ - 57, - 114 - ], - "time": 20 - }, - { - "pos": [ - 114, - 114 - ], - "time": 20 - }, - { - "pos": [ - 171, - 114 - ], - "time": 40 - }, - { - "pos": [ - 228, - 114 - ], - "time": 20 - }, - { - "pos": [ - 285, - 114 - ], - "time": 20 - }, - { - "pos": [ - 342, - 114 - ], - "time": 40 - }, - { - "pos": [ - 399, - 114 - ], - "time": 20 - }, - { - "pos": [ - 456, - 114 - ], - "time": 20 - }, - { - "pos": [ - 513, - 114 - ], - "time": 40 - }, - { - "pos": [ - 570, - 114 - ], - "time": 20 - }, - { - "pos": [ - 627, - 114 - ], - "time": 20 - }, - { - "pos": [ - 684, - 114 - ], - "time": 40 - } - ], - "size": [ - 56, - 56 - ] - }, - "Peanut": { - "pos": [ - 741, - 114 - ], - "size": [ - 35, - 56 - ] - }, - "PeanutThOnk": { - "pos": [ - 777, - 114 - ], - "size": [ - 56, - 56 - ] - }, "PepeBan": { "pos": [ - 834, - 114 + 996, + 0 ], "size": [ 56, @@ -678,8 +182,8 @@ }, "PepeCool": { "pos": [ - 891, - 114 + 1053, + 0 ], "size": [ 56, @@ -688,8 +192,8 @@ }, "PepeGamer": { "pos": [ - 948, - 114 + 1110, + 0 ], "size": [ 56, @@ -698,8 +202,8 @@ }, "PepeGayPride": { "pos": [ - 1005, - 114 + 1167, + 0 ], "size": [ 56, @@ -708,8 +212,8 @@ }, "PepeHeHe": { "pos": [ - 1062, - 114 + 1224, + 0 ], "size": [ 56, @@ -718,8 +222,8 @@ }, "PepeKnife": { "pos": [ - 1119, - 114 + 1281, + 0 ], "size": [ 56, @@ -728,8 +232,8 @@ }, "PepeNo": { "pos": [ - 1176, - 114 + 1338, + 0 ], "size": [ 56, @@ -738,8 +242,8 @@ }, "PepeNoice": { "pos": [ - 1233, - 114 + 1395, + 0 ], "size": [ 56, @@ -750,155 +254,155 @@ "frames": [ { "pos": [ - 1290, - 114 + 1452, + 0 ], "time": 100 }, { "pos": [ - 1330, - 114 + 1492, + 0 ], "time": 100 }, { "pos": [ - 1370, - 114 + 1532, + 0 ], "time": 100 }, { "pos": [ - 1410, - 114 + 1572, + 0 ], "time": 100 }, { "pos": [ - 1450, - 114 + 1612, + 0 ], "time": 100 }, { "pos": [ - 1490, - 114 + 1652, + 0 ], "time": 100 }, { "pos": [ - 1530, - 114 + 1692, + 0 ], "time": 100 }, { "pos": [ - 1570, - 114 + 1732, + 0 ], "time": 100 }, { "pos": [ - 1610, - 114 + 1772, + 0 ], "time": 100 }, { "pos": [ - 1650, - 114 + 1812, + 0 ], "time": 100 }, { "pos": [ - 1690, - 114 + 1852, + 0 ], "time": 100 }, { "pos": [ - 1730, - 114 + 1892, + 0 ], "time": 100 }, { "pos": [ - 1770, - 114 + 1932, + 0 ], "time": 100 }, { "pos": [ - 1810, - 114 - ], - "time": 100 - }, - { - "pos": [ - 1850, - 114 - ], - "time": 100 - }, - { - "pos": [ - 1890, - 114 - ], - "time": 100 - }, - { - "pos": [ - 1930, - 114 - ], - "time": 100 - }, - { - "pos": [ - 1970, - 114 + 1972, + 0 ], "time": 100 }, { "pos": [ 0, - 171 + 57 ], "time": 100 }, { "pos": [ 40, - 171 + 57 ], "time": 100 }, { "pos": [ 80, - 171 + 57 ], "time": 100 }, { "pos": [ 120, - 171 + 57 + ], + "time": 100 + }, + { + "pos": [ + 160, + 57 + ], + "time": 100 + }, + { + "pos": [ + 200, + 57 + ], + "time": 100 + }, + { + "pos": [ + 240, + 57 + ], + "time": 100 + }, + { + "pos": [ + 280, + 57 ], "time": 100 } @@ -910,8 +414,8 @@ }, "PepeStupid": { "pos": [ - 160, - 171 + 320, + 57 ], "size": [ 56, @@ -920,8 +424,8 @@ }, "PepeStupidKid": { "pos": [ - 217, - 171 + 377, + 57 ], "size": [ 61, @@ -930,8 +434,8 @@ }, "PepeWhat": { "pos": [ - 279, - 171 + 439, + 57 ], "size": [ 70, @@ -940,8 +444,8 @@ }, "PepeWhatTheFUCK": { "pos": [ - 350, - 171 + 510, + 57 ], "size": [ 56, @@ -950,8 +454,8 @@ }, "PepeYes": { "pos": [ - 407, - 171 + 567, + 57 ], "size": [ 56, @@ -960,28 +464,8 @@ }, "Pepepog": { "pos": [ - 464, - 171 - ], - "size": [ - 56, - 56 - ] - }, - "Ping": { - "pos": [ - 521, - 171 - ], - "size": [ - 56, - 56 - ] - }, - "PingMeOneMoreTime": { - "pos": [ - 578, - 171 + 624, + 57 ], "size": [ 56, @@ -990,8 +474,8 @@ }, "REEE": { "pos": [ - 635, - 171 + 681, + 57 ], "size": [ 59, @@ -1002,176 +486,176 @@ "frames": [ { "pos": [ - 695, - 171 + 741, + 57 ], "time": 200 }, { "pos": [ - 752, - 171 + 798, + 57 ], "time": 70 }, { "pos": [ - 809, - 171 + 855, + 57 ], "time": 60 }, { "pos": [ - 866, - 171 + 912, + 57 ], "time": 70 }, { "pos": [ - 923, - 171 + 969, + 57 ], "time": 70 }, { "pos": [ - 980, - 171 + 1026, + 57 ], "time": 60 }, { "pos": [ - 1037, - 171 + 1083, + 57 ], "time": 70 }, { "pos": [ - 1094, - 171 + 1140, + 57 ], "time": 70 }, { "pos": [ - 1151, - 171 + 1197, + 57 ], "time": 60 }, { "pos": [ - 1208, - 171 + 1254, + 57 ], "time": 70 }, { "pos": [ - 1265, - 171 + 1311, + 57 ], "time": 70 }, { "pos": [ - 1322, - 171 + 1368, + 57 ], "time": 60 }, { "pos": [ - 1379, - 171 + 1425, + 57 ], "time": 70 }, { "pos": [ - 1436, - 171 + 1482, + 57 ], "time": 270 }, { "pos": [ - 1493, - 171 + 1539, + 57 ], "time": 60 }, { "pos": [ - 1550, - 171 + 1596, + 57 ], "time": 70 }, { "pos": [ - 1607, - 171 + 1653, + 57 ], "time": 70 }, { "pos": [ - 1664, - 171 + 1710, + 57 ], "time": 60 }, { "pos": [ - 1721, - 171 + 1767, + 57 ], "time": 70 }, { "pos": [ - 1778, - 171 + 1824, + 57 ], "time": 70 }, { "pos": [ - 1835, - 171 + 1881, + 57 ], "time": 60 }, { "pos": [ - 1892, - 171 - ], - "time": 70 - }, - { - "pos": [ - 1949, - 171 + 1938, + 57 ], "time": 70 }, { "pos": [ 0, - 228 + 114 + ], + "time": 70 + }, + { + "pos": [ + 57, + 114 ], "time": 60 }, { "pos": [ - 57, - 228 + 114, + 114 ], "time": 70 } @@ -1183,8 +667,8 @@ }, "SCP682": { "pos": [ - 114, - 228 + 171, + 114 ], "size": [ 76, @@ -1193,8 +677,8 @@ }, "SHUT": { "pos": [ - 191, - 228 + 248, + 114 ], "size": [ 86, @@ -1203,8 +687,8 @@ }, "Sad": { "pos": [ - 278, - 228 + 335, + 114 ], "size": [ 56, @@ -1213,8 +697,8 @@ }, "Soon": { "pos": [ - 335, - 228 + 392, + 114 ], "size": [ 56, @@ -1223,8 +707,8 @@ }, "StayBackMan": { "pos": [ - 392, - 228 + 449, + 114 ], "size": [ 56, @@ -1233,8 +717,8 @@ }, "ThOnking": { "pos": [ - 449, - 228 + 506, + 114 ], "size": [ 68, @@ -1243,8 +727,8 @@ }, "Tips_Fedora": { "pos": [ - 518, - 228 + 575, + 114 ], "size": [ 56, @@ -1253,8 +737,18 @@ }, "WierdChamp": { "pos": [ - 575, - 228 + 632, + 114 + ], + "size": [ + 56, + 56 + ] + }, + "amongusemoji": { + "pos": [ + 689, + 114 ], "size": [ 56, @@ -1265,29 +759,29 @@ "frames": [ { "pos": [ - 632, - 228 + 746, + 114 ], "time": 50 }, { "pos": [ - 701, - 228 + 815, + 114 ], "time": 50 }, { "pos": [ - 770, - 228 + 884, + 114 ], "time": 50 }, { "pos": [ - 839, - 228 + 953, + 114 ], "time": 50 } @@ -1301,78 +795,78 @@ "frames": [ { "pos": [ - 908, - 228 + 1022, + 114 ], "time": 80 }, { "pos": [ - 977, - 228 + 1091, + 114 ], "time": 80 }, { "pos": [ - 1046, - 228 + 1160, + 114 ], "time": 80 }, { "pos": [ - 1115, - 228 + 1229, + 114 ], "time": 80 }, { "pos": [ - 1184, - 228 + 1298, + 114 ], "time": 80 }, { "pos": [ - 1253, - 228 + 1367, + 114 ], "time": 80 }, { "pos": [ - 1322, - 228 + 1436, + 114 ], "time": 80 }, { "pos": [ - 1391, - 228 + 1505, + 114 ], "time": 80 }, { "pos": [ - 1460, - 228 + 1574, + 114 ], "time": 80 }, { "pos": [ - 1529, - 228 + 1643, + 114 ], "time": 80 }, { "pos": [ - 1598, - 228 + 1712, + 114 ], "time": 80 } @@ -1386,15 +880,15 @@ "frames": [ { "pos": [ - 1667, - 228 + 1781, + 114 ], "time": 90 }, { "pos": [ - 1724, - 228 + 1838, + 114 ], "time": 90 } @@ -1408,106 +902,106 @@ "frames": [ { "pos": [ - 1781, - 228 + 1895, + 114 ], "time": 30 }, - { - "pos": [ - 1838, - 228 - ], - "time": 20 - }, - { - "pos": [ - 1895, - 228 - ], - "time": 20 - }, { "pos": [ 1952, - 228 + 114 ], "time": 20 }, { "pos": [ 0, - 285 + 171 ], "time": 20 }, { "pos": [ 57, - 285 + 171 ], "time": 20 }, { "pos": [ 114, - 285 + 171 ], "time": 20 }, { "pos": [ 171, - 285 + 171 ], - "time": 30 + "time": 20 }, { "pos": [ 228, - 285 + 171 ], "time": 20 }, { "pos": [ 285, - 285 + 171 ], "time": 30 }, { "pos": [ 342, - 285 + 171 ], "time": 20 }, { "pos": [ 399, - 285 + 171 ], "time": 30 }, { "pos": [ 456, - 285 + 171 ], "time": 20 }, { "pos": [ 513, - 285 + 171 ], "time": 30 }, { "pos": [ 570, - 285 + 171 + ], + "time": 20 + }, + { + "pos": [ + 627, + 171 + ], + "time": 30 + }, + { + "pos": [ + 684, + 171 ], "time": 20 } @@ -1519,145 +1013,601 @@ }, "blobdance": { "frames": [ - { - "pos": [ - 627, - 285 - ], - "time": 20 - }, - { - "pos": [ - 684, - 285 - ], - "time": 30 - }, { "pos": [ 741, - 285 + 171 ], "time": 20 }, { "pos": [ 798, - 285 + 171 ], "time": 30 }, { "pos": [ 855, - 285 + 171 ], "time": 20 }, { "pos": [ 912, - 285 + 171 ], "time": 30 }, { "pos": [ 969, - 285 + 171 ], "time": 20 }, { "pos": [ 1026, - 285 + 171 ], "time": 30 }, { "pos": [ 1083, - 285 + 171 ], "time": 20 }, { "pos": [ 1140, - 285 + 171 ], "time": 30 }, { "pos": [ 1197, - 285 + 171 ], "time": 20 }, { "pos": [ 1254, - 285 + 171 ], "time": 30 }, { "pos": [ 1311, - 285 + 171 ], "time": 20 }, { "pos": [ 1368, - 285 + 171 ], "time": 30 }, { "pos": [ 1425, - 285 + 171 ], "time": 20 }, { "pos": [ 1482, - 285 + 171 ], "time": 30 }, { "pos": [ 1539, - 285 + 171 ], "time": 20 }, { "pos": [ 1596, - 285 + 171 ], "time": 30 }, { "pos": [ 1653, - 285 + 171 ], "time": 20 }, { "pos": [ 1710, - 285 + 171 ], "time": 30 + }, + { + "pos": [ + 1767, + 171 + ], + "time": 20 + }, + { + "pos": [ + 1824, + 171 + ], + "time": 30 + } + ], + "size": [ + 56, + 56 + ] + }, + "catdance": { + "frames": [ + { + "pos": [ + 1881, + 171 + ], + "time": 70 + }, + { + "pos": [ + 1938, + 171 + ], + "time": 70 + }, + { + "pos": [ + 0, + 228 + ], + "time": 140 + }, + { + "pos": [ + 57, + 228 + ], + "time": 70 + }, + { + "pos": [ + 114, + 228 + ], + "time": 70 + }, + { + "pos": [ + 171, + 228 + ], + "time": 140 + }, + { + "pos": [ + 228, + 228 + ], + "time": 70 + }, + { + "pos": [ + 285, + 228 + ], + "time": 70 + }, + { + "pos": [ + 342, + 228 + ], + "time": 140 + }, + { + "pos": [ + 399, + 228 + ], + "time": 70 + }, + { + "pos": [ + 456, + 228 + ], + "time": 70 + }, + { + "pos": [ + 513, + 228 + ], + "time": 140 + }, + { + "pos": [ + 570, + 228 + ], + "time": 70 + }, + { + "pos": [ + 627, + 228 + ], + "time": 70 + }, + { + "pos": [ + 684, + 228 + ], + "time": 140 + }, + { + "pos": [ + 741, + 228 + ], + "time": 70 + }, + { + "pos": [ + 798, + 228 + ], + "time": 70 + }, + { + "pos": [ + 855, + 228 + ], + "time": 140 + }, + { + "pos": [ + 912, + 228 + ], + "time": 70 + }, + { + "pos": [ + 969, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1026, + 228 + ], + "time": 140 + }, + { + "pos": [ + 1083, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1140, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1197, + 228 + ], + "time": 140 + }, + { + "pos": [ + 1254, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1311, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1368, + 228 + ], + "time": 140 + }, + { + "pos": [ + 1425, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1482, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1539, + 228 + ], + "time": 140 + }, + { + "pos": [ + 1596, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1653, + 228 + ], + "time": 140 + }, + { + "pos": [ + 1710, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1767, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1824, + 228 + ], + "time": 140 + }, + { + "pos": [ + 1881, + 228 + ], + "time": 70 + }, + { + "pos": [ + 1938, + 228 + ], + "time": 70 + }, + { + "pos": [ + 0, + 285 + ], + "time": 140 + }, + { + "pos": [ + 57, + 285 + ], + "time": 70 + }, + { + "pos": [ + 114, + 285 + ], + "time": 70 + }, + { + "pos": [ + 171, + 285 + ], + "time": 140 + }, + { + "pos": [ + 228, + 285 + ], + "time": 70 + }, + { + "pos": [ + 285, + 285 + ], + "time": 70 + }, + { + "pos": [ + 342, + 285 + ], + "time": 140 + }, + { + "pos": [ + 399, + 285 + ], + "time": 70 + }, + { + "pos": [ + 456, + 285 + ], + "time": 70 + }, + { + "pos": [ + 513, + 285 + ], + "time": 140 + }, + { + "pos": [ + 570, + 285 + ], + "time": 70 + }, + { + "pos": [ + 627, + 285 + ], + "time": 70 + }, + { + "pos": [ + 684, + 285 + ], + "time": 140 + }, + { + "pos": [ + 741, + 285 + ], + "time": 70 + }, + { + "pos": [ + 798, + 285 + ], + "time": 70 + }, + { + "pos": [ + 855, + 285 + ], + "time": 140 + }, + { + "pos": [ + 912, + 285 + ], + "time": 70 + }, + { + "pos": [ + 969, + 285 + ], + "time": 70 + }, + { + "pos": [ + 1026, + 285 + ], + "time": 140 + }, + { + "pos": [ + 1083, + 285 + ], + "time": 70 + }, + { + "pos": [ + 1140, + 285 + ], + "time": 70 + }, + { + "pos": [ + 1197, + 285 + ], + "time": 140 + }, + { + "pos": [ + 1254, + 285 + ], + "time": 70 + }, + { + "pos": [ + 1311, + 285 + ], + "time": 70 + }, + { + "pos": [ + 1368, + 285 + ], + "time": 140 + }, + { + "pos": [ + 1425, + 285 + ], + "time": 70 + }, + { + "pos": [ + 1482, + 285 + ], + "time": 140 } ], "size": [ @@ -1669,35 +1619,63 @@ "frames": [ { "pos": [ - 1767, + 1539, 285 ], "time": 30 }, { "pos": [ - 1823, + 1595, 285 ], "time": 20 }, { "pos": [ - 1879, + 1651, 285 ], "time": 20 }, { "pos": [ - 1935, + 1707, 285 ], "time": 20 }, { "pos": [ - 1991, + 1763, + 285 + ], + "time": 20 + }, + { + "pos": [ + 1819, + 285 + ], + "time": 20 + }, + { + "pos": [ + 1875, + 285 + ], + "time": 20 + }, + { + "pos": [ + 1931, + 285 + ], + "time": 30 + }, + { + "pos": [ + 1987, 285 ], "time": 20 @@ -1707,7 +1685,7 @@ 0, 342 ], - "time": 20 + "time": 30 }, { "pos": [ @@ -1743,34 +1721,6 @@ 342 ], "time": 20 - }, - { - "pos": [ - 336, - 342 - ], - "time": 30 - }, - { - "pos": [ - 392, - 342 - ], - "time": 20 - }, - { - "pos": [ - 448, - 342 - ], - "time": 30 - }, - { - "pos": [ - 504, - 342 - ], - "time": 20 } ], "size": [ @@ -1782,161 +1732,189 @@ "frames": [ { "pos": [ - 560, + 336, 342 ], "time": 40 }, { "pos": [ - 623, + 399, 342 ], "time": 40 }, { "pos": [ - 686, + 462, 342 ], "time": 40 }, { "pos": [ - 749, + 525, 342 ], "time": 40 }, { "pos": [ - 812, + 588, 342 ], "time": 40 }, { "pos": [ - 875, + 651, 342 ], "time": 40 }, { "pos": [ - 938, + 714, 342 ], "time": 40 }, { "pos": [ - 1001, + 777, 342 ], "time": 120 }, { "pos": [ - 1064, + 840, 342 ], "time": 40 }, { "pos": [ - 1127, + 903, 342 ], "time": 40 }, { "pos": [ - 1190, + 966, 342 ], "time": 40 }, { "pos": [ - 1253, + 1029, 342 ], "time": 40 }, { "pos": [ - 1316, + 1092, 342 ], "time": 40 }, { "pos": [ - 1379, + 1155, 342 ], "time": 40 }, { "pos": [ - 1442, + 1218, 342 ], "time": 120 }, { "pos": [ - 1505, + 1281, 342 ], "time": 40 }, { "pos": [ - 1568, + 1344, 342 ], "time": 40 }, { "pos": [ - 1631, + 1407, 342 ], "time": 40 }, { "pos": [ - 1694, + 1470, 342 ], "time": 40 }, { "pos": [ - 1757, + 1533, 342 ], "time": 40 }, { "pos": [ - 1820, + 1596, 342 ], "time": 40 }, { "pos": [ - 1883, + 1659, 342 ], "time": 120 }, { "pos": [ - 1946, + 1722, + 342 + ], + "time": 40 + }, + { + "pos": [ + 1785, + 342 + ], + "time": 40 + }, + { + "pos": [ + 1848, + 342 + ], + "time": 40 + }, + { + "pos": [ + 1911, + 342 + ], + "time": 40 + }, + { + "pos": [ + 1974, 342 ], "time": 40 @@ -1954,34 +1932,6 @@ 399 ], "time": 40 - }, - { - "pos": [ - 126, - 399 - ], - "time": 40 - }, - { - "pos": [ - 189, - 399 - ], - "time": 40 - }, - { - "pos": [ - 252, - 399 - ], - "time": 40 - }, - { - "pos": [ - 315, - 399 - ], - "time": 40 } ], "size": [ @@ -1993,140 +1943,140 @@ "frames": [ { "pos": [ - 378, + 126, 399 ], "time": 70 }, { "pos": [ - 435, + 183, 399 ], "time": 70 }, { "pos": [ - 492, + 240, 399 ], "time": 70 }, { "pos": [ - 549, + 297, 399 ], "time": 70 }, { "pos": [ - 606, + 354, 399 ], "time": 70 }, { "pos": [ - 663, + 411, 399 ], "time": 70 }, { "pos": [ - 720, + 468, 399 ], "time": 70 }, { "pos": [ - 777, + 525, 399 ], "time": 70 }, { "pos": [ - 834, + 582, 399 ], "time": 70 }, { "pos": [ - 891, + 639, 399 ], "time": 70 }, { "pos": [ - 948, + 696, 399 ], "time": 70 }, { "pos": [ - 1005, + 753, 399 ], "time": 70 }, { "pos": [ - 1062, + 810, 399 ], "time": 70 }, { "pos": [ - 1119, + 867, 399 ], "time": 70 }, { "pos": [ - 1176, + 924, 399 ], "time": 70 }, { "pos": [ - 1233, + 981, 399 ], "time": 70 }, { "pos": [ - 1290, + 1038, 399 ], "time": 70 }, { "pos": [ - 1347, + 1095, 399 ], "time": 70 }, { "pos": [ - 1404, + 1152, 399 ], "time": 70 }, { "pos": [ - 1461, + 1209, 399 ], "time": 70 @@ -2141,63 +2091,91 @@ "frames": [ { "pos": [ - 1518, + 1266, 399 ], "time": 60 }, { "pos": [ - 1574, + 1322, 399 ], "time": 90 }, { "pos": [ - 1630, + 1378, 399 ], "time": 90 }, { "pos": [ - 1686, + 1434, 399 ], "time": 90 }, { "pos": [ - 1742, + 1490, 399 ], "time": 60 }, { "pos": [ - 1798, + 1546, 399 ], "time": 90 }, { "pos": [ - 1854, + 1602, 399 ], "time": 90 }, { "pos": [ - 1910, + 1658, 399 ], "time": 90 }, { "pos": [ - 1966, + 1714, + 399 + ], + "time": 60 + }, + { + "pos": [ + 1770, + 399 + ], + "time": 90 + }, + { + "pos": [ + 1826, + 399 + ], + "time": 90 + }, + { + "pos": [ + 1882, + 399 + ], + "time": 90 + }, + { + "pos": [ + 1938, 399 ], "time": 60 @@ -2558,34 +2536,6 @@ 513 ], "time": 90 - }, - { - "pos": [ - 840, - 513 - ], - "time": 60 - }, - { - "pos": [ - 896, - 513 - ], - "time": 90 - }, - { - "pos": [ - 952, - 513 - ], - "time": 90 - }, - { - "pos": [ - 1008, - 513 - ], - "time": 90 } ], "size": [ @@ -2593,82 +2543,60 @@ 56 ] }, - "dragonno": { - "frames": [ - { - "pos": [ - 1064, - 513 - ], - "time": 100 - }, - { - "pos": [ - 1121, - 513 - ], - "time": 100 - } - ], - "size": [ - 56, - 56 - ] - }, "eyebrows": { "frames": [ { "pos": [ - 1178, + 840, 513 ], "time": 30 }, { "pos": [ - 1235, + 897, 513 ], "time": 30 }, { "pos": [ - 1292, + 954, 513 ], "time": 30 }, { "pos": [ - 1349, + 1011, 513 ], "time": 30 }, { "pos": [ - 1406, + 1068, 513 ], "time": 30 }, { "pos": [ - 1463, + 1125, 513 ], "time": 30 }, { "pos": [ - 1520, + 1182, 513 ], "time": 30 }, { "pos": [ - 1577, + 1239, 513 ], "time": 30 @@ -2683,64 +2611,64 @@ "frames": [ { "pos": [ - 1634, + 1296, 513 ], "time": 70 }, { "pos": [ - 1691, + 1353, 513 ], "time": 70 }, { "pos": [ - 1748, + 1410, 513 ], "time": 70 }, { "pos": [ - 1805, + 1467, 513 ], "time": 70 }, { "pos": [ - 1862, + 1524, 513 ], "time": 70 }, { "pos": [ - 1919, + 1581, 513 ], "time": 70 }, { "pos": [ - 1976, + 1638, 513 ], "time": 70 }, { "pos": [ - 0, - 570 + 1695, + 513 ], "time": 70 }, { "pos": [ - 57, - 570 + 1752, + 513 ], "time": 70 } @@ -2752,6 +2680,48 @@ }, "flipingpin": { "frames": [ + { + "pos": [ + 1809, + 513 + ], + "time": 60 + }, + { + "pos": [ + 1866, + 513 + ], + "time": 60 + }, + { + "pos": [ + 1923, + 513 + ], + "time": 30 + }, + { + "pos": [ + 1980, + 513 + ], + "time": 60 + }, + { + "pos": [ + 0, + 570 + ], + "time": 60 + }, + { + "pos": [ + 57, + 570 + ], + "time": 30 + }, { "pos": [ 114, @@ -3016,48 +2986,6 @@ 228, 627 ], - "time": 60 - }, - { - "pos": [ - 285, - 627 - ], - "time": 30 - }, - { - "pos": [ - 342, - 627 - ], - "time": 60 - }, - { - "pos": [ - 399, - 627 - ], - "time": 60 - }, - { - "pos": [ - 456, - 627 - ], - "time": 30 - }, - { - "pos": [ - 513, - 627 - ], - "time": 60 - }, - { - "pos": [ - 570, - 627 - ], "time": 30 } ], @@ -3068,6 +2996,48 @@ }, "gentlemen": { "frames": [ + { + "pos": [ + 285, + 627 + ], + "time": 100 + }, + { + "pos": [ + 342, + 627 + ], + "time": 100 + }, + { + "pos": [ + 399, + 627 + ], + "time": 100 + }, + { + "pos": [ + 456, + 627 + ], + "time": 100 + }, + { + "pos": [ + 513, + 627 + ], + "time": 100 + }, + { + "pos": [ + 570, + 627 + ], + "time": 100 + }, { "pos": [ 627, @@ -3108,7 +3078,7 @@ 912, 627 ], - "time": 100 + "time": 700 }, { "pos": [ @@ -3150,7 +3120,7 @@ 1254, 627 ], - "time": 700 + "time": 100 }, { "pos": [ @@ -3185,7 +3155,7 @@ 1539, 627 ], - "time": 100 + "time": 200 }, { "pos": [ @@ -3206,7 +3176,7 @@ 1710, 627 ], - "time": 100 + "time": 200 }, { "pos": [ @@ -3248,7 +3218,7 @@ 57, 684 ], - "time": 200 + "time": 100 }, { "pos": [ @@ -3269,7 +3239,7 @@ 228, 684 ], - "time": 200 + "time": 100 }, { "pos": [ @@ -3304,7 +3274,7 @@ 513, 684 ], - "time": 100 + "time": 500 }, { "pos": [ @@ -3346,7 +3316,7 @@ 855, 684 ], - "time": 500 + "time": 100 }, { "pos": [ @@ -3382,48 +3352,6 @@ 684 ], "time": 100 - }, - { - "pos": [ - 1197, - 684 - ], - "time": 100 - }, - { - "pos": [ - 1254, - 684 - ], - "time": 100 - }, - { - "pos": [ - 1311, - 684 - ], - "time": 100 - }, - { - "pos": [ - 1368, - 684 - ], - "time": 100 - }, - { - "pos": [ - 1425, - 684 - ], - "time": 100 - }, - { - "pos": [ - 1482, - 684 - ], - "time": 100 } ], "size": [ @@ -3435,35 +3363,35 @@ "frames": [ { "pos": [ - 1539, + 1197, 684 ], "time": 40 }, { "pos": [ - 1596, + 1254, 684 ], "time": 40 }, { "pos": [ - 1653, + 1311, 684 ], "time": 40 }, { "pos": [ - 1710, + 1368, 684 ], "time": 40 }, { "pos": [ - 1767, + 1425, 684 ], "time": 40 @@ -3474,79 +3402,121 @@ 56 ] }, - "ha": { - "frames": [ - { - "pos": [ - 1824, - 684 - ], - "time": 20 - }, - { - "pos": [ - 1881, - 684 - ], - "time": 20 - }, - { - "pos": [ - 1938, - 684 - ], - "time": 20 - }, - { - "pos": [ - 0, - 741 - ], - "time": 20 - }, - { - "pos": [ - 57, - 741 - ], - "time": 20 - }, - { - "pos": [ - 114, - 741 - ], - "time": 20 - }, - { - "pos": [ - 171, - 741 - ], - "time": 20 - }, - { - "pos": [ - 228, - 741 - ], - "time": 20 - }, - { - "pos": [ - 285, - 741 - ], - "time": 20 - } - ], - "size": [ - 56, - 56 - ] - }, "handsanitizepepe": { "frames": [ + { + "pos": [ + 1482, + 684 + ], + "time": 100 + }, + { + "pos": [ + 1539, + 684 + ], + "time": 100 + }, + { + "pos": [ + 1596, + 684 + ], + "time": 100 + }, + { + "pos": [ + 1653, + 684 + ], + "time": 100 + }, + { + "pos": [ + 1710, + 684 + ], + "time": 100 + }, + { + "pos": [ + 1767, + 684 + ], + "time": 100 + }, + { + "pos": [ + 1824, + 684 + ], + "time": 100 + }, + { + "pos": [ + 1881, + 684 + ], + "time": 100 + } + ], + "size": [ + 56, + 56 + ] + }, + "hellochat": { + "frames": [ + { + "pos": [ + 1938, + 684 + ], + "time": 100 + }, + { + "pos": [ + 0, + 741 + ], + "time": 100 + }, + { + "pos": [ + 57, + 741 + ], + "time": 100 + }, + { + "pos": [ + 114, + 741 + ], + "time": 100 + }, + { + "pos": [ + 171, + 741 + ], + "time": 100 + }, + { + "pos": [ + 228, + 741 + ], + "time": 100 + }, + { + "pos": [ + 285, + 741 + ], + "time": 100 + }, { "pos": [ 342, @@ -3567,14 +3537,25 @@ 741 ], "time": 100 - }, - { - "pos": [ - 513, - 741 - ], - "time": 100 - }, + } + ], + "size": [ + 56, + 56 + ] + }, + "horseeugh": { + "pos": [ + 513, + 741 + ], + "size": [ + 56, + 56 + ] + }, + "leavepepe": { + "frames": [ { "pos": [ 570, @@ -3602,15 +3583,7 @@ 741 ], "time": 100 - } - ], - "size": [ - 56, - 56 - ] - }, - "leavepepe": { - "frames": [ + }, { "pos": [ 798, @@ -3791,34 +3764,6 @@ 228, 798 ], - "time": 100 - }, - { - "pos": [ - 285, - 798 - ], - "time": 100 - }, - { - "pos": [ - 342, - 798 - ], - "time": 100 - }, - { - "pos": [ - 399, - 798 - ], - "time": 100 - }, - { - "pos": [ - 456, - 798 - ], "time": 800 } ], @@ -3831,84 +3776,84 @@ "frames": [ { "pos": [ - 513, + 285, 798 ], "time": 80 }, { "pos": [ - 565, + 337, 798 ], "time": 80 }, { "pos": [ - 617, + 389, 798 ], "time": 80 }, { "pos": [ - 669, + 441, 798 ], "time": 80 }, { "pos": [ - 721, + 493, 798 ], "time": 80 }, { "pos": [ - 773, + 545, 798 ], "time": 80 }, { "pos": [ - 825, + 597, 798 ], "time": 80 }, { "pos": [ - 877, + 649, 798 ], "time": 80 }, { "pos": [ - 929, + 701, 798 ], "time": 80 }, { "pos": [ - 981, + 753, 798 ], "time": 80 }, { "pos": [ - 1033, + 805, 798 ], "time": 80 }, { "pos": [ - 1085, + 857, 798 ], "time": 80 @@ -3921,7 +3866,7 @@ }, "otherside": { "pos": [ - 1137, + 909, 798 ], "size": [ @@ -3931,6 +3876,34 @@ }, "pepe": { "frames": [ + { + "pos": [ + 966, + 798 + ], + "time": 20 + }, + { + "pos": [ + 1023, + 798 + ], + "time": 20 + }, + { + "pos": [ + 1080, + 798 + ], + "time": 20 + }, + { + "pos": [ + 1137, + 798 + ], + "time": 20 + }, { "pos": [ 1194, @@ -4154,34 +4127,6 @@ 855 ], "time": 20 - }, - { - "pos": [ - 969, - 855 - ], - "time": 20 - }, - { - "pos": [ - 1026, - 855 - ], - "time": 20 - }, - { - "pos": [ - 1083, - 855 - ], - "time": 20 - }, - { - "pos": [ - 1140, - 855 - ], - "time": 20 } ], "size": [ @@ -4191,6 +4136,34 @@ }, "pepe2": { "frames": [ + { + "pos": [ + 969, + 855 + ], + "time": 90 + }, + { + "pos": [ + 1026, + 855 + ], + "time": 90 + }, + { + "pos": [ + 1083, + 855 + ], + "time": 90 + }, + { + "pos": [ + 1140, + 855 + ], + "time": 90 + }, { "pos": [ 1197, @@ -4218,34 +4191,6 @@ 855 ], "time": 90 - }, - { - "pos": [ - 1425, - 855 - ], - "time": 90 - }, - { - "pos": [ - 1482, - 855 - ], - "time": 90 - }, - { - "pos": [ - 1539, - 855 - ], - "time": 90 - }, - { - "pos": [ - 1596, - 855 - ], - "time": 90 } ], "size": [ @@ -4255,7 +4200,7 @@ }, "pepewelcome": { "pos": [ - 1653, + 1425, 855 ], "size": [ @@ -4267,11 +4212,39 @@ "frames": [ { "pos": [ - 1710, + 1482, 855 ], "time": 100 }, + { + "pos": [ + 1539, + 855 + ], + "time": 100 + }, + { + "pos": [ + 1596, + 855 + ], + "time": 100 + }, + { + "pos": [ + 1653, + 855 + ], + "time": 70 + }, + { + "pos": [ + 1710, + 855 + ], + "time": 70 + }, { "pos": [ 1767, @@ -4291,14 +4264,14 @@ 1881, 855 ], - "time": 70 + "time": 100 }, { "pos": [ 1938, 855 ], - "time": 70 + "time": 100 }, { "pos": [ @@ -4312,14 +4285,14 @@ 57, 912 ], - "time": 100 + "time": 70 }, { "pos": [ 114, 912 ], - "time": 100 + "time": 70 }, { "pos": [ @@ -4334,34 +4307,6 @@ 912 ], "time": 100 - }, - { - "pos": [ - 285, - 912 - ], - "time": 70 - }, - { - "pos": [ - 342, - 912 - ], - "time": 70 - }, - { - "pos": [ - 399, - 912 - ], - "time": 100 - }, - { - "pos": [ - 456, - 912 - ], - "time": 100 } ], "size": [ @@ -4371,6 +4316,34 @@ }, "pins_o": { "frames": [ + { + "pos": [ + 285, + 912 + ], + "time": 20 + }, + { + "pos": [ + 342, + 912 + ], + "time": 20 + }, + { + "pos": [ + 399, + 912 + ], + "time": 20 + }, + { + "pos": [ + 456, + 912 + ], + "time": 20 + }, { "pos": [ 513, @@ -4692,34 +4665,6 @@ 969 ], "time": 20 - }, - { - "pos": [ - 1140, - 969 - ], - "time": 20 - }, - { - "pos": [ - 1197, - 969 - ], - "time": 20 - }, - { - "pos": [ - 1254, - 969 - ], - "time": 20 - }, - { - "pos": [ - 1311, - 969 - ], - "time": 20 } ], "size": [ @@ -4729,6 +4674,34 @@ }, "pins_t": { "frames": [ + { + "pos": [ + 1140, + 969 + ], + "time": 400 + }, + { + "pos": [ + 1197, + 969 + ], + "time": 400 + }, + { + "pos": [ + 1254, + 969 + ], + "time": 400 + }, + { + "pos": [ + 1311, + 969 + ], + "time": 400 + }, { "pos": [ 1368, @@ -4749,34 +4722,6 @@ 969 ], "time": 400 - }, - { - "pos": [ - 1539, - 969 - ], - "time": 400 - }, - { - "pos": [ - 1596, - 969 - ], - "time": 400 - }, - { - "pos": [ - 1653, - 969 - ], - "time": 400 - }, - { - "pos": [ - 1710, - 969 - ], - "time": 400 } ], "size": [ @@ -4788,14 +4733,14 @@ "frames": [ { "pos": [ - 1767, + 1539, 969 ], "time": 100 }, { "pos": [ - 1827, + 1599, 969 ], "time": 100 @@ -4808,6 +4753,34 @@ }, "pog1": { "frames": [ + { + "pos": [ + 1659, + 969 + ], + "time": 70 + }, + { + "pos": [ + 1716, + 969 + ], + "time": 70 + }, + { + "pos": [ + 1773, + 969 + ], + "time": 70 + }, + { + "pos": [ + 1830, + 969 + ], + "time": 70 + }, { "pos": [ 1887, @@ -4926,34 +4899,6 @@ 1026 ], "time": 70 - }, - { - "pos": [ - 855, - 1026 - ], - "time": 70 - }, - { - "pos": [ - 912, - 1026 - ], - "time": 70 - }, - { - "pos": [ - 969, - 1026 - ], - "time": 70 - }, - { - "pos": [ - 1026, - 1026 - ], - "time": 70 } ], "size": [ @@ -4963,6 +4908,34 @@ }, "pumpkin": { "frames": [ + { + "pos": [ + 855, + 1026 + ], + "time": 250 + }, + { + "pos": [ + 912, + 1026 + ], + "time": 250 + }, + { + "pos": [ + 969, + 1026 + ], + "time": 250 + }, + { + "pos": [ + 1026, + 1026 + ], + "time": 250 + }, { "pos": [ 1083, @@ -5018,34 +4991,6 @@ 1026 ], "time": 250 - }, - { - "pos": [ - 1539, - 1026 - ], - "time": 250 - }, - { - "pos": [ - 1596, - 1026 - ], - "time": 250 - }, - { - "pos": [ - 1653, - 1026 - ], - "time": 250 - }, - { - "pos": [ - 1710, - 1026 - ], - "time": 250 } ], "size": [ @@ -5055,6 +5000,34 @@ }, "rainbow_sheep": { "frames": [ + { + "pos": [ + 1539, + 1026 + ], + "time": 80 + }, + { + "pos": [ + 1596, + 1026 + ], + "time": 80 + }, + { + "pos": [ + 1653, + 1026 + ], + "time": 80 + }, + { + "pos": [ + 1710, + 1026 + ], + "time": 80 + }, { "pos": [ 1767, @@ -5082,34 +5055,6 @@ 1026 ], "time": 80 - }, - { - "pos": [ - 0, - 1083 - ], - "time": 80 - }, - { - "pos": [ - 57, - 1083 - ], - "time": 80 - }, - { - "pos": [ - 114, - 1083 - ], - "time": 80 - }, - { - "pos": [ - 171, - 1083 - ], - "time": 80 } ], "size": [ @@ -5121,98 +5066,98 @@ "frames": [ { "pos": [ - 228, + 0, 1083 ], "time": 70 }, { "pos": [ - 296, + 68, 1083 ], "time": 70 }, { "pos": [ - 364, + 136, 1083 ], "time": 70 }, { "pos": [ - 432, + 204, 1083 ], "time": 70 }, { "pos": [ - 500, + 272, 1083 ], "time": 70 }, { "pos": [ - 568, + 340, 1083 ], "time": 70 }, { "pos": [ - 636, + 408, 1083 ], "time": 70 }, { "pos": [ - 704, + 476, 1083 ], "time": 70 }, { "pos": [ - 772, + 544, 1083 ], "time": 70 }, { "pos": [ - 840, + 612, 1083 ], "time": 70 }, { "pos": [ - 908, + 680, 1083 ], "time": 70 }, { "pos": [ - 976, + 748, 1083 ], "time": 70 }, { "pos": [ - 1044, + 816, 1083 ], "time": 70 }, { "pos": [ - 1112, + 884, 1083 ], "time": 70 @@ -5225,6 +5170,34 @@ }, "rainbowo": { "frames": [ + { + "pos": [ + 952, + 1083 + ], + "time": 40 + }, + { + "pos": [ + 1009, + 1083 + ], + "time": 40 + }, + { + "pos": [ + 1066, + 1083 + ], + "time": 40 + }, + { + "pos": [ + 1123, + 1083 + ], + "time": 40 + }, { "pos": [ 1180, @@ -5336,34 +5309,6 @@ 1140 ], "time": 40 - }, - { - "pos": [ - 57, - 1140 - ], - "time": 40 - }, - { - "pos": [ - 114, - 1140 - ], - "time": 40 - }, - { - "pos": [ - 171, - 1140 - ], - "time": 40 - }, - { - "pos": [ - 228, - 1140 - ], - "time": 40 } ], "size": [ @@ -5371,9 +5316,19 @@ 56 ] }, + "resk8": { + "pos": [ + 57, + 1140 + ], + "size": [ + 56, + 56 + ] + }, "rude": { "pos": [ - 285, + 114, 1140 ], "size": [ @@ -5385,259 +5340,280 @@ "frames": [ { "pos": [ - 342, + 171, 1140 ], "time": 60 }, { "pos": [ - 388, + 217, 1140 ], "time": 60 }, { "pos": [ - 434, + 263, 1140 ], "time": 90 }, { "pos": [ - 480, + 309, 1140 ], "time": 60 }, { "pos": [ - 526, + 355, 1140 ], "time": 60 }, { "pos": [ - 572, + 401, 1140 ], "time": 90 }, { "pos": [ - 618, + 447, 1140 ], "time": 60 }, { "pos": [ - 664, + 493, 1140 ], "time": 60 }, { "pos": [ - 710, + 539, 1140 ], "time": 90 }, { "pos": [ - 756, + 585, 1140 ], "time": 60 }, { "pos": [ - 802, + 631, 1140 ], "time": 60 }, { "pos": [ - 848, + 677, 1140 ], "time": 90 }, { "pos": [ - 894, + 723, 1140 ], "time": 60 }, { "pos": [ - 940, + 769, 1140 ], "time": 60 }, { "pos": [ - 986, + 815, 1140 ], "time": 90 }, { "pos": [ - 1032, + 861, 1140 ], "time": 60 }, { "pos": [ - 1078, + 907, 1140 ], "time": 60 }, { "pos": [ - 1124, + 953, 1140 ], "time": 90 }, { "pos": [ - 1170, + 999, 1140 ], "time": 60 }, { "pos": [ - 1216, + 1045, 1140 ], "time": 60 }, { "pos": [ - 1262, + 1091, 1140 ], "time": 90 }, { "pos": [ - 1308, + 1137, 1140 ], "time": 60 }, { "pos": [ - 1354, + 1183, 1140 ], "time": 60 }, { "pos": [ - 1400, + 1229, 1140 ], "time": 90 }, { "pos": [ - 1446, + 1275, 1140 ], "time": 60 }, { "pos": [ - 1492, + 1321, 1140 ], "time": 60 }, { "pos": [ - 1538, + 1367, 1140 ], "time": 90 }, { "pos": [ - 1584, + 1413, 1140 ], "time": 60 }, { "pos": [ - 1630, + 1459, 1140 ], "time": 60 }, { "pos": [ - 1676, + 1505, 1140 ], "time": 90 }, { "pos": [ - 1722, + 1551, 1140 ], "time": 60 }, { "pos": [ - 1768, + 1597, 1140 ], "time": 90 }, { "pos": [ - 1814, + 1643, 1140 ], "time": 60 }, { "pos": [ - 1860, + 1689, 1140 ], "time": 60 }, { "pos": [ - 1906, + 1735, 1140 ], "time": 90 }, { "pos": [ - 1952, + 1781, 1140 ], "time": 60 }, { "pos": [ - 1998, + 1827, + 1140 + ], + "time": 60 + }, + { + "pos": [ + 1873, + 1140 + ], + "time": 90 + }, + { + "pos": [ + 1919, + 1140 + ], + "time": 60 + }, + { + "pos": [ + 1965, 1140 ], "time": 60 @@ -5808,27 +5784,6 @@ 1058, 1197 ], - "time": 60 - }, - { - "pos": [ - 1104, - 1197 - ], - "time": 90 - }, - { - "pos": [ - 1150, - 1197 - ], - "time": 60 - }, - { - "pos": [ - 1196, - 1197 - ], "time": 90 } ], @@ -5841,63 +5796,63 @@ "frames": [ { "pos": [ - 1242, + 1104, 1197 ], "time": 80 }, { "pos": [ - 1299, + 1161, 1197 ], "time": 80 }, { "pos": [ - 1356, + 1218, 1197 ], "time": 80 }, { "pos": [ - 1413, + 1275, 1197 ], "time": 80 }, { "pos": [ - 1470, + 1332, 1197 ], "time": 80 }, { "pos": [ - 1527, + 1389, 1197 ], "time": 80 }, { "pos": [ - 1584, + 1446, 1197 ], "time": 80 }, { "pos": [ - 1641, + 1503, 1197 ], "time": 80 }, { "pos": [ - 1698, + 1560, 1197 ], "time": 80 @@ -5910,7 +5865,7 @@ }, "shutup": { "pos": [ - 1755, + 1617, 1197 ], "size": [ @@ -5922,36 +5877,36 @@ "frames": [ { "pos": [ - 1889, + 1751, 1197 ], "time": 130 }, { "pos": [ - 1946, + 1808, 1197 ], "time": 130 }, { "pos": [ - 0, - 1254 + 1865, + 1197 ], "time": 1130 }, { "pos": [ - 57, - 1254 + 1922, + 1197 ], "time": 130 }, { "pos": [ - 114, - 1254 + 1979, + 1197 ], "time": 1300 } @@ -5965,11 +5920,32 @@ "frames": [ { "pos": [ - 171, + 0, 1254 ], "time": 900 }, + { + "pos": [ + 57, + 1254 + ], + "time": 30 + }, + { + "pos": [ + 114, + 1254 + ], + "time": 30 + }, + { + "pos": [ + 171, + 1254 + ], + "time": 30 + }, { "pos": [ 228, @@ -5982,7 +5958,7 @@ 285, 1254 ], - "time": 30 + "time": 930 }, { "pos": [ @@ -6003,7 +5979,7 @@ 456, 1254 ], - "time": 930 + "time": 30 }, { "pos": [ @@ -6018,27 +5994,6 @@ 1254 ], "time": 30 - }, - { - "pos": [ - 627, - 1254 - ], - "time": 30 - }, - { - "pos": [ - 684, - 1254 - ], - "time": 30 - }, - { - "pos": [ - 741, - 1254 - ], - "time": 30 } ], "size": [ @@ -6050,126 +6005,147 @@ "frames": [ { "pos": [ - 798, + 627, 1254 ], "time": 30 }, { "pos": [ - 865, + 694, 1254 ], "time": 30 }, { "pos": [ - 932, + 761, 1254 ], "time": 30 }, { "pos": [ - 999, + 828, 1254 ], "time": 30 }, { "pos": [ - 1066, + 895, 1254 ], "time": 30 }, { "pos": [ - 1133, + 962, 1254 ], "time": 30 }, { "pos": [ - 1200, + 1029, 1254 ], "time": 30 }, { "pos": [ - 1267, + 1096, 1254 ], "time": 30 }, { "pos": [ - 1334, + 1163, 1254 ], "time": 30 }, { "pos": [ - 1401, + 1230, 1254 ], "time": 30 }, { "pos": [ - 1468, + 1297, 1254 ], "time": 30 }, { "pos": [ - 1535, + 1364, 1254 ], "time": 30 }, { "pos": [ - 1602, + 1431, 1254 ], "time": 30 }, { "pos": [ - 1669, + 1498, 1254 ], "time": 30 }, { "pos": [ - 1736, + 1565, 1254 ], "time": 30 }, { "pos": [ - 1803, + 1632, 1254 ], "time": 30 }, { "pos": [ - 1870, + 1699, 1254 ], "time": 30 }, { "pos": [ - 1937, + 1766, + 1254 + ], + "time": 30 + }, + { + "pos": [ + 1833, + 1254 + ], + "time": 30 + }, + { + "pos": [ + 1900, + 1254 + ], + "time": 30 + }, + { + "pos": [ + 1967, 1254 ], "time": 30 @@ -6271,27 +6247,6 @@ 1311 ], "time": 30 - }, - { - "pos": [ - 938, - 1311 - ], - "time": 30 - }, - { - "pos": [ - 1005, - 1311 - ], - "time": 30 - }, - { - "pos": [ - 1072, - 1311 - ], - "time": 30 } ], "size": [ @@ -6301,7 +6256,7 @@ }, "yes": { "pos": [ - 1139, + 938, 1311 ], "size": [ diff --git a/assets/emotes/emotes.png b/assets/emotes/emotes.png index 19ec558..696aae1 100644 Binary files a/assets/emotes/emotes.png and b/assets/emotes/emotes.png differ