Cities Of Earth 2

by hyspeed

# CitiesOfEarth 2 A Factorio mod that uses a map of Earth for map generation. The map is a fixed size and does not tile. There are "cities" that can be teleported to allowing for moving around the map. * Optional "Pre-Place Silo". The Rocket Silo will be built at map creation and cannot be crafted by players. * Optional "Penalty Per Death". Each death increases the number of launches to win.

5 months ago
1.1
891
Owner:
hyspeed
Source:
https://github.com/HySpeed/CitiesOfEarth2
Homepage:
https://github.com/hyspeed/CitiesOfEarth2
License:
GNU LGPLv3
Created:
11 months ago
Latest Version:
1.3.9 (5 months ago)
Factorio version:
1.1
Downloaded:
891 times

CitiesOfEarth 2

A Factorio mod that uses a map of Earth for map generation. The map is a fixed size and does not tile.
There are "cities" that can be teleported to allowing for moving around the map. * Optional "Pre-Place Silo". The Rocket Silo will be built at map creation and cannot be crafted by players. * Optional "Penalty Per Death". Each death increases the number of launches to win.

Requirements

When first starting a new game there will be a long delay while the map initializes.

Worlds, Regions, and Cities

There are two 'worlds'. Both are Earth.
* Atlantic - The center of the map is the Atlantic Ocean. This puts America on the 'right' side and Africa & Europe on the 'left' side of the game map. This is the traditional view of Earth on a map. * Pacific - The center of the map is the Pacific Ocean. This puts Africa & Europe on the 'left' side and America on the 'right' side of the game map. This allows for a connection between Russia and Alaska to be built.

This is a list of the regions and cities | found in 'data/cities.lua':
| Continent | Region | City |
|:----------------|:---------------|:------------|
| Africa | Mali | Bamako |
| Africa | Chad | Mongo |
| Africa | Egypt | Cairo |
| Africa | Gauteng | Johannesburg|
| Asia | China | Kunming |
| Asia | Georgia | Tbilisi |
| Asia | India | Delhi |
| Asia | Saudi Arabia | Riyadh |
| Asia | Mongolia | Moron |
| Europe | Czech Republic | Prague |
| Europe | Russia | Aktobe |
| Europe | Russia | Bilibino |
| Europe | Russia | Moscow |
| Europe | Russia | Omsk |
| Europe | Russia | Yakutsk |
| Europe | Spain | Madrid |
| Europe | UK | London |
| North America | Canada | Brisay |
| North America | Canada | Churchill |
| North America | Canada | Nahanni |
| North America | Greenland | Summit Camp |
| North America | Mexico | Mexico City |
| North America | United States | Boise |
| North America | United States | Scranton |
| North America | United States | Topeka |
| North America | United States | Ungalik |
| South America | Brazil | Manaus |
| South America | Argentina | Cordoba |
| Oceania | Australia | Broome |
| Oceania | Australia | Sydney |

Note: Selecting a 'detailed' version of a world map will multiply all values by 2. You do not need to make any other changes - the values will be adjusted automatically.

Earth image processing by The Oddler
City information was pulled from Mapcarta.

To Do:

  • none

Known Issues:

  • You must delete mod-settings.dat for changes to cities.lua to be available. If you change a lua data file, you'll need to delete the mod-settings.dat file.

Helpful commands:

chart, day mode, free movement, 10x speed

  • /c local player = game.player; local pos = player.position; local rad=500; player.force.chart(player.surface, {{x = pos.x-rad, y = pos.y-rad}, {x = pos.x+rad, y = pos.y+rad}});
    game.player.surface.always_day=true;
    game.player.character=nil;
    game.speed=10

Charting

  • chart around player for 500
  • /c local player = game.player; local pos = player.position; local rad=500; player.force.chart(player.surface, {{x = pos.x-rad, y = pos.y-rad}, {x = pos.x+rad, y = pos.y+rad}});
  • /c game.player.surface.always_day=true
    Print the object 'area':
  • /c game.print(serpent.block(event.area))

Players

  • get player index based on name: ( /player_index/ == hyspeed --> 1 )
  • /c for k | v in pairs(game.players) do game.player.print(v.name .. " --> " .. k) end

  • get player's current position

  • /c local p = game.player.position; game.print( p.x..","..p.y)

  • teleport player id to a location:

  • /c game.players[z].teleport({x,y})

  • 'god mode'

  • /c game.player.character=nil
  • undo 'god mode':
    */c game.player.create_character()

Speed

  • speed up the game for mapping and moving during testing
  • /c game.speed=10

Items

  • add items to the player's inventory:
  • /c game.player.insert{name="grenade" | count=10}
  • /c game.player.insert{name="car" | count=1}
  • /c game.player.insert{name="rocket-fuel" | count=10}

Unlocks & settings

/c local player = game.player
player.surface.always_day=true
player.force.research_all_technologies()
player.cheat_mode=true

