Page 1 of 1

Converting to 12.11 help - Solved

Posted: Fri Oct 16, 2015 9:31 pm
by TheSAguy
Thought I'd just ask, vs. going through a lot of mods to see what others have done. (Can always do that later...)

I'm getting an error on the "pairs" in below code:
This is in the data-updates.lua (Natural_Evolution_Enemies Mod)

Code: Select all

function Add_Poison_Resist(Raw,Percent)
	local Resist = {type = "poison",percent = Percent}
	for i,d in pairs(Raw) do
		if d.resistances ==nil then d.resistances={} end
		table.insert(d.resistances, Resist)
	end
end
I'm also getting an error on the below, control.lua, though I can just comma that out for now:
Does not like the "game.forces"

Code: Select all

	for k,force in pairs(game.forces) do 
		force.reset_recipes()
		force.reset_technologies() 
	end
Not yet sure if there are any other issues.
Here is my MOD if anyone want's to take a stab at it: GITHUB

Thanks for any help!!

Re: Converting to 12.11 help

Posted: Fri Oct 16, 2015 11:07 pm
by orzelek
First one is simple - you are trying to add resistance for rail entity that doesn't exist anymore.
There is now a straight-rail and curved-rail as two separate entities.

Second part is what was specifically blocked in 0.12.11 so it won't work there anymore.
This part should probably become a migration script or use the new configuration update event and be executed there.

Re: Converting to 12.11 help

Posted: Fri Oct 16, 2015 11:21 pm
by TheSAguy
orzelek wrote:First one is simple - you are trying to add resistance for rail entity that doesn't exist anymore.
There is now a straight-rail and curved-rail as two separate entities.

Second part is what was specifically blocked in 0.12.11 so it won't work there anymore.
This part should probably become a migration script or use the new configuration update event and be executed there.
Thanks Orzelek!
Okay, next crash:

Code: Select all

	for i = 1, #game.players, 1 do
        if game.players[i].force.technologies["AlienUnderstanding"].researched then
           game.players[i].force.recipes["Thumper"].enabled = true
        end
    end
I know that most, if not all cases of "game" have been removed. So what will I need to replace it with here?

Re: Converting to 12.11 help

Posted: Fri Oct 16, 2015 11:47 pm
by orzelek
TheSAguy wrote:
orzelek wrote:First one is simple - you are trying to add resistance for rail entity that doesn't exist anymore.
There is now a straight-rail and curved-rail as two separate entities.

Second part is what was specifically blocked in 0.12.11 so it won't work there anymore.
This part should probably become a migration script or use the new configuration update event and be executed there.
Thanks Orzelek!
Okay, next crash:

Code: Select all

	for i = 1, #game.players, 1 do
        if game.players[i].force.technologies["AlienUnderstanding"].researched then
           game.players[i].force.recipes["Thumper"].enabled = true
        end
    end
I know that most, if not all cases of "game" have been removed. So what will I need to replace it with here?
It's more of the same - basically game is banned from on_load event. And this code here is not needed for on load most likely - it should be also a part of migration script.
There is a nice example of such script in data\base\migrations directory in file "2015-07-02_Factorio_0.12.0.lua". It contains the code to make sure that techs are unlocking stuff that was added to them later. Should be a good source of proper for loop for doing this.

You also have the same code with game.force iteration in enemies mod - after removing that one game will properly load. From what I see this removed code is not required to make mod work properly so it should work.

Re: Converting to 12.11 help

Posted: Sun Oct 18, 2015 1:39 pm
by TheSAguy
I have one piece of code that I forgot to convert to 12.11.
How would I cycle through players in 12.11? Currently I'm using:

Code: Select all

	
if event.entity.type == "unit-spawner" then

	writeDebug("YOU KILLED A SPAWNER")
		for i = 1, #game.players, 1 do
			player = game.players[i]
			player.surface.set_multi_command{command = {type=defines.command.attack, target=player.character, distraction=defines.distraction.by_enemy},unit_count = (20+math.floor(game.evolution_factor*100/#game.players)), unit_search_distance = 600}
		end

end
I think "#game.players" will currently crash, won't it?

Re: Converting to 12.11 help

Posted: Sun Oct 18, 2015 1:41 pm
by orzelek
It works like previously - it doesn't work only in on_load event handler. All others should be ok.