From 261385869c51a725d8e0063e2bea42f3a4e1775a Mon Sep 17 00:00:00 2001 From: Someone <someone@somenet.org> 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 <someone@somenet.org> + +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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%0D5&)n_~`qA941-|-1U;37N@cjI- zd>rP(HZy&vr(ga>HJ|S>UD5hZwXyC7BWT*QQuDLFqT#(|W63s!gY$WNQfbLD8|M#C zdEGK^dFE0#`S(Tl$$O^`E2Vkgj*Btp=H75~a^0wb+0wYdo5ou$LnOPpC$85r-@NrC z8VfDO84T|u)Dx|%%iAuyktb2P#AZln#l7ilngDk&Ug>BMo`3()=6*#;x$f;q_iRf0 z=-cSWJ|2e6-yV`~;SRy{-jDceBFO60%1T2r%*d!nF$&_Qht!OOn)bob(QMU$;cFiD z4-T)uGQz|0ySl6BSU6vbTpwP3Fu1i>c37k9!?i4?Xs>^-eU3)e-zq1m7LhH^AXXP6 zFl#7d@Nu2$M1bw(w)=?yGsj)&XAyV0;>~TJjKsvVCvm57JzL3u&kHsuT6a1K)<yI@ zw+F6l9Mq93oJ@P5AM|xGUuEasWUuME0DlX%RoX?MG!zIZ?WS{Fa+cCg<Yx}toDYm8 zdAW`pGxCy(|4>8^AZ0ARd8!;4>UrndCl$@iRNR&>W7?V05ZF#=NO9rTU4oML;(#2T z(I2F|!jTHP!lgQq{;srec%*h9PEb0oxV?f0*jT#QuCFc#C)DWDkZ*rc7GbE%ET!!% zL!);Rkh}hP&+PqB{sAY>EhyGA4#FVAg{Np@91aF6gkRz|r0hn$uPE3i_a;ftxOuZ? zIh{>bv9&<V&DJM%M}?S;HUyOB_n*7=0FYBZ>uz6bHmi2MtcjmnTG&t+;LePB%jq%3 zT2?;G6=)nkXB@%L_PO$Dh-_oO6(8rQuo5x0A;+crX&47bCwR^OxLJqGctrXn)%~ci zz;rCcHuAxe_jajWZQCJqhGBRBv-3|80-|y!&G4M!kqB`(k)1pLkKd9QIcVf51U3|J z7w5RRm0`{{%2Ruln`@}Uzq;PH)-!kT)1jHt;kUs}lUlHXjTEx5-GW$%6=2vW*OMJF z(w`lps{C*nIzIjt&_^LX+MbMvq33F@{_H=_KI+Zpzsj(3L~niJMH1{B^MH>!oJ8RL zFs@Q^dPH!&yQZ77M9vEV80N}&0USH`nA%6&%*sS6;pz|3TG(IX&%8;p<IX0d;^M~Q zKDDhp=B$S)9asersVgSm=x?T6-O_*Q*@$4$Cm!?tsEzsIrQ?47q_JflX9Zr|&<)*a z&z8z!C}O#pgnZ~FFHMzTg|l=+4KuUK3-5Ns1Vdg}yOmS@l{Wq8sBt%tgk11V1hH8k zMw#U`yJr1ZuvUtrqYjb&U6fE<A<_T{)qlW49aO`~w(ZJ=G=*HWS?q*o03~x<U68P@ zMgz4GF1l$2n$dHAi;HV`X8)QVyJiJ9aNiiXqnqpDWv|WRC_ICQvUG=Qb^O11T+UGz z{-3eD1=s3b(__;tW+yD=1@0*3LiF{u$sGRQp{@<mdKGdetL9ZMRyHV-!R^22=!I-T z3vm?rCO9Kh2Cx@a%5Bp7D{k+<M))UW6MaZE8fvpQ$oW0c>`BQ$6u~}{28i0&4n(2- zzprkiO|bTqPBY{`>m38NIvtGSQL&RCYp8__L{^{Xb{)~d1!Aima=Q)<;Q|TOr#W2* z*>HiBYKNSz-z#u|4A9m18bKt&#uwBu4ksu>*aU)7#u@(GxQ(yjFCuKhHy+2=U{vrW z`aYlBuDU8@)BEU0$q>u`AcG%pauB%RD^mX)BHBp|#kRAdb<*}{FN<FN7gE@2XCfO< z#t(OhyY}e+B^hHs5s(PS`<$iWGk3T%&CY!8(oppx0utxAHGa6+n1+BPRC}5Wo$6U? zXAb=bOa8$o*QE3BM1>$_qlEu5mEQ=g7b!VQ9UFvjf^o&bWv-YvAp&-O_^q5-68M%9 z7*FOsvl2<CC2m1AsiK`ENl%49^O5vX^mlLUf-sUiNIfBcF%+7Dtcpyzl#&1c01m=l AT>t<8 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 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 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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 CpQO_O literal 0 HcmV?d00001 diff --git a/graphics/icons/Bomb.png b/graphics/icons/Bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..620e93d1df4728a808ad4ab6765521f640d06654 GIT binary patch literal 2147 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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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 literal 0 HcmV?d00001 diff --git a/info.json b/info.json new file mode 100644 index 0000000..3ebe2ca --- /dev/null +++ b/info.json @@ -0,0 +1,10 @@ +{ + "name": "Waterbomb", + "version": "0.16.3", + "title": "Waterbomb (and Landfill)", + "author": "someone1337", + "homepage": "https://git.somenet.org/pub/jan/factorio_Waterbomb.git", + "dependencies": ["base"], + "description": "Use explosions to create water (and stone to remove it). Originally 'Landfill' by Rseding91; Updated by someone1337 to work with factorio 0.15 as I *needed* the water bomb. :) Also added explosionRadius variable and made them charge up from accumulators.", + "factorio_version": "0.16" +} diff --git a/locale/en/entity-descriptions.cfg b/locale/en/entity-descriptions.cfg new file mode 100644 index 0000000..266cdab --- /dev/null +++ b/locale/en/entity-descriptions.cfg @@ -0,0 +1,4 @@ +[entity-description] +landfill2by2=Reclaim land using stone +landfill4by4=Reclaim MORE land using stone +water-be-gone=Flood fill bodies of water using Landfills from your inventory \ No newline at end of file diff --git a/locale/en/entity-names.cfg b/locale/en/entity-names.cfg new file mode 100644 index 0000000..9502938 --- /dev/null +++ b/locale/en/entity-names.cfg @@ -0,0 +1,4 @@ +[entity-name] +landfill2by2=Landfill +landfill4by4=Bigger Landfill +water-be-gone=Water-be-gone \ No newline at end of file diff --git a/locale/en/landfill.cfg b/locale/en/landfill.cfg new file mode 100644 index 0000000..a2d0534 --- /dev/null +++ b/locale/en/landfill.cfg @@ -0,0 +1,27 @@ +[entity-name] +landfill2by2=Landfill +landfill4by4=Bigger Landfill +water-be-gone=Water-be-gone +water-bomb-area=Shaped Compression Bomb +water-bomb=Shaped Compression Bomb + +[entity-description] +landfill2by2=Reclaim land using stone +landfill4by4=Reclaim MORE land using stone +water-be-gone=Flood fill bodies of water using Landfills from your inventory +water-bomb-area=Massive internal pressure buildup creates a huge explosion throwing land out of the way +water-bomb=Massive internal pressure buildup creates a huge explosion throwing land out of the way + +[item-name] +landfill2by2=Landfill +landfill4by4=Bigger Landfill +water-be-gone=Water-be-gone +water-bomb-area=Shaped Compression Bomb +water-bomb=Shaped Compression Bomb + +[item-description] +landfill2by2=Reclaim land using stone +landfill4by4=Reclaim MORE land using stone +water-be-gone=Flood fill bodies of water using Landfills from your inventory +water-bomb-area=Massive internal pressure buildup creates a huge explosion throwing land out of the way +water-bomb=Massive internal pressure buildup creates a huge explosion throwing land out of the way \ No newline at end of file diff --git a/prototypes/entities.lua b/prototypes/entities.lua new file mode 100644 index 0000000..bdb5520 --- /dev/null +++ b/prototypes/entities.lua @@ -0,0 +1,77 @@ +data:extend( + { + { + type = "electric-energy-interface", + name = "water-bomb-area", + icon = "__Waterbomb__/graphics/icons/Bomb.png", + icon_size = 32, + flags = {"placeable-neutral", "player-creation"}, + max_health = 500, + corpse = "small-remnants", + collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, + selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, + energy_source = + { + type = "electric", + buffer_capacity = "50MJ", + usage_priority = "secondary-input", + input_flow_limit = "1500kW", + output_flow_limit = "0kW" + }, + picture = + { + filename = "__Waterbomb__/graphics/entity/Bomb - Area.png", + priority = "extra-high", + width = 160, + height = 160, + shift = {-0.01625, 0} + }, + charge_cooldown = 45, + discharge_cooldown = 90, + order="b[bomb]", + subgroup = "equipment" + }, + { + type = "electric-energy-interface", + name = "water-bomb", + icon = "__Waterbomb__/graphics/icons/Bomb.png", + icon_size = 32, + flags = {"placeable-neutral", "player-creation"}, + minable = {mining_time = 3, result = "water-bomb"}, + max_health = 500, + corpse = "small-remnants", + collision_box = {{-0.35, -0.35}, {0.35, 0.35}}, + selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, + energy_source = + { + type = "electric", + buffer_capacity = "50MJ", + usage_priority = "secondary-input", + input_flow_limit = "1500kW", + output_flow_limit = "0kW" + }, + picture = + { + filename = "__Waterbomb__/graphics/entity/Bomb.png", + priority = "extra-high", + width = 72, + height = 62, + shift = {0.49145, -0.25} + }, + charge_animation = + { + filename = "__Waterbomb__/graphics/entity/Bomb - Charging.png", + width = 72, + height = 62, + line_length = 4, + frame_count = 4, + shift = {0.49145, -0.25}, + animation_speed = 0.5 + }, + charge_cooldown = 45, + discharge_cooldown = 90, + order="b[bomb]", + subgroup = "equipment" + } + } +) \ No newline at end of file diff --git a/prototypes/items.lua b/prototypes/items.lua new file mode 100644 index 0000000..fb759f5 --- /dev/null +++ b/prototypes/items.lua @@ -0,0 +1,15 @@ +data:extend( + { + { + type = "item", + name = "water-bomb", + icon = "__Waterbomb__/graphics/icons/Bomb.png", + icon_size = 32, + flags = {"goes-to-quickbar"}, + subgroup = "equipment", + order = "a[bomb]", + place_result = "water-bomb-area", + stack_size = 50 + } + } +) diff --git a/prototypes/projectiles.lua b/prototypes/projectiles.lua new file mode 100644 index 0000000..a92d0d8 --- /dev/null +++ b/prototypes/projectiles.lua @@ -0,0 +1,71 @@ +data:extend( + { + { + type = "projectile", + name = "water-bomb-detonation", + flags = {"not-on-map"}, + acceleration = 0, + action = + { + type = "direct", + action_delivery = + { + type = "instant", + target_effects = + { + { + type = "nested-result", + action = + { + radius = 1, + type = "area", + perimeter = 5, + action_delivery = + { + type = "instant", + target_effects = + { + { + type = "damage", + damage = {amount = 561, type = "explosion"} + } + } + } + } + }, + { + type = "nested-result", + action = + { + radius = 1, + type = "area", + perimeter = 10, + action_delivery = + { + type = "instant", + target_effects = + { + { + type = "damage", + damage = {amount = 39, type = "explosion"} + } + } + } + } + } + } + } + }, + animation = + { + filename = "__Waterbomb__/graphics/null.png", + frame_count = 1, + width = 1, + height = 1, + priority = "high" + }, + light = {intensity = 1, size = 4}, + smoke = capsule_smoke, + } + } +) \ No newline at end of file diff --git a/prototypes/recipes.lua b/prototypes/recipes.lua new file mode 100644 index 0000000..e50213c --- /dev/null +++ b/prototypes/recipes.lua @@ -0,0 +1,20 @@ +data:extend( + { + { + type = "recipe", + name = "water-bomb", + energy_required = 5, + enabled = "true", + category = "crafting-with-fluid", + ingredients = + { + {"steel-plate", 32}, + {"electric-engine-unit", 4}, + {"processing-unit", 1}, + {type="fluid", name="water", amount=32}, + {"explosives", 24}, + }, + result = "water-bomb" + } + } +) \ No newline at end of file -- 2.43.0