1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2025-06-28 06:11:47 +02:00

Change mobs api and add new mobs from (water_mobs, pmobs, kpgmobs, mob_horse)

This commit is contained in:
sys4
2017-11-11 17:37:21 +01:00
parent d3a7d82233
commit 6241f4ecaf
491 changed files with 74864 additions and 12913 deletions

View File

@ -0,0 +1,4 @@
A few water critters ported from other mob frameworks to "Mobs-Redo".
License information for the models and textures can be found inside
the respective folders.

View File

@ -0,0 +1,4 @@
Licenses
Model/Textures: GPL v3
Author: Team NPX

View File

@ -0,0 +1,21 @@
-- SETTINGS
ENABLE_WALKERS = true
-- these guys are spawned on land near water, they do not
-- float so they will not attack you if they happen to
-- stumble into the water (L.O.S. limitation*)
ENABLE_FLOATERS = true
-- these guys are spawned in shallow water, they float so they
-- will follow you onto land to take a bite out of you
ENABLE_SWIMMERS = true
-- these guys are spawned in shallow water, they do not float so
-- they will only attack if you attack first (L.O.S. limitation*)
-- * note: Mobs not attacking while underwater is a limitation of
-- the MineTest LineOfSight function used in the "mobs_redo"
-- mod to check if there is anything to attack. Seems that
-- mobs can't see through water.

View File

@ -0,0 +1,2 @@
default
mobs

View File

