veden / Rampant

Factorio Mod - Basic AI augmentation using potential fields
GNU General Public License v3.0
54 stars 22 forks source link

Mod compatibility crash - Fire Place #182

Open FuryoftheStars opened 7 months ago

FuryoftheStars commented 7 months ago

Hi, when using the Fire Place mod (https://mods.factorio.com/mod/fire-place) in conjunction with Rampant (3.3.4), placing a fire place and loading it with fuel and an input item to burn causes a crash. The error message lists both mods, so reporting to both, but I haven't invested any time to figure out where the fault actually lies.

The mod Fire Place (2.1.0) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event fire-place::on_nth_tick(60)
The mod Rampant (3.3.4) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event Rampant::script_raised_built (ID 79)
__Rampant__/libs/ChunkPropertyUtils.lua:134: table index is nil
stack traceback:
    __Rampant__/libs/ChunkPropertyUtils.lua:134: in function <__Rampant__/libs/ChunkPropertyUtils.lua:121>
    (...tail calls...)
    __Rampant__/libs/ChunkUtils.lua:508: in function 'registerEnemyBaseStructure'
    __Rampant__/control.lua:371: in function 'onEnemyBaseBuild'
    __Rampant__/control.lua:393: in function <__Rampant__/control.lua:388>
stack traceback:
    [C]: in function 'create_entity'
    __fire-place__/control.lua:27: in function 'update'
    __fire-place__/control.lua:79: in function <__fire-place__/control.lua:78>
FuryoftheStars commented 7 months ago

Ok, so I went ahead and looked into it.

The Fire Place mod uses create_entity{} to spawn a fire, but it doesn't define a force, so the game is defaulting to force "enemy". Rampant in turn is picking this up and thinking a new biter spawner was just created, and is attempting the work with a fire entity as if it were a spawner. Obviously that's not going to work out well. XD Specifically, I think it's crashing at a point where it's trying to use an entity ID off from the fire entity, which it doesn't appear to have.

Now, Fire Place probably should update this to define a force (probably "neutral"), but also I think Rampant should maybe do a bit of a sanity check of whatever it's picking up as recently added to force "enemy" as something valid for it to work with.