5 changed files with 381 additions and 0 deletions
			
			
		@ -0,0 +1,155 @@ | 
				
			|||||
 | 
					
 | 
				
			||||
 | 
					local function smoke(pos, node, clicker, enable) | 
				
			||||
 | 
						local meta = minetest.get_meta(pos) | 
				
			||||
 | 
						local handler = meta:get_int("sound") | 
				
			||||
 | 
						local particle = meta:get_int("smoke") | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						if particle ~= 0 or enable ~= true then | 
				
			||||
 | 
							if handler then | 
				
			||||
 | 
								minetest.sound_stop(handler) | 
				
			||||
 | 
							end | 
				
			||||
 | 
							minetest.delete_particlespawner(particle) | 
				
			||||
 | 
							meta:set_int("smoke", 0) | 
				
			||||
 | 
							meta:set_int("sound", 0) | 
				
			||||
 | 
							return | 
				
			||||
 | 
						end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						local node = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						if node ~= "air" or particle ~= 0 then | 
				
			||||
 | 
							return | 
				
			||||
 | 
						end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						particle = minetest.add_particlespawner({ | 
				
			||||
 | 
							amount = 4, | 
				
			||||
 | 
							time = 0, | 
				
			||||
 | 
							collisiondetection = true, | 
				
			||||
 | 
							minpos = {x = pos.x - 0.25, y = pos.y + 0.4, z = pos.z-0.25}, | 
				
			||||
 | 
							maxpos = {x = pos.x + 0.25, y = pos.y + 5, z = pos.z + 0.25}, | 
				
			||||
 | 
							minvel = {x = -0.2, y = 0.3, z = -0.2}, | 
				
			||||
 | 
							maxvel = {x = 0.2, y = 1, z = 0.2}, | 
				
			||||
 | 
							minacc = {x = 0, y = 0, z = 0}, | 
				
			||||
 | 
							maxacc = {x = 0, y = 0.5, z = 0}, | 
				
			||||
 | 
							minexptime = 1, | 
				
			||||
 | 
							maxexptime = 3, | 
				
			||||
 | 
							minsize = 4, | 
				
			||||
 | 
							maxsize = 8, | 
				
			||||
 | 
							texture = "smoke_particle.png", | 
				
			||||
 | 
						}) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						handler = minetest.sound_play("fire_small", { | 
				
			||||
 | 
							pos = pos, | 
				
			||||
 | 
							max_hear_distance = 5, | 
				
			||||
 | 
							loop = true | 
				
			||||
 | 
						}) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						meta:set_int("smoke", particle) | 
				
			||||
 | 
						meta:set_int("sound", handler) | 
				
			||||
 | 
					end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- flame types | 
				
			||||
 | 
					local flame_types = { | 
				
			||||
 | 
						"green", "yellow", "black", "orange", "cyan", | 
				
			||||
 | 
						"magenta", "purple", "blue", "red", "frosted" | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					for _, f in pairs(flame_types) do | 
				
			||||
 | 
						minetest.register_node("abriflame:" .. f .. "_fire", { | 
				
			||||
 | 
							inventory_image = f .. "_fire_inv.png", | 
				
			||||
 | 
							wield_image = f .. "_fire_inv.png", | 
				
			||||
 | 
							description = f .. " fire", | 
				
			||||
 | 
							drawtype = "plantlike", | 
				
			||||
 | 
							paramtype = "light", | 
				
			||||
 | 
							groups = {dig_immediate = 3, not_in_creative_inventory = 1}, | 
				
			||||
 | 
							sunlight_propagates = true, | 
				
			||||
 | 
							buildable_to = true, | 
				
			||||
 | 
							walkable = false, | 
				
			||||
 | 
							light_source = 14, | 
				
			||||
 | 
							waving = 1, | 
				
			||||
 | 
							drop = "", | 
				
			||||
 | 
							tiles = {{ | 
				
			||||
 | 
								name = f .. "_fire_animated.png", | 
				
			||||
 | 
								animation = { | 
				
			||||
 | 
									type = "vertical_frames", | 
				
			||||
 | 
									aspect_w = 16, | 
				
			||||
 | 
									aspect_h = 16, | 
				
			||||
 | 
									length = 1.5 | 
				
			||||
 | 
								}, | 
				
			||||
 | 
							}}, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							on_rightclick = function (pos, node, clicker) | 
				
			||||
 | 
								smoke(pos, node, clicker, true) | 
				
			||||
 | 
							end, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							on_destruct = function (pos) | 
				
			||||
 | 
								smoke(pos, nil, nil, false) | 
				
			||||
 | 
								minetest.sound_play("fire_extinguish_flame", { | 
				
			||||
 | 
									pos = pos, | 
				
			||||
 | 
									max_hear_distance = 5, | 
				
			||||
 | 
									gain = 0.25 | 
				
			||||
 | 
								}) | 
				
			||||
 | 
							end, | 
				
			||||
 | 
						}) | 
				
			||||
 | 
					end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- fire starter tool | 
				
			||||
 | 
					minetest.register_tool("abriflame:flint", { | 
				
			||||
 | 
						description = "Fire Starter", | 
				
			||||
 | 
						inventory_image = "fire_flint_steel.png", | 
				
			||||
 | 
						stack_max = 1, | 
				
			||||
 | 
						liquids_pointable = false, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						on_use = function(itemstack, user, pointed_thing) | 
				
			||||
 | 
							if pointed_thing.type ~= "node" then | 
				
			||||
 | 
								return itemstack | 
				
			||||
 | 
							end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							local pos = ({x = pointed_thing.under.x,  | 
				
			||||
 | 
								y = pointed_thing.under.y + 1,  | 
				
			||||
 | 
								z = pointed_thing.under.z}) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							if minetest.get_node(pos).name ~= "air" or | 
				
			||||
 | 
									minetest.is_protected(pos, user:get_player_name()) or | 
				
			||||
 | 
									minetest.is_protected(pointed_thing.above, user:get_player_name()) then | 
				
			||||
 | 
								return itemstack | 
				
			||||
 | 
							end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							local nod = minetest.get_node(pointed_thing.under).name | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							if nod == "abriglass:stained_glass_green" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:green_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_yellow" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:yellow_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_black" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:black_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_orange" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:orange_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_cyan" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:cyan_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_magenta" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:magenta_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_purple" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:purple_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_blue" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:blue_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_red" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:red_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_frosted" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:frosted_fire"}) | 
				
			||||
 | 
							end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							itemstack:add_wear(65535 / 65) | 
				
			||||
 | 
							return itemstack | 
				
			||||
 | 
						end, | 
				
			||||
 | 
					}) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- fire starter tool recipe | 
				
			||||
 | 
					minetest.register_craft({ | 
				
			||||
 | 
						output = "abriflame:flint", | 
				
			||||
 | 
						recipe = { | 
				
			||||
 | 
							{"default:mese_crystal_fragment", "default:steel_ingot"} | 
				
			||||
 | 
						} | 
				
			||||
 | 
					}) | 
				
			||||
