aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua364
-rw-r--r--textures/anim_blue_star.pngbin189 -> 0 bytes
-rw-r--r--textures/anim_green_star.pngbin189 -> 0 bytes
-rw-r--r--textures/anim_red_star.pngbin189 -> 0 bytes
-rw-r--r--textures/anim_yellow_star.pngbin189 -> 0 bytes
-rw-r--r--textures/fireworkz_rocket_launcher.pngbin2712 -> 0 bytes
-rw-r--r--textures/rocket_ball_blue.pngbin3071 -> 0 bytes
-rw-r--r--textures/rocket_ball_default_love_blue_white_red.pngbin3140 -> 0 bytes
-rw-r--r--textures/rocket_ball_default_love_green_yellow_red.pngbin3198 -> 0 bytes
-rw-r--r--textures/rocket_ball_green.pngbin3074 -> 0 bytes
-rw-r--r--textures/rocket_ball_red.pngbin3076 -> 0 bytes
-rw-r--r--textures/rocket_ball_white.pngbin3049 -> 0 bytes
-rw-r--r--textures/rocket_ball_yellow.pngbin3072 -> 0 bytes
-rw-r--r--textures/rocket_custom_red.pngbin3076 -> 0 bytes
-rw-r--r--textures/rocket_default.pngbin2727 -> 169 bytes
-rw-r--r--textures/rocket_default_blue.pngbin3089 -> 898 bytes
-rw-r--r--textures/rocket_default_blue_white_red.pngbin0 -> 890 bytes
-rw-r--r--textures/rocket_default_green.pngbin3078 -> 899 bytes
-rw-r--r--textures/rocket_default_green_yellow_red.pngbin0 -> 837 bytes
-rw-r--r--textures/rocket_default_red.pngbin3093 -> 898 bytes
-rw-r--r--textures/rocket_default_white.pngbin3047 -> 753 bytes
-rw-r--r--textures/rocket_default_yellow.pngbin3088 -> 860 bytes
22 files changed, 135 insertions, 229 deletions
diff --git a/init.lua b/init.lua
index 3ed5faf..7024cef 100644
--- a/init.lua
+++ b/init.lua
@@ -14,38 +14,61 @@ fireworkz.settings.max_hear_distance_fuse = tonumber(settings:get("max_hear_dist
fireworkz.settings.max_hear_distance_launch = tonumber(settings:get("max_hear_distance_launch")) or 13
fireworkz.settings.max_hear_distance_bang = tonumber(settings:get("max_hear_distance_bang")) or 90
+local color_map = {
+ blue = "cyan",
+ green = "lime",
+}
+
+local figure_map = {
+ default = "yellow",
+ ball = "magenta",
+ love = "red"
+}
+
+local figure_ingredient_map = {
+ --[[
+ 1 2 3
+ 4 x 5
+ 6 x 7
+ ]]
+ default = {false, true},
+ ball = {true, true, true, true, true, true, true},
+ love = {true, false, true, true, true},
+}
+
+local color_variants = {"red", "green", "blue", "yellow", "white"}
+local figure_variants = {"default", "ball", "love"}
+
local variant_list = {
- --{colour = "default", figure = "", form = "", desc = ""},
- {colour = "red", figure = "default", form = "", desc = S("Red")},
- {colour = "green", figure = "default", form = "", desc = S("Green")},
- {colour = "blue", figure = "default", form = "", desc = S("Blue")},
- {colour = "yellow", figure = "default", form = "", desc = S("Yellow")},
- {colour = "white", figure = "default", form = "", desc = S("White")},
- {colour = "red", figure = "ball", form = "", desc = S("Red")},
- {colour = "green", figure = "ball", form = "", desc = S("Green")},
- {colour = "blue", figure = "ball", form = "", desc = S("Blue")},
- {colour = "yellow", figure = "ball", form = "", desc = S("Yellow")},
- {colour = "white", figure = "ball", form = "", desc = S("White")},
- {colour = "red", figure = "custom", form = "love", desc = S("Red")},
- {colour = "blue_white_red", figure = "ball_default_love", form = "", desc = S("Blue-White-Love"),
+ {colour = "blue_white_red", figure = "ball_default_love", desc = S("Blue-White-Love"),
rdt = {
- {color = "blue", figure = "ball", form = ""},
- {color = "yellow", figure = "default", form = ""},
- --{color = "red", figure = "custom", form = "love"},
+ {color = "blue", figure = "ball"},
+ {color = "yellow", figure = "default"},
+ {color = "red", figure = "love"},
}
},
- {colour = "green_yellow_red", figure = "ball_default_love", form = "", desc = S("Green-Yellow-Love"),
+ {colour = "green_yellow_red", figure = "ball_default_love", desc = S("Green-Yellow-Love"),
rdt = {
- {color = "green", figure = "ball", form = ""},
- {color = "yellow", figure = "default", form = ""},
- {color = "red", figure = "custom", form = "love"},
+ {color = "green", figure = "ball"},
+ {color = "yellow", figure = "default"},
+ {color = "red", figure = "love"},
}
},
}
+for _, i in pairs(color_variants) do
+ local t = variant_list
+ local u = i:sub(1,1):upper()..i:sub(2)
+ for _, j in pairs(figure_variants) do
+ t[#t+1] = {colour = i, figure = j, desc = S(u)}
+ end
+end
+
--Functions
-local function default_figure(r)
+local figures = {}
+
+function figures.default(r)
local tab = {}
local num = 1
for x=-r, r, 0.02 do
@@ -64,10 +87,10 @@ local function default_figure(r)
end
end
end
- return tab
+ return tab, 2, 4
end
-local function ball_figure(r)
+function figures.ball(r)
local tab = {}
local num = 1
for x= -r, r, 0.01 do
@@ -85,41 +108,38 @@ local function ball_figure(r)
end
end
end
- return tab
+ return tab, 4, 4
end
-local function custom_figure(form)
- local tab = {}
- if form == "love" then
- tab[1] = {x=0,y=0,z=0,v=60}
- tab[2] = {x=0,y=0,z=-0.02,v=60}
- tab[3] = {x=0.01,y=0,z=-0.03,v=60}
- tab[4] = {x=0.02,y=0,z=-0.04,v=60}
- tab[5] = {x=0.03,y=0,z=-0.04,v=60}
- tab[6] = {x=0.04,y=0,z=-0.03,v=60}
- tab[7] = {x=0.05,y=0,z=-0.02,v=60}
- tab[8] = {x=0.05,y=0,z=-0.01,v=60}
- tab[9] = {x=0.04,y=0,z=0,v=60}
- tab[10] = {x=0.04,y=0,z=0.01,v=60}
- tab[11] = {x=0.03,y=0,z=0.02,v=60}
- tab[12] = {x=0.02,y=0,z=0.03,v=60}
- tab[13] = {x=0.01,y=0,z=0.04,v=60}
- tab[14] = {x=0,y=0,z=0.05,v=60}
- tab[15] = {x=-0.01,y=0,z=0.04,v=60}
- tab[16] = {x=-0.02,y=0,z=0.03,v=60}
- tab[17] = {x=-0.03,y=0,z=0.02,v=60}
- tab[18] = {x=-0.04,y=0,z=0.01,v=60}
- tab[19] = {x=-0.04,y=0,z=0,v=60}
- tab[20] = {x=-0.05,y=0,z=-0.01,v=60}
- tab[21] = {x=-0.05,y=0,z=-0.02,v=60}
- tab[22] = {x=-0.04,y=0,z=-0.03,v=60}
- tab[23] = {x=-0.03,y=0,z=-0.04,v=60}
- tab[24] = {x=-0.02,y=0,z=-0.04,v=60}
- tab[25] = {x=-0.01,y=0,z=-0.03,v=60}
- else
- tab[1] = {x=0,y=0,z=0,v=0}
- end
- return tab
+function figures.love(r)
+ local tab = {
+ {x=0,y=0,z=0,v=60},
+ {x=0,y=0,z=-0.02,v=60},
+ {x=0.01,y=0,z=-0.03,v=60},
+ {x=0.02,y=0,z=-0.04,v=60},
+ {x=0.03,y=0,z=-0.04,v=60},
+ {x=0.04,y=0,z=-0.03,v=60},
+ {x=0.05,y=0,z=-0.02,v=60},
+ {x=0.05,y=0,z=-0.01,v=60},
+ {x=0.04,y=0,z=0,v=60},
+ {x=0.04,y=0,z=0.01,v=60},
+ {x=0.03,y=0,z=0.02,v=60},
+ {x=0.02,y=0,z=0.03,v=60},
+ {x=0.01,y=0,z=0.04,v=60},
+ {x=0,y=0,z=0.05,v=60},
+ {x=-0.01,y=0,z=0.04,v=60},
+ {x=-0.02,y=0,z=0.03,v=60},
+ {x=-0.03,y=0,z=0.02,v=60},
+ {x=-0.04,y=0,z=0.01,v=60},
+ {x=-0.04,y=0,z=0,v=60},
+ {x=-0.05,y=0,z=-0.01,v=60},
+ {x=-0.05,y=0,z=-0.02,v=60},
+ {x=-0.04,y=0,z=-0.03,v=60},
+ {x=-0.03,y=0,z=-0.04,v=60},
+ {x=-0.02,y=0,z=-0.04,v=60},
+ {x=-0.01,y=0,z=-0.03,v=60},
+ }
+ return tab, 7, 7
end
-- Activate fireworks
@@ -137,7 +157,7 @@ local function partcl_gen(pos, tab, size_min, size_max, colour)
vertical = false,
animation = {type="vertical_frames", aspect_w=9, aspect_h=9, length = 3.5,},
glow = 30,
- texture = "anim_"..colour.."_star.png",
+ texture = "anim_white_star.png^[multiply:"..(color_map[colour] or colour),
})
end
end
@@ -192,12 +212,9 @@ function rocket:on_step(dtime)
minetest.sound_play("fireworkz_bang", {pos= self.object:get_pos(), max_hear_distance = fireworkz.settings.max_hear_distance_bang, gain = 3,})
for _, i in pairs(self.rdt) do
local pos = self.object:getpos()
- if i.figure == "ball" then
- partcl_gen(pos, ball_figure(0.1), 4, 4, i.color)
- elseif i.figure == "default" then
- partcl_gen(pos, default_figure(0.1), 2, 4, i.color)
- elseif i.figure == "custom" then
- partcl_gen(pos, custom_figure(i.form), 7, 7, i.color)
+ if figures[i.figure] then
+ local t, min, max = figures[i.figure](0.1)
+ partcl_gen(pos, t, min, max, i.color)
end
end
end
@@ -208,51 +225,46 @@ end
--Nodes
for _, i in pairs(variant_list) do
local figure_desc = ""
+
if i.figure == "default" then
figure_desc = S("Default")
elseif i.figure == "ball" then
figure_desc = S("Ball")
elseif i.figure == "ball_default_love" then
figure_desc = S("Love Ball")
- elseif i.figure == "custom" then
- figure_desc = S("Custom")
- end
- local inv_image = "rocket_"
- if not(i.figure == "") then
- inv_image = inv_image .. i.figure .. "_"
+ elseif i.figure == "love" then
+ figure_desc = S("Love")
end
- inv_image = inv_image .. i.colour .. ".png"
-
- local rdt = i.rdt or {{color = i.colour, figure = i.figure, form = i.form},}
-
+
+ local figure = i.figure
+ inv_image = ("rocket_default_%s.png^(rocket_default.png^[multiply:%s)"):format(
+ i.colour, figure_map[figure] or "white")
+ local rdt = i.rdt or {{color = i.colour, figure = i.figure},}
+ rdt.texture = inv_image
minetest.register_node("fireworkz:rocket_"..i.figure.."_"..i.colour, {
description = S("Rocket").." (".. i.desc .. "|"..figure_desc..")",
drawtype = "plantlike",
light_source = 5,
inventory_image = inv_image,
- tiles = {"rocket_default.png"},
- wield_image = "rocket_default.png",
+ tiles = {inv_image},
+ wield_image = inv_image,
paramtype = "light",
sunlight_propagates = true,
walkable = false,
is_ground_content = false,
groups = {choppy = 3, explody = 1, firework = 1},
-
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- local wielded_item = clicker:get_wielded_item()
- local wielded_item_name = wielded_item:get_name()
- if wielded_item_name == fireworkz.settings.igniter then
- minetest.sound_play("fireworkz_fuse", {pos= pos, fireworkz.settings.max_hear_distance_fuse, gain = 1,})
- minetest.after(fireworkz.settings.ignition_time, function(node, pos)
- local rocket_node = minetest.get_node(pos)
- if rocket_node.name == node.name then
- minetest.remove_node(pos)
- fireworkz.launch(pos, rdt)
- end
- end, node, pos)
- end
+ mesecons = {
+ effector = {
+ action_on = function(pos)
+ minetest.remove_node(pos)
+ fireworkz.launch(pos,rdt)
+ end
+ },
+ },
+ on_punch = function(pos)
+ minetest.remove_node(pos)
+ fireworkz.launch(pos,rdt)
end,
-
on_use = function(itemstack, user, pointed_thing)
local pos = minetest.get_pointed_thing_position(pointed_thing, true)
if pos then
@@ -269,160 +281,54 @@ end
fireworkz.launch = function(pos, rdt)
local obj = minetest.add_entity(pos, "fireworkz:rocket") --activate
+ if obj then
+ obj:set_properties({
+ textures={rdt.texture}
+ })
+ end
local obj_ent = obj:get_luaentity()
obj_ent.rdt = rdt
end
--- Craffitems
-
-minetest.register_craft({
- output = "fireworkz:rocket_default",
- recipe = {
- {"tnt:gunpowder"},
- {"default:paper"},
- {"default:coal_lump"}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_default_red",
- recipe = {
- {"default:tin_lump", "tnt:gunpowder", "dye:red"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_default_green",
- recipe = {
- {"default:tin_lump", "tnt:gunpowder", "dye:green"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_default_blue",
- recipe = {
- {"default:tin_lump", "tnt:gunpowder", "dye:blue"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_default_yellow",
- recipe = {
- {"default:tin_lump", "tnt:gunpowder", "dye:yellow"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_default_white",
- recipe = {
- {"default:tin_lump", "tnt:gunpowder", "dye:white"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_ball_red",
- recipe = {
- {"default:iron_lump", "tnt:gunpowder", "dye:red"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_ball_green",
- recipe = {
- {"default:iron_lump", "tnt:gunpowder", "dye:green"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_ball_blue",
- recipe = {
- {"default:iron_lump", "tnt:gunpowder", "dye:blue"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
-
-minetest.register_craft({
- output = "fireworkz:rocket_ball_yellow",
- recipe = {
- {"default:iron_lump", "tnt:gunpowder", "dye:yellow"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
+for k,v in pairs {green = "green", orange = "yellow", red = "red", violet = "blue"} do
+ minetest.register_alias("fireworks:"..k, "fireworkz:rocket_default"..v)
+end
-minetest.register_craft({
- output = "fireworkz:rocket_ball_white",
- recipe = {
- {"default:iron_lump", "tnt:gunpowder", "dye:white"},
- {"", "default:paper", ""},
- {"", "default:coal_lump", ""}
- },
-})
+-- Crafting
+
+for _, i in pairs(color_variants) do
+ for _, j in pairs(figure_variants) do
+ local m = figure_ingredient_map
+ local p = "default:paper"
+ if m[j] then
+ m = m[j]
+ minetest.register_craft{
+ output = ("fireworkz:rocket_%s_%s"):format(j, i),
+ recipe = {
+ {m[1] and p or "", m[2] and p or "", m[3] and p or ""},
+ {m[4] and p or "", "tnt:gunpowder", m[5] and p or ""},
+ {m[6] and p or "", "dye:"..i, m[7] and p or ""},
+ }
+ }
+ end
+ end
+end
minetest.register_craft({
output = "fireworkz:rocket_ball_default_love_blue_white_red",
recipe = {
- {"default:mese_crystal", "tnt:gunpowder", "dye:blue"},
- {"dye:white", "default:paper", ""},
- {"", "default:coal_lump", ""}
+ {"dye:blue", "dye:white", "dye:red"},
+ {"default:paper", "tnt:gunpowder", "default:paper"},
+ {"default:paper", "default:paper", "default:paper"}
},
})
minetest.register_craft({
output = "fireworkz:rocket_ball_default_love_green_yellow_red",
recipe = {
- {"default:diamond", "tnt:gunpowder", "dye:green"},
- {"dye:yellow", "default:paper", "dye:red"},
- {"", "default:coal_lump", ""}
+ {"dye:green", "dye:yellow", "dye:red"},
+ {"default:paper", "tnt:gunpowder", "default:paper"},
+ {"default:paper", "default:paper", "default:paper"}
},
})
---Mesecons Support
-
-if minetest.get_modpath("mesecons") ~= nil then
- minetest.register_node("fireworkz:launcher", {
- description = S("Firework Rocket Launcher"),
- tiles = {"fireworkz_rocket_launcher.png"},
- is_ground_content = false,
- groups = {cracky = 2, stone = 1},
- sounds = default.node_sound_stone_defaults(),
- mesecons = {effector = {
- action_on = function (pos, node)
- pos.y = pos. y + 1
- local node = minetest.get_node_or_nil(pos)
- if node then
- if node.name:sub(1, 16) == "fireworkz:rocket" then
- local meta = minetest.get_meta(pos)
- local rdt = minetest.deserialize(meta:get_string("firework:rdt"))
- minetest.remove_node(pos)
- fireworkz.launch(pos, rdt)
- end
- end
- end,
- }}
- })
- minetest.register_craft({
- output = "fireworkz:launcher",
- type = "shaped",
- recipe = {
- {"", "tnt:gunpowder", ""},
- {"", "default:mese", ""},
- {"", "default:steelblock", ""}
- },
- })
-end
diff --git a/textures/anim_blue_star.png b/textures/anim_blue_star.png
deleted file mode 100644
index 0de81ec..0000000
--- a/textures/anim_blue_star.png
+++ /dev/null
Binary files differ
diff --git a/textures/anim_green_star.png b/textures/anim_green_star.png
deleted file mode 100644
index ea54db3..0000000
--- a/textures/anim_green_star.png
+++ /dev/null
Binary files differ
diff --git a/textures/anim_red_star.png b/textures/anim_red_star.png
deleted file mode 100644
index ae29d94..0000000
--- a/textures/anim_red_star.png
+++ /dev/null
Binary files differ
diff --git a/textures/anim_yellow_star.png b/textures/anim_yellow_star.png
deleted file mode 100644
index 22bde83..0000000
--- a/textures/anim_yellow_star.png
+++ /dev/null
Binary files differ
diff --git a/textures/fireworkz_rocket_launcher.png b/textures/fireworkz_rocket_launcher.png
deleted file mode 100644
index db090b4..0000000
--- a/textures/fireworkz_rocket_launcher.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_ball_blue.png b/textures/rocket_ball_blue.png
deleted file mode 100644
index af18a67..0000000
--- a/textures/rocket_ball_blue.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_ball_default_love_blue_white_red.png b/textures/rocket_ball_default_love_blue_white_red.png
deleted file mode 100644
index de9e413..0000000
--- a/textures/rocket_ball_default_love_blue_white_red.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_ball_default_love_green_yellow_red.png b/textures/rocket_ball_default_love_green_yellow_red.png
deleted file mode 100644
index 0288d34..0000000
--- a/textures/rocket_ball_default_love_green_yellow_red.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_ball_green.png b/textures/rocket_ball_green.png
deleted file mode 100644
index 45c55a8..0000000
--- a/textures/rocket_ball_green.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_ball_red.png b/textures/rocket_ball_red.png
deleted file mode 100644
index c143e5a..0000000
--- a/textures/rocket_ball_red.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_ball_white.png b/textures/rocket_ball_white.png
deleted file mode 100644
index f9cd983..0000000
--- a/textures/rocket_ball_white.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_ball_yellow.png b/textures/rocket_ball_yellow.png
deleted file mode 100644
index 3ec60ed..0000000
--- a/textures/rocket_ball_yellow.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_custom_red.png b/textures/rocket_custom_red.png
deleted file mode 100644
index 9af5780..0000000
--- a/textures/rocket_custom_red.png
+++ /dev/null
Binary files differ
diff --git a/textures/rocket_default.png b/textures/rocket_default.png
index ddeb986..4ab5478 100644
--- a/textures/rocket_default.png
+++ b/textures/rocket_default.png
Binary files differ
diff --git a/textures/rocket_default_blue.png b/textures/rocket_default_blue.png
index d1b2ce0..b9b878d 100644
--- a/textures/rocket_default_blue.png
+++ b/textures/rocket_default_blue.png
Binary files differ
diff --git a/textures/rocket_default_blue_white_red.png b/textures/rocket_default_blue_white_red.png
new file mode 100644
index 0000000..aa352ab
--- /dev/null
+++ b/textures/rocket_default_blue_white_red.png
Binary files differ
diff --git a/textures/rocket_default_green.png b/textures/rocket_default_green.png
index 31e1c41..46cee97 100644
--- a/textures/rocket_default_green.png
+++ b/textures/rocket_default_green.png
Binary files differ
diff --git a/textures/rocket_default_green_yellow_red.png b/textures/rocket_default_green_yellow_red.png
new file mode 100644
index 0000000..da756f9
--- /dev/null
+++ b/textures/rocket_default_green_yellow_red.png
Binary files differ
diff --git a/textures/rocket_default_red.png b/textures/rocket_default_red.png
index a5f6e7d..6f1e46a 100644
--- a/textures/rocket_default_red.png
+++ b/textures/rocket_default_red.png
Binary files differ
diff --git a/textures/rocket_default_white.png b/textures/rocket_default_white.png
index ea8e073..a94ae9d 100644
--- a/textures/rocket_default_white.png
+++ b/textures/rocket_default_white.png
Binary files differ
diff --git a/textures/rocket_default_yellow.png b/textures/rocket_default_yellow.png
index ad251c6..f181cc3 100644
--- a/textures/rocket_default_yellow.png
+++ b/textures/rocket_default_yellow.png
Binary files differ