From 261385869c51a725d8e0063e2bea42f3a4e1775a Mon Sep 17 00:00:00 2001 From: Someone Date: Sat, 12 Jan 2019 23:42:02 +0100 Subject: [PATCH] gitify, so I dont delete my stuff again. --- License.txt | 19 ++ changelog.txt | 13 ++ control.lua | 264 ++++++++++++++++++++++++++++ data.lua | 4 + graphics/entity/Bomb - Area.png | Bin 0 -> 6873 bytes graphics/entity/Bomb - Charging.png | Bin 0 -> 6793 bytes graphics/entity/Bomb.png | Bin 0 -> 5608 bytes graphics/icons/Bomb.png | Bin 0 -> 2147 bytes graphics/null.png | Bin 0 -> 2792 bytes info.json | 10 ++ locale/en/entity-descriptions.cfg | 4 + locale/en/entity-names.cfg | 4 + locale/en/landfill.cfg | 27 +++ prototypes/entities.lua | 77 ++++++++ prototypes/items.lua | 15 ++ prototypes/projectiles.lua | 71 ++++++++ prototypes/recipes.lua | 20 +++ 17 files changed, 528 insertions(+) create mode 100644 License.txt create mode 100644 changelog.txt create mode 100644 control.lua create mode 100644 data.lua create mode 100644 graphics/entity/Bomb - Area.png create mode 100644 graphics/entity/Bomb - Charging.png create mode 100644 graphics/entity/Bomb.png create mode 100644 graphics/icons/Bomb.png create mode 100644 graphics/null.png create mode 100644 info.json create mode 100644 locale/en/entity-descriptions.cfg create mode 100644 locale/en/entity-names.cfg create mode 100644 locale/en/landfill.cfg create mode 100644 prototypes/entities.lua create mode 100644 prototypes/items.lua create mode 100644 prototypes/projectiles.lua create mode 100644 prototypes/recipes.lua diff --git a/License.txt b/License.txt new file mode 100644 index 0000000..ae7e15e --- /dev/null +++ b/License.txt @@ -0,0 +1,19 @@ +Copyright (c) 2018-2020 Someone + +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. diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..9edd64a --- /dev/null +++ b/changelog.txt @@ -0,0 +1,13 @@ +--------------------------------------------------------------------------------------------------- +Version: 0.16.4 +Date: 2018-08-21 + + Changed: + - Stacksize decreased from 64 to 50. + +--------------------------------------------------------------------------------------------------- +Version: 0.16.3 +Date: 2018-07-29 + + Changed: + - Added changelog and License files for future reference. No functional changes. diff --git a/control.lua b/control.lua new file mode 100644 index 0000000..a3a833f --- /dev/null +++ b/control.lua @@ -0,0 +1,264 @@ + +--[[added by someone1337: water-creation + displace dirt radius]] +local explosionRadius = 3 + +local displaceDirt = false +local throwRocksIntoWater = false +local throwRocks = true +local maximumRockThrowDistance = explosionRadius + 9 +local bombs +local replaceableTiles = +{ + ["water"] = "grass-1", + ["deepwater"] = "grass-1", + ["water-green"] = "grass-1", + ["deepwater-green"] = "grass-1" +} + +script.on_configuration_changed(function(data) + if global.bombs ~= nil then + for k,v in pairs(global.bombs) do + if v[1].valid and v[5] == nil then + v[5] = v[1].surface + end + end + + if global.ticks == nil then + global.ticks = 0 + end + end +end) + +script.on_load(function(event) + if global.bombs ~= nil then + bombs = global.bombs + script.on_event(defines.events.on_tick, tickBombs) + end +end) + +function tickBombs() + if global.ticks > 0 then global.ticks = global.ticks - 1 else global.ticks = 10, executeTicks() end +end + +function executeTicks() + local x,y + local distX,distY + local energy + + for k,v in pairs(bombs) do + if v[1].valid and v[2] == 0 then + energy = v[1].energy + + if energy > 49000000 then + x = v[1].position.x + y = v[1].position.y + + for xx = x - 5.5,x + 5.5,1.5 do + for yy = y - 5.5,y + 5.5,1.5 do + distX = math.abs(x - xx) + distY = math.abs(y - yy) + + if math.floor(math.sqrt((distX * distX) + (distY * distY))) <= 5 then + v[1].surface.create_entity({name = "medium-explosion", position = {x = xx, y = yy}}) + end + end + end + + v[5].create_entity({name = "water-bomb-detonation", position = v[1].position, target = v[1], speed = 1}) + v[4] = v[1].position + v[1].destroy() + v[2] = 1 + v[3] = game.tick + + --[[changed by someone1337: use explosionRadius instead of hardcoded radius]] + createWater(x, y, explosionRadius, v[5]) + throwDirt(x, y, explosionRadius, v[5]) +-- no smoke for now + -- else + -- if energy > 40000000 then + -- v[5].create_entity({name = "smoke", position = v[1].position}) + -- v[5].create_entity({name = "smoke", position = {x = v[1].position.x, y = v[1].position.y - 0.2}}) + -- elseif energy > 30000000 then + -- v[5].create_entity({name = "smoke", position = v[1].position}) + -- end + end + else + if v[2] == 1 then + if game.tick - v[3] > 90 then + for a = 1,explosionRadius*2 do + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + end + v[2] = 0 + elseif game.tick - v[3] > 80 then + for a = 1,explosionRadius*2 do + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + end + elseif game.tick - v[3] > 70 then + for a = 1,explosionRadius*2 do + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + end + elseif game.tick - v[3] > 60 then + for a = 1,explosionRadius*2 do + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + createRandomStone(v[4], v[5]) + end + end + else + table.remove(bombs, k) + if #global.bombs == 0 then + bombs = nil + global.bombs = nil + script.on_event(defines.events.on_tick, nil) + end + end + end + end +end + +function createWater(x, y, size, surface) + local players = surface.find_entities_filtered({area = {{x - size - 1, y - size - 1}, {x + size + 1, y + size + 1}}, type="player"}) + -- Setting tiles to water where players are standing deletes the player and sets them to god mode. + if #players ~= 0 then + return + end + + local waterTiles = {} + x = math.floor(x) + y = math.floor(y) + + for wx = x - size, x + size, 1 do + for wy = y - size, y + size, 1 do + table.insert(waterTiles, {name="water", position={wx, wy}}) + end + end + + surface.set_tiles(waterTiles) + + -- [[ changed by someone1337: deep water at the place of the bomb itself]] + waterTiles = {} + table.insert(waterTiles, {name="deepwater", position={x, y}}) + surface.set_tiles(waterTiles) +end + +function throwDirt(x, y, size, surface) + local dirtTiles = {} + local tileName + local floor = math.floor + local distX,distY + + if displaceDirt == true then + x = floor(x) + y = floor(y) + + for xx = x - (size + 1), x + (size + 1), 1 do + for yy = y - (size + 1), y + (size + 1), 1 do + distX = math.abs(x - xx) + distY = math.abs(y - yy) + + if floor(math.sqrt((distX * distX) + (distY * distY))) >= 2 then + table.insert(dirtTiles, {name = "grass-1", position = {xx, yy}}) + end + end + end + + if #dirtTiles ~= 0 then + surface.set_tiles(dirtTiles) + end + end +end + +function createRandomStone(position, surface) + local x,y + local tileName + local floor = math.floor + local random = math.random + + if throwRocks == true then + x = position.x + y = position.y + + if random() > 0.5 then + x = x - floor(random(2, maximumRockThrowDistance)) + else + x = x + floor(random(2, maximumRockThrowDistance)) + end + + if random() < 0.5 then + y = y - floor(random(2, maximumRockThrowDistance)) + else + y = y + floor(random(2, maximumRockThrowDistance)) + end + + tileName = surface.get_tile(floor(x), floor(y)).name + + if replaceableTiles[tileName] then + if throwRocksIntoWater == true then + surface.set_tiles({{name=replaceableTiles[tileName], position={floor(x), floor(y)}}}) + end + else + if floor(random(1, 4)) > 2 then + surface.create_entity({name = "stone", position = {x, y}}).amount = floor(random(13, 27)) + surface.create_entity({name = "explosion", position = {x, y}}) +-- surface.create_entity({name = "smoke", position = {x, y}}) + end + end + end +end + +script.on_event(defines.events.on_built_entity, function(event) + local newBomb + local bombEntity + local player = game.players[event.player_index] + + if event.created_entity.name == "water-bomb-area" then + bombEntity = player.surface.create_entity({name = "water-bomb", position = event.created_entity.position, force = event.created_entity.force}) + event.created_entity.destroy() + + if global.bombs == nil then + global.bombs = {} + bombs = global.bombs + script.on_event(defines.events.on_tick, tickBombs) + if global.ticks == nil then + global.ticks = 0 + end + end + + newBomb = {} + newBomb[1] = bombEntity -- Bomb entity + newBomb[2] = 0 -- Bomb state (charging:0, detonated:1) + newBomb[3] = 0 -- Tick detonation occurred + newBomb[5] = bombEntity.surface + + table.insert(bombs, newBomb) + end +end) + + +function setTilesAndUpdateChunks(tiles, chunks, player) + player.surface.set_tiles(tiles) + + -- Creates a stone entity in each chunk effected by the flood fill triggering a minimap update and then destroys it + if chunks ~= nil then + local force = player.force + for x in pairs(chunks) do + for y in pairs(chunks[x]) do + player.surface.create_entity({name = "stone", position = {x * 32, y * 32}, force = force}).destroy() + end + end + end +end + + +function modifyReplaceableTile(sourceTile, replaceTile) + if not replaceableTiles[sourceTile] or replaceableTiles[sourceTile] ~= replaceTile then + replaceableTiles[sourceTile] = replaceTile + end +end diff --git a/data.lua b/data.lua new file mode 100644 index 0000000..ae1140a --- /dev/null +++ b/data.lua @@ -0,0 +1,4 @@ +require("prototypes.entities") +require("prototypes.items") +require("prototypes.recipes") +require("prototypes.projectiles") \ No newline at end of file diff --git a/graphics/entity/Bomb - Area.png b/graphics/entity/Bomb - Area.png new file mode 100644 index 0000000000000000000000000000000000000000..e823795694d9bd01312ac659cea53838b0655aff GIT binary patch literal 6873 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 literal 0 HcmV?d00001 diff --git a/graphics/entity/Bomb - Charging.png b/graphics/entity/Bomb - Charging.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffc4c291367db61b9a39a726c2ea696d5e7a3c6 GIT binary patch literal 6793 zcmZvB1yodB*FS=EqqOvp0@5Hz3=AzDKD2a)FoeX=CEe{XfC!RG4mEVg&?O)t(%t#t z^FDt6XTAS#t>4|}-o4H}XYadqoqZ$KRps$?v+!XT&!CSj3@3JDIIxg~VhvnT)r(%=JT(@o3u2Ypt*3jOtllA9?j0L!- z2VZm6kZ9dPZR5OyaFvSCx#+sj$R*~_{tqXtF`Jy+zxa=9);dh?kHzS2-NAQ32u)o+ z6es1p+L=-zk{HPrE}@bb&}y7>)Q}z1=*8;1S=E*Tfd2nr&nXDpT|B%cN`f8nui1at ze-?`cp{_hE^55)#_V~h-5b%4EKePXP>)c=o_&kC|SLy_kS1PoTo&jA$^72de!OX27 z6nGfHZEt!049`=2*1P#*_wnh(`Mw{uecY3Kwo_xuVbK*ZAE90XG3A-K8AyQCSyuMI zO%EALaMr`={zkagXM(466plXbYIW|*Z=v`--Ay8*TU|Sq)MAZU#Ndq|P7}G~_LrwF z729ho9lH2~gpv;^nN!O%L3FJnmlrmx^2?TJkEvWLmjZn}J(mM#v4#g_U6z(j2Zuw5 zj|`UW#@ZcAfFd(DCg$R`ShJ@MYTgQ}z9!ETE~r*JZoV6v`=&$Z?W0HR&W|$~SKV9- z&0RSxF1men?qH@e=iMzHQ>V_za8=bG?UzZ0 zv9xp@Cxa-Wjm_D)b}G#Mq$JuUYem!SZw0k)C};gPS(^bYEr=8a-9fof ztg@&}MS?$M`9Vc_lUuY`=e=#`=P_}H&q>xTuLm)JQO38zOgSz7M{qmhgN#Z~=f|w7 z!#_H2Xm@5M!@@iueNAjEd13#CYi5!Sj&~xZQC_BepL(V zz;kK`M@8x=kObA{c4L|3|E250$Gw_-1BGOMzb!!a4AXQDyfA8qW5(t7n1nA5W8mS} znogHH4ernY>nqT9+l1=HJ<`iCv~|gVIxHaONW)CD3>z^p2m6{U@6Dps$+`FF{B{fP zOWOF!Vx7$#$bC=3;-cDhlohk|wizT*<`4184ZZE6L!4D@zk#xPCb+Jj2(%pc^LriL zun+D=y`_KKE)`CBYl<1hM2iOsI!Mx+T{H^|?H!$9(|~b?B=%}>fUCT|YreTW$D|BzS6_Lj?=8tM@fxHQIi*!ByF z&=R$ru2H|$N`uJ__iduHDaHvW>Ca0c9{x-_9!y(XlgQ0}4IQ1=RyLH{q|&Ysj(|KK zOdMOXWLbFSgidZ+c1J88M#Oh|marhYUlx|R9s3AMcoaeIQVnz&LbA?!dC1=yOD7?j zzji9fH}USx)iRFHv6?aBaOHSpb@2)2!H~0I8xtX|Z2i0nh7p!p6$Xumpf3Twei^9^ zUx~UiXRvXFR809(eRtk!9Zl`$xVfCfxrW)1nx%4aS#2Hbw)R^2`IE$|1aWdt`fuz_^rSexdKd zeapY4+hf5uOcgtpiGwc5OS166d!u$tE-p6dB}60>${WWB-^`fYZxTA)%$6*5E5GnX zpN`1IRHF&18~UK{$nJ2elwQMkVPH2}^g_0|mLg1v*ltpjV#0MpFtn&FRodiZ)D|B$ z4lYd*$FNL-3+B0(yc-vzA2?$sFabg*ipsUIiMRNSj*8K!!WURw{_`kb2j>UVe6e!x z`x}lUEdw1TV+#U`$&^90Z0NcuvmM6(J&D+8E|-Zrq`v)b#iyeA`d7t0wz1dQJHwU> z`r+@wQEd{!*(w<6_DV4Jfp8U*#}z8dR%XN}mhd7b&8$)Jj9?hNUd!g~i!C2wn<_ zjWQ@+!9bm{KgfdgstU<>lGr+H~TnRJZw zR#g&%y9?{e=%oiYMaL9z6Sx0WvPQeKwA)EU46?SpQfwZd4NyhguMa0Q{zAEOyy@)) z49c!c1y+)xYHYLCNwcmcYOYw1e>v6SOqNo374b>c=@TbIou(eHr*cOubn^Ua1?Rf0 zuEl*--v5rJ1?(aD5fDTxDjwQVWxlcJAeU7|#$83W#ptTf+#AwRjq>vwXAxk&SIkey zj#N***HxWyIE2$07iZJNRyVE9q7;O5mWx}u>wCH760dM1t@Y{0W0lz0#PT;S^!n4} zhgv}2qNpku)4)%&NQ$mJhxPF2<_}F?N&rT-P|Bi2aw(I{2dQ*!9;EU)olAk<9$foJ z@E>=G+<#&KVa&Z-+2DRQ^Q29x4vo9&z01h!&iE=Gy7u3yCRFJ`zW+9baLy4nE z_A-rYT_SW^H!YD3`Q4@y6t$He@F)!*Uom@ za3D?|KiFRlmqo5G(MedEs6~D!Sdy zQJK~3f{yEM9`QMqVfpPyP9|~_0~&n?jK7BLW;pdHwvs`~sI+SQSG|`T2QI8>XSq4b zkxB$=2G4N-=vbJ+*|}C)3w62;|4w-?B;ANHS>@mD?+_XLY%;&PKao{M9x`cpZ54+f z9t4NKJ30WUF7gNa{3>*DxW_shihgU?gt^+WKoJQxEv=w2XQF|Ai0p@%*%YPQ=x1bRLPj9=m|q$+!d{2Wx8|@6?<2g}IQ; zuME{SaFLgxN50jK*#}R6veL`aK##Mm0=&Jb6kW#ul!=3Cs5ZRQ6~>P5S770iUU!kl z>5?ANcrMRgm^6n-)*q1?B0SJ5{D0{f`X82Hy*Jz-tciD&;Ts>vCzf0P>yEcVf{EgHf{czl3AC~j`PFuJ5V`bbuNq0%PXo2wX?X-9jfZ!P$Kh3I&&G78Nr!oh`;!ipWM!~ z1JlgGMWa0{5o(T6t1_u(7)j0^6}ONU`-$C4JB|-9cCLVy*B>y?)Xb)PiJrP*cLs4P z;M6j_u%@mptO(a+2u8#VuBnoX*U1|)lnY6bG2#v=H$-)heC#I1 zidq&XfXB#y{<;$6pD02EIbG(6enJ z-TnXfXK1N>PR`xr>2)r^Xo`t}ky&qP=3hq{4D-fAkES@7${Q)^30UeJn&4ug0pl>} zt8`hUa)(y6;PiZEB_gPm;U1PXZS!~<=_$qi{SkYD7TYig=!D_wQQ)R53muTPvR#rS ziwtq@o+hDdclx-)IIH|E&SEyABJdKPb3yfR{)v3Jjg(>2DU0D+8C#9Jz5ae8Aljr0 z4k@MBt7-dH(&M7Wbmi-PQbS3^FwhmT6rnLDByD9XmY}W0POscWwL?c6Fu#aL`I3%{ zbEZu;723x|7z!dI1@w+c$z5SMEH+`scFR@I89?A33s;zC+YyAOxP91(`G9c6Sk84K zZ1K+vK@9=!Sanw52Q%%at$0A1Wj1q*|^_q`pO9_>`? z_LtBB-58-Pj0H#UYT-AoiKre->)qkV@9LO9Cl)2#V+}o)0BPgaoT&a@5{=hZTa0>S zM}0f5(H&2#3afQ~3?Bd0&Yy@PS=1h$FxD%-c6q{Q?H&c?j(4_?|Y*B1BrF-cq0 zIytH{A{|=A$F;r>zP3#6J<8=E&1(Whm?_eBzPCtasncZ8qg^j>8|WCy8n5)5CwshL zEHL}(L8QhzJa#7I*S;Hg%}|Rli|m3#K(NKN8TEoyti|k~Kq7&ujT{(haS7%oj=>-m zy|MCor2>klY<~1aG+VH87OzsTWZAuFbjmOW0!2Hz^)7zJHV`ggFEqY@E-(vv8mwuov%N zLlqFT;hCB~E(YjiJeAGPMpfv#{9b`m=U^BGW{iL+K~pjUhdt=1IET+Q$As=`gYsZz z8#}%Zhj;r{kqU4BgwFsR@2mDuYWYG>u8mWjx(RQ=tum|h%;-u1;r7W=+2F4@<#K}U zwA6)HGA{Zt>S(o9PmM*n*0f@ttBdep zy3D~af9`Tkpd|qHL_dA#l*e|!R4_HaXTPmwnc=S!9d%MtDJ_;DSOW!y4zYfz{$JaI z8}4apHShciUz{Je7pwZWo6mFY2g4op%l zFK-X)U)%rUmhf0zgQ4AT9*WSiPZp_{PD#Ti+uu&KX_kQMdIF7P&?>3EXaELezPex% zYhg7vghV8^7imc=@0BFG)|a^(7F^Eu&NL8HQX0f3!O;!Ig%j?bjfk*amne2@?q|l< zE}G~P{YKS+0-leLI|zTH>ajNR=W*O(z4iWtKh2yVBzJi10JflNHTz9ddwPO?r#5MJ zHmZS2P^oXwKs7Z$D2YtP-GaSXgG9p;x;Ry=l*{!ZY-A3_++A?Z?9uB6j*TxI5F`~5Q!KQgVaXI3&ufcGh*`I9zX}#bY zda2so(;Bmaj_~|(CXpulkXKfyZv0wnhiDsz)p^}Wsk8{so=2TGfY85lBr1o^e#@*s z4Gk0y_cS{xyG>f98;p)?sqyq)5%%c`8*Ti-f=lv>r1u`4+N==z2Cs})RAiIf=5-K_I+T79o*6ud?U*2 zxGGZ+0tz;W<(&U5#D5YsDo2qp9~`-{3uh<8L5NS#T!rd=zKonyKfaAv@*B`B0lJlu z;bVw@uw>LuBg^ktZM(U7#qlAE2rR}xj!pl(H}Er@*y@{ON?trC?!bNi!sw0v)6j2p z{aty&V2;V9msweo$>d7+W2VIj9ebyylr&afW@f?Dr;2%x7Hv~^Q68EH|I~A&6B`6F zmWQqS)*!(5V3*1#%@D$d`MDngSwxjdvuSuO#Vxc>QK60B5#mHaDL06LpJCHZ@{MJY zQTedICqG$io!wwDwRJPgUo$meZ1T-tsN{kPQYHo2o^xFfrE(c?C-RZtAE;J2U=lsl z-M`J<8oP+zXdW3<-R&{Hv2_>D7qu^pb3K=qxb(e#a5&hSZj zo5lT-Xz=OMguBYVeRQpXj{b8nzRG?1l<zxmQp$NhHxXG&Pz^Afuy-IDFQ z(J$lg>g+5p)s&+?K#X;YZ=_&sCTy(ioXH58eg%P6v7wv+hQF=ww;@WQ7w?MWzWfws z60sGOpIHl&x1oOM2|K1ul^fjm&sA4f6c!XfVjNVDN#OUV$u-+1eZ#|7Ulro7&+Vs5 z;jia5&xgkh8DaMb=_AfQe)QSd>7v}S`6@)M)9U(jP1uEeXecu-YQ_y(hT*&C%z{6k z&T@~^?*j%rP#$_Ie`f#^B2p>0738Q%-{cUTBWW_C#cIgg+np2hR?kj}m|k$d(;iC zX5CPn$gmHW?U;W%{NFwgJ`f9OuMHd?zAib94Rx>`qAuR%6Nr*r&z+CYNWWuvvg^XH zND!GE^5KIq6A7u@y@Qzki8Ui}ga~lH))67)+!qZIeM9ff3LPAyeEI&~e7Eof*M6#8 zT;<7iJ+m}|r#L&rxJ?-$U_1N&0zJXqT-v_L(&j0GxdaKR^vEiB@toQIb|vm58Tx|! z9V}=31-HJuG=i=m0N~8)O2Wb8-KL)xIH-*4`V#n6aisUAP~G_KU8>Xx)P7tjiJ5sb z3SvfAXOxJv*S4XtSJ;?rWC9Fe{BK|bAMig}WdJHpN;fE6I@$H>i;i0+zE(gFnql1Z z6ZL8U7x0_;+PnjcEmDd$fDG}3aVr#!JcZqBd33X-*mQR;c^ttiMub9_pF%V*McpJcbN}pbNptQv^elDq=s? zjXILZrKgc!mq=YbqVn`tw%VKi24KdWy$tf#t9!S)$~)f~b_TpIblo@-kdn6kMTC9Z zAFz?q@Gph5<3W~JQ0h*>`^?1DJw_Eh=na5f?}WEc+MhP*Q!XRf&rcr*Nt15?${hE$ zb7#9JPyDVzKu|1>5NxVY+MtV9F0K%+c zQU1oo%r&2$l{Zrf4=E=~s$vV|?s3hFQ%fBImJXICPn^O*v0gHeK-aHaSHNet<#T$8 z*d$kb?-Bu5%Z3g`>Kq<=5wXFSim$=X2Gz{+R^LJr<89Ohd;xP3dZ~;MpR2XbuvT$m zzzOxGtrL0Xs{v_WztMvPn`;Zb4;Q-`54G#k$KPe_?wd^L$Wsb@y2x6!)K3vh62?R- zC)W2gol|7g5+sgLPGw?*__3SV;XJ=&-4n!Z|4~xn(LKuJD;(BR-|+Z{-$p2kvZ|nR I>9;}u1J$@!#sB~S literal 0 HcmV?d00001 diff --git a/graphics/entity/Bomb.png b/graphics/entity/Bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..451e3f4536fdc9f89ad6fca17153c803d7ea6048 GIT binary patch literal 5608 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 ZKL9dTYLEBzKve($002ovPDHLkV1lzRCM^H} literal 0 HcmV?d00001 diff --git a/graphics/null.png b/graphics/null.png new file mode 100644 index 0000000000000000000000000000000000000000..874fc7523093d298ebfb59cdcb0a2e75c661f6da GIT binary patch literal 2792 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 u0000JNkldrFCHd0000