@ -0,0 +1,35 @@ | 
				
			|||||
 | 
					
 | 
				
			||||
 | 
					Textures: | 
				
			||||
 | 
					Original textures from Semmett9's fake_fire, now found in the homedecor modpack (https://github.com/minetest-mods/homedecor_modpack), | 
				
			||||
 | 
					with adjustments and recolouring by Shara RedCat. | 
				
			||||
 | 
					License: CC-BY-SA 3.0 or higher (https://creativecommons.org/licenses/by/3.0/). | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Code: | 
				
			||||
 | 
					License: MIT (https://opensource.org/licenses/MIT) | 
				
			||||
 | 
					By Shara RedCat and tenplus1 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					--- | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					The MIT License (MIT) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Copyright (c) 2017 Shara RedCat | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy | 
				
			||||
 | 
					of this software and associated documentation files (the "Software"), to deal | 
				
			||||
 | 
					in the Software without restriction, including without limitation the rights | 
				
			||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 
				
			||||
 | 
					copies of the Software, and to permit persons to whom the Software is | 
				
			||||
 | 
					furnished to do so, subject to the following conditions: | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					The above copyright notice and this permission notice shall be included in | 
				
			||||
 | 
					all copies or substantial portions of the Software. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
				
			||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
				
			||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 
				
			||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
				
			||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 
				
			||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 
				
			||||
 | 
					THE SOFTWARE. | 
				
			||||
@ -0,0 +1,155 @@ | 
				
			|||||
 | 
					
 | 
				
			||||
 | 
					local function smoke(pos, node, clicker, enable) | 
				
			||||
 | 
						local meta = minetest.get_meta(pos) | 
				
			||||
 | 
						local handler = meta:get_int("sound") | 
				
			||||
 | 
						local particle = meta:get_int("smoke") | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						if particle ~= 0 or enable ~= true then | 
				
			||||
 | 
							if handler then | 
				
			||||
 | 
								minetest.sound_stop(handler) | 
				
			||||
 | 
							end | 
				
			||||
 | 
							minetest.delete_particlespawner(particle) | 
				
			||||
 | 
							meta:set_int("smoke", 0) | 
				
			||||
 | 
							meta:set_int("sound", 0) | 
				
			||||
 | 
							return | 
				
			||||
 | 
						end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						local node = minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						if node ~= "air" or particle ~= 0 then | 
				
			||||
 | 
							return | 
				
			||||
 | 
						end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						particle = minetest.add_particlespawner({ | 
				
			||||
 | 
							amount = 4, | 
				
			||||
 | 
							time = 0, | 
				
			||||
 | 
							collisiondetection = true, | 
				
			||||
 | 
							minpos = {x = pos.x - 0.25, y = pos.y + 0.4, z = pos.z-0.25}, | 
				
			||||
 | 
							maxpos = {x = pos.x + 0.25, y = pos.y + 5, z = pos.z + 0.25}, | 
				
			||||
 | 
							minvel = {x = -0.2, y = 0.3, z = -0.2}, | 
				
			||||
 | 
							maxvel = {x = 0.2, y = 1, z = 0.2}, | 
				
			||||
 | 
							minacc = {x = 0, y = 0, z = 0}, | 
				
			||||
 | 
							maxacc = {x = 0, y = 0.5, z = 0}, | 
				
			||||
 | 
							minexptime = 1, | 
				
			||||
 | 
							maxexptime = 3, | 
				
			||||
 | 
							minsize = 4, | 
				
			||||
 | 
							maxsize = 8, | 
				
			||||
 | 
							texture = "smoke_particle.png", | 
				
			||||
 | 
						}) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						handler = minetest.sound_play("fire_small", { | 
				
			||||
 | 
							pos = pos, | 
				
			||||
 | 
							max_hear_distance = 5, | 
				
			||||
 | 
							loop = true | 
				
			||||
 | 
						}) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						meta:set_int("smoke", particle) | 
				
			||||
 | 
						meta:set_int("sound", handler) | 
				
			||||
 | 
					end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- flame types | 
				
			||||
 | 
					local flame_types = { | 
				
			||||
 | 
						"green", "yellow", "black", "orange", "cyan", | 
				
			||||
 | 
						"magenta", "purple", "blue", "red", "frosted" | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					for _, f in pairs(flame_types) do | 
				
			||||
 | 
						minetest.register_node("abriflame:" .. f .. "_fire", { | 
				
			||||
 | 
							inventory_image = f .. "_fire_inv.png", | 
				
			||||
 | 
							wield_image = f .. "_fire_inv.png", | 
				
			||||
 | 
							description = f .. " fire", | 
				
			||||
 | 
							drawtype = "plantlike", | 
				
			||||
 | 
							paramtype = "light", | 
				
			||||
 | 
							groups = {dig_immediate = 3, not_in_creative_inventory = 1}, | 
				
			||||
 | 
							sunlight_propagates = true, | 
				
			||||
 | 
							buildable_to = true, | 
				
			||||
 | 
							walkable = false, | 
				
			||||
 | 
							light_source = 14, | 
				
			||||
 | 
							waving = 1, | 
				
			||||
 | 
							drop = "", | 
				
			||||
 | 
							tiles = {{ | 
				
			||||
 | 
								name = f .. "_fire_animated.png", | 
				
			||||
 | 
								animation = { | 
				
			||||
 | 
									type = "vertical_frames", | 
				
			||||
 | 
									aspect_w = 16, | 
				
			||||
 | 
									aspect_h = 16, | 
				
			||||
 | 
									length = 1.5 | 
				
			||||
 | 
								}, | 
				
			||||
 | 
							}}, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							on_rightclick = function (pos, node, clicker) | 
				
			||||
 | 
								smoke(pos, node, clicker, true) | 
				
			||||
 | 
							end, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							on_destruct = function (pos) | 
				
			||||
 | 
								smoke(pos, nil, nil, false) | 
				
			||||
 | 
								minetest.sound_play("fire_extinguish_flame", { | 
				
			||||
 | 
									pos = pos, | 
				
			||||
 | 
									max_hear_distance = 5, | 
				
			||||
 | 
									gain = 0.25 | 
				
			||||
 | 
								}) | 
				
			||||
 | 
							end, | 
				
			||||
 | 
						}) | 
				
			||||
 | 
					end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- fire starter tool | 
				
			||||
 | 
					minetest.register_tool("abriflame:flint", { | 
				
			||||
 | 
						description = "Fire Starter", | 
				
			||||
 | 
					  inventory_image = "abriflame_fire_starter.png", | 
				
			||||
 | 
						stack_max = 1, | 
				
			||||
 | 
						liquids_pointable = false, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						on_use = function(itemstack, user, pointed_thing) | 
				
			||||
 | 
							if pointed_thing.type ~= "node" then | 
				
			||||
 | 
								return itemstack | 
				
			||||
 | 
							end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							local pos = ({x = pointed_thing.under.x,  | 
				
			||||
 | 
								y = pointed_thing.under.y + 1,  | 
				
			||||
 | 
								z = pointed_thing.under.z}) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							if minetest.get_node(pos).name ~= "air" or | 
				
			||||
 | 
									minetest.is_protected(pos, user:get_player_name()) or | 
				
			||||
 | 
									minetest.is_protected(pointed_thing.above, user:get_player_name()) then | 
				
			||||
 | 
								return itemstack | 
				
			||||
 | 
							end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							local nod = minetest.get_node(pointed_thing.under).name | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							if nod == "abriglass:stained_glass_green" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:green_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_yellow" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:yellow_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_black" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:black_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_orange" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:orange_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_cyan" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:cyan_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_magenta" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:magenta_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_purple" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:purple_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_blue" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:blue_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_red" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:red_fire"}) | 
				
			||||
 | 
							elseif nod == "abriglass:stained_glass_frosted" then | 
				
			||||
 | 
								minetest.set_node(pos, {name = "abriflame:frosted_fire"}) | 
				
			||||
 | 
							end | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							itemstack:add_wear(65535 / 65) | 
				
			||||
 | 
							return itemstack | 
				
			||||
 | 
						end, | 
				
			||||
 | 
					}) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- fire starter tool recipe | 
				
			||||
 | 
					minetest.register_craft({ | 
				
			||||
 | 
						output = "abriflame:flint", | 
				
			||||
 | 
						recipe = { | 
				
			||||
 | 
							{"default:mese_crystal_fragment", "default:steel_ingot"} | 
				
			||||
 | 
						} | 
				
			||||
 | 
					}) | 
				
			||||
@ -0,0 +1,36 @@ | 
				
			|||||
 | 
					
 | 
				
			||||
 | 
					Textures: | 
				
			||||
 | 
					Original textures from Semmett9's fake_fire, now found in the homedecor modpack (https://github.com/minetest-mods/homedecor_modpack), | 
				
			||||
 | 
					with adjustments and recolouring by Shara RedCat. | 
				
			||||
 | 
					New fire starter graphic (abriflame_fire_starter.png) 2021 Poikilos | 
				
			||||
 | 
					License: CC-BY-SA 3.0 or higher (https://creativecommons.org/licenses/by/3.0/). | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Code: | 
				
			||||
 | 
					License: MIT (https://opensource.org/licenses/MIT) | 
				
			||||
 | 
					By Shara RedCat, tenplus1, and Poikilos | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					--- | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					The MIT License (MIT) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Copyright (c) 2017 Shara RedCat, 2021 Poikilos | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy | 
				
			||||
 | 
					of this software and associated documentation files (the "Software"), to deal | 
				
			||||
 | 
					in the Software without restriction, including without limitation the rights | 
				
			||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 
				
			||||
 | 
					copies of the Software, and to permit persons to whom the Software is | 
				
			||||
 | 
					furnished to do so, subject to the following conditions: | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					The above copyright notice and this permission notice shall be included in | 
				
			||||
 | 
					all copies or substantial portions of the Software. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
				
			||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
				
			||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 
				
			||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
				
			||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 
				
			||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 
				
			||||
 | 
					THE SOFTWARE. | 
				
			||||
| 
		 After Width: | Height: | Size: 380 B  | 
					Loading…
					
					
				
		Reference in new issue