From efa11b5e07bc996a686796e3d78d007bb22214dc Mon Sep 17 00:00:00 2001 From: Amaz Date: Thu, 2 Aug 2018 08:03:52 +0100 Subject: [PATCH] Add signs with visible text (#125) * Add signs with visible text * Compress signs textures (-70.6%) * Add lbm to convert old signs to new ones * More sensible approach in legacy * Check for sign text on block load Missing text can also be fixed by punching the sign. * Finally, detect sign type on placement * Neaten code up slightly --- games/default/files/default/nodes.lua | 49 ---- games/default/files/signs/depends.txt | 1 + games/default/files/signs/init.lua | 271 ++++++++++++++++++ games/default/files/signs/legacy.lua | 45 +++ .../files/signs/textures/signs_100.png | Bin 0 -> 91 bytes .../files/signs/textures/signs_101.png | Bin 0 -> 97 bytes .../files/signs/textures/signs_102.png | Bin 0 -> 91 bytes .../files/signs/textures/signs_103.png | Bin 0 -> 93 bytes .../files/signs/textures/signs_104.png | Bin 0 -> 86 bytes .../files/signs/textures/signs_105.png | Bin 0 -> 82 bytes .../files/signs/textures/signs_106.png | Bin 0 -> 89 bytes .../files/signs/textures/signs_107.png | Bin 0 -> 95 bytes .../files/signs/textures/signs_108.png | Bin 0 -> 84 bytes .../files/signs/textures/signs_109.png | Bin 0 -> 94 bytes .../files/signs/textures/signs_110.png | Bin 0 -> 84 bytes .../files/signs/textures/signs_111.png | Bin 0 -> 89 bytes .../files/signs/textures/signs_112.png | Bin 0 -> 90 bytes .../files/signs/textures/signs_113.png | Bin 0 -> 92 bytes .../files/signs/textures/signs_114.png | Bin 0 -> 92 bytes .../files/signs/textures/signs_115.png | Bin 0 -> 94 bytes .../files/signs/textures/signs_116.png | Bin 0 -> 91 bytes .../files/signs/textures/signs_117.png | Bin 0 -> 88 bytes .../files/signs/textures/signs_118.png | Bin 0 -> 93 bytes .../files/signs/textures/signs_119.png | Bin 0 -> 91 bytes .../files/signs/textures/signs_120.png | Bin 0 -> 95 bytes .../files/signs/textures/signs_121.png | Bin 0 -> 97 bytes .../files/signs/textures/signs_122.png | Bin 0 -> 92 bytes .../files/signs/textures/signs_123.png | Bin 0 -> 89 bytes .../files/signs/textures/signs_124.png | Bin 0 -> 78 bytes .../files/signs/textures/signs_125.png | Bin 0 -> 89 bytes .../files/signs/textures/signs_126.png | Bin 0 -> 86 bytes .../default/files/signs/textures/signs_32.png | Bin 0 -> 72 bytes .../default/files/signs/textures/signs_33.png | Bin 0 -> 89 bytes .../default/files/signs/textures/signs_34.png | Bin 0 -> 80 bytes .../default/files/signs/textures/signs_35.png | Bin 0 -> 88 bytes .../default/files/signs/textures/signs_36.png | Bin 0 -> 98 bytes .../default/files/signs/textures/signs_37.png | Bin 0 -> 96 bytes .../default/files/signs/textures/signs_38.png | Bin 0 -> 107 bytes .../default/files/signs/textures/signs_39.png | Bin 0 -> 80 bytes .../default/files/signs/textures/signs_40.png | Bin 0 -> 82 bytes .../default/files/signs/textures/signs_41.png | Bin 0 -> 82 bytes .../default/files/signs/textures/signs_42.png | Bin 0 -> 95 bytes .../default/files/signs/textures/signs_43.png | Bin 0 -> 87 bytes .../default/files/signs/textures/signs_44.png | Bin 0 -> 83 bytes .../default/files/signs/textures/signs_45.png | Bin 0 -> 82 bytes .../default/files/signs/textures/signs_46.png | Bin 0 -> 80 bytes .../default/files/signs/textures/signs_47.png | Bin 0 -> 86 bytes .../default/files/signs/textures/signs_48.png | Bin 0 -> 101 bytes .../default/files/signs/textures/signs_49.png | Bin 0 -> 92 bytes .../default/files/signs/textures/signs_50.png | Bin 0 -> 102 bytes .../default/files/signs/textures/signs_51.png | Bin 0 -> 101 bytes .../default/files/signs/textures/signs_52.png | Bin 0 -> 101 bytes .../default/files/signs/textures/signs_53.png | Bin 0 -> 98 bytes .../default/files/signs/textures/signs_54.png | Bin 0 -> 102 bytes .../default/files/signs/textures/signs_55.png | Bin 0 -> 90 bytes .../default/files/signs/textures/signs_56.png | Bin 0 -> 102 bytes .../default/files/signs/textures/signs_57.png | Bin 0 -> 100 bytes .../default/files/signs/textures/signs_58.png | Bin 0 -> 81 bytes .../default/files/signs/textures/signs_59.png | Bin 0 -> 82 bytes .../default/files/signs/textures/signs_60.png | Bin 0 -> 85 bytes .../default/files/signs/textures/signs_61.png | Bin 0 -> 81 bytes .../default/files/signs/textures/signs_62.png | Bin 0 -> 85 bytes .../default/files/signs/textures/signs_63.png | Bin 0 -> 102 bytes .../default/files/signs/textures/signs_64.png | Bin 0 -> 98 bytes .../default/files/signs/textures/signs_65.png | Bin 0 -> 96 bytes .../default/files/signs/textures/signs_66.png | Bin 0 -> 86 bytes .../default/files/signs/textures/signs_67.png | Bin 0 -> 96 bytes .../default/files/signs/textures/signs_68.png | Bin 0 -> 93 bytes .../default/files/signs/textures/signs_69.png | Bin 0 -> 90 bytes .../default/files/signs/textures/signs_70.png | Bin 0 -> 89 bytes .../default/files/signs/textures/signs_71.png | Bin 0 -> 102 bytes .../default/files/signs/textures/signs_72.png | Bin 0 -> 89 bytes .../default/files/signs/textures/signs_73.png | Bin 0 -> 89 bytes .../default/files/signs/textures/signs_74.png | Bin 0 -> 94 bytes .../default/files/signs/textures/signs_75.png | Bin 0 -> 106 bytes .../default/files/signs/textures/signs_76.png | Bin 0 -> 84 bytes .../default/files/signs/textures/signs_77.png | Bin 0 -> 98 bytes .../default/files/signs/textures/signs_78.png | Bin 0 -> 101 bytes .../default/files/signs/textures/signs_79.png | Bin 0 -> 90 bytes .../default/files/signs/textures/signs_80.png | Bin 0 -> 90 bytes .../default/files/signs/textures/signs_81.png | Bin 0 -> 101 bytes .../default/files/signs/textures/signs_82.png | Bin 0 -> 98 bytes .../default/files/signs/textures/signs_83.png | Bin 0 -> 104 bytes .../default/files/signs/textures/signs_84.png | Bin 0 -> 86 bytes .../default/files/signs/textures/signs_85.png | Bin 0 -> 90 bytes .../default/files/signs/textures/signs_86.png | Bin 0 -> 104 bytes .../default/files/signs/textures/signs_87.png | Bin 0 -> 94 bytes .../default/files/signs/textures/signs_88.png | Bin 0 -> 105 bytes .../default/files/signs/textures/signs_89.png | Bin 0 -> 94 bytes .../default/files/signs/textures/signs_90.png | Bin 0 -> 87 bytes .../default/files/signs/textures/signs_91.png | Bin 0 -> 98 bytes .../default/files/signs/textures/signs_92.png | Bin 0 -> 85 bytes .../default/files/signs/textures/signs_93.png | Bin 0 -> 94 bytes .../default/files/signs/textures/signs_94.png | Bin 0 -> 98 bytes .../default/files/signs/textures/signs_95.png | Bin 0 -> 81 bytes .../default/files/signs/textures/signs_96.png | Bin 0 -> 81 bytes .../default/files/signs/textures/signs_97.png | Bin 0 -> 93 bytes .../default/files/signs/textures/signs_98.png | Bin 0 -> 89 bytes .../default/files/signs/textures/signs_99.png | Bin 0 -> 87 bytes 99 files changed, 317 insertions(+), 49 deletions(-) create mode 100644 games/default/files/signs/depends.txt create mode 100644 games/default/files/signs/init.lua create mode 100644 games/default/files/signs/legacy.lua create mode 100644 games/default/files/signs/textures/signs_100.png create mode 100644 games/default/files/signs/textures/signs_101.png create mode 100644 games/default/files/signs/textures/signs_102.png create mode 100644 games/default/files/signs/textures/signs_103.png create mode 100644 games/default/files/signs/textures/signs_104.png create mode 100644 games/default/files/signs/textures/signs_105.png create mode 100644 games/default/files/signs/textures/signs_106.png create mode 100644 games/default/files/signs/textures/signs_107.png create mode 100644 games/default/files/signs/textures/signs_108.png create mode 100644 games/default/files/signs/textures/signs_109.png create mode 100644 games/default/files/signs/textures/signs_110.png create mode 100644 games/default/files/signs/textures/signs_111.png create mode 100644 games/default/files/signs/textures/signs_112.png create mode 100644 games/default/files/signs/textures/signs_113.png create mode 100644 games/default/files/signs/textures/signs_114.png create mode 100644 games/default/files/signs/textures/signs_115.png create mode 100644 games/default/files/signs/textures/signs_116.png create mode 100644 games/default/files/signs/textures/signs_117.png create mode 100644 games/default/files/signs/textures/signs_118.png create mode 100644 games/default/files/signs/textures/signs_119.png create mode 100644 games/default/files/signs/textures/signs_120.png create mode 100644 games/default/files/signs/textures/signs_121.png create mode 100644 games/default/files/signs/textures/signs_122.png create mode 100644 games/default/files/signs/textures/signs_123.png create mode 100644 games/default/files/signs/textures/signs_124.png create mode 100644 games/default/files/signs/textures/signs_125.png create mode 100644 games/default/files/signs/textures/signs_126.png create mode 100644 games/default/files/signs/textures/signs_32.png create mode 100644 games/default/files/signs/textures/signs_33.png create mode 100644 games/default/files/signs/textures/signs_34.png create mode 100644 games/default/files/signs/textures/signs_35.png create mode 100644 games/default/files/signs/textures/signs_36.png create mode 100644 games/default/files/signs/textures/signs_37.png create mode 100644 games/default/files/signs/textures/signs_38.png create mode 100644 games/default/files/signs/textures/signs_39.png create mode 100644 games/default/files/signs/textures/signs_40.png create mode 100644 games/default/files/signs/textures/signs_41.png create mode 100644 games/default/files/signs/textures/signs_42.png create mode 100644 games/default/files/signs/textures/signs_43.png create mode 100644 games/default/files/signs/textures/signs_44.png create mode 100644 games/default/files/signs/textures/signs_45.png create mode 100644 games/default/files/signs/textures/signs_46.png create mode 100644 games/default/files/signs/textures/signs_47.png create mode 100644 games/default/files/signs/textures/signs_48.png create mode 100644 games/default/files/signs/textures/signs_49.png create mode 100644 games/default/files/signs/textures/signs_50.png create mode 100644 games/default/files/signs/textures/signs_51.png create mode 100644 games/default/files/signs/textures/signs_52.png create mode 100644 games/default/files/signs/textures/signs_53.png create mode 100644 games/default/files/signs/textures/signs_54.png create mode 100644 games/default/files/signs/textures/signs_55.png create mode 100644 games/default/files/signs/textures/signs_56.png create mode 100644 games/default/files/signs/textures/signs_57.png create mode 100644 games/default/files/signs/textures/signs_58.png create mode 100644 games/default/files/signs/textures/signs_59.png create mode 100644 games/default/files/signs/textures/signs_60.png create mode 100644 games/default/files/signs/textures/signs_61.png create mode 100644 games/default/files/signs/textures/signs_62.png create mode 100644 games/default/files/signs/textures/signs_63.png create mode 100644 games/default/files/signs/textures/signs_64.png create mode 100644 games/default/files/signs/textures/signs_65.png create mode 100644 games/default/files/signs/textures/signs_66.png create mode 100644 games/default/files/signs/textures/signs_67.png create mode 100644 games/default/files/signs/textures/signs_68.png create mode 100644 games/default/files/signs/textures/signs_69.png create mode 100644 games/default/files/signs/textures/signs_70.png create mode 100644 games/default/files/signs/textures/signs_71.png create mode 100644 games/default/files/signs/textures/signs_72.png create mode 100644 games/default/files/signs/textures/signs_73.png create mode 100644 games/default/files/signs/textures/signs_74.png create mode 100644 games/default/files/signs/textures/signs_75.png create mode 100644 games/default/files/signs/textures/signs_76.png create mode 100644 games/default/files/signs/textures/signs_77.png create mode 100644 games/default/files/signs/textures/signs_78.png create mode 100644 games/default/files/signs/textures/signs_79.png create mode 100644 games/default/files/signs/textures/signs_80.png create mode 100644 games/default/files/signs/textures/signs_81.png create mode 100644 games/default/files/signs/textures/signs_82.png create mode 100644 games/default/files/signs/textures/signs_83.png create mode 100644 games/default/files/signs/textures/signs_84.png create mode 100644 games/default/files/signs/textures/signs_85.png create mode 100644 games/default/files/signs/textures/signs_86.png create mode 100644 games/default/files/signs/textures/signs_87.png create mode 100644 games/default/files/signs/textures/signs_88.png create mode 100644 games/default/files/signs/textures/signs_89.png create mode 100644 games/default/files/signs/textures/signs_90.png create mode 100644 games/default/files/signs/textures/signs_91.png create mode 100644 games/default/files/signs/textures/signs_92.png create mode 100644 games/default/files/signs/textures/signs_93.png create mode 100644 games/default/files/signs/textures/signs_94.png create mode 100644 games/default/files/signs/textures/signs_95.png create mode 100644 games/default/files/signs/textures/signs_96.png create mode 100644 games/default/files/signs/textures/signs_97.png create mode 100644 games/default/files/signs/textures/signs_98.png create mode 100644 games/default/files/signs/textures/signs_99.png diff --git a/games/default/files/default/nodes.lua b/games/default/files/default/nodes.lua index 5eaf31fbf..9ca0604ea 100644 --- a/games/default/files/default/nodes.lua +++ b/games/default/files/default/nodes.lua @@ -891,55 +891,6 @@ minetest.register_node("default:bookshelf", { sounds = default.node_sound_wood_defaults(), }) -local function register_sign(material, desc, def) - minetest.register_node("default:sign_wall_" .. material, { - description = desc .. " Sign", - drawtype = "nodebox", - tiles = {"default_sign_wall_" .. material .. ".png"}, - inventory_image = "default_sign_" .. material .. ".png", - wield_image = "default_sign_" .. material .. ".png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - is_ground_content = false, - walkable = false, - node_box = { - type = "wallmounted", - wall_top = {-0.4375, 0.4375, -0.3125, 0.4375, 0.5, 0.3125}, - wall_bottom = {-0.4375, -0.5, -0.3125, 0.4375, -0.4375, 0.3125}, - wall_side = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375}, - }, - groups = def.groups, - legacy_wallmounted = true, - sounds = def.sounds, - - on_construct = function(pos) - --local n = minetest.get_node(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", "field[text;;${text}]") - end, - on_receive_fields = function(pos, formname, fields, sender) - --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) - local player_name = sender:get_player_name() - if minetest.is_protected(pos, player_name) then - minetest.record_protection_violation(pos, player_name) - return - end - local meta = minetest.get_meta(pos) - if not fields.text then return end - minetest.log("action", (player_name or "") .. " wrote \"" .. - fields.text .. "\" to sign at " .. minetest.pos_to_string(pos)) - meta:set_string("text", fields.text) - meta:set_string("infotext", '"' .. fields.text .. '"') - end, - }) -end - -register_sign("wood", "Wooden", { - sounds = default.node_sound_wood_defaults(), - groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3} -}) - minetest.register_node("default:slimeblock", { description = "Slime Block", drawtype = "nodebox", diff --git a/games/default/files/signs/depends.txt b/games/default/files/signs/depends.txt new file mode 100644 index 000000000..4ad96d515 --- /dev/null +++ b/games/default/files/signs/depends.txt @@ -0,0 +1 @@ +default diff --git a/games/default/files/signs/init.lua b/games/default/files/signs/init.lua new file mode 100644 index 000000000..b95e1dad8 --- /dev/null +++ b/games/default/files/signs/init.lua @@ -0,0 +1,271 @@ +signs = {} + +signs.sign_positions = { + [0] = {{x = 0.0075, y = 0.18, z = -0.065}, math.pi}, + [1] = {{x = -0.065, y = 0.18, z = 0.0075}, math.pi / 2}, + [2] = {{x = 0.0075, y = 0.18, z = 0.065}, 0}, + [3] = {{x = 0.065, y = 0.18, z = 0.0075}, math.pi * 1.5}, +} + +signs.wall_sign_positions = { + [0] = {{x = 0.437, y = -0.005, z = 0.06}, math.pi / 2}, + [1] = {{x = -0.437, y = -0.005, z = -0.06}, math.pi * 1.5}, + [2] = {{x = -0.06, y = -0.005, z = 0.437}, math.pi}, + [3] = {{x = 0.06, y = -0.005, z = -0.437}, 0}, +} + +local function generate_sign_line_texture(string, texture, row) + for i = 1, 20 do + local char = string:byte(i) + if char and (char >= 32 and char <= 126) then + texture = texture .. ":" .. (i - 1) * 16 .. "," + .. row * 20 .. "=signs_" .. char .. ".png" + elseif not char then + break + end + end + return texture +end + +function signs.generate_sign_texture(string) + if not string then + return "blank.png" + end + local x_max = #string * 16 + local row = 0 + local texture = "[combine:" .. 16 * 20 .. "x100" + for i = 1, 5 do + local line_string = string:sub((20 * (i - 1)) + 1, 20 * i) + if line_string == "" then + break + end + texture = generate_sign_line_texture(line_string, texture, row) + row = row + 1 + end + return texture +end + +minetest.register_entity("signs:sign_text", { + initial_properties = { + visual = "upright_sprite", + textures = {"blank.png", "blank.png"}, + visual_size = {x = 0.7, y = 0.6}, + collisionbox = {0, 0, 0, 0, 0, 0}, + selectionbox = {0, 0, 0, 0, 0, 0}, + }, + pointable = false, + on_activate = function(self, staticdata) + self.object:set_properties({ + textures = {signs.generate_sign_texture(staticdata), "blank.png"} + }) + end, + get_staticdata = function(self) + local meta = minetest.get_meta(self.object:get_pos()) + local text = meta:get_string("sign_text") + if text and text ~= "" then + return text + end + return " " + end +}) + +local function check_text(pos, wall) + local meta = minetest.get_meta(pos) + local text = meta:get_string("sign_text") + if text and text ~= "" then + local found = false + for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local ent = obj:get_luaentity() + if ent and ent.name == "signs:sign_text" then + found = true + break + end + end + if not found then + local p2 = minetest.get_node(pos).param2 + if wall then + local obj = minetest.add_entity(vector.add(pos, + signs.wall_sign_positions[p2][1]), "signs:sign_text") + obj:set_properties({ + textures = {signs.generate_sign_texture(text), "blank.png"} + }) + obj:set_yaw(signs.wall_sign_positions[p2][2]) + else + local obj = minetest.add_entity(vector.add(pos, + signs.sign_positions[p2][1]), "signs:sign_text") + obj:set_properties({ + textures = {signs.generate_sign_texture(text), "blank.png"} + }) + obj:set_yaw(signs.sign_positions[p2][2]) + end + end + end +end + +minetest.register_lbm({ + label = "Check for sign text", + name = "signs:sign_text", + nodenames = {"signs:sign"}, + run_at_every_load = true, + action = function(pos, node) + check_text(pos, false) + end, +}) + +minetest.register_lbm({ + label = "Check for sign text (Wall)", + name = "signs:wall_sign_text", + nodenames = {"signs:wall_sign"}, + run_at_every_load = true, + action = function(pos, node) + check_text(pos, true) + end, +}) + +minetest.register_node("signs:sign", { + description = "Sign", + tiles = {"default_wood.png"}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_placement_prediction = "", + node_box = { + type = "fixed", + fixed = { + {-0.375, -0.125, -0.0625, 0.375, 0.5, 0.0625}, -- NodeBox1 + {-0.0625, -0.5, -0.0625, 0.0625, -0.125, 0.0625}, -- NodeBox2 + } + }, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type == "node" then + local undery = pointed_thing.under.y + local posy = pointed_thing.above.y + if undery > posy then -- Trying to place on celling, not allowed + return itemstack + elseif undery == posy then -- Wall sign + local count, success = minetest.item_place( + ItemStack("signs:wall_sign"), placer, pointed_thing) + if success then + return itemstack:take_item(1) + end + else -- Normal sign + return minetest.item_place(itemstack, placer, pointed_thing) + end + end + end, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", "field[text;;${sign_text}]") + end, + on_destruct = function(pos) + for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local ent = obj:get_luaentity() + if ent and ent.name == "signs:sign_text" then + obj:remove() + break + end + end + end, + on_punch = function(pos) + check_text(pos, false) + end, + on_receive_fields = function(pos, formname, fields, sender) + if not fields.text then + return + end + local p2 = minetest.get_node(pos).param2 + if p2 > 3 then + return + end + local found = false + for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local ent = obj:get_luaentity() + if ent and ent.name == "signs:sign_text" then + obj:set_properties( + {textures = {signs.generate_sign_texture(fields.text), "blank.png"} + }) + obj:set_pos(vector.add(pos, signs.sign_positions[p2][1])) + obj:set_yaw(signs.sign_positions[p2][2]) + found = true + end + end + if not found then + local obj = minetest.add_entity(vector.add(pos, + signs.sign_positions[p2][1]), "signs:sign_text") + obj:set_properties({ + textures = {signs.generate_sign_texture(fields.text), "blank.png"} + }) + obj:set_yaw(signs.sign_positions[p2][2]) + end + local meta = minetest.get_meta(pos) + meta:set_string("sign_text", fields.text) + end, + groups = {oddly_breakable_by_hand = 1, choppy = 3, attached_node = 1}, +}) + +minetest.register_node("signs:wall_sign", { + description = "Sign", + tiles = {"default_wood.png"}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "wallmounted", + node_box = { + type = "wallmounted", + wall_top = {-0.4375, 0.4375, -0.3125, 0.4375, 0.5, 0.3125}, + wall_bottom = {-0.4375, -0.5, -0.3125, 0.4375, -0.4375, 0.3125}, + wall_side = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375}, + }, + drop = "signs:sign", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", "field[text;;${sign_text}]") + end, + on_destruct = function(pos) + for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local ent = obj:get_luaentity() + if ent and ent.name == "signs:sign_text" then + obj:remove() + break + end + end + end, + on_punch = function(pos) + check_text(pos, true) + end, + on_receive_fields = function(pos, formname, fields, sender) + if not fields.text then + return + end + local p2 = minetest.get_node(pos).param2 - 2 + if p2 > 3 and p2 < 0 then + return + end + local found = false + for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local ent = obj:get_luaentity() + if ent and ent.name == "signs:sign_text" then + obj:set_properties({ + textures = {signs.generate_sign_texture(fields.text), "blank.png"} + }) + obj:set_pos(vector.add(pos, signs.wall_sign_positions[p2][1])) + obj:set_yaw(signs.wall_sign_positions[p2][2]) + found = true + end + end + if not found then + local obj = minetest.add_entity(vector.add(pos, + signs.wall_sign_positions[p2][1]), "signs:sign_text") + obj:set_properties({ + textures = {signs.generate_sign_texture(fields.text), "blank.png"} + }) + obj:set_yaw(signs.wall_sign_positions[p2][2]) + end + local meta = minetest.get_meta(pos) + meta:set_string("sign_text", fields.text) + end, + groups = {oddly_breakable_by_hand = 1, choppy = 3, + not_in_creative_inventory = 1, attached_node = 1}, +}) + +dofile(minetest.get_modpath("signs") .. "/legacy.lua") + diff --git a/games/default/files/signs/legacy.lua b/games/default/files/signs/legacy.lua new file mode 100644 index 000000000..fcdd5b92a --- /dev/null +++ b/games/default/files/signs/legacy.lua @@ -0,0 +1,45 @@ +minetest.register_node(":default:sign_wall_wood", { + tiles = {"default_wood.png"}, + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + is_ground_content = false, + walkable = false, + groups = {choppy = 2, attached_node = 1, flammable = 2, + oddly_breakable_by_hand = 3, not_in_creative_inventory = 1}, + legacy_wallmounted = true, +}) + +minetest.register_lbm({ + label = "Upgrade legacy signs", + name = "signs:sign_wall_update", + nodenames = {"default:sign_wall_wood"}, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + local text = meta:get_string("text") + local p2 = minetest.get_node(pos).param2 + if p2 <= 1 then + minetest.set_node(pos, {name = "signs:sign", param2 = 0}) + if text and text ~= "" then + local obj = minetest.add_entity(vector.add(pos, + signs.sign_positions[0][1]), "signs:sign_text") + obj:set_properties({ + textures = {signs.generate_sign_texture(text), "blank.png"} + }) + obj:set_yaw(signs.sign_positions[0][2]) + end + elseif p2 <= 5 then + p2 = p2 - 2 + minetest.set_node(pos, {name = "signs:wall_sign", param2 = p2 + 2}) + if text and text ~= "" then + local obj = minetest.add_entity(vector.add(pos, + signs.wall_sign_positions[p2][1]), "signs:sign_text") + obj:set_properties({ + textures = {signs.generate_sign_texture(text), "blank.png"} + }) + obj:set_yaw(signs.wall_sign_positions[p2][2]) + end + end + end, +}) diff --git a/games/default/files/signs/textures/signs_100.png b/games/default/files/signs/textures/signs_100.png new file mode 100644 index 0000000000000000000000000000000000000000..fe46249e5b4bd18e6eef807c716c48eba10b00d8 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDJ4%A$B+ufWQm{$_C|8g*!~=E p%gkp`WKEGU$T|?<#lDz<;l-r%nI7A=%L7$2c)I$ztaD0e0sw{O7q9>T literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_101.png b/games/default/files/signs/textures/signs_101.png new file mode 100644 index 0000000000000000000000000000000000000000..e24369ecd8122ee0a41e93e039e5f078b514811e GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDGg5-$B+ufWQipSB7cszXQnbN vb94G+V$L9Z`91?vLl)bFx1w5723!o^CIqkDazS_%P!EHrtDnm{r-UW|J)Rn) literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_102.png b/games/default/files/signs/textures/signs_102.png new file mode 100644 index 0000000000000000000000000000000000000000..a970bb60b25ac7ddbacc1752f2debd572a241670 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDJ4%A$B+ufWQi*e?CpH4nL9!) oe0YEO^DMj3a8QzMFzopr0Cb@ik^lez literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_103.png b/games/default/files/signs/textures/signs_103.png new file mode 100644 index 0000000000000000000000000000000000000000..4a616f53446f5cefcffb20b2c8cd48862dbc51d3 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDHTr_$B+ufWQipSB7fA`g6}gp qak(`ye(7foVtmW9VE=t~S)i_n%%tSGlguqw0u?fNy85}Sb4q9e0R4y+jQ{`u literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_105.png b/games/default/files/signs/textures/signs_105.png new file mode 100644 index 0000000000000000000000000000000000000000..7866daa52faa22706df526c36dbbf9dee4d83217 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDM?Qk$B+ufWQi*e?2VS~WL%tR gkab`M<6;H|v;F!P&#x)e0V-nfboFyt=akR{0M*|WhX4Qo literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_106.png b/games/default/files/signs/textures/signs_106.png new file mode 100644 index 0000000000000000000000000000000000000000..146b6bade6b724c23a293c5ffad7c819fecfcc94 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDFsg#$B+ufWC@`M_D0JVGcHav n$U3ls@&CreNx3psI|Ud%rdc1I60J}SRLkJ$>gTe~DWM4fbw(Ht literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_107.png b/games/default/files/signs/textures/signs_107.png new file mode 100644 index 0000000000000000000000000000000000000000..60849fe421c67e2d3a714bab29ab58ce005156d6 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDK$?Q$B+ufWQmXm_F8hL4HInM s@+zqKRWlc4E@@``!r$EJ&%T&}Au1+*Vc)LAzopr0MFbQr2qf` literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_108.png b/games/default/files/signs/textures/signs_108.png new file mode 100644 index 0000000000000000000000000000000000000000..110c2d1b53d47c68164b80c9a9b7b73aa5a4713b GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDQQm^$B+ufWQi>g?9F`inFSJD hBn`3-tYBQs!0@Hr`l#r$RdPUO44$rjF6*2UngGa)6omi) literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_109.png b/games/default/files/signs/textures/signs_109.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0e49d9928eea26703cd8fdf0f3b8ffaa077140 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOFDw$B+ufWC@o9kw5Ooo~&4W shat&8mbZba#BMLILqlTz0SyKQNuT(ImS&Hx0W~mqy85}Sb4q9e0N-2~;Q#;t literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_110.png b/games/default/files/signs/textures/signs_110.png new file mode 100644 index 0000000000000000000000000000000000000000..c01ce0a5cb393a8fe85a65f97d34263854befd40 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDQQm^$B+ufWQmjnkw5Bem(Mde ieL8%mA&}XPkwIy7@YO=$B+ufWQipSB7fA`g6}gp qalJ@9u!8Z6Kl>7O=$B+ufWQmjnkw5N7ISO-T pJY!QZ;B#PSUeKV&)+1%W#Sl5u{N(4OQr$r144$rjF6*2UngDfn7Rdkr literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_115.png b/games/default/files/signs/textures/signs_115.png new file mode 100644 index 0000000000000000000000000000000000000000..0c9964dda7b2e23287ffc735c165696fda187a7e GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOFDw$B+ufWQipSB7fA`f^!%g rdqu40rX@NgGYd4#OEmfL(VmN;t<`;J^IFCwKn)C@u6{1-oD!Mbkjy85}Sb4q9e0D(;x5C8xG literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_117.png b/games/default/files/signs/textures/signs_117.png new file mode 100644 index 0000000000000000000000000000000000000000..42d020172a82bb0c042cf69bdb0abf0362dd3373 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDS1y9$B+ufWQmjnkw5OoTAsA8 mW?amsAd+<0#3Vt4fg$Tj@LI0zSE7MR89ZJ6T-G@yGywogaTe(S literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_118.png b/games/default/files/signs/textures/signs_118.png new file mode 100644 index 0000000000000000000000000000000000000000..f710cd078c2accf67dc4517df6e814a27e223472 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDHTr_$B+ufWQmjnkw5OoTAr-T rJg|bXMdZ;X4{c@+>zQn9JxmPq?z->fPIkTuRL|h)>gTe~DWM4f=j|C& literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_119.png b/games/default/files/signs/textures/signs_119.png new file mode 100644 index 0000000000000000000000000000000000000000..10a6201b332133ee88cf80c506a0b9a2ba6c346e GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDJ4%A$B+ufWC@o9kw5Ooj;xaA pWIOQVi&2BYvdN5J`db4T7{2U`U${I?ToI_6!PC{xWt~$(69CDt8NdJl literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_120.png b/games/default/files/signs/textures/signs_120.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7ecfbbe04619365b96de98451913283dd85c62 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDK$?Q$B+ufWC@o9kw5OomaIr# tw9%Vm_k_-6iB1|hZN3sbHC7U=45pV=pDtvnJ`U8u;OXk;vd$@?2>=xA8R7r{ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_121.png b/games/default/files/signs/textures/signs_121.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a8404585aa8ab06b785905854fc2198ff288aa GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDGg5-$B+ufWQmjnkw5OoTApMk vA6UW2(R#yREw2L4i*$xozvXurelat=?u}mR_*cUXsE5JR)z4*}Q$iB}aIhR1 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_122.png b/games/default/files/signs/textures/signs_122.png new file mode 100644 index 0000000000000000000000000000000000000000..7ebfb403164515b4fb517af60060efc1017c9d24 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDP>O=$B+ufWQmjnkw5CJ!8r^+ q^^`?luCW3tXYh3Ob6Mw<&;$UR%otk$ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_123.png b/games/default/files/signs/textures/signs_123.png new file mode 100644 index 0000000000000000000000000000000000000000..d468654550496b362a6130a6d6aaef301fb97758 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!2%@pvP=H}DFsg##}JM4$q5VWe)O|=hBt(( n_lgEQ`*iRT_pKitbqoxvl%4k;^go*fRLkJ$>gTe~DWM4fyxkgU literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_124.png b/games/default/files/signs/textures/signs_124.png new file mode 100644 index 0000000000000000000000000000000000000000..569417e192d3f84198dab1de8654166ba79bf1b0 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!2%@pvP=H}DN#=s#}JM4$q5Vee(<+0=4xwh bYGh<{9 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_32.png b/games/default/files/signs/textures/signs_32.png new file mode 100644 index 0000000000000000000000000000000000000000..7adc289e5b90a20de967e3981f39121c7b97eb79 GIT binary patch literal 72 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!2%@pvP=H}DSl5E#}JL+u6{1-oD!M<+#(yH literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_34.png b/games/default/files/signs/textures/signs_34.png new file mode 100644 index 0000000000000000000000000000000000000000..53ee514a08a186c28c0f4349ff5ca9e7dd7ee954 GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!2%@pvP=H}DREC1#}JL+2uz&|07p22WQ%mvv4FO#q_96fFP% literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_35.png b/games/default/files/signs/textures/signs_35.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac0a9d0b9702c0441f59e133f395862810c5423 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDS1y9$B+ufWQmdo_D084?Rzopr0L}6qVgLXD literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_37.png b/games/default/files/signs/textures/signs_37.png new file mode 100644 index 0000000000000000000000000000000000000000..d927bd80eb5ea5eb06e440ffd15ef2e4fae63d14 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDRoa5$B+ufWC@c8_C{)9vU_(OFG06HH;L{o4kk0JJ$grb6c&*W$o9#d?44$rjF6*2UngG-_7`Xrd literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_38.png b/games/default/files/signs/textures/signs_38.png new file mode 100644 index 0000000000000000000000000000000000000000..5259576df3983221029a46d856088dcaaaf3ba48 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDI-r8$B+ufWQi>g?8|yMXJlj> zCl<0Tdnm`&V#q8U>omV@qr(jbH-Tf>46%>ryKOY!V)$EQe1D2i(?pOmL#@01?d5CMx&d`Cc)I$ztaD0e0szhC7y1AI literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_43.png b/games/default/files/signs/textures/signs_43.png new file mode 100644 index 0000000000000000000000000000000000000000..22c463ba8a4ac8a16475426bab3bb734e1092291 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDLGFU$B+ufzopr06KLR`2YX_ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_44.png b/games/default/files/signs/textures/signs_44.png new file mode 100644 index 0000000000000000000000000000000000000000..9253f310fcfb36248caa6ec158f9bcf76dd10279 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDJf4E$B+ufWCgCCra%L(f69*q glNkQy%2hBh$Se|nxu`fQ2B?a`)78&qol`;+0J0Mk_W%F@ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_45.png b/games/default/files/signs/textures/signs_45.png new file mode 100644 index 0000000000000000000000000000000000000000..71699763498d82e939810d21d2ad595e39b6e2a3 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDM?Qk$B+ufWC!NO2_k>gS%dQq eEMNjM85maaiNEBJ`g<3sh{4m<&t;ucLK6U>TodX5 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_46.png b/games/default/files/signs/textures/signs_46.png new file mode 100644 index 0000000000000000000000000000000000000000..454baf5d6a32eaf7d0993fd91bb5e7221de8060e GIT binary patch literal 80 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDREC1$B+ufWCaelgBlX7|0jOj dV3r`lz+h&=|MAB9po>5y44$rjF6*2UngD&96O;e| literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_47.png b/games/default/files/signs/textures/signs_47.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a02311ae2394e86358cca5841ee82d4136229d GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOpb!$B+ufWQn2&_D0JlGcGpk kzvWZUyrAJ6TMrY%oeJZ#XQzs91}bFmboFyt=akR{05kR%UH||9 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_48.png b/games/default/files/signs/textures/signs_48.png new file mode 100644 index 0000000000000000000000000000000000000000..5f2b422c7f8db088b80ffd6bb0b104108d49d373 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDIHH2$B+ufWQi>g?9F_#nFXXc zB|UaBx@ak^=__J(<5h5HTxRiO=$B+ufWQi*e?2VR9XXNPp qV#Xlc6T$4p`@^4W*&@cp3=B+@y|->+yqODB&fw|l=d#Wzp$Pz%+ZT@j literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_50.png b/games/default/files/signs/textures/signs_50.png new file mode 100644 index 0000000000000000000000000000000000000000..ddfa1662499498ffef0138941d3bbcfb505c42c5 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDP2z&$B+ufWQmdo_J%Wlu{{WI z2#`I>79eMKglQGK+C?+I!r3q7eV-&~Ng8l5$Zsw0w0+FU57fxu>FVdQ&MBb@0Ic^K A=Kufz literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_51.png b/games/default/files/signs/textures/signs_51.png new file mode 100644 index 0000000000000000000000000000000000000000..c5787dabb85082852b5e356935422202b601da90 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDIHH2$B+ufWQmdo_L?)2m`{{T yu1q*_yQecVm*MYWmf)s)YzhpKo->M=-541@s3yKEZZT@u;Py+(fp6Izh9pM4-owWl0vQ-iHm1)EgTe~DWM4ft!^AC literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_53.png b/games/default/files/signs/textures/signs_53.png new file mode 100644 index 0000000000000000000000000000000000000000..5f376f190ff89ed2bfc7f765a147aaf236f6b3f6 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDNRoo$B+ufWC@c8_L?)ku?4(o wT`0^Zvb*GmM1!VdKC?i>nv5lP8Uh&@WKU#IEiKSe18QRMboFyt=akR{09phZqyPW_ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_54.png b/games/default/files/signs/textures/signs_54.png new file mode 100644 index 0000000000000000000000000000000000000000..f754f1e1ac5588d0e7cf68c5e45b3cfaf1fd660b GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDP2z&$B+ufWQi>g?CpHCnGH;X z-jsBiUb@Z@Wbl?(;o8!}#~D}@v;{QH6GRvoE+5FA%D->b6re^1Pgg&ebxsLQ0Jc~g A+W-In literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_55.png b/games/default/files/signs/textures/signs_55.png new file mode 100644 index 0000000000000000000000000000000000000000..78decb5753bf1a6388b57cf193e789e768d7a865 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDMe2g$B+ufWC@c8_Lei+*d8!! oF=Ajmam`~V<6^UZDFZHsS@FSZeQw{_094H2>FVdQ&MBb@0B+ET_i>1?NR{DAU1ZrgPboFyt=akR{0BeF8 ABme*a literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_57.png b/games/default/files/signs/textures/signs_57.png new file mode 100644 index 0000000000000000000000000000000000000000..7c66b729128de280f2217d49f9ffaaeb577c30f3 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDQ!;|$B+ufWQmdo_J%Wlu{{WI y2)Jut(D1}z$yUY|#=pD^_Mc5*m3qq7!^FT`n>{sYgBdeW8-u5-pUXO@geCyOP8>D> literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_58.png b/games/default/files/signs/textures/signs_58.png new file mode 100644 index 0000000000000000000000000000000000000000..8328829adb08c4535ae83e8fbb53b7f5d488930a GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDG5&($B+ufbP0l+XkKIina6 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_61.png b/games/default/files/signs/textures/signs_61.png new file mode 100644 index 0000000000000000000000000000000000000000..9a41f925113e544c50cb247feb2d83e37bbccff1 GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDG5&($B+ufWQmjnkw5CJ!8aQM e4WzgiGcagP*1s5aZR>rY8U{~SKbLh*2~7ZsrW3#b literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_62.png b/games/default/files/signs/textures/signs_62.png new file mode 100644 index 0000000000000000000000000000000000000000..196885ed867a87c68856604bb2af3223c5b1205e GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDH%@}$B+ufWQmdo_D0KYG%S2G jDRBCQ`_BSryE8I8-D-aFp@OgpP#uG(tDnm{r-UW|UPBne literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_63.png b/games/default/files/signs/textures/signs_63.png new file mode 100644 index 0000000000000000000000000000000000000000..e44436b4eb3c0861c1bc6fa12889c7ef197cc3e4 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDP2z&$B+ufWQmdo_J%Xm*#4-q zU%tQ~)9{LIf~>WOyZ+6Wjh|RdT^RlzP7q;W*y$0!uv_BS3ZO;?Pgg&ebxsLQ0Lm7M0drb1r-^5z9ME83usYdXdupNl6`&>tPgg&ebxsLQ0B#N&wEzGB literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_65.png b/games/default/files/signs/textures/signs_65.png new file mode 100644 index 0000000000000000000000000000000000000000..68d5673b49f355efdb607633b7e737cd4d9af848 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDRoa5$B+ufWQi>g?9F_#nGH-I ui7vmxa7c=Cm2@4Oz%di!1QRhgMh40G<()^)=so~yVeoYIb6Mw<&;$VK?HH^8 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_66.png b/games/default/files/signs/textures/signs_66.png new file mode 100644 index 0000000000000000000000000000000000000000..4a50c86c06e31a9b574408c23cd82070a0befac8 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOpb!$B+ufWC@c8_L?)ku?f7s jl$d%TL#OB1Aq@tG(|qlfUH%?cK!psRu6{1-oD!Mg?CW|Md`z~@ u++ZUtn{$kX<#56khN|Vw4=0GbF)~cLp!~jG>zFoB3xlVtpUXO@geCwq?Hbbn literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_68.png b/games/default/files/signs/textures/signs_68.png new file mode 100644 index 0000000000000000000000000000000000000000..e84aa9528d2fa2eb6e8bd62760c04a4c63296574 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDHTr_$B+ufWC@c8_J%X+*aRjm rpUuc}_2SuvK;{?o`CiNycVlGuQ&ir`rfKK{RL|h)>gTe~DWM4f&BYkH literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_69.png b/games/default/files/signs/textures/signs_69.png new file mode 100644 index 0000000000000000000000000000000000000000..319a309a847cb880f8c29b77be292a8ef25d9931 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDMe2g$B+ufWC@c8_Lei+*aSG+ o)-$#kp5>M3W&QQMHIRYfNpk+g(+`3pfr=SCUHx3vIVCg!0BPD6-~a#s literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_70.png b/games/default/files/signs/textures/signs_70.png new file mode 100644 index 0000000000000000000000000000000000000000..63946c0e0051f09d29544558c37d3bf0ee2b107a GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDFsg#$B+ufWC@c8_Lei+*aSG+ n)-$#kp5g>_=s zx$#mYTPA~yDxjYg-_84$6sBg}mdhNtFaiB&9Pgg&ebxsLQ0F6c) A2><{9 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_72.png b/games/default/files/signs/textures/signs_72.png new file mode 100644 index 0000000000000000000000000000000000000000..a0aa97b1147156234e67fd8d171ee1a9e4f97c27 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDFsg#$B+ufWC@c8_C{)9vR`>6 mOdAZA&1U?<-yF#7#>f!4sJgXVv)UV|mci52&t;ucLK6TZgB3>r literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_73.png b/games/default/files/signs/textures/signs_73.png new file mode 100644 index 0000000000000000000000000000000000000000..051b803065888ba3889905bf77b17cca5ea3e235 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDFsg#$B+ufWQmXm_L?((u?d(> mDAG6Vkuu0SkZ_KBF#|)AO!&$JdA<@rwG5uFelF{r5}E)){1zJk literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_74.png b/games/default/files/signs/textures/signs_74.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc4c9e717a5bc5902cd93e580ad86b182b4b538 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOFDw$B+ufWQi{i?CpHAnGG1< s@<^C61SdU_Y*^W_M8#((<6;Jel^)Sc*RuYJ2WnvOboFyt=akR{0LJndqW}N^ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_75.png b/games/default/files/signs/textures/signs_75.png new file mode 100644 index 0000000000000000000000000000000000000000..561c556666d8955bc0cc7131b57d3bec161b4688 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDML>e$B+ufWC@c8_C{)9vS)b} zH2kfZIXW-jWB4QWGM|Cz@_7a)w#!!;4zUI19nfH4DEd>~8ad4`0H~S4)78&qol`;+ E00Rpg-T(jq literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_76.png b/games/default/files/signs/textures/signs_76.png new file mode 100644 index 0000000000000000000000000000000000000000..4e339fc5c569041413efa392c116145899e488cb GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDQQm^$B+ufWQmXm_C|8130E2d hnL7@Lm?VfWFsv|h-+8xt-VLBK22WQ%mvv4FO#s*y6;J>G literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_77.png b/games/default/files/signs/textures/signs_77.png new file mode 100644 index 0000000000000000000000000000000000000000..f6bb567f0e003ab774b691815239909b51c4c26b GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDNRoo$B+ufWC@c8_C{)9vTJ!9 w5=ttoq#F(>Ut-X3cz*dd1B=8rwjL%1W&O#yZHJ$11ZraNboFyt=akR{04li}TmS$7 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_78.png b/games/default/files/signs/textures/signs_78.png new file mode 100644 index 0000000000000000000000000000000000000000..8a003b2fd947e66387a2fba59a5e62296dee56ca GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDIHH2$B+ufWC@c8_C{)9vTJ!9 z9yFRUG_v1fU|F`9F~Hygn*zgJ-Uan>608jW=1k5#*#Gya|ZI&k25Yaj!IopO2SYmK8XfQlJBUHx3vIVCg!0DiC-O#lD@ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_80.png b/games/default/files/signs/textures/signs_80.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7b060cc600a8a5900ea7df9de094393eaebbcd GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDMe2g$B+ufWC@c8_L?)ku?f5l oI>jqtns8z%GmAtSTMrXMRC)fyuos7q0~IrPy85}Sb4q9e0A}77WdHyG literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_81.png b/games/default/files/signs/textures/signs_81.png new file mode 100644 index 0000000000000000000000000000000000000000..b7bf660cef644a4926737e895a61659f5dfbf073 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDIHH2$B+ufWQmdo_J%Wlu{{WI z2#|ftD`CnIJm(#oz?9|l7*i}H4=%sc5Xiug@wLA3m*w;XpgsmqS3j3^P6#tjn=nwT~G+i1YWuv)LZl3{7s8lWZyPgg&ebxsLQ0Ccz;y8r+H literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_83.png b/games/default/files/signs/textures/signs_83.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1875bbd1f793f8c68cbbc2755318c1a8a68fcd GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDSb~D$B+ufWQmdo_I5tn%m$`H zla}viRQWyEZDYd$6C(!U3%Y9zRA1yAIB@)s1_Og_YWmEGXN?PhS{XcD{an^LB{Ts5 D2P+;7 literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_84.png b/games/default/files/signs/textures/signs_84.png new file mode 100644 index 0000000000000000000000000000000000000000..7d93dcb369054cba939e7213e82c9df20b1e1411 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOpb!$B+ufWQmXm_L?(_m^m1o jq}t{(E@tbIGT>sc)o|a*%y+5=sF1 mTxkeo7U1eQ!r`!!aWPO!QgQE-D^EZ=89ZJ6T-G@yGywo_As2-J literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_86.png b/games/default/files/signs/textures/signs_86.png new file mode 100644 index 0000000000000000000000000000000000000000..5165e051b3e80f05e30f63ffd474b2cbf5b09dd2 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDSb~D$B+ufWC@c8_C{)9vTu1L zOc@$4KFv&L&}(fm3A)R$Xs=5)vj9V^axaerD}zQ;_SFBJ>L-C(89ZJ6T-G@yGywpk Cx*A^q literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_87.png b/games/default/files/signs/textures/signs_87.png new file mode 100644 index 0000000000000000000000000000000000000000..1d92203505165265958ec98a99cdffab26a71747 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOFDw$B+ufWC@c8_C{)9cRdUk sjxC?g*z&Q%gn{ct4#VHzM;Z(awNj7*ZD)wG6Z*Wl$&O30R{osM+%?BrmyD>6MSkPSiPEF<>P%ne0tDnm{r-UW| DDS#fU literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_89.png b/games/default/files/signs/textures/signs_89.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc0fbcd88ba2c23c97abe4de98d84c46ee9595a GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOFDw$B+ufWQmXm_C{(d{=Up^ ryb4PMrn^N+I@~yEVwiBHA&`M#wMzI(wt^T7paup{S3j3^P6m^)Za kj1#Ur3!Kd!94EobptPj8_qY#d7*HjHr>mdKI;Vst00t-&@Bjb+ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_91.png b/games/default/files/signs/textures/signs_91.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0a330047c8553dd58665b755c02b5ef2ff8b01 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDNRoo$B+ufWQi#c^acJOZ;pJC w%dm`Xmh^}G7t$Z*zhdi=YRFWW$}7Rju$aaD+0M`}!az+7p00i_>zopr0H|mjo&W#< literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_92.png b/games/default/files/signs/textures/signs_92.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6a0a0c7259b9909655c1533f5f02186a9de434 GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDH%@}$B+ufWC@c8_D0KYGzdPL j6ga(SSIa539wr7^3*)m_M8Bp2)iHRw`njxgN@xNABf}Q{ literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_93.png b/games/default/files/signs/textures/signs_93.png new file mode 100644 index 0000000000000000000000000000000000000000..ef71c643f487ff02007b4af25dcfe3a3392c41cb GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDOFDw$B+ufWQi#c?CpHAnGFsu sFlm^Wc!gov!h8l}PpKCP2Q(NMZnn6ex%l*7CQt)|r>mdKI;Vst00TW6761SM literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_94.png b/games/default/files/signs/textures/signs_94.png new file mode 100644 index 0000000000000000000000000000000000000000..367984cb357517b7ad932ed3d15513948ea716e7 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDNRoo$B+ufWQi{i>_sl$Z}@-1 w;4JTfD;^PZikLaH71s0>F|*0_GzBs+%rn)$sIt@72B?X_)78&qol`;+0HV|zm;e9( literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_95.png b/games/default/files/signs/textures/signs_95.png new file mode 100644 index 0000000000000000000000000000000000000000..f7746c55c27a1fb22a6400c9a0ccd083ad5555c1 GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDG5&($B+ufWCy0j2_ijBfgk1z e`Rrt5=3|iak$=eliDLp#4TGnvpUXO@geCxhSrVlH literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_96.png b/games/default/files/signs/textures/signs_96.png new file mode 100644 index 0000000000000000000000000000000000000000..6604c71de87986dc4744eb6f3d479486e3f06ace GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDG5&($B+ufWQi>g?2Y6mvR$~Z ex;R0khlxR$Rs5x@arru+8U{~SKbLh*2~7Zy<`WVC literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_97.png b/games/default/files/signs/textures/signs_97.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a4f380269b4925f4ccbcaab7bbdfa9f8a0aa3c GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDHTr_$B+ufWQmjnkw5Be!8r_9 qV>~u8HXG=0Xe!)nSSZ4_n1SJSXzbP0l+XkKS%??L literal 0 HcmV?d00001 diff --git a/games/default/files/signs/textures/signs_99.png b/games/default/files/signs/textures/signs_99.png new file mode 100644 index 0000000000000000000000000000000000000000..a5cf638b11e84a648f975abb48ca7c464d669171 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDLGFU$B+ufWQipSB7fA`f^!%W ld#6~}UTIi3h0l$V!RnFy!QZQDOn@pGJYD@<);T3K0RSvT7TEv* literal 0 HcmV?d00001