From 193ad7e7acb574cdaef32519042eacdf7b652c39 Mon Sep 17 00:00:00 2001 From: Duane Date: Sun, 17 Jul 2016 01:10:40 -0500 Subject: [PATCH] Add flare gun. --- abms.lua | 13 ++++ init.lua | 6 +- spec_bomb.lua | 99 +++++++++++++++++++++++++++++++ textures/fun_caves_flare.png | Bin 0 -> 142 bytes textures/fun_caves_flare_gun.png | Bin 0 -> 2106 bytes textures/image_credits.txt | 1 + 6 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 textures/fun_caves_flare.png create mode 100644 textures/fun_caves_flare_gun.png diff --git a/abms.lua b/abms.lua index 74fd235..2f12bd3 100644 --- a/abms.lua +++ b/abms.lua @@ -313,6 +313,19 @@ end) -- destruction ------------------------------------------------------------ +minetest.register_abm({ + nodenames = {"fun_caves:flare",}, + interval = 5, + chance = 10, + action = function(pos, node) + if not (pos and node) then + return + end + + minetest.remove_node(pos) + end, +}) + minetest.register_abm({ nodenames = {"fun_caves:hot_cobble",}, neighbors = {"group:water"}, diff --git a/init.lua b/init.lua index f9777b2..c11bbd1 100644 --- a/init.lua +++ b/init.lua @@ -187,7 +187,11 @@ dofile(fun_caves.path .. "/fungal_tree.lua") dofile(fun_caves.path .. "/wallhammer.lua") dofile(fun_caves.path .. "/mapgen.lua") dofile(fun_caves.path .. "/wooden_buckets.lua") -dofile(fun_caves.path .. "/spec_bomb.lua") + +if minetest.get_modpath('tnt') then + dofile(fun_caves.path .. "/spec_bomb.lua") +end + dofile(fun_caves.path .. "/elixir.lua") -- must go after all items are registered dofile(fun_caves.path .. "/chat.lua") diff --git a/spec_bomb.lua b/spec_bomb.lua index b5d6675..0b03f87 100644 --- a/spec_bomb.lua +++ b/spec_bomb.lua @@ -397,3 +397,102 @@ minetest.register_craft({ {'', 'default:steelblock', 'default:coalblock'}, } }) + + +local function flares(player) + local dir = player:get_look_dir() + local pos = player:getpos() + if not pos then + return + end + pos.x = pos.x + dir.x * 10 + pos.y = pos.y + dir.y * 10 + pos.z = pos.z + dir.z * 10 + pos = vector.round(pos) + + local air = minetest.get_content_id('air') + local flare = minetest.get_content_id('fun_caves:flare') + local vm = minetest.get_voxel_manip() + if not vm then + return + end + + local r = 8 + local minp = vector.subtract(pos, r) + local maxp = vector.add(pos, r) + local emin, emax = vm:read_from_map(minp, maxp) + local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax}) + local data = vm:get_data() + local count = 0 + for i = 1, 50 do + local x = pos.x + math.random(2 * r + 1) - r - 1 + local y = pos.y + math.random(2 * r + 1) - r - 1 + local z = pos.z + math.random(2 * r + 1) - r - 1 + local ivm = area:index(x, y, z) + if data[ivm] == air then + data[ivm] = flare + count = count + 1 + end + end + vm:set_data(data) + vm:calc_lighting(minp, maxp) + vm:update_liquids() + vm:write_to_map() + vm:update_map() + + return count +end + +minetest.register_node("fun_caves:flare", { + description = "Fungal tree fruit", + drawtype = "plantlike", + visual_scale = 0.75, + tiles = {"fun_caves_flare.png"}, + paramtype = "light", + sunlight_propagates = true, + light_source = 15, + walkable = false, + diggable = false, + pointable = false, + is_ground_content = false, +}) + +minetest.register_tool("fun_caves:flare_gun", { + description = "Flare Gun", + inventory_image = "fun_caves_flare_gun.png", + tool_capabilities = { + full_punch_interval = 1.2, + max_drop_level=0, + groupcaps={ + snappy={times={[2]=1.6, [3]=0.40}, uses=10, maxlevel=1}, + }, + damage_groups = {fleshy=2}, + }, + on_use = function(itemstack, user, pointed_thing) + if not user then + return + end + + local count = flares(user) + itemstack:add_wear(count * 400) + return itemstack + end, +}) + +minetest.register_craft({ + output = 'fun_caves:flare_gun', + recipe = { + {'', '', ''}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', 'tnt:gunpowder', 'group:stick'}, + } +}) + +minetest.register_craft({ + output = 'fun_caves:flare_gun', + recipe = { + {'', '', ''}, + {'', 'fun_caves:flare_gun', ''}, + {'', 'tnt:gunpowder', ''}, + } +}) diff --git a/textures/fun_caves_flare.png b/textures/fun_caves_flare.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e045bbf9a9904baed8a581392760d30750a906 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPNyC92-s_lmZUx7l>o-U3d7N?UFBv=p2{%L2b$(rHT foGD^pV8Fm&eVhHa#KZs2KxGV`u6{1-oD!M<0pcYJ literal 0 HcmV?d00001 diff --git a/textures/fun_caves_flare_gun.png b/textures/fun_caves_flare_gun.png new file mode 100644 index 0000000000000000000000000000000000000000..c7dc74b356d94f9a7c552420f477f39a4cfda599 GIT binary patch literal 2106 zcmV-A2*vk_P)X1^@s6P!BAT00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;0F-}8W<&?{jLB22ggZ7 zK~zY`wN`m-6xSX8-kX`-ne|>?d%eDGu#Ig@FkqV_Hdlf<3xq;Ij>?fJsz{+NG-|0R zQfZr3t(wrNDNQO+!y!azLntB#hlri1<~Ak-12$O(5S+QS>(d~IftVsI%| z$;>3PS>x2fnA7EEsr+DUiigH_pGwbs?}BmWot0y%-#l_f{Ac5pj)u7tXh<`WNJKXN zb*_y$9QPR$KrjQt3f$@jGy?EdvcAzy5zXQgc%et7y)yxlByXn7y}{q z#3J-2DCNL$9BdX73Nx(XEeEf!u}an|LdfE?o5%56&$0Z_P{;=$K59e>&R@Fmpeg@1 z8sr%8z=BP$%uj^EGBfdlNI3$hMS^JNbVW%bp&8JU3`r0+B*&qu2Kqt~hysT|Lg(dp zGMMFdxxmQBs;-t>IEXOxokttbZJqbrBz*eW*+*J1I`_T>jDZxFwI>Ov$pB!MBuHi+ zCMkvEB?$s0uuCFLq7`Ph4Q{s^C8?Qczu1gmS0^+znih#B3`XdTTpE2j-H~!Q7-InN z*x~?S5HOx*j3$I!Wg`pYa?(Jit{YI~5JH*(-7ui(Iv5B9frpmV0m7i`29$UVp6pzV zsVIRz5JcsuLUi2iHbpv|IL7b@bk)f_HjQjsxW(z z+nxJDPlP!ViI@ZmuB-FLViFEHEF4EdkvKF>M^e+l2muU&6q^H_=mcmNTrMY_os~f^ zUTxoa=7xU>v}B@uq-V#qo4wmiOVfn9$_&jPHduS-e~2UjMySgTW55q!CV(Wj-89(OiHT)-IC7=~J$=1kpcoho0|1n0 z1Re*9Td$A1S$);BAJMhjKoy#Y&{p>p{URWkc=`}lc?cDV6-q$w#Y|rgmUNt+faPsj_ zKd7*$c@P;0A_+}*IBc9GS}+voho-1Td}xpsjLchqp`~s6@KyXs1=?=)V?)DS{H^IS z4(|CAw!E?JYDH;*XY!<}KW=HgcW z?Xx&i^?0zaTri7<)n+A0O@pSWBoUPXO7dpUsoQIHy7bhTkE4&fB;MYC6acVv)p{&j zSkLV}aA+TIC}%gX|KXOmw!gy^K9$H_gIY~dZk5wS@7Pm>vLRpRPbN;Dw)4uF&lhLs z7XBqN5Ts!_21yjbG!2AuP~z${UEbRzZJhza85Hz?y;u!Pzl9HuoX}rdwut-lu07kM ziKuzY`gL1>_scho&bwa}@B$k@zF^w#{XVY@07UL3a~CW$Z=7GZB~=m!w4?$_N`Woa z1(Vf^h#Unt;YYI1tMQ`s(HVFcYZ_j}uKoXbFkkyp!|JT8tX~U+br4PpcLx1+RQ9cm zj#+Zdc40Sj+1>cn?hnbd$u&(q31wuP`t2Ra?8GzSLoT;y3); zbLT$D&C>eXijAw6%=oDt((syT?Ymf+B?17RtF1XyQCr6@IF0wqPgu4yAL(}HjMbID;5&`m0^Q_AI8n8 zCjh{#4hz$CXu1wfOTy4K@ElK6{oXm$i2?GY3J4?@o4z*-%@;aRT;PPuX+yZri+2y7 z#%~(NV)OpXSTubSEf$!gF~Oe=_Vkwsq6tbYifC{Ex}qSfctlfsTl>rfw;un>dzuNR(VCisp(R-|9%BM8P-{k7?Ja-g%raM>NS_7)BN8@te)4%ZJ=JkB z;Jd3Sazs-iG9jSUlxo@Lz1DF`FQ{UIZs4g9AmY6c#^u4&-(9zfSklsCQo8Ga+2fdg z=j%JKS4?;YX!(foPo?_skGH0B*xu>IrTIm}>xH9>_~G%YLRj!LQ8u>hLB{g)^GSAb k9sr=ax*7nmvIv%c1H0^Y)Z}Cuw*UYD07*qoM6N<$f|l9XZ~y=R literal 0 HcmV?d00001 diff --git a/textures/image_credits.txt b/textures/image_credits.txt index 7ff3960..8107e32 100644 --- a/textures/image_credits.txt +++ b/textures/image_credits.txt @@ -13,3 +13,4 @@ The pyramid and translocator textures are copied from the default sandstone and Firework 2: William Crochot (cc-by-sa 4): https://en.wikipedia.org/wiki/File:Feu_d'artifice_-_333.jpg Apple pie: Dan Parsons (cc-by-sa 2): https://en.wikipedia.org/wiki/File:Apple_pie.jpg Onion: Colin (cc-by-sa 3): https://en.wikipedia.org/wiki/File:Red_Onion_on_White.JPG +Flare Gun: Billlion (cc-by-sa 3): https://en.wikipedia.org/wiki/File:Molins_Number_1_signal_Pistol.jpg