// TELEPORT v0.04 (c) 2014 NeatPortal.com
// This script will check if all your cities are in the specified state, and do nothing if they are.
// Otherwise it will prepare and teleport cities as needed.
// Once all cities are in the right state the script with close the bot (allowing for clean restart by the director).
//
// Usage example: To teleport all cities to Tuscany run bot with these custom command line parameters:
//    -runscript Teleport.txt -teleport tuscany

if Config.teleport == null goto finish
state = Config.teleport.toUpperCase()

if state == GetZoneName(city.fieldId).toUpperCase() goto finish

config wartown:2,comfort:1
recallall

sleep 30

// sort by reachTime, descending
label checkArmies
army = city.selfArmies.toArray().sortOn("reachTime", 18)[0]
if army == null goto teleport

secondsLeft = ceil(TimeDiff(army.reachTime) / 1000) // time left in seconds, rounded up
if secondsLeft > 0 echo "Waiting for armies to return for " + secondsLeft + " seconds"
if secondsLeft > 0 execute "sleep " + secondsLeft

if city.selfArmies.length > 0 say "Still have armies"
if city.selfArmies.length > 0 goto checkArmies

label teleport
try = 0
say "Trying to teleport " + city.name + " to " + state
sleep 10

label tryteleport
try = try + 1
execute "teleport " + state
if !$error goto finalcheck
if try >= 5 goto giveup
say "Can't teleport " + city.name + " to " + state + ", will retry in 5 minutes"
sleep 5:00
goto tryteleport

label finalcheck
x = 0
label checkCities
if GetZoneName(cities[x].cityManager.fieldId).toUpperCase() != state goto continue
x = x + 1
if x < cities.length goto checkCities
say "All cities are now in " + state + ", will close in 10 seconds"
sleep 10

// assuming the director will restart the bot
exit

label giveup
say "Can't teleport " + city.name + " to " + state

label continue
loadgoals

label finish


ScriptExamples

AutoTeleporter (last edited 2014-03-18 17:00:03 by Inanna)