Implements the Telecommunications tech (v2) (#4249)

* Added the addPopulation() and setPopulation() functions to add population to cities and automatically reassign them

* Added the Telecommunications tech

* Added the CN tower

* Implemented Bomb Shelter

* Added icons for new buildings

* Implemented requsted changes
This commit is contained in:
Xander Lenstra 2021-06-24 18:07:33 +02:00 committed by GitHub
parent 111d11b9b2
commit af0cd0c9df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 470 additions and 419 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -74,710 +74,717 @@ Big Ben
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Brandenburg Gate Bomb Shelter
rotate: false rotate: false
xy: 4, 436 xy: 4, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Broadcast Tower Brandenburg Gate
rotate: false rotate: false
xy: 112, 544 xy: 112, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Burial Tomb Broadcast Tower
rotate: false rotate: false
xy: 220, 652 xy: 220, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
CN Tower Burial Tomb
rotate: false rotate: false
xy: 328, 760 xy: 328, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Castle CN Tower
rotate: false rotate: false
xy: 436, 868 xy: 436, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Chichen Itza Castle
rotate: false rotate: false
xy: 4, 328 xy: 4, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Circus Chichen Itza
rotate: false rotate: false
xy: 112, 436 xy: 112, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Circus Maximus Circus
rotate: false rotate: false
xy: 220, 544 xy: 220, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Colosseum Circus Maximus
rotate: false rotate: false
xy: 328, 652 xy: 328, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Colossus Colosseum
rotate: false rotate: false
xy: 436, 760 xy: 436, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Courthouse Colossus
rotate: false rotate: false
xy: 544, 868 xy: 544, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Cristo Redentor Courthouse
rotate: false rotate: false
xy: 4, 220 xy: 4, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Eiffel Tower Cristo Redentor
rotate: false rotate: false
xy: 112, 328 xy: 112, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Factory Eiffel Tower
rotate: false rotate: false
xy: 220, 436 xy: 220, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Floating Gardens Factory
rotate: false rotate: false
xy: 328, 544 xy: 328, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Forbidden Palace Floating Gardens
rotate: false rotate: false
xy: 436, 652 xy: 436, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Forge Forbidden Palace
rotate: false rotate: false
xy: 544, 760 xy: 544, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Garden Forge
rotate: false rotate: false
xy: 652, 868 xy: 652, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Granary Garden
rotate: false rotate: false
xy: 4, 112 xy: 4, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Great Wall Granary
rotate: false rotate: false
xy: 112, 220 xy: 112, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Hagia Sophia Great Wall
rotate: false rotate: false
xy: 220, 328 xy: 220, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Hanging Gardens Hagia Sophia
rotate: false rotate: false
xy: 328, 436 xy: 328, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Hanse Hanging Gardens
rotate: false rotate: false
xy: 436, 544 xy: 436, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Harbor Hanse
rotate: false rotate: false
xy: 544, 652 xy: 544, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Hermitage Harbor
rotate: false rotate: false
xy: 652, 760 xy: 652, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Heroic Epic Hermitage
rotate: false rotate: false
xy: 760, 868 xy: 760, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Himeji Castle Heroic Epic
rotate: false rotate: false
xy: 4, 4 xy: 4, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Hospital Himeji Castle
rotate: false rotate: false
xy: 112, 112 xy: 112, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Hubble Space Telescope Hospital
rotate: false rotate: false
xy: 220, 220 xy: 220, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Hydro Plant Hubble Space Telescope
rotate: false rotate: false
xy: 328, 328 xy: 328, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Ironworks Hydro Plant
rotate: false rotate: false
xy: 436, 436 xy: 436, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Kremlin Ironworks
rotate: false rotate: false
xy: 544, 544 xy: 544, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Krepost Kremlin
rotate: false rotate: false
xy: 652, 652 xy: 652, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Leaning Tower of Pisa Krepost
rotate: false rotate: false
xy: 760, 760 xy: 760, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Library Leaning Tower of Pisa
rotate: false rotate: false
xy: 868, 868 xy: 868, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Lighthouse Library
rotate: false rotate: false
xy: 112, 4 xy: 112, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Longhouse Lighthouse
rotate: false rotate: false
xy: 220, 112 xy: 220, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Machu Picchu Longhouse
rotate: false rotate: false
xy: 328, 220 xy: 328, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Manhattan Project Machu Picchu
rotate: false rotate: false
xy: 436, 328 xy: 436, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Market Manhattan Project
rotate: false rotate: false
xy: 544, 436 xy: 544, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Mausoleum of Halicarnassus Market
rotate: false rotate: false
xy: 652, 544 xy: 652, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Medical Lab Mausoleum of Halicarnassus
rotate: false rotate: false
xy: 760, 652 xy: 760, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Military Academy Medical Lab
rotate: false rotate: false
xy: 868, 760 xy: 868, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Military Base Military Academy
rotate: false rotate: false
xy: 976, 868 xy: 976, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Mint Military Base
rotate: false rotate: false
xy: 220, 4 xy: 220, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Monastery Mint
rotate: false rotate: false
xy: 328, 112 xy: 328, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Monument Monastery
rotate: false rotate: false
xy: 436, 220 xy: 436, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Mud Pyramid Mosque Monument
rotate: false rotate: false
xy: 544, 328 xy: 544, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Mughal Fort Mud Pyramid Mosque
rotate: false rotate: false
xy: 652, 436 xy: 652, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Museum Mughal Fort
rotate: false rotate: false
xy: 760, 544 xy: 760, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
National College Museum
rotate: false rotate: false
xy: 868, 652 xy: 868, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
National Epic National College
rotate: false rotate: false
xy: 976, 760 xy: 976, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
National Treasury National Epic
rotate: false rotate: false
xy: 1084, 868 xy: 1084, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Neuschwanstein National Treasury
rotate: false rotate: false
xy: 328, 4 xy: 328, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Notre Dame Neuschwanstein
rotate: false rotate: false
xy: 436, 112 xy: 436, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Nuclear Plant Notre Dame
rotate: false rotate: false
xy: 544, 220 xy: 544, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Observatory Nuclear Plant
rotate: false rotate: false
xy: 652, 328 xy: 652, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Opera House Observatory
rotate: false rotate: false
xy: 760, 436 xy: 760, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Oxford University Opera House
rotate: false rotate: false
xy: 868, 544 xy: 868, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Palace Oxford University
rotate: false rotate: false
xy: 976, 652 xy: 976, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Paper Maker Palace
rotate: false rotate: false
xy: 1084, 760 xy: 1084, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Pentagon Paper Maker
rotate: false rotate: false
xy: 1192, 868 xy: 1192, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Petra Pentagon
rotate: false rotate: false
xy: 436, 4 xy: 436, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Porcelain Tower Petra
rotate: false rotate: false
xy: 544, 112 xy: 544, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Public School Porcelain Tower
rotate: false rotate: false
xy: 652, 220 xy: 652, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Research Lab Public School
rotate: false rotate: false
xy: 760, 328 xy: 760, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
SS Booster Research Lab
rotate: false rotate: false
xy: 868, 436 xy: 868, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
SS Cockpit SS Booster
rotate: false rotate: false
xy: 976, 544 xy: 976, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
SS Engine SS Cockpit
rotate: false rotate: false
xy: 1084, 652 xy: 1084, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
SS Stasis Chamber SS Engine
rotate: false rotate: false
xy: 1192, 760 xy: 1192, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Satrap's Court SS Stasis Chamber
rotate: false rotate: false
xy: 1300, 868 xy: 1300, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Seaport Satrap's Court
rotate: false rotate: false
xy: 544, 4 xy: 544, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Sistine Chapel Seaport
rotate: false rotate: false
xy: 652, 112 xy: 652, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Solar Plant Sistine Chapel
rotate: false rotate: false
xy: 760, 220 xy: 760, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Spaceship Factory Solar Plant
rotate: false rotate: false
xy: 868, 328 xy: 868, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Stable Spaceship Factory
rotate: false rotate: false
xy: 976, 436 xy: 976, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Stadium Stable
rotate: false rotate: false
xy: 1084, 544 xy: 1084, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Statue of Liberty Stadium
rotate: false rotate: false
xy: 1192, 652 xy: 1192, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Statue of Zeus Statue of Liberty
rotate: false rotate: false
xy: 1300, 760 xy: 1300, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Stock Exchange Statue of Zeus
rotate: false rotate: false
xy: 1408, 868 xy: 1408, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Stone Works Stock Exchange
rotate: false rotate: false
xy: 652, 4 xy: 652, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Stonehenge Stone Works
rotate: false rotate: false
xy: 760, 112 xy: 760, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Sydney Opera House Stonehenge
rotate: false rotate: false
xy: 868, 220 xy: 868, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Taj Mahal Sydney Opera House
rotate: false rotate: false
xy: 976, 328 xy: 976, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Temple Taj Mahal
rotate: false rotate: false
xy: 1084, 436 xy: 1084, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Temple of Artemis Temple
rotate: false rotate: false
xy: 1192, 544 xy: 1192, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Terracotta Army Temple of Artemis
rotate: false rotate: false
xy: 1300, 652 xy: 1300, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
The Great Library Terracotta Army
rotate: false rotate: false
xy: 1408, 760 xy: 1408, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
The Great Lighthouse The Great Library
rotate: false rotate: false
xy: 1516, 868 xy: 1516, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
The Louvre The Great Lighthouse
rotate: false rotate: false
xy: 760, 4 xy: 760, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
The Oracle The Louvre
rotate: false rotate: false
xy: 868, 112 xy: 868, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
The Pyramids The Oracle
rotate: false rotate: false
xy: 976, 220 xy: 976, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Theatre The Pyramids
rotate: false rotate: false
xy: 1084, 328 xy: 1084, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
University Theatre
rotate: false rotate: false
xy: 1192, 436 xy: 1192, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Utopia Project University
rotate: false rotate: false
xy: 1300, 544 xy: 1300, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Walls Utopia Project
rotate: false rotate: false
xy: 1408, 652 xy: 1408, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Walls of Babylon Walls
rotate: false rotate: false
xy: 1516, 760 xy: 1516, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Wat Walls of Babylon
rotate: false rotate: false
xy: 1624, 868 xy: 1624, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Water Mill Wat
rotate: false rotate: false
xy: 868, 4 xy: 868, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Windmill Water Mill
rotate: false rotate: false
xy: 976, 112 xy: 976, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Workshop Windmill
rotate: false rotate: false
xy: 1084, 220 xy: 1084, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Workshop
rotate: false
xy: 1192, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 251 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1005 KiB

After

Width:  |  Height:  |  Size: 1008 KiB

View File

@ -1001,17 +1001,23 @@
// Future Era // Future Era
// Column 15 // Column 15
/*
{ {
"name": "CN Tower", "name": "CN Tower",
"isWonder": true, "isWonder": true,
"culture": 1, "culture": 1,
"greatPersonPoints": {"production": 1} "greatPersonPoints": {"gold": 1},
"providesFreeBuilding": "Broadcast Tower" "providesFreeBuilding": "Broadcast Tower",
"uniques": ["+1 population in each city","+1 happiness in each city"] "uniques": ["[+1] population [in all cities]", "[+1 Happiness] [in all cities]"],
"requiredTech": "Telecommunications" // todo doesn't exist yet! "requiredTech": "Telecommunications",
"quote": "'Nothing travels faster than light with the possible exception of bad news, which obeys its own special rules.' Douglas Adams"
},
{
"name": "Bomb Shelter",
"cost": 300,
"maintenance": 1,
"requiredTech": "Telecommunications",
"uniques": ["Population loss from nuclear attacks -[75]%"]
}, },
*/
{ {
"name": "SS Cockpit", "name": "SS Cockpit",
"requiredResource": "Aluminum", "requiredResource": "Aluminum",

View File

@ -553,6 +553,12 @@
"buildingCost": 750, "buildingCost": 750,
"wonderCost": 1250, "wonderCost": 1250,
"techs": [ "techs": [
{
"name": "Telecommunications",
"row": 2,
"prerequisites": ["Ecology"],
"quote": "'The more we elaborate our means of communication, the less we communicate.' J.B. Priestly"
},
{ {
"name": "Mobile Tactics", "name": "Mobile Tactics",
"row": 3, "row": 3,
@ -596,8 +602,8 @@
"techs": [ "techs": [
{ {
"name": "Particle Physics", "name": "Particle Physics",
"row": 4, "row": 3,
"prerequisites": ["Mobile Tactics", "Advanced Ballistics"], "prerequisites": ["Telecommunications","Mobile Tactics","Advanced Ballistics"],
"quote": "'Every particle of matter is attracted by or gravitates to every other particle of matter with a force inversely proportional to the squares of their distances.' - Isaac Newton" "quote": "'Every particle of matter is attracted by or gravitates to every other particle of matter with a force inversely proportional to the squares of their distances.' - Isaac Newton"
}, },
{ {

View File

@ -15,6 +15,7 @@ import com.unciv.models.ruleset.unit.UnitType
import com.unciv.models.stats.Stat import com.unciv.models.stats.Stat
import com.unciv.models.translations.tr import com.unciv.models.translations.tr
import java.util.* import java.util.*
import kotlin.math.min
import kotlin.math.max import kotlin.math.max
/** /**
@ -474,11 +475,11 @@ object Battle {
populationLossReduced = true populationLossReduced = true
} }
if (city.population.population < 5 && !populationLossReduced) { if (city.population.population < 5 && !populationLossReduced) {
city.population.population = 1 // For cities that cannot be destroyed, such as original capitals city.population.setPopulation(1) // For cities that cannot be destroyed, such as original capitals
city.destroyCity() city.destroyCity()
} else { } else {
city.population.population -= populationLoss.toInt() city.population.addPopulation(-populationLoss.toInt())
if (city.population.population < 1) city.population.population = 1 if (city.population.population < 1) city.population.setPopulation(1)
city.population.unassignExtraPopulation() city.population.unassignExtraPopulation()
city.health -= ((0.5 + 0.25 * Random().nextFloat()) * city.health * damageModifierFromMissingResource).toInt() city.health -= ((0.5 + 0.25 * Random().nextFloat()) * city.health * damageModifierFromMissingResource).toInt()
if (city.health < 1) city.health = 1 if (city.health < 1) city.health = 1
@ -531,7 +532,7 @@ object Battle {
val city = tile.getCity() val city = tile.getCity()
if (city != null && city.location == tile.position) { if (city != null && city.location == tile.position) {
if (city.population.population < 5) { if (city.population.population < 5) {
city.population.population = 1 // For cities that cannot be destroyed, such as original capitals city.population.setPopulation(1) // For cities that cannot be destroyed, such as original capitals
city.destroyCity() city.destroyCity()
} else { } else {
var populationLoss = city.population.population * (0.6 + Random().nextFloat() * 0.2); var populationLoss = city.population.population * (0.6 + Random().nextFloat() * 0.2);
@ -540,9 +541,9 @@ object Battle {
populationLoss *= 1 - unique.params[0].toFloat() / 100f populationLoss *= 1 - unique.params[0].toFloat() / 100f
populationLossReduced = true populationLossReduced = true
} }
city.population.population -= populationLoss.toInt() city.population.addPopulation(-populationLoss.toInt())
if (city.population.population < 5 && populationLossReduced) city.population.population = 5 if (city.population.population < 5 && populationLossReduced) city.population.setPopulation(5)
if (city.population.population < 1) city.population.population = 1 if (city.population.population < 1) city.population.setPopulation(1)
city.population.unassignExtraPopulation() city.population.unassignExtraPopulation()
city.health -= (0.5 * city.getMaxHealth() * damageModifierFromMissingResource).toInt() city.health -= (0.5 * city.getMaxHealth() * damageModifierFromMissingResource).toInt()
if (city.health < 1) city.health = 1 if (city.health < 1) city.health = 1

View File

@ -361,7 +361,7 @@ class CityInfo {
cityConstructions.endTurn(stats) cityConstructions.endTurn(stats)
expansion.nextTurn(stats.culture) expansion.nextTurn(stats.culture)
if (isBeingRazed) { if (isBeingRazed) {
population.population-- population.addPopulation(-1)
if (population.population <= 0) { // there are strange cases where we get to -1 if (population.population <= 0) { // there are strange cases where we get to -1
civInfo.addNotification("[$name] has been razed to the ground!", location, "OtherIcons/Fire") civInfo.addNotification("[$name] has been razed to the ground!", location, "OtherIcons/Fire")
destroyCity() destroyCity()

View File

@ -47,7 +47,7 @@ class CityInfoConquestFunctions(val city: CityInfo){
moveToCiv(conqueringCiv) moveToCiv(conqueringCiv)
Battle.destroyIfDefeated(oldCiv, conqueringCiv) Battle.destroyIfDefeated(oldCiv, conqueringCiv)
if (population.population > 1) population.population -= 1 + population.population / 4 // so from 2-4 population, remove 1, from 5-8, remove 2, etc. if (population.population > 1) population.addPopulation(-1 - population.population / 4) // so from 2-4 population, remove 1, from 5-8, remove 2, etc.
reassignPopulation() reassignPopulation()
if (reconqueredCityWhileStillInResistance || foundingCiv == conqueringCiv.civName) if (reconqueredCityWhileStillInResistance || foundingCiv == conqueringCiv.civName)

View File

@ -14,6 +14,7 @@ class PopulationManager {
lateinit var cityInfo: CityInfo lateinit var cityInfo: CityInfo
var population = 1 var population = 1
private set
var foodStored = 0 var foodStored = 0
// In favor of this bad boy // In favor of this bad boy
@ -70,6 +71,19 @@ class PopulationManager {
private fun getStatsOfSpecialist(name: String) = cityInfo.cityStats.getStatsOfSpecialist(name) private fun getStatsOfSpecialist(name: String) = cityInfo.cityStats.getStatsOfSpecialist(name)
internal fun addPopulation(count: Int) {
population += count
val freePopulation = getFreePopulation()
if (freePopulation < 0) {
unassignExtraPopulation()
} else {
autoAssignPopulation()
}
}
internal fun setPopulation(count: Int) {
addPopulation(-population + count)
}
internal fun autoAssignPopulation(foodWeight: Float = 1f) { internal fun autoAssignPopulation(foodWeight: Float = 1f) {
for (i in 1..getFreePopulation()) { for (i in 1..getFreePopulation()) {

View File

@ -700,8 +700,7 @@ class MapUnit {
if (civInfo.cities.isNotEmpty()) actions.add { if (civInfo.cities.isNotEmpty()) actions.add {
val city = civInfo.cities.random(tileBasedRandom) val city = civInfo.cities.random(tileBasedRandom)
city.population.population++ city.population.addPopulation(1)
city.population.autoAssignPopulation()
val locations = LocationAction(listOf(tile.position, city.location)) val locations = LocationAction(listOf(tile.position, city.location))
civInfo.addNotification( civInfo.addNotification(
"We have found survivors in the ruins - population added to [" + city.name + "]", "We have found survivors in the ruins - population added to [" + city.name + "]",

View File

@ -77,10 +77,17 @@ object UniqueTriggerActivation {
civInfo.addUnit(greatPerson.name, chosenCity) civInfo.addUnit(greatPerson.name, chosenCity)
} }
} }
// Deprecated since 3.15.4
"+1 population in each city" -> "+1 population in each city" ->
for (city in civInfo.cities) { for (city in civInfo.cities) {
city.population.population += 1 city.population.addPopulation(1)
city.population.autoAssignPopulation() }
//
"[] population []" ->
for (city in civInfo.cities) {
if (city.matchesFilter(unique.params[1])) {
city.population.addPopulation(unique.params[0].toInt())
}
} }
"Free Technology" -> if (!civInfo.isSpectator()) civInfo.tech.freeTechs += 1 "Free Technology" -> if (!civInfo.isSpectator()) civInfo.tech.freeTechs += 1
"[] Free Technologies" -> if (!civInfo.isSpectator()) civInfo.tech.freeTechs += unique.params[0].toInt() "[] Free Technologies" -> if (!civInfo.isSpectator()) civInfo.tech.freeTechs += unique.params[0].toInt()

View File

@ -277,15 +277,18 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Spaceship](https://thenounproject.com/term/spaceship/1444621/) By Dinosoft Labs for Apollo Program * [Spaceship](https://thenounproject.com/term/spaceship/1444621/) By Dinosoft Labs for Apollo Program
* [Build](https://thenounproject.com/term/build/1156478/) By Michael G Brown for Spaceship Factory * [Build](https://thenounproject.com/term/build/1156478/) By Michael G Brown for Spaceship Factory
* [Nuclear Plant](https://thenounproject.com/term/nuclear-plant/1132340/) By Andrejs Kirma * [Nuclear Plant](https://thenounproject.com/term/nuclear-plant/1132340/) By Andrejs Kirma
* [CN Tower Toronto](https://thenounproject.com/search/?q=cn%20tower&i=807678) By mikicon
* [Pentagon](https://thenounproject.com/search/?q=the%20pentagon&i=1788323) By Maxim Kulikov * [Pentagon](https://thenounproject.com/search/?q=the%20pentagon&i=1788323) By Maxim Kulikov
### Future Era ### Future Era
* [Hubble Telescope](https://thenounproject.com/search/?q=hubble%20space&i=445502) By Scott Lewis for Hubble Space Telescope * [Hubble Telescope](https://thenounproject.com/search/?q=hubble%20space&i=445502) By Scott Lewis for Hubble Space Telescope
* [CN Tower Toronto](https://thenounproject.com/search/?q=cn%20tower&i=807678) By mikicon for CN tower
* [War Shelter](https://www.flaticon.com/free-icon/war-shelter_978661) by [Frepik](www.freepik.com) for Bomb Shelter
* [Missile](https://thenounproject.com/term/missile/799922/) By ProSymbols for SS Booster * [Missile](https://thenounproject.com/term/missile/799922/) By ProSymbols for SS Booster
* [Rocket](https://thenounproject.com/term/rocket/937173/) By BomSymbols for SS Cockpit * [Rocket](https://thenounproject.com/term/rocket/937173/) By BomSymbols for SS Cockpit
* [Engine](https://thenounproject.com/term/engine/1877958/) By Andre for SS Engine * [Engine](https://thenounproject.com/term/engine/1877958/) By Andre for SS Engine
* [Chamber](https://thenounproject.com/term/chamber/1242689/) By IYIKON for SS Stasis Chamber * [Chamber](https://thenounproject.com/term/chamber/1242689/) By IYIKON for SS Stasis Chamber
### All Era's
* [Illuminati](https://thenounproject.com/term/illuminati/1617812) by emilegraphics for the Utopia Project * [Illuminati](https://thenounproject.com/term/illuminati/1617812) by emilegraphics for the Utopia Project
## Social Policies ## Social Policies
@ -459,6 +462,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Electronics](https://thenounproject.com/search/?q=Electronics&i=1565843) By Cuby Design * [Electronics](https://thenounproject.com/search/?q=Electronics&i=1565843) By Cuby Design
* [Atom](https://thenounproject.com/term/atom/1586852/) By Kelsey Armstrong for Particle Physics * [Atom](https://thenounproject.com/term/atom/1586852/) By Kelsey Armstrong for Particle Physics
* [Thermonuclear fusion](https://thenounproject.com/search/?q=fusion&i=3292735) by Olena Panasovska, UA for Nuclear Fusion * [Thermonuclear fusion](https://thenounproject.com/search/?q=fusion&i=3292735) by Olena Panasovska, UA for Nuclear Fusion
* [telecommunications](https://thenounproject.com/search/?q=telecommunications&i=3191260) by Wichai Wi for Telcommunications
* [Information Technology](https://thenounproject.com/term/information-technology/1927668/) By Vectors Markeet for Future Tech * [Information Technology](https://thenounproject.com/term/information-technology/1927668/) By Vectors Markeet for Future Tech
## Terrain ## Terrain