From 857bdfc4a97fbbeaad6a7375d92b97053163adbe Mon Sep 17 00:00:00 2001 From: npx Date: Sat, 14 Jan 2017 15:34:05 +0100 Subject: [PATCH] Added the shape "add_entity" --- appunti | 20 +++++ bombs_api.lua | 118 +++++++++++++++++++++++++----- bombs_examples.lua | 66 +++++++++++++---- depends.txt | 2 + schems/simple_house.mts | Bin 0 -> 467 bytes textures/boom_bomb.png | Bin 0 -> 867 bytes textures/cage_bomb.png | Bin 0 -> 928 bytes textures/cobweb_bomb.png | Bin 0 -> 871 bytes textures/empty_evocation_bomb.png | Bin 0 -> 739 bytes textures/evocation_bomb.png | Bin 0 -> 620 bytes textures/fire_ring_bomb.png | Bin 0 -> 944 bytes textures/food_bomb.png | Bin 0 -> 884 bytes textures/hole_bomb.png | Bin 0 -> 742 bytes textures/kaboom_bomb.png | Bin 0 -> 837 bytes textures/lava_bomb.png | Bin 0 -> 885 bytes textures/mantis_bomb.png | Bin 0 -> 854 bytes textures/mornar_bomb.png | Bin 0 -> 942 bytes textures/phoenix_fire_bomb.png | Bin 0 -> 915 bytes textures/poison_bomb.png | Bin 0 -> 834 bytes textures/smoke_bomb.png | Bin 0 -> 870 bytes textures/stone_bomb.png | Bin 0 -> 862 bytes textures/teleport_bomb.png | Bin 0 -> 872 bytes textures/thick_web_bomb.png | Bin 0 -> 777 bytes textures/water_bomb.png | Bin 0 -> 885 bytes textures/water_column_bomb.png | Bin 0 -> 865 bytes 25 files changed, 173 insertions(+), 33 deletions(-) create mode 100644 schems/simple_house.mts create mode 100644 textures/boom_bomb.png create mode 100644 textures/cage_bomb.png create mode 100644 textures/cobweb_bomb.png create mode 100644 textures/empty_evocation_bomb.png create mode 100644 textures/evocation_bomb.png create mode 100644 textures/fire_ring_bomb.png create mode 100644 textures/food_bomb.png create mode 100644 textures/hole_bomb.png create mode 100644 textures/kaboom_bomb.png create mode 100644 textures/lava_bomb.png create mode 100644 textures/mantis_bomb.png create mode 100644 textures/mornar_bomb.png create mode 100644 textures/phoenix_fire_bomb.png create mode 100644 textures/poison_bomb.png create mode 100644 textures/smoke_bomb.png create mode 100644 textures/stone_bomb.png create mode 100644 textures/teleport_bomb.png create mode 100644 textures/thick_web_bomb.png create mode 100644 textures/water_bomb.png create mode 100644 textures/water_column_bomb.png diff --git a/appunti b/appunti index a6eb7ef..edcaef2 100644 --- a/appunti +++ b/appunti @@ -15,3 +15,23 @@ Per ogni bomba bisogna definire: Aggiuntivi: -> velocity -> recipe_number + + +Bombe presenti: +mobs_examples.lua: + - stone_wall_bomb + - Cubic Ice Shell bomb + - Fire circle + - Lava pool + - schematic bomb + +Nssm_weapons: + - cobweb_bomb + - cubic mantis clay shell bomb + - + + nssbombs:register_throwitem("nssm:", "", { + textures = "", + recipe_number = , + recipe = , + }) diff --git a/bombs_api.lua b/bombs_api.lua index c370d07..3db2e70 100644 --- a/bombs_api.lua +++ b/bombs_api.lua @@ -1,25 +1,30 @@ function nssbombs:register_throwitem(name, descr, def) - minetest.register_craftitem("nssbombs:"..name.."_bomb", { + minetest.register_craftitem(name, { description = descr, inventory_image = def.textures, on_use = function(itemstack, placer, pointed_thing) local velocity = def.velocity or 15 + local dir = placer:get_look_dir() local playerpos = placer:getpos() - local obj = minetest.env:add_entity({x=playerpos.x+dir.x,y=playerpos.y+2+dir.y,z=playerpos.z+dir.z}, "nssbombs:"..name.."_bomb_flying") + local obj = minetest.add_entity({x=playerpos.x+dir.x,y=playerpos.y+2+dir.y,z=playerpos.z+dir.z}, name.."_flying") local vec = {x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity} local acc = {x=0, y=-9.8, z=0} + obj:setvelocity(vec) obj:setacceleration(acc) + obj:get_luaentity().placer = placer + itemstack:take_item() return itemstack end, }) - minetest.register_entity("nssbombs:"..name.."_bomb_flying",{ + minetest.register_entity(name.."_flying",{ textures = {def.textures}, hp_max = 50, + placer = nil, collisionbox = {-0.1,-0.1,-0.1, 0.1,0.1,0.1}, visual_size = def.visual_size or {x=1, y=1}, explosion = def.explosion or {}, @@ -31,13 +36,17 @@ function nssbombs:register_throwitem(name, descr, def) if def.hit_node then def.hit_node(self, pos) else - default_hit_node(self, self.explosion, vec) + if self.explosion then + default_hit_node(self, self.explosion) + else + minetest.chat_send_player(self.placer, "No hit_node function defined") + end end self.object:remove() end end, }) - + local recepy if def.recipe_block then recepy = { {def.recipe_block, def.recipe_block, def.recipe_block}, @@ -48,13 +57,14 @@ function nssbombs:register_throwitem(name, descr, def) local number = def.recipe_number or 1 minetest.register_craft({ - output = "nssbombs:"..name.."_bomb "..number, + output = name.." "..number, + type = def.recipe_type or nil, recipe = def.recipe or recepy }) end -function perpendicular_vector(vec) --returns a vector rotated of 90° in 2D +function perpendicular_vector(vec) --returns a vector rotated of 90° in 2D (x and z directions) local ang = math.pi/2 local c = math.cos(ang) local s = math.sin(ang) @@ -79,10 +89,6 @@ function default_hit_node(self, explosion) center = {x=p.x, y=p.y+radius, z=p.z} end - if particles then - add_effects(center, radius, block) - end - if shape == "cube" then for dx = -radius,radius do for dy = 0,2*radius do @@ -94,6 +100,17 @@ function default_hit_node(self, explosion) end end end + elseif shape == "pool" then + for dx = -radius,radius do + for dy = -1,0 do + for dz = -radius,radius do + local pos1 = {x = p.x+dx, y=p.y+dy, z=p.z+dz} + if not minetest.is_protected(pos1, "") or not minetest.get_item_group(minetest.get_node(pos1).name, "unbreakable") == 1 then + minetest.set_node(pos1, {name=block}) + end + end + end + end elseif shape == "sphere" then for dx = -radius,radius do for dy = 0,2*radius do @@ -107,12 +124,40 @@ function default_hit_node(self, explosion) end end end + elseif shape == "sphere_shell" then + for dx = -radius,radius do + for dy = 0,2*radius do + for dz = -radius,radius do + local pos1 = {x = p.x+dx, y=p.y+dy, z=p.z+dz} + if round(math.abs(vector.length(vector.subtract(pos1,center)))) == radius then + if not minetest.is_protected(pos1, "") or not minetest.get_item_group(minetest.get_node(pos1).name, "unbreakable") == 1 then + minetest.set_node(pos1, {name=block}) + end + end + end + end + end + elseif shape == "cubic_shell" then + local y = p.y + radius + for dx = -radius,radius do + for dy = -radius,radius do + for dz = -radius,radius do + local pos1 = {x = p.x+dx, y=y+dy, z=p.z+dz} + if ((math.abs(dz)==radius)or(math.abs(dx)==radius)or(math.abs(dy)==radius)) then + --if math.abs(vector.length(vector.subtract(pos1,center))) == radius then + if not minetest.is_protected(pos1, "") or not minetest.get_item_group(minetest.get_node(pos1).name, "unbreakable") == 1 then + minetest.set_node(pos1, {name=block}) + end + end + end + end + end elseif shape == "column" then - local base_side = 1 + local base_side = 0 if round(radius/4) > 1 then base_side = round(radius/4) end - local height = 2*radius + local height = radius for dx = -base_side,base_side do for dy = 0,height do for dz = -base_side,base_side do @@ -126,11 +171,13 @@ function default_hit_node(self, explosion) elseif shape == "circle" then center = {x=p.x, y=p.y+1, z=p.z} for dx = -radius,radius do - for dz = -radius,radius do - local pos1 = {x = p.x+dx, y=p.y+1, z=p.z+dz} - if round(math.abs(vector.length(vector.subtract(pos1,center)))) == radius then - if not minetest.is_protected(pos1, "") or not minetest.get_item_group(minetest.get_node(pos1).name, "unbreakable") == 1 then - minetest.set_node(pos1, {name=block}) + for dy = 0, 1 do + for dz = -radius,radius do + local pos1 = {x = p.x+dx, y=p.y+1+dy, z=p.z+dz} + if round(math.abs(vector.length(vector.subtract(pos1,center)))) == radius then + if not minetest.is_protected(pos1, "") or not minetest.get_item_group(minetest.get_node(pos1).name, "unbreakable") == 1 then + minetest.set_node(pos1, {name=block}) + end end end end @@ -151,12 +198,43 @@ function default_hit_node(self, explosion) if not minetest.is_protected(pp, "") or not minetest.get_item_group(minetest.get_node(pp).name, "unbreakable") == 1 then minetest.set_node(pp, {name=block}) end + if radius >= 10 then + local pp2 = vector.add(pp,vec) + if not minetest.is_protected(pp2, "") or not minetest.get_item_group(minetest.get_node(pp2).name, "unbreakable") == 1 then + minetest.set_node(pp2, {name=block}) + end + end end p = vector.add(p,pr) end elseif shape == "schematic" then - --Adds a defined schematic in the landing position of the bomb - minetest.place_schematic(p, block, "0", {}, true) + --[[ + Adds a defined schematic in the landing position of the bomb. + If you want the schematic appear with its center in the landing pos of the bomb + you have to specify the dimensione of the base of the schematic using + explosion.radius parameter + --]] + if radius then + center = {x = p.x - radius/2, y = p.y, z = p.z - radius/2} + minetest.place_schematic(center, block, "0", {}, true) + else + minetest.place_schematic(p, block, "0", {}, true) + end + elseif shape == "add_entity" then + --[[ + Adds an entity in the landing position. + In this case block contains the name of the entity + to be added. + ]] + minetest.add_entity(p, block) + elseif shape == "tnt_explosion" then + tnt.boom(p, {damage_radius=radius,radius=radius,ignore_protection=false}) + end + + + + if particles and block and center and not shape == "tnt_explosion" then + add_effects(center, radius, block) end end diff --git a/bombs_examples.lua b/bombs_examples.lua index 8707e00..0191f24 100644 --- a/bombs_examples.lua +++ b/bombs_examples.lua @@ -1,20 +1,34 @@ ---Ice bomb -nssbombs:register_throwitem("ice", "Ice Bomb", { +--Stone Wall bomb +nssbombs:register_throwitem("nssbombs:stone_wall_bomb", "Stone Wall Bomb", { + textures = "ice_bomb.png", + recipe_number = 8, + recipe_block = "default:cobble", + explosion = { + shape = "wall", + radius = 10, + block = "default:stone", + particles = true, + }, +}) + +--Cubic Ice Shell bomb +nssbombs:register_throwitem("nssbombs:ice_bomb", "Cubic Ice Shell bomb", { textures = "ice_bomb.png", recipe_number = 8, recipe_block = "default:ice", explosion = { - shape = "wall", - radius = 20, + shape = "cubic_shell", + radius = 2, block = "default:ice", particles = true, }, }) ---Fire bomb -nssbombs:register_throwitem("fire", "Fire Bomb", { +--Fire Circle bomb +nssbombs:register_throwitem("nssbombs:fire_bomb", "Fire Bomb", { textures = "fire_bomb.png", - recipe_block = "bucket:lava_bucket", + recipe_block = "fire:flint_and_steel", + recipe_number = 4, explosion = { shape = "circle", radius = 6, @@ -23,15 +37,41 @@ nssbombs:register_throwitem("fire", "Fire Bomb", { }, }) ---Schematic bomb -nssbombs:register_throwitem("schematic", "Schematic Bomb", { - textures = "fire_bomb.png", +--Lava pool +nssbombs:register_throwitem("nssbombs:lava_bomb", "Lava Bomb", { + textures = "lava_bomb.png", + recipe_block = "bucket:lava_bucket", + recipe_number = 3, + explosion = { + shape = "pool", + radius = 2, + block = "default:lava_source", + particles = false, + } +}) + +--Water column +nssbombs:register_throwitem("nssbombs:water_column_bomb", "Water Colun Bomb", { + textures = "water_column_bomb.png", recipe_block = "bucket:water_bucket", + recipe_number = 6, + explosion = { + shape = "column", + radius = 5, + block = "default:water_source", + particles = false, + } +}) + +--Schematic bomb +nssbombs:register_throwitem("nssbombs:schematic_bomb", "Schematic Bomb", { + textures = "fire_bomb.png", + recipe_block = "bucket:empty_bucket", explosion = { shape = "schematic", - --radius = 5, - block = minetest.get_modpath("nssb").."/schems/piccoghiaccio.mts", - --particles = true, + radius = 9, + block = minetest.get_modpath("nssbombs").."/schems/simple_house.mts", + particles = true, }, }) diff --git a/depends.txt b/depends.txt index bf28a9d..1c3cc41 100644 --- a/depends.txt +++ b/depends.txt @@ -1 +1,3 @@ tnt +bucket +fire diff --git a/schems/simple_house.mts b/schems/simple_house.mts new file mode 100644 index 0000000000000000000000000000000000000000..26fd2e51415ce05f2fb4e5af59bd89e6c5f60ade GIT binary patch literal 467 zcmeYb3HD`RVc=k3XW*=d00w>rvEq`%%%Wne;+({!_~MfMyws$k%;anaW}qm8P)cfA zVrfo^RY`tPaz=c4VonZ1EUPpxJtwt1KR*Q_hGYOQOfSSdfr^5}ywqYV5E-AAlUTyQ z158YtX@rgiF!D1Pi zDJiLW3_?k%DaBT4iFwJD@jzyLNqzx?D4JMOeo0AwZpECplV9^4Qs8OjUV88A)Y{U8 zuNN@3WR=u!Y1b*)^1Emo-vX}d6T`#TTv;v8sld?5^tt4n%6(T|%V(FD9J#F>S;4|C zXxRVYg!=Lw-s?23Px=tH|9pk=d)s++`?}A0y_*?cq`iJlZ^iSja>4rhk8+>B=h}Ye z_n+^#tL)7G{(txX$H@tfhmA5Cuj|~}XVKoKQCkDhP^9 z3u9vprpPELj9us`PFBG=bd(~MI3_k@|DX<6wh$Y(?yJ^pCQY)W$?5vNyXX?eyz+&^ zxp>d>KK#z>;D1zeb2DGP-OFS$hu`nV?RI07n;wq`fR>gPy1Kg1v!6;&PY=aw?b6xV zN#4K^j6fhj-@3O@N&#^7RJC9) zTOYO8tW+d!+w|?vNW;$qY;*3U7`HHvSiex1D>6_$xco6oIiz$80H?FMG9+=^re>95 z?qB#|#eH1Lg|W_sQT1XCt-YH$R``VO?rwC!s@SzIRI&q{yJB8TZh-{ tB~Zwdp8Ja*vw22GM|lQF0#9w)!~>J;a?v`*s;>Y5002ovPDHLkV1gOHk<0)9 literal 0 HcmV?d00001 diff --git a/textures/cage_bomb.png b/textures/cage_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..a02668462949e9d4f543102f6cd1851ca608e336 GIT binary patch literal 928 zcmV;R17G}!P)W3B1OvV^2*nw-~*t;JiP+xOym z-sksd{0}uYHuCW^N0>@wX=rG`<#M4mk8Zb{TrNjTOADrH;&3?7b)B!jx+$#>->)Vn zCIAS9LPVoc5{U%W)zzq|%Z2Il@ttKcG&Dr(m2N7!&hzsf;ozBfWMuM|inljPdq+Sm zEG!U>Mwy?VClCmbNF-3N*49$oy_;ZrJ1N7!ocWctv3**Vl(V^XV8P)52=;L+Y$vre@)C@iQ{TPMWPmZVyNGr`ca|h=YNn*z9gm$|)$D{MUI?^1-pY6eJSi@tgGs7H;Js z?MpFPc8F*jl*>7+a-MQ|jm+|O1@M@&k4pz~^c0KOBasLI87qy)<|QXtRP#EiFE0Wb zn&v{&Tv%8D9MR*HDM6vY6Y)57c6RcT`z=Idi?i4Ji0DR89J*hs%zCjqOwo;?0CMTg zW6VY$;EekX(wFyQ4~N6_-gye8?rv)KkF-enAC$7AIV#aAc47M4uvvP{ODTkxl=AU8@41R8F%rd{~WLnC8iz zA5k(BM+HX^k*zm$BPe36vr)Q@!|tU*-$|v}##;VQK6$oHX}XR-c^&=QxPGI|k>d@ln;zP3)UNGm(vy?#-9?fLyW4m3 zUVQKGd*0`LK9m1(T3cKB>}WTmGYdqcQG&rBs(cv=g>YS$_V#wd;V=~y6ohFYV&ThJK#P+w>+smQ%ei zsoQsdUQsUBL!F%{`Kpg!&m5=!xA(Xc_>zOQHQY{bB98~a7Y~PJ&(0S0U*%LPMLZtI zn7?p|!F%VJ_0IE*x1Z4m+emnqF$s{zBVe+kScWs13;;tzLl{pq<^dRd+92I<7fS`% zU3q}elNR4P3GoYX;+?Znek7Gj;kqsWa_;3~3KEO);x8=-nvhz>Tx5n%M!yj)D6J8{ zfC8jpouL5sRmJ&kkIP=q!-&OV0L<$-09;u>ZCOSOlwbhSQjELXI*h4I$mQti>4A=p z4thf$AtEa|PtR(ZnAS{8YnhnVGUjMWPin>-EpJEH@W5WriO>hkC3ax6wY70@!x5A! z{;3~s-4m^gs-@A)yior4Q-q>cYz-C3XA)s^nb(xLJ|KEb{*6kH~C) zlQomGC`lhiH4Y*oD>lX)En1432Uzw5zku=!i1T%yGA)a>nV+z3-6_Rbf_FuuypTD` zU-N%+)Oka+K%pQi=M^V<*gUG{UcbQoREkd%37SlWD#M+Y#f`q__;Y!I+LjoHE>03z xTT3Jop>4_K(UilLd6(hgVKxFYK>g;;{0nxrZ|#Kh(*Xbg002ovPDHLkV1j4xm2dz6 literal 0 HcmV?d00001 diff --git a/textures/empty_evocation_bomb.png b/textures/empty_evocation_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..2319fdd6e5495e2b943300117d4caacc3f23b6d5 GIT binary patch literal 739 zcmV<90v!E`P)=Bx~?-ZF+o8=0r7a8 zEmbZTslq}IR#q}LHpchV5I>C?vJ|&iNRG>}PZ5C3QryB+HqYij0Ax=mZ_2;XY(InM za1bqVQ)_MDci(=qI|;BbQc5rw#4rprO#>hjiNI{l9@^Co4qGgQY)yo0O-Nw&b~OQO z4S+NZ1Nl~8CabFYZ?f`~mv*&-FU6VcE-oUh9H-XWK&T*Ws!Q_|Q+b(tz3FcX((mW! zXbF-us&FvloaVvDKDj}X0^o=(LVtaNL#Y%Qe!m}px%3PG2|170ySR>IqETtZA}o+h z($dlb)z#HpP%k5;T+Vr=^%aAZfb752#CtuTb7~hej}Cxg7>s(qu4-)!dELECcQKef z%G9+&GOkQMW??GH>8y*JUg@)r-`IqWj9oVPb+rn4(gi>;7~GVDxjXH2hw70xwj<FhCJ74ea#!_yZV7 V=CX~_$fy7S002ovPDHLkV1lZTN*(|J literal 0 HcmV?d00001 diff --git a/textures/evocation_bomb.png b/textures/evocation_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd20382cdd1c4f9141be31bcaafc6388289005d GIT binary patch literal 620 zcmV-y0+aoTP)N!OQo5Or9dwBV zGHAtBTl^nvK?@?S4i)h)uqEH+nkM%++>hQE#IxM?^>|r;1!K_rZb3x5ki-siUm^6q>5^ft7k) zgJJ*|FhCzqL^l!kfH=riFlWY7Jg?QrSr#kxdWh|Y>`FiK8Y!TpfdsUcu3&P79QFA; z3v(w3(4!(Q&{OXlo~1m3Ou}Hv!sdW&;-f1{Pr>+dJ%zZR%M@CzR;9RD#6&$S*)fT3 z7>VRQ&66V@MXS}KTrOip1%mF;a3d71!oEM8`3K)=eApNy2o{#W-!8ZcT_EFMI@rw; zOO9jq9!(5(^e?*+v93bTKXZITe${>;SsN2i#n9zx@VyS+swl2{!;6vxlv~AB()(aC zH%`Otv2X@P4hPoduya%d;8^|?yKfcIooQw!w^{3S6ky4=#1c4ArR@(bu&=97>3F~N zb=#IpSqtmoi%HtL#pPsD)*VNmHhao{;-+njqe^$?9)AF!y2Z_4AV3LkdNAyzaTyz&s?rR$e^oi<~*}} z;5{QN-P4cV%k8Vvtnaz00CqWB`EI+(j#LVZ&*uXmnwbN@lo;xf1sbfD_%>)CQ;H}B1Nqm;rh3`V<4Bz5^3l;q-Qz8~f-EKM$8 zrqZ09UavO(e2ybSoxJ(=PuRR(FV96@M5$$`E**3WHA|!=m%02!*3LjeTf$Yd7A<4v z$%$){-QB64aPJ^_y%)>jTfY#WNz$3svuvcp&dl^U`UV}h^*$yqjan=0*Fg&Qj?dHPllh5e7K+dJQq0^cx;;S_qIgRffpu?_#O=8F3n9UJ4=>C=>1 z6>0@;&@_HK^eE#CG1gW1Xg@iPCx0Ctj|Xqu0000Hf%cv`EWDVF3{p ztPUM)4F5drN$?Mf4yI13Lp#gB&2&)2>U`1pw9t)0&E|~NHr*0${@vq4*C^_FI=_d{ z`JKZ#@IUc_-KhZkdzy7;+wB?+)+s={*U(chCa^4vSS*HRSr{wG@Am@`4u>)B-6e_5 zExPrzU&cf0rQ@6<;Z-$ysp!h+$#dAYO(v6}v9S@uuB~Nnb2Ihz^^A>;@k!4l&+oXO zLaD^wuj+W^;|sj}MH2v_Pzc+$nVXxd7LkK3Efm|^Y1^`eY(oRvH{8wVZy(ZMi$S@1 zaazMkN51T-=&TtM-~2CXG~X%x{rx19Nrt0Q&<~FAQ_t@V*FK3A2%s}h^Zp|z(BrLa z^FB!IHm`PdbusyPka#@Kr@K8^mIc7j&=8XCyN5&54>98$##1v0zAhcKC)kwLM3?Sj31#A^*kzxSB?@Q4Q-hmnyHq_?-1*o9rZcH=oj1k18mJ3p&s{rj*gsyHr~ z21M_um;Gx^-uyPfOP`&^=-&P*EP zXnKq<2+2zlQa`?Rk(y?aL!B0Al>;K3)ikPzLaBPVuHJX4A8Q1BYy#{SW)x79IfX70000< KMNUMnLSTYe&p@bqoB7(OrETJICx+x+9%|y(|54Pr#{kurb!pIIhSLZyO=bY!U@E_&z zc({I~mY35DxZQ5-b~|FFsj4cGNQA<|LL3eUR;v|7QFw5FgrYrL85$Y_z~yqG>pG@s z;&eI@y4{XL(|DRl(An8Z(c=n|{XM*$lLVTZx_?&lbM-` zX_|<0Sy{w$a>yt3n1nBQUDnpE+7~TVi*Q4mkWUU`g)iP?4ng|`=?{&<`uuh$E}d}0=Wh+IJI zUi@noYLzA|!UC}vjg5`q^Z7WfUPMZ{>hoIZf1>X~h!6TUPO2TuKHLX}VKCyE`R%lS zK_)sFOdDb9N)AbvCLR%;ig7&U%!VU(*d6EG&vb`ouGo;pfZK%MT2=-E?m1W^;IKT_tyU!Ht#{ zPE}Np1{7NaVr8>mQFzi`%=^U!GV;7M^n5}~&p^{O3ZfCdPEB%eKElAj0J*?4kd>d$ Y54bk?=I)q;ApigX07*qoM6N<$g2x#~@c;k- literal 0 HcmV?d00001 diff --git a/textures/kaboom_bomb.png b/textures/kaboom_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..ea968c89f883bdae35a2fad22b14fcda806afe63 GIT binary patch literal 837 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 Qf&c&j07*qoM6N<$g8G}eo&W#< literal 0 HcmV?d00001 diff --git a/textures/phoenix_fire_bomb.png b/textures/phoenix_fire_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..772c4c2498d3a0982bfb2d6c340796f30b6615a9 GIT binary patch literal 915 zcmV;E18n?>P)(^6WUe4&~D91Nm;G-P@=5iKh7d3VsI?I#)PDyKP>k2$G zGlS3PBN~mOUUWLi*40tFX%o@1GHlbolRDK#bL}g#XZx3`erANJwLx-6J6ARrd&uhr zIeLJfH_j2V?8ara@=`-B50!4E>zN@&E+t9#)yT-DBzL|R!SDCe-`|hR%bY-EvbSuVc zo&C0hst`WL+uQz@qU>-uOd^p0K;G$IPC+~#w*AzAP{2@DV)iJvJ>AY*f%782{e@av z0aY$k-Mb2)(;Vb%M}jTcESksT0brpJ10W%B)ZH1HTuxZyMR~dq=E1ovyG!rIq)d=b z)6>&~rfC|_|MD2)nbVv~AK_%YlF;r!uFc0mtAM#lRLy44>WN;zAv^ZxIPCp~ecx`T zqvAcZ=H_Oe*sv3&mVas~evClNqf&iqC9KMVvjHhj!4gzjKc#bDuT+1viw8@$kp3fr z_Il(3$*XC0l?^Vt8oLA2Eqi#}cTvcn1EUJ1YLIK^U}+YVoxRpPW@Sd(V20cq_aS`_ z0Q`PG!)LxmvagC<35n!~B!7Lih8{ku>{T}9{aaL#kibDoD|;Xk6j zzMh+hck?PeO&}0J(=?QYqRZt1psA^ewzf7pIyxA9dq+AQHN=xK2{1f7%*p%D(RH14 zI*rfgL+F~u;))7h6pQrt_p|sK4LMoNwN$wc;q8{SOn3O%RcF9vIJ0YHoNnO`TBoZa?!Il<~ch2*6{dW#( zNAZ`Hakj38HhU+sbMCZgs~Y%?Hm2&G(K245eQ>-Q07GVLyAQFinnwy(xeY1m0Gba#2l&CNDEJFyv z_~aOF)r~-4x7Z2S?GgaTT^Bk1;0a1&Vkd;bDE?Jg#a3CyC&QqMA0mPs5|2l=AO zgLzjr+P7k)#!#+|J>%CGgCovU0BCj%ujXZidzP=$UnsYIBQ+(++bAVM2sQ@-Jbm}Bq($iq zy$T~!3f+yp0^nqOJ2!@gSZNWIHn%t&$jhyyE;Rh}t!n`<5DW(S4ax`y_c~7X#sB~S M07*qoM6N<$f<<#}-~a#s literal 0 HcmV?d00001 diff --git a/textures/smoke_bomb.png b/textures/smoke_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..517e476c48c5cceb8fab954ff6ddc8eb663f9910 GIT binary patch literal 870 zcmV-s1DX7ZP)@$Z|oIVVj!(8R3Bs2epsHofS&PRL3J4pOI+sFQlJqRr}LII0zg z3PZ(>Ud#(AC`@5Shkw=^VN80parB}(oqu3cyjYe^SV>&hbZgq=JxQuNj~87I;+@a! z%ZKOv@%;S!kLl^@A+vv&3kzl9@i@U?5Y>1Lg+gep>F@6+91hdm+>B|OR4Ns!)he^I zvjA9@MKYPhwr!%(C@L8Y5{^Xp&UKlZnquoWI|&S)C z2M0kupX9f#HyI7Sh}G7{;qFcz4(ujlOtT~K7#U+)VzC$*W13Vd#rXI*mSq7jGBSc% z9@@;|@1G)9JA%Jy4*;j@UoaGSf*KBc)tFp({+zOH+smHM=h0dN;9J-E7XT+>KCW*1 z2~!2x8Q4vz-Q=L}Rnb)F%JfPDXR}!k%duzHt{{m7Phadta0#h4N|6Qj7WYXNhpJT3 zQ~-FnzFz@6ZjA8NBbr^StN0R$1OO{;2>>l+)RsE`#g43P9X7}CD?ij~q|<5Cz`y|8 ze|?g7DzBlG!m=!;t{s=_Qt%3-so;pFMTIDIzM)>Y*W`mA4)Erwvo!Vf^|5F9Ih0!K z)X{72OP!hrL$rFhC^raPnUGDt`_)6?UDR@);Cna!HO_pE11*ODsN!%-ZmzYHRxd(P zZV;lCvXnX4_BVzy@NG2kHSM^IZNppm&^byfm10qf-uA}V8*|yc#6|ZPj(ogCe)}uj zQ@Dkat7E9n6Nrcx<2~cJ{2R{8byj4Vk}R?Bt+?`=ChPO(G0**Y=ZtsoP(03~`9l;} z7HKy^;)q65q2T5z$r8`reqEI&KI2k0%SUIR07*qoM6N<$f^{LELjV8( literal 0 HcmV?d00001 diff --git a/textures/stone_bomb.png b/textures/stone_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..8740a5a850d3b1172902726012b0697d7c0e1f29 GIT binary patch literal 862 zcmV-k1EKthP)&EnJ|11 zeJE_~Pkpc;Z4oAjqWF)2U{U&_68BKsTHV0;Aez>$BV;zF!rI>4B&{{SJv0e@-GRe- zIDF3c9KOfO|A^Y!S}q>xLpZnvAFq9PPUA(>2)PNx|e z83DlW_Y(?*2#3Rzm6ahv4hL?JhtX`7{{DVG{%tG8EjO6#t;hD(%9QyRzh@^{_r9E= zsw;#-A)?VJ6%`eP!(qhtUN6hKPGwUQ38xeH^d#w9t&HjeST}klfXn4#{P7c!SI*b2 zmKH2OpE}I`g`12HEOM={k2e!z+|3Np_WT5@(}~OF0^sD|KM;*Z3veV7;dwfZSZJ;1 z$MIcEWq!hH+Y7+$rR%g7caR}PfX#!x;D&GNcxyr({?+J=y3{pd@z!z^T)H0$_)I zA9ubmX2gGaPmH0O0faaH%TQx{ju4Xqv`s zJYGn{FgRYaf?e3LY_ucZ4St60#Wdo4g7)@yHhC*#Ud=EJq?BlyhG7_mEe5x_#jRgo z@O9fWgq-e1R9;3(Svcd+!LGuPWX>{xYF#I&ID}PESRb1}8GD?wF$cE>0&I)*Ft_-Y z)VHtXT2+AUSB{DKV^?_@iE!cGJ#?!;mnf&c&j literal 0 HcmV?d00001 diff --git a/textures/teleport_bomb.png b/textures/teleport_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..1708167516c271125b1b054e64af1dc0447412d6 GIT binary patch literal 872 zcmV-u1DE`XP)bXKM%!@UETLPFa?&Q%wkIDa=OmT>y=W6Qz1nm0 zUcCIC=Y4r!h5Jw>65;dL4sdfmPdFUL=kp;dO-<9VZJYM?b{ZNQsHv$zRaFXw0*>P_ zIXMYHC=^21bqvEG7!2aoeLflj0WPnsFfua2V?XVsw)-sctVFi7$o!W=T-`V!6-5!V zv$N>B&dkhA)x_Hw3{q}x=BbVjrl+S_EPs#l`W}AX5@X}CE*?F;O)gBOs<2@g)q146 z8_x$PkMUCW9G5@N@zuZpnQK%0;9ekitC7U*H~?2}{QAG-L?Xc-j)Nz6<~*afhFC0r z%ERSnxtZ)_qI?krFUyqi`~6j@si_IWFfdIMfU&VLybo+$hAS|-&BJbP5c%^-_SQa+ zwxO0chmOfqDn)B+s{}+Pxgt6A^6C|2G|CIVZAY?#Ce~pE=6UthVd=Uqj^j`)76It% z>k|Oa)E(lxeKz~cWjxVn6oA}{1%NH{h@B<=3){90zyb9ricr9H>Fw=Bbai#{#P84X zQQ;kg5QIV@1_uXaI-RbLS}Yc^Z5vI~NPhCZ=zB=z)YX38yKo6lTU#3kH@|`qt3MTs z#bl{es)ChtP1DF^GH5TpA-7!WXIJfh+-Va}%>0pJ+NIxr0sz-_Sz1~G!0-20O){Ab z_4W1S^LgH0_YZZV4$tN~yx!dp(z#(LU7yX<)6>Jk!oodZWp{vhJWev1nKvn>Kent!}4x$Zf=fjHj8Ch^hP2=QB~HP*HEXfubpuX-V+Yg{f@o`#!d0^9y9sCO!L1ll~B|Uin0000gsB`k00S(c8*9SLLd-8xsST8<2VkrwY3C;K?({A&@_$t`FR!>7a1BF0w5d?W11$J zOooz@64sf40Krg*7r7igJw5Dx-iR;OPigZh84A8qADl_v<5uhCS1M&DudjT*ztPX(Z>t4mzlV`F1D zjst+)Y+g-4qEU{HRw3ljRS`3xEDxvdV%xSDhJkI{7>1#gS`F=xKgq-W4hL3N@I<3g z0A_PD05~#-+O-VeLgWva9MO*9RbE(HqP4XZ8X6inuU|n#@;Qr09-v#ld)gx#m^3$Y zPVZ#q$zDjMQjAuA$wT==_*V)dLjIoXn>a-X;KoH;{#VxlVh63aJr6< z%X5@gMQQ2(M93&56bi9(!Qq?rnFq5D0|NtW2eLp}O%1;QeVlX0OucwP00000NkvXX Hu0mjf=4Vj; literal 0 HcmV?d00001 diff --git a/textures/water_bomb.png b/textures/water_bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcc4050c54d5189434d410e4e4808af0d9d58f3 GIT binary patch literal 885 zcmV-*1B(2KP)?g;p%&N4sU+% znu^%b|F+dj$5OeVv`#00i&128;1j93|XoD;tuAXhz! zsvQL2y!QBm~^z`&_aO*1w zvEHfZ_?%P)NC}%-EjF|?HDFWqI3Bz&+b@pslrcy(mq$6B{}K0Im9eH{0JP|Wf0wIN z{567_WU&$=10T)MsCer(-fUhYA|fbTBPiO_t?VA!!5Q}ynM?*ZkSLmpu7(X*#bd1| z5s@fp1}DE-BERPiHr`o8$XiDc9n(lD8#V@~@5=|J8qVqpnkJ|bLFnsAyj46SRMRAp zzl!p-uf*oA6eH*E5KC+(7K_p2IxO8QaDLTcW@d&*fg-SF`*!{VZB{y6vAw`NoJ{`ks`2Iu#2`(tR;x)rVk1u z$l55Bu$z@`DxnXdpr|ZLIIUpTRz$^O*)VO{G>MsvI_`1C(>8AxvyOGybNM{)|M~x) z_h;ohs-&cZQ`@R}Iyi>c>&4-4ASQ=SrxU|4C@(L^<#LgelY^?N+`9RUr9aK0tE&ru z;^Jb0!63S><953dL5BmErqP{F)7;$5(mz*Y^IzcQsHAeo4)PDakpqY3ia;Phe}6y0 zV324uN?~Ckx~`)vce^p?&u7)LWkezo;^s|~p-K*z4d29n_*ay=t!vPAJ)5A$@5gfZ z$Zu>Ky+rqk1m_wX`S9Q#w^LV0oGtif!O)#NqS0tp91e$ho=l=7&R(XqR}wc*@f!|iiD*P)~Nx$r4*<|CMWN z4Az<^7N5@tKq5T?fFZ{aOC|vLcLL($67#dnx>l=oScMf*DQatLp`xOKeaXQK18aMMgIGa7rql|Q{L@6sPW8>%+gvcZehr^UM^~oVa zBFz-?QxbrW2?fvo7jpeRuaN1ZtaPm<6*+_Dc;dY%hgiNAS9-lP=bac)ni!*Ck&l`S@6kL3XqraZ rxWVv1KUWh5?d|O>1O|aQix=|+^_@G=n82j300000NkvXXu0mjf(zTQ? literal 0 HcmV?d00001