diff --git a/changelog.txt b/changelog.txt index 1bbce4a7..b5d89c42 100644 --- a/changelog.txt +++ b/changelog.txt @@ -20,12 +20,18 @@ Date: ??? - fixed nuclear caravans (https://github.com/pyanodon/pybugreports/issues/334) - fixed reproductive complex sometimes eating your modules (https://github.com/pyanodon/pybugreports/issues/322) - changed the item description for navens (https://github.com/pyanodon/pybugreports/issues/308) - - removed fuel rods from bhoddos recipes - - the bhoddos machine now consumes fuel rods directly. no longer requires electricity - moved the arqad used comb recycling recipe from arqad stage 2 to arqad stage 1 - added new recipes for creating wax from sugar and honey + Bhoddos: + - bhoddos chain was completely reworked. previously this fungus suffered from 'lack of identity'. its changed to be a biological version of a fission reactor + - added nuclear reactor to bhoddos culture building recipe + - removed fuel rods from bhoddos recipes + - the bhoddos machine now consumes fuel rods directly. no longer requires electricity + - changed item & tech descriptions for bhoddos + - reworked bhoddos turd path 1 to cause nuclear explosions every 2 hrs. high risk high rewards TURD: - fixed crash when opening TURD when pyAE is not installed + - removed /view_turd_selections - buffed moondrop turd path 1 speed increase from 10% to 20% - reworked moondrop turd path 2 - added a 100% energy penalty to moondrop path 3 diff --git a/control.lua b/control.lua index a76d1d74..c46e0dee 100644 --- a/control.lua +++ b/control.lua @@ -205,6 +205,7 @@ script.on_nth_tick(121, Farming.events[121]) script.on_nth_tick(143, Biofluid.events[143]) script.on_nth_tick(221, Oculua.events[221]) script.on_nth_tick(397, Ulric.events[397]) +script.on_nth_tick(432000, Turd.events[432000]) script.on_nth_tick(7, function() for _, player in pairs(game.connected_players) do diff --git a/locale/en/items.cfg b/locale/en/items.cfg index 302c9a45..0adff6a5 100644 --- a/locale/en/items.cfg +++ b/locale/en/items.cfg @@ -1150,10 +1150,10 @@ phagnot-mk04=Alien hybrid animals. They have a big reservoir of gas on their hea phagnot-food-01=Basic phagnot food. phagnot-food-02=Spelt blini with moss-spiced yotoi fruit and bhoddos cheese. gas-bladder=Special organ, lighter than air, which helps phagnots stand. -bhoddos=Hybrid plant-fungus creature. -bhoddos-mk02=Hybrid plant-fungus creature. -bhoddos-mk03=Hybrid plant-fungus creature. -bhoddos-mk04=Hybrid plant-fungus creature. +bhoddos=Hybrid nuclear fungus creature. +bhoddos-mk02=Hybrid nuclear fungus creature. +bhoddos-mk03=Hybrid nuclear fungus creature. +bhoddos-mk04=Hybrid nuclear fungus creature. zymogens=Inactive precursor of an enzyme. Requires a biochemical cleave to activate it. mmp=Enzymes are capable of degrading all kinds of extracellular matrix proteins. peptidase-m58=Alien catalytic protein. diff --git a/locale/en/techs.cfg b/locale/en/techs.cfg index d816cbe3..5af31d51 100644 --- a/locale/en/techs.cfg +++ b/locale/en/techs.cfg @@ -354,7 +354,7 @@ d-core=Dimensional gastricorg hybridism pentadimensional=Penta-dimensional enclosure existential-hazard=Existential hazard higgs-field=Quantum folding -extra-drones=Extra drones +extra-drones=Meltdown exoenzymes=Exoenzymes gills=Inter-dermal extra gills high-viability=High-viability scaffolds @@ -668,7 +668,7 @@ vonix=Unlock vonixes, artificial life based on native plant and animal DNA. Most grod=Unlock grods, swamp plants that produce a very useful fiber for animal bedding. anabolic-rna=Unlock recipes to allow you to use potent steroids to increase the meat quantity of your animals. phagnot=Unlock phagnots, pacific creatures which have a big reservoir of gas on their heads to help them stand up. Research shows they use it as a defence. -bhoddos=Unlock bhoddos. These advanced hybrids have pseudo-chloroplasts which contain protein structures never seen before. +bhoddos=Unlock bhoddos. These advanced hybrids have pseudo-chloroplasts which contain protein structures able to replicate nuclear fission reactions as an energy source. antiviral=Unlock antiviral drugs. These will help creatures be healthier and produce more. immunosupressants=Drugs that inhibit or prevent activity of the immune system. Helps the artificial genesis of your creatures. bio-implants=Devices to improve or replace a biological structure. @@ -802,7 +802,7 @@ d-core=Use knowledge from the Schrödinger antelope research projects. Allows th pentadimensional=Uses powerful raw energy to enclose the antelopes onto the 5th dimension or lower. They can still travel between planes, but will escape less. existential-hazard=Forces antelopes to stay in this dimension more time than their dimensional gastricorg allows. It will increase the strangelets leakage around the area. This constraint will also decrease their breeding speed since the antelopes can only do that inside the "outside" dimensions. higgs-field=L = -1/2 tr [Fμν F^(μν)] + ΨLiγ^μDμΨL + tr[(DμΦ)† DμΦ]+ μ2 Φ†Φ -1/2 λ(Φ†Φ)^2 + ( 1/2 ΨTL ChΦΨL + h.c. ) -extra-drones=Install extra collecting drones to harvest bhoddos quickly. +extra-drones=Remove the key ingredients used by the bhoddos to regulate nuclear fission chain reactions. This action dramatically speeds up the production rate for the bhoddos fungus however the risk of nuclear explosion is now 100%. [font=default-semibold][color=255,60,60]☢ WARNING ☢: Picking this option will destablilize the nuclear fisson reactions and cause active bhoddos cultures to violently explode.[/color][/font] Explosions do not damage the bhoddos culture itself however they will destroy any other entities in the radius (including other bhoddos cultures). Expect 1 explosion per surface per 2 hours. exoenzymes=Introduct the ability to secrete exoenzymes, this allows bhoddos to consume a larger variety of materials, and therefore are able to find more consumable material in an environment than other organisms. gills=Develop surface gills and a better inter-cellular matrix allowing bhoddos to rotate themselves so they are always exactly parallel with gravity. This means that even if bhoddos moves or bends the gills will still be able to release spores successfully. Spore collectors are able to collect these released spores from the environment. high-viability=Seeding high-viability (>85%) three-dimensional alginate-chondrocyte hydrogel scaffolds with photocrosslinking of methacrylate-modified alginate with the photoinitiator VA-086. Requires UV activation, so bioscaffolds will require lamps. diff --git a/prototypes/buildings/bhoddos-culture-mk01.lua b/prototypes/buildings/bhoddos-culture-mk01.lua index f4f3ffb1..e52b022f 100644 --- a/prototypes/buildings/bhoddos-culture-mk01.lua +++ b/prototypes/buildings/bhoddos-culture-mk01.lua @@ -8,7 +8,7 @@ RECIPE { energy_required = 1, enabled = false, ingredients = { - {"gasifier", 1}, + {"nuclear-reactor", 1}, {"glass", 30}, {"nexelit-plate", 20}, {"duralumin", 35}, diff --git a/prototypes/upgrades/bhoddos.lua b/prototypes/upgrades/bhoddos.lua index 78ad28d7..e452a159 100644 --- a/prototypes/upgrades/bhoddos.lua +++ b/prototypes/upgrades/bhoddos.lua @@ -1,15 +1,23 @@ local FUN = require '__pycoalprocessing__/prototypes/functions/functions' if data then - local bots = {'py-construction-robot-01', 'py-construction-robot-02', 'c-pynobot-mk03', 'construction-robot-ht'} + local biomass = {'nacl-biomass', 's-biomass', 'ni-biomass', 'ti-biomass'} for i, recipe in pairs({ - table.deepcopy(data.raw.recipe['bhoddos-culture-mk01']), - table.deepcopy(data.raw.recipe['bhoddos-culture-mk02']), - table.deepcopy(data.raw.recipe['bhoddos-culture-mk03']), - table.deepcopy(data.raw.recipe['bhoddos-culture-mk04']), + table.deepcopy(data.raw.recipe['bhoddos-1']), + table.deepcopy(data.raw.recipe['bhoddos-2']), + table.deepcopy(data.raw.recipe['bhoddos-3']), + table.deepcopy(data.raw.recipe['bhoddos-4']), }) do - recipe.name = recipe.name .. '-with-pybot' - FUN.add_ingredient(recipe, {name = bots[i], amount = 2 * i, type = 'item'}) + recipe.name = recipe.name .. '-meltdown' + recipe.energy_required = math.ceil(recipe.energy_required * 0.3333) + FUN.remove_ingredient(recipe, 'fungal-substrate') + FUN.remove_ingredient(recipe, 'fungal-substrate-02') + FUN.remove_ingredient(recipe, 'fungal-substrate-03') + FUN.remove_ingredient(recipe, 'biomass') + FUN.remove_ingredient(recipe, 'moss') + FUN.remove_ingredient(recipe, 'manure') + FUN.remove_ingredient(recipe, 'bacteria-1-barrel') + FUN.remove_result(recipe, 'empty-barrel') data:extend{recipe} end @@ -75,11 +83,10 @@ return { icon_size = 128, order = 'c-a', effects = { -- the effects the tech will have on the building. valid types: 'module-effects', 'unlock-recipe', 'lock-recipe', 'recipe-replacement' - {consumption = 0.5, speed = 0.45, type = 'module-effects'}, - {old = 'bhoddos-culture-mk01', new = 'bhoddos-culture-mk01-with-pybot', type = 'recipe-replacement'}, - {old = 'bhoddos-culture-mk02', new = 'bhoddos-culture-mk02-with-pybot', type = 'recipe-replacement'}, - {old = 'bhoddos-culture-mk03', new = 'bhoddos-culture-mk03-with-pybot', type = 'recipe-replacement'}, - {old = 'bhoddos-culture-mk04', new = 'bhoddos-culture-mk04-with-pybot', type = 'recipe-replacement'}, + {old = 'bhoddos-1', new = 'bhoddos-1-meltdown', type = 'recipe-replacement'}, + {old = 'bhoddos-2', new = 'bhoddos-2-meltdown', type = 'recipe-replacement'}, + {old = 'bhoddos-3', new = 'bhoddos-3-meltdown', type = 'recipe-replacement'}, + {old = 'bhoddos-4', new = 'bhoddos-4-meltdown', type = 'recipe-replacement'}, }, }, { diff --git a/scripts/turd/bhoddos.lua b/scripts/turd/bhoddos.lua new file mode 100644 index 00000000..fb6b1efd --- /dev/null +++ b/scripts/turd/bhoddos.lua @@ -0,0 +1,66 @@ +local cultures = { + 'bhoddos-culture-mk01', + 'bhoddos-culture-mk02', + 'bhoddos-culture-mk03', + 'bhoddos-culture-mk04', +} + +Turd.events[432000] = function() + local forces_with_bhoddos_path_1 = {} + for _, force in pairs(game.forces) do + local bonuses = global.turd_bonuses[force.index] + if bonuses and bonuses['bhoddos-upgrade'] == 'extra-drones' then + table.insert(forces_with_bhoddos_path_1, force.index) + end + end + + if #forces_with_bhoddos_path_1 == 0 then return end + + local active_cultues_per_surface_per_force = {} + for _, surface in pairs(game.surfaces) do + local per_surface = {} + active_cultues_per_surface_per_force[surface.index] = per_surface + for _, entity in pairs(surface.find_entities_filtered{ + type = 'assembling-machine', + name = cultures, + force = forces_with_bhoddos_path_1 + }) do + if entity.active and entity.crafting_progress ~= 0 then + local per_force = per_surface[entity.force_index] + if not per_force then + per_force = {} + per_surface[entity.force_index] = per_force + end + per_force[#per_force + 1] = entity + end + end + end + + local exploded_cultures = {} + for _, per_surface in pairs(active_cultues_per_surface_per_force) do + for _, per_force in pairs(per_surface) do + local entity = per_force[math.random(#per_force)] + entity.destructible = false + entity.surface.create_entity{ + name = 'atomic-rocket', + position = entity.position, + target = entity, + speed = 1, + max_range = 0.1 + } + exploded_cultures[#exploded_cultures + 1] = entity + end + end + + if #exploded_cultures == 0 then return end + + local future = game.tick + 120 + script.on_nth_tick(future, function() + for _, entity in pairs(exploded_cultures) do + if entity.valid then + entity.destructible = true + end + end + script.on_nth_tick(future, nil) + end) +end \ No newline at end of file diff --git a/scripts/turd/turd.lua b/scripts/turd/turd.lua index ca443e20..0af1dc84 100644 --- a/scripts/turd/turd.lua +++ b/scripts/turd/turd.lua @@ -2,6 +2,7 @@ Turd = {} Turd.events = {} local Table = require('__stdlib__/stdlib/utils/table') local tech_upgrades, farm_building_tiers = table.unpack(require 'prototypes/upgrades/tech-upgrades') +require 'bhoddos' local NOT_SELECTED = 333 -- enum @@ -442,29 +443,4 @@ remote.add_interface('pywiki_turd_page', { create_turd_page = create_turd_page, on_search = on_search, reapply_turd_bonuses = reapply_turd_bonuses -}) - -commands.add_command('view_turd_selections', nil, function(command) - if not command.player_index then game.print{'turd.font', {'turd.file-failure'}}; return end - local player = game.get_player(command.player_index) - local force = player.force - local selections = global.turd_bonuses[force.index] or {} - - local data = {''} - local i = 1 - for name, tech_upgrade in pairs(tech_upgrades) do - if i % 18 == 0 then data = {'', data} end - local row = { - '', - {tech_upgrade.master_tech.localised_name or ('technology-name.' .. name)}, - ': ', - (selections[name] == NOT_SELECTED and {'turd.not-selected'} or {'technology-name.' .. selections[name]}), - '\n' - } - table.insert(data, row) - i = i + 1 - end - - game.write_file('turd-selections-'..game.tick..'.txt', data, false, command.player_index) - player.print{'turd.font', {'turd.file-success'}} -end) \ No newline at end of file +}) \ No newline at end of file