#done by Antaine with great indebtedness to Baldyr, God-Emperor, and EmperorFool
from CvPythonExtensions import *
from Popup import PyPopup
from CvEventManager import *
from PyHelpers import *
gc = CyGlobalContext()
cyGame = CyGame()
cyMap = CyMap()
pyGame = PyGame()
#spawn zones
tRome = ((60, 43), (63, 48))
tPersia = ((80, 39), (86, 43))
tJapan = ((111, 41), (116, 51))
tKorea = ((107, 45), (111, 50))
tArabia = ((73, 31), (82, 38))
tEngland = ((53, 53), (56, 56))
tFrance = ((56, 47), (59, 52))
tSpain = ((52, 43), (57, 47))
tGermany = ((60, 50), (64, 64))
tRussia = ((65, 49), (80, 63))
tEastUS = ((24, 42), (34, 50))
tWestUS = ((11, 44), (23, 43))
tHawaii = ((112, 34), (6, 39))
#units for later civ spawns
eSettler = 4
eWorker = 5
eArcher = 57
eLongbowman = 60
eMusketman = 42
eRifleman = 46
#for barbarian spawns
eGalley = 90
eViking = 36
eZulu = 38
eMongol = 68
eNative = 33
eAztec = 27
eInca = 25
eMaya = 39
#civs in the game (civ IDs, not WBS IDs)
eCeltia = 6
eEgypt = 8
eBabylon = 3
eGreece = 13
eIndia = 16
eChina = 7
eRome = 28
ePersia = 26
eJapan = 17
eKorea = 19
eArabia = 1
eEngland = 9
eFrance = 11
eSpain = 30
eGermany = 12
eRussia = 29
eAmerica = 0
cityNameDict = {
(55, 54): "London",
(55, 53): "London",
(56, 53): "London",
(56, 54): "London",
(63, 52): "Berlin",
(62, 52): "Berlin",
(62, 53): "Berlin",
(63, 53): "Berlin",
(51, 55): "Dublin",
(51, 56): "Dublin",
(55, 58): "Edinburgh",
(54, 57): "Edinburgh",
(54, 58): "Edinburgh",
(58, 51): "Paris",
(59, 51): "Paris",
(58, 52): "Paris",
(57, 51): "Paris",
(58, 50): "Paris",
(57, 50): "Paris",
(55, 45): "Madrid",
(55, 46): "Madrid",
(54, 46): "Madrid",
(54, 45): "Madrid",
(53, 45): "Lisbon",
(53, 44): "Lisbon",
(53, 46): "Lisbon",
(61, 46): "Rome",
(62, 45): "Rome",
(62, 46): "Rome",
(61, 47): "Rome",
(60, 47): "Rome",
(67, 43): "Athens",
(66, 42): "Athens",
(67, 44): "Athens",
(66, 44): "Athens",
(68, 46): "Byzantium",
(67, 46): "Byzantium",
(69, 45): "Byzantium",
(73, 40): "Jerusalem",
(73, 41): "Jerusalem",
(72, 39): "Jerusalem",
(72, 40): "Jerusalem",
(73, 42): "Antioch",
(73, 43): "Antioch",
(68, 39): "Alexandria",
(69, 39): "Alexandria",
(67, 39): "Alexandria",
(30, 47): "New York",
(31, 47): "New York",
(29, 47): "New York",
(29, 46): "New York",
(31, 48): "Boston",
(31, 49): "Boston",
(32, 49): "Boston",
(24, 43): "New Orleans",
(23, 43): "New Orleans",
(25, 43): "New Orleans",
(24, 48): "Chicago",
(24, 47): "Chicago",
(24, 49): "Chicago",
(25, 47): "Chicago",
(12, 48): "San Francisco",
(12, 47): "San Francisco",
(12, 49): "San Francisco",
(12, 50): "Seattle",
(12, 46): "Los Angeles",
(75, 35): "Mecca",
(74, 36): "Mecca",
(75, 34): "Mecca",
(74, 37): "Mecca",
(73, 37): "Mecca",
(76, 34): "Mecca",
(68, 57): "St. Petersburg",
(67, 56): "St. Petersburg",
(66, 56): "St. Petersburg",
(68, 56): "St. Petersburg",
(68, 58): "St. Petersburg",
(67, 58): "St. Petersburg",
(71, 54): "Moscow",
(71, 53): "Moscow",
(70, 53): "Moscow",
(72, 53): "Moscow",
(72, 54): "Moscow",
(70, 54): "Moscow",
(70, 56): "Moscow",
(71, 55): "Moscow",
(72, 55): "Moscow",
(69, 52): "Kiev",
(69, 51): "Kiev",
(70, 51): "Kiev",
(70, 50): "Odessa",
(71, 50): "Odessa",
(89, 35): "Bombay",
(89, 34): "Bombay",
(88, 35): "Bombay",
(88, 36): "Bombay",
(92, 34): "Pondicherry",
(91, 34): "Pondicherry",
(91, 33): "Pondicherry",
(102, 47): "Peking",
(101, 48): "Peking",
(102, 48): "Peking",
(103, 48): "Peking",
(101, 47): "Peking",
(103, 47): "Peking",
(101, 46): "Peking",
(102, 46): "Peking",
(103, 46): "Peking",
(115, 46): "Tokyo",
(115, 45): "Tokyo",
(114, 44): "Tokyo",
(106, 43): "Shanghai",
(106, 44): "Shanghai",
(106, 45): "Shanghai",
(107, 43): "Shanghai",
(107, 42): "Shanghai",
(105, 39): "Canton",
(105, 40): "Canton",
(106, 40): "Canton",
(106, 41): "Canton",
(103, 38): "Hong Kong",
(103, 39): "Hong Kong",
(104, 39): "Hong Kong",
(102, 38): "Hong Kong",
(102, 32): "Saigon",
(103, 33): "Saigon",
(102, 33): "Saigon",
(1, 38): "Honolulu",
(3, 37): "Honolulu",
(4, 35): "Hilo",
(5, 36): "Hilo",
(103, 14): "Perth",
(104, 14): "Perth",
(104, 13): "Perth",
(104, 12): "Perth",
(103, 12): "Perth",
(107, 19): "Darwin",
(107, 20): "Darwin",
(108, 20): "Darwin",
(108, 21): "Darwin",
(118, 13): "Sydney",
(117, 12): "Sydney",
(118, 15): "Sydney",
(118, 16): "Sydney",
(118, 17): "Sydney",
(114, 10): "Adelaide",
(114, 11): "Adelaide",
(113, 11): "Adelaide",
(115, 10): "Adelaide",
(77, 41): "Babylon",
(77, 40): "Babylon",
(76, 41): "Babylon",
(77, 42): "Babylon",
(76, 42): "Babylon",
(58, 47): "Marseilles",
(58, 48): "Marseilles",
(59, 48): "Marseilles",
(56, 48): "Bordeaux",
(56, 49): "Bordeaux",
(55, 51): "Brest",
(56, 51): "Brest",
(56, 44): "Gibraltar",
(54, 44): "Gibraltar",
(53, 54): "Cardiff",
(54, 54): "Cardiff",
(53, 55): "Cardiff",
(53, 53): "Cardiff",
(55, 56): "York",
(54, 56): "York",
(49, 54): "Cork",
(49, 56): "Galway",
(50, 56): "Galway",
(51, 54): "Waterford",
(50, 54): "Cashel",
(51, 57): "Belfast",
(50, 57): "Derry",
(50, 55): "Limerick",
(60, 55): "Copenhagen",
(60, 54): "Copenhagen",
(60, 53): "Copenhagen",
(62, 52): "Trondheim",
(63, 63): "Trondheim",
(64, 64): "Trondheim",
(60, 58): "Oslo",
(59, 57): "Oslo",
(58, 58): "Oslo",
(62, 58): "Uppsala",
(62, 59): "Uppsala",
(62, 60): "Uppsala",
(63, 58): "Stockholm",
(63, 57): "Stockholm",
(63, 56): "Stockholm",
(62, 56): "Stockholm",
(66, 59): "Helsinki",
(65, 59): "Helsinki",
(65, 58): "Helsinki",
(65, 58): "Vilnius",
(65, 55): "Vilnius",
(66, 54): "Vilnius",
(66, 55): "Vilnius",
(64, 53): "Vilnius",
(65, 53): "Vilnius",
(66, 53): "Vilnius",
(63, 50): "Vienna",
(64, 50): "Vienna",
(65, 50): "Vienna",
(65, 49): "Vienna",
(64, 49): "Vienna",
(63, 49): "Vienna",
(64, 52): "Warsaw",
(63, 51): "Warsaw",
(62, 48): "Venice",
(61, 48): "Venice",
(63, 48): "Venice",
(61, 43): "Palermo",
(62, 43): "Palermo",
(76, 32): "Sanaa",
(77, 32): "Sanaa",
(77, 33): "Sanaa",
(78, 33): "Sanaa",
(64, 12): "Cape Town",
(64, 13): "Cape Town",
(65, 13): "Cape Town",
(65, 12): "Cape Town",
(42, 18): "Rio De Janeiro",
(43, 19): "Rio De Janeiro",
(41, 18): "Rio De Janeiro",
(39, 15): "Montevideo",
(38, 14): "Montevideo",
(38, 13): "Montevideo",
(36, 13): "Buenos Aires",
(37, 13): "Buenos Aires",
(36, 12): "Buenos Aires",
(18, 39): "Mexico City",
(18, 38): "Mexico City",
(19, 39): "Mexico City",
(19, 40): "Mexico City",
(18, 49): "Mexico City",
(24, 45): "St. Louis",
(25, 45): "St. Louis",
(25, 46): "St. Louis",
(24, 46): "St. Louis",
(27, 38): "Havanna",
(28, 38): "Havanna",
(31, 37): "Port-au-Prince",
(31, 39): "Port-au-Prince",
(56, 50): "Nantes",
(59, 53): "Amsterdam",
(59, 52): "Amsterdam",
(28, 46): "Philadelphia",
(28, 45): "Philadelphia",
(27, 45): "Washington",
(27, 44): "Washington",
(58, 42): "Carthage",
(59, 42): "Carthage",
(59, 41): "Carthage",
(59, 40): "Carthage",
(60, 40): "Tripoli",
(61, 40): "Tripoli",
(62, 40): "Tripoli",
(47, 61): "Reykjavik",
(47, 62): "Reykjavik",
(48, 62): "Reykjavik",
(46, 63): "Reykjavik",
(69, 41): "Knossos",
(96, 39): "Calcutta"
}
#holy city norming
#reads the date regardless of game speed
def isDate(iDate):
return cyGame.getTurnYear(cyGame.getGameTurn() +1) > iDate and cyGame.getGameTurnYear() <= iDate
#searches in the dictionary to get a name for a key tile
def nameNorm(pCity):
coord = (pCity.getX(), pCity.getY())
if coord in cityNameDict:
name = cityNameDict[coord]
pCity.setName(name, True)
return True
else:
return False
#compiles a list of plots
def getPlotList(tBL, tTR):
lPlotList = []
for x in range(tBL[0], tTR[0]+1):
for y in range(tBL[1], tTR[1]+1):
lPlotList.append((x, y))
return lPlotList
#gets all tiles within the given distance of the tile given
def getSquareList(tCoords, iDistance):
return getPlotList((tCoords[0]-iDistance, tCoords[1]-iDistance), (tCoords[0]+iDistance, tCoords[1]+iDistance))
#gets all tiles adjacent to the tile given
def getAdjacentList(tCoords):
return getSquareList(tCoords, 1)
#spawns the classical civs 800BC on the map (different date used for testing change before release)
def classicalSpawn():
pRome = cyMap.plot(61, 46)
pPersia = cyMap.plot(81, 41)
pJapan = cyMap.plot(115, 46)
pKorea = cyMap.plot(109, 46)
if isDate(-3985):
# CyInterface().addImmediateMessage("Latin tribes have united and declare their independence. A new civilization is born!")
for tCoords in getAdjacentList((61, 46)):
x, y = tCoords
pCurrentPlot = cyMap.plot(x, y)
if pCurrentPlot.isCity():
pCity = pCurrentPlot.getPlotCity()
pCity.kill()
PyPlayer(7).initCity(61, 46)
pRome.getPlotCity().setPopulation(3)
pRome.getPlotCity().setCulture(7, 500, True)
for tCoords in getPlotList((60, 43), (63, 48)):
x, y = tCoords
pCurrentPlot = cyMap.plot(x,y)
if pCurrentPlot.isCity():
pCurrentPlot.setOwner(7)
pPersia.getPlotCity().kill()
PyPlayer(8).initCity(81, 41)
pJapan.getPlotCity().kill()
PyPlayer(9).initCity(115, 46)
pKorea.getPlotCity().kill()
PyPlayer(10).initCity(109, 46)
#Romans
PyPlayer(7).initUnit(4, 61, 46, 2)
PyPlayer(7).initUnit(5, 61, 46, 2)
PyPlayer(7).initUnit(57, 61, 46, 15)
#Persians
PyPlayer(8).initUnit(4, 81, 41, 2)
PyPlayer(8).initUnit(5, 81, 41, 2)
PyPlayer(8).initUnit(57, 81, 41, 15)
#Japanese
PyPlayer(9).initUnit(4, 115, 46, 2)
PyPlayer(9).initUnit(5, 115, 46, 2)
PyPlayer(9).initUnit(57, 115, 46, 15)
#Koreans
PyPlayer(10).initUnit(4, 109, 46, 2)
PyPlayer(10).initUnit(5, 109, 46, 2)
PyPlayer(10).initUnit(57, 109, 46, 15)
#Roman colony spawn 1AD
def romeSpawn():
if isDate(1):
#Lisbon
PyPlayer(7).initUnit(4, 53, 45, 1)
PyPlayer(7).initUnit(5, 53, 45, 2)
PyPlayer(7).initUnit(57, 53, 45, 5)
#Carthage
PyPlayer(7).initUnit(4, 58, 42, 1)
PyPlayer(7).initUnit(5, 58, 42, 2)
PyPlayer(7).initUnit(57, 58, 42, 5)
#Tripoli
PyPlayer(7).initUnit(4, 60, 40, 1)
PyPlayer(7).initUnit(5, 60, 40, 2)
PyPlayer(7).initUnit(57, 60, 40, 5)
#spawns Arab civ 400AD
#def arabSpawn():
# if isDate(400):
#spawns medieval civs 800AD
#def medievalSpawn():
# if isDate(800):
#English
#French
#Spanish
#Germans
#Russians
#American spawn and flip of eastern US 1770AD
#def ameriSpawn():
# if isDate(1770):
#colony spawn for Greeks and Celts 1600BC
def ancientSpawn():
if isDate(-1600):
#Celts
PyPlayer(0).initUnit(4, 51, 55, 1)
PyPlayer(0).initUnit(5, 51, 55, 2)
PyPlayer(0).initUnit(57, 51, 55, 3)
PyPlayer(0).initUnit(4, 55, 54, 1)
PyPlayer(0).initUnit(5, 55, 54, 2)
PyPlayer(0).initUnit(57, 55, 54, 3)
PyPlayer(0).initUnit(4, 55, 58, 1)
PyPlayer(0).initUnit(5, 55, 58, 2)
PyPlayer(0).initUnit(57, 55, 58, 3)
#Greeks
PyPlayer(5).initUnit(4, 68, 46, 1)
PyPlayer(5).initUnit(5, 68, 46, 2)
PyPlayer(5).initUnit(57, 68, 46, 3)
PyPlayer(5).initUnit(4, 69, 41, 1)
PyPlayer(5).initUnit(5, 69, 41, 2)
PyPlayer(5).initUnit(57, 69, 41, 3)
PyPlayer(5).initUnit(4, 64, 47, 1)
PyPlayer(5).initUnit(5, 64, 47, 2)
PyPlayer(5).initUnit(57, 64, 47, 3)
#spawns German colonies in Scandinavia and Iceland 1200AD
#def scandiSpawn():
# if isDate(1200):
#American spawns and flip of western US and Hawaii 1900AD
#def ameriFlip():
# if isDate(1900):
#colony spawns tied to discovery of Astronomy
#colonySpawn
#Arabs
#English
#French
#Spanish
#Russia
#spawns medieval barbarians 1000AD
#def barbSpawn():
# if isDate(1000):
#Vikings
#Mongols
#spawns native Americans 1400AD
#def nativeSpawn():
# if isDate(1400):
#North America
#Aztec
#Inca