Fuel Value My Ass

by Sopel

Imagine an assembling machine with negative energy usage.

Internal
2 years ago
1.1
1.24K
Owner:
Sopel
Source:
https://github.com/Sopel97/fuel_value_my_ass
Homepage:
N/A
License:
MIT
Created:
3 years ago
Latest Version:
0.3.0 (2 years ago)
Factorio version:
1.1
Downloaded by:
1.24K users

A library mod that allows creating generator entities that take ingredients as input and produce electricity. It's a workaround for the lack of ability to create generators disrespecting fuel values with the modding API. It's ironic how such a simple thing is so hard to make with all the available mod APIs but here it is.

Generator creation API

fvma.create_generator(args)

Used to create all required entities/recipes/fluids for a generator. All parameters are given in a parameter object args. The following parameters available for Prototype/Generator can/must be specified:

Additional fields

  • name :: string - the name to use for the generator entity
  • size :: double - the width and height of the composite entity. See below for detail.
  • width :: double (optional if size specified) - the width in tiles of the composite entity. Must be at least 5. Use integers to be safe. Takes precedence over size.
  • height :: double (optional if size specified) - the height in tiles of the composite entity. Must be at least 3. Use integers to be safe. Takes precedence over size.
  • ingredients :: table of IngredientPrototype - the ingredients for a single craft. Can have up to 4 unique fluids.
  • energy_production_per_craft :: Energy - the amount of energy generated per craft
  • energy_required :: double - the time required per craft (actual crafting speed will be different, but this value will reflect the energy output)
  • results :: whatever factorio uses for assembler results - other results produced alongside the energy, can be used for example for used cells of some kind.

Prototype/Generator — generator

  • horizontal_animation :: Animation
  • vertical_animation :: Animation
  • min_perceived_performance :: double (optional)
  • performance_to_sound_speedup :: double (optional)
  • smoke :: table of SmokeSource (optional)

Inherited from Prototype/EntityWithHealth

  • alert_when_damaged :: bool (optional)
  • attack_reaction :: AttackReaction (optional)
  • corpse :: string or table of strings (optional)
  • create_ghost_on_death :: bool (optional)
  • damaged_trigger_effect :: TriggerEffect (optional)
  • dying_explosion :: ExplosionDefinition or table of ExplosionDefinition (optional)
  • dying_trigger_effect :: TriggerEffect (optional)
  • healing_per_tick :: float (optional)
  • hide_resistances :: bool (optional)
  • integration_patch :: Sprite4Way (optional)
  • integration_patch_render_layer :: RenderLayer (optional)
  • loot :: Loot (optional)
  • max_health :: float (optional)
  • random_corpse_variation :: bool (optional)
  • repair_sound :: Sound (optional)
  • repair_speed_modifier :: float (optional)
  • resistances :: Resistances (optional)

Inherited from Prototype/Entity

  • icons, icon, icon_size (IconSpecification) :: IconSpecification
  • alert_icon_scale :: float (optional)
  • alert_icon_shift :: vector (optional)
  • allow_copy_paste :: bool (optional)
  • build_sound :: Sound (optional)
  • close_sound :: Sound (optional)
  • collision_mask :: CollisionMask (optional)
  • created_effect :: Trigger (optional)
  • created_smoke :: CreateTrivialSmokeEffectItem (optional)
  • drawing_box :: BoundingBox (optional)
  • emissions_per_second :: double (optional)
  • enemy_map_color :: Color (optional)
  • friendly_map_color :: Color (optional)
  • hit_visualization_box :: BoundingBox (optional)
  • map_color :: Color (optional)
  • mined_sound :: Sound (optional)
  • mining_sound :: Sound (optional)
  • open_sound :: Sound (optional)
  • radius_visualisation_specification :: RadiusVisualisationSpecification (optional)
  • remains_when_mined :: string or table of string (optional)
  • remove_decoratives :: string (optional)
  • selectable_in_game :: bool (optional)
  • shooting_cursor_size :: double (optional)
  • sticker_box :: BoundingBox (optional)
  • trigger_target_mask :: TriggerTargetMask (optional)
  • vehicle_impact_sound :: Sound (optional)
  • water_reflection :: WaterReflectionDefinition (optional)
  • working_sound :: WorkingSound (optional)

Inherited from PrototypeBase

  • localised_description :: LocalisedString (optional)
  • localised_name :: LocalisedString (optional)

fvma.get_composite_entity_names(name)

Returns a dictionary with names of entities/recipes/fluids created by the fvma.create_generator function for args.name==name. The returned dictionary has the following key:

  • ["item"] - the expected name of the item that places the generator (not created by fvma.create_generator), guaranteed to be just name
  • ["generator"] - the name of the generator entity, guaranteed to be just name
  • ["assembling-machine"] - the name of the assembling machine entity that's used for the gui interface and crafting recipe
  • ["fluid"] - the name of the fluid used for energy generation
  • ["recipe"] - the name of the recipe the assembling machine gets fixed to