mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2024-12-25 02:00:37 +01:00
added new ambience lite mod
This commit is contained in:
parent
c1c56f37df
commit
471915c1cd
9
mods/ambience/README.md
Normal file
9
mods/ambience/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
Ambience Lite mod for Minetest
|
||||
|
||||
Based on Immersive Sounds .36 mod by Neuromancer and optimized to run on servers with new fire sounds added when Fire Redo mod is detected...
|
||||
|
||||
0.1 - Initial release
|
||||
0.2 - Code change and new water sounds added
|
||||
0.3 - Works with Fire Redo mod to provide fire sounds
|
||||
0.4 - Code optimized
|
||||
0.5 - Changed to kilbiths smaller sound files and removed canadianloon1, adjusted timings
|
5
mods/ambience/depends.txt
Normal file
5
mods/ambience/depends.txt
Normal file
@ -0,0 +1,5 @@
|
||||
default
|
||||
fire?
|
||||
bakedclay?
|
||||
ethereal?
|
||||
soundset?
|
279
mods/ambience/init.lua
Normal file
279
mods/ambience/init.lua
Normal file
@ -0,0 +1,279 @@
|
||||
|
||||
--= Ambience lite by TenPlus1 (16th April 2015)
|
||||
|
||||
local max_frequency_all = 1000 -- larger number means more frequent sounds (100-2000)
|
||||
local SOUNDVOLUME = 1
|
||||
local ambiences
|
||||
local played_on_start = false
|
||||
local tempy = {}
|
||||
|
||||
-- compatibility with soundset mod
|
||||
local get_volume
|
||||
if (minetest.get_modpath("soundset")) ~= nil then
|
||||
get_volume = soundset.get_gain
|
||||
else
|
||||
get_volume = function (player_name, sound_type) return SOUNDVOLUME end
|
||||
-- set volume command
|
||||
minetest.register_chatcommand("svol", {
|
||||
params = "<svol>",
|
||||
description = "set sound volume (0.1 to 1.0)",
|
||||
privs = {server=true},
|
||||
func = function(name, param)
|
||||
if tonumber(param) then
|
||||
SOUNDVOLUME = tonumber(param)
|
||||
minetest.chat_send_player(name, "Sound volume set.")
|
||||
else
|
||||
minetest.chat_send_player(name, "Sound volume no set, bad param.")
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
-- sound sets
|
||||
local night = {
|
||||
handler = {}, frequency = 40,
|
||||
{name="hornedowl", length=2},
|
||||
{name="wolves", length=4},
|
||||
{name="cricket", length=6},
|
||||
{name="deer", length=7},
|
||||
{name="frog", length=1},
|
||||
}
|
||||
|
||||
local day = {
|
||||
handler = {}, frequency = 40,
|
||||
{name="cardinal", length=3},
|
||||
{name="bluejay", length=6},
|
||||
{name="craw", length=3},
|
||||
{name="canadianloon2", length=14},
|
||||
{name="robin", length=4},
|
||||
{name="bird1", length=11},
|
||||
{name="bird2", length=6},
|
||||
{name="crestedlark", length=6},
|
||||
{name="peacock", length=2}
|
||||
}
|
||||
|
||||
local high_up = {
|
||||
handler = {}, frequency = 40,
|
||||
{name="craw", length=3},
|
||||
{name="wind", length=9.5},
|
||||
}
|
||||
|
||||
local cave = {
|
||||
handler = {}, frequency = 60,
|
||||
{name="drippingwater1", length=1.5},
|
||||
{name="drippingwater2", length=1.5}
|
||||
}
|
||||
|
||||
local beach = {
|
||||
handler = {}, frequency = 40,
|
||||
{name="seagull", length=4.5},
|
||||
{name="beach", length=13},
|
||||
{name="gull", length=1}
|
||||
}
|
||||
|
||||
local desert = {
|
||||
handler = {}, frequency = 20,
|
||||
{name="coyote", length=2.5},
|
||||
{name="desertwind", length=8}
|
||||
}
|
||||
|
||||
local flowing_water = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="waterfall", length=6}
|
||||
}
|
||||
|
||||
local underwater = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="scuba", length=8}
|
||||
}
|
||||
|
||||
local splash = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="swim_splashing", length=3},
|
||||
}
|
||||
|
||||
local lava = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="lava", length=7}
|
||||
}
|
||||
|
||||
local smallfire = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="fire_small", length=6}
|
||||
}
|
||||
|
||||
local largefire = {
|
||||
handler = {}, frequency = 1000,
|
||||
{name="fire_large", length=8}
|
||||
}
|
||||
|
||||
-- check where player is and which sounds are played
|
||||
local get_ambience = function(player)
|
||||
|
||||
-- where am I?
|
||||
local pos = player:getpos()
|
||||
|
||||
-- what is around me?
|
||||
pos.y = pos.y + 1.4 -- head level
|
||||
local nod_head = minetest.get_node(pos).name
|
||||
|
||||
pos.y = pos.y - 1.2 -- feet level
|
||||
local nod_feet = minetest.get_node(pos).name
|
||||
|
||||
pos.y = pos.y - 0.2 -- reset pos
|
||||
|
||||
--= START Ambiance
|
||||
|
||||
if nod_head == "default:water_source"
|
||||
or nod_head == "default:water_flowing" then
|
||||
return {underwater=underwater}
|
||||
end
|
||||
|
||||
if nod_feet == "default:water_source"
|
||||
or nod_feet == "default:water_flowing" then
|
||||
return {splash=splash}
|
||||
end
|
||||
|
||||
local num_fire, num_lava, num_water_source, num_water_flowing, num_desert = 0,0,0,0,0
|
||||
|
||||
-- get block of nodes we need to check
|
||||
tempy = minetest.find_nodes_in_area({x=pos.x-6,y=pos.y-2, z=pos.z-6},
|
||||
{x=pos.x+6,y=pos.y+2, z=pos.z+6},
|
||||
{"fire:basic_flame", "bakedclay:safe_fire", "default:lava_flowing", "default:lava_source",
|
||||
"default:water_flowing", "default:water_source", "default:desert_sand", "default:desert_stone",})
|
||||
|
||||
-- count separate instances in block
|
||||
for _, npos in ipairs(tempy) do
|
||||
local node = minetest.get_node(npos).name
|
||||
if node == "fire:basic_flame" or node == "bakedclay:safe_fire" then num_fire = num_fire + 1 end
|
||||
if node == "default:lava_flowing" or node == "default:lava_source" then num_lava = num_lava + 1 end
|
||||
if node == "default:water_flowing" then num_water_flowing = num_water_flowing + 1 end
|
||||
if node == "default:water_source" then num_water_source = num_water_source + 1 end
|
||||
if node == "default:desert_sand" or node == "default:desert_stone" then num_desert = num_desert + 1 end
|
||||
end ; --print (num_fire, num_lava, num_water_flowing, num_water_source, num_desert)
|
||||
|
||||
-- is fire redo mod active?
|
||||
if fire and fire.mod and fire.mod == "redo" then
|
||||
if num_fire > 8 then
|
||||
return {largefire=largefire}
|
||||
elseif num_fire > 0 then
|
||||
return {smallfire=smallfire}
|
||||
end
|
||||
end
|
||||
|
||||
if num_lava > 5 then
|
||||
return {lava=lava}
|
||||
end
|
||||
|
||||
if num_water_flowing > 30 then
|
||||
return {flowing_water=flowing_water}
|
||||
end
|
||||
|
||||
if pos.y < 7 and pos.y > 0 and num_water_source > 100 then
|
||||
return {beach=beach}
|
||||
end
|
||||
|
||||
if num_desert > 150 then
|
||||
return {desert=desert}
|
||||
end
|
||||
|
||||
if pos.y > 60 then
|
||||
return {high_up=high_up}
|
||||
end
|
||||
|
||||
if pos.y < -10 then
|
||||
return {cave=cave}
|
||||
end
|
||||
|
||||
if minetest.get_timeofday() > 0.2 and minetest.get_timeofday() < 0.8 then
|
||||
return {day=day}
|
||||
else
|
||||
return {night=night}
|
||||
end
|
||||
|
||||
-- END Ambiance
|
||||
|
||||
end
|
||||
|
||||
-- play sound, set handler then delete handler when sound finished
|
||||
local play_sound = function(player, list, number)
|
||||
|
||||
local player_name = player:get_player_name()
|
||||
|
||||
if list.handler[player_name] == nil then
|
||||
|
||||
local gain = get_volume(player:get_player_name(), "ambience")
|
||||
local handler = minetest.sound_play(list[number].name, {to_player=player_name, gain=gain})
|
||||
|
||||
if handler then
|
||||
list.handler[player_name] = handler
|
||||
|
||||
minetest.after(list[number].length, function(args)
|
||||
local list = args[1]
|
||||
local player_name = args[2]
|
||||
|
||||
if list.handler[player_name] then
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
end, {list, player_name})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- stop sound in still_playing
|
||||
local stop_sound = function (list, player)
|
||||
|
||||
local player_name = player:get_player_name()
|
||||
|
||||
if list.handler[player_name] then
|
||||
if list.on_stop then
|
||||
minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=get_volume(player:get_player_name(), "ambience")})
|
||||
end
|
||||
minetest.sound_stop(list.handler[player_name])
|
||||
list.handler[player_name] = nil
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- check sounds that are not in still_playing
|
||||
local still_playing = function(still_playing, player)
|
||||
if not still_playing.cave then stop_sound(cave, player) end
|
||||
if not still_playing.high_up then stop_sound(high_up, player) end
|
||||
if not still_playing.beach then stop_sound(beach, player) end
|
||||
if not still_playing.desert then stop_sound(desert, player) end
|
||||
if not still_playing.night then stop_sound(night, player) end
|
||||
if not still_playing.day then stop_sound(day, player) end
|
||||
if not still_playing.flowing_water then stop_sound(flowing_water, player) end
|
||||
if not still_playing.splash then stop_sound(splash, player) end
|
||||
if not still_playing.underwater then stop_sound(underwater, player) end
|
||||
if not still_playing.lava then stop_sound(lava, player) end
|
||||
if not still_playing.smallfire then stop_sound(smallfire, player) end
|
||||
if not still_playing.largefire then stop_sound(largefire, player) end
|
||||
end
|
||||
|
||||
local function tick()
|
||||
for _,player in ipairs(minetest.get_connected_players()) do
|
||||
--local t1 = os.clock()
|
||||
ambiences = get_ambience(player)
|
||||
--print ("[AMBIENCE] "..math.ceil((os.clock() - t1) * 1000).." ms")
|
||||
|
||||
still_playing(ambiences, player)
|
||||
if get_volume(player:get_player_name(), "ambience") > 0 then
|
||||
for _,ambience in pairs(ambiences) do
|
||||
if math.random(1, 1000) <= ambience.frequency then
|
||||
if ambience.on_start and played_on_start == false then
|
||||
played_on_start = true
|
||||
minetest.sound_play(ambience.on_start,
|
||||
{to_player=player:get_player_name(),gain=get_volume(player:get_player_name(), "ambience")})
|
||||
end
|
||||
play_sound(player, ambience, math.random(1, #ambience))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.after(1, tick)
|
||||
end
|
||||
|
||||
minetest.after(10, tick)
|
118
mods/ambience/sounds/SoundLicenses.txt
Normal file
118
mods/ambience/sounds/SoundLicenses.txt
Normal file
@ -0,0 +1,118 @@
|
||||
--------------Music Lic:
|
||||
Amethystium:
|
||||
--Avalon
|
||||
--Ethereal
|
||||
--Faraway
|
||||
--Strangely Beautiful
|
||||
|
||||
"I can't give you a formal license (legal paperwork) for it, but as long as it's non-commercial I can give you my personal blessing and guarantee that you won't get in trouble for using it :) If that's enough just feel free to use any of my tracks. Please credit the music properly though, and include a link to www.amethystium.com and www.am.mu (it's the same site right now, but the latter will be a label/music store site soon).
|
||||
Best regards,
|
||||
Øystein Ramfjord"
|
||||
|
||||
Jordach:
|
||||
--dark_ambiance
|
||||
--eastern_feeling
|
||||
These sounds are used for the Mod for Minetest; Ambiance.
|
||||
The included sounds are http://creativecommons.org/licenses/by-nc-sa/3.0/
|
||||
Not Used:--mtest
|
||||
|
||||
-----------Sound Lic:
|
||||
--Nightime Sound, Recorded by Mike Koenig, License: Attribution 3.0 http://soundbible.com/951-Nightime.html
|
||||
--Crickets At Night Sound, License: Attribution 3.0 | Recorded by Mike Koenig |http://soundbible.com/365-Crickets-At-Night.html
|
||||
|
||||
--Medium Pack Of Wolves Howling, License: Public Domain | Recorded by fws.gov, http://soundbible.com/277-Medium-Pack-Of-Wolves-Howling.html
|
||||
|
||||
--Horned Owl Sound, License: Attribution 3.0 | Recorded by Mike Koenig , http://soundbible.com/1851-Horned-Owl.html
|
||||
--Bats In Cave Sound, License: Attr-Noncommercial 3.0 | Recorded by Mike Koenig , http://soundbible.com/1939-Bats-In-Cave.html
|
||||
|
||||
--Spooky Water Drops Sound, License: Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/380-Spooky-Water-Drops.html
|
||||
|
||||
|
||||
-- Single Water Droplet Sound, License: Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/384-Single-Water-Droplet.html
|
||||
|
||||
--HollowWind, Black Boe, Creative Commons 0 License, http://www.freesound.org/people/Black%20Boe/sounds/22331/
|
||||
|
||||
--drippingwater*.ogg sounds: CC0, Dripping Water Mod, by kddekadenz, http://minetest.net/forum/viewtopic.php?id=1688
|
||||
|
||||
--best cardinal bird: License: Attribution 3.0 | Recorded by PsychoBird, http://soundbible.com/1515-Best-Cardinal-Bird.html
|
||||
|
||||
--birdsongnl: the Attribution License, HerbertBoland, http://www.freesound.org/people/HerbertBoland/sounds/28312/ (end)
|
||||
|
||||
--robin2: Attribution License, reinsamba, http://www.freesound.org/people/reinsamba/sounds/32479/ (end)
|
||||
|
||||
--Craw.WAV, Attribution License, inchadney, http://www.freesound.org/people/inchadney/sounds/52450/
|
||||
|
||||
--bluejay.wav, Creative Commons 0 License, UncleSigmund, http://www.freesound.org/people/UncleSigmund/sounds/42382/
|
||||
|
||||
--scuba1*.ogg- digifishmusic, Attribution License, http://www.freesound.org/people/digifishmusic/sounds/45521/
|
||||
|
||||
--Underwater Pool - Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/1660-Underwater-Pool.html
|
||||
|
||||
--dolphin_screaming - Creative Commons 0 License, felix.blume, http://www.freesound.org/people/felix.blume/sounds/161691/
|
||||
|
||||
--dolphins - Attribution Noncommercial License, acclivity, http://www.freesound.org/people/acclivity/sounds/13691/
|
||||
|
||||
ComboWind uses:
|
||||
--wind-in-the-trees -Attribution License, laurent, http://www.freesound.org/people/laurent/sounds/16995/
|
||||
--drygrassInWind- Creative Commons 0 License, felix.blume, http://www.freesound.org/people/felix.blume/sounds/146436/
|
||||
|
||||
--Splash: Attribution 3.0 | Recorded by BlastwaveFx.com, http://soundbible.com/546-Fish-Splashing.html
|
||||
|
||||
--small_waterfall Attribution License, volivieri, http://www.freesound.org/people/volivieri/sounds/38390/
|
||||
|
||||
--Lake_Waves_2*, Attribution License, Benboncan, http://www.freesound.org/people/Benboncan/sounds/67884/
|
||||
|
||||
--water_swimming_splashing*, Attribution Noncommercial License, Robinhood76, http://www.freesound.org/people/Robinhood76/sounds/79657/
|
||||
|
||||
--earth01a, Creative Commons 0 License., Halion , http://www.freesound.org/people/Halion/sounds/17785
|
||||
|
||||
--fiji_beach, Creative Commons 0 License, c97059890, http://www.freesound.org/people/c97059890/sounds/21754/
|
||||
|
||||
--seagull, Attribution Noncommercial License., hazure, http://www.freesound.org/people/hazure/sounds/23707/,
|
||||
|
||||
desert:
|
||||
coyote2, Attribution License, rogerforeman, http://www.freesound.org/people/rogerforeman/sounds/68068/
|
||||
http://www.freesound.org/people/Proxima4/sounds/104319/
|
||||
Desert Monolith.wav, Creative Commons 0 License, Proxima4, http://www.freesound.org/people/Proxima4/sounds/104319/
|
||||
Rattlesnake Rattle, Public Domain, fws.gov, http://soundbible.com/237-Rattlesnake-Rattle.html
|
||||
|
||||
flying:
|
||||
crystal_airlines: Attribution License, suonho, http://www.freesound.org/people/suonho/sounds/56364/
|
||||
|
||||
----------------Not used yet:
|
||||
desert:
|
||||
Desert Simple.wav, Creative Commons 0 License, Proxima4, http://www.freesound.org/people/Proxima4/sounds/104320/
|
||||
|
||||
313hummer (Jordan Craige)
|
||||
--echos http://soundcloud.com/jordan-craige/echos-1
|
||||
Creative Commons Attribution license (reuse allowed) Attribution 3.0 Unported (CC BY 3.0)
|
||||
Not Used:--FoamOfTheSea http://soundcloud.com/jordan-craige/foam-of-the-sea
|
||||
|
||||
xi-intersection:
|
||||
http://soundcloud.com/xi-intersection/mass-effect-uncharted-worlds Creative Commons License
|
||||
--not used:
|
||||
http://soundcloud.com/xi-intersection/donkey-kong-country-2-flight
|
||||
http://soundcloud.com/kogyo/kogyo-skalar-m1
|
||||
|
||||
lava:
|
||||
http://www.freesound.org/people/Halion/sounds/17785/ (almost as good cc) (combine with rocks falling?)
|
||||
http://www.freesound.org/people/pushtobreak/sounds/17823/ (attrib non cc really good)
|
||||
http://www.freesound.org/people/klankbeeld/sounds/123970/ (horror rhythm)
|
||||
Rockfall in mine.wav http://www.freesound.org/people/Benboncan/sounds/60085/
|
||||
|
||||
|
||||
http://www.freesound.org/people/snotch/sounds/96175/ (mud volcano)
|
||||
|
||||
--natural night sounds in Boquete.wav, Attribution License, laurent, http://www.freesound.org/people/laurent/sounds/15851/
|
||||
http://www.freesound.org/people/Dynamicell/sounds/17553/
|
||||
http://www.freesound.org/people/juskiddink/sounds/78955/ aspen tree in wind
|
||||
http://www.freesound.org/people/Benboncan/sounds/69761/ wind in hedge birds animals
|
||||
|
||||
|
||||
ButterflyTea:
|
||||
Creative Commons : Attribution-Noncommercial-Share Alike 3.0
|
||||
http://www.jamendo.com/en/track/904012/dance-of-magical-flowers
|
||||
http://www.jamendo.com/en/track/904013/magic-of-the-seventh-world
|
||||
http://www.jamendo.com/en/track/904016/in-search-of-the-soul
|
||||
|
||||
zero-project
|
BIN
mods/ambience/sounds/beach.ogg
Normal file
BIN
mods/ambience/sounds/beach.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/bird1.ogg
Normal file
BIN
mods/ambience/sounds/bird1.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/bird2.ogg
Normal file
BIN
mods/ambience/sounds/bird2.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/bluejay.ogg
Normal file
BIN
mods/ambience/sounds/bluejay.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/canadianloon2.ogg
Normal file
BIN
mods/ambience/sounds/canadianloon2.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/cardinal.ogg
Normal file
BIN
mods/ambience/sounds/cardinal.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/coyote.ogg
Normal file
BIN
mods/ambience/sounds/coyote.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/craw.ogg
Normal file
BIN
mods/ambience/sounds/craw.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/crestedlark.ogg
Normal file
BIN
mods/ambience/sounds/crestedlark.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/cricket.ogg
Normal file
BIN
mods/ambience/sounds/cricket.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/deer.ogg
Normal file
BIN
mods/ambience/sounds/deer.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/desertwind.ogg
Normal file
BIN
mods/ambience/sounds/desertwind.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/drippingwater1.ogg
Normal file
BIN
mods/ambience/sounds/drippingwater1.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/drippingwater2.ogg
Normal file
BIN
mods/ambience/sounds/drippingwater2.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/fire_large.ogg
Normal file
BIN
mods/ambience/sounds/fire_large.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/fire_small.ogg
Normal file
BIN
mods/ambience/sounds/fire_small.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/frog.ogg
Normal file
BIN
mods/ambience/sounds/frog.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/gull.ogg
Normal file
BIN
mods/ambience/sounds/gull.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/hornedowl.ogg
Normal file
BIN
mods/ambience/sounds/hornedowl.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/lava.ogg
Normal file
BIN
mods/ambience/sounds/lava.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/peacock.ogg
Normal file
BIN
mods/ambience/sounds/peacock.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/robin.ogg
Normal file
BIN
mods/ambience/sounds/robin.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/scuba.ogg
Normal file
BIN
mods/ambience/sounds/scuba.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/seagull.ogg
Normal file
BIN
mods/ambience/sounds/seagull.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/swim_splashing.ogg
Normal file
BIN
mods/ambience/sounds/swim_splashing.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/waterfall.ogg
Normal file
BIN
mods/ambience/sounds/waterfall.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/wind.ogg
Normal file
BIN
mods/ambience/sounds/wind.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/wolves.ogg
Normal file
BIN
mods/ambience/sounds/wolves.ogg
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user