Equipment

/c local player = game.player
player.insert{name="power-armor-mk2", count = 1}
local p_armor = player.get_inventory(5)[1].grid
p_armor.put({name = "fusion-reactor-equipment"})
p_armor.put({name = "fusion-reactor-equipment"})
p_armor.put({name = "fusion-reactor-equipment"})
p_armor.put({name = "exoskeleton-equipment"})
p_armor.put({name = "exoskeleton-equipment"})
p_armor.put({name = "exoskeleton-equipment"})
p_armor.put({name = "exoskeleton-equipment"})
p_armor.put({name = "energy-shield-mk2-equipment"})
p_armor.put({name = "energy-shield-mk2-equipment"})
p_armor.put({name = "personal-roboport-mk2-equipment"})
p_armor.put({name = "night-vision-equipment"})
p_armor.put({name = "battery-mk2-equipment"})
p_armor.put({name = "battery-mk2-equipment"})
player.insert{name="construction-robot", count = 25}

Power & Silo

/c local player = game.player
player.insert({name="nuclear-reactor", count=1})
player.insert({name="heat-exchanger", count=2})
player.insert({name="steam-turbine", count=4})
player.insert({name="offshore-pump", count=1})
player.insert({name="pipe", count=1})
player.insert({name="uranium-fuel-cell", count=50})
player.insert({name="substation", count=10})
player.insert({name="stack-inserter", count=10})
player.insert({name="roboport", count=5})
player.insert({name="logistic-robot", count=200})
player.insert({name="beacon", count=20})
player.insert({name="speed-module-3", count=50})
player.insert({name="logistic-chest-requester", count=10})

player.insert({name="rocket-silo", count=1})
player.insert({name="", count=1})

Create chests of these items where the player is standing

/c local s = game.surfaces[1] local p = game.player.position local f = game.player.force l = "logistic-chest-passive-provider"
for i = 1, 25 do
local rf_c = s.create_entity({name=l, position={p.x+1,p.y+i}, force=f, move_stuck_players=true}) rf_c.insert({name="rocket-fuel", count=40})
local rcu_c = s.create_entity({name=l, position={p.x+2,p.y+i}, force=f, move_stuck_players=true}) rcu_c.insert({name="rocket-control-unit", count=40})
local lds_c = s.create_entity({name=l, position={p.x+3,p.y+i}, force=f, move_stuck_players=true}) lds_c.insert({name="low-density-structure", count=40})
end

Create a silo

/c game.surfaces[1].create_entity({name="rocket-silo", position=game.player.position, force=game.player.force, move_stuck_players=true})
-- doesn't work /c local silo = game.surfaces[1].create_entity({name="rocket-silo", position=game.player.position, force=game.player.force, move_stuck_players=true}) silo.insert({name="rocket", count=1})
-- doesn't work /c local silo = game.surfaces[1].create_entity({name="rocket-silo", position=game.player.position, force=game.player.force, move_stuck_players=true}) silo.insert({name="rocket-part", count=100})

Big setup

/c local player = game.player
player.surface.always_day=true
player.force.research_all_technologies()
player.cheat_mode=true

/c local player = game.player
player.insert{name="rocket-launcher", count = 1}
player.insert{name="atomic-bomb", count = 1}
player.insert{name="power-armor-mk2", count = 1}
local armor = player.get_inventory(5)[1].grid
armor.put({name = "fusion-reactor-equipment"})
armor.put({name = "fusion-reactor-equipment"})
armor.put({name = "fusion-reactor-equipment"})
armor.put({name = "exoskeleton-equipment"})
armor.put({name = "exoskeleton-equipment"})
armor.put({name = "exoskeleton-equipment"})
armor.put({name = "exoskeleton-equipment"})
armor.put({name = "personal-roboport-mk2-equipment"})
armor.put({name = "personal-roboport-mk2-equipment"})
armor.put({name = "personal-roboport-mk2-equipment"})
armor.put({name = "personal-roboport-mk2-equipment"})
armor.put({name = "battery-mk2-equipment"})
armor.put({name = "battery-mk2-equipment"})
player.insert{name="construction-robot", count = 100}
player.insert{name="landfill", count = 500}

player.insert({name="nuclear-reactor", count=1})
player.insert({name="heat-exchanger", count=2})
player.insert({name="steam-turbine", count=4})
player.insert({name="offshore-pump", count=1})
player.insert({name="pipe", count=1})
player.insert({name="uranium-fuel-cell", count=50})
player.insert({name="substation", count=10})
player.insert({name="stack-inserter", count=10})
player.insert({name="roboport", count=5})
player.insert({name="logistic-robot", count=200})
player.insert({name="beacon", count=20})
player.insert({name="speed-module-3", count=50})
player.insert({name="logistic-chest-requester", count=10})

Biters

/c game.map_settings.enemy_evolution.time_factor = 0