Page 1 of 1

Version 0.15.32

Posted: Wed Aug 02, 2017 11:52 am
by FactorioBot
Bugfixes
  • Fixed compatibility problem with several antivirus programs. (51375)
  • Fixed seed in map-gen-settings.json would be ignored when creating map on headless server. (51254)
  • Fixed that connecting to a multiplayer game with a large blueprint library might be difficult. (50898)
  • Fixed that using capsules would open an Entity's GUI when clicked. (51123)
  • Fixed that --window-size=maximized wouldn't work on Linux. (50977)
  • Fixed that changing reactor consumption(production) values through a mod didn't update its production until rebuilt. (51251)
  • Fixed that blueprints would sometimes stop transferring.
  • Fixed crash when opening item/container and at the same time the controller is set to some that doesn't have inventory. (51349)
  • Fixed 3 possible crashes related to getting malformed network packet over the network.
  • Maybe fixed a biter path cache-related crash. (51183)
  • Fixed that bad_alloc and similar low level erros were catched internally, so we couldn't get proper stack trace of those.
  • Limited the size of a train chart tag when the map is zoomed in. (51401)
  • Possible rare crash fix related to building rails and viewing preview of entities right after that. (51322)
  • Limited technology cost multiplier to maximum of 1000. (51453)
Scripting
  • The log method also specifies the mod that wrote that, not only script file.
  • Added LuaEntityPrototype::distribution_effectivity read.
  • Added LuaEntityPrototype::time_to_live read.
  • Added LuaControl::following_robots read.
  • Added LuaPlayer::pipette_entity().
  • Added LuaEntity::can_be_destroyed().
  • Added script_raised_destroy reserved event ID.
  • Added script_raised_built reserved event ID.
  • Added script_raised_revive reserved event ID.
  • Changed LuaEntity::time_to_live to also work for combat robots.
  • Changed LuaEntityPrototype::fluid_capacity read to also work on fluid-wagon.
  • Changed LuaEntityPrototype::turret_range read returns nil instead of error if not turret.
  • Changed LuaEntity::train to return nil if entity is not rolling stock.
  • Added LuaEntityPrototype::explosion_beam read.
  • Added LuaEntityPrototype::explosion_rotate read.

Use the automatic updater if you can (check experimental updates in other settings) or download full installation at http://www.factorio.com/download/experimental.

Re: Version 0.15.32

Posted: Wed Aug 02, 2017 1:01 pm
by Optera
The log method also specifies the mod that wrote that, not only script file.
Thanks, this makes tracking down left over debug logs in other mods is a lot easier.

Re: Version 0.15.32

Posted: Wed Aug 02, 2017 1:15 pm
by kovarex
Optera wrote:
The log method also specifies the mod that wrote that, not only script file.
Thanks, this makes tracking down left over debug logs in other mods is a lot easier.
That was the point, there was a single line in a single mod that dumped all the data into a log file. Log files were suddenly 25MB large :)

Re: Version 0.15.32

Posted: Wed Aug 02, 2017 1:25 pm
by Mooncat
Added script_raised_destroy reserved event ID.
Added script_raised_built reserved event ID.
Added script_raised_revive reserved event ID.
Ah, so these are the reserved event IDs...
I'm not sure about the usability now, after reading the document.
The problem is that they don't have fixed parameters. We can say they must contain "entity" because they are clearly about entities, but we are not sure about "player_index" and other probably useful parameters.
Different mods may have different standard.

Therefore, I would like to suggest adding an optional Boolean parameter "raise_event" in LuaSurface.create_entity, LuaEntity::destroy() and LuaEntity::revive(). If it is true, the corresponding script_raised_... event will be raised, with defined parameters. That way we can expect what parameters they contain.
But we may also need to add more optional parameters to provide more information, like "player_index", "cause", etc.

Re: Version 0.15.32

Posted: Wed Aug 02, 2017 7:04 pm
by Nexela
Mooncat wrote: Ah, so these are the reserved event IDs...
I'm not sure about the usability now, after reading the document.
The problem is that they don't have fixed parameters. We can say they must contain "entity" because they are clearly about entities, but we are not sure about "player_index" and other probably useful parameters.
Different mods may have different standard.

Therefore, I would like to suggest adding an optional Boolean parameter "raise_event" in LuaSurface.create_entity, LuaEntity::destroy() and LuaEntity::revive(). If it is true, the corresponding script_raised_... event will be raised, with defined parameters. That way we can expect what parameters they contain.
But we may also need to add more optional parameters to provide more information, like "player_index", "cause", etc.
These are provided solely to provide a consistent event ID to use without other mods having to do a bunch of remote.calls to get the event ID for every mod they want to listen too for something that is very similar. And any mod listening for these events would want to check if the variable is present to begin with. 95% of the time raising on_built_entity will be better than using built/revived script event IDs.

As for destroy there is no on_destroyed_event because the entity is destroyed so there would be nothing to pass and in the majority of mods it doesn't matter that something was destroyed.

Similar to how mods are doing it now by passing in stuff like event.revived=true and event.mod_name="my-mod" it is up to mod authors to come up with a standard to use.

Re: Version 0.15.32

Posted: Thu Aug 03, 2017 1:52 am
by Mooncat
Oops, I forgot again that entity being invalid once it is destroyed.
Now I understand that the event IDs are here to overcome the increased difficulty for using remote.call since 0.15.27. It sounds fair. Thanks! :D