@ -0,0 +1,135 @@
if mobs.mod and mobs.mod == "redo" then
-- local variables
local l_skins = {
{"croco.png"},
{"croco2.png"}
}
local l_anims = {
speed_normal = 24, speed_run = 24,
stand_start = 0, stand_end = 80,
walk_start = 81, walk_end = 170,
run_start = 81, run_end = 170,
punch_start = 205, punch_end = 220
}
local l_model = "crocodile.x"
local l_sounds = {random = "croco"}
local l_egg_texture = "default_grass.png"
local l_spawn_chance = 60000
-- load settings
dofile(minetest.get_modpath("mobs_crocs").."/SETTINGS.txt")
if not ENABLE_WALKERS then
l_spawn_chance = l_spawn_chance - 20000
end
if not ENABLE_FLOATERS then
l_spawn_chance = l_spawn_chance - 20000
end
if not ENABLE_SWIMMERS then
l_spawn_chance = l_spawn_chance - 20000
end
-- no float
if ENABLE_WALKERS then
mobs:register_mob("mobs_crocs:crocodile", {
type = "monster",
attack_type = "dogfight",
damage = 8,
reach = 3,
hp_min = 20,
hp_max = 25,
armor = 200,
collisionbox = {-0.85, -0.30, -0.85, 0.85, 1.5, 0.85},
drawtype = "front",
visual = "mesh",
mesh = l_model,
textures = l_skins,
visual_size = {x=4, y=4},
sounds = l_sounds,
fly = false,
floats = 0,
stepheight = 1,
view_range = 10,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
animation = l_anims
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_crocs:crocodile",
{"default:dirt_with_grass","default:dirt","default:jungle_grass","default:sand"},
{"default:water_flowing","default:water_source","default:papyrus","dryplants:juncus","dryplants:reedmace"},
-1, 18, 30, l_spawn_chance, 1, 0, 31000)
mobs:register_egg("mobs_crocs:crocodile", "Crocodile", l_egg_texture, 1)
end
-- float
if ENABLE_FLOATERS then
mobs:register_mob("mobs_crocs:crocodile_float", {
type = "monster",
attack_type = "dogfight",
damage = 8,
reach = 2,
hp_min = 20,
hp_max = 25,
armor = 200,
collisionbox = {-0.638, -0.23, -0.638, 0.638, 1.13, 0.638},
drawtype = "front",
visual = "mesh",
mesh = l_model,
textures = l_skins,
visual_size = {x=3, y=3},
sounds = l_sounds,
fly = false,
stepheight = 1,
view_range = 10,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
animation = l_anims
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_crocs:crocodile_float",
{"default:water_flowing","default:water_source"},
{"default:dirt_with_grass","default:jungle_grass","default:sand","default:dirt","default:papyrus","group:seaplants","dryplants:juncus","dryplants:reedmace"},
-1, 18, 30, l_spawn_chance, 1, -3, 31000)
mobs:register_egg("mobs_crocs:crocodile_float", "Crocodile (floater)", l_egg_texture, 1)
end
-- swim
if ENABLE_SWIMMERS then
mobs:register_mob("mobs_crocs:crocodile_swim", {
type = "monster",
attack_type = "dogfight",
damage = 8,
reach = 1,
hp_min = 20,
hp_max = 25,
armor = 200,
collisionbox = {-0.425, -0.15, -0.425, 0.425, 0.75, 0.425},
drawtype = "front",
visual = "mesh",
mesh = l_model,
textures = l_skins,
visual_size = {x=2, y=2},
sounds = l_sounds,
fly = true,
fly_in = "default:water_source",
fall_speed = -1,
floats = 0,
view_range = 10,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
animation = l_anims
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_crocs:crocodile_swim",
{"default:water_flowing","default:water_source"},
{"default:sand","default:dirt","group:seaplants"},
-1, 18, 30, l_spawn_chance, 1, -8, 31000)
mobs:register_egg("mobs_crocs:crocodile_swim", "Crocodile (swimmer)", l_egg_texture, 1)
end
end

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -0,0 +1,6 @@
Licenses
Model/Textures: CC-BY-SA 3.0
Author: Sapier
URL: http://creativecommons.org/licenses/by-sa/3.0/de/legalcode

View File

@ -0,0 +1,2 @@
default
mobs

View File

@ -0,0 +1,104 @@
if mobs.mod and mobs.mod == "redo" then
local SPRITE_VERSION = false -- set to true to use upright sprites instead of meshes
-- local variables
local l_spawn_in = {"default:water_source", "default:water_flowing", "default:river_water_source", "default:river_water_flowing"}
local l_spawn_near = {"default:sand","default:dirt","group:seaplants","group:seacoral"}
local l_spawn_chance = 10000
local l_cc_hand = 25
local l_cc_net = 80
local l_water_level = minetest.setting_get("water_level") - 1
local l_anims = {
speed_normal = 24, speed_run = 24,
stand_start = 1, stand_end = 80,
walk_start = 81, walk_end = 155,
run_start = 81, run_end = 155
}
local l_visual = "mesh"
local l_visual_size = {x=.75, y=.75}
local l_clown_mesh = "animal_clownfish.b3d"
local l_trop_mesh = "fish_blue_white.b3d"
local l_clown_textures = {
{"clownfish.png"},
{"clownfish2.png"}
}
local l_trop_textures = {
{"fish.png"},
{"fish2.png"},
{"fish3.png"}
}
if SPRITE_VERSION then
l_visual = "upright_sprite"
l_visual_size = {x=.5, y=.5}
l_clown_mesh = nil
l_trop_mesh = nil
l_clown_textures = {{"animal_clownfish_clownfish_item.png"}}
l_trop_textures = {{"animal_fish_blue_white_fish_blue_white_item.png"}}
end
-- Clownfish
mobs:register_mob("mobs_fish:clownfish", {
type = "animal",
passive = true,
hp_min = 1,
hp_max = 4,
armor = 100,
collisionbox = {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25},
rotate = 270,
visual = l_visual,
mesh = l_clown_mesh,
textures = l_clown_textures,
visual_size = l_visual_size,
makes_footstep_sound = false,
stepheight = 0.1,
fly = true,
fly_in = "default:water_source",
fall_speed = 0,
view_range = 8,
water_damage = 0,
lava_damage = 5,
light_damage = 0,
animation = l_anims,
on_rightclick = function(self, clicker)
mobs:capture_mob(self, clicker, l_cc_hand, l_cc_net, 0, true, nil)
end
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_fish:clownfish", l_spawn_in, l_spawn_near, 5, 20, 30, l_spawn_chance, 1, -31000, l_water_level)
mobs:register_egg("mobs_fish:clownfish", "Clownfish", "animal_clownfish_clownfish_item.png", 0)
-- Tropical fish
mobs:register_mob("mobs_fish:tropical", {
type = "animal",
passive = true,
hp_min = 1,
hp_max = 4,
armor = 100,
collisionbox = {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25},
rotate = 270,
visual = l_visual,
mesh = l_trop_mesh,
textures = l_trop_textures,
visual_size = l_visual_size,
makes_footstep_sound = false,
stepheight = 0.1,
fly = true,
fly_in = "default:water_source",
fall_speed = 0,
view_range = 8,
water_damage = 0,
lava_damage = 5,
light_damage = 0,
animation = l_anims,
on_rightclick = function(self, clicker)
mobs:capture_mob(self, clicker, l_cc_hand, l_cc_net, 0, true, nil)
end
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_fish:tropical", l_spawn_in, l_spawn_near, 5, 20, 30, l_spawn_chance, 1, -31000, l_water_level)
mobs:register_egg("mobs_fish:tropical", "Tropical fish", "animal_fish_blue_white_fish_blue_white_item.png", 0)
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,21 @@
Licenses
Model/Textures: WTFPL
Author: blert2112
***************
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

View File

@ -0,0 +1,3 @@
default
mobs

View File

@ -0,0 +1,40 @@
if mobs.mod and mobs.mod == "redo" then
mobs:register_mob("mobs_jellyfish:jellyfish", {
type = "animal",
attack_type = "dogfight",
damage = 5,
reach = 1,
hp_min = 5,
hp_max = 10,
armor = 100,
collisionbox = {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25},
visual = "mesh",
mesh = "jellyfish.b3d",
textures = {
{"jellyfish.png"}
},
makes_footstep_sound = false,
walk_velocity = 0.1,
run_velocity = 0.1,
fly = true,
fly_in = "default:water_source",
fall_speed = 0,
view_range = 10,
water_damage = 0,
lava_damage = 5,
light_damage = 0,
on_rightclick = function(self, clicker)
mobs:capture_mob(self, clicker, 80, 100, 0, true, nil)
end
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_jellyfish:jellyfish",
{"default:water_source"},
{"default:water_flowing","default:water_source"},
5, 20, 30, 10000, 1, -31000, 0)
mobs:register_egg("mobs_jellyfish:jellyfish", "Jellyfish", "jellyfish_inv.png", 0)
end

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,7 @@
Licenses
Model/Textures: CC-BY-SA 3.0
http://creativecommons.org/licenses/by-sa/3.0/de/legalcode
Author: Sapier
texture modification by: blert2112

View File

@ -0,0 +1,8 @@
-- SETTINGS
ENABLE_SHARK_LARGE = true
ENABLE_SHARK_MEDIUM = true
ENABLE_SHARK_SMALL = true
HELP_WITH_EXPERIMENT = false

View File

@ -0,0 +1,2 @@
default
mobs

View File

@ -0,0 +1,157 @@
if mobs.mod and mobs.mod == "redo" then
-- local variables
local l_colors = {
"#604000:175", --brown
"#ffffff:150", --white
"#404040:150", --dark_grey
"#a0a0a0:150" --grey
}
local l_skins = {
{"(shark_first.png^[colorize:"..l_colors[3]..")^(shark_second.png^[colorize:"..l_colors[4]..")^shark_third.png"},
{"(shark_first.png^[colorize:"..l_colors[1]..")^(shark_second.png^[colorize:"..l_colors[2]..")^shark_third.png"},
{"(shark_first.png^[colorize:"..l_colors[4]..")^(shark_second.png^[colorize:"..l_colors[2]..")^shark_third.png"}
}
local l_anims = {
speed_normal = 24, speed_run = 24,
stand_start = 1, stand_end = 80,
walk_start = 80, walk_end = 160,
run_start = 80, run_end = 160
}
local l_model = "mob_shark.b3d"
local l_egg_texture = "mob_shark_shark_item.png"
local l_spawn_in = {"default:water_flowing","default:water_source"}
local l_spawn_near = {"default:water_flowing","default:water_source","seawrecks:woodship","seawrecks:uboot"}
local l_spawn_chance = 60000
-- load settings
dofile(minetest.get_modpath("mobs_sharks").."/SETTINGS.txt")
if not ENABLE_SHARK_LARGE then
l_spawn_chance = l_spawn_chance - 20000
end
if not ENABLE_SHARK_MEDIUM then
l_spawn_chance = l_spawn_chance - 20000
end
if not ENABLE_SHARK_SMALL then
l_spawn_chance = l_spawn_chance - 20000
end
-- large
if ENABLE_SHARK_LARGE then
mobs:register_mob("mobs_sharks:shark_lg", {
type = "monster",
attack_type = "dogfight",
damage = 10,
reach = 3,
hp_min = 20,
hp_max = 25,
armor = 150,
collisionbox = {-0.75, -0.5, -0.75, 0.75, 0.5, 0.75},
visual = "mesh",
mesh = l_model,
textures = l_skins,
makes_footstep_sound = false,
walk_velocity = 4,
run_velocity = 6,
fly = true,
fly_in = "default:water_source",
fall_speed = 0,
rotate = 270,
view_range = 10,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
animation = l_anims,
do_custom = function(self)
if HELP_WITH_EXPERIMENT then
local p = self.object:getpos()
local a = self.object:getvelocity()
if p.y > 0 and a.y > 0 then
a.y = -1
else
local r = math.random(100)
if r >= 1 and r <=25 then a.y = 0.25
elseif r > 25 and r <= 50 then a.y = 0
elseif r > 50 and r <= 75 then a.y = -0.25
end
end
self.object:setvelocity(a)
end
end
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_sharks:shark_lg", l_spawn_in, l_spawn_near, -1, 20, 30, l_spawn_chance, 1, -31000, 0)
mobs:register_egg("mobs_sharks:shark_lg", "Shark (large)", l_egg_texture, 0)
mobs:alias_mob("mobs:shark_lg", "mobs_sharks:shark_lg")
end
-- medium
if ENABLE_SHARK_MEDIUM then
mobs:register_mob("mobs_sharks:shark_md", {
type = "monster",
attack_type = "dogfight",
damage = 8,
reach = 2,
hp_min = 15,
hp_max = 20,
armor = 125,
collisionbox = {-0.57, -0.38, -0.57, 0.57, 0.38, 0.57},
visual = "mesh",
visual_size = {x=0.75, y=0.75},
mesh = l_model,
textures = l_skins,
makes_footstep_sound = false,
walk_velocity = 2,
run_velocity = 4,
fly = true,
fly_in = "default:water_source",
fall_speed = -1,
rotate = 270,
view_range = 10,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
animation = l_anims
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_sharks:shark_md", l_spawn_in, l_spawn_near, -1, 20, 30, l_spawn_chance, 1, -31000, 0)
mobs:register_egg("mobs_sharks:shark_md", "Shark (medium)", l_egg_texture, 0)
mobs:alias_mob("mobs:shark_md", "mobs_sharks:shark_md")
end
-- small
if ENABLE_SHARK_SMALL then
mobs:register_mob("mobs_sharks:shark_sm", {
type = "monster",
attack_type = "dogfight",
damage = 6,
reach = 1,
hp_min = 10,
hp_max = 15,
armor = 100,
collisionbox = {-0.38, -0.25, -0.38, 0.38, 0.25, 0.38},
visual = "mesh",
visual_size = {x=0.5, y=0.5},
mesh = l_model,
textures = l_skins,
makes_footstep_sound = false,
walk_velocity = 2,
run_velocity = 4,
fly = true,
fly_in = "default:water_source",
fall_speed = -1,
rotate = 270,
view_range = 10,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
animation = l_anims
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_sharks:shark_sm", l_spawn_in, l_spawn_near, -1, 20, 30, l_spawn_chance, 1, -31000, 0)
mobs:register_egg("mobs_sharks:shark_sm", "Shark (small)", l_egg_texture, 0)
mobs:alias_mob("mobs:shark_sm", "mobs_sharks:shark_sm")
end
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,4 @@
Licenses
Model/textures: unknown
Author: AspireMint

View File

@ -0,0 +1,2 @@
default
mobs

View File

@ -0,0 +1,108 @@
if mobs.mod and mobs.mod == "redo" then
local l_colors = {
"#604000:175", --brown
"#604000:100", --brown2
"#ffffff:150", --white
"#404040:150", --dark_grey
"#a0a0a0:150", --grey
"#808000:150", --olive
"#ff0000:150" --red
}
local l_skins = {
{"turtle1.png^turtle2.png^turtle3.png^turtle4.png^turtle5.png^turtle6.png^turtle7.png"},
{"turtle1.png^(turtle2.png^[colorize:"..l_colors[5]..")^(turtle3.png^[colorize:"..l_colors[4]..")^(turtle4.png^[colorize:"..l_colors[1]..")^(turtle5.png^[colorize:"..l_colors[2]..")^(turtle6.png^[colorize:"..l_colors[6]..")^turtle7.png"}
}
local l_anims = {
speed_normal = 24, speed_run = 24,
stand_start = 1, stand_end = 50,
walk_start = 60, walk_end = 90,
run_start = 60, run_end = 90,
hide_start = 95, hide_end = 100
}
local l_model = "mobf_turtle.x"
local l_spawn_chance = 30000
-- land turtle
mobs:register_mob("mobs_turtles:turtle", {
type = "animal",
passive = true,
hp_min = 15,
hp_max = 20,
armor = 200,
collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.35, 0.4},
visual = "mesh",
mesh = l_model,
textures = l_skins,
makes_footstep_sound = false,
view_range = 8,
rotate = 270,
walk_velocity = 0.1,
run_velocity = 0.3,
jump = false,
fly = false,
floats = 1,
water_damage = 0,
lava_damage = 5,
light_damage = 0,
fall_damage = 1,
animation = l_anims,
follow = "farming:carrot",
on_rightclick = function(self, clicker)
self.state = ""
set_velocity(self, 0)
self.object:set_animation({x=self.animation.hide_start, y=self.animation.hide_end}, self.animation.speed_normal, 0)
minetest.after(5, function()
self.state = "stand"
end)
mobs:capture_mob(self, clicker, 0, 80, 100, true, nil)
end
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_turtles:turtle",
{"default:dirt_with_grass","default:jungle_grass","default:sand","default:desert_sand"},
{"default:dirt_with_grass","default:jungle_grass","default:sand","default:desert_sand","default:papyrus","default:cactus","dryplants:juncus","dryplants:reedmace"},
5, 20, 30, l_spawn_chance, 1, 1, 31000)
mobs:register_egg("mobs_turtles:turtle", "Turtle", "default_grass.png", 1)
-- sea turtle
mobs:register_mob("mobs_turtles:seaturtle", {
type = "animal",
passive = true,
hp_min = 20,
hp_max = 30,
armor = 250,
collisionbox = {-0.8, 0.0, -0.8, 0.8, 0.7, 0.8},
visual = "mesh",
visual_size = {x=2,y=2},
mesh = l_model,
textures = l_skins,
makes_footstep_sound = false,
view_range = 10,
rotate = 270,
walk_velocity = 1,
run_velocity = 1.5,
stepheight = 1,
jump = false,
fly = true,
fly_in = "default:water_source",
fall_speed = 0,
floats = 1,
water_damage = 0,
lava_damage = 5,
light_damage = 0,
fall_damage = 0,
animation = l_anims,
on_rightclick = function(self, clicker)
mobs:capture_mob(self, clicker, 0, 0, 80, true, nil)
end
})
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
mobs:spawn_specific("mobs_turtles:seaturtle",
{"default:water_flowing","default:water_source"},
{"default:water_flowing","default:water_source","group:seaplants","seawrecks:woodship","seawrecks:uboot"},
5, 20, 30, l_spawn_chance, 1, -31000, 0)
mobs:register_egg("mobs_turtles:seaturtle", "Sea Turtle", "default_water.png", 1)
end

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

View File