Name | Type | is_array | initial_value |
Castwall | abilcode | Yes | |
cont | integervar | No | |
Dangle | real | Yes | |
Dscale | real | Yes | |
fake_innate | abilcode | Yes | |
Flyng_Unit | unitcode | Yes | |
Fupgrade_build | unitcode | Yes | |
gmode | trigger | No | |
Grupo_rescate | group | No | |
harvest_unit | unitcode | Yes | |
Have_mageW | boolean | Yes | |
Have_meleeW | boolean | Yes | |
Have_rangeW | boolean | Yes | |
Have_tankW | boolean | Yes | |
Iconpatch | string | Yes | |
infogame | string | No | Type -gmode to check current game values |
Innate | abilcode | Yes | |
Innate_Ability | hashtable | No | |
Innate_group | group | Yes | |
Load_U | hashtable | No | |
Mage_four | unitcode | Yes | |
Mage_scnd | unitcode | Yes | |
Mage_third | unitcode | Yes | |
Mage_Unit | unitcode | Yes | |
Main_build | unitcode | Yes | |
Mele_four | unitcode | Yes | |
Mele_scnd | unitcode | Yes | |
Mele_thrd | unitcode | Yes | |
Mele_Unit | unitcode | Yes | |
ModeC | hashtable | No | |
Modetext | string | No | |
Novice_On | boolean | No | |
Obstacles | abilcode | Yes | |
Obuy_unit | unit | No | |
Otbuild | unitcode | Yes | |
owned_Main | unitcode | Yes | |
owned_second | unitcode | Yes | |
owned_third | unitcode | Yes | |
Player_Ai | player | Yes | |
player_count | integer | No | |
Race | integer | Yes | |
rand_point | location | No | |
Range_four | unitcode | Yes | |
Range_scnd | unitcode | Yes | |
Range_third | unitcode | Yes | |
Range_Unit | unitcode | Yes | |
sand_victory | real | No | |
Save_U | hashtable | No | |
setting_on | boolean | No | |
Shop_build | unitcode | Yes | |
shop_zone | rect | Yes | |
Siege_Unit | unitcode | Yes | |
spell | abilcode | No | |
storm_victory | real | No | |
Supgrade_build | unitcode | Yes | |
Tank_four | unitcode | Yes | |
Tank_scnd | unitcode | Yes | |
Tank_third | unitcode | Yes | |
Tank_Unit | unitcode | Yes | |
Tech_build | unitcode | Yes | |
Temp_group1 | group | No | |
temp_point | location | No | |
tmpGroup | group | No | |
Tower_build | unitcode | Yes | |
Tree | destructablecode | Yes | |
UP_effect | string | Yes | |
Walldoodad | destructablecode | Yes | |
walltype | unitcode | Yes | |
Warlord_on | boolean | No | |
Warrior_on | boolean | No | |
Zone | rect | Yes |
library gameinfo initializer init
globals
quest intro
questitem introia
questitem introib
questitem introic
quest mecha
questitem mechaia
questitem mechaib
questitem mechaic
quest mbuild
questitem mbuildia
questitem mbuildib
questitem mbuildic
quest mresou
questitem mresouia
questitem mresouib
questitem mresouic
quest expand
questitem expandia
questitem expandib
questitem expandic
quest commands
questitem commandsia
questitem commandsib
questitem commandsic
endglobals
function initquest takes nothing returns nothing
set intro = CreateQuest()
call QuestSetTitle(intro,"Welcome to Warlord Empires LOST")
call QuestSetDescription(intro ,"Thanks for play Warlords Empire, This game is about place controls and enemy domination. When game starts you are moved to select your race option, There are 10 race to choose. You start the game with some warriors, a charger vehicle and three buildings. Your |cffffcc00emblem|r building provides heal for your troops and offers some items to buy.")
call QuestSetIconPath(intro, "ReplaceableTextures\\CommandButtons\\BTNFire.blp" )
call QuestSetRequired(intro,true)
call QuestSetDiscovered(intro,true)
call QuestSetCompleted(intro, false)
set introia = CreateQuestItemBJ(intro,"Game's main target is destruction of all enemy emblems" )
set introib = CreateQuestItemBJ(intro,"Expand your terrory, train units and upgrade improvements" )
set introic = CreateQuestItemBJ(intro,"Fight against your enemies" )
set mecha = CreateQuest()
call QuestSetTitle(mecha,"Game Mechanics: Units")
call QuestSetDescription(mecha ,"You can evolve your units by killing enemy units. A counter shows current kills for any unit under your control. After three kills your unit gains |cffffcc00killer brand|r ability. Each evolving unit has 4 stages: on 3rd stage your unit gains items inventory and at 4th stage your unit becomes |cffffcc00hero|r. If your hero dies you can revive him from the tech building.")
call QuestSetIconPath(mecha, "ReplaceableTextures\\CommandButtons\\BTNTheCaptain.blp" )
call QuestSetRequired(mecha,true)
call QuestSetDiscovered(mecha,true)
call QuestSetCompleted(mecha, false)
set mechaia = CreateQuestItemBJ(mecha,"You own 5 unit types: melee, ranged, mage, defense and air " )
set mechaib = CreateQuestItemBJ(mecha,"Mage and defense are unlocked by upgrading trainer building" )
set mechaic = CreateQuestItemBJ(mecha,"Air units are trained from highest trainer building. Castles & Fortress" )
set mresou = CreateQuest()
call QuestSetTitle(mresou,"Game mechanics: Resources")
call QuestSetDescription(mresou ,"There are 2 main resources in game: gold & lumber. |cffffcc00Gold|r is for aggresive tactics and |cffccff00Lumber|r is for defensive tactics. You get gold as income each 40 sec. More trainer buildings equals more gold income. You get gold too by killing enemy units, higher rank means higher gold reward. Lumber is used to deploy and upgrade walls and masonry.")
call QuestSetIconPath(mresou, "ReplaceableTextures\\CommandButtons\\BTNChestOfGold.blp" )
call QuestSetRequired(mresou,true)
call QuestSetDiscovered(mresou,true)
call QuestSetCompleted(mresou, false)
set mresouia = CreateQuestItemBJ(mresou,"Selling items gives good gold amount" )
set mresouib = CreateQuestItemBJ(mresou,"Killing evolved units reward lumber too" )
set mresouic = CreateQuestItemBJ(mresou,"Pillage gives you a great percent of enemy's gold &lumber " )
set mbuild = CreateQuest()
call QuestSetTitle(mbuild,"Game mechanics: Buildings")
call QuestSetDescription(mbuild ,"You own 3 buildings at game beginnig: A trainer, a tech and an emblem building. Upgrading trainer building unlocks you new units and allows to deploy |cffffcc00defensive towers|r. Each defensive tower can deploy 3 |cffffcc00seetlements|r, each seetlement has worker to gather wood. Seetlements can deploy |cffffcc00walls|r, each wall has 2 improvement levels, increasing hit points")
call QuestSetIconPath(mbuild, "ReplaceableTextures\\CommandButtons\\BTNCastle.blp" )
call QuestSetRequired(mbuild,true)
call QuestSetDiscovered(mbuild,true)
call QuestSetCompleted(mbuild, false)
set mbuildia = CreateQuestItemBJ(mbuild,"Tech: upgrades Masonry, Armor, Damage and Hit points" )
set mbuildib = CreateQuestItemBJ(mbuild,"Emblem Building provides heal and items for your army" )
set mbuildic = CreateQuestItemBJ(mbuild,"Trainers provides units for your army, try to increase these buildings." )
set expand = CreateQuest()
call QuestSetTitle(expand,"Expanding you territory")
call QuestSetDescription(expand ,"When you destroy an enemy trainer building, a temporary owned unit is deployed. This unit gives you 3 control options: turn into owned trainer, pillage and destroy it. First one expand your controled territory, Pillage takes resources from last owner and gives it to you, and the last one finally destroy the owned unit.")
call QuestSetIconPath(expand, "ReplaceableTextures\\CommandButtons\\BTNEnchantedGemstone.blp" )
call QuestSetRequired(expand,false)
call QuestSetDiscovered(expand,true)
call QuestSetCompleted(expand, false)
set expandia = CreateQuestItemBJ(expand,"Temporary owned units will became neutral aggresive after 40 s." )
set expandib = CreateQuestItemBJ(expand,"Trees growing starts around new trainer buildings" )
set expandic = CreateQuestItemBJ(expand,"You can connect buildings by casting ways from trainers (inactive)" )
set commands = CreateQuest()
call QuestSetTitle(commands,"General Info & commands")
call QuestSetDescription(commands ,"This version is an evoluted design from original Warlords Empire 2010 map. You can test the map by adding computer players. Anyway there may be some lag if you play with the others 23 Ai players. Use it as your convenience. If you have questions don't hesitate to ask for them on Hiveworkshop page")
call QuestSetIconPath(commands, "ReplaceableTextures\\CommandButtons\\BTNTomeOfRetraining.blp" )
call QuestSetRequired(commands,false)
call QuestSetDiscovered(commands,true)
call QuestSetCompleted(commands, false)
set commandsia = CreateQuestItemBJ(commands,"Zoom: |cffffcc00-zo|r: zoom out, |cffffcc00-zi|r: zoom in, |cffffcc00-wide|r: panoramic zoom" )
set commandsib = CreateQuestItemBJ(commands,"Camera: |cffffcc00-cr|r: rotate right, |cffffcc00-cl|r: rotate left, |cffffcc00-cu|r: rotate up, |cffffcc00-cd|r: rotate down" )
set commandsic = CreateQuestItemBJ(commands,"|cffffcc00-clear|r: clears current screen texts" )
endfunction
private function init takes nothing returns nothing
endfunction
endlibrary
//TESH.scrollpos=0
//TESH.alwaysfold=0
library ARGB initializer init
//******************************************************************************
//*
//* ARGB 1.2
//* ====
//* For your color needs.
//*
//* An ARGB object is a by-value struct, this means that assigning copies the
//* contents of the struct and that you don't have to use .destroy(), the
//* downside is that you cannot assign its members (can't do set c.r= 123 )
//*
//* This library should have plenty of uses, for example, if your spell involves
//* some unit recoloring you can allow users to input the color in the config
//* section as 0xAARRGGBB and you can then use this to decode that stuff.
//*
//* You can also easily merge two colors and make fading effects using ARGB.mix
//*
//* There's ARGB.fromPlayer which gets an ARGB object containing the player's
//* color. Then you can use the previous utilities on it.
//*
//* The .str() instance method can recolor a string, and the recolorUnit method
//* will apply the ARGB on a unit
//*
//* For other uses, you can use the .red, .green, .blue and .alpha members to get
//* an ARGB object's color value (from 0 to 255).
//*
//* structs that have a recolor method that takes red,green,blue and alpha as 0.255
//* integers can implement the ARGBrecolor module to gain an ability to quickly
//* recolor using an ARGB object.
//*
//********************************************************************************
//=================================================================================
globals
private string array i2cc
endglobals
//this double naming stuff is beginning to make me insane, if only TriggerEvaluate() wasn't so slow...
struct ARGB extends array
static method create takes integer a, integer r, integer g, integer b returns ARGB
return ARGB(b + g*0x100 + r*0x10000 + a*0x1000000)
endmethod
// not really part of the exported stuff, I may remove it in the future, so please don't call this textmacro
//! textmacro ARGB_PLAYER_COLOR_2_ARGB
if(pc==PLAYER_COLOR_RED) then
return 0xFFFF0303
elseif(pc==PLAYER_COLOR_BLUE) then
return 0xFF0042FF
elseif(pc==PLAYER_COLOR_CYAN) then
return 0xFF1CE6B9
elseif(pc==PLAYER_COLOR_PURPLE) then
return 0xFF540081
elseif(pc==PLAYER_COLOR_YELLOW) then
return 0xFFFFFC01
elseif(pc==PLAYER_COLOR_ORANGE) then
return 0xFFFE8A0E
elseif(pc==PLAYER_COLOR_GREEN) then
return 0xFF20C000
elseif(pc==PLAYER_COLOR_PINK) then
return 0xFFE55BB0
elseif(pc==PLAYER_COLOR_LIGHT_GRAY) then
return 0xFF959697
elseif(pc==PLAYER_COLOR_LIGHT_BLUE) then
return 0xFF7EBFF1
elseif(pc==PLAYER_COLOR_AQUA) then
return 0xFF106246
elseif(pc==PLAYER_COLOR_BROWN) then
return 0xFF4E2A04
endif
return 0xFF111111
//! endtextmacro
static method fromPlayerColor takes playercolor pc returns ARGB
//! runtextmacro ARGB_PLAYER_COLOR_2_ARGB()
endmethod
static method fromPlayer takes player p returns ARGB
local playercolor pc=GetPlayerColor(p)
//! runtextmacro ARGB_PLAYER_COLOR_2_ARGB()
endmethod
method operator alpha takes nothing returns integer
if( integer(this) <0) then
return 0x80+(-(-integer(this)+0x80000000))/0x1000000
else
return (integer(this))/0x1000000
endif
endmethod
method operator alpha= takes integer na returns ARGB
local integer a
local integer r
local integer g
local integer b
local integer col=integer(this)
if (col<0) then
set col=-(-col+0x80000000)
set a=0x80+col/0x1000000
set col=col-(a-0x80)*0x1000000
else
set a=col/0x1000000
set col=col-a*0x1000000
endif
set r=col/0x10000
set col=col-r*0x10000
set g=col/0x100
set b=col-g*0x100
return ARGB(b + g*0x100 + r*0x10000 + na*0x1000000)
endmethod
method operator red takes nothing returns integer
local integer c=integer(this)*0x100
if(c<0) then
return 0x80+(-(-c+0x80000000))/0x1000000
else
return c/0x1000000
endif
endmethod
method operator red= takes integer nr returns ARGB
local integer a
local integer r
local integer g
local integer b
local integer col=integer(this)
if (col<0) then
set col=-(-col+0x80000000)
set a=0x80+col/0x1000000
set col=col-(a-0x80)*0x1000000
else
set a=col/0x1000000
set col=col-a*0x1000000
endif
set r=col/0x10000
set col=col-r*0x10000
set g=col/0x100
set b=col-g*0x100
return ARGB(b + g*0x100 + nr*0x10000 + a*0x1000000)
endmethod
method operator green takes nothing returns integer
local integer c=integer(this)*0x10000
if(c<0) then
return 0x80+(-(-c+0x80000000))/0x1000000
else
return c/0x1000000
endif
endmethod
method operator green= takes integer ng returns ARGB
local integer a
local integer r
local integer g
local integer b
local integer col=integer(this)
if (col<0) then
set col=-(-col+0x80000000)
set a=0x80+col/0x1000000
set col=col-(a-0x80)*0x1000000
else
set a=col/0x1000000
set col=col-a*0x1000000
endif
set r=col/0x10000
set col=col-r*0x10000
set g=col/0x100
set b=col-g*0x100
return ARGB(b + ng*0x100 + r*0x10000 + a*0x1000000)
endmethod
//=======================================================
//
//
method operator blue takes nothing returns integer
local integer c=integer(this)*0x1000000
if(c<0) then
return 0x80+(-(-c+0x80000000))/0x1000000
else
return c/0x1000000
endif
endmethod
method operator blue= takes integer nb returns ARGB
local integer a
local integer r
local integer g
local integer b
local integer col=integer(this)
if (col<0) then
set col=-(-col+0x80000000)
set a=0x80+col/0x1000000
set col=col-(a-0x80)*0x1000000
else
set a=col/0x1000000
set col=col-a*0x1000000
endif
set r=col/0x10000
set col=col-r*0x10000
set g=col/0x100
set b=col-g*0x100
return ARGB(nb + g*0x100 + r*0x10000 + a*0x1000000)
endmethod
//====================================================================
// Mixes two colors, s would be a number 0<=s<=1 that determines
// the weight given to color c2.
//
// mix(c1,c2,0) = c1
// mix(c1,c2,1) = c2
// mix(c1,c2,0.5) = Mixing the colors c1 and c2 in equal proportions.
//
static method mix takes ARGB c1, ARGB c2, real s returns ARGB
//widest function ever
return ARGB( R2I(c2.blue*s+c1.blue*(1-s)+0.5) + R2I(c2.green*s+c1.green*(1-s)+0.5)*0x100 + R2I(c2.red*s+c1.red*(1-s)+0.5)*0x10000 + R2I(c2.alpha*s+c1.alpha*(1-s)+0.5)*0x1000000)
endmethod
method str takes string s returns string
return "|c"+i2cc[.alpha]+i2cc[.red]+i2cc[.green]+i2cc[.blue]+s+"|r"
endmethod
method recolorUnit takes unit u returns nothing
local integer a
local integer r
local integer g
local integer b
local integer col=integer(this)
if (col<0) then
set col=-(-col+0x80000000)
set a=0x80+col/0x1000000
set col=col-(a-0x80)*0x1000000
else
set a=col/0x1000000
set col=col-a*0x1000000
endif
set r=col/0x10000
set col=col-r*0x10000
set g=col/0x100
set b=col-g*0x100
call SetUnitVertexColor(u,r,g,b,a)
endmethod
endstruct
module ARGBrecolor
method ARGBrecolor takes ARGB color returns nothing
local integer a
local integer r
local integer g
local integer b
local integer col=integer(this)
if (col<0) then
set col=-(-col+0x80000000)
set a=0x80+col/0x1000000
set col=col-(a-0x80)*0x1000000
else
set a=col/0x1000000
set col=col-a*0x1000000
endif
set r=col/0x10000
set col=col-r*0x10000
set g=col/0x100
set b=col-g*0x100
call this.recolor(r, g , b, a)
endmethod
endmodule
private function init takes nothing returns nothing
local integer i=0
// Don't run textmacros you don't own!
//! textmacro ARGB_CHAR takes int, chr
set i=0
loop
exitwhen i==16
set i2cc[$int$*16+i]="$chr$"+i2cc[$int$*16+i]
set i2cc[i*16+$int$]=i2cc[i*16+$int$]+"$chr$"
set i=i+1
endloop
//! endtextmacro
//! runtextmacro ARGB_CHAR( "0","0")
//! runtextmacro ARGB_CHAR( "1","1")
//! runtextmacro ARGB_CHAR( "2","2")
//! runtextmacro ARGB_CHAR( "3","3")
//! runtextmacro ARGB_CHAR( "4","4")
//! runtextmacro ARGB_CHAR( "5","5")
//! runtextmacro ARGB_CHAR( "6","6")
//! runtextmacro ARGB_CHAR( "7","7")
//! runtextmacro ARGB_CHAR( "8","8")
//! runtextmacro ARGB_CHAR( "9","9")
//! runtextmacro ARGB_CHAR("10","A")
//! runtextmacro ARGB_CHAR("11","B")
//! runtextmacro ARGB_CHAR("12","C")
//! runtextmacro ARGB_CHAR("13","D")
//! runtextmacro ARGB_CHAR("14","E")
//! runtextmacro ARGB_CHAR("15","F")
endfunction
endlibrary
//TESH.scrollpos=0
//TESH.alwaysfold=0
library Board requires ARGB
//==============================================================================
// Board v0.2.01
//==============================================================================
// Credits:
//------------------------------------------------------------------------------
// Written By:
// Earth-Fury
//------------------------------------------------------------------------------
// I don't care if you credit me or not if you use this. However, you must not
// misrepresent the source of this library in any way. This includes, but is not
// limited to claiming yourself to be the sole contributor to a map which uses
// this library.
//
//==============================================================================
// Introduction:
//------------------------------------------------------------------------------
// Board is a library which provides decorators for multiboards. Basically, the
// Board library gives you multiboards with a more manageable API. You can not
// mix usage of the Board class and usage of the multiboard natives. You can
// have multiboards which in no way use the Board library, as well as ones that
// do.
//
// Board does not impose limits on the number of boards, columns, rows, or
// items within boards. You can create an arbitrary number of boards with an
// arbitrary number of rows and columns, without running in to problems with
// the array size limit.
//
//==============================================================================
// API Guide
//------------------------------------------------------------------------------
// The API for this library is very big. However, most of the methods do the
// exact same thing as their native counterparts. As well, methods which share
// the same name do the same thing, with some minor differences.
//
//------------------------------------------------------------------------------
// An Important Note:
//
// All of the array access methods (That is, the [] methods) which return a
// BoardRow, BoardColumn, or BoardItem, will accept values greater than the size
// of the Board. They will resize the board so that it contains the requested
// item.
//
// Note that if you have a BoardItem, BoardRow, or BoardColumn object, and
// destroy the board they point to, weird things can happen if you use them. So
// please try to make sure you don't use BoardItem/Row/Column objects if the
// Board they belong to has been destroyed.
//
// The values of BoardRow, BoardColumn, and BoardItem instances can and will go
// above 8190. They are not suitable for use as array indexes. Instances of the
// Board struct itself are suitable for that use.
//
//------------------------------------------------------------------------------
// The Board struct:
//
// local Board board = Board.create()
// When created, a Board object will have 0 columns and 0 rows. It will have
// no title. The default settings for items are set such that new items will
// display only text, not icons, and will have a width of 0.
//
// set board.title = "string"
// Sets the title of the multiboard. Identical to the native.
//
// set board.titleColor = 0xFFFF00
// Sets the color of the title of the multiboard to the given ARGB color.
//
//
// set board.visible = true
// Makes the board visible for all players if set to true, and hidden for all
// players if set to false.
//
// set board.visible[Player(0)] = false
// Makes the board visible/hidden for the given player
//
// local boolean b = board.visible[Player(0)]
// Returns true if the board is visible for the given player; false otherwise.
//
//
// set board.minimized = true
// Minimizes/restores the board for all players.
//
// set board.minimized[Player(0)] = false
// Minimizes/restores the board for the given player only.
//
//
// call board.clear()
// Removes all items from the board. The same as the native.
//
//
// local BoardItem it = board[x][y]
// Returns the BoardItem located in column x, row y.
//
//
// local BoardColumn col = board.col[x]
// Returns the BoardColumn object for the given column of the board.
//
// set board.col.count = 10
// Resizes the board such that it has the given number of columns.
//
// local integer i = board.col.count
// Returns the number of columns a board currently has.
//
//
// local BoardRow row = board.row[y]
// Returns the BoardRow object for the given row of the board.
//
// set board.row.count = 10
// Resizes the board such that it has the given number of rows.
//
// local integer i = board.row.count
// Returns the number of rows a board currently has.
//
// board.all
// Using board.all, you can modify the item properties of all items at once,
// as well as change the default properties for items in new rows and
// columns. Example:
//
// set board.all.width = 0.03
//
// See the "Item Manipulation" section for information on the methods that
// board.all has.
//------------------------------------------------------------------------------
// Item Manipulation:
//
// This section details the methods which all structs this library provides has.
// Namely, the methods that modify the properties of board items.
//
// When these methods are called from a row, they modify all of the items in
// that row of the board.
//
// The same for columns.
//
// When called on BoardItems, they only modify the given item.
//
// When called from board.all, they modify all the items on the board, and
// change the default properties for newly added items. (Items are added by the
// board gaining rows and columns.)
//
// Explanation of the methods follows:
//
// local BoardItem it = board[0][0]
//
// set it.text = "string"
// Changes the displayed text for the given item/row/etc.
//
// set it.color = 0xFFFFFF
// Changes the colour of the displayed text.
//
// set it.icon = "ReplaceableTextures\\..."
// Changes the icon of the item/row/etc.
//
// set it.width = 0.04
// Changes the width of the item/row/etc. These width values are the same
// as those used by native multiboards.
//
// call it.setDisplay(shouldDisplayText, shouldDisplayIcon)
// The same as the MultiboardSetItemStyle() native. The first parameter
// determines if the text for the item/row/etc. will be displayed.
// The second parameter determines if the icon will be displayed.
//
//------------------------------------------------------------------------------
// The BoardRow and BoardColumn structs:
//
// Note that these both have the exact same methods. The difference is, of
// course, one represents a row of items in a Board, while the other represents
// a column of items. BoardRow is used below, but it is fully interchangeable.
//
// local BoardRow row = board.row[10]
//
// local BoardItem it = row[y]
// Returns the BoardItem that is in the row, at column y. For a BoardColumn
// object, it takes the row as it's parameter instead of the column.
//
// local integer whatRow = row.position
// Returns the row or columns position in the board. That is to say:
// board.row[10].position is equal to 10.
//
// The BoardRow and BoardColumn structs have all of the methods listed in the
// "Item Manipulation" section.
//
//------------------------------------------------------------------------------
// The BoardItem struct:
//
// local BoardItem it = board[0][1]
//
// local integer itemsColumn = it.x
// Returns the item's x position in the board. (The ID of the column the
// item is in.)
//
// local integer itemsRow = it.y
// The same as it.x, but it returns the row.
//
// The BoardItem struct has all of the methods listed in the "Item Manipulation"
// section of this API guide.
//
//==============================================================================
// There is nothing to configure.
//==============================================================================
// Hopefully this will be inlined one day...
private constant function Mod takes integer dividend, integer divisor returns integer
return dividend - (dividend / divisor) * divisor
endfunction
private constant function B2S takes boolean b returns string
if b then
return "true"
endif
return "false"
endfunction
private function ErrorMsg takes string what, string error returns nothing
call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 60, "Board Error: " + what + ": " + error)
endfunction
// ============================================================
// Private keywords
// ============================================================
private keyword bBoard
private keyword bColCount
private keyword bRowCount
private keyword bTemp
private keyword bVisibleFor
// ============================================================
// Item Struct
// ============================================================
struct BoardItem extends array
// =====
// Notes:
// -----
// this = board * 10000 + row * 100 + col
//
// k = Mod(integer(this), 10000)
//
// row = (k - Mod(k, 100)) / 100
// col = Mod(k, 100)
// board = (integer(this) - k) / 10000
//
// row = (Mod(integer(this), 10000) - Mod(Mod(integer(this), 10000), 100)) / 100
// col = Mod(Mod(integer(this), 10000), 100)
// board = (integer(this) - Mod(integer(this), 10000)) / 10000
// =====
public method operator x takes nothing returns integer
return Mod(Mod(integer(this), 10000), 100)
endmethod
public method operator y takes nothing returns integer
return (Mod(integer(this), 10000) - Mod(Mod(integer(this), 10000), 100)) / 100
endmethod
// ==============
public method operator text= takes string val returns nothing
local integer k = Mod(integer(this), 10000)
local Board board = Board((integer(this) - k) / 10000)
local integer row = (k - Mod(k, 100)) / 100
local integer col = Mod(k, 100)
local multiboarditem mbi
if board.bBoard == null then
debug call ErrorMsg("BoardItem[" + I2S(col) + "][" + I2S(row) + "].text=", "The board this item belongs to does not exist anymore")
return
endif
if row >= board.bRowCount then
debug call ErrorMsg("BoardItem.text=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, row + 1)
set board.bRowCount = row + 1
endif
if col >= board.bColCount then
debug call ErrorMsg("BoardItem.text=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetColumnCount(board.bBoard, col + 1)
set board.bColCount = col + 1
endif
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemValue(mbi, val)
call MultiboardReleaseItem(mbi)
set mbi = null
endmethod
public method operator icon= takes string val returns nothing
local integer k = Mod(integer(this), 10000)
local Board board = Board((integer(this) - k) / 10000)
local integer row = (k - Mod(k, 100)) / 100
local integer col = Mod(k, 100)
local multiboarditem mbi
if board.bBoard == null then
debug call ErrorMsg("BoardItem[" + I2S(col) + "][" + I2S(row) + "].icon=", "The board this item belongs to does not exist anymore")
return
endif
if row >= board.bRowCount then
debug call ErrorMsg("BoardItem.icon=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, row + 1)
set board.bRowCount = row + 1
endif
if col >= board.bColCount then
debug call ErrorMsg("BoardItem.icon=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetColumnCount(board.bBoard, col + 1)
set board.bColCount = col + 1
endif
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemIcon(mbi, val)
call MultiboardReleaseItem(mbi)
set mbi = null
endmethod
public method operator color= takes ARGB c returns nothing
local integer k = Mod(integer(this), 10000)
local Board board = Board((integer(this) - k) / 10000)
local integer row = (k - Mod(k, 100)) / 100
local integer col = Mod(k, 100)
local multiboarditem mbi
if board.bBoard == null then
debug call ErrorMsg("BoardItem[" + I2S(col) + "][" + I2S(row) + "].color=", "The board this item belongs to does not exist anymore")
return
endif
if row >= board.bRowCount then
debug call ErrorMsg("BoardItem.color=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, row + 1)
set board.bRowCount = row + 1
endif
if col >= board.bColCount then
debug call ErrorMsg("BoardItem.color=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetColumnCount(board.bBoard, col + 1)
set board.bColCount = col + 1
endif
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemValueColor(mbi, c.red, c.green, c.blue, c.alpha)
call MultiboardReleaseItem(mbi)
set mbi = null
endmethod
public method operator width= takes real r returns nothing
local integer k = Mod(integer(this), 10000)
local Board board = Board((integer(this) - k) / 10000)
local integer row = (k - Mod(k, 100)) / 100
local integer col = Mod(k, 100)
local multiboarditem mbi
if board.bBoard == null then
debug call ErrorMsg("BoardItem[" + I2S(col) + "][" + I2S(row) + "].width=", "The board this item belongs to does not exist anymore")
return
endif
if row >= board.bRowCount then
debug call ErrorMsg("BoardItem.width=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, row + 1)
set board.bRowCount = row + 1
endif
if col >= board.bColCount then
debug call ErrorMsg("BoardItem.width=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetColumnCount(board.bBoard, col + 1)
set board.bColCount = col + 1
endif
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemWidth(mbi, r)
call MultiboardReleaseItem(mbi)
set mbi = null
endmethod
public method setDisplay takes boolean text, boolean icon returns nothing
local integer k = Mod(integer(this), 10000)
local Board board = Board((integer(this) - k) / 10000)
local integer row = (k - Mod(k, 100)) / 100
local integer col = Mod(k, 100)
local multiboarditem mbi
if board.bBoard == null then
debug call ErrorMsg("BoardItem[" + I2S(col) + "][" + I2S(row) + "].setDisplay()", "The board this item belongs to does not exist anymore")
return
endif
if row >= board.bRowCount then
debug call ErrorMsg("BoardItem.setDisplay()", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, row + 1)
set board.bRowCount = row + 1
endif
if col >= board.bColCount then
debug call ErrorMsg("BoardItem.setDisplay()", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetColumnCount(board.bBoard, col + 1)
set board.bColCount = col + 1
endif
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemStyle(mbi, text, icon)
call MultiboardReleaseItem(mbi)
set mbi = null
endmethod
endstruct
// ============================================================
// BoardRow and BoardColumn structs
// ============================================================
//! textmacro Board_DeclareRowCol takes I, K, NAME, COUNT_FUNC, OTHER, THIS
struct Board$NAME$ extends array
// =====
// Notes:
// -----
// this = board * 100 + pos
// pos = Mod(integer(this), 100)
// board = (integer(this) - Mod(integer(this), 100)) / 100
// =====
public method operator [] takes integer $K$ returns BoardItem
local Board board = ((integer(this) - Mod(integer(this), 100)) / 100)
local integer $I$ = Mod(integer(this), 100)
if $K$ >= board.b$OTHER$Count then
call MultiboardSet$COUNT_FUNC$Count(board.bBoard, $K$ + 1)
set board.b$OTHER$Count = $K$ + 1
endif
return BoardItem(integer(board) * 10000 + $I$ * 100 + $K$)
endmethod
public method operator position takes nothing returns integer
return Mod(integer(this), 100)
endmethod
// ==============
public method operator text= takes string val returns nothing
local Board board = Board((integer(this) - Mod(integer(this), 100)) / 100)
local integer $I$ = thistype(Mod(integer(this), 100))
local multiboarditem mbi
local integer $K$ = 0
if board.bBoard == null then
debug call ErrorMsg("Board$NAME$[" + I2S(col) + "][" + I2S(row) + "].text=", "The board this $I$ belongs to does not exist anymore")
return
endif
if $I$ >= board.b$THIS$Count then
debug call ErrorMsg("Board$NAME$.text=", "The board has been shrunk to no longer include this $I$. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, $I$ + 1)
set board.b$THIS$Count = $I$ + 1
endif
loop
exitwhen $K$ == board.b$OTHER$Count
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemValue(mbi, val)
call MultiboardReleaseItem(mbi)
set $K$ = $K$ + 1
endloop
set mbi = null
endmethod
public method operator icon= takes string val returns nothing
local Board board = Board((integer(this) - Mod(integer(this), 100)) / 100)
local integer $I$ = thistype(Mod(integer(this), 100))
local multiboarditem mbi
local integer $K$ = 0
if board.bBoard == null then
debug call ErrorMsg("Board$NAME$[" + I2S(col) + "][" + I2S(row) + "].icon=", "The board this $I$ belongs to does not exist anymore")
return
endif
if $I$ >= board.b$THIS$Count then
debug call ErrorMsg("Board$NAME$.icon=", "The board has been shrunk to no longer include this $I$. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, $I$ + 1)
set board.b$THIS$Count = $I$ + 1
endif
loop
exitwhen $K$ == board.b$OTHER$Count
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemIcon(mbi, val)
call MultiboardReleaseItem(mbi)
set $K$ = $K$ + 1
endloop
set mbi = null
endmethod
public method operator color= takes ARGB c returns nothing
local Board board = Board((integer(this) - Mod(integer(this), 100)) / 100)
local integer $I$ = thistype(Mod(integer(this), 100))
local multiboarditem mbi
local integer $K$ = 0
if board.bBoard == null then
debug call ErrorMsg("Board$NAME$[" + I2S(col) + "][" + I2S(row) + "].color=", "The board this $I$ belongs to does not exist anymore")
return
endif
if $I$ >= board.b$THIS$Count then
debug call ErrorMsg("Board$NAME$.color=", "The board has been shrunk to no longer include this $I$. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, $I$ + 1)
set board.b$THIS$Count = $I$ + 1
endif
loop
exitwhen $K$ >= board.b$OTHER$Count
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemValueColor(mbi, c.red, c.green, c.blue, c.alpha)
call MultiboardReleaseItem(mbi)
set $K$ = $K$ + 1
endloop
set mbi = null
endmethod
public method operator width= takes real r returns nothing
local Board board = Board((integer(this) - Mod(integer(this), 100)) / 100)
local integer $I$ = thistype(Mod(integer(this), 100))
local multiboarditem mbi
local integer $K$ = 0
if board.bBoard == null then
debug call ErrorMsg("Board$NAME$[" + I2S(col) + "][" + I2S(row) + "].width=", "The board this $I$ belongs to does not exist anymore")
return
endif
if $I$ >= board.b$THIS$Count then
debug call ErrorMsg("Board$NAME$.width=", "The board has been shrunk to no longer include this $I$. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, $I$ + 1)
set board.b$THIS$Count = $I$ + 1
endif
loop
exitwhen $K$ == board.b$OTHER$Count
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemWidth(mbi, r)
call MultiboardReleaseItem(mbi)
set $K$ = $K$ + 1
endloop
set mbi = null
endmethod
public method setDisplay takes boolean text, boolean icon returns nothing
local Board board = Board((integer(this) - Mod(integer(this), 100)) / 100)
local integer $I$ = thistype(Mod(integer(this), 100))
local multiboarditem mbi
local integer $K$ = 0
if board.bBoard == null then
debug call ErrorMsg("Board$NAME$[" + I2S(col) + "][" + I2S(row) + "].setDisplay()", "The board this $I$ belongs to does not exist anymore")
return
endif
if $I$ >= board.b$THIS$Count then
debug call ErrorMsg("Board$NAME$.setDisplay()", "The board has been shrunk to no longer include this $I$. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, $I$ + 1)
set board.b$THIS$Count = $I$ + 1
endif
loop
exitwhen $K$ == board.b$OTHER$Count
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemStyle(mbi, text, icon)
call MultiboardReleaseItem(mbi)
set $K$ = $K$ + 1
endloop
set mbi = null
endmethod
endstruct
//! endtextmacro
//! runtextmacro Board_DeclareRowCol("row", "col", "Row", "Column", "Col", "Row")
//! runtextmacro Board_DeclareRowCol("col", "row", "Column", "Row", "Row", "Col")
// ============================================================
// Helper Structs (For [][], .col[], .row[], etc)
// ============================================================
private struct ItemHelper extends array
public method operator[] takes integer row returns BoardItem
local integer col = Board.bTemp
if row < 0 then
debug call ErrorMsg("Board[" + I2S(col) + "][" + I2S(row) + "]", "Given row id is less than 0")
return 0
elseif col < 0 then
debug call ErrorMsg("Board[" + I2S(col) + "][" + I2S(row) + "]", "Given col id is less than 0")
return 0
endif
//i = brd * 10000 + row * 100 + col
if col >= Board(this).bColCount then
call MultiboardSetColumnCount(Board(this).bBoard, col + 1)
set Board(this).bColCount = col + 1
endif
if row >= Board(this).bRowCount then
call MultiboardSetRowCount(Board(this).bBoard, row + 1)
set Board(this).bRowCount = row + 1
endif
return integer(this) * 10000 + row * 100 + Board(this).bTemp
endmethod
endstruct
private struct RowHelper extends array
public method operator count takes nothing returns integer
return Board(this).bRowCount
endmethod
public method operator count= takes integer i returns nothing
call MultiboardSetRowCount(Board(this).bBoard, i + 1)
set Board(this).bRowCount = i + 1
endmethod
public method operator[] takes integer row returns BoardRow
if row < 0 then
debug call ErrorMsg("Board.row[" + I2S(row) + "]", "Given row id is less than 0")
return 0
endif
if row >= Board(this).bRowCount then
call MultiboardSetRowCount(Board(this).bBoard, row + 1)
set Board(this).bRowCount = row + 1
endif
if Board(this).bColCount < 1 then
call MultiboardSetColumnCount(Board(this).bBoard, 1)
set Board(this).bColCount = 1
endif
return BoardRow(row + integer(this) * 100)
endmethod
endstruct
private struct ColumnHelper extends array
public method operator count takes nothing returns integer
return Board(this).bColCount
endmethod
public method operator count= takes integer i returns nothing
call MultiboardSetColumnCount(Board(this).bBoard, i + 1)
set Board(this).bColCount = i + 1
endmethod
public method operator[] takes integer col returns BoardColumn
if col < 0 then
debug call ErrorMsg("Board.col[" + I2S(col) + "]", "Given column id is less than 0")
return 0
endif
if col >= Board(this).bColCount then
call MultiboardSetColumnCount(Board(this).bBoard, col + 1)
set Board(this).bColCount = col + 1
endif
if Board(this).bRowCount < 1 then
call MultiboardSetRowCount(Board(this).bBoard, 1)
set Board(this).bRowCount = 1
endif
return BoardColumn(col + integer(this) * 100)
endmethod
endstruct
private struct VisibleHelper extends array
public method operator []= takes player p, boolean b returns nothing
if GetPlayerId(p) > 11 then
debug call ErrorMsg("Board.visible[\"" + GetPlayerName(p) + "\"]=" + B2S(b), "Given player is a neutral player")
return
endif
set Board(this).bVisibleFor[GetPlayerId(p)] = b
if GetLocalPlayer() == p then
call MultiboardDisplay(Board(this).bBoard, b)
endif
endmethod
public method operator [] takes player p returns boolean
if GetPlayerId(p) > 11 then
debug call ErrorMsg("Board.visible[\"" + GetPlayerName(p) + "\"]", "Given player is a neutral player")
return false
endif
return Board(this).bVisibleFor[GetPlayerId(p)]
endmethod
endstruct
private struct MinimizedHelper extends array
public method operator[]= takes player p, boolean b returns nothing
if GetPlayerId(p) > 11 then
debug call ErrorMsg("Board.minimized[\"" + GetPlayerName(p) + "\"]=" + B2S(b), "Given player is a neutral player")
return
endif
if GetLocalPlayer() == p then
call MultiboardMinimize(Board(this).bBoard, b)
endif
endmethod
endstruct
private struct AllHelper extends array
public method operator text= takes string val returns nothing
call MultiboardSetItemsValue(Board(this).bBoard, val)
endmethod
public method operator icon= takes string val returns nothing
call MultiboardSetItemsIcon(Board(this).bBoard, val)
endmethod
public method operator color= takes ARGB c returns nothing
call MultiboardSetItemsValueColor(Board(this).bBoard, c.red, c.green, c.blue, c.alpha)
endmethod
public method operator width= takes real r returns nothing
call MultiboardSetItemsWidth(Board(this).bBoard, r)
endmethod
public method setDisplay takes boolean text, boolean icon returns nothing
call MultiboardSetItemsStyle(Board(this).bBoard, text, icon)
endmethod
endstruct
// ============================================================
// Board Struct
// ============================================================
struct Board
multiboard bBoard
integer bColCount = 0
integer bRowCount = 0
boolean array bVisibleFor[12]
static integer bTemp
public static method create takes nothing returns thistype
local thistype this = allocate()
set bBoard = CreateMultiboard()
call MultiboardSetItemsWidth(bBoard, 0.01)
call MultiboardSetItemsStyle(bBoard, true, false)
return this
endmethod
private method onDestroy takes nothing returns nothing
call DestroyMultiboard(bBoard)
set bBoard = null
endmethod
//==================
public method operator[] takes integer column returns ItemHelper
set bTemp = column
return ItemHelper(this)
endmethod
public method operator col takes nothing returns ColumnHelper
return ColumnHelper(this)
endmethod
public method operator row takes nothing returns RowHelper
return RowHelper(this)
endmethod
//==================
public method operator all takes nothing returns AllHelper
return AllHelper(this)
endmethod
public method operator title= takes string value returns nothing
call MultiboardSetTitleText(bBoard, value)
endmethod
public method operator titleColor= takes ARGB color returns nothing
call MultiboardSetTitleTextColor(bBoard, color.red, color.green, color.blue, color.alpha)
endmethod
public method operator visible takes nothing returns VisibleHelper
return VisibleHelper(this)
endmethod
public method operator visible= takes boolean b returns nothing
local integer i = 0
loop
exitwhen i == 12
set bVisibleFor[i] = b
set i = i + 1
endloop
call MultiboardDisplay(bBoard, b)
endmethod
public method operator minimized takes nothing returns MinimizedHelper
return MinimizedHelper(this)
endmethod
public method operator minimized= takes boolean b returns nothing
call MultiboardMinimize(bBoard, b)
endmethod
public method clear takes nothing returns nothing
call MultiboardClear(bBoard)
endmethod
endstruct
endlibrary
//TESH.scrollpos=9
//TESH.alwaysfold=0
library nboard
globals
Board Pboard
constant string sstr = "|cffff8888Strength|r"
constant string sagi = "|cff88ff88Agility|r"
constant string sint = "|cff8888ffIntelligence|r"
constant string cons = "|cff00ff7fConstitution|r"
constant string mstr = "|cffb9d1eaMental strength|r"
constant string fort = "|cffff8c00Fortune|r"
constant string ylw = "|cffffcc00"
endglobals
function Setwidth takes integer PlayerId, integer fila, integer columna, real ancho returns nothing
local BoardItem it = Pboard[columna][fila]
set it.width = ancho
endfunction
function SetIcon takes integer PlayerId, integer fila, integer columna, real ancho, string path returns nothing
local BoardItem it = Pboard[columna][fila]
set it.width = ancho
set it.icon = path
call it.setDisplay(false, true)
endfunction
function SetIconTxt takes integer PlayerId, integer fila, integer columna, real ancho, string path, string txt returns nothing
local BoardItem it = Pboard[columna][fila]
set it.width = ancho
set it.text = txt
set it.icon = path
call it.setDisplay(true, true)
endfunction
function SetInfo takes integer PlayerId, integer fila, integer columna, real ancho, string texto returns nothing
local BoardItem it = Pboard[columna][fila]
set it.width = ancho
set it.text = texto
endfunction
function SetText takes integer PlayerId, integer fila, integer columna, string texto returns nothing
local BoardItem it = Pboard[columna][fila]
set it.text = texto
endfunction
function NewBoard takes nothing returns nothing
local integer id = 0
local integer row
local string pnamesa
local string pnamest
local integer idsa
local integer idst
local integer n = 0
local integer i = 0
local integer j = 0
local integer cpl = 0
local integer citiesa
local integer citiest
local integer goldsa
local integer goldst
local integer lumbsa
local integer lumbst
local integer killsa
local integer killst
local string racesa
local string racest
local real col0 = .01
local real col1 = .12
local real col2 = .04
local string kill = "ReplaceableTextures\\CommandButtons\\BTNSacrifice.blp"
local string city = "ReplaceableTextures\\CommandButtons\\BTNCastle.blp"
local string gold = "ReplaceableTextures\\CommandButtons\\BTNChestOfGold.blp"
local string lumb = "ReplaceableTextures\\CommandButtons\\BTNBundleOfLumber.blp"
local string scoresa = "Sand Emblems: "+I2S(R2I(udg_storm_victory))
local string scorest = "Storm Emblems: "+I2S(R2I(udg_sand_victory))
set Pboard = Board.create()
set Pboard.title = "Battle Statistics"
call Setwidth(id,0, 0,col0)
call SetInfo(id, 0, 1,col1,scoresa)
call SetInfo(id,0, 2,col2,"Cities")
call SetInfo(id,0, 3,col2,"Gold")
call SetInfo(id,0, 4,col2,"Wood")
call SetInfo(id,0, 5,col2,"Kills")
call Setwidth(id,0, 6,col0)
call Setwidth(id,0, 7,col0)
call SetInfo(id, 0, 8,col1,scorest)
call SetInfo(id,0, 9,col2,"Cities")
call SetInfo(id,0, 10,col2,"Gold")
call SetInfo(id,0, 11,col2,"Wood")
call SetInfo(id,0, 12,col2,"Kills")
call Setwidth(id,1, 0,col0)
call SetInfo(id, 1, 1,col1,"Sand force: |cffffcc00"+I2S(iSand)+"|r players")
call SetInfo(id,1, 2,col2,"")
call SetInfo(id,1, 3,col2,"")
call SetInfo(id,1, 4,col2,"")
call SetInfo(id,1, 5,col2,"")
call Setwidth(id,1, 6,col0)
call Setwidth(id,1, 7,col0)
call SetInfo(id, 1, 8,col1,"Storm force: |cffffcc00"+I2S(iStorm)+"|r players")
call SetInfo(id,1, 9,col2,"")
call SetInfo(id,1, 10,col2,"")
call SetInfo(id,1, 11,col2,"")
call SetInfo(id,1, 12,col2,"")
if iSand > iStorm then
set cpl = iSand
else
set cpl = iStorm
endif
loop
exitwhen i == cpl
set row = i+2
set pnamesa = GetPlayerName(iSandPlayers[i])
set pnamest = GetPlayerName(iStormPlayers[i])
set idsa = GetPlayerId(iSandPlayers[i])
set idst = GetPlayerId(iStormPlayers[i])
set racesa = udg_Iconpatch[udg_Race[idsa]]
set racest = udg_Iconpatch[udg_Race[idst]]
set lumbsa = GetPlayerState(Player(idsa),PLAYER_STATE_RESOURCE_LUMBER)
set lumbst = GetPlayerState(Player(idst),PLAYER_STATE_RESOURCE_LUMBER)
set goldsa = GetPlayerState(Player(idsa),PLAYER_STATE_RESOURCE_GOLD)
set goldst = GetPlayerState(Player(idst),PLAYER_STATE_RESOURCE_GOLD)
set citiesa = playercities[idsa]+1
set citiest = playercities[idst]+1
set killsa = GetPlayerScore(Player(idsa), PLAYER_SCORE_UNITS_KILLED)
set killst = GetPlayerScore(Player(idst), PLAYER_SCORE_UNITS_KILLED)
call SetIcon(id, row, 0,col0,racesa)
call SetInfo(id, row, 1,col1,pnamesa)
call SetIconTxt(id,row, 2,col2,city,I2S(citiesa))
call SetIconTxt(id,row, 3,col2,gold,I2S(goldsa))
call SetIconTxt(id,row, 4,col2,lumb,I2S(lumbsa))
call SetIconTxt(id,row, 5,col2,kill,I2S(killsa))
call Setwidth(id,row, 6,col0)
set racesa = ""
set lumbsa = 0
set goldsa = 0
set citiesa = 0
set killsa = 0
call SetIcon(id, row, 7,col0,racest)
call SetInfo(id, row, 8,col1,pnamest)
call SetIconTxt(id,row, 9,col2,city,I2S(citiest))
call SetIconTxt(id,row, 10,col2,gold,I2S(goldst))
call SetIconTxt(id,row, 11,col2,lumb,I2S(lumbst))
call SetIconTxt(id,row, 12,col2,kill,I2S(killst))
set pnamesa = null
set pnamest = null
set idsa = 0
set idst = 0
set racest = ""
set lumbst = 0
set goldst = 0
set citiest = 0
set killst = 0
set i = i+1
endloop
set pnamesa = null
set pnamest = null
set racesa = null
set racest = null
endfunction
function ShowBoard takes integer id returns nothing
set Pboard.visible[Player(id)] = true
endfunction
function UpdateBoard takes nothing returns nothing
local integer id = 0
local integer row
local string pnamesa
local string pnamest
local integer idsa
local integer idst
local integer n = 0
local integer i = 0
local integer j = 0
local integer cpl = 0
local integer citiesa
local integer citiest
local integer goldsa
local integer goldst
local integer lumbsa
local integer lumbst
local integer killsa
local integer killst
local string racesa
local string racest
local real col0 = .01
local real col1 = .12
local real col2 = .04
local string kill = "ReplaceableTextures\\CommandButtons\\BTNSacrifice.blp"
local string city = "ReplaceableTextures\\CommandButtons\\BTNCastle.blp"
local string gold = "ReplaceableTextures\\CommandButtons\\BTNChestOfGold.blp"
local string lumb = "ReplaceableTextures\\CommandButtons\\BTNBundleOfLumber.blp"
local string emblm = "ReplaceableTextures\\CommandButtons\\BTNEnchantedGemstone.blp"
local string scoresa = "Sand Emblems: |cffffcc00"+I2S(R2I(udg_storm_victory))+"|r"
local string scorest = "Storm Emblems: |cffffcc00"+ I2S(R2I(udg_sand_victory))+"|r"
call Setwidth(id,0, 0,col0)
call SetInfo(id, 0, 1,col1,scoresa)
call SetInfo(id,0, 2,col2,"Cities")
call SetInfo(id,0, 3,col2,"Gold")
call SetInfo(id,0, 4,col2,"Wood")
call SetInfo(id,0, 5,col2,"Kills")
call Setwidth(id,0, 6,col0)
call Setwidth(id,0, 7,col0)
call SetInfo(id, 0, 8,col1,scorest)
call SetInfo(id,0, 9,col2,"Cities")
call SetInfo(id,0, 10,col2,"Gold")
call SetInfo(id,0, 11,col2,"Wood")
call SetInfo(id,0, 12,col2,"Kills")
if iSand > iStorm then
set cpl = iSand
else
set cpl = iStorm
endif
loop
exitwhen i== cpl
set row = i+2
set pnamesa = GetPlayerName(iSandPlayers[i])
set pnamest = GetPlayerName(iStormPlayers[i])
set idsa = GetPlayerId(iSandPlayers[i])
set idst = GetPlayerId(iStormPlayers[i])
set racesa = udg_Iconpatch[udg_Race[idsa]]
set racest = udg_Iconpatch[udg_Race[idst]]
set lumbsa = GetPlayerState(Player(idsa),PLAYER_STATE_RESOURCE_LUMBER)
set lumbst = GetPlayerState(Player(idst),PLAYER_STATE_RESOURCE_LUMBER)
set goldsa = GetPlayerState(Player(idsa),PLAYER_STATE_RESOURCE_GOLD)
set goldst = GetPlayerState(Player(idst),PLAYER_STATE_RESOURCE_GOLD)
set citiesa = playercities[idsa]+1
set citiest = playercities[idst]+1
set killsa = GetPlayerScore(Player(idsa), PLAYER_SCORE_UNITS_KILLED)
set killst = GetPlayerScore(Player(idst), PLAYER_SCORE_UNITS_KILLED)
call SetIcon(id, row, 0,col0,racesa)
call SetInfo(id, row, 1,col1,pnamesa)
call SetIconTxt(id,row, 2,col2,city,I2S(citiesa))
call SetIconTxt(id,row, 3,col2,gold,I2S(goldsa))
call SetIconTxt(id,row, 4,col2,lumb,I2S(lumbsa))
call SetIconTxt(id,row, 5,col2,kill,I2S(killsa))
call Setwidth(id,row, 6,col0)
set racesa = ""
set lumbsa = 0
set goldsa = 0
set citiesa = 0
set killsa = 0
call SetIcon(id, row, 7,col0,racest)
call SetInfo(id, row, 8,col1,pnamest)
call SetIconTxt(id,row, 9,col2,city,I2S(citiest))
call SetIconTxt(id,row, 10,col2,gold,I2S(goldst))
call SetIconTxt(id,row, 11,col2,lumb,I2S(lumbst))
call SetIconTxt(id,row, 12,col2,kill,I2S(killst))
set pnamesa = null
set pnamest = null
set idsa = 0
set idst = 0
set racest = ""
set lumbst = 0
set goldst = 0
set citiest = 0
set killst = 0
set i = i+1
endloop
set turncounter = turncounter - 2
if (turncounter < 1) then
set turncounter = 40
endif
call Setwidth(id,row+1, 0,col0)
call SetInfo(id, row+1, 1,col1, "Next income in: |cffffcc00"+I2S(R2I(turncounter))+"|r s." )
set pnamesa = null
set pnamest = null
set racesa = null
set racest = null
set scoresa = null
set scorest = null
endfunction
endlibrary
//TESH.scrollpos=2
//TESH.alwaysfold=0
function Trig_clear_Actions takes nothing returns nothing
if (GetLocalPlayer() == GetTriggerPlayer()) then
call ClearTextMessages()
endif
endfunction
//===========================================================================
function InitTrig_clear takes nothing returns nothing
local integer i = 0
set gg_trg_clear = CreateTrigger( )
loop
exitwhen i > 23
call TriggerRegisterPlayerChatEvent( gg_trg_clear, Player(i), "-clear", true )
set i = i+1
endloop
call TriggerAddAction( gg_trg_clear, function Trig_clear_Actions )
endfunction
function widea takes nothing returns nothing
// set udg_rpgc[GetPlayerId(GetTriggerPlayer())] = true
// call SetCameraTargetControllerNoZForPlayer( GetTriggerPlayer(), udg_PHero[GetPlayerId(GetTriggerPlayer())], 0.00, 0.00, false )
call SetCameraFieldForPlayer( GetTriggerPlayer(), CAMERA_FIELD_TARGET_DISTANCE, 2458, 0.00 )
//call SetCameraFieldForPlayer( GetTriggerPlayer(), CAMERA_FIELD_TARGET_DISTANCE, ( GetCameraField(CAMERA_FIELD_TARGET_DISTANCE) + 485.41 ), 0.00 )
call SetCameraFieldForPlayer( GetTriggerPlayer(), CAMERA_FIELD_ANGLE_OF_ATTACK, 316, 0 )
endfunction
//===========================================================================
function InitTrig_wide takes nothing returns nothing
local integer i = 0
set gg_trg_wide = CreateTrigger( )
loop
exitwhen i>23
call TriggerRegisterPlayerChatEvent( gg_trg_wide, Player(i), "-wide", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_wide, function widea )
endfunction
function Trig_command2_Actions takes nothing returns nothing
call SetCameraFieldForPlayer(GetTriggerPlayer(), CAMERA_FIELD_TARGET_DISTANCE, ( GetCameraField(CAMERA_FIELD_TARGET_DISTANCE) + 323 ), 0.5 )
endfunction
//===========================================================================
function InitTrig_zo takes nothing returns nothing
local integer i = 0
set gg_trg_zo = CreateTrigger( )
loop
exitwhen i>23
call TriggerRegisterPlayerChatEvent( gg_trg_zo, Player(i), "-zo", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_zo, function Trig_command2_Actions )
endfunction
function Trig_command1_Actions takes nothing returns nothing
call SetCameraFieldForPlayer( GetTriggerPlayer(), CAMERA_FIELD_TARGET_DISTANCE, ( GetCameraField(CAMERA_FIELD_TARGET_DISTANCE) - 323 ), 0.5 )
endfunction
//===========================================================================
function InitTrig_zi takes nothing returns nothing
local integer i = 0
set gg_trg_zi = CreateTrigger( )
loop
exitwhen i>23
call TriggerRegisterPlayerChatEvent( gg_trg_zi, Player(i), "-zi", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_zi, function Trig_command1_Actions )
endfunction
function Trig_com_cru takes nothing returns nothing
local real aoa = GetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK)* bj_RADTODEG
// call DisplayTimedTextToPlayer(Player(0),0,0,6,R2S(aoa))
if aoa > 274 then
call SetCameraFieldForPlayer( GetTriggerPlayer(),CAMERA_FIELD_ANGLE_OF_ATTACK , ( GetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK)* bj_RADTODEG - 10 ), 0.5 )
else
//call CS_Error(GetTriggerPlayer(),"Camera has reached maximun up view!.")
endif
endfunction
//===========================================================================
function InitTrig_cru takes nothing returns nothing
local integer i = 0
set gg_trg_cru = CreateTrigger( )
loop
exitwhen i>23
call TriggerRegisterPlayerChatEvent( gg_trg_cru, Player(i), "-cu", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_cru, function Trig_com_cru )
endfunction
function Trig_com_crl takes nothing returns nothing
// call DisplayTimedTextToPlayer(Player(0),0,0,6,R2S(GetCameraField(CAMERA_FIELD_ROTATION)))
call SetCameraFieldForPlayer( GetTriggerPlayer(),CAMERA_FIELD_ROTATION , ( GetCameraField(CAMERA_FIELD_ROTATION)* bj_RADTODEG + 30 ), 0.5 )
endfunction
//===========================================================================
function InitTrig_crl takes nothing returns nothing
local integer i = 0
set gg_trg_crl = CreateTrigger( )
loop
exitwhen i>23
call TriggerRegisterPlayerChatEvent( gg_trg_crl, Player(i), "-cl", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_crl, function Trig_com_crl )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_com_crr takes nothing returns nothing
// call DisplayTimedTextToPlayer(Player(0),0,0,6,R2S(GetCameraField(CAMERA_FIELD_ROTATION)))
call SetCameraFieldForPlayer( GetTriggerPlayer(),CAMERA_FIELD_ROTATION , ( GetCameraField(CAMERA_FIELD_ROTATION)* bj_RADTODEG - 30 ), 0.5 )
endfunction
//===========================================================================
function InitTrig_crr takes nothing returns nothing
local integer i = 0
set gg_trg_crr = CreateTrigger( )
loop
exitwhen i>23
call TriggerRegisterPlayerChatEvent( gg_trg_crr, Player(i), "-cr", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_crr, function Trig_com_crr )
endfunction
function Trig_com_crd takes nothing returns nothing
local real aoa = GetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK)* bj_RADTODEG
// call DisplayTimedTextToPlayer(Player(0),0,0,6,R2S(aoa))
if aoa < 346 then
call SetCameraFieldForPlayer( GetTriggerPlayer(),CAMERA_FIELD_ANGLE_OF_ATTACK , ( GetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK)* bj_RADTODEG + 10), 0.5 )
else
// call CS_Error(GetTriggerPlayer(),"Camera has reached minimun down view!.")
endif
endfunction
//===========================================================================
function InitTrig_crd takes nothing returns nothing
local integer i = 0
set gg_trg_crd = CreateTrigger( )
loop
exitwhen i>23
call TriggerRegisterPlayerChatEvent( gg_trg_crd, Player(i), "-cd", true )
set i = i + 1
endloop
call TriggerAddAction( gg_trg_crd, function Trig_com_crd )
endfunction
function Trig_dice_Conditions takes nothing returns boolean
call DisplayTimedTextToForce(GetPlayersAll(),10,"|cffffcc00"+GetPlayerName(GetTriggerPlayer())+"|r throws the dice: "+PKO+I2S(GetRandomInt(1,6))+PKC+" "+PKO+I2S(GetRandomInt(1,6))+PKC)
return false
endfunction
//===========================================================================
function InitTrig_dice takes nothing returns nothing
local integer i = 0
set gg_trg_dice = CreateTrigger( )
loop
exitwhen i>8
call TriggerRegisterPlayerChatEvent( gg_trg_dice, Player(i), "-dice", true )
set i = i+1
endloop
call TriggerAddCondition( gg_trg_dice, Condition( function Trig_dice_Conditions ) )
endfunction
library TimerUtils initializer init
//*********************************************************************
//* TimerUtils (red+blue+orange flavors for 1.24b+) 2.0
//* ----------
//*
//* To implement it , create a custom text trigger called TimerUtils
//* and paste the contents of this script there.
//*
//* To copy from a map to another, copy the trigger holding this
//* library to your map.
//*
//* (requires vJass) More scripts: htt://www.wc3c.net
//*
//* For your timer needs:
//* * Attaching
//* * Recycling (with double-free protection)
//*
//* set t=NewTimer() : Get a timer (alternative to CreateTimer)
//* set t=NewTimerEx(x) : Get a timer (alternative to CreateTimer), call
//* Initialize timer data as x, instead of 0.
//*
//* ReleaseTimer(t) : Relese a timer (alt to DestroyTimer)
//* SetTimerData(t,2) : Attach value 2 to timer
//* GetTimerData(t) : Get the timer's value.
//* You can assume a timer's value is 0
//* after NewTimer.
//*
//* Multi-flavor:
//* Set USE_HASH_TABLE to true if you don't want to complicate your life.
//*
//* If you like speed and giberish try learning about the other flavors.
//*
//********************************************************************
//================================================================
globals
//How to tweak timer utils:
// USE_HASH_TABLE = true (new blue)
// * SAFEST
// * SLOWEST (though hash tables are kind of fast)
//
// USE_HASH_TABLE = false, USE_FLEXIBLE_OFFSET = true (orange)
// * kinda safe (except there is a limit in the number of timers)
// * ALMOST FAST
//
// USE_HASH_TABLE = false, USE_FLEXIBLE_OFFSET = false (red)
// * THE FASTEST (though is only faster than the previous method
// after using the optimizer on the map)
// * THE LEAST SAFE ( you may have to tweak OFSSET manually for it to
// work)
//
private constant boolean USE_HASH_TABLE = true
private constant boolean USE_FLEXIBLE_OFFSET = false
private constant integer OFFSET = 0x100000
private integer VOFFSET = OFFSET
//Timers to preload at map init:
private constant integer QUANTITY = 256
//Changing this to something big will allow you to keep recycling
// timers even when there are already AN INCREDIBLE AMOUNT of timers in
// the stack. But it will make things far slower so that's probably a bad idea...
private constant integer ARRAY_SIZE = 8190
endglobals
//==================================================================================================
globals
private integer array data[ARRAY_SIZE]
private hashtable ht
endglobals
//It is dependent on jasshelper's recent inlining optimization in order to perform correctly.
function SetTimerData takes timer t, integer value returns nothing
static if(USE_HASH_TABLE) then
// new blue
call SaveInteger(ht,0,GetHandleId(t), value)
elseif (USE_FLEXIBLE_OFFSET) then
// orange
static if (DEBUG_MODE) then
if(GetHandleId(t)-VOFFSET<0) then
call BJDebugMsg("SetTimerData: Wrong handle id, only use SetTimerData on timers created by NewTimer")
endif
endif
set data[GetHandleId(t)-VOFFSET]=value
else
// new red
static if (DEBUG_MODE) then
if(GetHandleId(t)-OFFSET<0) then
call BJDebugMsg("SetTimerData: Wrong handle id, only use SetTimerData on timers created by NewTimer")
endif
endif
set data[GetHandleId(t)-OFFSET]=value
endif
endfunction
function GetTimerData takes timer t returns integer
static if(USE_HASH_TABLE) then
// new blue
return LoadInteger(ht,0,GetHandleId(t) )
elseif (USE_FLEXIBLE_OFFSET) then
// orange
static if (DEBUG_MODE) then
if(GetHandleId(t)-VOFFSET<0) then
call BJDebugMsg("SetTimerData: Wrong handle id, only use SetTimerData on timers created by NewTimer")
endif
endif
return data[GetHandleId(t)-VOFFSET]
else
// new red
static if (DEBUG_MODE) then
if(GetHandleId(t)-OFFSET<0) then
call BJDebugMsg("SetTimerData: Wrong handle id, only use SetTimerData on timers created by NewTimer")
endif
endif
return data[GetHandleId(t)-OFFSET]
endif
endfunction
//==========================================================================================
globals
private timer array tT[ARRAY_SIZE]
private integer tN = 0
private constant integer HELD=0x28829022
//use a totally random number here, the more improbable someone uses it, the better.
private boolean didinit = false
endglobals
private keyword init
//==========================================================================================
// I needed to decide between duplicating code ignoring the "Once and only once" rule
// and using the ugly textmacros. I guess textmacros won.
//
//! textmacro TIMERUTIS_PRIVATE_NewTimerCommon takes VALUE
// On second thought, no.
//! endtextmacro
function NewTimerEx takes integer value returns timer
if (tN==0) then
if (not didinit) then
//This extra if shouldn't represent a major performance drawback
//because QUANTITY rule is not supposed to be broken every day.
call init.evaluate()
set tN = tN - 1
else
//If this happens then the QUANTITY rule has already been broken, try to fix the
// issue, else fail.
debug call BJDebugMsg("NewTimer: Warning, Exceeding TimerUtils_QUANTITY, make sure all timers are getting recycled correctly")
set tT[0]=CreateTimer()
static if( not USE_HASH_TABLE) then
debug call BJDebugMsg("In case of errors, please increase it accordingly, or set TimerUtils_USE_HASH_TABLE to true")
static if( USE_FLEXIBLE_OFFSET) then
if (GetHandleId(tT[0])-VOFFSET<0) or (GetHandleId(tT[0])-VOFFSET>=ARRAY_SIZE) then
//all right, couldn't fix it
call BJDebugMsg("NewTimer: Unable to allocate a timer, you should probably set TimerUtils_USE_HASH_TABLE to true or fix timer leaks.")
return null
endif
else
if (GetHandleId(tT[0])-OFFSET<0) or (GetHandleId(tT[0])-OFFSET>=ARRAY_SIZE) then
//all right, couldn't fix it
call BJDebugMsg("NewTimer: Unable to allocate a timer, you should probably set TimerUtils_USE_HASH_TABLE to true or fix timer leaks.")
return null
endif
endif
endif
endif
else
set tN=tN-1
endif
call SetTimerData(tT[tN],value)
return tT[tN]
endfunction
function NewTimer takes nothing returns timer
return NewTimerEx(0)
endfunction
//==========================================================================================
function ReleaseTimer takes timer t returns nothing
if(t==null) then
debug call BJDebugMsg("Warning: attempt to release a null timer")
return
endif
if (tN==ARRAY_SIZE) then
debug call BJDebugMsg("Warning: Timer stack is full, destroying timer!!")
//stack is full, the map already has much more troubles than the chance of bug
call DestroyTimer(t)
else
call PauseTimer(t)
if(GetTimerData(t)==HELD) then
debug call BJDebugMsg("Warning: ReleaseTimer: Double free!")
return
endif
call SetTimerData(t,HELD)
set tT[tN]=t
set tN=tN+1
endif
endfunction
private function init takes nothing returns nothing
local integer i=0
local integer o=-1
local boolean oops = false
if ( didinit ) then
return
else
set didinit = true
endif
static if( USE_HASH_TABLE ) then
set ht = InitHashtable()
loop
exitwhen(i==QUANTITY)
set tT[i]=CreateTimer()
call SetTimerData(tT[i], HELD)
set i=i+1
endloop
set tN = QUANTITY
else
loop
set i=0
loop
exitwhen (i==QUANTITY)
set tT[i] = CreateTimer()
if(i==0) then
set VOFFSET = GetHandleId(tT[i])
static if(USE_FLEXIBLE_OFFSET) then
set o=VOFFSET
else
set o=OFFSET
endif
endif
if (GetHandleId(tT[i])-o>=ARRAY_SIZE) then
exitwhen true
endif
if (GetHandleId(tT[i])-o>=0) then
set i=i+1
endif
endloop
set tN = i
exitwhen(tN == QUANTITY)
set oops = true
exitwhen not USE_FLEXIBLE_OFFSET
debug call BJDebugMsg("TimerUtils_init: Failed a initialization attempt, will try again")
endloop
if(oops) then
static if ( USE_FLEXIBLE_OFFSET) then
debug call BJDebugMsg("The problem has been fixed.")
//If this message doesn't appear then there is so much
//handle id fragmentation that it was impossible to preload
//so many timers and the thread crashed! Therefore this
//debug message is useful.
elseif(DEBUG_MODE) then
call BJDebugMsg("There were problems and the new timer limit is "+I2S(i))
call BJDebugMsg("This is a rare ocurrence, if the timer limit is too low:")
call BJDebugMsg("a) Change USE_FLEXIBLE_OFFSET to true (reduces performance a little)")
call BJDebugMsg("b) or try changing OFFSET to "+I2S(VOFFSET) )
endif
endif
endif
endfunction
endlibrary
library WorldBounds
/*
readonly static real maxX
readonly static real maxY
readonly static real minX
readonly static real minY
readonly static real centerX
readonly static real centerY
readonly static rect world
readonly static region worldRegion
*/
globals
private constant boolean USE_REGION = true
private constant boolean USE_RECT = true
private constant boolean USE_EXTREMA_COORDS = true
private constant boolean USE_CENTER_COORDS = true
endglobals
private module WorldBoundInit
private static method onInit takes nothing returns nothing
static if not USE_RECT then
local rect world=GetWorldBounds()
else
set world=GetWorldBounds()
endif
static if USE_EXTREMA_COORDS then
set maxX=GetRectMaxX(world)
set maxY=GetRectMaxY(world)
set minX=GetRectMinX(world)
set minY=GetRectMinY(world)
endif
static if USE_CENTER_COORDS then
set centerX=(maxX+minX)/2
set centerY=(minY+maxY)/2
endif
static if USE_REGION then
set worldRegion=CreateRegion()
call RegionAddRect(worldRegion,world)
endif
static if not USE_RECT then
call RemoveRect(world)
set world=null
endif
endmethod
endmodule
struct WorldBounds extends array
static if USE_EXTREMA_COORDS then
readonly static real maxX
readonly static real maxY
readonly static real minX
readonly static real minY
endif
static if USE_CENTER_COORDS then
readonly static real centerX
readonly static real centerY
endif
static if USE_RECT then
readonly static rect world
endif
static if USE_REGION then
readonly static region worldRegion
endif
implement WorldBoundInit
endstruct
endlibrary
library TreeLib initializer Init
private struct Data
destructable tree
integer executions
boolean invul = false
endstruct
globals
constant integer TREE_ASHENVALE = 'ATtr'
constant integer TREE_RUINS = 'ZTtw'
constant integer DESERT_GRASS = 'Bgrr'
private constant real TIMEOUT = 0.03
private constant real ANIM_SPEED = 3
private constant real MIN_SCALE = 0.63
private constant real MAX_SCALE = 1.04
private timer T = null
private integer Count = 0
private Data array TreeList
endglobals
private function periodic takes nothing returns nothing
local Data dat
local integer i = 0
loop
exitwhen i >= Count
set dat = TreeList[i]
set dat.executions = dat.executions - 1
if dat.executions == 0 then
call SetDestructableAnimation(dat.tree, "stand")
if dat.invul then
call SetDestructableInvulnerable(dat.tree, false)
endif
call dat.destroy()
set Count = Count - 1
set TreeList[i] = TreeList[Count]
else
call QueueDestructableAnimation(dat.tree, "stand")
endif
if Count == 0 then
// call PauseTimer(T)
endif
set i = i + 1
endloop
endfunction
function createTree takes integer treeType, real x, real y, real angle, real growthDuration, integer scale, boolean invWhenGrowing returns nothing
local Data dat = Data.create()
set dat.tree = CreateDestructable(treeType, x, y, angle, GetRandomReal(MIN_SCALE,MAX_SCALE),scale)
call SetDestructableAnimation(dat.tree, "birth")
call SetDestructableAnimationSpeed(dat.tree, ANIM_SPEED/growthDuration)
if invWhenGrowing then
call SetDestructableInvulnerable(dat.tree, true)
set dat.invul = true
endif
set dat.executions = R2I(growthDuration/TIMEOUT)
set TreeList[Count] = dat
set Count = Count + 1
if Count == 1 then
call TimerStart(T, TIMEOUT, true, function periodic)
endif
endfunction
private function Init takes nothing returns nothing
set T = NewTimer()
endfunction
endlibrary
library Setup initializer init
globals
integer creepcounter = 0
boolean locs = false
boolean cities = false
real array CityX
real array CityY
integer array CityT
hashtable HTcache
integer tcities = 0
timer Init_timer = null
endglobals
function SetupLoc takes nothing returns nothing
set CityX[0] = 7934.750
set CityY[0] = 4356.750
set CityT[0] = 0
set CityX[1] = 8955.750
set CityY[1] = 4365.000
set CityT[1] = 0
set CityX[2] = 775.250
set CityY[2] = -4860.750
set CityT[2] = 0
set CityX[3] = -8967.750
set CityY[3] = -8448.750
set CityT[3] = 0
set CityX[4] = -15104.250
set CityY[4] = 14593.250
set CityT[4] = 0
set CityX[5] = -14585.500
set CityY[5] = 14590.500
set CityT[5] = 0
set CityX[6] = -14079.000
set CityY[6] = 14595.750
set CityT[6] = 0
set CityX[7] = -13561.500
set CityY[7] = 14580.250
set CityT[7] = 0
set CityX[8] = -13050.750
set CityY[8] = 14580.500
set CityT[8] = 0
set CityX[9] = -12538.500
set CityY[9] = 14580.250
set CityT[9] = 0
set CityX[10] = -12037.750
set CityY[10] = 14586.500
set CityT[10] = 0
set CityX[11] = -11516.500
set CityY[11] = 14581.000
set CityT[11] = 0
set CityX[12] = -11008.750
set CityY[12] = 14585.500
set CityT[12] = 0
set CityX[13] = -10497.500
set CityY[13] = 14587.750
set CityT[13] = 0
set CityX[14] = -9973.750
set CityY[14] = 14576.750
set CityT[14] = 0
set CityX[15] = -9984.750
set CityY[15] = 14086.250
set CityT[15] = 0
set CityX[16] = -10500.000
set CityY[16] = 14069.500
set CityT[16] = 0
set CityX[17] = -11002.250
set CityY[17] = 14082.500
set CityT[17] = 0
set CityX[18] = -11517.000
set CityY[18] = 14056.500
set CityT[18] = 0
set CityX[19] = -12030.250
set CityY[19] = 14078.000
set CityT[19] = 0
set CityX[20] = -12541.750
set CityY[20] = 14072.750
set CityT[20] = 0
set CityX[21] = -13053.500
set CityY[21] = 14074.000
set CityT[21] = 0
set CityX[22] = -13561.750
set CityY[22] = 14072.250
set CityT[22] = 0
set CityX[23] = -14074.250
set CityY[23] = 14074.250
set CityT[23] = 0
set CityX[24] = -14583.000
set CityY[24] = 14079.500
set CityT[24] = 0
set CityX[25] = -15104.250
set CityY[25] = 14072.250
set CityT[25] = 0
set CityX[26] = -14587.750
set CityY[26] = 13571.750
set CityT[26] = 0
set CityX[27] = -14080.000
set CityY[27] = 13561.500
set CityT[27] = 0
set CityX[28] = -13564.250
set CityY[28] = 13559.750
set CityT[28] = 0
set CityX[29] = -13056.250
set CityY[29] = 13563.000
set CityT[29] = 0
set CityX[30] = -12547.750
set CityY[30] = 13569.500
set CityT[30] = 0
set CityX[31] = -12032.500
set CityY[31] = 13566.000
set CityT[31] = 0
set CityX[32] = -11524.000
set CityY[32] = 13563.000
set CityT[32] = 0
set CityX[33] = -11008.250
set CityY[33] = 13563.000
set CityT[33] = 0
set CityX[34] = -10501.500
set CityY[34] = 13571.750
set CityT[34] = 0
set CityX[35] = -9983.250
set CityY[35] = 13563.000
set CityT[35] = 0
set CityX[36] = -9980.500
set CityY[36] = 13055.250
set CityT[36] = 0
set CityX[37] = -11004.500
set CityY[37] = 13052.000
set CityT[37] = 0
set CityX[38] = -11517.250
set CityY[38] = 13049.500
set CityT[38] = 0
set CityX[39] = -12029.500
set CityY[39] = 13043.000
set CityT[39] = 0
set CityX[40] = -12537.500
set CityY[40] = 13037.250
set CityT[40] = 0
set CityX[41] = -13053.500
set CityY[41] = 13051.750
set CityT[41] = 0
set CityX[42] = -13573.000
set CityY[42] = 13046.500
set CityT[42] = 0
set CityX[43] = -14082.000
set CityY[43] = 13061.500
set CityT[43] = 0
set CityX[44] = -14585.250
set CityY[44] = 13040.500
set CityT[44] = 0
set CityX[45] = -14076.500
set CityY[45] = 12542.000
set CityT[45] = 0
set CityX[46] = -14591.000
set CityY[46] = 12544.250
set CityT[46] = 0
set CityX[47] = -13563.000
set CityY[47] = 12543.250
set CityT[47] = 0
set CityX[48] = -13050.500
set CityY[48] = 12534.250
set CityT[48] = 0
set CityX[49] = -12543.500
set CityY[49] = 12544.250
set CityT[49] = 0
set CityX[50] = -13048.000
set CityY[50] = 12019.750
set CityT[50] = 0
set CityX[51] = -13562.500
set CityY[51] = 12013.500
set CityT[51] = 0
set CityX[52] = -14072.500
set CityY[52] = 12013.500
set CityT[52] = 0
set CityX[53] = -14591.500
set CityY[53] = 12024.250
set CityT[53] = 0
set CityX[54] = -15104.000
set CityY[54] = 12038.750
set CityT[54] = 0
set CityX[55] = -14584.750
set CityY[55] = 11514.500
set CityT[55] = 0
set CityX[56] = -14086.000
set CityY[56] = 11514.000
set CityT[56] = 0
set CityX[57] = -13562.500
set CityY[57] = 11511.250
set CityT[57] = 0
set CityX[58] = -14075.000
set CityY[58] = 11006.000
set CityT[58] = 0
set CityX[59] = -14575.500
set CityY[59] = 10999.250
set CityT[59] = 0
set CityX[60] = -13556.500
set CityY[60] = 10488.000
set CityT[60] = 0
set CityX[61] = -9471.750
set CityY[61] = 14583.250
set CityT[61] = 0
set CityX[62] = -9464.500
set CityY[62] = 14079.500
set CityT[62] = 0
set CityX[63] = -9473.000
set CityY[63] = 13566.750
set CityT[63] = 0
set CityX[64] = -9468.250
set CityY[64] = 13056.000
set CityT[64] = 0
set CityX[65] = -8963.750
set CityY[65] = 14585.250
set CityT[65] = 0
set CityX[66] = -8952.000
set CityY[66] = 14081.500
set CityT[66] = 0
set CityX[67] = -8962.500
set CityY[67] = 13555.750
set CityT[67] = 0
set CityX[68] = -8947.000
set CityY[68] = 13048.500
set CityT[68] = 0
set CityX[69] = -8449.000
set CityY[69] = 14587.500
set CityT[69] = 0
set CityX[70] = -8447.250
set CityY[70] = 14069.750
set CityT[70] = 0
set CityX[71] = -8449.500
set CityY[71] = 13572.000
set CityT[71] = 0
set CityX[72] = -7932.000
set CityY[72] = 14071.000
set CityT[72] = 0
set CityX[73] = -7939.000
set CityY[73] = 13562.750
set CityT[73] = 0
set CityX[74] = -7933.000
set CityY[74] = 13060.750
set CityT[74] = 0
set CityX[75] = -7933.000
set CityY[75] = 12537.000
set CityT[75] = 0
set CityX[76] = -7422.250
set CityY[76] = 14070.500
set CityT[76] = 0
set CityX[77] = -7422.000
set CityY[77] = 13569.000
set CityT[77] = 0
set CityX[78] = -7416.000
set CityY[78] = 13054.000
set CityT[78] = 0
set CityX[79] = -7427.250
set CityY[79] = 12539.750
set CityT[79] = 0
set CityX[80] = -6905.750
set CityY[80] = 14585.750
set CityT[80] = 0
set CityX[81] = -6917.500
set CityY[81] = 14069.500
set CityT[81] = 0
set CityX[82] = -6382.500
set CityY[82] = 14588.500
set CityT[82] = 0
set CityX[83] = -6406.750
set CityY[83] = 14079.750
set CityT[83] = 0
set CityX[84] = -5898.750
set CityY[84] = 14088.500
set CityT[84] = 0
set CityX[85] = -6913.000
set CityY[85] = 13552.000
set CityT[85] = 0
set CityX[86] = -6404.250
set CityY[86] = 13555.000
set CityT[86] = 0
set CityX[87] = -6912.000
set CityY[87] = 13064.250
set CityT[87] = 0
set CityX[88] = -6413.000
set CityY[88] = 13062.000
set CityT[88] = 0
set CityX[89] = -5886.250
set CityY[89] = 13549.500
set CityT[89] = 0
set CityX[90] = -5883.250
set CityY[90] = 13062.000
set CityT[90] = 0
set CityX[91] = -5375.000
set CityY[91] = 14086.750
set CityT[91] = 0
set CityX[92] = -5373.000
set CityY[92] = 13559.500
set CityT[92] = 0
set CityX[93] = -5378.250
set CityY[93] = 13059.000
set CityT[93] = 0
set CityX[94] = -4855.250
set CityY[94] = 14579.500
set CityT[94] = 0
set CityX[95] = -4859.750
set CityY[95] = 14072.500
set CityT[95] = 0
set CityX[96] = -4866.500
set CityY[96] = 13547.750
set CityT[96] = 0
set CityX[97] = -4866.500
set CityY[97] = 13053.250
set CityT[97] = 0
set CityX[98] = -4871.250
set CityY[98] = 12527.000
set CityT[98] = 0
set CityX[99] = -4349.000
set CityY[99] = 13043.250
set CityT[99] = 0
set CityX[100] = -4355.000
set CityY[100] = 13557.250
set CityT[100] = 0
set CityX[101] = -4338.000
set CityY[101] = 14061.750
set CityT[101] = 0
set CityX[102] = -4343.000
set CityY[102] = 14563.500
set CityT[102] = 0
set CityX[103] = -3831.000
set CityY[103] = 14583.000
set CityT[103] = 0
set CityX[104] = -3341.750
set CityY[104] = 14583.000
set CityT[104] = 0
set CityX[105] = -3850.750
set CityY[105] = 14080.750
set CityT[105] = 0
set CityX[106] = -3333.500
set CityY[106] = 14080.000
set CityT[106] = 0
set CityX[107] = -3846.000
set CityY[107] = 13563.500
set CityT[107] = 0
set CityX[108] = -3335.000
set CityY[108] = 13569.750
set CityT[108] = 0
set CityX[109] = -2817.000
set CityY[109] = 14074.750
set CityT[109] = 0
set CityX[110] = -2813.000
set CityY[110] = 13556.750
set CityT[110] = 0
set CityX[111] = -2313.000
set CityY[111] = 14076.250
set CityT[111] = 0
set CityX[112] = -2304.250
set CityY[112] = 13576.500
set CityT[112] = 0
set CityX[113] = -1789.000
set CityY[113] = 14079.500
set CityT[113] = 0
set CityX[114] = -1790.500
set CityY[114] = 13572.250
set CityT[114] = 0
set CityX[115] = -1280.500
set CityY[115] = 14088.500
set CityT[115] = 0
set CityX[116] = -1271.000
set CityY[116] = 13571.500
set CityT[116] = 0
set CityX[117] = -761.250
set CityY[117] = 14075.000
set CityT[117] = 0
set CityX[118] = -765.500
set CityY[118] = 13579.250
set CityT[118] = 0
set CityX[119] = -765.500
set CityY[119] = 13072.000
set CityT[119] = 0
set CityX[120] = -245.500
set CityY[120] = 14067.000
set CityT[120] = 0
set CityX[121] = -254.000
set CityY[121] = 13572.000
set CityT[121] = 0
set CityX[122] = -256.500
set CityY[122] = 13051.750
set CityT[122] = 0
set CityX[123] = 252.750
set CityY[123] = 14075.500
set CityT[123] = 0
set CityX[124] = 258.500
set CityY[124] = 13565.500
set CityT[124] = 0
set CityX[125] = 267.750
set CityY[125] = 13052.500
set CityT[125] = 0
set CityX[126] = 771.250
set CityY[126] = 13041.500
set CityT[126] = 0
set CityX[127] = 765.750
set CityY[127] = 12546.000
set CityT[127] = 0
set CityX[128] = 263.250
set CityY[128] = 12546.000
set CityT[128] = 0
call TriggerSleepAction(0.3)
set CityX[129] = -256.500
set CityY[129] = 12540.500
set CityT[129] = 0
set CityX[130] = -249.500
set CityY[130] = 12037.500
set CityT[130] = 0
set CityX[131] = 253.000
set CityY[131] = 12020.000
set CityT[131] = 0
set CityX[132] = 781.750
set CityY[132] = 12027.000
set CityT[132] = 0
set CityX[133] = 1278.000
set CityY[133] = 12532.000
set CityT[133] = 0
set CityX[134] = 1283.750
set CityY[134] = 12036.000
set CityT[134] = 0
set CityX[135] = 1803.000
set CityY[135] = 12031.750
set CityT[135] = 0
set CityX[136] = 2310.250
set CityY[136] = 11009.500
set CityT[136] = 0
set CityX[137] = 1795.750
set CityY[137] = 11505.250
set CityT[137] = 0
set CityX[138] = 2307.500
set CityY[138] = 11504.500
set CityT[138] = 0
set CityX[139] = 1799.250
set CityY[139] = 11009.500
set CityT[139] = 0
set CityX[140] = 2817.000
set CityY[140] = 11018.500
set CityT[140] = 0
set CityX[141] = 770.500
set CityY[141] = 14592.500
set CityT[141] = 0
set CityX[142] = 1277.500
set CityY[142] = 14582.500
set CityT[142] = 0
set CityX[143] = 1789.000
set CityY[143] = 14570.500
set CityT[143] = 0
set CityX[144] = 1288.750
set CityY[144] = 14081.500
set CityT[144] = 0
set CityX[145] = 1791.500
set CityY[145] = 14088.500
set CityT[145] = 0
set CityX[146] = 1788.250
set CityY[146] = 13565.250
set CityT[146] = 0
set CityX[147] = 2302.500
set CityY[147] = 14075.750
set CityT[147] = 0
set CityX[148] = 2311.500
set CityY[148] = 13558.500
set CityT[148] = 0
set CityX[149] = 2302.000
set CityY[149] = 13056.000
set CityT[149] = 0
set CityX[150] = 2821.000
set CityY[150] = 13564.500
set CityT[150] = 0
set CityX[151] = 2818.500
set CityY[151] = 13047.500
set CityT[151] = 0
set CityX[152] = 2809.500
set CityY[152] = 12545.750
set CityT[152] = 0
set CityX[153] = 2808.500
set CityY[153] = 12037.750
set CityT[153] = 0
set CityX[154] = 3322.750
set CityY[154] = 13063.250
set CityT[154] = 0
set CityX[155] = 3331.250
set CityY[155] = 12536.750
set CityT[155] = 0
set CityX[156] = 3331.500
set CityY[156] = 12038.000
set CityT[156] = 0
set CityX[157] = 3840.500
set CityY[157] = 13047.500
set CityT[157] = 0
set CityX[158] = 3846.000
set CityY[158] = 12541.000
set CityT[158] = 0
set CityX[159] = 3835.750
set CityY[159] = 12036.500
set CityT[159] = 0
set CityX[160] = 4356.250
set CityY[160] = 12016.000
set CityT[160] = 0
set CityX[161] = 4358.250
set CityY[161] = 12549.000
set CityT[161] = 0
set CityX[162] = 4353.750
set CityY[162] = 13043.000
set CityT[162] = 0
set CityX[163] = 4352.000
set CityY[163] = 13559.500
set CityT[163] = 0
set CityX[164] = 4362.250
set CityY[164] = 14077.750
set CityT[164] = 0
set CityX[165] = 4869.500
set CityY[165] = 14082.500
set CityT[165] = 0
set CityX[166] = 5372.000
set CityY[166] = 14081.000
set CityT[166] = 0
set CityX[167] = 4868.500
set CityY[167] = 13560.000
set CityT[167] = 0
set CityX[168] = 5367.000
set CityY[168] = 13560.500
set CityT[168] = 0
set CityX[169] = 4870.250
set CityY[169] = 13053.500
set CityT[169] = 0
set CityX[170] = 5370.750
set CityY[170] = 13043.000
set CityT[170] = 0
set CityX[171] = 4870.000
set CityY[171] = 12534.500
set CityT[171] = 0
set CityX[172] = 5385.500
set CityY[172] = 12530.000
set CityT[172] = 0
set CityX[173] = 4871.000
set CityY[173] = 12019.500
set CityT[173] = 0
set CityX[174] = 5374.750
set CityY[174] = 12028.250
set CityT[174] = 0
set CityX[175] = 4868.250
set CityY[175] = 11528.500
set CityT[175] = 0
set CityX[176] = 2312.500
set CityY[176] = 10486.250
set CityT[176] = 0
set CityX[177] = 2819.750
set CityY[177] = 10492.250
set CityT[177] = 0
set CityX[178] = 2826.250
set CityY[178] = 9986.000
set CityT[178] = 0
set CityX[179] = 3323.750
set CityY[179] = 9483.000
set CityT[179] = 0
set CityX[180] = 3335.500
set CityY[180] = 9972.500
set CityT[180] = 0
set CityX[181] = 3326.750
set CityY[181] = 10500.750
set CityT[181] = 0
set CityX[182] = 3338.250
set CityY[182] = 10996.000
set CityT[182] = 0
set CityX[183] = 3837.500
set CityY[183] = 11002.250
set CityT[183] = 0
set CityX[184] = 3827.000
set CityY[184] = 10486.000
set CityT[184] = 0
set CityX[185] = 3836.500
set CityY[185] = 9990.500
set CityT[185] = 0
set CityX[186] = 3849.750
set CityY[186] = 9469.500
set CityT[186] = 0
set CityX[187] = 4349.750
set CityY[187] = 9964.000
set CityT[187] = 0
set CityX[188] = 4353.500
set CityY[188] = 9477.500
set CityT[188] = 0
set CityX[189] = 4355.750
set CityY[189] = 8950.000
set CityT[189] = 0
set CityX[190] = 4866.000
set CityY[190] = 9978.500
set CityT[190] = 0
set CityX[191] = 4861.250
set CityY[191] = 9469.500
set CityT[191] = 0
set CityX[192] = 4870.750
set CityY[192] = 8954.250
set CityT[192] = 0
set CityX[193] = 4863.000
set CityY[193] = 8437.000
set CityT[193] = 0
set CityX[194] = 5372.500
set CityY[194] = 8968.750
set CityT[194] = 0
set CityX[195] = 5371.500
set CityY[195] = 8445.000
set CityT[195] = 0
set CityX[196] = 5373.500
set CityY[196] = 7943.000
set CityT[196] = 0
set CityX[197] = 5383.000
set CityY[197] = 7410.250
set CityT[197] = 0
set CityX[198] = 5378.750
set CityY[198] = 6906.000
set CityT[198] = 0
set CityX[199] = 5387.500
set CityY[199] = 6388.000
set CityT[199] = 0
set CityX[200] = 5894.750
set CityY[200] = 6398.000
set CityT[200] = 0
set CityX[201] = 5885.500
set CityY[201] = 6905.500
set CityT[201] = 0
set CityX[202] = 5890.750
set CityY[202] = 7410.500
set CityT[202] = 0
set CityX[203] = 5897.000
set CityY[203] = 7905.000
set CityT[203] = 0
set CityX[204] = 5899.500
set CityY[204] = 8437.500
set CityT[204] = 0
set CityX[205] = 5881.500
set CityY[205] = 8953.750
set CityT[205] = 0
set CityX[206] = 5377.500
set CityY[206] = 9461.750
set CityT[206] = 0
set CityX[207] = 5882.000
set CityY[207] = 13561.500
set CityT[207] = 0
set CityX[208] = 6402.000
set CityY[208] = 13546.500
set CityT[208] = 0
set CityX[209] = 5884.250
set CityY[209] = 13046.250
set CityT[209] = 0
set CityX[210] = 6404.750
set CityY[210] = 13025.500
set CityT[210] = 0
set CityX[211] = 5892.750
set CityY[211] = 12544.000
set CityT[211] = 0
set CityX[212] = 6401.000
set CityY[212] = 12535.000
set CityT[212] = 0
set CityX[213] = 5895.000
set CityY[213] = 12041.500
set CityT[213] = 0
set CityX[214] = 6413.000
set CityY[214] = 12023.500
set CityT[214] = 0
set CityX[215] = 5895.000
set CityY[215] = 11523.000
set CityT[215] = 0
set CityX[216] = 6405.000
set CityY[216] = 11510.750
set CityT[216] = 0
set CityX[217] = 5380.750
set CityY[217] = 11519.750
set CityT[217] = 0
set CityX[218] = 4871.000
set CityY[218] = 11017.000
set CityT[218] = 0
set CityX[219] = 5371.500
set CityY[219] = 11008.250
set CityT[219] = 0
set CityX[220] = 5885.750
set CityY[220] = 11005.500
set CityT[220] = 0
set CityX[221] = 6400.250
set CityY[221] = 10998.500
set CityT[221] = 0
set CityX[222] = 6922.250
set CityY[222] = 12536.000
set CityT[222] = 0
set CityX[223] = 6918.750
set CityY[223] = 12032.000
set CityT[223] = 0
set CityX[224] = 6917.500
set CityY[224] = 11520.250
set CityT[224] = 0
set CityX[225] = 6920.500
set CityY[225] = 11002.000
set CityT[225] = 0
set CityX[226] = 6909.750
set CityY[226] = 10505.500
set CityT[226] = 0
set CityX[227] = 6399.000
set CityY[227] = 10489.500
set CityT[227] = 0
set CityX[228] = 5889.250
set CityY[228] = 10490.000
set CityT[228] = 0
set CityX[229] = 5377.500
set CityY[229] = 10497.250
set CityT[229] = 0
set CityX[230] = 4871.250
set CityY[230] = 10491.500
set CityT[230] = 0
set CityX[231] = 5383.250
set CityY[231] = 9976.000
set CityT[231] = 0
set CityX[232] = 5891.000
set CityY[232] = 9989.500
set CityT[232] = 0
set CityX[233] = 6396.750
set CityY[233] = 9981.500
set CityT[233] = 0
set CityX[234] = 6909.000
set CityY[234] = 9984.250
set CityT[234] = 0
set CityX[235] = 7429.000
set CityY[235] = 9980.250
set CityT[235] = 0
set CityX[236] = 7418.500
set CityY[236] = 10494.500
set CityT[236] = 0
set CityX[237] = 7428.250
set CityY[237] = 11002.000
set CityT[237] = 0
set CityX[238] = 7425.500
set CityY[238] = 11511.250
set CityT[238] = 0
set CityX[239] = 7421.500
set CityY[239] = 12030.500
set CityT[239] = 0
set CityX[240] = 7949.500
set CityY[240] = 11514.000
set CityT[240] = 0
set CityX[241] = 7937.750
set CityY[241] = 12036.500
set CityT[241] = 0
set CityX[242] = 7944.000
set CityY[242] = 12540.000
set CityT[242] = 0
set CityX[243] = 8451.750
set CityY[243] = 12536.250
set CityT[243] = 0
set CityX[244] = 8451.750
set CityY[244] = 12020.000
set CityT[244] = 0
set CityX[245] = 8452.500
set CityY[245] = 11536.750
set CityT[245] = 0
set CityX[246] = 8966.500
set CityY[246] = 11514.750
set CityT[246] = 0
set CityX[247] = 8962.500
set CityY[247] = 12004.000
set CityT[247] = 0
set CityX[248] = 8969.000
set CityY[248] = 12537.250
set CityT[248] = 0
set CityX[249] = 9464.250
set CityY[249] = 12539.000
set CityT[249] = 0
set CityX[250] = 9470.000
set CityY[250] = 13029.000
set CityT[250] = 0
set CityX[251] = 9479.500
set CityY[251] = 12021.500
set CityT[251] = 0
set CityX[252] = 9473.500
set CityY[252] = 11531.250
set CityT[252] = 0
set CityX[253] = 9975.750
set CityY[253] = 11503.500
set CityT[253] = 0
set CityX[254] = 9996.500
set CityY[254] = 12023.250
set CityT[254] = 0
set CityX[255] = 9981.500
set CityY[255] = 12541.500
set CityT[255] = 0
set CityX[256] = 9986.500
set CityY[256] = 13033.750
set CityT[256] = 0
call TriggerSleepAction(0.3)
set CityX[257] = 10491.750
set CityY[257] = 13059.000
set CityT[257] = 0
set CityX[258] = 10494.000
set CityY[258] = 12553.500
set CityT[258] = 0
set CityX[259] = 10496.500
set CityY[259] = 12034.750
set CityT[259] = 0
set CityX[260] = 10503.500
set CityY[260] = 11508.250
set CityT[260] = 0
set CityX[261] = 9989.000
set CityY[261] = 11006.750
set CityT[261] = 0
set CityX[262] = 10497.750
set CityY[262] = 11006.750
set CityT[262] = 0
set CityX[263] = 11007.000
set CityY[263] = 13057.000
set CityT[263] = 0
set CityX[264] = 11011.000
set CityY[264] = 12534.000
set CityT[264] = 0
set CityX[265] = 10994.250
set CityY[265] = 12032.500
set CityT[265] = 0
set CityX[266] = 11007.250
set CityY[266] = 11536.250
set CityT[266] = 0
set CityX[267] = 12035.500
set CityY[267] = 13558.250
set CityT[267] = 0
set CityX[268] = 11521.000
set CityY[268] = 12551.500
set CityT[268] = 0
set CityX[269] = 12033.000
set CityY[269] = 12539.250
set CityT[269] = 0
set CityX[270] = 11521.250
set CityY[270] = 12041.250
set CityT[270] = 0
set CityX[271] = 12027.500
set CityY[271] = 12039.750
set CityT[271] = 0
set CityX[272] = 11522.000
set CityY[272] = 11531.500
set CityT[272] = 0
set CityX[273] = 12022.000
set CityY[273] = 11518.500
set CityT[273] = 0
set CityX[274] = 12548.000
set CityY[274] = 11526.250
set CityT[274] = 0
set CityX[275] = 13057.750
set CityY[275] = 11515.500
set CityT[275] = 0
set CityX[276] = 13566.000
set CityY[276] = 11509.500
set CityT[276] = 0
set CityX[277] = 14085.250
set CityY[277] = 11003.500
set CityT[277] = 0
set CityX[278] = 14590.250
set CityY[278] = 11000.000
set CityT[278] = 0
set CityX[279] = 13577.000
set CityY[279] = 11010.250
set CityT[279] = 0
set CityX[280] = 13054.750
set CityY[280] = 11010.500
set CityT[280] = 0
set CityX[281] = 12548.250
set CityY[281] = 11007.250
set CityT[281] = 0
set CityX[282] = 12042.250
set CityY[282] = 11004.000
set CityT[282] = 0
set CityX[283] = 11522.750
set CityY[283] = 11014.250
set CityT[283] = 0
set CityX[284] = 11013.750
set CityY[284] = 10994.000
set CityT[284] = 0
set CityX[285] = 14597.500
set CityY[285] = 10487.000
set CityT[285] = 0
set CityX[286] = 14083.000
set CityY[286] = 10486.250
set CityT[286] = 0
set CityX[287] = 13562.500
set CityY[287] = 10499.500
set CityT[287] = 0
set CityX[288] = 13052.500
set CityY[288] = 10488.250
set CityT[288] = 0
set CityX[289] = 12540.500
set CityY[289] = 10468.750
set CityT[289] = 0
set CityX[290] = 12039.250
set CityY[290] = 10483.500
set CityT[290] = 0
set CityX[291] = 11017.000
set CityY[291] = 10480.750
set CityT[291] = 0
set CityX[292] = 10500.250
set CityY[292] = 10482.250
set CityT[292] = 0
set CityX[293] = 9993.500
set CityY[293] = 10491.000
set CityT[293] = 0
set CityX[294] = 9467.000
set CityY[294] = 10491.000
set CityT[294] = 0
set CityX[295] = 8970.750
set CityY[295] = 10486.500
set CityT[295] = 0
set CityX[296] = 8443.750
set CityY[296] = 10499.000
set CityT[296] = 0
set CityX[297] = 8447.750
set CityY[297] = 9981.500
set CityT[297] = 0
set CityX[298] = 8958.500
set CityY[298] = 9975.000
set CityT[298] = 0
set CityX[299] = 9483.500
set CityY[299] = 9973.250
set CityT[299] = 0
set CityX[300] = 9987.500
set CityY[300] = 9977.750
set CityT[300] = 0
set CityX[301] = 10494.500
set CityY[301] = 9983.750
set CityT[301] = 0
set CityX[302] = 10999.000
set CityY[302] = 9972.500
set CityT[302] = 0
set CityX[303] = 12027.500
set CityY[303] = 9988.250
set CityT[303] = 0
set CityX[304] = 12541.750
set CityY[304] = 9982.000
set CityT[304] = 0
set CityX[305] = 13062.750
set CityY[305] = 9977.750
set CityT[305] = 0
set CityX[306] = 13560.000
set CityY[306] = 9959.500
set CityT[306] = 0
set CityX[307] = 14078.500
set CityY[307] = 9978.000
set CityT[307] = 0
set CityX[308] = 14595.750
set CityY[308] = 9483.500
set CityT[308] = 0
set CityX[309] = 14087.500
set CityY[309] = 9460.500
set CityT[309] = 0
set CityX[310] = 13561.000
set CityY[310] = 9464.000
set CityT[310] = 0
set CityX[311] = 13061.500
set CityY[311] = 9453.000
set CityT[311] = 0
set CityX[312] = 12550.250
set CityY[312] = 9475.250
set CityT[312] = 0
set CityX[313] = 12047.250
set CityY[313] = 9465.500
set CityT[313] = 0
set CityX[314] = 10485.500
set CityY[314] = 9476.750
set CityT[314] = 0
set CityX[315] = 9990.000
set CityY[315] = 9462.750
set CityT[315] = 0
set CityX[316] = 9476.750
set CityY[316] = 9449.500
set CityT[316] = 0
set CityX[317] = 8962.250
set CityY[317] = 9461.500
set CityT[317] = 0
set CityX[318] = 8453.250
set CityY[318] = 9461.000
set CityT[318] = 0
set CityX[319] = 8448.500
set CityY[319] = 8951.750
set CityT[319] = 0
set CityX[320] = 8953.000
set CityY[320] = 8947.000
set CityT[320] = 0
set CityX[321] = 8454.750
set CityY[321] = 8439.250
set CityT[321] = 0
set CityX[322] = 7420.000
set CityY[322] = 9453.500
set CityT[322] = 0
set CityX[323] = 6906.750
set CityY[323] = 9462.750
set CityT[323] = 0
set CityX[324] = 7428.500
set CityY[324] = 8974.000
set CityT[324] = 0
set CityX[325] = 6919.250
set CityY[325] = 8960.000
set CityT[325] = 0
set CityX[326] = 6401.500
set CityY[326] = 9462.250
set CityT[326] = 0
set CityX[327] = 6399.500
set CityY[327] = 8953.250
set CityT[327] = 0
set CityX[328] = 6401.250
set CityY[328] = 8439.750
set CityT[328] = 0
set CityX[329] = 6911.000
set CityY[329] = 8448.250
set CityT[329] = 0
set CityX[330] = 7436.250
set CityY[330] = 8436.750
set CityT[330] = 0
set CityX[331] = 6912.750
set CityY[331] = 7934.000
set CityT[331] = 0
set CityX[332] = 7431.500
set CityY[332] = 7924.750
set CityT[332] = 0
set CityX[333] = 6918.000
set CityY[333] = 7414.000
set CityT[333] = 0
set CityX[334] = 7414.250
set CityY[334] = 7423.750
set CityT[334] = 0
set CityX[335] = 8954.000
set CityY[335] = 8445.250
set CityT[335] = 0
set CityX[336] = 9474.750
set CityY[336] = 8434.750
set CityT[336] = 0
set CityX[337] = 9472.250
set CityY[337] = 8954.000
set CityT[337] = 0
set CityX[338] = 9978.750
set CityY[338] = 8439.000
set CityT[338] = 0
set CityX[339] = 10485.750
set CityY[339] = 8438.000
set CityT[339] = 0
set CityX[340] = 11007.000
set CityY[340] = 8439.250
set CityT[340] = 0
set CityX[341] = 11513.500
set CityY[341] = 8443.500
set CityT[341] = 0
set CityX[342] = 11521.000
set CityY[342] = 8958.500
set CityT[342] = 0
set CityX[343] = 12038.000
set CityY[343] = 8952.500
set CityT[343] = 0
set CityX[344] = 12028.000
set CityY[344] = 8455.250
set CityT[344] = 0
set CityX[345] = 12538.500
set CityY[345] = 8448.250
set CityT[345] = 0
set CityX[346] = 12556.500
set CityY[346] = 8939.000
set CityT[346] = 0
set CityX[347] = 13059.250
set CityY[347] = 8440.750
set CityT[347] = 0
set CityX[348] = 10507.500
set CityY[348] = 7925.000
set CityT[348] = 0
set CityX[349] = 11011.250
set CityY[349] = 7945.500
set CityT[349] = 0
set CityX[350] = 11523.000
set CityY[350] = 7929.750
set CityT[350] = 0
set CityX[351] = 12032.000
set CityY[351] = 7924.000
set CityT[351] = 0
set CityX[352] = 12544.750
set CityY[352] = 7934.750
set CityT[352] = 0
set CityX[353] = 12552.250
set CityY[353] = 7416.000
set CityT[353] = 0
set CityX[354] = 13056.500
set CityY[354] = 6908.250
set CityT[354] = 0
set CityX[355] = 12552.500
set CityY[355] = 6902.750
set CityT[355] = 0
set CityX[356] = 12025.000
set CityY[356] = 6911.750
set CityT[356] = 0
set CityX[357] = 12026.250
set CityY[357] = 7418.000
set CityT[357] = 0
set CityX[358] = 11522.500
set CityY[358] = 7421.500
set CityT[358] = 0
set CityX[359] = 11011.500
set CityY[359] = 7413.750
set CityT[359] = 0
set CityX[360] = 11010.500
set CityY[360] = 6912.500
set CityT[360] = 0
set CityX[361] = 10499.250
set CityY[361] = 7425.500
set CityT[361] = 0
set CityX[362] = 10495.750
set CityY[362] = 6911.000
set CityT[362] = 0
set CityX[363] = 9986.250
set CityY[363] = 6902.500
set CityT[363] = 0
set CityX[364] = 9986.500
set CityY[364] = 7418.500
set CityT[364] = 0
set CityX[365] = 9477.750
set CityY[365] = 7913.500
set CityT[365] = 0
set CityX[366] = 8953.500
set CityY[366] = 7412.750
set CityT[366] = 0
set CityX[367] = 8444.500
set CityY[367] = 7425.000
set CityT[367] = 0
set CityX[368] = 7953.500
set CityY[368] = 7404.500
set CityT[368] = 0
set CityX[369] = 9464.500
set CityY[369] = 6402.500
set CityT[369] = 0
set CityX[370] = 9982.500
set CityY[370] = 6405.500
set CityT[370] = 0
set CityX[371] = 12543.250
set CityY[371] = 6402.000
set CityT[371] = 0
set CityX[372] = 13055.000
set CityY[372] = 6389.000
set CityT[372] = 0
set CityX[373] = 13059.250
set CityY[373] = 5882.500
set CityT[373] = 0
set CityX[374] = 13570.000
set CityY[374] = 5892.000
set CityT[374] = 0
set CityX[375] = 12555.500
set CityY[375] = 5890.000
set CityT[375] = 0
set CityX[376] = 12032.250
set CityY[376] = 5875.000
set CityT[376] = 0
set CityX[377] = 11519.500
set CityY[377] = 5886.750
set CityT[377] = 0
set CityX[378] = 11007.750
set CityY[378] = 5886.500
set CityT[378] = 0
set CityX[379] = 10497.000
set CityY[379] = 5368.250
set CityT[379] = 0
set CityX[380] = 11012.000
set CityY[380] = 5367.000
set CityT[380] = 0
set CityX[381] = 11520.000
set CityY[381] = 5371.750
set CityT[381] = 0
set CityX[382] = 12032.000
set CityY[382] = 5369.500
set CityT[382] = 0
set CityX[383] = 12543.250
set CityY[383] = 5377.500
set CityT[383] = 0
set CityX[384] = 13055.500
set CityY[384] = 5374.500
set CityT[384] = 0
call TriggerSleepAction(0.3)
set CityX[385] = 13580.500
set CityY[385] = 5365.000
set CityT[385] = 0
set CityX[386] = 13567.750
set CityY[386] = 4849.500
set CityT[386] = 0
set CityX[387] = 13051.500
set CityY[387] = 4853.000
set CityT[387] = 0
set CityX[388] = 12551.500
set CityY[388] = 4863.500
set CityT[388] = 0
set CityX[389] = 12035.500
set CityY[389] = 4870.000
set CityT[389] = 0
set CityX[390] = 11512.250
set CityY[390] = 4861.500
set CityT[390] = 0
set CityX[391] = 11011.500
set CityY[391] = 4853.500
set CityT[391] = 0
set CityX[392] = 10506.750
set CityY[392] = 4862.000
set CityT[392] = 0
set CityX[393] = 11007.750
set CityY[393] = 4349.750
set CityT[393] = 0
set CityX[394] = 11524.000
set CityY[394] = 4356.750
set CityT[394] = 0
set CityX[395] = 10497.500
set CityY[395] = 3843.000
set CityT[395] = 0
set CityX[396] = 9987.500
set CityY[396] = 3818.000
set CityT[396] = 0
set CityX[397] = 9472.000
set CityY[397] = 4353.000
set CityT[397] = 0
set CityX[398] = 8952.750
set CityY[398] = 3826.250
set CityT[398] = 0
set CityX[399] = 8459.250
set CityY[399] = 3845.000
set CityT[399] = 0
set CityX[400] = 8446.250
set CityY[400] = 3332.500
set CityT[400] = 0
set CityX[401] = 8974.250
set CityY[401] = 3317.000
set CityT[401] = 0
set CityX[402] = 9980.750
set CityY[402] = 3322.250
set CityT[402] = 0
set CityX[403] = 10000.750
set CityY[403] = 2820.500
set CityT[403] = 0
set CityX[404] = 13564.500
set CityY[404] = 4344.250
set CityT[404] = 0
set CityX[405] = 14083.500
set CityY[405] = 4349.750
set CityT[405] = 0
set CityX[406] = 13066.000
set CityY[406] = 4357.500
set CityT[406] = 0
set CityX[407] = 11011.250
set CityY[407] = 2792.000
set CityT[407] = 0
set CityX[408] = 11514.500
set CityY[408] = 2780.750
set CityT[408] = 0
set CityX[409] = 11017.500
set CityY[409] = 2304.500
set CityT[409] = 0
set CityX[410] = 11531.250
set CityY[410] = 2284.250
set CityT[410] = 0
set CityX[411] = 12027.500
set CityY[411] = 2300.250
set CityT[411] = 0
set CityX[412] = 12544.500
set CityY[412] = 2281.750
set CityT[412] = 0
set CityX[413] = 13061.750
set CityY[413] = 2294.500
set CityT[413] = 0
set CityX[414] = 13564.000
set CityY[414] = 2291.250
set CityT[414] = 0
set CityX[415] = 13573.500
set CityY[415] = 1786.000
set CityT[415] = 0
set CityX[416] = 14086.250
set CityY[416] = 1784.000
set CityT[416] = 0
set CityX[417] = 13048.750
set CityY[417] = 1780.500
set CityT[417] = 0
set CityX[418] = 12542.250
set CityY[418] = 1782.500
set CityT[418] = 0
set CityX[419] = 11513.750
set CityY[419] = 1793.750
set CityT[419] = 0
set CityX[420] = 11021.000
set CityY[420] = 1780.250
set CityT[420] = 0
set CityX[421] = 11012.250
set CityY[421] = 1269.500
set CityT[421] = 0
set CityX[422] = 11523.500
set CityY[422] = 1257.500
set CityT[422] = 0
set CityX[423] = 12036.000
set CityY[423] = 1274.250
set CityT[423] = 0
set CityX[424] = 12552.500
set CityY[424] = 1271.500
set CityT[424] = 0
set CityX[425] = 13069.250
set CityY[425] = 1277.250
set CityT[425] = 0
set CityX[426] = 13571.000
set CityY[426] = 1272.500
set CityT[426] = 0
set CityX[427] = 14080.750
set CityY[427] = 1287.000
set CityT[427] = 0
set CityX[428] = 14606.500
set CityY[428] = 761.000
set CityT[428] = 0
set CityX[429] = 12028.500
set CityY[429] = 767.500
set CityT[429] = 0
set CityX[430] = 11519.500
set CityY[430] = 757.500
set CityT[430] = 0
set CityX[431] = 11005.000
set CityY[431] = 749.750
set CityT[431] = 0
set CityX[432] = 11005.000
set CityY[432] = 269.250
set CityT[432] = 0
set CityX[433] = 11520.250
set CityY[433] = 241.500
set CityT[433] = 0
set CityX[434] = 12026.000
set CityY[434] = 239.500
set CityT[434] = 0
set CityX[435] = 12544.500
set CityY[435] = 230.250
set CityT[435] = 0
set CityX[436] = 13050.500
set CityY[436] = 241.250
set CityT[436] = 0
set CityX[437] = 13570.750
set CityY[437] = 251.000
set CityT[437] = 0
set CityX[438] = 14076.750
set CityY[438] = 255.250
set CityT[438] = 0
set CityX[439] = 15102.750
set CityY[439] = 240.250
set CityT[439] = 0
set CityX[440] = 14594.000
set CityY[440] = -252.500
set CityT[440] = 0
set CityX[441] = 14075.000
set CityY[441] = -260.750
set CityT[441] = 0
set CityX[442] = 13570.750
set CityY[442] = -266.750
set CityT[442] = 0
set CityX[443] = 13051.750
set CityY[443] = -265.000
set CityT[443] = 0
set CityX[444] = 12533.500
set CityY[444] = -252.500
set CityT[444] = 0
set CityX[445] = 12035.500
set CityY[445] = -260.000
set CityT[445] = 0
set CityX[446] = 11526.250
set CityY[446] = -261.750
set CityT[446] = 0
set CityX[447] = 11001.500
set CityY[447] = -261.000
set CityT[447] = 0
set CityX[448] = 10496.750
set CityY[448] = -275.000
set CityT[448] = 0
set CityX[449] = 9999.250
set CityY[449] = -267.750
set CityT[449] = 0
set CityX[450] = 9988.500
set CityY[450] = 239.250
set CityT[450] = 0
set CityX[451] = 9477.250
set CityY[451] = 258.500
set CityT[451] = 0
set CityX[452] = 9468.000
set CityY[452] = -243.250
set CityT[452] = 0
set CityX[453] = 8963.500
set CityY[453] = -252.500
set CityT[453] = 0
set CityX[454] = 8437.000
set CityY[454] = -258.500
set CityT[454] = 0
set CityX[455] = 9982.000
set CityY[455] = -767.000
set CityT[455] = 0
set CityX[456] = 10505.000
set CityY[456] = -772.000
set CityT[456] = 0
set CityX[457] = 11013.500
set CityY[457] = -798.250
set CityT[457] = 0
set CityX[458] = 11527.500
set CityY[458] = -768.000
set CityT[458] = 0
set CityX[459] = 12033.000
set CityY[459] = -760.500
set CityT[459] = 0
set CityX[460] = 12551.500
set CityY[460] = -771.500
set CityT[460] = 0
set CityX[461] = 13060.750
set CityY[461] = -761.750
set CityT[461] = 0
set CityX[462] = 13567.500
set CityY[462] = -764.750
set CityT[462] = 0
set CityX[463] = 15102.250
set CityY[463] = -263.750
set CityT[463] = 0
set CityX[464] = 15098.500
set CityY[464] = -771.000
set CityT[464] = 0
set CityX[465] = 14586.750
set CityY[465] = -789.500
set CityT[465] = 0
set CityX[466] = 14569.000
set CityY[466] = -1286.250
set CityT[466] = 0
set CityX[467] = 15108.500
set CityY[467] = -1274.750
set CityT[467] = 0
set CityX[468] = 14606.000
set CityY[468] = -1794.500
set CityT[468] = 0
set CityX[469] = 13570.750
set CityY[469] = -1289.750
set CityT[469] = 0
set CityX[470] = 13074.000
set CityY[470] = -1292.500
set CityT[470] = 0
set CityX[471] = 12545.500
set CityY[471] = -1289.000
set CityT[471] = 0
set CityX[472] = 12036.000
set CityY[472] = -1287.750
set CityT[472] = 0
set CityX[473] = 11511.250
set CityY[473] = -1280.250
set CityT[473] = 0
set CityX[474] = 11008.750
set CityY[474] = -1296.000
set CityT[474] = 0
set CityX[475] = 8451.500
set CityY[475] = 2798.000
set CityT[475] = 0
set CityX[476] = 8966.250
set CityY[476] = 2805.250
set CityT[476] = 0
set CityX[477] = 8454.250
set CityY[477] = 2293.000
set CityT[477] = 0
set CityX[478] = 8961.750
set CityY[478] = 2298.750
set CityT[478] = 0
set CityX[479] = 8446.000
set CityY[479] = 1791.000
set CityT[479] = 0
set CityX[480] = 9463.750
set CityY[480] = 2284.750
set CityT[480] = 0
set CityX[481] = 9473.000
set CityY[481] = 2800.500
set CityT[481] = 0
set CityX[482] = 7938.250
set CityY[482] = 2307.000
set CityT[482] = 0
set CityX[483] = 7946.500
set CityY[483] = 1768.000
set CityT[483] = 0
set CityX[484] = 7423.750
set CityY[484] = 2304.250
set CityT[484] = 0
set CityX[485] = 7425.500
set CityY[485] = 1798.250
set CityT[485] = 0
set CityX[486] = 6921.000
set CityY[486] = 1780.250
set CityT[486] = 0
set CityX[487] = 7417.500
set CityY[487] = 1269.750
set CityT[487] = 0
set CityX[488] = 6913.500
set CityY[488] = 1278.250
set CityT[488] = 0
set CityX[489] = 6392.500
set CityY[489] = 1790.500
set CityT[489] = 0
set CityX[490] = 6403.000
set CityY[490] = 1274.500
set CityT[490] = 0
set CityX[491] = 5883.750
set CityY[491] = 760.500
set CityT[491] = 0
set CityX[492] = 6404.250
set CityY[492] = 748.500
set CityT[492] = 0
set CityX[493] = 5894.000
set CityY[493] = 247.750
set CityT[493] = 0
set CityX[494] = 6398.750
set CityY[494] = 247.750
set CityT[494] = 0
set CityX[495] = 6912.500
set CityY[495] = 244.750
set CityT[495] = 0
set CityX[496] = 6912.750
set CityY[496] = 784.250
set CityT[496] = 0
set CityX[497] = 7423.000
set CityY[497] = 774.000
set CityT[497] = 0
set CityX[498] = 7431.750
set CityY[498] = 254.000
set CityT[498] = 0
set CityX[499] = 7925.000
set CityY[499] = 248.000
set CityT[499] = 0
set CityX[500] = 6910.000
set CityY[500] = -257.250
set CityT[500] = 0
set CityX[501] = 7416.000
set CityY[501] = -276.500
set CityT[501] = 0
set CityX[502] = 6411.250
set CityY[502] = -263.750
set CityT[502] = 0
set CityX[503] = 5889.750
set CityY[503] = -255.250
set CityT[503] = 0
set CityX[504] = 5890.000
set CityY[504] = -759.250
set CityT[504] = 0
set CityX[505] = 6404.750
set CityY[505] = -771.500
set CityT[505] = 0
set CityX[506] = 6903.250
set CityY[506] = -778.750
set CityT[506] = 0
set CityX[507] = 7428.500
set CityY[507] = -765.750
set CityT[507] = 0
set CityX[508] = 7940.250
set CityY[508] = -775.250
set CityT[508] = 0
set CityX[509] = 7930.250
set CityY[509] = -256.500
set CityT[509] = 0
set CityX[510] = 8447.250
set CityY[510] = -791.000
set CityT[510] = 0
set CityX[511] = 6404.000
set CityY[511] = -1271.750
set CityT[511] = 0
set CityX[512] = 6920.000
set CityY[512] = -1288.250
set CityT[512] = 0
call TriggerSleepAction(0.3)
set CityX[513] = 7427.500
set CityY[513] = -1300.000
set CityT[513] = 0
set CityX[514] = 6399.000
set CityY[514] = -1788.500
set CityT[514] = 0
set CityX[515] = 6913.250
set CityY[515] = -1797.000
set CityT[515] = 0
set CityX[516] = 7416.750
set CityY[516] = -1819.500
set CityT[516] = 0
set CityX[517] = 6914.750
set CityY[517] = -2310.000
set CityT[517] = 0
set CityX[518] = 7432.000
set CityY[518] = -2315.000
set CityT[518] = 0
set CityX[519] = 7428.250
set CityY[519] = -2826.750
set CityT[519] = 0
set CityX[520] = 7940.500
set CityY[520] = -2813.500
set CityT[520] = 0
set CityX[521] = 7928.500
set CityY[521] = -2321.750
set CityT[521] = 0
set CityX[522] = 7932.250
set CityY[522] = -1808.250
set CityT[522] = 0
set CityX[523] = 8437.000
set CityY[523] = -1799.500
set CityT[523] = 0
set CityX[524] = 8459.000
set CityY[524] = -1295.000
set CityT[524] = 0
set CityX[525] = 8953.250
set CityY[525] = -1791.250
set CityT[525] = 0
set CityX[526] = 9475.000
set CityY[526] = -1793.500
set CityT[526] = 0
set CityX[527] = 9990.250
set CityY[527] = -1794.750
set CityT[527] = 0
set CityX[528] = 9995.500
set CityY[528] = -2307.250
set CityT[528] = 0
set CityX[529] = 10499.000
set CityY[529] = -1806.250
set CityT[529] = 0
set CityX[530] = 10503.750
set CityY[530] = -2313.000
set CityT[530] = 0
set CityX[531] = 11006.500
set CityY[531] = -1796.500
set CityT[531] = 0
set CityX[532] = 11019.000
set CityY[532] = -2314.000
set CityT[532] = 0
set CityX[533] = 11008.500
set CityY[533] = -2822.250
set CityT[533] = 0
set CityX[534] = 10497.250
set CityY[534] = -2842.500
set CityT[534] = 0
set CityX[535] = 10506.750
set CityY[535] = -3342.000
set CityT[535] = 0
set CityX[536] = 11018.750
set CityY[536] = -3324.500
set CityT[536] = 0
set CityX[537] = 11530.250
set CityY[537] = -2317.500
set CityT[537] = 0
set CityX[538] = 11524.500
set CityY[538] = -2821.000
set CityT[538] = 0
set CityX[539] = 11519.250
set CityY[539] = -3325.500
set CityT[539] = 0
set CityX[540] = 11533.750
set CityY[540] = -1815.000
set CityT[540] = 0
set CityX[541] = 12046.500
set CityY[541] = -1803.750
set CityT[541] = 0
set CityX[542] = 12553.500
set CityY[542] = -1813.000
set CityT[542] = 0
set CityX[543] = 13064.500
set CityY[543] = -1793.750
set CityT[543] = 0
set CityX[544] = 12549.500
set CityY[544] = -2297.500
set CityT[544] = 0
set CityX[545] = 13047.500
set CityY[545] = -2317.750
set CityT[545] = 0
set CityX[546] = 12026.750
set CityY[546] = -2323.250
set CityT[546] = 0
set CityX[547] = 12027.500
set CityY[547] = -2814.250
set CityT[547] = 0
set CityX[548] = 12541.750
set CityY[548] = -2812.250
set CityT[548] = 0
set CityX[549] = 13060.000
set CityY[549] = -2818.500
set CityT[549] = 0
set CityX[550] = 14086.500
set CityY[550] = -1801.500
set CityT[550] = 0
set CityX[551] = 13563.500
set CityY[551] = -1812.500
set CityT[551] = 0
set CityX[552] = 13565.750
set CityY[552] = -2321.000
set CityT[552] = 0
set CityX[553] = 14057.500
set CityY[553] = -2310.500
set CityT[553] = 0
set CityX[554] = 14593.000
set CityY[554] = -2313.250
set CityT[554] = 0
set CityX[555] = 15115.500
set CityY[555] = -2817.000
set CityT[555] = 0
set CityX[556] = 14073.500
set CityY[556] = -2814.500
set CityT[556] = 0
set CityX[557] = 13576.750
set CityY[557] = -2822.000
set CityT[557] = 0
set CityX[558] = 13063.250
set CityY[558] = -3340.750
set CityT[558] = 0
set CityX[559] = 13581.250
set CityY[559] = -3321.000
set CityT[559] = 0
set CityX[560] = 14073.500
set CityY[560] = -3336.750
set CityT[560] = 0
set CityX[561] = 12024.750
set CityY[561] = -3320.250
set CityT[561] = 0
set CityX[562] = 12529.250
set CityY[562] = -3347.750
set CityT[562] = 0
set CityX[563] = 14595.000
set CityY[563] = -3344.000
set CityT[563] = 0
set CityX[564] = 15104.250
set CityY[564] = -3360.000
set CityT[564] = 0
set CityX[565] = 15109.000
set CityY[565] = -3847.000
set CityT[565] = 0
set CityX[566] = 14581.000
set CityY[566] = -3836.250
set CityT[566] = 0
set CityX[567] = 15112.250
set CityY[567] = -4351.500
set CityT[567] = 0
set CityX[568] = 15106.000
set CityY[568] = -4870.500
set CityT[568] = 0
set CityX[569] = 14073.000
set CityY[569] = -3830.250
set CityT[569] = 0
set CityX[570] = 13552.500
set CityY[570] = -4375.500
set CityT[570] = 0
set CityX[571] = 13565.250
set CityY[571] = -3847.250
set CityT[571] = 0
set CityX[572] = 13059.500
set CityY[572] = -3852.000
set CityT[572] = 0
set CityX[573] = 13048.750
set CityY[573] = -4377.500
set CityT[573] = 0
set CityX[574] = 12536.000
set CityY[574] = -4360.750
set CityT[574] = 0
set CityX[575] = 12030.500
set CityY[575] = -4877.250
set CityT[575] = 0
set CityX[576] = 11514.000
set CityY[576] = -4349.500
set CityT[576] = 0
set CityX[577] = 12035.750
set CityY[577] = -4360.250
set CityT[577] = 0
set CityX[578] = 12026.250
set CityY[578] = -3832.500
set CityT[578] = 0
set CityX[579] = 11518.750
set CityY[579] = -3847.000
set CityT[579] = 0
set CityX[580] = 12547.500
set CityY[580] = -3853.750
set CityT[580] = 0
set CityX[581] = 11008.750
set CityY[581] = -3842.000
set CityT[581] = 0
set CityX[582] = 10489.000
set CityY[582] = -3827.500
set CityT[582] = 0
set CityX[583] = 9996.500
set CityY[583] = -4338.500
set CityT[583] = 0
set CityX[584] = 8955.750
set CityY[584] = -4357.750
set CityT[584] = 0
set CityX[585] = 8964.000
set CityY[585] = -3870.000
set CityT[585] = 0
set CityX[586] = 9477.500
set CityY[586] = -3849.500
set CityT[586] = 0
set CityX[587] = 10005.500
set CityY[587] = -3878.500
set CityT[587] = 0
set CityX[588] = 9472.500
set CityY[588] = -3333.000
set CityT[588] = 0
set CityX[589] = 7934.250
set CityY[589] = -3329.500
set CityT[589] = 0
set CityX[590] = 8461.250
set CityY[590] = -3857.500
set CityT[590] = 0
set CityX[591] = -3324.000
set CityY[591] = 12538.500
set CityT[591] = 0
set CityX[592] = -2808.500
set CityY[592] = 12537.500
set CityT[592] = 0
set CityX[593] = -2301.000
set CityY[593] = 12541.000
set CityT[593] = 0
set CityX[594] = -1787.250
set CityY[594] = 12537.500
set CityT[594] = 0
set CityX[595] = -1277.250
set CityY[595] = 12534.000
set CityT[595] = 0
set CityX[596] = -756.500
set CityY[596] = 12538.500
set CityT[596] = 0
set CityX[597] = -781.250
set CityY[597] = 11510.750
set CityT[597] = 0
set CityX[598] = -1787.500
set CityY[598] = 12024.250
set CityT[598] = 0
set CityX[599] = -2315.750
set CityY[599] = 12013.250
set CityT[599] = 0
set CityX[600] = -2811.500
set CityY[600] = 12035.750
set CityT[600] = 0
set CityX[601] = -3309.500
set CityY[601] = 12023.250
set CityT[601] = 0
set CityX[602] = -3840.000
set CityY[602] = 12008.500
set CityT[602] = 0
set CityX[603] = -2824.500
set CityY[603] = 11505.500
set CityT[603] = 0
set CityX[604] = -3331.750
set CityY[604] = 11008.500
set CityT[604] = 0
set CityX[605] = -3850.500
set CityY[605] = 11009.250
set CityT[605] = 0
set CityX[606] = -4351.000
set CityY[606] = 11525.250
set CityT[606] = 0
set CityX[607] = -4846.500
set CityY[607] = 10970.750
set CityT[607] = 0
set CityX[608] = -5376.500
set CityY[608] = 11511.750
set CityT[608] = 0
set CityX[609] = -5884.000
set CityY[609] = 11511.750
set CityT[609] = 0
set CityX[610] = -5880.000
set CityY[610] = 12024.500
set CityT[610] = 0
set CityX[611] = -6400.250
set CityY[611] = 11526.500
set CityT[611] = 0
set CityX[612] = -6395.000
set CityY[612] = 12014.000
set CityT[612] = 0
set CityX[613] = -6918.000
set CityY[613] = 11516.500
set CityT[613] = 0
set CityX[614] = -6910.750
set CityY[614] = 12007.250
set CityT[614] = 0
set CityX[615] = -3337.750
set CityY[615] = 10484.000
set CityT[615] = 0
set CityX[616] = 1293.500
set CityY[616] = 11516.000
set CityT[616] = 0
set CityX[617] = 1285.500
set CityY[617] = 10500.500
set CityT[617] = 0
set CityX[618] = -2295.250
set CityY[618] = 9989.750
set CityT[618] = 0
set CityX[619] = -2306.250
set CityY[619] = 9479.750
set CityT[619] = 0
set CityX[620] = -1777.250
set CityY[620] = 10498.750
set CityT[620] = 0
set CityX[621] = -1790.500
set CityY[621] = 9974.500
set CityT[621] = 0
set CityX[622] = -1789.750
set CityY[622] = 9490.000
set CityT[622] = 0
set CityX[623] = -1274.750
set CityY[623] = 9997.750
set CityT[623] = 0
set CityX[624] = -1272.250
set CityY[624] = 9473.000
set CityT[624] = 0
set CityX[625] = -775.500
set CityY[625] = 9995.750
set CityT[625] = 0
set CityX[626] = -762.000
set CityY[626] = 9460.500
set CityT[626] = 0
set CityX[627] = -264.250
set CityY[627] = 9463.750
set CityT[627] = 0
set CityX[628] = -261.500
set CityY[628] = 9982.500
set CityT[628] = 0
set CityX[629] = -12038.500
set CityY[629] = 12008.000
set CityT[629] = 0
set CityX[630] = -11519.500
set CityY[630] = 11998.250
set CityT[630] = 0
set CityX[631] = -11013.250
set CityY[631] = 12019.500
set CityT[631] = 0
set CityX[632] = -10499.250
set CityY[632] = 12015.500
set CityT[632] = 0
set CityX[633] = -9976.000
set CityY[633] = 12009.000
set CityT[633] = 0
set CityX[634] = -10501.250
set CityY[634] = 11519.500
set CityT[634] = 0
set CityX[635] = -10994.000
set CityY[635] = 11519.750
set CityT[635] = 0
set CityX[636] = -11517.750
set CityY[636] = 11526.000
set CityT[636] = 0
set CityX[637] = -9973.750
set CityY[637] = 11002.750
set CityT[637] = 0
set CityX[638] = -9462.000
set CityY[638] = 10487.500
set CityT[638] = 0
set CityX[639] = -8960.000
set CityY[639] = 9974.000
set CityT[639] = 0
set CityX[640] = -8444.750
set CityY[640] = 9990.500
set CityT[640] = 0
call TriggerSleepAction(0.3)
set CityX[641] = -7943.500
set CityY[641] = 10476.500
set CityT[641] = 0
set CityX[642] = -7935.250
set CityY[642] = 9969.250
set CityT[642] = 0
set CityX[643] = -8453.000
set CityY[643] = 9459.500
set CityT[643] = 0
set CityX[644] = -7926.750
set CityY[644] = 9457.000
set CityT[644] = 0
set CityX[645] = -7426.000
set CityY[645] = 10504.500
set CityT[645] = 0
set CityX[646] = -7422.000
set CityY[646] = 9979.000
set CityT[646] = 0
set CityX[647] = -7422.750
set CityY[647] = 9467.250
set CityT[647] = 0
set CityX[648] = -6910.500
set CityY[648] = 9463.500
set CityT[648] = 0
set CityX[649] = -6911.250
set CityY[649] = 9976.250
set CityT[649] = 0
set CityX[650] = -6902.000
set CityY[650] = 10489.000
set CityT[650] = 0
set CityX[651] = -6406.000
set CityY[651] = 9984.750
set CityT[651] = 0
set CityX[652] = -6393.000
set CityY[652] = 9467.500
set CityT[652] = 0
set CityX[653] = -5896.000
set CityY[653] = 9444.000
set CityT[653] = 0
set CityX[654] = -5880.250
set CityY[654] = 9965.250
set CityT[654] = 0
set CityX[655] = -5364.000
set CityY[655] = 9958.750
set CityT[655] = 0
set CityX[656] = -5373.000
set CityY[656] = 9476.000
set CityT[656] = 0
set CityX[657] = -4874.500
set CityY[657] = 9452.500
set CityT[657] = 0
set CityX[658] = -4871.500
set CityY[658] = 9974.000
set CityT[658] = 0
set CityX[659] = -4350.250
set CityY[659] = 9958.000
set CityT[659] = 0
set CityX[660] = -4341.250
set CityY[660] = 9459.750
set CityT[660] = 0
set CityX[661] = -3847.000
set CityY[661] = 9454.750
set CityT[661] = 0
set CityX[662] = -3839.750
set CityY[662] = 8958.750
set CityT[662] = 0
set CityX[663] = -4337.500
set CityY[663] = 8949.500
set CityT[663] = 0
set CityX[664] = -4858.750
set CityY[664] = 8959.250
set CityT[664] = 0
set CityX[665] = -5376.000
set CityY[665] = 8962.250
set CityT[665] = 0
set CityX[666] = -5876.000
set CityY[666] = 8965.000
set CityT[666] = 0
set CityX[667] = -6393.500
set CityY[667] = 8957.000
set CityT[667] = 0
set CityX[668] = -6892.750
set CityY[668] = 8965.000
set CityT[668] = 0
set CityX[669] = -7419.250
set CityY[669] = 8950.000
set CityT[669] = 0
set CityX[670] = -7937.500
set CityY[670] = 8963.000
set CityT[670] = 0
set CityX[671] = -8446.000
set CityY[671] = 8960.500
set CityT[671] = 0
set CityX[672] = -8475.250
set CityY[672] = 8448.500
set CityT[672] = 0
set CityX[673] = -7938.500
set CityY[673] = 8437.000
set CityT[673] = 0
set CityX[674] = -7414.250
set CityY[674] = 8437.000
set CityT[674] = 0
set CityX[675] = -6885.750
set CityY[675] = 8432.500
set CityT[675] = 0
set CityX[676] = -6380.000
set CityY[676] = 8441.000
set CityT[676] = 0
set CityX[677] = -5872.750
set CityY[677] = 8437.500
set CityT[677] = 0
set CityX[678] = -5373.750
set CityY[678] = 8434.250
set CityT[678] = 0
set CityX[679] = -4868.000
set CityY[679] = 8433.000
set CityT[679] = 0
set CityX[680] = -4335.000
set CityY[680] = 8424.500
set CityT[680] = 0
set CityX[681] = -3848.500
set CityY[681] = 8431.750
set CityT[681] = 0
set CityX[682] = -3315.750
set CityY[682] = 8428.250
set CityT[682] = 0
set CityX[683] = -2815.500
set CityY[683] = 8435.250
set CityT[683] = 0
set CityX[684] = -2302.500
set CityY[684] = 8423.000
set CityT[684] = 0
set CityX[685] = -1797.500
set CityY[685] = 8428.000
set CityT[685] = 0
set CityX[686] = -1278.500
set CityY[686] = 8437.000
set CityT[686] = 0
set CityX[687] = -764.250
set CityY[687] = 7926.500
set CityT[687] = 0
set CityX[688] = -1285.000
set CityY[688] = 7941.500
set CityT[688] = 0
set CityX[689] = -256.000
set CityY[689] = 7931.000
set CityT[689] = 0
set CityX[690] = 254.750
set CityY[690] = 8421.000
set CityT[690] = 0
set CityX[691] = 255.750
set CityY[691] = 7918.750
set CityT[691] = 0
set CityX[692] = 763.250
set CityY[692] = 7929.250
set CityT[692] = 0
set CityX[693] = 771.000
set CityY[693] = 8431.000
set CityT[693] = 0
set CityX[694] = 783.000
set CityY[694] = 8938.500
set CityT[694] = 0
set CityX[695] = 1302.250
set CityY[695] = 8953.000
set CityT[695] = 0
set CityX[696] = 1793.250
set CityY[696] = 8937.750
set CityT[696] = 0
set CityX[697] = 1277.250
set CityY[697] = 8438.250
set CityT[697] = 0
set CityX[698] = 1791.250
set CityY[698] = 8442.000
set CityT[698] = 0
set CityX[699] = 2827.500
set CityY[699] = 8413.750
set CityT[699] = 0
set CityX[700] = 3329.500
set CityY[700] = 7924.250
set CityT[700] = 0
set CityX[701] = 2802.000
set CityY[701] = 7934.500
set CityT[701] = 0
set CityX[702] = 2290.500
set CityY[702] = 7922.000
set CityT[702] = 0
set CityX[703] = 1792.250
set CityY[703] = 7915.000
set CityT[703] = 0
set CityX[704] = 1280.500
set CityY[704] = 7924.750
set CityT[704] = 0
set CityX[705] = 3845.000
set CityY[705] = 7918.000
set CityT[705] = 0
set CityX[706] = 3839.000
set CityY[706] = 7419.500
set CityT[706] = 0
set CityX[707] = 4346.250
set CityY[707] = 7399.500
set CityT[707] = 0
set CityX[708] = 4355.500
set CityY[708] = 6893.750
set CityT[708] = 0
set CityX[709] = 4348.000
set CityY[709] = 6400.000
set CityT[709] = 0
set CityX[710] = 2815.500
set CityY[710] = 7395.750
set CityT[710] = 0
set CityX[711] = 2308.500
set CityY[711] = 7415.750
set CityT[711] = 0
set CityX[712] = 1795.500
set CityY[712] = 7421.000
set CityT[712] = 0
set CityX[713] = 1283.250
set CityY[713] = 7406.250
set CityT[713] = 0
set CityX[714] = 784.750
set CityY[714] = 7419.000
set CityT[714] = 0
set CityX[715] = 263.250
set CityY[715] = 7417.000
set CityT[715] = 0
set CityX[716] = -242.250
set CityY[716] = 7416.250
set CityT[716] = 0
set CityX[717] = -762.500
set CityY[717] = 7387.000
set CityT[717] = 0
set CityX[718] = -1265.750
set CityY[718] = 7406.750
set CityT[718] = 0
set CityX[719] = -1798.500
set CityY[719] = 7415.250
set CityT[719] = 0
set CityX[720] = -1794.500
set CityY[720] = 7925.750
set CityT[720] = 0
set CityX[721] = -2294.000
set CityY[721] = 7917.250
set CityT[721] = 0
set CityX[722] = -2297.250
set CityY[722] = 7411.000
set CityT[722] = 0
set CityX[723] = -2813.500
set CityY[723] = 7940.000
set CityT[723] = 0
set CityX[724] = -2817.500
set CityY[724] = 7399.750
set CityT[724] = 0
set CityX[725] = -3331.500
set CityY[725] = 7427.750
set CityT[725] = 0
set CityX[726] = -3325.250
set CityY[726] = 7919.750
set CityT[726] = 0
set CityX[727] = -3837.750
set CityY[727] = 7924.500
set CityT[727] = 0
set CityX[728] = -3846.250
set CityY[728] = 7425.500
set CityT[728] = 0
set CityX[729] = -4348.500
set CityY[729] = 7921.000
set CityT[729] = 0
set CityX[730] = -4349.500
set CityY[730] = 7426.500
set CityT[730] = 0
set CityX[731] = -4867.250
set CityY[731] = 7427.500
set CityT[731] = 0
set CityX[732] = -4851.750
set CityY[732] = 7928.250
set CityT[732] = 0
set CityX[733] = -5360.000
set CityY[733] = 7940.750
set CityT[733] = 0
set CityX[734] = -5366.500
set CityY[734] = 7434.750
set CityT[734] = 0
set CityX[735] = -5891.250
set CityY[735] = 7944.000
set CityT[735] = 0
set CityX[736] = -5881.000
set CityY[736] = 7427.750
set CityT[736] = 0
set CityX[737] = -6403.500
set CityY[737] = 7420.500
set CityT[737] = 0
set CityX[738] = -6403.250
set CityY[738] = 7933.500
set CityT[738] = 0
set CityX[739] = -6909.000
set CityY[739] = 7941.000
set CityT[739] = 0
set CityX[740] = -6911.250
set CityY[740] = 7445.750
set CityT[740] = 0
set CityX[741] = -7945.750
set CityY[741] = 7944.250
set CityT[741] = 0
set CityX[742] = -7416.750
set CityY[742] = 7920.500
set CityT[742] = 0
set CityX[743] = -7422.000
set CityY[743] = 7417.500
set CityT[743] = 0
set CityX[744] = -7942.500
set CityY[744] = 7413.000
set CityT[744] = 0
set CityX[745] = -7918.250
set CityY[745] = 6892.500
set CityT[745] = 0
set CityX[746] = -7439.000
set CityY[746] = 6920.500
set CityT[746] = 0
set CityX[747] = -6908.500
set CityY[747] = 6910.750
set CityT[747] = 0
set CityX[748] = -6409.000
set CityY[748] = 6903.000
set CityT[748] = 0
set CityX[749] = -5888.000
set CityY[749] = 6911.500
set CityT[749] = 0
set CityX[750] = -5372.250
set CityY[750] = 6905.750
set CityT[750] = 0
set CityX[751] = -4873.000
set CityY[751] = 6893.750
set CityT[751] = 0
set CityX[752] = -4350.750
set CityY[752] = 6913.500
set CityT[752] = 0
set CityX[753] = -3835.500
set CityY[753] = 6909.000
set CityT[753] = 0
set CityX[754] = -3330.500
set CityY[754] = 6900.500
set CityT[754] = 0
set CityX[755] = -2814.500
set CityY[755] = 6929.750
set CityT[755] = 0
set CityX[756] = -2307.500
set CityY[756] = 6895.500
set CityT[756] = 0
set CityX[757] = -1795.500
set CityY[757] = 6911.250
set CityT[757] = 0
set CityX[758] = -1270.000
set CityY[758] = 6899.750
set CityT[758] = 0
set CityX[759] = -759.500
set CityY[759] = 6912.500
set CityT[759] = 0
set CityX[760] = -255.500
set CityY[760] = 6911.500
set CityT[760] = 0
set CityX[761] = 264.250
set CityY[761] = 6908.750
set CityT[761] = 0
set CityX[762] = 759.750
set CityY[762] = 6913.500
set CityT[762] = 0
set CityX[763] = 1287.750
set CityY[763] = 6899.500
set CityT[763] = 0
set CityX[764] = 1785.250
set CityY[764] = 6910.500
set CityT[764] = 0
set CityX[765] = 2305.500
set CityY[765] = 6920.250
set CityT[765] = 0
set CityX[766] = 1804.000
set CityY[766] = 6398.250
set CityT[766] = 0
set CityX[767] = 1280.500
set CityY[767] = 6373.500
set CityT[767] = 0
set CityX[768] = 769.250
set CityY[768] = 6386.500
set CityT[768] = 0
call TriggerSleepAction(0.3)
set CityX[769] = 255.250
set CityY[769] = 6378.000
set CityT[769] = 0
set CityX[770] = -252.750
set CityY[770] = 6397.000
set CityT[770] = 0
set CityX[771] = -748.250
set CityY[771] = 6391.250
set CityT[771] = 0
set CityX[772] = -1797.500
set CityY[772] = 6384.000
set CityT[772] = 0
set CityX[773] = -2309.000
set CityY[773] = 6402.750
set CityT[773] = 0
set CityX[774] = -1275.500
set CityY[774] = 5872.750
set CityT[774] = 0
set CityX[775] = -2818.750
set CityY[775] = 6388.750
set CityT[775] = 0
set CityX[776] = -3316.500
set CityY[776] = 6398.000
set CityT[776] = 0
set CityX[777] = -3816.750
set CityY[777] = 6394.000
set CityT[777] = 0
set CityX[778] = -4349.000
set CityY[778] = 6406.750
set CityT[778] = 0
set CityX[779] = -4868.250
set CityY[779] = 6404.500
set CityT[779] = 0
set CityX[780] = -5371.750
set CityY[780] = 6393.250
set CityT[780] = 0
set CityX[781] = -5880.500
set CityY[781] = 6412.500
set CityT[781] = 0
set CityX[782] = -7424.250
set CityY[782] = 6406.000
set CityT[782] = 0
set CityX[783] = -6914.500
set CityY[783] = 6393.750
set CityT[783] = 0
set CityX[784] = -7931.250
set CityY[784] = 6416.500
set CityT[784] = 0
set CityX[785] = -7934.500
set CityY[785] = 5883.750
set CityT[785] = 0
set CityX[786] = -7422.000
set CityY[786] = 5880.000
set CityT[786] = 0
set CityX[787] = -7421.250
set CityY[787] = 5346.250
set CityT[787] = 0
set CityX[788] = -6914.250
set CityY[788] = 5878.250
set CityT[788] = 0
set CityX[789] = -6409.250
set CityY[789] = 5877.250
set CityT[789] = 0
set CityX[790] = -6375.250
set CityY[790] = 5360.250
set CityT[790] = 0
set CityX[791] = -5875.500
set CityY[791] = 5864.500
set CityT[791] = 0
set CityX[792] = -4869.000
set CityY[792] = 5867.750
set CityT[792] = 0
set CityX[793] = -4353.500
set CityY[793] = 5891.500
set CityT[793] = 0
set CityX[794] = -4872.750
set CityY[794] = 5377.500
set CityT[794] = 0
set CityX[795] = -4341.750
set CityY[795] = 5367.250
set CityT[795] = 0
set CityX[796] = -3842.250
set CityY[796] = 5375.500
set CityT[796] = 0
set CityX[797] = -3319.750
set CityY[797] = 5372.250
set CityT[797] = 0
set CityX[798] = -2813.750
set CityY[798] = 5880.750
set CityT[798] = 0
set CityX[799] = -2304.250
set CityY[799] = 5883.500
set CityT[799] = 0
set CityX[800] = -2823.250
set CityY[800] = 5370.750
set CityT[800] = 0
set CityX[801] = -2306.000
set CityY[801] = 5356.000
set CityT[801] = 0
set CityX[802] = -1766.250
set CityY[802] = 5363.500
set CityT[802] = 0
set CityX[803] = -1263.250
set CityY[803] = 5357.000
set CityT[803] = 0
set CityX[804] = -772.500
set CityY[804] = 5378.000
set CityT[804] = 0
set CityX[805] = -261.250
set CityY[805] = 5372.250
set CityT[805] = 0
set CityX[806] = -251.500
set CityY[806] = 5895.750
set CityT[806] = 0
set CityX[807] = 256.500
set CityY[807] = 5889.250
set CityT[807] = 0
set CityX[808] = 261.750
set CityY[808] = 5377.250
set CityT[808] = 0
set CityX[809] = 772.250
set CityY[809] = 5371.250
set CityT[809] = 0
set CityX[810] = 753.500
set CityY[810] = 5869.000
set CityT[810] = 0
set CityX[811] = 1283.750
set CityY[811] = 5881.250
set CityT[811] = 0
set CityX[812] = 246.250
set CityY[812] = 4857.750
set CityT[812] = 0
set CityX[813] = 766.000
set CityY[813] = 4838.500
set CityT[813] = 0
set CityX[814] = -247.000
set CityY[814] = 4853.500
set CityT[814] = 0
set CityX[815] = -769.000
set CityY[815] = 4864.250
set CityT[815] = 0
set CityX[816] = -1281.000
set CityY[816] = 4883.000
set CityT[816] = 0
set CityX[817] = -1790.750
set CityY[817] = 4867.750
set CityT[817] = 0
set CityX[818] = -2301.750
set CityY[818] = 4874.000
set CityT[818] = 0
set CityX[819] = -2808.000
set CityY[819] = 4855.250
set CityT[819] = 0
set CityX[820] = -3335.000
set CityY[820] = 4861.500
set CityT[820] = 0
set CityX[821] = -3838.500
set CityY[821] = 4866.500
set CityT[821] = 0
set CityX[822] = -4333.500
set CityY[822] = 4861.750
set CityT[822] = 0
set CityX[823] = -4853.250
set CityY[823] = 4863.000
set CityT[823] = 0
set CityX[824] = -5892.250
set CityY[824] = 4866.000
set CityT[824] = 0
set CityX[825] = -6393.000
set CityY[825] = 4855.250
set CityT[825] = 0
set CityX[826] = -6914.500
set CityY[826] = 4865.750
set CityT[826] = 0
set CityX[827] = -7412.000
set CityY[827] = 4851.500
set CityT[827] = 0
set CityX[828] = -6922.000
set CityY[828] = 4341.500
set CityT[828] = 0
set CityX[829] = -6392.000
set CityY[829] = 4353.000
set CityT[829] = 0
set CityX[830] = -5884.000
set CityY[830] = 4353.500
set CityT[830] = 0
set CityX[831] = -7421.500
set CityY[831] = 4366.500
set CityT[831] = 0
set CityX[832] = -7930.000
set CityY[832] = 3838.500
set CityT[832] = 0
set CityX[833] = -7435.000
set CityY[833] = 3826.250
set CityT[833] = 0
set CityX[834] = -6908.750
set CityY[834] = 3845.000
set CityT[834] = 0
set CityX[835] = -6409.750
set CityY[835] = 3844.250
set CityT[835] = 0
set CityX[836] = -7422.000
set CityY[836] = 3328.500
set CityT[836] = 0
set CityX[837] = -5377.500
set CityY[837] = 3837.750
set CityT[837] = 0
set CityX[838] = -5377.500
set CityY[838] = 4339.000
set CityT[838] = 0
set CityX[839] = -4872.750
set CityY[839] = 4359.500
set CityT[839] = 0
set CityX[840] = -4858.000
set CityY[840] = 3326.000
set CityT[840] = 0
set CityX[841] = -4870.250
set CityY[841] = 2805.000
set CityT[841] = 0
set CityX[842] = -4363.000
set CityY[842] = 2820.750
set CityT[842] = 0
set CityX[843] = -4856.000
set CityY[843] = 2288.000
set CityT[843] = 0
set CityX[844] = -4358.000
set CityY[844] = 2296.750
set CityT[844] = 0
set CityX[845] = -4343.250
set CityY[845] = 1786.500
set CityT[845] = 0
set CityX[846] = -3830.250
set CityY[846] = 1782.500
set CityT[846] = 0
set CityX[847] = -3844.750
set CityY[847] = 2297.250
set CityT[847] = 0
set CityX[848] = -4341.500
set CityY[848] = 1266.000
set CityT[848] = 0
set CityX[849] = -3835.000
set CityY[849] = 1264.250
set CityT[849] = 0
set CityX[850] = -4358.250
set CityY[850] = 767.750
set CityT[850] = 0
set CityX[851] = -3844.500
set CityY[851] = 759.000
set CityT[851] = 0
set CityX[852] = -3835.500
set CityY[852] = 232.250
set CityT[852] = 0
set CityX[853] = -3335.750
set CityY[853] = 244.250
set CityT[853] = 0
set CityX[854] = -3834.750
set CityY[854] = -268.500
set CityT[854] = 0
set CityX[855] = -2824.000
set CityY[855] = -249.250
set CityT[855] = 0
set CityX[856] = -2290.500
set CityY[856] = -264.000
set CityT[856] = 0
set CityX[857] = -2301.500
set CityY[857] = -777.750
set CityT[857] = 0
set CityX[858] = -4343.500
set CityY[858] = 4354.500
set CityT[858] = 0
set CityX[859] = -4348.750
set CityY[859] = 3840.250
set CityT[859] = 0
set CityX[860] = -3836.000
set CityY[860] = 4363.750
set CityT[860] = 0
set CityX[861] = -3842.000
set CityY[861] = 3816.250
set CityT[861] = 0
set CityX[862] = -3833.000
set CityY[862] = 3332.750
set CityT[862] = 0
set CityX[863] = -3329.750
set CityY[863] = 4350.000
set CityT[863] = 0
set CityX[864] = -3325.750
set CityY[864] = 3829.750
set CityT[864] = 0
set CityX[865] = -3323.500
set CityY[865] = 3317.500
set CityT[865] = 0
set CityX[866] = -2810.500
set CityY[866] = 4346.500
set CityT[866] = 0
set CityX[867] = -2806.500
set CityY[867] = 3835.000
set CityT[867] = 0
set CityX[868] = -2815.500
set CityY[868] = 3325.250
set CityT[868] = 0
set CityX[869] = -2295.250
set CityY[869] = 4350.500
set CityT[869] = 0
set CityX[870] = -2303.250
set CityY[870] = 3846.500
set CityT[870] = 0
set CityX[871] = -2305.000
set CityY[871] = 3329.250
set CityT[871] = 0
set CityX[872] = -1787.500
set CityY[872] = 4355.000
set CityT[872] = 0
set CityX[873] = -1796.500
set CityY[873] = 3841.000
set CityT[873] = 0
set CityX[874] = -1785.500
set CityY[874] = 3322.500
set CityT[874] = 0
set CityX[875] = -2296.000
set CityY[875] = 2811.500
set CityT[875] = 0
set CityX[876] = -1778.500
set CityY[876] = 2812.250
set CityT[876] = 0
set CityX[877] = -1265.500
set CityY[877] = 2805.250
set CityT[877] = 0
set CityX[878] = -1279.500
set CityY[878] = 3329.250
set CityT[878] = 0
set CityX[879] = -1278.500
set CityY[879] = 4359.500
set CityT[879] = 0
set CityX[880] = -1282.250
set CityY[880] = 3839.500
set CityT[880] = 0
set CityX[881] = -760.500
set CityY[881] = 3835.000
set CityT[881] = 0
set CityX[882] = -771.750
set CityY[882] = 4344.750
set CityT[882] = 0
set CityX[883] = -262.250
set CityY[883] = 4354.000
set CityT[883] = 0
set CityX[884] = -772.250
set CityY[884] = 2820.500
set CityT[884] = 0
set CityX[885] = -773.000
set CityY[885] = 3333.250
set CityT[885] = 0
set CityX[886] = -255.500
set CityY[886] = 3327.750
set CityT[886] = 0
set CityX[887] = -265.000
set CityY[887] = 3824.250
set CityT[887] = 0
set CityX[888] = -251.250
set CityY[888] = 2807.500
set CityT[888] = 0
set CityX[889] = 257.000
set CityY[889] = 2828.000
set CityT[889] = 0
set CityX[890] = 255.000
set CityY[890] = 3327.000
set CityT[890] = 0
set CityX[891] = 254.750
set CityY[891] = 3837.750
set CityT[891] = 0
set CityX[892] = 253.000
set CityY[892] = 4346.000
set CityT[892] = 0
set CityX[893] = 767.500
set CityY[893] = 2810.250
set CityT[893] = 0
set CityX[894] = 769.250
set CityY[894] = 3301.750
set CityT[894] = 0
set CityX[895] = 770.000
set CityY[895] = 3830.500
set CityT[895] = 0
set CityX[896] = 772.000
set CityY[896] = 4348.750
set CityT[896] = 0
set CityX[897] = 1272.000
set CityY[897] = 4345.000
set CityT[897] = 0
set CityX[898] = 1283.000
set CityY[898] = 3826.500
set CityT[898] = 0
set CityX[899] = 1782.250
set CityY[899] = 4340.000
set CityT[899] = 0
set CityX[900] = 1796.750
set CityY[900] = 3839.750
set CityT[900] = 0
set CityX[901] = 2306.500
set CityY[901] = 3861.000
set CityT[901] = 0
set CityX[902] = 2304.500
set CityY[902] = 3318.500
set CityT[902] = 0
set CityX[903] = 1788.250
set CityY[903] = 3322.750
set CityT[903] = 0
set CityX[904] = 1275.000
set CityY[904] = 3321.000
set CityT[904] = 0
set CityX[905] = 1287.000
set CityY[905] = 2822.250
set CityT[905] = 0
set CityX[906] = 1798.500
set CityY[906] = 2820.500
set CityT[906] = 0
set CityX[907] = 2315.000
set CityY[907] = 2818.000
set CityT[907] = 0
set CityX[908] = 2812.750
set CityY[908] = 2820.000
set CityT[908] = 0
set CityX[909] = 3321.000
set CityY[909] = 2821.000
set CityT[909] = 0
set CityX[910] = 2819.500
set CityY[910] = 2302.750
set CityT[910] = 0
set CityX[911] = 3329.500
set CityY[911] = 2305.250
set CityT[911] = 0
set CityX[912] = 2302.250
set CityY[912] = 2294.750
set CityT[912] = 0
set CityX[913] = 1818.000
set CityY[913] = 2293.500
set CityT[913] = 0
set CityX[914] = 769.250
set CityY[914] = 2285.500
set CityT[914] = 0
set CityX[915] = 278.000
set CityY[915] = 2294.000
set CityT[915] = 0
set CityX[916] = -258.250
set CityY[916] = 2301.750
set CityT[916] = 0
set CityX[917] = -749.500
set CityY[917] = 2299.250
set CityT[917] = 0
set CityX[918] = -777.500
set CityY[918] = 1799.500
set CityT[918] = 0
set CityX[919] = -256.250
set CityY[919] = 1791.000
set CityT[919] = 0
set CityX[920] = 251.000
set CityY[920] = 1779.000
set CityT[920] = 0
set CityX[921] = 759.000
set CityY[921] = 1783.000
set CityT[921] = 0
set CityX[922] = 1284.250
set CityY[922] = 1264.750
set CityT[922] = 0
set CityX[923] = 769.000
set CityY[923] = 1262.500
set CityT[923] = 0
set CityX[924] = 265.250
set CityY[924] = 1277.000
set CityT[924] = 0
set CityX[925] = 260.000
set CityY[925] = 762.500
set CityT[925] = 0
set CityX[926] = 761.500
set CityY[926] = 759.000
set CityT[926] = 0
set CityX[927] = 1284.000
set CityY[927] = 754.500
set CityT[927] = 0
set CityX[928] = 1794.000
set CityY[928] = 780.500
set CityT[928] = 0
set CityX[929] = 2310.000
set CityY[929] = 755.500
set CityT[929] = 0
set CityX[930] = 3324.500
set CityY[930] = 6387.250
set CityT[930] = 0
set CityX[931] = 3324.500
set CityY[931] = 5891.750
set CityT[931] = 0
set CityX[932] = 2827.500
set CityY[932] = 5873.250
set CityT[932] = 0
set CityX[933] = 2826.500
set CityY[933] = 5384.500
set CityT[933] = 0
set CityX[934] = 3325.750
set CityY[934] = 5371.500
set CityT[934] = 0
set CityX[935] = 3850.000
set CityY[935] = 5376.500
set CityT[935] = 0
set CityX[936] = 4351.250
set CityY[936] = 5368.250
set CityT[936] = 0
set CityX[937] = 2823.500
set CityY[937] = 4841.000
set CityT[937] = 0
set CityX[938] = 3326.250
set CityY[938] = 4850.500
set CityT[938] = 0
set CityX[939] = 3847.000
set CityY[939] = 4852.500
set CityT[939] = 0
set CityX[940] = 4362.250
set CityY[940] = 4859.750
set CityT[940] = 0
set CityX[941] = 3335.750
set CityY[941] = 4344.750
set CityT[941] = 0
set CityX[942] = 3842.500
set CityY[942] = 4359.000
set CityT[942] = 0
set CityX[943] = 3335.250
set CityY[943] = 3839.000
set CityT[943] = 0
set CityX[944] = 3846.500
set CityY[944] = 3830.500
set CityT[944] = 0
set CityX[945] = 4357.250
set CityY[945] = 4346.500
set CityT[945] = 0
set CityX[946] = 4357.500
set CityY[946] = 3834.500
set CityT[946] = 0
set CityX[947] = 4856.250
set CityY[947] = 3823.000
set CityT[947] = 0
set CityX[948] = 4868.000
set CityY[948] = 4349.000
set CityT[948] = 0
set CityX[949] = 5376.500
set CityY[949] = 3832.750
set CityT[949] = 0
set CityX[950] = 5370.000
set CityY[950] = 4343.750
set CityT[950] = 0
set CityX[951] = 4865.750
set CityY[951] = 3343.000
set CityT[951] = 0
set CityX[952] = 5901.000
set CityY[952] = 5882.750
set CityT[952] = 0
set CityX[953] = 6391.000
set CityY[953] = 6380.500
set CityT[953] = 0
set CityX[954] = 6392.750
set CityY[954] = 5882.500
set CityT[954] = 0
set CityX[955] = 6905.250
set CityY[955] = 5371.500
set CityT[955] = 0
set CityX[956] = 6397.750
set CityY[956] = 5359.500
set CityT[956] = 0
set CityX[957] = 5884.000
set CityY[957] = 5368.500
set CityT[957] = 0
set CityX[958] = 5898.500
set CityY[958] = 4856.750
set CityT[958] = 0
set CityX[959] = 6394.750
set CityY[959] = 4840.250
set CityT[959] = 0
set CityX[960] = 6913.500
set CityY[960] = 4863.500
set CityT[960] = 0
set CityX[961] = 7423.250
set CityY[961] = 4841.500
set CityT[961] = 0
set CityX[962] = 6900.750
set CityY[962] = 5875.500
set CityT[962] = 0
set CityX[963] = 6392.500
set CityY[963] = 7915.000
set CityT[963] = 0
set CityX[964] = 6398.750
set CityY[964] = 7411.000
set CityT[964] = 0
set CityX[965] = -764.500
set CityY[965] = 1280.000
set CityT[965] = 0
set CityX[966] = -256.750
set CityY[966] = 1283.750
set CityT[966] = 0
set CityX[967] = -256.000
set CityY[967] = 777.750
set CityT[967] = 0
set CityX[968] = 260.000
set CityY[968] = 262.000
set CityT[968] = 0
set CityX[969] = 761.250
set CityY[969] = 258.500
set CityT[969] = 0
set CityX[970] = 1284.000
set CityY[970] = 254.000
set CityT[970] = 0
set CityX[971] = 1793.750
set CityY[971] = 280.000
set CityT[971] = 0
set CityX[972] = 2309.750
set CityY[972] = 255.000
set CityT[972] = 0
set CityX[973] = -256.000
set CityY[973] = 277.250
set CityT[973] = 0
set CityX[974] = 263.000
set CityY[974] = -257.250
set CityT[974] = 0
set CityX[975] = 764.250
set CityY[975] = -261.000
set CityT[975] = 0
set CityX[976] = 1287.000
set CityY[976] = -265.500
set CityT[976] = 0
set CityX[977] = 1796.750
set CityY[977] = -239.250
set CityT[977] = 0
set CityX[978] = 2312.750
set CityY[978] = -264.500
set CityT[978] = 0
set CityX[979] = -253.250
set CityY[979] = -242.000
set CityT[979] = 0
set CityX[980] = 261.000
set CityY[980] = -765.750
set CityT[980] = 0
set CityX[981] = 762.250
set CityY[981] = -769.250
set CityT[981] = 0
set CityX[982] = 1285.000
set CityY[982] = -774.000
set CityT[982] = 0
set CityX[983] = 1794.750
set CityY[983] = -747.500
set CityT[983] = 0
set CityX[984] = 2310.750
set CityY[984] = -772.750
set CityT[984] = 0
set CityX[985] = -255.250
set CityY[985] = -750.500
set CityT[985] = 0
set CityX[986] = 259.750
set CityY[986] = -1281.250
set CityT[986] = 0
set CityX[987] = 761.000
set CityY[987] = -1284.750
set CityT[987] = 0
set CityX[988] = 1283.750
set CityY[988] = -1289.250
set CityT[988] = 0
set CityX[989] = 1793.500
set CityY[989] = -1263.000
set CityT[989] = 0
set CityX[990] = 2309.500
set CityY[990] = -1288.250
set CityT[990] = 0
set CityX[991] = -256.500
set CityY[991] = -1266.000
set CityT[991] = 0
set CityX[992] = 256.000
set CityY[992] = -1786.000
set CityT[992] = 0
set CityX[993] = 757.250
set CityY[993] = -1789.500
set CityT[993] = 0
set CityX[994] = 1280.000
set CityY[994] = -1794.000
set CityT[994] = 0
set CityX[995] = 1789.750
set CityY[995] = -1768.000
set CityT[995] = 0
set CityX[996] = 2305.750
set CityY[996] = -1793.000
set CityT[996] = 0
set CityX[997] = -260.000
set CityY[997] = -1770.500
set CityT[997] = 0
set CityX[998] = 257.500
set CityY[998] = -2306.000
set CityT[998] = 0
set CityX[999] = 758.750
set CityY[999] = -2309.500
set CityT[999] = 0
set CityX[1000] = 1281.500
set CityY[1000] = -2314.000
set CityT[1000] = 0
set CityX[1001] = 1791.250
set CityY[1001] = -2288.000
set CityT[1001] = 0
set CityX[1002] = 2307.250
set CityY[1002] = -2313.000
set CityT[1002] = 0
set CityX[1003] = -258.750
set CityY[1003] = -2290.500
set CityT[1003] = 0
set CityX[1004] = 256.250
set CityY[1004] = -2819.500
set CityT[1004] = 0
set CityX[1005] = 757.500
set CityY[1005] = -2823.000
set CityT[1005] = 0
set CityX[1006] = 1280.250
set CityY[1006] = -2827.500
set CityT[1006] = 0
set CityX[1007] = 1790.000
set CityY[1007] = -2801.250
set CityT[1007] = 0
set CityX[1008] = 2306.000
set CityY[1008] = -2826.500
set CityT[1008] = 0
set CityX[1009] = -259.750
set CityY[1009] = -2804.000
set CityT[1009] = 0
set CityX[1010] = 771.500
set CityY[1010] = -3324.750
set CityT[1010] = 0
set CityX[1011] = 1272.750
set CityY[1011] = -3328.250
set CityT[1011] = 0
set CityX[1012] = 1795.500
set CityY[1012] = -3332.750
set CityT[1012] = 0
set CityX[1013] = 2305.250
set CityY[1013] = -3306.500
set CityT[1013] = 0
set CityX[1014] = 2821.250
set CityY[1014] = -3331.750
set CityT[1014] = 0
set CityX[1015] = 255.500
set CityY[1015] = -3309.500
set CityT[1015] = 0
set CityX[1016] = 775.500
set CityY[1016] = -3832.750
set CityT[1016] = 0
set CityX[1017] = 1276.750
set CityY[1017] = -3836.250
set CityT[1017] = 0
set CityX[1018] = 1799.500
set CityY[1018] = -3840.750
set CityT[1018] = 0
set CityX[1019] = 2309.250
set CityY[1019] = -3814.500
set CityT[1019] = 0
set CityX[1020] = 2825.250
set CityY[1020] = -3839.750
set CityT[1020] = 0
set CityX[1021] = 259.250
set CityY[1021] = -3817.500
set CityT[1021] = 0
set CityX[1022] = 769.250
set CityY[1022] = -4358.750
set CityT[1022] = 0
set CityX[1023] = 1270.500
set CityY[1023] = -4362.250
set CityT[1023] = 0
set CityX[1024] = 1793.250
set CityY[1024] = -4366.750
set CityT[1024] = 0
call TriggerSleepAction(0.3)
set CityX[1025] = 2303.000
set CityY[1025] = -4340.500
set CityT[1025] = 0
set CityX[1026] = 2819.000
set CityY[1026] = -4365.750
set CityT[1026] = 0
set CityX[1027] = 253.000
set CityY[1027] = -4343.250
set CityT[1027] = 0
set CityX[1028] = 1276.500
set CityY[1028] = -4864.500
set CityT[1028] = 0
set CityX[1029] = 1799.250
set CityY[1029] = -4869.000
set CityT[1029] = 0
set CityX[1030] = 2309.000
set CityY[1030] = -4842.750
set CityT[1030] = 0
set CityX[1031] = 2825.000
set CityY[1031] = -4867.750
set CityT[1031] = 0
set CityX[1032] = 259.000
set CityY[1032] = -4845.500
set CityT[1032] = 0
set CityX[1033] = 771.500
set CityY[1033] = -5377.750
set CityT[1033] = 0
set CityX[1034] = 1273.000
set CityY[1034] = -5381.500
set CityT[1034] = 0
set CityX[1035] = 1795.500
set CityY[1035] = -5386.000
set CityT[1035] = 0
set CityX[1036] = 2305.500
set CityY[1036] = -5359.750
set CityT[1036] = 0
set CityX[1037] = 2821.500
set CityY[1037] = -5385.000
set CityT[1037] = 0
set CityX[1038] = 255.500
set CityY[1038] = -5362.500
set CityT[1038] = 0
set CityX[1039] = 1283.250
set CityY[1039] = -5883.500
set CityT[1039] = 0
set CityX[1040] = 1784.500
set CityY[1040] = -5887.000
set CityT[1040] = 0
set CityX[1041] = 2307.000
set CityY[1041] = -5891.500
set CityT[1041] = 0
set CityX[1042] = 2817.000
set CityY[1042] = -5865.250
set CityT[1042] = 0
set CityX[1043] = 3333.000
set CityY[1043] = -5890.500
set CityT[1043] = 0
set CityX[1044] = 767.000
set CityY[1044] = -5868.000
set CityT[1044] = 0
set CityX[1045] = 3331.750
set CityY[1045] = -1284.250
set CityT[1045] = 0
set CityX[1046] = 3833.000
set CityY[1046] = -1288.000
set CityT[1046] = 0
set CityX[1047] = 4355.750
set CityY[1047] = -1292.500
set CityT[1047] = 0
set CityX[1048] = 4865.500
set CityY[1048] = -1266.250
set CityT[1048] = 0
set CityX[1049] = 3329.500
set CityY[1049] = -1798.000
set CityT[1049] = 0
set CityX[1050] = 2815.500
set CityY[1050] = -1269.000
set CityT[1050] = 0
set CityX[1051] = 3830.500
set CityY[1051] = -1801.500
set CityT[1051] = 0
set CityX[1052] = 4353.250
set CityY[1052] = -1806.000
set CityT[1052] = 0
set CityX[1053] = 2821.750
set CityY[1053] = -246.750
set CityT[1053] = 0
set CityX[1054] = 5379.250
set CityY[1054] = -1805.000
set CityT[1054] = 0
set CityX[1055] = 3846.500
set CityY[1055] = -4854.500
set CityT[1055] = 0
set CityX[1056] = 3326.750
set CityY[1056] = -2305.250
set CityT[1056] = 0
set CityX[1057] = 3828.000
set CityY[1057] = -2308.750
set CityT[1057] = 0
set CityX[1058] = 4350.500
set CityY[1058] = -2313.250
set CityT[1058] = 0
set CityX[1059] = 3323.000
set CityY[1059] = -250.250
set CityT[1059] = 0
set CityX[1060] = 5376.500
set CityY[1060] = -2312.250
set CityT[1060] = 0
set CityX[1061] = 4347.750
set CityY[1061] = -4858.000
set CityT[1061] = 0
set CityX[1062] = 4870.500
set CityY[1062] = -4862.500
set CityT[1062] = 0
set CityX[1063] = 3843.250
set CityY[1063] = -5380.750
set CityT[1063] = 0
set CityX[1064] = 4344.500
set CityY[1064] = -5384.250
set CityT[1064] = 0
set CityX[1065] = 3330.500
set CityY[1065] = -4839.000
set CityT[1065] = 0
set CityX[1066] = 4867.250
set CityY[1066] = -5388.750
set CityT[1066] = 0
set CityX[1067] = 5377.000
set CityY[1067] = -5362.500
set CityT[1067] = 0
set CityX[1068] = 4358.750
set CityY[1068] = -5888.000
set CityT[1068] = 0
set CityX[1069] = 3327.000
set CityY[1069] = -5365.500
set CityT[1069] = 0
set CityX[1070] = 4860.000
set CityY[1070] = -5891.500
set CityT[1070] = 0
set CityX[1071] = 5382.750
set CityY[1071] = -5896.000
set CityT[1071] = 0
set CityX[1072] = 5892.500
set CityY[1072] = -5870.000
set CityT[1072] = 0
set CityX[1073] = 1777.750
set CityY[1073] = -6400.000
set CityT[1073] = 0
set CityX[1074] = 3842.500
set CityY[1074] = -5872.750
set CityT[1074] = 0
set CityX[1075] = 2300.500
set CityY[1075] = -6404.500
set CityT[1075] = 0
set CityX[1076] = 2810.250
set CityY[1076] = -6378.250
set CityT[1076] = 0
set CityX[1077] = 3326.250
set CityY[1077] = -6403.500
set CityT[1077] = 0
set CityX[1078] = 4352.000
set CityY[1078] = -6401.000
set CityT[1078] = 0
set CityX[1079] = 4853.250
set CityY[1079] = -6404.500
set CityT[1079] = 0
set CityX[1080] = 5376.000
set CityY[1080] = -6409.000
set CityT[1080] = 0
set CityX[1081] = 5886.000
set CityY[1081] = -6383.000
set CityT[1081] = 0
set CityX[1082] = 3836.000
set CityY[1082] = -6385.500
set CityT[1082] = 0
set CityX[1083] = 1784.250
set CityY[1083] = -6912.000
set CityT[1083] = 0
set CityX[1084] = 2307.000
set CityY[1084] = -6916.500
set CityT[1084] = 0
set CityX[1085] = 2816.750
set CityY[1085] = -6890.250
set CityT[1085] = 0
set CityX[1086] = 3332.750
set CityY[1086] = -6915.500
set CityT[1086] = 0
set CityX[1087] = 4358.500
set CityY[1087] = -6913.000
set CityT[1087] = 0
set CityX[1088] = 4859.750
set CityY[1088] = -6916.500
set CityT[1088] = 0
set CityX[1089] = 5382.500
set CityY[1089] = -6921.000
set CityT[1089] = 0
set CityX[1090] = 5892.500
set CityY[1090] = -6895.000
set CityT[1090] = 0
set CityX[1091] = 3842.500
set CityY[1091] = -6897.750
set CityT[1091] = 0
set CityX[1092] = 6385.000
set CityY[1092] = -7421.500
set CityT[1092] = 0
set CityX[1093] = 2304.500
set CityY[1093] = -7425.000
set CityT[1093] = 0
set CityX[1094] = 2814.500
set CityY[1094] = -7398.750
set CityT[1094] = 0
set CityX[1095] = 3330.500
set CityY[1095] = -7424.000
set CityT[1095] = 0
set CityX[1096] = 4356.250
set CityY[1096] = -7421.500
set CityT[1096] = 0
set CityX[1097] = 4857.500
set CityY[1097] = -7425.000
set CityT[1097] = 0
set CityX[1098] = 5380.000
set CityY[1098] = -7429.500
set CityT[1098] = 0
set CityX[1099] = 5890.000
set CityY[1099] = -7403.500
set CityT[1099] = 0
set CityX[1100] = 3840.000
set CityY[1100] = -7406.250
set CityT[1100] = 0
set CityX[1101] = 6907.500
set CityY[1101] = -7426.000
set CityT[1101] = 0
set CityX[1102] = 7417.500
set CityY[1102] = -7400.000
set CityT[1102] = 0
set CityX[1103] = 7933.500
set CityY[1103] = -7425.000
set CityT[1103] = 0
set CityX[1104] = 8959.250
set CityY[1104] = -7422.750
set CityT[1104] = 0
set CityX[1105] = 9460.500
set CityY[1105] = -7426.250
set CityT[1105] = 0
set CityX[1106] = 9983.000
set CityY[1106] = -7430.750
set CityT[1106] = 0
set CityX[1107] = 3833.500
set CityY[1107] = -7937.750
set CityT[1107] = 0
set CityX[1108] = 8443.000
set CityY[1108] = -7407.250
set CityT[1108] = 0
set CityX[1109] = 6394.750
set CityY[1109] = -6908.500
set CityT[1109] = 0
set CityX[1110] = 6917.250
set CityY[1110] = -6913.000
set CityT[1110] = 0
set CityX[1111] = 7427.250
set CityY[1111] = -6886.750
set CityT[1111] = 0
set CityX[1112] = 7943.250
set CityY[1112] = -6912.000
set CityT[1112] = 0
set CityX[1113] = 8969.000
set CityY[1113] = -6909.500
set CityT[1113] = 0
set CityX[1114] = 9470.250
set CityY[1114] = -6913.250
set CityT[1114] = 0
set CityX[1115] = 9993.000
set CityY[1115] = -6917.750
set CityT[1115] = 0
set CityX[1116] = 4356.250
set CityY[1116] = -7942.250
set CityT[1116] = 0
set CityX[1117] = 8440.000
set CityY[1117] = -7932.750
set CityT[1117] = 0
set CityX[1118] = 6389.250
set CityY[1118] = -6404.750
set CityT[1118] = 0
set CityX[1119] = 6912.000
set CityY[1119] = -6409.250
set CityT[1119] = 0
set CityX[1120] = 7421.750
set CityY[1120] = -6383.000
set CityT[1120] = 0
set CityX[1121] = 7937.750
set CityY[1121] = -6408.250
set CityT[1121] = 0
set CityX[1122] = 8963.500
set CityY[1122] = -6405.750
set CityT[1122] = 0
set CityX[1123] = 9465.000
set CityY[1123] = -6409.500
set CityT[1123] = 0
set CityX[1124] = 9987.500
set CityY[1124] = -6414.000
set CityT[1124] = 0
set CityX[1125] = 10497.500
set CityY[1125] = -6387.750
set CityT[1125] = 0
set CityX[1126] = 8447.500
set CityY[1126] = -6390.500
set CityT[1126] = 0
set CityX[1127] = 4866.000
set CityY[1127] = -7916.000
set CityT[1127] = 0
set CityX[1128] = 5382.000
set CityY[1128] = -7941.250
set CityT[1128] = 0
set CityX[1129] = 4869.000
set CityY[1129] = -9472.500
set CityT[1129] = 0
set CityX[1130] = 6909.250
set CityY[1130] = -7942.500
set CityT[1130] = 0
set CityX[1131] = 7431.750
set CityY[1131] = -7947.000
set CityT[1131] = 0
set CityX[1132] = 7941.750
set CityY[1132] = -7920.750
set CityT[1132] = 0
set CityX[1133] = 5891.750
set CityY[1133] = -7923.500
set CityT[1133] = 0
set CityX[1134] = 4347.000
set CityY[1134] = -8454.000
set CityT[1134] = 0
set CityX[1135] = 4869.750
set CityY[1135] = -8458.500
set CityT[1135] = 0
set CityX[1136] = 5379.500
set CityY[1136] = -8432.250
set CityT[1136] = 0
set CityX[1137] = 5895.500
set CityY[1137] = -8457.500
set CityT[1137] = 0
set CityX[1138] = 5379.000
set CityY[1138] = -9446.250
set CityT[1138] = 0
set CityX[1139] = 7422.750
set CityY[1139] = -8458.500
set CityT[1139] = 0
set CityX[1140] = 7945.250
set CityY[1140] = -8463.000
set CityT[1140] = 0
set CityX[1141] = 8455.250
set CityY[1141] = -8437.000
set CityT[1141] = 0
set CityX[1142] = 6405.250
set CityY[1142] = -8439.750
set CityT[1142] = 0
set CityX[1143] = 4353.500
set CityY[1143] = -8954.500
set CityT[1143] = 0
set CityX[1144] = 4876.250
set CityY[1144] = -8959.000
set CityT[1144] = 0
set CityX[1145] = 5386.000
set CityY[1145] = -8932.750
set CityT[1145] = 0
set CityX[1146] = 5902.000
set CityY[1146] = -8958.000
set CityT[1146] = 0
set CityX[1147] = 6927.750
set CityY[1147] = -8955.500
set CityT[1147] = 0
set CityX[1148] = 5895.000
set CityY[1148] = -9471.500
set CityT[1148] = 0
set CityX[1149] = 7951.750
set CityY[1149] = -8963.500
set CityT[1149] = 0
set CityX[1150] = 8461.500
set CityY[1150] = -8937.500
set CityT[1150] = 0
set CityX[1151] = 6411.750
set CityY[1151] = -8940.250
set CityT[1151] = 0
set CityX[1152] = 6920.750
set CityY[1152] = -9469.000
set CityT[1152] = 0
call TriggerSleepAction(0.3)
set CityX[1153] = 7422.000
set CityY[1153] = -9472.500
set CityT[1153] = 0
set CityX[1154] = 7944.500
set CityY[1154] = -9477.000
set CityT[1154] = 0
set CityX[1155] = 8454.500
set CityY[1155] = -9451.000
set CityT[1155] = 0
set CityX[1156] = 6404.500
set CityY[1156] = -9453.500
set CityT[1156] = 0
set CityX[1157] = 4869.250
set CityY[1157] = -10496.000
set CityT[1157] = 0
set CityX[1158] = 4868.000
set CityY[1158] = -9988.500
set CityT[1158] = 0
set CityX[1159] = 5377.750
set CityY[1159] = -9962.500
set CityT[1159] = 0
set CityX[1160] = 5893.750
set CityY[1160] = -9987.500
set CityT[1160] = 0
set CityX[1161] = 6919.500
set CityY[1161] = -9985.250
set CityT[1161] = 0
set CityX[1162] = 7421.000
set CityY[1162] = -9988.750
set CityT[1162] = 0
set CityX[1163] = 7943.500
set CityY[1163] = -9993.250
set CityT[1163] = 0
set CityX[1164] = 8453.500
set CityY[1164] = -9967.000
set CityT[1164] = 0
set CityX[1165] = 6403.500
set CityY[1165] = -9969.750
set CityT[1165] = 0
set CityX[1166] = 5379.000
set CityY[1166] = -10470.000
set CityT[1166] = 0
set CityX[1167] = 5895.000
set CityY[1167] = -10495.000
set CityT[1167] = 0
set CityX[1168] = 6920.750
set CityY[1168] = -10492.500
set CityT[1168] = 0
set CityX[1169] = 7422.000
set CityY[1169] = -10496.250
set CityT[1169] = 0
set CityX[1170] = 7944.750
set CityY[1170] = -10500.750
set CityT[1170] = 0
set CityX[1171] = 8454.500
set CityY[1171] = -10474.500
set CityT[1171] = 0
set CityX[1172] = 6404.750
set CityY[1172] = -10477.250
set CityT[1172] = 0
set CityX[1173] = 5376.500
set CityY[1173] = -11012.500
set CityT[1173] = 0
set CityX[1174] = 5886.250
set CityY[1174] = -10986.250
set CityT[1174] = 0
set CityX[1175] = 6402.250
set CityY[1175] = -11011.500
set CityT[1175] = 0
set CityX[1176] = 7428.000
set CityY[1176] = -11009.000
set CityT[1176] = 0
set CityX[1177] = 7929.250
set CityY[1177] = -11012.500
set CityT[1177] = 0
set CityX[1178] = 8452.000
set CityY[1178] = -11017.000
set CityT[1178] = 0
set CityX[1179] = 8961.750
set CityY[1179] = -10991.000
set CityT[1179] = 0
set CityX[1180] = 6912.000
set CityY[1180] = -10993.750
set CityT[1180] = 0
set CityX[1181] = 5895.000
set CityY[1181] = -11514.250
set CityT[1181] = 0
set CityX[1182] = 6405.000
set CityY[1182] = -11488.000
set CityT[1182] = 0
set CityX[1183] = 6920.750
set CityY[1183] = -11513.250
set CityT[1183] = 0
set CityX[1184] = 7946.500
set CityY[1184] = -11510.750
set CityT[1184] = 0
set CityX[1185] = 8448.000
set CityY[1185] = -11514.500
set CityT[1185] = 0
set CityX[1186] = 8970.500
set CityY[1186] = -11519.000
set CityT[1186] = 0
set CityX[1187] = 9480.500
set CityY[1187] = -11492.750
set CityT[1187] = 0
set CityX[1188] = 7430.500
set CityY[1188] = -11495.500
set CityT[1188] = 0
set CityX[1189] = 5899.250
set CityY[1189] = -12027.000
set CityT[1189] = 0
set CityX[1190] = 6409.000
set CityY[1190] = -12001.000
set CityT[1190] = 0
set CityX[1191] = 6925.000
set CityY[1191] = -12026.000
set CityT[1191] = 0
set CityX[1192] = 7950.750
set CityY[1192] = -12023.500
set CityT[1192] = 0
set CityX[1193] = 8452.000
set CityY[1193] = -12027.250
set CityT[1193] = 0
set CityX[1194] = 8974.750
set CityY[1194] = -12031.750
set CityT[1194] = 0
set CityX[1195] = 9484.500
set CityY[1195] = -12005.500
set CityT[1195] = 0
set CityX[1196] = 7434.750
set CityY[1196] = -12008.250
set CityT[1196] = 0
set CityX[1197] = 8962.750
set CityY[1197] = -7937.250
set CityT[1197] = 0
set CityX[1198] = 9472.750
set CityY[1198] = -7911.000
set CityT[1198] = 0
set CityX[1199] = 9988.750
set CityY[1199] = -7936.250
set CityT[1199] = 0
set CityX[1200] = 11014.500
set CityY[1200] = -7933.750
set CityT[1200] = 0
set CityX[1201] = 11515.750
set CityY[1201] = -7937.500
set CityT[1201] = 0
set CityX[1202] = 12038.500
set CityY[1202] = -7942.000
set CityT[1202] = 0
set CityX[1203] = 12548.250
set CityY[1203] = -7915.750
set CityT[1203] = 0
set CityX[1204] = 10498.250
set CityY[1204] = -7918.500
set CityT[1204] = 0
set CityX[1205] = 8959.500
set CityY[1205] = -8446.500
set CityT[1205] = 0
set CityX[1206] = 9469.250
set CityY[1206] = -8420.500
set CityT[1206] = 0
set CityX[1207] = 9985.250
set CityY[1207] = -8445.500
set CityT[1207] = 0
set CityX[1208] = 11011.000
set CityY[1208] = -8443.250
set CityT[1208] = 0
set CityX[1209] = 11512.500
set CityY[1209] = -8446.750
set CityT[1209] = 0
set CityX[1210] = 12035.000
set CityY[1210] = -8451.250
set CityT[1210] = 0
set CityX[1211] = 12545.000
set CityY[1211] = -8425.000
set CityT[1211] = 0
set CityX[1212] = 10495.000
set CityY[1212] = -8427.750
set CityT[1212] = 0
set CityX[1213] = 8954.500
set CityY[1213] = -8969.250
set CityT[1213] = 0
set CityX[1214] = 5886.750
set CityY[1214] = -12547.750
set CityT[1214] = 0
set CityX[1215] = 9980.250
set CityY[1215] = -8968.250
set CityT[1215] = 0
set CityX[1216] = 11006.000
set CityY[1216] = -8965.750
set CityT[1216] = 0
set CityX[1217] = 11507.250
set CityY[1217] = -8969.500
set CityT[1217] = 0
set CityX[1218] = 12030.000
set CityY[1218] = -8974.000
set CityT[1218] = 0
set CityX[1219] = 12539.750
set CityY[1219] = -8947.750
set CityT[1219] = 0
set CityX[1220] = 10490.000
set CityY[1220] = -8950.500
set CityT[1220] = 0
set CityX[1221] = 6396.750
set CityY[1221] = -12521.500
set CityT[1221] = 0
set CityX[1222] = 6912.750
set CityY[1222] = -12546.500
set CityT[1222] = 0
set CityX[1223] = 7938.500
set CityY[1223] = -12544.250
set CityT[1223] = 0
set CityX[1224] = 8439.750
set CityY[1224] = -12547.750
set CityT[1224] = 0
set CityX[1225] = 8962.500
set CityY[1225] = -12552.250
set CityT[1225] = 0
set CityX[1226] = 9472.250
set CityY[1226] = -12526.000
set CityT[1226] = 0
set CityX[1227] = 7422.250
set CityY[1227] = -12529.000
set CityT[1227] = 0
set CityX[1228] = 6401.000
set CityY[1228] = -13058.500
set CityT[1228] = 0
set CityX[1229] = 6910.750
set CityY[1229] = -13032.250
set CityT[1229] = 0
set CityX[1230] = 7426.750
set CityY[1230] = -13057.500
set CityT[1230] = 0
set CityX[1231] = 8452.500
set CityY[1231] = -13055.000
set CityT[1231] = 0
set CityX[1232] = 8953.750
set CityY[1232] = -13058.500
set CityT[1232] = 0
set CityX[1233] = 6393.750
set CityY[1233] = -13566.750
set CityT[1233] = 0
set CityX[1234] = 7428.000
set CityY[1234] = -14088.250
set CityT[1234] = 0
set CityX[1235] = 7936.500
set CityY[1235] = -13039.750
set CityT[1235] = 0
set CityX[1236] = 6903.500
set CityY[1236] = -13540.500
set CityT[1236] = 0
set CityX[1237] = 7419.500
set CityY[1237] = -13565.750
set CityT[1237] = 0
set CityX[1238] = 8445.500
set CityY[1238] = -13563.500
set CityT[1238] = 0
set CityX[1239] = 8946.750
set CityY[1239] = -13567.000
set CityT[1239] = 0
set CityX[1240] = 7937.750
set CityY[1240] = -14062.000
set CityT[1240] = 0
set CityX[1241] = 9979.250
set CityY[1241] = -13545.250
set CityT[1241] = 0
set CityX[1242] = 7929.250
set CityY[1242] = -13548.000
set CityT[1242] = 0
set CityX[1243] = 8453.750
set CityY[1243] = -14087.000
set CityT[1243] = 0
set CityX[1244] = 7939.750
set CityY[1244] = -14582.750
set CityT[1244] = 0
set CityX[1245] = 9980.750
set CityY[1245] = -14088.250
set CityT[1245] = 0
set CityX[1246] = 10503.500
set CityY[1246] = -14092.750
set CityT[1246] = 0
set CityX[1247] = 11013.250
set CityY[1247] = -14066.500
set CityT[1247] = 0
set CityX[1248] = 8963.500
set CityY[1248] = -14069.500
set CityT[1248] = 0
set CityX[1249] = 8449.500
set CityY[1249] = -14556.500
set CityT[1249] = 0
set CityX[1250] = 8965.500
set CityY[1250] = -14581.750
set CityT[1250] = 0
set CityX[1251] = 9991.250
set CityY[1251] = -14579.250
set CityT[1251] = 0
set CityX[1252] = 10492.500
set CityY[1252] = -14583.000
set CityT[1252] = 0
set CityX[1253] = 11015.250
set CityY[1253] = -14587.500
set CityT[1253] = 0
set CityX[1254] = 11525.000
set CityY[1254] = -14561.250
set CityT[1254] = 0
set CityX[1255] = 8447.750
set CityY[1255] = -15109.500
set CityT[1255] = 0
set CityX[1256] = 8957.750
set CityY[1256] = -15083.250
set CityT[1256] = 0
set CityX[1257] = 10499.500
set CityY[1257] = -15106.000
set CityT[1257] = 0
set CityX[1258] = 11000.750
set CityY[1258] = -15109.500
set CityT[1258] = 0
set CityX[1259] = 11523.500
set CityY[1259] = -15114.000
set CityT[1259] = 0
set CityX[1260] = 12033.250
set CityY[1260] = -15088.000
set CityT[1260] = 0
set CityX[1261] = 9980.500
set CityY[1261] = -9448.000
set CityT[1261] = 0
set CityX[1262] = 10496.250
set CityY[1262] = -9473.250
set CityT[1262] = 0
set CityX[1263] = 11522.000
set CityY[1263] = -9470.750
set CityT[1263] = 0
set CityX[1264] = 12023.500
set CityY[1264] = -9474.500
set CityT[1264] = 0
set CityX[1265] = 12546.000
set CityY[1265] = -9479.000
set CityT[1265] = 0
set CityX[1266] = 13056.000
set CityY[1266] = -9452.750
set CityT[1266] = 0
set CityX[1267] = 11006.000
set CityY[1267] = -9455.500
set CityT[1267] = 0
set CityX[1268] = 9982.500
set CityY[1268] = -9964.000
set CityT[1268] = 0
set CityX[1269] = 10498.500
set CityY[1269] = -9989.250
set CityT[1269] = 0
set CityX[1270] = 11524.500
set CityY[1270] = -9987.000
set CityT[1270] = 0
set CityX[1271] = 12025.750
set CityY[1271] = -9990.500
set CityT[1271] = 0
set CityX[1272] = 12548.250
set CityY[1272] = -9995.000
set CityT[1272] = 0
set CityX[1273] = 13058.250
set CityY[1273] = -9968.750
set CityT[1273] = 0
set CityX[1274] = 11008.250
set CityY[1274] = -9971.500
set CityT[1274] = 0
set CityX[1275] = 9981.500
set CityY[1275] = -10475.500
set CityT[1275] = 0
set CityX[1276] = 10497.500
set CityY[1276] = -10500.500
set CityT[1276] = 0
set CityX[1277] = 11523.250
set CityY[1277] = -10498.250
set CityT[1277] = 0
set CityX[1278] = 12024.500
set CityY[1278] = -10501.750
set CityT[1278] = 0
set CityX[1279] = 12547.250
set CityY[1279] = -10506.250
set CityT[1279] = 0
set CityX[1280] = 13057.000
set CityY[1280] = -10480.000
set CityT[1280] = 0
call TriggerSleepAction(0.3)
set CityX[1281] = 11007.000
set CityY[1281] = -10483.000
set CityT[1281] = 0
set CityX[1282] = 9984.750
set CityY[1282] = -10989.000
set CityT[1282] = 0
set CityX[1283] = 10500.750
set CityY[1283] = -11014.250
set CityT[1283] = 0
set CityX[1284] = 11526.500
set CityY[1284] = -11011.750
set CityT[1284] = 0
set CityX[1285] = 12027.750
set CityY[1285] = -11015.500
set CityT[1285] = 0
set CityX[1286] = 12550.500
set CityY[1286] = -11020.000
set CityT[1286] = 0
set CityX[1287] = 13060.250
set CityY[1287] = -10993.750
set CityT[1287] = 0
set CityX[1288] = 11010.500
set CityY[1288] = -10996.500
set CityT[1288] = 0
set CityX[1289] = 9983.500
set CityY[1289] = -11498.750
set CityT[1289] = 0
set CityX[1290] = 10499.500
set CityY[1290] = -11524.000
set CityT[1290] = 0
set CityX[1291] = 11525.250
set CityY[1291] = -11521.500
set CityT[1291] = 0
set CityX[1292] = 12026.500
set CityY[1292] = -11525.000
set CityT[1292] = 0
set CityX[1293] = 12549.250
set CityY[1293] = -11529.500
set CityT[1293] = 0
set CityX[1294] = 13059.250
set CityY[1294] = -11503.500
set CityT[1294] = 0
set CityX[1295] = 11009.250
set CityY[1295] = -11506.250
set CityT[1295] = 0
set CityX[1296] = 9976.000
set CityY[1296] = -12011.000
set CityT[1296] = 0
set CityX[1297] = 10492.000
set CityY[1297] = -12036.000
set CityT[1297] = 0
set CityX[1298] = 11518.000
set CityY[1298] = -12033.500
set CityT[1298] = 0
set CityX[1299] = 12019.000
set CityY[1299] = -12037.250
set CityT[1299] = 0
set CityX[1300] = 12541.750
set CityY[1300] = -12041.750
set CityT[1300] = 0
set CityX[1301] = 13051.750
set CityY[1301] = -12015.500
set CityT[1301] = 0
set CityX[1302] = 11001.750
set CityY[1302] = -12018.250
set CityT[1302] = 0
set CityX[1303] = 10490.000
set CityY[1303] = -12535.000
set CityT[1303] = 0
set CityX[1304] = 11006.000
set CityY[1304] = -12560.250
set CityT[1304] = 0
set CityX[1305] = 12032.000
set CityY[1305] = -12557.750
set CityT[1305] = 0
set CityX[1306] = 12533.000
set CityY[1306] = -12561.500
set CityT[1306] = 0
set CityX[1307] = 13055.750
set CityY[1307] = -12566.000
set CityT[1307] = 0
set CityX[1308] = 13565.750
set CityY[1308] = -12539.750
set CityT[1308] = 0
set CityX[1309] = 11515.750
set CityY[1309] = -12542.500
set CityT[1309] = 0
set CityX[1310] = 10489.000
set CityY[1310] = -13031.750
set CityT[1310] = 0
set CityX[1311] = 11005.000
set CityY[1311] = -13057.000
set CityT[1311] = 0
set CityX[1312] = 12030.750
set CityY[1312] = -13054.500
set CityT[1312] = 0
set CityX[1313] = 12532.000
set CityY[1313] = -13058.000
set CityT[1313] = 0
set CityX[1314] = 13054.500
set CityY[1314] = -13062.500
set CityT[1314] = 0
set CityX[1315] = 13564.500
set CityY[1315] = -13036.500
set CityT[1315] = 0
set CityX[1316] = 11514.500
set CityY[1316] = -13039.250
set CityT[1316] = 0
set CityX[1317] = 10498.500
set CityY[1317] = -13546.500
set CityT[1317] = 0
set CityX[1318] = 11014.500
set CityY[1318] = -13571.500
set CityT[1318] = 0
set CityX[1319] = 12040.250
set CityY[1319] = -13569.000
set CityT[1319] = 0
set CityX[1320] = 12541.500
set CityY[1320] = -13572.750
set CityT[1320] = 0
set CityX[1321] = 13064.250
set CityY[1321] = -13577.250
set CityT[1321] = 0
set CityX[1322] = 13574.000
set CityY[1322] = -13551.000
set CityT[1322] = 0
set CityX[1323] = 11524.250
set CityY[1323] = -13553.750
set CityT[1323] = 0
set CityX[1324] = 11521.000
set CityY[1324] = -14062.000
set CityT[1324] = 0
set CityX[1325] = 12036.750
set CityY[1325] = -14087.000
set CityT[1325] = 0
set CityX[1326] = 13062.500
set CityY[1326] = -14084.500
set CityT[1326] = 0
set CityX[1327] = 13564.000
set CityY[1327] = -14088.250
set CityT[1327] = 0
set CityX[1328] = 14086.500
set CityY[1328] = -14092.750
set CityT[1328] = 0
set CityX[1329] = 14596.500
set CityY[1329] = -14066.500
set CityT[1329] = 0
set CityX[1330] = 12546.500
set CityY[1330] = -14069.250
set CityT[1330] = 0
set CityX[1331] = 13562.250
set CityY[1331] = -14593.000
set CityT[1331] = 0
set CityX[1332] = 14063.500
set CityY[1332] = -14596.500
set CityT[1332] = 0
set CityX[1333] = 14586.250
set CityY[1333] = -14601.000
set CityT[1333] = 0
set CityX[1334] = 15096.250
set CityY[1334] = -14574.750
set CityT[1334] = 0
set CityX[1335] = 13046.250
set CityY[1335] = -14577.500
set CityT[1335] = 0
set CityX[1336] = 13572.000
set CityY[1336] = -15107.500
set CityT[1336] = 0
set CityX[1337] = 14073.250
set CityY[1337] = -15111.250
set CityT[1337] = 0
set CityX[1338] = 14596.000
set CityY[1338] = -15115.750
set CityT[1338] = 0
set CityX[1339] = 15105.750
set CityY[1339] = -15089.500
set CityT[1339] = 0
set CityX[1340] = 13055.750
set CityY[1340] = -15092.250
set CityT[1340] = 0
set CityX[1341] = 12027.000
set CityY[1341] = -14612.000
set CityT[1341] = 0
set CityX[1342] = 12536.750
set CityY[1342] = -14594.250
set CityT[1342] = 0
set CityX[1343] = 14595.000
set CityY[1343] = -13067.250
set CityT[1343] = 0
set CityX[1344] = 15104.750
set CityY[1344] = -13049.500
set CityT[1344] = 0
set CityX[1345] = 14591.250
set CityY[1345] = -13572.750
set CityT[1345] = 0
set CityX[1346] = 15101.000
set CityY[1346] = -13555.000
set CityT[1346] = 0
set CityX[1347] = 13565.000
set CityY[1347] = -12036.500
set CityT[1347] = 0
set CityX[1348] = 15103.000
set CityY[1348] = -12516.750
set CityT[1348] = 0
set CityX[1349] = 14074.500
set CityY[1349] = -12018.500
set CityT[1349] = 0
set CityX[1350] = 13568.000
set CityY[1350] = -11523.250
set CityT[1350] = 0
set CityX[1351] = 11012.000
set CityY[1351] = -6406.750
set CityT[1351] = 0
set CityX[1352] = 11513.000
set CityY[1352] = -6410.250
set CityT[1352] = 0
set CityX[1353] = 12035.750
set CityY[1353] = -6414.750
set CityT[1353] = 0
set CityX[1354] = 12545.750
set CityY[1354] = -6388.500
set CityT[1354] = 0
set CityX[1355] = 11008.500
set CityY[1355] = -6916.000
set CityT[1355] = 0
set CityX[1356] = 11509.750
set CityY[1356] = -6919.750
set CityT[1356] = 0
set CityX[1357] = 12032.500
set CityY[1357] = -6924.250
set CityT[1357] = 0
set CityX[1358] = 12542.250
set CityY[1358] = -6898.000
set CityT[1358] = 0
set CityX[1359] = 11003.500
set CityY[1359] = -7438.750
set CityT[1359] = 0
set CityX[1360] = 11504.750
set CityY[1360] = -7442.250
set CityT[1360] = 0
set CityX[1361] = 12027.500
set CityY[1361] = -7446.750
set CityT[1361] = 0
set CityX[1362] = 12537.250
set CityY[1362] = -7420.500
set CityT[1362] = 0
set CityX[1363] = 10496.750
set CityY[1363] = -5865.500
set CityT[1363] = 0
set CityX[1364] = 8963.000
set CityY[1364] = -5883.500
set CityT[1364] = 0
set CityX[1365] = 9464.250
set CityY[1365] = -5887.000
set CityT[1365] = 0
set CityX[1366] = 9987.000
set CityY[1366] = -5891.500
set CityT[1366] = 0
set CityX[1367] = 11011.250
set CityY[1367] = -5884.500
set CityT[1367] = 0
set CityX[1368] = 11512.500
set CityY[1368] = -5888.000
set CityT[1368] = 0
set CityX[1369] = 12035.250
set CityY[1369] = -5892.500
set CityT[1369] = 0
set CityX[1370] = 10497.250
set CityY[1370] = -5363.750
set CityT[1370] = 0
set CityX[1371] = 9464.750
set CityY[1371] = -5385.500
set CityT[1371] = 0
set CityX[1372] = 9987.500
set CityY[1372] = -5390.000
set CityT[1372] = 0
set CityX[1373] = 11011.750
set CityY[1373] = -5382.750
set CityT[1373] = 0
set CityX[1374] = -15094.500
set CityY[1374] = 8462.750
set CityT[1374] = 0
set CityX[1375] = -14588.000
set CityY[1375] = 8468.250
set CityT[1375] = 0
set CityX[1376] = -14070.250
set CityY[1376] = 8452.500
set CityT[1376] = 0
set CityX[1377] = -13559.750
set CityY[1377] = 8453.000
set CityT[1377] = 0
set CityX[1378] = -13562.500
set CityY[1378] = 7946.500
set CityT[1378] = 0
set CityX[1379] = -14070.750
set CityY[1379] = 7944.500
set CityT[1379] = 0
set CityX[1380] = -14583.250
set CityY[1380] = 7946.750
set CityT[1380] = 0
set CityX[1381] = -15092.000
set CityY[1381] = 7952.000
set CityT[1381] = 0
set CityX[1382] = -15096.750
set CityY[1382] = 7444.000
set CityT[1382] = 0
set CityX[1383] = -14589.000
set CityY[1383] = 7434.000
set CityT[1383] = 0
set CityX[1384] = -14073.250
set CityY[1384] = 7432.000
set CityT[1384] = 0
set CityX[1385] = -13565.250
set CityY[1385] = 7435.500
set CityT[1385] = 0
set CityX[1386] = -13562.500
set CityY[1386] = 6924.000
set CityT[1386] = 0
set CityX[1387] = -14082.000
set CityY[1387] = 6918.750
set CityT[1387] = 0
set CityX[1388] = -14591.000
set CityY[1388] = 6934.000
set CityT[1388] = 0
set CityX[1389] = -15094.000
set CityY[1389] = 6912.750
set CityT[1389] = 0
set CityX[1390] = -15100.000
set CityY[1390] = 6416.500
set CityT[1390] = 0
set CityX[1391] = -14585.500
set CityY[1391] = 6414.500
set CityT[1391] = 0
set CityX[1392] = -14072.000
set CityY[1392] = 6415.500
set CityT[1392] = 0
set CityX[1393] = -13559.500
set CityY[1393] = 6406.750
set CityT[1393] = 0
set CityX[1394] = -13557.000
set CityY[1394] = 5892.000
set CityT[1394] = 0
set CityX[1395] = -14071.500
set CityY[1395] = 5885.750
set CityT[1395] = 0
set CityX[1396] = -14581.500
set CityY[1396] = 5886.000
set CityT[1396] = 0
set CityX[1397] = -15100.500
set CityY[1397] = 5896.500
set CityT[1397] = 0
set CityX[1398] = -13058.500
set CityY[1398] = 8457.250
set CityT[1398] = 0
set CityX[1399] = -12552.000
set CityY[1399] = 8462.750
set CityT[1399] = 0
set CityX[1400] = -12034.250
set CityY[1400] = 8447.000
set CityT[1400] = 0
set CityX[1401] = -11523.500
set CityY[1401] = 8447.500
set CityT[1401] = 0
set CityX[1402] = -11526.500
set CityY[1402] = 7941.000
set CityT[1402] = 0
set CityX[1403] = -12034.500
set CityY[1403] = 7939.000
set CityT[1403] = 0
set CityX[1404] = -12547.000
set CityY[1404] = 7941.250
set CityT[1404] = 0
set CityX[1405] = -13056.000
set CityY[1405] = 7946.500
set CityT[1405] = 0
set CityX[1406] = -13060.500
set CityY[1406] = 7438.500
set CityT[1406] = 0
set CityX[1407] = -12553.000
set CityY[1407] = 7428.500
set CityT[1407] = 0
set CityX[1408] = -12037.000
set CityY[1408] = 7426.500
set CityT[1408] = 0
call TriggerSleepAction(0.3)
set CityX[1409] = -11529.250
set CityY[1409] = 7430.000
set CityT[1409] = 0
set CityX[1410] = -11526.250
set CityY[1410] = 6918.500
set CityT[1410] = 0
set CityX[1411] = -12045.750
set CityY[1411] = 6913.250
set CityT[1411] = 0
set CityX[1412] = -12555.000
set CityY[1412] = 6928.500
set CityT[1412] = 0
set CityX[1413] = -13058.000
set CityY[1413] = 6907.250
set CityT[1413] = 0
set CityX[1414] = -13064.000
set CityY[1414] = 6411.000
set CityT[1414] = 0
set CityX[1415] = -12549.500
set CityY[1415] = 6409.000
set CityT[1415] = 0
set CityX[1416] = -12035.750
set CityY[1416] = 6410.000
set CityT[1416] = 0
set CityX[1417] = -11523.500
set CityY[1417] = 6401.250
set CityT[1417] = 0
set CityX[1418] = -11520.750
set CityY[1418] = 5886.500
set CityT[1418] = 0
set CityX[1419] = -12035.500
set CityY[1419] = 5880.250
set CityT[1419] = 0
set CityX[1420] = -12545.250
set CityY[1420] = 5880.500
set CityT[1420] = 0
set CityX[1421] = -13064.500
set CityY[1421] = 5891.000
set CityT[1421] = 0
set CityX[1422] = -15102.750
set CityY[1422] = 4363.750
set CityT[1422] = 0
set CityX[1423] = -14596.000
set CityY[1423] = 4369.250
set CityT[1423] = 0
set CityX[1424] = -14078.500
set CityY[1424] = 4353.750
set CityT[1424] = 0
set CityX[1425] = -13568.000
set CityY[1425] = 4354.000
set CityT[1425] = 0
set CityX[1426] = -13570.750
set CityY[1426] = 3847.500
set CityT[1426] = 0
set CityX[1427] = -14078.750
set CityY[1427] = 3845.750
set CityT[1427] = 0
set CityX[1428] = -14591.250
set CityY[1428] = 3847.750
set CityT[1428] = 0
set CityX[1429] = -15100.250
set CityY[1429] = 3853.000
set CityT[1429] = 0
set CityX[1430] = -15105.000
set CityY[1430] = 3345.250
set CityT[1430] = 0
set CityX[1431] = -14597.000
set CityY[1431] = 3335.000
set CityT[1431] = 0
set CityX[1432] = -14081.250
set CityY[1432] = 3333.000
set CityT[1432] = 0
set CityX[1433] = -13573.500
set CityY[1433] = 3336.500
set CityT[1433] = 0
set CityX[1434] = -13570.500
set CityY[1434] = 2825.000
set CityT[1434] = 0
set CityX[1435] = -14090.000
set CityY[1435] = 2819.750
set CityT[1435] = 0
set CityX[1436] = -14599.250
set CityY[1436] = 2835.000
set CityT[1436] = 0
set CityX[1437] = -15102.250
set CityY[1437] = 2813.750
set CityT[1437] = 0
set CityX[1438] = -15108.000
set CityY[1438] = 2317.500
set CityT[1438] = 0
set CityX[1439] = -14593.500
set CityY[1439] = 2315.500
set CityT[1439] = 0
set CityX[1440] = -14080.000
set CityY[1440] = 2316.750
set CityT[1440] = 0
set CityX[1441] = -13567.750
set CityY[1441] = 2307.750
set CityT[1441] = 0
set CityX[1442] = -13565.000
set CityY[1442] = 1793.250
set CityT[1442] = 0
set CityX[1443] = -14079.500
set CityY[1443] = 1786.750
set CityT[1443] = 0
set CityX[1444] = -14589.500
set CityY[1444] = 1787.000
set CityT[1444] = 0
set CityX[1445] = -9976.250
set CityY[1445] = 8957.000
set CityT[1445] = 0
set CityX[1446] = -13052.000
set CityY[1446] = 3847.750
set CityT[1446] = 0
set CityX[1447] = -12545.250
set CityY[1447] = 3853.250
set CityT[1447] = 0
set CityX[1448] = -12027.750
set CityY[1448] = 3837.500
set CityT[1448] = 0
set CityX[1449] = -11517.000
set CityY[1449] = 3838.000
set CityT[1449] = 0
set CityX[1450] = -11520.000
set CityY[1450] = 3331.500
set CityT[1450] = 0
set CityX[1451] = -12028.000
set CityY[1451] = 3329.750
set CityT[1451] = 0
set CityX[1452] = -12540.500
set CityY[1452] = 3331.750
set CityT[1452] = 0
set CityX[1453] = -13049.500
set CityY[1453] = 3337.000
set CityT[1453] = 0
set CityX[1454] = -13054.000
set CityY[1454] = 2829.000
set CityT[1454] = 0
set CityX[1455] = -12546.500
set CityY[1455] = 2819.000
set CityT[1455] = 0
set CityX[1456] = -12030.500
set CityY[1456] = 2817.000
set CityT[1456] = 0
set CityX[1457] = -11522.500
set CityY[1457] = 2820.500
set CityT[1457] = 0
set CityX[1458] = -11519.750
set CityY[1458] = 2309.000
set CityT[1458] = 0
set CityX[1459] = -12039.250
set CityY[1459] = 2303.750
set CityT[1459] = 0
set CityX[1460] = -12548.500
set CityY[1460] = 2319.000
set CityT[1460] = 0
set CityX[1461] = -13051.500
set CityY[1461] = 2297.750
set CityT[1461] = 0
set CityX[1462] = -13057.500
set CityY[1462] = 1801.500
set CityT[1462] = 0
set CityX[1463] = -12542.750
set CityY[1463] = 1799.500
set CityT[1463] = 0
set CityX[1464] = -12029.250
set CityY[1464] = 1800.500
set CityT[1464] = 0
set CityX[1465] = -11517.000
set CityY[1465] = 1791.750
set CityT[1465] = 0
set CityX[1466] = -11514.250
set CityY[1466] = 1277.000
set CityT[1466] = 0
set CityX[1467] = -12028.750
set CityY[1467] = 1270.750
set CityT[1467] = 0
set CityX[1468] = -12538.750
set CityY[1468] = 1271.000
set CityT[1468] = 0
set CityX[1469] = -13058.000
set CityY[1469] = 1281.500
set CityT[1469] = 0
set CityX[1470] = -15102.500
set CityY[1470] = 1285.500
set CityT[1470] = 0
set CityX[1471] = -14596.000
set CityY[1471] = 1290.750
set CityT[1471] = 0
set CityX[1472] = -14078.250
set CityY[1472] = 1275.250
set CityT[1472] = 0
set CityX[1473] = -13567.750
set CityY[1473] = 1275.500
set CityT[1473] = 0
set CityX[1474] = -13570.500
set CityY[1474] = 769.000
set CityT[1474] = 0
set CityX[1475] = -14078.750
set CityY[1475] = 767.250
set CityT[1475] = 0
set CityX[1476] = -14591.250
set CityY[1476] = 769.250
set CityT[1476] = 0
set CityX[1477] = -15100.000
set CityY[1477] = 774.500
set CityT[1477] = 0
set CityX[1478] = -15104.750
set CityY[1478] = 266.750
set CityT[1478] = 0
set CityX[1479] = -14597.000
set CityY[1479] = 256.500
set CityT[1479] = 0
set CityX[1480] = -14081.250
set CityY[1480] = 254.750
set CityT[1480] = 0
set CityX[1481] = -13573.250
set CityY[1481] = 258.000
set CityT[1481] = 0
set CityX[1482] = -13570.500
set CityY[1482] = -253.250
set CityT[1482] = 0
set CityX[1483] = -14090.000
set CityY[1483] = -258.500
set CityT[1483] = 0
set CityX[1484] = -14599.000
set CityY[1484] = -243.500
set CityT[1484] = 0
set CityX[1485] = -15102.250
set CityY[1485] = -264.750
set CityT[1485] = 0
set CityX[1486] = -15108.000
set CityY[1486] = -760.750
set CityT[1486] = 0
set CityX[1487] = -14593.500
set CityY[1487] = -763.000
set CityT[1487] = 0
set CityX[1488] = -14080.000
set CityY[1488] = -761.750
set CityT[1488] = 0
set CityX[1489] = -13056.500
set CityY[1489] = 8959.750
set CityT[1489] = 0
set CityX[1490] = -12550.000
set CityY[1490] = 8965.250
set CityT[1490] = 0
set CityX[1491] = -12032.250
set CityY[1491] = 8949.500
set CityT[1491] = 0
set CityX[1492] = -11521.750
set CityY[1492] = 8950.000
set CityT[1492] = 0
set CityX[1493] = -12033.500
set CityY[1493] = 9472.000
set CityT[1493] = 0
set CityX[1494] = -11527.000
set CityY[1494] = 9477.500
set CityT[1494] = 0
set CityX[1495] = -11009.250
set CityY[1495] = 9461.750
set CityT[1495] = 0
set CityX[1496] = -11000.500
set CityY[1496] = 8967.000
set CityT[1496] = 0
set CityX[1497] = -10494.000
set CityY[1497] = 8972.500
set CityT[1497] = 0
set CityX[1498] = -9977.000
set CityY[1498] = 8444.750
set CityT[1498] = 0
set CityX[1499] = -11001.250
set CityY[1499] = 8455.000
set CityT[1499] = 0
set CityX[1500] = -10494.750
set CityY[1500] = 8460.250
set CityT[1500] = 0
set CityX[1501] = -9980.250
set CityY[1501] = 7930.500
set CityT[1501] = 0
set CityX[1502] = -11004.500
set CityY[1502] = 7940.750
set CityT[1502] = 0
set CityX[1503] = -10498.000
set CityY[1503] = 7946.000
set CityT[1503] = 0
set CityX[1504] = -9978.250
set CityY[1504] = 7415.000
set CityT[1504] = 0
set CityX[1505] = -11006.500
set CityY[1505] = 6918.000
set CityT[1505] = 0
set CityX[1506] = -11014.750
set CityY[1506] = 5901.750
set CityT[1506] = 0
set CityX[1507] = -13060.500
set CityY[1507] = 4346.500
set CityT[1507] = 0
set CityX[1508] = -11010.000
set CityY[1508] = 6406.000
set CityT[1508] = 0
set CityX[1509] = -10503.500
set CityY[1509] = 6411.500
set CityT[1509] = 0
set CityX[1510] = -12554.000
set CityY[1510] = 4352.000
set CityT[1510] = 0
set CityX[1511] = -11012.000
set CityY[1511] = 5384.250
set CityT[1511] = 0
set CityX[1512] = -10494.750
set CityY[1512] = 5901.250
set CityT[1512] = 0
set CityX[1513] = -10498.500
set CityY[1513] = 5389.000
set CityT[1513] = 0
set CityX[1514] = -11016.750
set CityY[1514] = 3335.250
set CityT[1514] = 0
set CityX[1515] = -11014.000
set CityY[1515] = 2818.000
set CityT[1515] = 0
set CityX[1516] = -10497.000
set CityY[1516] = 3334.750
set CityT[1516] = 0
set CityX[1517] = -10500.500
set CityY[1517] = 2822.750
set CityT[1517] = 0
set CityX[1518] = -13064.500
set CityY[1518] = 774.250
set CityT[1518] = 0
set CityX[1519] = -13061.750
set CityY[1519] = 256.750
set CityT[1519] = 0
set CityX[1520] = -12544.500
set CityY[1520] = 773.750
set CityT[1520] = 0
set CityX[1521] = -12548.250
set CityY[1521] = 261.500
set CityT[1521] = 0
set CityX[1522] = -13060.500
set CityY[1522] = -251.250
set CityT[1522] = 0
set CityX[1523] = -12547.250
set CityY[1523] = -246.500
set CityT[1523] = 0
set CityX[1524] = -12033.000
set CityY[1524] = 766.250
set CityT[1524] = 0
set CityX[1525] = -11016.500
set CityY[1525] = 2303.000
set CityT[1525] = 0
set CityX[1526] = -9474.500
set CityY[1526] = 2311.500
set CityT[1526] = 0
set CityX[1527] = -8961.000
set CityY[1527] = 2316.250
set CityT[1527] = 0
set CityX[1528] = -11013.500
set CityY[1528] = 3846.250
set CityT[1528] = 0
set CityX[1529] = -10493.500
set CityY[1529] = 3845.750
set CityT[1529] = 0
set CityX[1530] = -10507.500
set CityY[1530] = -769.750
set CityT[1530] = 0
set CityX[1531] = -9989.500
set CityY[1531] = 6922.250
set CityT[1531] = 0
set CityX[1532] = -9987.500
set CityY[1532] = -770.250
set CityT[1532] = 0
set CityX[1533] = -10498.000
set CityY[1533] = -1266.500
set CityT[1533] = 0
set CityX[1534] = -9978.250
set CityY[1534] = -1267.000
set CityT[1534] = 0
set CityX[1535] = -9996.750
set CityY[1535] = -252.500
set CityT[1535] = 0
set CityX[1536] = -9476.750
set CityY[1536] = -252.750
set CityT[1536] = 0
call TriggerSleepAction(0.3)
set CityX[1537] = -12548.500
set CityY[1537] = -1787.250
set CityT[1537] = 0
set CityX[1538] = -12028.500
set CityY[1538] = -1787.750
set CityT[1538] = 0
set CityX[1539] = -12547.500
set CityY[1539] = -2288.250
set CityT[1539] = 0
set CityX[1540] = -12027.750
set CityY[1540] = -2288.500
set CityT[1540] = 0
set CityX[1541] = -12548.750
set CityY[1541] = -2808.000
set CityT[1541] = 0
set CityX[1542] = -12028.750
set CityY[1542] = -2808.500
set CityT[1542] = 0
set CityX[1543] = -11009.250
set CityY[1543] = -244.000
set CityT[1543] = 0
set CityX[1544] = -13058.750
set CityY[1544] = -1786.750
set CityT[1544] = 0
set CityX[1545] = -12542.500
set CityY[1545] = -1266.250
set CityT[1545] = 0
set CityX[1546] = -12542.250
set CityY[1546] = -763.750
set CityT[1546] = 0
set CityX[1547] = -10489.500
set CityY[1547] = -244.500
set CityT[1547] = 0
set CityX[1548] = -10504.500
set CityY[1548] = 789.750
set CityT[1548] = 0
set CityX[1549] = -9984.500
set CityY[1549] = 789.250
set CityT[1549] = 0
set CityX[1550] = -6395.250
set CityY[1550] = 2301.500
set CityT[1550] = 0
set CityX[1551] = -6916.750
set CityY[1551] = 2312.000
set CityT[1551] = 0
set CityX[1552] = -5885.500
set CityY[1552] = 767.250
set CityT[1552] = 0
set CityX[1553] = -6924.250
set CityY[1553] = 1787.500
set CityT[1553] = 0
set CityX[1554] = -6394.500
set CityY[1554] = 1799.000
set CityT[1554] = 0
set CityX[1555] = -7424.000
set CityY[1555] = 1812.750
set CityT[1555] = 0
set CityX[1556] = -7437.500
set CityY[1556] = 1272.250
set CityT[1556] = 0
set CityX[1557] = -6911.250
set CityY[1557] = 1291.250
set CityT[1557] = 0
set CityX[1558] = -6412.000
set CityY[1558] = 1290.500
set CityT[1558] = 0
set CityX[1559] = -6407.000
set CityY[1559] = 777.750
set CityT[1559] = 0
set CityX[1560] = -6904.750
set CityY[1560] = 763.250
set CityT[1560] = 0
set CityX[1561] = -6414.500
set CityY[1561] = 253.250
set CityT[1561] = 0
set CityX[1562] = -5884.750
set CityY[1562] = 265.000
set CityT[1562] = 0
set CityX[1563] = -6914.250
set CityY[1563] = 278.500
set CityT[1563] = 0
set CityX[1564] = -6927.750
set CityY[1564] = -262.000
set CityT[1564] = 0
set CityX[1565] = -6401.500
set CityY[1565] = -243.000
set CityT[1565] = 0
set CityX[1566] = -5902.250
set CityY[1566] = -243.750
set CityT[1566] = 0
set CityX[1567] = -6398.500
set CityY[1567] = -764.000
set CityT[1567] = 0
set CityX[1568] = -6920.000
set CityY[1568] = -753.500
set CityT[1568] = 0
set CityX[1569] = -7417.500
set CityY[1569] = -768.000
set CityT[1569] = 0
set CityX[1570] = -6927.500
set CityY[1570] = -1278.000
set CityT[1570] = 0
set CityX[1571] = -6397.500
set CityY[1571] = -1266.500
set CityT[1571] = 0
set CityX[1572] = -761.000
set CityY[1572] = 252.500
set CityT[1572] = 0
set CityX[1573] = -3841.750
set CityY[1573] = -762.250
set CityT[1573] = 0
set CityX[1574] = -6914.250
set CityY[1574] = -1774.250
set CityT[1574] = 0
set CityX[1575] = -6415.250
set CityY[1575] = -1775.000
set CityT[1575] = 0
set CityX[1576] = -4339.500
set CityY[1576] = -776.750
set CityT[1576] = 0
set CityX[1577] = -3849.250
set CityY[1577] = -1286.750
set CityT[1577] = 0
set CityX[1578] = -3319.500
set CityY[1578] = -1275.000
set CityT[1578] = 0
set CityX[1579] = -1282.500
set CityY[1579] = 263.000
set CityT[1579] = 0
set CityX[1580] = -767.000
set CityY[1580] = 759.000
set CityT[1580] = 0
set CityX[1581] = -1290.000
set CityY[1581] = -261.500
set CityT[1581] = 0
set CityX[1582] = -3337.000
set CityY[1582] = -1783.750
set CityT[1582] = 0
set CityX[1583] = -760.250
set CityY[1583] = -250.000
set CityT[1583] = 0
set CityX[1584] = -1789.500
set CityY[1584] = -236.250
set CityT[1584] = 0
set CityX[1585] = -15106.500
set CityY[1585] = -3316.250
set CityT[1585] = 0
set CityX[1586] = -1277.000
set CityY[1586] = -757.750
set CityT[1586] = 0
set CityX[1587] = -777.750
set CityY[1587] = -758.750
set CityT[1587] = 0
set CityX[1588] = -14588.000
set CityY[1588] = -2297.500
set CityT[1588] = 0
set CityX[1589] = -15111.500
set CityY[1589] = -5365.500
set CityT[1589] = 0
set CityX[1590] = -13564.250
set CityY[1590] = -2305.750
set CityT[1590] = 0
set CityX[1591] = -15104.250
set CityY[1591] = -2282.250
set CityT[1591] = 0
set CityX[1592] = -14593.250
set CityY[1592] = -4347.000
set CityT[1592] = 0
set CityX[1593] = -14092.000
set CityY[1593] = -4350.500
set CityT[1593] = 0
set CityX[1594] = -13569.250
set CityY[1594] = -4355.000
set CityT[1594] = 0
set CityX[1595] = -15100.500
set CityY[1595] = -2790.250
set CityT[1595] = 0
set CityX[1596] = -14590.500
set CityY[1596] = -3331.500
set CityT[1596] = 0
set CityX[1597] = -14089.250
set CityY[1597] = -3335.250
set CityT[1597] = 0
set CityX[1598] = -15109.250
set CityY[1598] = -4331.750
set CityT[1598] = 0
set CityX[1599] = -14584.500
set CityY[1599] = -3833.500
set CityT[1599] = 0
set CityX[1600] = -14083.250
set CityY[1600] = -3837.250
set CityT[1600] = 0
set CityX[1601] = -15104.250
set CityY[1601] = -7418.750
set CityT[1601] = 0
set CityX[1602] = -15100.500
set CityY[1602] = -3818.250
set CityT[1602] = 0
set CityX[1603] = -14585.750
set CityY[1603] = -6400.250
set CityT[1603] = 0
set CityX[1604] = -14084.500
set CityY[1604] = -6403.750
set CityT[1604] = 0
set CityX[1605] = -15105.500
set CityY[1605] = -4839.750
set CityT[1605] = 0
set CityX[1606] = -14595.500
set CityY[1606] = -5381.000
set CityT[1606] = 0
set CityX[1607] = -14094.250
set CityY[1607] = -5384.500
set CityT[1607] = 0
set CityX[1608] = -13571.500
set CityY[1608] = -5389.000
set CityT[1608] = 0
set CityX[1609] = -14589.500
set CityY[1609] = -5883.000
set CityT[1609] = 0
set CityX[1610] = -14088.250
set CityY[1610] = -5886.500
set CityT[1610] = 0
set CityX[1611] = -15111.000
set CityY[1611] = -9461.000
set CityT[1611] = 0
set CityX[1612] = -15105.500
set CityY[1612] = -5867.750
set CityT[1612] = 0
set CityX[1613] = -15102.000
set CityY[1613] = -6384.750
set CityT[1613] = 0
set CityX[1614] = -14581.750
set CityY[1614] = -6908.250
set CityT[1614] = 0
set CityX[1615] = -14080.500
set CityY[1615] = -6911.750
set CityT[1615] = 0
set CityX[1616] = -14592.500
set CityY[1616] = -8442.500
set CityT[1616] = 0
set CityX[1617] = -15098.000
set CityY[1617] = -6893.000
set CityT[1617] = 0
set CityX[1618] = -14588.000
set CityY[1618] = -7434.000
set CityT[1618] = 0
set CityX[1619] = -14086.750
set CityY[1619] = -7437.750
set CityT[1619] = 0
set CityX[1620] = -13564.000
set CityY[1620] = -7442.250
set CityT[1620] = 0
set CityX[1621] = -14582.000
set CityY[1621] = -7936.250
set CityT[1621] = 0
set CityX[1622] = -14080.750
set CityY[1622] = -7939.750
set CityT[1622] = 0
set CityX[1623] = -13558.000
set CityY[1623] = -7944.250
set CityT[1623] = 0
set CityX[1624] = -15098.250
set CityY[1624] = -7921.000
set CityT[1624] = 0
set CityX[1625] = -14091.250
set CityY[1625] = -8446.000
set CityT[1625] = 0
set CityX[1626] = -13568.500
set CityY[1626] = -8450.500
set CityT[1626] = 0
set CityX[1627] = -15108.500
set CityY[1627] = -8427.000
set CityT[1627] = 0
set CityX[1628] = -14588.500
set CityY[1628] = -8950.500
set CityT[1628] = 0
set CityX[1629] = -14087.250
set CityY[1629] = -8954.000
set CityT[1629] = 0
set CityX[1630] = -13564.500
set CityY[1630] = -8958.500
set CityT[1630] = 0
set CityX[1631] = -15104.750
set CityY[1631] = -8935.250
set CityT[1631] = 0
set CityX[1632] = -14594.750
set CityY[1632] = -9476.500
set CityT[1632] = 0
set CityX[1633] = -14093.500
set CityY[1633] = -9480.000
set CityT[1633] = 0
set CityX[1634] = -13570.750
set CityY[1634] = -9484.500
set CityT[1634] = 0
set CityX[1635] = -14588.750
set CityY[1635] = -9978.500
set CityT[1635] = 0
set CityX[1636] = -14087.500
set CityY[1636] = -9982.000
set CityT[1636] = 0
set CityX[1637] = -13564.750
set CityY[1637] = -9986.500
set CityT[1637] = 0
set CityX[1638] = -15105.000
set CityY[1638] = -9963.250
set CityT[1638] = 0
set CityX[1639] = -13064.000
set CityY[1639] = -8442.750
set CityT[1639] = 0
set CityX[1640] = -13060.000
set CityY[1640] = -10358.000
set CityT[1640] = 0
set CityX[1641] = -12541.500
set CityY[1641] = -9339.500
set CityT[1641] = 0
set CityX[1642] = -13572.500
set CityY[1642] = -12534.000
set CityT[1642] = 0
set CityX[1643] = -13054.250
set CityY[1643] = -11515.250
set CityT[1643] = 0
set CityX[1644] = -13057.500
set CityY[1644] = -9324.000
set CityT[1644] = 0
set CityX[1645] = -12537.500
set CityY[1645] = -9847.500
set CityT[1645] = 0
set CityX[1646] = -12036.250
set CityY[1646] = -9851.000
set CityT[1646] = 0
set CityX[1647] = -13057.750
set CityY[1647] = -7917.000
set CityT[1647] = 0
set CityX[1648] = -12553.000
set CityY[1648] = -11519.000
set CityT[1648] = 0
set CityX[1649] = -13053.750
set CityY[1649] = -9832.000
set CityT[1649] = 0
set CityX[1650] = -12543.750
set CityY[1650] = -10373.500
set CityT[1650] = 0
set CityX[1651] = -12541.750
set CityY[1651] = -8960.250
set CityT[1651] = 0
set CityX[1652] = -12030.250
set CityY[1652] = -11523.500
set CityT[1652] = 0
set CityX[1653] = -13570.250
set CityY[1653] = -11500.000
set CityT[1653] = 0
set CityX[1654] = -13058.000
set CityY[1654] = -8945.000
set CityT[1654] = 0
set CityX[1655] = -12042.500
set CityY[1655] = -10377.000
set CityT[1655] = 0
set CityX[1656] = -11519.750
set CityY[1656] = -10381.500
set CityT[1656] = 0
set CityX[1657] = -12537.750
set CityY[1657] = -10875.500
set CityT[1657] = 0
set CityX[1658] = -12036.500
set CityY[1658] = -10879.000
set CityT[1658] = 0
set CityX[1659] = -11513.750
set CityY[1659] = -10883.500
set CityT[1659] = 0
set CityX[1660] = -13054.000
set CityY[1660] = -10860.000
set CityT[1660] = 0
set CityX[1661] = -13050.250
set CityY[1661] = -12023.250
set CityT[1661] = 0
set CityX[1662] = -12549.000
set CityY[1662] = -12027.000
set CityT[1662] = 0
set CityX[1663] = -12026.250
set CityY[1663] = -12031.500
set CityT[1663] = 0
set CityX[1664] = -13566.500
set CityY[1664] = -12008.000
set CityT[1664] = 0
call TriggerSleepAction(0.3)
set CityX[1665] = -13056.500
set CityY[1665] = -12549.250
set CityT[1665] = 0
set CityX[1666] = -12555.250
set CityY[1666] = -12553.000
set CityT[1666] = 0
set CityX[1667] = -12032.500
set CityY[1667] = -12557.500
set CityT[1667] = 0
set CityX[1668] = -13050.500
set CityY[1668] = -13051.250
set CityT[1668] = 0
set CityX[1669] = -12549.250
set CityY[1669] = -13055.000
set CityT[1669] = 0
set CityX[1670] = -12026.500
set CityY[1670] = -13059.500
set CityT[1670] = 0
set CityX[1671] = -13566.500
set CityY[1671] = -13036.000
set CityT[1671] = 0
set CityX[1672] = -13573.500
set CityY[1672] = -14584.000
set CityT[1672] = 0
set CityX[1673] = -13055.000
set CityY[1673] = -13565.500
set CityT[1673] = 0
set CityX[1674] = -12553.750
set CityY[1674] = -13569.000
set CityT[1674] = 0
set CityX[1675] = -14585.000
set CityY[1675] = -13055.750
set CityT[1675] = 0
set CityX[1676] = -13571.250
set CityY[1676] = -13550.000
set CityT[1676] = 0
set CityX[1677] = -13051.000
set CityY[1677] = -14073.500
set CityT[1677] = 0
set CityX[1678] = -12550.000
set CityY[1678] = -14077.000
set CityT[1678] = 0
set CityX[1679] = -14084.000
set CityY[1679] = -13059.500
set CityT[1679] = 0
set CityX[1680] = -13567.250
set CityY[1680] = -14058.000
set CityT[1680] = 0
set CityX[1681] = -13057.500
set CityY[1681] = -14599.250
set CityT[1681] = 0
set CityX[1682] = -12556.000
set CityY[1682] = -14603.000
set CityT[1682] = 0
set CityX[1683] = -12033.500
set CityY[1683] = -14607.500
set CityT[1683] = 0
set CityX[1684] = -13051.500
set CityY[1684] = -15101.500
set CityT[1684] = 0
set CityX[1685] = -12550.000
set CityY[1685] = -15105.000
set CityT[1685] = 0
set CityX[1686] = -12027.500
set CityY[1686] = -15109.500
set CityT[1686] = 0
set CityX[1687] = -13567.500
set CityY[1687] = -15086.000
set CityT[1687] = 0
set CityX[1688] = -15101.250
set CityY[1688] = -13040.500
set CityT[1688] = 0
set CityX[1689] = -15108.250
set CityY[1689] = -14588.500
set CityT[1689] = 0
set CityX[1690] = -14589.750
set CityY[1690] = -13569.750
set CityT[1690] = 0
set CityX[1691] = -14088.500
set CityY[1691] = -13573.500
set CityT[1691] = 0
set CityX[1692] = -15102.250
set CityY[1692] = -15090.500
set CityT[1692] = 0
set CityX[1693] = -15106.000
set CityY[1693] = -13554.500
set CityT[1693] = 0
set CityX[1694] = -14585.750
set CityY[1694] = -14077.750
set CityT[1694] = 0
set CityX[1695] = -14084.500
set CityY[1695] = -14081.500
set CityT[1695] = 0
set CityX[1696] = -15102.000
set CityY[1696] = -14062.500
set CityT[1696] = 0
set CityX[1697] = -14592.000
set CityY[1697] = -14603.750
set CityT[1697] = 0
set CityX[1698] = -14090.750
set CityY[1698] = -14607.250
set CityT[1698] = 0
set CityX[1699] = -14586.000
set CityY[1699] = -15105.750
set CityT[1699] = 0
set CityX[1700] = -14084.750
set CityY[1700] = -15109.500
set CityT[1700] = 0
set CityX[1701] = -15111.500
set CityY[1701] = -11002.500
set CityT[1701] = 0
set CityX[1702] = -14589.250
set CityY[1702] = -10492.000
set CityT[1702] = 0
set CityX[1703] = -14088.000
set CityY[1703] = -10495.500
set CityT[1703] = 0
set CityX[1704] = -15105.250
set CityY[1704] = -10476.750
set CityT[1704] = 0
set CityX[1705] = -13569.500
set CityY[1705] = -10504.500
set CityT[1705] = 0
set CityX[1706] = -14094.000
set CityY[1706] = -11021.500
set CityT[1706] = 0
set CityX[1707] = -14589.500
set CityY[1707] = -11520.000
set CityT[1707] = 0
set CityX[1708] = -14088.000
set CityY[1708] = -11523.500
set CityT[1708] = 0
set CityX[1709] = -15105.500
set CityY[1709] = -11504.750
set CityT[1709] = 0
set CityX[1710] = -13563.500
set CityY[1710] = -11006.500
set CityT[1710] = 0
set CityX[1711] = -14083.000
set CityY[1711] = -12026.000
set CityT[1711] = 0
set CityX[1712] = -14077.250
set CityY[1712] = -12528.000
set CityT[1712] = 0
set CityX[1713] = -11525.250
set CityY[1713] = -14590.000
set CityT[1713] = 0
set CityX[1714] = -11519.250
set CityY[1714] = -15092.000
set CityT[1714] = 0
set CityX[1715] = -10499.250
set CityY[1715] = -14088.250
set CityT[1715] = 0
set CityX[1716] = -10493.250
set CityY[1716] = -14590.250
set CityT[1716] = 0
set CityX[1717] = -12028.250
set CityY[1717] = 246.750
set CityT[1717] = 0
set CityX[1718] = -11001.000
set CityY[1718] = -15094.750
set CityT[1718] = 0
set CityX[1719] = -11516.500
set CityY[1719] = -12037.000
set CityT[1719] = 0
set CityX[1720] = -11507.750
set CityY[1720] = -2313.000
set CityT[1720] = 0
set CityX[1721] = -11516.500
set CityY[1721] = -2810.000
set CityT[1721] = 0
set CityX[1722] = -10478.750
set CityY[1722] = -2326.250
set CityT[1722] = 0
set CityX[1723] = -10490.000
set CityY[1723] = -2811.000
set CityT[1723] = 0
set CityX[1724] = -9990.750
set CityY[1724] = -2819.250
set CityT[1724] = 0
set CityX[1725] = -10493.000
set CityY[1725] = -3321.250
set CityT[1725] = 0
set CityX[1726] = -9975.000
set CityY[1726] = -3334.750
set CityT[1726] = 0
set CityX[1727] = -10004.500
set CityY[1727] = 5884.500
set CityT[1727] = 0
set CityX[1728] = -9469.500
set CityY[1728] = 7411.250
set CityT[1728] = 0
set CityX[1729] = -9471.000
set CityY[1729] = 6919.750
set CityT[1729] = 0
set CityX[1730] = -9993.500
set CityY[1730] = -5369.250
set CityT[1730] = 0
set CityX[1731] = -9987.500
set CityY[1731] = -5871.250
set CityT[1731] = 0
set CityX[1732] = -9987.500
set CityY[1732] = -4843.250
set CityT[1732] = 0
set CityX[1733] = -11528.250
set CityY[1733] = -5373.500
set CityT[1733] = 0
set CityX[1734] = -11522.250
set CityY[1734] = -5875.750
set CityT[1734] = 0
set CityX[1735] = -11006.000
set CityY[1735] = -4863.000
set CityT[1735] = 0
set CityX[1736] = -10504.750
set CityY[1736] = -4866.500
set CityT[1736] = 0
set CityX[1737] = -11522.000
set CityY[1737] = -4847.750
set CityT[1737] = 0
set CityX[1738] = -11012.250
set CityY[1738] = -5389.000
set CityT[1738] = 0
set CityX[1739] = -10511.000
set CityY[1739] = -5392.500
set CityT[1739] = 0
set CityX[1740] = -11006.250
set CityY[1740] = -5891.000
set CityT[1740] = 0
set CityX[1741] = -10505.000
set CityY[1741] = -5894.750
set CityT[1741] = 0
set CityX[1742] = -9987.000
set CityY[1742] = -6381.500
set CityT[1742] = 0
set CityX[1743] = -11521.750
set CityY[1743] = -6386.000
set CityT[1743] = 0
set CityX[1744] = -11005.500
set CityY[1744] = -6401.250
set CityT[1744] = 0
set CityX[1745] = -10504.250
set CityY[1745] = -6405.000
set CityT[1745] = 0
set CityX[1746] = -7945.500
set CityY[1746] = -4345.500
set CityT[1746] = 0
set CityX[1747] = -7939.500
set CityY[1747] = -4847.500
set CityT[1747] = 0
set CityX[1748] = -8961.750
set CityY[1748] = -8950.750
set CityT[1748] = 0
set CityX[1749] = -9480.000
set CityY[1749] = -4349.750
set CityT[1749] = 0
set CityX[1750] = -9474.000
set CityY[1750] = -4851.750
set CityT[1750] = 0
set CityX[1751] = -8957.750
set CityY[1751] = -3839.000
set CityT[1751] = 0
set CityX[1752] = -8961.500
set CityY[1752] = -7922.750
set CityT[1752] = 0
set CityX[1753] = -9474.000
set CityY[1753] = -3823.750
set CityT[1753] = 0
set CityX[1754] = -8964.000
set CityY[1754] = -4365.000
set CityT[1754] = 0
set CityX[1755] = -8462.750
set CityY[1755] = -4368.750
set CityT[1755] = 0
set CityX[1756] = -8958.000
set CityY[1756] = -4867.250
set CityT[1756] = 0
set CityX[1757] = -8456.750
set CityY[1757] = -4870.750
set CityT[1757] = 0
set CityX[1758] = -7939.000
set CityY[1758] = -5357.750
set CityT[1758] = 0
set CityX[1759] = -9473.500
set CityY[1759] = -5362.000
set CityT[1759] = 0
set CityX[1760] = -8957.500
set CityY[1760] = -5377.500
set CityT[1760] = 0
set CityX[1761] = -8456.000
set CityY[1761] = -5381.000
set CityT[1761] = 0
set CityX[1762] = -10502.500
set CityY[1762] = -8453.250
set CityT[1762] = 0
set CityX[1763] = -10496.500
set CityY[1763] = -8955.250
set CityT[1763] = 0
set CityX[1764] = -9980.000
set CityY[1764] = -7942.500
set CityT[1764] = 0
set CityX[1765] = -9479.000
set CityY[1765] = -7946.250
set CityT[1765] = 0
set CityX[1766] = -10496.250
set CityY[1766] = -7927.250
set CityT[1766] = 0
set CityX[1767] = -9986.500
set CityY[1767] = -8468.500
set CityT[1767] = 0
set CityX[1768] = -9485.000
set CityY[1768] = -8472.000
set CityT[1768] = 0
set CityX[1769] = -9980.500
set CityY[1769] = -8970.500
set CityT[1769] = 0
set CityX[1770] = -9479.000
set CityY[1770] = -8974.250
set CityT[1770] = 0
set CityX[1771] = -8961.250
set CityY[1771] = -9461.000
set CityT[1771] = 0
set CityX[1772] = -10496.000
set CityY[1772] = -9465.500
set CityT[1772] = 0
set CityX[1773] = -9979.750
set CityY[1773] = -9480.750
set CityT[1773] = 0
set CityX[1774] = -9478.500
set CityY[1774] = -9484.500
set CityT[1774] = 0
set CityX[1775] = -6916.000
set CityY[1775] = -8441.500
set CityT[1775] = 0
set CityX[1776] = -6910.000
set CityY[1776] = -8943.500
set CityT[1776] = 0
set CityX[1777] = -6909.750
set CityY[1777] = -7915.500
set CityT[1777] = 0
set CityX[1778] = -8450.500
set CityY[1778] = -8445.750
set CityT[1778] = 0
set CityX[1779] = -8444.500
set CityY[1779] = -8948.000
set CityT[1779] = 0
set CityX[1780] = -7928.250
set CityY[1780] = -7935.250
set CityT[1780] = 0
set CityX[1781] = -7427.000
set CityY[1781] = -7938.750
set CityT[1781] = 0
set CityX[1782] = -8444.500
set CityY[1782] = -7919.750
set CityT[1782] = 0
set CityX[1783] = -7934.500
set CityY[1783] = -8461.000
set CityT[1783] = 0
set CityX[1784] = -7433.250
set CityY[1784] = -8464.750
set CityT[1784] = 0
set CityX[1785] = -7928.500
set CityY[1785] = -8963.250
set CityT[1785] = 0
set CityX[1786] = -7427.250
set CityY[1786] = -8966.750
set CityT[1786] = 0
set CityX[1787] = -6909.250
set CityY[1787] = -9453.750
set CityT[1787] = 0
set CityX[1788] = -8444.000
set CityY[1788] = -9458.000
set CityT[1788] = 0
set CityX[1789] = -7928.000
set CityY[1789] = -9473.500
set CityT[1789] = 0
set CityX[1790] = -7426.500
set CityY[1790] = -9477.000
set CityT[1790] = 0
set CityX[1791] = -6918.000
set CityY[1791] = -10489.250
set CityT[1791] = 0
set CityX[1792] = -6912.000
set CityY[1792] = -10991.250
set CityT[1792] = 0
call TriggerSleepAction(0.3)
set CityX[1793] = -6911.750
set CityY[1793] = -9963.250
set CityT[1793] = 0
set CityX[1794] = -8452.500
set CityY[1794] = -10493.500
set CityT[1794] = 0
set CityX[1795] = -8446.500
set CityY[1795] = -10995.750
set CityT[1795] = 0
set CityX[1796] = -7930.250
set CityY[1796] = -9983.000
set CityT[1796] = 0
set CityX[1797] = -7429.000
set CityY[1797] = -9986.500
set CityT[1797] = 0
set CityX[1798] = -8446.500
set CityY[1798] = -9967.750
set CityT[1798] = 0
set CityX[1799] = -7936.500
set CityY[1799] = -10509.000
set CityT[1799] = 0
set CityX[1800] = -7435.250
set CityY[1800] = -10512.500
set CityT[1800] = 0
set CityX[1801] = -7930.500
set CityY[1801] = -11011.000
set CityT[1801] = 0
set CityX[1802] = -7429.250
set CityY[1802] = -11014.500
set CityT[1802] = 0
set CityX[1803] = -6911.500
set CityY[1803] = -11501.500
set CityT[1803] = 0
set CityX[1804] = -8446.000
set CityY[1804] = -11506.000
set CityT[1804] = 0
set CityX[1805] = -7930.000
set CityY[1805] = -11521.250
set CityT[1805] = 0
set CityX[1806] = -7428.500
set CityY[1806] = -11525.000
set CityT[1806] = 0
set CityX[1807] = -6917.500
set CityY[1807] = -12538.000
set CityT[1807] = 0
set CityX[1808] = -6911.500
set CityY[1808] = -13040.250
set CityT[1808] = 0
set CityX[1809] = -6911.250
set CityY[1809] = -12012.250
set CityT[1809] = 0
set CityX[1810] = -8452.250
set CityY[1810] = -12542.500
set CityT[1810] = 0
set CityX[1811] = -8446.250
set CityY[1811] = -13044.500
set CityT[1811] = 0
set CityX[1812] = -7929.750
set CityY[1812] = -12032.000
set CityT[1812] = 0
set CityX[1813] = -7428.500
set CityY[1813] = -12035.500
set CityT[1813] = 0
set CityX[1814] = -8446.000
set CityY[1814] = -12016.500
set CityT[1814] = 0
set CityX[1815] = -7936.000
set CityY[1815] = -12558.000
set CityT[1815] = 0
set CityX[1816] = -7434.750
set CityY[1816] = -12561.500
set CityT[1816] = 0
set CityX[1817] = -7930.000
set CityY[1817] = -13060.000
set CityT[1817] = 0
set CityX[1818] = -7428.750
set CityY[1818] = -13063.500
set CityT[1818] = 0
set CityX[1819] = -6911.000
set CityY[1819] = -13550.500
set CityT[1819] = 0
set CityX[1820] = -8445.500
set CityY[1820] = -13555.000
set CityT[1820] = 0
set CityX[1821] = -7929.500
set CityY[1821] = -13570.250
set CityT[1821] = 0
set CityX[1822] = -7428.250
set CityY[1822] = -13573.750
set CityT[1822] = 0
set CityX[1823] = -5892.750
set CityY[1823] = -4340.000
set CityT[1823] = 0
set CityX[1824] = -5886.750
set CityY[1824] = -4842.000
set CityT[1824] = 0
set CityX[1825] = -5886.500
set CityY[1825] = -3814.000
set CityT[1825] = 0
set CityX[1826] = -7427.500
set CityY[1826] = -4344.500
set CityT[1826] = 0
set CityX[1827] = -7421.500
set CityY[1827] = -4846.500
set CityT[1827] = 0
set CityX[1828] = -5380.750
set CityY[1828] = -6399.000
set CityT[1828] = 0
set CityX[1829] = -6403.750
set CityY[1829] = -3837.500
set CityT[1829] = 0
set CityX[1830] = -7421.250
set CityY[1830] = -3818.500
set CityT[1830] = 0
set CityX[1831] = -5374.750
set CityY[1831] = -6901.000
set CityT[1831] = 0
set CityX[1832] = -6410.000
set CityY[1832] = -4363.250
set CityT[1832] = 0
set CityX[1833] = -6905.250
set CityY[1833] = -4861.750
set CityT[1833] = 0
set CityX[1834] = -5374.500
set CityY[1834] = -5873.000
set CityT[1834] = 0
set CityX[1835] = -5886.000
set CityY[1835] = -5352.250
set CityT[1835] = 0
set CityX[1836] = -7420.750
set CityY[1836] = -5356.750
set CityT[1836] = 0
set CityX[1837] = -6904.750
set CityY[1837] = -5372.000
set CityT[1837] = 0
set CityX[1838] = -6403.500
set CityY[1838] = -5375.500
set CityT[1838] = 0
set CityX[1839] = -6915.500
set CityY[1839] = -6403.250
set CityT[1839] = 0
set CityX[1840] = -6909.500
set CityY[1840] = -6905.500
set CityT[1840] = 0
set CityX[1841] = -6393.000
set CityY[1841] = -5892.750
set CityT[1841] = 0
set CityX[1842] = -5891.750
set CityY[1842] = -5896.250
set CityT[1842] = 0
set CityX[1843] = -6909.250
set CityY[1843] = -5877.500
set CityT[1843] = 0
set CityX[1844] = -6399.250
set CityY[1844] = -6418.500
set CityT[1844] = 0
set CityX[1845] = -5898.000
set CityY[1845] = -6422.250
set CityT[1845] = 0
set CityX[1846] = -6393.250
set CityY[1846] = -6920.750
set CityT[1846] = 0
set CityX[1847] = -5892.000
set CityY[1847] = -6924.250
set CityT[1847] = 0
set CityX[1848] = -5374.250
set CityY[1848] = -7411.250
set CityT[1848] = 0
set CityX[1849] = -6908.750
set CityY[1849] = -7415.500
set CityT[1849] = 0
set CityX[1850] = -6392.750
set CityY[1850] = -7431.000
set CityT[1850] = 0
set CityX[1851] = -5891.500
set CityY[1851] = -7434.500
set CityT[1851] = 0
set CityX[1852] = -3331.000
set CityY[1852] = -6392.500
set CityT[1852] = 0
set CityX[1853] = -3325.000
set CityY[1853] = -6894.500
set CityT[1853] = 0
set CityX[1854] = -3324.750
set CityY[1854] = -5866.500
set CityT[1854] = 0
set CityX[1855] = -4865.750
set CityY[1855] = -6397.000
set CityT[1855] = 0
set CityX[1856] = -4859.750
set CityY[1856] = -6899.000
set CityT[1856] = 0
set CityX[1857] = -4343.250
set CityY[1857] = -5886.250
set CityT[1857] = 0
set CityX[1858] = -3842.000
set CityY[1858] = -5890.000
set CityT[1858] = 0
set CityX[1859] = -4859.500
set CityY[1859] = -5871.000
set CityT[1859] = 0
set CityX[1860] = -4349.500
set CityY[1860] = -6412.250
set CityT[1860] = 0
set CityX[1861] = -3848.250
set CityY[1861] = -6415.750
set CityT[1861] = 0
set CityX[1862] = -4343.500
set CityY[1862] = -6914.250
set CityT[1862] = 0
set CityX[1863] = -3842.250
set CityY[1863] = -6918.000
set CityT[1863] = 0
set CityX[1864] = -3324.500
set CityY[1864] = -7404.750
set CityT[1864] = 0
set CityX[1865] = -4859.000
set CityY[1865] = -7409.250
set CityT[1865] = 0
set CityX[1866] = -4343.000
set CityY[1866] = -7424.500
set CityT[1866] = 0
set CityX[1867] = -3841.750
set CityY[1867] = -7428.250
set CityT[1867] = 0
set CityX[1868] = -3845.500
set CityY[1868] = -4350.250
set CityT[1868] = 0
set CityX[1869] = -3839.500
set CityY[1869] = -4852.250
set CityT[1869] = 0
set CityX[1870] = -5378.250
set CityY[1870] = -7931.000
set CityT[1870] = 0
set CityX[1871] = -5380.000
set CityY[1871] = -4354.500
set CityT[1871] = 0
set CityX[1872] = -5374.000
set CityY[1872] = -4856.750
set CityT[1872] = 0
set CityX[1873] = -6396.750
set CityY[1873] = -7950.500
set CityT[1873] = 0
set CityX[1874] = -5895.500
set CityY[1874] = -7954.250
set CityT[1874] = 0
set CityX[1875] = -5373.750
set CityY[1875] = -3828.500
set CityT[1875] = 0
set CityX[1876] = -4864.000
set CityY[1876] = -4370.000
set CityT[1876] = 0
set CityX[1877] = -4362.500
set CityY[1877] = -4373.500
set CityT[1877] = 0
set CityX[1878] = -4858.000
set CityY[1878] = -4872.000
set CityT[1878] = 0
set CityX[1879] = -4356.750
set CityY[1879] = -4875.500
set CityT[1879] = 0
set CityX[1880] = -3838.750
set CityY[1880] = -5362.500
set CityT[1880] = 0
set CityX[1881] = -5373.500
set CityY[1881] = -5367.000
set CityT[1881] = 0
set CityX[1882] = -4857.250
set CityY[1882] = -5382.250
set CityT[1882] = 0
set CityX[1883] = -4356.000
set CityY[1883] = -5386.000
set CityT[1883] = 0
set CityX[1884] = -5377.750
set CityY[1884] = -8441.250
set CityT[1884] = 0
set CityX[1885] = -6396.250
set CityY[1885] = -8461.000
set CityT[1885] = 0
set CityX[1886] = -5895.000
set CityY[1886] = -8464.500
set CityT[1886] = 0
set CityX[1887] = -3328.500
set CityY[1887] = -7924.500
set CityT[1887] = 0
set CityX[1888] = -4863.250
set CityY[1888] = -7929.000
set CityT[1888] = 0
set CityX[1889] = -4347.000
set CityY[1889] = -7944.250
set CityT[1889] = 0
set CityX[1890] = -3845.750
set CityY[1890] = -7947.750
set CityT[1890] = 0
set CityX[1891] = -3328.000
set CityY[1891] = -8434.750
set CityT[1891] = 0
set CityX[1892] = -4862.500
set CityY[1892] = -8439.250
set CityT[1892] = 0
set CityX[1893] = -4346.500
set CityY[1893] = -8454.500
set CityT[1893] = 0
set CityX[1894] = -3845.250
set CityY[1894] = -8458.000
set CityT[1894] = 0
set CityX[1895] = -4867.750
set CityY[1895] = -8949.000
set CityT[1895] = 0
set CityX[1896] = -2306.000
set CityY[1896] = -4855.250
set CityT[1896] = 0
set CityX[1897] = -2822.500
set CityY[1897] = -5388.750
set CityT[1897] = 0
set CityX[1898] = -3323.750
set CityY[1898] = -5385.000
set CityT[1898] = 0
set CityX[1899] = -3330.500
set CityY[1899] = -4372.750
set CityT[1899] = 0
set CityX[1900] = -2829.000
set CityY[1900] = -4376.500
set CityT[1900] = 0
set CityX[1901] = -3324.500
set CityY[1901] = -4875.000
set CityT[1901] = 0
set CityX[1902] = -2823.000
set CityY[1902] = -4878.500
set CityT[1902] = 0
set CityX[1903] = -2305.250
set CityY[1903] = -5365.500
set CityT[1903] = 0
set CityX[1904] = -1788.000
set CityY[1904] = -6387.750
set CityT[1904] = 0
set CityX[1905] = -2304.750
set CityY[1905] = -6921.500
set CityT[1905] = 0
set CityX[1906] = -2806.000
set CityY[1906] = -6917.750
set CityT[1906] = 0
set CityX[1907] = -2812.500
set CityY[1907] = -5905.500
set CityT[1907] = 0
set CityX[1908] = -2311.500
set CityY[1908] = -5909.000
set CityT[1908] = 0
set CityX[1909] = -2806.500
set CityY[1909] = -6407.500
set CityT[1909] = 0
set CityX[1910] = -2305.500
set CityY[1910] = -6411.250
set CityT[1910] = 0
set CityX[1911] = -1787.500
set CityY[1911] = -6898.000
set CityT[1911] = 0
set CityX[1912] = -4861.750
set CityY[1912] = -9451.000
set CityT[1912] = 0
set CityX[1913] = -5378.500
set CityY[1913] = -9984.500
set CityT[1913] = 0
set CityX[1914] = -5879.750
set CityY[1914] = -9981.000
set CityT[1914] = 0
set CityX[1915] = -5886.500
set CityY[1915] = -8968.500
set CityT[1915] = 0
set CityX[1916] = -5385.000
set CityY[1916] = -8972.250
set CityT[1916] = 0
set CityX[1917] = -5880.500
set CityY[1917] = -9470.750
set CityT[1917] = 0
set CityX[1918] = -5379.000
set CityY[1918] = -9474.250
set CityT[1918] = 0
set CityX[1919] = -4861.250
set CityY[1919] = -9961.250
set CityT[1919] = 0
set CityX[1920] = -1796.000
set CityY[1920] = -8956.500
set CityT[1920] = 0
call TriggerSleepAction(0.3)
set CityX[1921] = -1790.000
set CityY[1921] = -9458.500
set CityT[1921] = 0
set CityX[1922] = -2306.750
set CityY[1922] = -9992.250
set CityT[1922] = 0
set CityX[1923] = -2808.000
set CityY[1923] = -9988.500
set CityT[1923] = 0
set CityX[1924] = -2814.500
set CityY[1924] = -8976.250
set CityT[1924] = 0
set CityX[1925] = -2313.500
set CityY[1925] = -8979.750
set CityT[1925] = 0
set CityX[1926] = -2808.500
set CityY[1926] = -9478.250
set CityT[1926] = 0
set CityX[1927] = -2307.500
set CityY[1927] = -9482.000
set CityT[1927] = 0
set CityX[1928] = -1789.500
set CityY[1928] = -9968.750
set CityT[1928] = 0
set CityX[1929] = -258.750
set CityY[1929] = -8938.250
set CityT[1929] = 0
set CityX[1930] = -252.750
set CityY[1930] = -9440.250
set CityT[1930] = 0
set CityX[1931] = -769.500
set CityY[1931] = -9974.000
set CityT[1931] = 0
set CityX[1932] = -1270.750
set CityY[1932] = -9970.250
set CityT[1932] = 0
set CityX[1933] = -1277.250
set CityY[1933] = -8958.000
set CityT[1933] = 0
set CityX[1934] = -776.000
set CityY[1934] = -8961.500
set CityT[1934] = 0
set CityX[1935] = -1271.250
set CityY[1935] = -9460.000
set CityT[1935] = 0
set CityX[1936] = -770.000
set CityY[1936] = -9463.750
set CityT[1936] = 0
set CityX[1937] = -252.250
set CityY[1937] = -9950.500
set CityT[1937] = 0
set CityX[1938] = 1789.000
set CityY[1938] = -9469.000
set CityT[1938] = 0
set CityX[1939] = 1795.000
set CityY[1939] = -9971.000
set CityT[1939] = 0
set CityX[1940] = -4352.250
set CityY[1940] = -10487.000
set CityT[1940] = 0
set CityX[1941] = 777.000
set CityY[1941] = -10501.000
set CityT[1941] = 0
set CityX[1942] = 770.500
set CityY[1942] = -9488.750
set CityT[1942] = 0
set CityX[1943] = 1271.750
set CityY[1943] = -9492.500
set CityT[1943] = 0
set CityX[1944] = 776.500
set CityY[1944] = -9990.750
set CityT[1944] = 0
set CityX[1945] = 1277.750
set CityY[1945] = -9994.500
set CityT[1945] = 0
set CityX[1946] = -4346.250
set CityY[1946] = -10989.250
set CityT[1946] = 0
set CityX[1947] = -4863.000
set CityY[1947] = -11522.750
set CityT[1947] = 0
set CityX[1948] = -5364.250
set CityY[1948] = -11519.250
set CityT[1948] = 0
set CityX[1949] = -5370.750
set CityY[1949] = -10507.000
set CityT[1949] = 0
set CityX[1950] = -4869.500
set CityY[1950] = -10510.500
set CityT[1950] = 0
set CityX[1951] = -5364.750
set CityY[1951] = -11009.000
set CityT[1951] = 0
set CityX[1952] = -3833.750
set CityY[1952] = -11003.250
set CityT[1952] = 0
set CityX[1953] = -4345.750
set CityY[1953] = -11499.500
set CityT[1953] = 0
set CityX[1954] = -5388.000
set CityY[1954] = -12019.500
set CityT[1954] = 0
set CityX[1955] = -5382.000
set CityY[1955] = -12521.500
set CityT[1955] = 0
set CityX[1956] = -5898.750
set CityY[1956] = -13055.000
set CityT[1956] = 0
set CityX[1957] = -6400.000
set CityY[1957] = -13051.500
set CityT[1957] = 0
set CityX[1958] = -6406.500
set CityY[1958] = -12039.000
set CityT[1958] = 0
set CityX[1959] = -5905.250
set CityY[1959] = -12042.750
set CityT[1959] = 0
set CityX[1960] = -6400.500
set CityY[1960] = -12541.250
set CityT[1960] = 0
set CityX[1961] = -5899.250
set CityY[1961] = -12544.750
set CityT[1961] = 0
set CityX[1962] = -6920.000
set CityY[1962] = -14062.500
set CityT[1962] = 0
set CityX[1963] = -12035.000
set CityY[1963] = -13562.000
set CityT[1963] = 0
set CityX[1964] = -5368.500
set CityY[1964] = -14061.750
set CityT[1964] = 0
set CityX[1965] = -5899.500
set CityY[1965] = -13572.500
set CityT[1965] = 0
set CityX[1966] = -7938.500
set CityY[1966] = -14082.250
set CityT[1966] = 0
set CityX[1967] = -7437.000
set CityY[1967] = -14086.000
set CityT[1967] = 0
set CityX[1968] = -7932.500
set CityY[1968] = -14584.500
set CityT[1968] = 0
set CityX[1969] = -7431.000
set CityY[1969] = -14588.000
set CityT[1969] = 0
set CityX[1970] = -6913.250
set CityY[1970] = -15075.000
set CityT[1970] = 0
set CityX[1971] = -5885.750
set CityY[1971] = -14085.000
set CityT[1971] = 0
set CityX[1972] = -6400.750
set CityY[1972] = -13569.000
set CityT[1972] = 0
set CityX[1973] = -6386.500
set CityY[1973] = -14591.750
set CityT[1973] = 0
set CityX[1974] = -5885.250
set CityY[1974] = -14595.250
set CityT[1974] = 0
set CityX[1975] = -5377.000
set CityY[1975] = -15084.000
set CityT[1975] = 0
set CityX[1976] = -5380.000
set CityY[1976] = -15611.250
set CityT[1976] = 0
set CityX[1977] = -5894.250
set CityY[1977] = -15107.500
set CityT[1977] = 0
set CityX[1978] = -5881.250
set CityY[1978] = -15607.500
set CityT[1978] = 0
set CityX[1979] = -6403.250
set CityY[1979] = -15615.750
set CityT[1979] = 0
set CityX[1980] = -6904.500
set CityY[1980] = -15612.250
set CityT[1980] = 0
set CityX[1981] = -4363.500
set CityY[1981] = -12028.500
set CityT[1981] = 0
set CityX[1982] = -4865.000
set CityY[1982] = -12024.750
set CityT[1982] = 0
set CityX[1983] = -4352.500
set CityY[1983] = -12533.000
set CityT[1983] = 0
set CityX[1984] = -4853.750
set CityY[1984] = -12529.500
set CityT[1984] = 0
set CityX[1985] = -6404.000
set CityY[1985] = -10501.500
set CityT[1985] = 0
set CityX[1986] = -6401.000
set CityY[1986] = -11521.750
set CityT[1986] = 0
set CityX[1987] = -6397.750
set CityY[1987] = -9975.500
set CityT[1987] = 0
set CityX[1988] = -9993.000
set CityY[1988] = -4342.500
set CityT[1988] = 0
set CityX[1989] = -9986.750
set CityY[1989] = -3816.500
set CityT[1989] = 0
set CityX[1990] = -11005.250
set CityY[1990] = -3836.250
set CityT[1990] = 0
set CityX[1991] = -10504.000
set CityY[1991] = -3839.750
set CityT[1991] = 0
set CityX[1992] = -11011.500
set CityY[1992] = -4362.250
set CityT[1992] = 0
set CityX[1993] = -10510.250
set CityY[1993] = -4365.750
set CityT[1993] = 0
set CityX[1994] = -11509.000
set CityY[1994] = -3838.000
set CityT[1994] = 0
set CityX[1995] = -11009.750
set CityY[1995] = -3337.500
set CityT[1995] = 0
set CityX[1996] = -9474.750
set CityY[1996] = -6382.500
set CityT[1996] = 0
set CityX[1997] = -8457.500
set CityY[1997] = -6401.500
set CityT[1997] = 0
set CityX[1998] = -9475.500
set CityY[1998] = -5872.250
set CityT[1998] = 0
set CityX[1999] = -8958.500
set CityY[1999] = -6398.000
set CityT[1999] = 0
set CityX[2000] = -8959.250
set CityY[2000] = -5887.500
set CityT[2000] = 0
set CityX[2001] = -9469.750
set CityY[2001] = -7402.750
set CityT[2001] = 0
set CityX[2002] = -9470.500
set CityY[2002] = -6892.500
set CityT[2002] = 0
set CityX[2003] = -8953.500
set CityY[2003] = -7418.000
set CityT[2003] = 0
set CityX[2004] = -8954.250
set CityY[2004] = -6907.750
set CityT[2004] = 0
set CityX[2005] = -9977.500
set CityY[2005] = -6915.500
set CityT[2005] = 0
set CityX[2006] = -7932.500
set CityY[2006] = -7421.750
set CityT[2006] = 0
set CityX[2007] = -7431.250
set CityY[2007] = -7425.500
set CityT[2007] = 0
set CityX[2008] = -9987.500
set CityY[2008] = -9971.000
set CityT[2008] = 0
set CityX[2009] = -9486.000
set CityY[2009] = -9974.750
set CityT[2009] = 0
set CityX[2010] = -9475.500
set CityY[2010] = -10464.750
set CityT[2010] = 0
set CityX[2011] = -9451.500
set CityY[2011] = -11521.500
set CityT[2011] = 0
set CityX[2012] = -8947.000
set CityY[2012] = -11509.250
set CityT[2012] = 0
set CityX[2013] = -5882.250
set CityY[2013] = -11514.750
set CityT[2013] = 0
set CityX[2014] = -2816.750
set CityY[2014] = -11527.500
set CityT[2014] = 0
set CityX[2015] = -2823.500
set CityY[2015] = -12038.000
set CityT[2015] = 0
set CityX[2016] = -3320.250
set CityY[2016] = -11519.500
set CityT[2016] = 0
set CityX[2017] = -4346.750
set CityY[2017] = -13565.000
set CityT[2017] = 0
set CityX[2018] = -4854.500
set CityY[2018] = -13560.250
set CityT[2018] = 0
set CityX[2019] = -4865.500
set CityY[2019] = -14597.750
set CityT[2019] = 0
set CityX[2020] = -2300.250
set CityY[2020] = -7399.000
set CityT[2020] = 0
set CityX[2021] = -2817.500
set CityY[2021] = -7422.500
set CityT[2021] = 0
set CityX[2022] = -2304.250
set CityY[2022] = -7918.750
set CityT[2022] = 0
set CityX[2023] = -250.250
set CityY[2023] = -7399.500
set CityT[2023] = 0
set CityX[2024] = -2303.750
set CityY[2024] = -8429.000
set CityT[2024] = 0
set CityX[2025] = -2821.000
set CityY[2025] = -8452.500
set CityT[2025] = 0
set CityX[2026] = -767.500
set CityY[2026] = -7422.750
set CityT[2026] = 0
set CityX[2027] = -254.500
set CityY[2027] = -7919.000
set CityT[2027] = 0
set CityX[2028] = -771.750
set CityY[2028] = -7942.500
set CityT[2028] = 0
set CityX[2029] = -253.750
set CityY[2029] = -8429.500
set CityT[2029] = 0
set CityX[2030] = -771.000
set CityY[2030] = -8452.750
set CityT[2030] = 0
set CityX[2031] = -6402.250
set CityY[2031] = -2287.750
set CityT[2031] = 0
set CityX[2032] = -6919.500
set CityY[2032] = -2311.000
set CityT[2032] = 0
set CityX[2033] = -6406.500
set CityY[2033] = -2807.250
set CityT[2033] = 0
set CityX[2034] = -5890.500
set CityY[2034] = -3327.000
set CityT[2034] = 0
set CityX[2035] = -6405.750
set CityY[2035] = -3317.500
set CityT[2035] = 0
set CityX[2036] = -6923.000
set CityY[2036] = -3341.000
set CityT[2036] = 0
set CityX[2037] = -1800.000
set CityY[2037] = -3837.250
set CityT[2037] = 0
set CityX[2038] = -1789.750
set CityY[2038] = -4360.500
set CityT[2038] = 0
set CityX[2039] = -1276.750
set CityY[2039] = -7410.250
set CityT[2039] = 0
set CityX[2040] = -1794.000
set CityY[2040] = -7433.500
set CityT[2040] = 0
set CityX[2041] = -1785.500
set CityY[2041] = -7928.000
set CityT[2041] = 0
set CityX[2042] = 770.750
set CityY[2042] = -8429.000
set CityT[2042] = 0
set CityX[2043] = 253.500
set CityY[2043] = -8452.250
set CityT[2043] = 0
set CityX[2044] = 770.000
set CityY[2044] = -8938.500
set CityT[2044] = 0
set CityX[2045] = 252.750
set CityY[2045] = -8962.000
set CityT[2045] = 0
set CityX[2046] = 1797.000
set CityY[2046] = -8941.750
set CityT[2046] = 0
set CityX[2047] = 1279.500
set CityY[2047] = -8965.250
set CityT[2047] = 0
set CityX[2048] = 2308.750
set CityY[2048] = -9473.250
set CityT[2048] = 0
call TriggerSleepAction(0.3)
set CityX[2049] = 2307.750
set CityY[2049] = -8960.500
set CityT[2049] = 0
set CityX[2050] = 3323.500
set CityY[2050] = -10476.750
set CityT[2050] = 0
set CityX[2051] = 3328.500
set CityY[2051] = -9978.750
set CityT[2051] = 0
set CityX[2052] = 3334.000
set CityY[2052] = -9461.750
set CityT[2052] = 0
set CityX[2053] = 2819.750
set CityY[2053] = -8948.500
set CityT[2053] = 0
set CityX[2054] = 2815.750
set CityY[2054] = -10486.250
set CityT[2054] = 0
set CityX[2055] = 2821.750
set CityY[2055] = -10988.250
set CityT[2055] = 0
set CityX[2056] = 2304.500
set CityY[2056] = -11011.500
set CityT[2056] = 0
set CityX[2057] = 2815.000
set CityY[2057] = -11506.000
set CityT[2057] = 0
set CityX[2058] = 2821.000
set CityY[2058] = -12008.000
set CityT[2058] = 0
set CityX[2059] = 2304.000
set CityY[2059] = -12031.500
set CityT[2059] = 0
set CityX[2060] = 2298.000
set CityY[2060] = -11529.500
set CityT[2060] = 0
set CityX[2061] = 2815.250
set CityY[2061] = -12539.250
set CityT[2061] = 0
set CityX[2062] = 2821.250
set CityY[2062] = -13041.500
set CityT[2062] = 0
set CityX[2063] = 2304.000
set CityY[2063] = -13064.750
set CityT[2063] = 0
set CityX[2064] = 2298.000
set CityY[2064] = -12562.750
set CityT[2064] = 0
set CityX[2065] = 3836.500
set CityY[2065] = -13046.750
set CityT[2065] = 0
set CityX[2066] = 3842.500
set CityY[2066] = -13549.000
set CityT[2066] = 0
set CityX[2067] = 3325.500
set CityY[2067] = -13572.250
set CityT[2067] = 0
set CityX[2068] = 3319.500
set CityY[2068] = -13070.250
set CityT[2068] = 0
set CityX[2069] = 2814.000
set CityY[2069] = -13561.250
set CityT[2069] = 0
set CityX[2070] = 2820.000
set CityY[2070] = -14063.250
set CityT[2070] = 0
set CityX[2071] = 3834.500
set CityY[2071] = -14060.500
set CityT[2071] = 0
set CityX[2072] = 2296.500
set CityY[2072] = -13584.500
set CityT[2072] = 0
set CityX[2073] = 4862.500
set CityY[2073] = -13563.000
set CityT[2073] = 0
set CityX[2074] = 4870.250
set CityY[2074] = -13036.500
set CityT[2074] = 0
set CityX[2075] = 3317.250
set CityY[2075] = -14084.000
set CityT[2075] = 0
set CityX[2076] = 4353.000
set CityY[2076] = -13060.000
set CityT[2076] = 0
set CityX[2077] = 4347.000
set CityY[2077] = -12557.750
set CityT[2077] = 0
set CityX[2078] = 4868.500
set CityY[2078] = -14065.000
set CityT[2078] = 0
set CityX[2079] = 4351.250
set CityY[2079] = -14088.500
set CityT[2079] = 0
set CityX[2080] = 4345.250
set CityY[2080] = -13586.250
set CityT[2080] = 0
set CityX[2081] = 5374.500
set CityY[2081] = -14579.000
set CityT[2081] = 0
set CityX[2082] = 5380.500
set CityY[2082] = -15081.000
set CityT[2082] = 0
set CityX[2083] = 4863.250
set CityY[2083] = -15104.500
set CityT[2083] = 0
set CityX[2084] = 4857.250
set CityY[2084] = -14602.250
set CityT[2084] = 0
set CityX[2085] = 6915.000
set CityY[2085] = -14081.250
set CityT[2085] = 0
set CityX[2086] = 6405.250
set CityY[2086] = -15594.250
set CityT[2086] = 0
set CityX[2087] = 5882.000
set CityY[2087] = -15115.500
set CityT[2087] = 0
set CityX[2088] = 7429.500
set CityY[2088] = -15604.500
set CityT[2088] = 0
set CityX[2089] = 6912.250
set CityY[2089] = -15628.000
set CityT[2089] = 0
set CityX[2090] = 3332.500
set CityY[2090] = -15089.000
set CityT[2090] = 0
set CityX[2091] = 2815.000
set CityY[2091] = -15112.500
set CityT[2091] = 0
set CityX[2092] = 3839.250
set CityY[2092] = -15122.750
set CityT[2092] = 0
set CityX[2093] = 1273.750
set CityY[2093] = -13046.000
set CityT[2093] = 0
set CityX[2094] = 1788.000
set CityY[2094] = -14566.500
set CityT[2094] = 0
set CityX[2095] = 1270.750
set CityY[2095] = -14589.750
set CityT[2095] = 0
set CityX[2096] = 1264.750
set CityY[2096] = -14087.750
set CityT[2096] = 0
set CityX[2097] = 1279.750
set CityY[2097] = -13548.000
set CityT[2097] = 0
set CityX[2098] = 1794.500
set CityY[2098] = -11504.750
set CityT[2098] = 0
set CityX[2099] = 756.500
set CityY[2099] = -13069.500
set CityT[2099] = 0
set CityX[2100] = 1284.500
set CityY[2100] = -12527.750
set CityT[2100] = 0
set CityX[2101] = 767.250
set CityY[2101] = -12551.000
set CityT[2101] = 0
set CityX[2102] = 761.250
set CityY[2102] = -12049.000
set CityT[2102] = 0
set CityX[2103] = 1800.500
set CityY[2103] = -12006.750
set CityT[2103] = 0
set CityX[2104] = -2291.500
set CityY[2104] = -10494.000
set CityT[2104] = 0
set CityX[2105] = 1792.750
set CityY[2105] = -10981.250
set CityT[2105] = 0
set CityX[2106] = -778.250
set CityY[2106] = -10494.500
set CityT[2106] = 0
set CityX[2107] = -258.000
set CityY[2107] = -11006.250
set CityT[2107] = 0
set CityX[2108] = -261.000
set CityY[2108] = -10471.000
set CityT[2108] = 0
set CityX[2109] = 262.250
set CityY[2109] = -9977.750
set CityT[2109] = 0
set CityX[2110] = 253.500
set CityY[2110] = -10498.250
set CityT[2110] = 0
set CityX[2111] = 258.250
set CityY[2111] = -11523.250
set CityT[2111] = 0
set CityX[2112] = 256.500
set CityY[2112] = -12026.000
set CityT[2112] = 0
set CityX[2113] = 260.500
set CityY[2113] = -12531.000
set CityT[2113] = 0
set CityX[2114] = -262.250
set CityY[2114] = -4863.500
set CityT[2114] = 0
set CityX[2115] = -778.500
set CityY[2115] = -4848.000
set CityT[2115] = 0
set CityX[2116] = -265.750
set CityY[2116] = -5380.500
set CityT[2116] = 0
set CityX[2117] = -782.000
set CityY[2117] = -5365.000
set CityT[2117] = 0
set CityX[2118] = 3335.000
set CityY[2118] = -3840.000
set CityT[2118] = 0
set CityX[2119] = 3848.500
set CityY[2119] = -2804.000
set CityT[2119] = 0
set CityX[2120] = 4349.750
set CityY[2120] = -2807.750
set CityT[2120] = 0
set CityX[2121] = 3845.750
set CityY[2121] = -255.000
set CityT[2121] = 0
set CityX[2122] = 3332.500
set CityY[2122] = -2788.750
set CityT[2122] = 0
set CityX[2123] = 3845.250
set CityY[2123] = -3330.500
set CityT[2123] = 0
set CityX[2124] = 4346.500
set CityY[2124] = -3334.000
set CityT[2124] = 0
set CityX[2125] = 4869.000
set CityY[2125] = -3338.500
set CityT[2125] = 0
set CityX[2126] = 3329.000
set CityY[2126] = -3315.000
set CityT[2126] = 0
set CityX[2127] = 4360.750
set CityY[2127] = -3837.750
set CityT[2127] = 0
set CityX[2128] = 4862.000
set CityY[2128] = -3841.250
set CityT[2128] = 0
set CityX[2129] = 3844.500
set CityY[2129] = -3822.250
set CityT[2129] = 0
set CityX[2130] = 3328.250
set CityY[2130] = -4353.000
set CityT[2130] = 0
set CityX[2131] = 4354.000
set CityY[2131] = -4350.500
set CityT[2131] = 0
set CityX[2132] = 4855.250
set CityY[2132] = -4354.250
set CityT[2132] = 0
set CityX[2133] = 3838.000
set CityY[2133] = -4335.250
set CityT[2133] = 0
set CityX[2134] = 2819.500
set CityY[2134] = -760.500
set CityT[2134] = 0
set CityX[2135] = 3320.500
set CityY[2135] = -764.000
set CityT[2135] = 0
set CityX[2136] = 3843.250
set CityY[2136] = -768.500
set CityT[2136] = 0
set CityX[2137] = 4342.000
set CityY[2137] = -772.250
set CityT[2137] = 0
set CityX[2138] = 4354.500
set CityY[2138] = 260.750
set CityT[2138] = 0
set CityX[2139] = 4352.250
set CityY[2139] = -253.000
set CityT[2139] = 0
set CityX[2140] = 14090.500
set CityY[2140] = -4879.000
set CityT[2140] = 0
set CityX[2141] = 14062.500
set CityY[2141] = -5370.250
set CityT[2141] = 0
set CityX[2142] = 14078.750
set CityY[2142] = -13066.000
set CityT[2142] = 0
set CityX[2143] = 14080.250
set CityY[2143] = -13565.750
set CityT[2143] = 0
set CityX[2143] = 14080.250
set CityY[2143] = -13565.750
set CityT[2143] = 0
set CityX[2144] = 3325.000
set CityY[2144] = -7935.000
set CityT[2144] = 0
set CityX[2145] = 5901.000
set CityY[2145] = -3836.500
set CityT[2145] = 0
set CityX[2146] = 6391.500
set CityY[2146] = -3834.500
set CityT[2146] = 0
set CityX[2147] = 6392.000
set CityY[2147] = -4358.250
set CityT[2147] = 0
set CityX[2148] = 6900.500
set CityY[2148] = -4362.750
set CityT[2148] = 0
set CityX[2149] = 6908.250
set CityY[2149] = -4866.000
set CityT[2149] = 0
set CityX[2150] = 7426.000
set CityY[2150] = -4870.250
set CityT[2150] = 0
set CityX[2151] = 7418.500
set CityY[2151] = -5400.000
set CityT[2151] = 0
set CityX[2152] = 7924.250
set CityY[2152] = -4867.250
set CityT[2152] = 0
set CityX[2153] = -11507.750
set CityY[2153] = -12551.750
set CityT[2153] = 0
set CityX[2154] = -10506.750
set CityY[2154] = -12533.750
set CityT[2154] = 0
set CityX[2155] = -13049.500
set CityY[2155] = -4851.250
set CityT[2155] = 0
set CityX[2156] = -12557.750
set CityY[2156] = -4223.250
set CityT[2156] = 0
set CityX[2157] = -13065.750
set CityY[2157] = -2829.250
set CityT[2157] = 0
set CityX[2158] = -13066.000
set CityY[2158] = -2322.000
set CityT[2158] = 0
set CityX[2159] = -10494.000
set CityY[2159] = 1287.250
set CityT[2159] = 0
set CityX[2160] = -8456.250
set CityY[2160] = -252.000
set CityT[2160] = 0
set CityX[2161] = -8444.000
set CityY[2161] = 249.750
set CityT[2161] = 0
set CityX[2162] = -8949.000
set CityY[2162] = -244.000
set CityT[2162] = 0
set CityX[2163] = -7937.000
set CityY[2163] = -758.250
set CityT[2163] = 0
set CityX[2164] = -2805.250
set CityY[2164] = -1788.750
set CityT[2164] = 0
set CityX[2165] = -1795.750
set CityY[2165] = -2319.500
set CityT[2165] = 0
set CityX[2166] = -2291.500
set CityY[2166] = -2306.250
set CityT[2166] = 0
set CityX[2167] = -1271.000
set CityY[2167] = -1775.000
set CityT[2167] = 0
set CityX[2168] = -1279.000
set CityY[2168] = -2312.250
set CityT[2168] = 0
set CityX[2169] = -773.500
set CityY[2169] = -2311.500
set CityT[2169] = 0
set CityX[2170] = -753.500
set CityY[2170] = -2803.750
set CityT[2170] = 0
set CityX[2171] = -1277.250
set CityY[2171] = -2800.500
set CityT[2171] = 0
set CityX[2172] = -251.750
set CityY[2172] = -3322.750
set CityT[2172] = 0
set CityX[2173] = -245.750
set CityY[2173] = -4358.250
set CityT[2173] = 0
set CityX[2174] = 3836.500
set CityY[2174] = 2822.500
set CityT[2174] = 0
set CityX[2175] = 4858.000
set CityY[2175] = 2307.500
set CityT[2175] = 0
set CityX[2176] = 3843.500
set CityY[2176] = 2305.250
set CityT[2176] = 0
set CityX[2177] = 4353.500
set CityY[2177] = 2307.750
set CityT[2177] = 0
set CityX[2178] = 5881.750
set CityY[2178] = 3334.500
set CityT[2178] = 0
set CityX[2179] = 4865.000
set CityY[2179] = 1790.250
set CityT[2179] = 0
set CityX[2180] = 5375.000
set CityY[2180] = 1792.500
set CityT[2180] = 0
set CityX[2181] = 6390.000
set CityY[2181] = 3335.500
set CityT[2181] = 0
set CityX[2182] = 5888.500
set CityY[2182] = 2817.500
set CityT[2182] = 0
set CityX[2183] = 6398.500
set CityY[2183] = 2819.750
set CityT[2183] = 0
set CityX[2184] = 7412.000
set CityY[2184] = 4357.000
set CityT[2184] = 0
set CityX[2185] = 6904.500
set CityY[2185] = 4344.750
set CityT[2185] = 0
set CityX[2186] = 7420.250
set CityY[2186] = 3849.000
set CityT[2186] = 0
set CityX[2187] = 8442.000
set CityY[2187] = 4369.000
set CityT[2187] = 0
set locs = true
endfunction
private function init takes nothing returns nothing
set HTcache = InitHashtable()
endfunction
endlibrary
function bool takes nothing returns boolean
return true
endfunction
function ExportCreepData takes nothing returns nothing
//local region r = CreateRegion()
local group g = CreateGroup()
local unit u
local integer utype = 0
local string exportdata
local boolexpr filter = Condition ( function bool)
local WorldBounds w
set creepcounter = creepcounter + 1
call GroupEnumUnitsInRect(g,w.world, filter )
call DestroyBoolExpr(filter)
set filter = null
loop
set u = FirstOfGroup(g)
exitwhen u == null
if GetUnitTypeId(u)=='h000' then
set creepcounter = creepcounter + 1
set utype = 1
set exportdata = "set CityX[" + I2S(creepcounter) + "] = " + R2S(GetUnitX(u)) + "\r\n" + "set CityY[" + I2S(creepcounter) + "] = " + R2S(GetUnitY(u)) + "\r\n" + "set CityT[" + I2S(creepcounter) + "] = " + I2S(utype)
call RemoveUnit(u)
endif
call Preload(exportdata)
call GroupRemoveUnit(g,u)
set u = null
endloop
call DestroyGroup(g)
set g = null
// set exportdata = "set CreepFin[" + I2S(nrect) + "] = " + I2S(creepcounter)+ "\r\n" + "call TriggerSleepAction(0.02)"
// call Preload(exportdata)
set exportdata = null
endfunction
function ECAS takes nothing returns nothing
local integer i = 0
set creepcounter = 0
call PreloadGenClear()
call PreloadGenStart()
call ExportCreepData()
call PreloadGenEnd("spawnpool.txt")
call DisplayTimedTextToPlayer(Player(0),.3,.2,8,"Exportacion terminada")
endfunction
//===========================================================================
function InitTrig_exportspawn takes nothing returns nothing
set gg_trg_exportspawn = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_exportspawn, Player(0), "-exps", true )
call TriggerAddAction( gg_trg_exportspawn, function ECAS )
endfunction
function indxx takes nothing returns nothing
set udg_Hero_count = ( udg_Hero_count + 1 )
set udg_CreepPool[udg_Hero_count] = GetUnitTypeId(GetEnumUnit())
call SaveInteger(udg_itempoolhash,udg_CreepPool[udg_Hero_count],0,udg_Hero_count)
call SaveStr(udg_itempoolhash,udg_CreepPool[udg_Hero_count],1,GetUnitName(GetEnumUnit()))
call SaveStr(udg_itempoolhash,udg_CreepPool[udg_Hero_count],2,I2S(GetUnitLevel(GetEnumUnit())))
endfunction
function ECA takes nothing returns nothing
local group g = GetUnitsInRectAll(gg_rct_creeps)
local integer i = 1
call ForGroupBJ( g, function indxx )
call PreloadGenStart()
loop
exitwhen i > udg_Hero_count
set udg_stringHeroPool[i] = ( "set udg_CreepType[" + ( I2S(i) + ( "] = " + ( I2S(udg_CreepPool[i])) + (" //"+(LoadStr(udg_itempoolhash,udg_CreepPool[i],1) )) ) ) )
set udg_stringHeroPool[i] = udg_stringHeroPool[i] + " Lvl "+LoadStr(udg_itempoolhash,udg_CreepPool[i],2)
call Preload(udg_stringHeroPool[i])
set i = i + 1
endloop
call PreloadGenEnd("C:\\creeppool.txt")
call DestroyGroup(g)
endfunction
//===========================================================================
function InitTrig_exporcreep takes nothing returns nothing
set gg_trg_exporcreep = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_exporcreep, Player(0), "-expc", true )
call TriggerAddAction( gg_trg_exporcreep, function ECA )
endfunction
function Trig_targetvictory_Actions takes nothing returns nothing
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"To win the battle you |cffff8844must destroy|r all enemy |cffff8844emblems|r")
endif
call TriggerSleepAction(20)
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"|cffffcc00DISCLAIMER|r ")
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Due to balance development, some evolved units abilities are not working as intended ")
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"This issue will be resolved on future releases, thanks ")
endif
call TriggerSleepAction(10)
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Neutral building spawns defensive units, take care of that ")
endif
call TriggerSleepAction(10)
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Remember this: conquered buildings need to be deployed, if not they will come back to neutral")
endif
call DisableTrigger(GetTriggeringTrigger())
endfunction
//===========================================================================
function InitTrig_targetvictory takes nothing returns nothing
set gg_trg_targetvictory = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_targetvictory, 40.00 )
call TriggerAddAction( gg_trg_targetvictory, function Trig_targetvictory_Actions )
endfunction
function maketdialog takes nothing returns nothing
local timer t = GetExpiredTimer()
call ReleaseTimer(t)
set t = null
call DestroyTimerDialog(startd)
set startd = null
call TriggerExecute( gg_trg_Warriormode )
endfunction
function Trig_start_hash_Actions takes nothing returns nothing
set Init_timer = NewTimer()
set startd = CreateTimerDialog(Init_timer)
call TimerStart(Init_timer,30,false, function maketdialog)
call TimerDialogSetTitle(startd, "Game setup:")
call TimerDialogDisplay(startd, true)
set udg_Save_U = InitHashtableBJ( )
set udg_Load_U = InitHashtableBJ( )
set udg_ModeC = InitHashtableBJ( )
set udg_Innate_Ability = InitHashtableBJ( )
call initquest()
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_start_hash takes nothing returns nothing
set gg_trg_start_hash = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_start_hash, 1.20 )
call TriggerAddAction( gg_trg_start_hash, function Trig_start_hash_Actions )
endfunction
function Trig_infonovice_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( "Upgrades for melee unit at: |cffffcc004 Kills - 8 Kills - 16 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Upgrades for ranged unit at: |cffffcc006 Kills - 12 Kills - 20 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Upgrades for tank units at: |cffffcc008 Kills - 16 Kills - 24 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Fortress Income: " + "|cffffcc0015|r Gold" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Stronghold Income: " + "|cffffcc0030|r Gold" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Castle Income: " + "|cffffcc0060|r Gold" ) )
endfunction
//===========================================================================
function InitTrig_infonovice takes nothing returns nothing
set gg_trg_infonovice = CreateTrigger( )
call DisableTrigger( gg_trg_infonovice )
call TriggerAddAction( gg_trg_infonovice, function Trig_infonovice_Actions )
endfunction
function Trig_infowarrior_Actions takes nothing returns nothing
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Upgrades for melee unit at: |cffffcc008 Kills - 16 Kills - 24 Kills|r" + "" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Setting upgrades for ranged unit to: |cffffcc0012 Kills - 24 Kills - 32 Kills|r" + "" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Setting upgrades for tank units to: |cffffcc0014 Kills - 28 Kills - 36 Kills|r" + "" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Fortress Income: " + "|cffffcc008|r Gold" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Stronghold Income: " + "|cffffcc0022|r Gold" ) )
call DisplayTextToForce( GetForceOfPlayer(GetTriggerPlayer()), ( "Castle Income: " + "|cffffcc0036|r Gold" ) )
endfunction
//===========================================================================
function InitTrig_infowarrior takes nothing returns nothing
set gg_trg_infowarrior = CreateTrigger( )
call DisableTrigger( gg_trg_infowarrior )
call TriggerAddAction( gg_trg_infowarrior, function Trig_infowarrior_Actions )
endfunction
function Trig_infowarlord_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( "Setting upgrades for melee unit to: |cffffcc006 Kills - 16 Kills - 36 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Setting upgrades for ranged unit to: |cffffcc008 Kills - 20 Kills - 40 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Setting upgrades for tank units to: |cffffcc0014 Kills - 28 Kills - 46 Kills|r" + "" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Fortress Income: " + "|cffffcc006|r Gold" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Stronghold Income: " + "|cffffcc0016|r Gold" ) )
call DisplayTextToForce( GetPlayersAll(), ( "Castle Income: " + "|cffffcc0024|r Gold" ) )
endfunction
//===========================================================================
function InitTrig_infowarlord takes nothing returns nothing
set gg_trg_infowarlord = CreateTrigger( )
call DisableTrigger( gg_trg_infowarlord )
call TriggerAddAction( gg_trg_infowarlord, function Trig_infowarlord_Actions )
endfunction
function Trig_Novicemode_Conditions takes nothing returns boolean
return udg_setting_on == true
endfunction
function Trig_Novicemode_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( ( GetPlayerName(Player(0)) + " has Selected/Defaulted |cff7777aaNovice Mode|r" ) + udg_infogame ) )
// Switching booleans conditions
set udg_setting_on = false
set udg_Modetext = "Novice Mode"
set udg_Novice_On = true
set udg_Warrior_on = false
set udg_Warlord_on = false
// Switching Constants conditions
call SaveIntegerBJ( 6, 1, 1, udg_ModeC )
call SaveIntegerBJ( 12, 2, 1, udg_ModeC )
call SaveIntegerBJ( 24, 3, 1, udg_ModeC )
call SaveIntegerBJ( 10, 1, 2, udg_ModeC )
call SaveIntegerBJ( 20, 2, 2, udg_ModeC )
call SaveIntegerBJ( 30, 3, 2, udg_ModeC )
call SaveIntegerBJ( 8, 1, 3, udg_ModeC )
call SaveIntegerBJ( 16, 2, 3, udg_ModeC )
call SaveIntegerBJ( 28, 3, 3, udg_ModeC )
call SaveIntegerBJ( 12, 1, 4, udg_ModeC )
call SaveIntegerBJ( 24, 2, 4, udg_ModeC )
call SaveIntegerBJ( 32, 3, 4, udg_ModeC )
set fortress_mode_value = 15
set Stronghold_mode_Value = 30
set Castle_mode_value = 60
set udg_gmode = gg_trg_infonovice
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_Novicemode takes nothing returns nothing
set gg_trg_Novicemode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Novicemode, Player(0), "-novice", true )
call TriggerAddCondition( gg_trg_Novicemode, Condition( function Trig_Novicemode_Conditions ) )
call TriggerAddAction( gg_trg_Novicemode, function Trig_Novicemode_Actions )
endfunction
function Trig_Warriormode_Conditions takes nothing returns boolean
return udg_setting_on == true
endfunction
function Trig_Warriormode_Actions takes nothing returns nothing
// call DisplayTextToForce( GetPlayersAll(), ( ( GetPlayerName(Player(0)) + " has selected |cffffcc00Warrior Mode|r" ) + udg_infogame ) )
// Switching booleans conditions
set udg_setting_on = false
set udg_Modetext = "Warrior Mode"
set udg_Novice_On = false
set udg_Warrior_on = true
set udg_Warlord_on = false
// Switching Constants conditions
call SaveIntegerBJ( 8, 1, 1, udg_ModeC )
call SaveIntegerBJ( 16, 2, 1, udg_ModeC )
call SaveIntegerBJ( 24, 3, 1, udg_ModeC )
call SaveIntegerBJ( 12, 1, 2, udg_ModeC )
call SaveIntegerBJ( 24, 2, 2, udg_ModeC )
call SaveIntegerBJ( 32, 3, 2, udg_ModeC )
call SaveIntegerBJ( 12, 1, 3, udg_ModeC )
call SaveIntegerBJ( 22, 2, 3, udg_ModeC )
call SaveIntegerBJ( 34, 3, 3, udg_ModeC )
call SaveIntegerBJ( 14, 1, 4, udg_ModeC )
call SaveIntegerBJ( 28, 2, 4, udg_ModeC )
call SaveIntegerBJ( 36, 3, 4, udg_ModeC )
set fortress_mode_value = 8
set Stronghold_mode_Value = 22
set Castle_mode_value = 36
set udg_gmode = gg_trg_infowarrior
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_Warriormode takes nothing returns nothing
set gg_trg_Warriormode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Warriormode, Player(0), "-warrior", true )
call TriggerAddCondition( gg_trg_Warriormode, Condition( function Trig_Warriormode_Conditions ) )
call TriggerAddAction( gg_trg_Warriormode, function Trig_Warriormode_Actions )
endfunction
function Trig_WarlordMode_Conditions takes nothing returns boolean
return udg_setting_on == true
endfunction
function Trig_WarlordMode_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( ( GetPlayerName(Player(0)) + " has selected |cffff0000Warlord Mode|r" ) + udg_infogame ) )
// Switching booleans conditions
set udg_setting_on = false
set udg_Modetext = "Warlord Mode"
set udg_Novice_On = false
set udg_Warrior_on = false
set udg_Warlord_on = true
// Switching Constants conditions
call SaveIntegerBJ( 10, 1, 1, udg_ModeC )
call SaveIntegerBJ( 20, 2, 1, udg_ModeC )
call SaveIntegerBJ( 30, 3, 1, udg_ModeC )
call SaveIntegerBJ( 12, 1, 2, udg_ModeC )
call SaveIntegerBJ( 24, 2, 2, udg_ModeC )
call SaveIntegerBJ( 36, 3, 2, udg_ModeC )
call SaveIntegerBJ( 14, 1, 3, udg_ModeC )
call SaveIntegerBJ( 24, 2, 3, udg_ModeC )
call SaveIntegerBJ( 32, 3, 3, udg_ModeC )
call SaveIntegerBJ( 14, 1, 4, udg_ModeC )
call SaveIntegerBJ( 28, 2, 4, udg_ModeC )
call SaveIntegerBJ( 46, 3, 4, udg_ModeC )
set fortress_mode_value = 6
set Stronghold_mode_Value = 16
set Castle_mode_value = 24
set udg_gmode = gg_trg_infowarlord
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_WarlordMode takes nothing returns nothing
set gg_trg_WarlordMode = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_WarlordMode, Player(0), "-warlord", true )
call TriggerAddCondition( gg_trg_WarlordMode, Condition( function Trig_WarlordMode_Conditions ) )
call TriggerAddAction( gg_trg_WarlordMode, function Trig_WarlordMode_Actions )
endfunction
library texting initializer init
globals
endglobals
function PillageText takes unit u returns nothing
call CreateTextTagUnitBJ("PILLAGE!", u, 30, 17, 100, 0, 0, 0 )
call SetTextTagPermanent( GetLastCreatedTextTag(), false )
call SetTextTagLifespan( GetLastCreatedTextTag(), 2.3 )
call SetTextTagFadepoint( GetLastCreatedTextTag(), 0.00 )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 40, 90 )
endfunction
private function init takes nothing returns nothing
endfunction
endlibrary
library globalsetup initializer init
globals
group neutralbuildattack = CreateGroup()
integer OnlinePlayers = 0
integer remNeutral = 0
integer tempPlayerNumber
rect array PlayerBase
unit array MainBase
unit array MainEmblem
group array Domain
boolean array Arca_destruida
unit tmpCentral
unit destroyer
integer array seq
integer array race_seq
player array Aiplayer
unit tmpCity
integer array playercities
integer array tax1
integer array tax2
integer array tax3
integer array current_income
integer array TreeScale
integer fortress_mode_value = 17
integer Stronghold_mode_Value = 41
integer Castle_mode_value = 73
constant integer PLAYER_EMPIRE = PLAYER_NEUTRAL_AGGRESSIVE
timerdialog startd = null
destructable array harvestTree
real turncounter
//AI compuerts
integer maxP = 0
integer indexAi = 0
timer array Aiclock
//forces
player array iSandPlayers
player array iStormPlayers
integer iSand
integer iStorm
force sandforce
force stormforce
endglobals
function sequencer takes integer size returns nothing
local integer i = 0
local integer j
local integer a
loop
exitwhen i>size
set seq[i] = i
set i = i+1
endloop
set i = size
loop
exitwhen i<1
set j = GetRandomInt(0,i)
set a = seq[i]
set seq[i] = seq[j]
set seq[j] = a
set i = i-1
endloop
endfunction
function pickTree takes nothing returns nothing
set bj_destRandomConsidered = bj_destRandomConsidered + 1
if (GetRandomInt(1,bj_destRandomConsidered) == 1) then
set bj_destRandomCurrentPick = GetEnumDestructable()
endif
endfunction
//=======CS ERROR By VEXORIAN======
function CS_Error takes player ForPlayer, string msg returns nothing
local sound error=CreateSoundFromLabel( "InterfaceError",false,false,false,10,10)
if (GetLocalPlayer() == ForPlayer) then
if (msg!="") and (msg!=null) then
call ClearTextMessages()
call DisplayTimedTextToPlayer( ForPlayer, 0.52, -1.00, 2.00, "|cffffcc00"+msg+"|r" )
endif
call StartSound( error )
endif
call KillSoundWhenDone( error)
set error=null
endfunction
function DistanceBetweenUnits takes unit a, unit b returns real
local real dx = GetUnitX(b) - GetUnitX(a)
local real dy = GetUnitY(b) - GetUnitY(a)
return SquareRoot(dx * dx + dy * dy)
endfunction
function LivingPlayerUnitTypeIdFilter takes nothing returns boolean
local unit filterUnit = GetFilterUnit()
local boolean alive = GetUnitState(filterUnit,UNIT_STATE_LIFE)>0.3
local boolean istype = GetUnitTypeId(filterUnit) == bj_livingPlayerUnitsTypeId
set filterUnit = null
return alive and istype
endfunction
function InitUnits takes integer id, real x, real y returns nothing
local unit carry = null
if udg_Race[id] == 4 then
call CreateUnit(Player(id),udg_Range_Unit[udg_Race[id]],x,y, bj_UNIT_FACING)
else
call CreateUnit(Player(id),udg_Mage_Unit[udg_Race[id]],x,y, bj_UNIT_FACING)
endif
call CreateUnit(Player(id),udg_Mele_Unit[udg_Race[id]],x,y, bj_UNIT_FACING)
call CreateUnit(Player(id),udg_Mele_Unit[udg_Race[id]],x,y, bj_UNIT_FACING)
call CreateUnit(Player(id),udg_Mele_Unit[udg_Race[id]],x,y, bj_UNIT_FACING)
call CreateUnit(Player(id),udg_Mele_scnd[udg_Race[id]],x,y, bj_UNIT_FACING)
call CreateUnit(Player(id),udg_Range_Unit[udg_Race[id]],x,y, bj_UNIT_FACING)
call CreateUnit(Player(id),udg_Range_Unit[udg_Race[id]],x,y, bj_UNIT_FACING)
call CreateUnit(Player(id),udg_Tank_Unit[udg_Race[id]],x,y, bj_UNIT_FACING)
//call CreateUnit(Player(id),udg_Tower_build[udg_Race[id]],x,y, bj_UNIT_FACING)
set carry = CreateUnit(Player(id),'h007',x,y, bj_UNIT_FACING)
call UnitAddItemById(carry, 'amrc')
call UnitAddItemById(carry, 'whwd')
set carry = null
endfunction
function removerunit takes nothing returns nothing
call RemoveUnit( GetEnumUnit() )
endfunction
function BuildStech takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit b = LoadUnitHandle(HTcache,GetHandleId(t),1)
local integer id = GetPlayerId(GetOwningPlayer(b))
local real x = GetUnitX(b)
local real y = GetUnitY(b)
call CreateUnit(Player(id), udg_Tech_build[udg_Race[id]], x, y, bj_UNIT_FACING)
call ReleaseTimer(t)
set t = null
call RemoveUnit(b)
set b = null
endfunction
function BuildValuart takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit b = LoadUnitHandle(HTcache,GetHandleId(t),1)
local unit e = null
local real X1 = LoadReal(HTcache,GetHandleId(t),2)
local real Y1 = LoadReal(HTcache,GetHandleId(t),3)
local integer id = GetPlayerId(GetOwningPlayer(b))
local real x = GetUnitX(b)
local real y = GetUnitY(b)
local timer ti = NewTimer()
local real angle = 180
local real i = X1 + 320 * Cos(angle * bj_DEGTORAD)
local real j = Y1 + 320 * Sin(angle * bj_DEGTORAD)
set MainEmblem[id] = CreateUnit(Player(id), udg_Shop_build[udg_Race[id]], x, y, bj_UNIT_FACING)
call TriggerRegisterUnitInRange(gg_trg_removescape, MainEmblem[id], 256, null)
call TriggerRegisterUnitEvent( gg_trg_DestroyEmblems, MainEmblem[id], EVENT_UNIT_DEATH )
call IssuePointOrder(b,"move",i,j)
call SaveUnitHandle(HTcache,GetHandleId(ti),1,b)
call TimerStart(ti,2,false,function BuildStech)
call ReleaseTimer(t)
set ti = null
set t = null
set b = null
set e = null
endfunction
function LivingUnitFilter takes nothing returns boolean
return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>0.3
endfunction
function AgresiveUnitFilter takes nothing returns boolean
return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>0.3 and GetOwningPlayer(GetFilterUnit()) == Player(PLAYER_EMPIRE)
endfunction
function ChoseCentralUnit takes group g, rect r returns nothing
local real x = 0
local real y = 0
local unit u = null
local real i = GetRectCenterX(r)
local real j = GetRectCenterY(r)
local real delta = 0
local real cerca = 9999
local real dx = 0
local real dy = 0
loop
exitwhen FirstOfGroup(g) == null
set u = FirstOfGroup(g)
set x = GetUnitX(u)
set y = GetUnitY(u)
set dx = i - x
set dy = j - y
set delta = SquareRoot(dx * dx + dy * dy)
if delta < cerca then
set cerca = delta
set tmpCentral = u
endif
call GroupRemoveUnit(g,u)
endloop
set u = null
endfunction
function SetStartLocation takes integer id returns nothing
local real x = 0
local real y = 0
local unit city = null
local unit shop = null
local unit silo = null
local unit neutral = null
local real i = 0
local real j = 0
local real angle = 0
local boolexpr live = Condition(function LivingUnitFilter)
local boolexpr enemy = Condition(function AgresiveUnitFilter)
local group g = CreateGroup()
local unit builder = null
local timer t = NewTimer()
set x = GetPlayerStartLocationX(Player(id))
set y = GetPlayerStartLocationY(Player(id))
set city = CreateUnit(Player(id), udg_Main_build[udg_Race[id]], x, y, bj_UNIT_FACING)
set MainBase[id] = city
set g = CreateGroup()
call GroupEnumUnitsInRange(g,x,y,1000,enemy)
call DestroyBoolExpr(enemy)
set enemy = null
loop
exitwhen FirstOfGroup(g) == null
set neutral = FirstOfGroup(g)
call GroupRemoveUnit(neutralbuildattack,neutral)
call GroupRemoveUnit(g,neutral)
call RemoveUnit(neutral)
set remNeutral = remNeutral + 1
set neutral = null
endloop
set angle = 120
set i = x + 320 * Cos(angle * bj_DEGTORAD)
set j = y + 320 * Sin(angle * bj_DEGTORAD)
set builder = CreateUnit(Player(id),'u025',x,y,bj_UNIT_FACING)
set x = i
set y = j
set angle = 60
set i = x + 320 * Cos(angle * bj_DEGTORAD)
set j = y + 320 * Sin(angle * bj_DEGTORAD)
call IssuePointOrder(builder,"move",i,j)
call SaveUnitHandle(HTcache,GetHandleId(t),1,builder)
call SaveReal(HTcache,GetHandleId(t),2,x)
call SaveReal(HTcache,GetHandleId(t),3,y)
call TimerStart(t,2,false,function BuildValuart)
call InitUnits(id,x,y)
set builder = null
set t = null
set city = null
set silo = null
set shop = null
endfunction
function WarningUnit takes unit u, integer hovh returns texttag
local texttag tt = CreateTextTag( )
local string warn = null
if hovh<2 then
set warn = "Beware, this is a HARD control to conquest!"
else
set warn = "Beware, this is a VERY HARD control to conquest!"
endif
call SetTextTagText( tt, warn, 10 * 0.023 /10)
call SetTextTagPosUnit( tt, u, 5 )
call SetTextTagColor( tt, 255, 50, 50, 255 )
call SetTextTagPermanent( tt, true )
set warn = null
return tt
endfunction
function addUnit takes nothing returns nothing
local timer t = GetExpiredTimer()
local real x = 0
local real y = 0
local integer i = LoadInteger(HTcache,GetHandleId(t),1)
local integer j = LoadInteger(HTcache,GetHandleId(t),2)
local integer z = LoadInteger(HTcache,GetHandleId(t),3)
local integer r = LoadInteger(HTcache,GetHandleId(t),4)
local integer chance = GetRandomInt(0,2187) //rate of neutral cities creation, if low number, more chance
local integer cnum = maxP * 9
local texttag warn = null
//call DisplayTimedTextToPlayer(Player(0),.3,.2,8,I2S(maxP))
//call DisplayTimedTextToPlayer(Player(0),.3,.2,8,I2S(chance))
if (chance<cnum) then
//succes on deploy a active location
if GetRandomInt(0,100)< 2 then
//succes on deploy a huge building
set tmpCity = CreateUnit(Player(PLAYER_EMPIRE), udg_Supgrade_build[race_seq[r]+1], CityX[i],CityY[i], bj_UNIT_FACING )
set warn = WarningUnit(tmpCity,2)
call SaveTextTagHandle(HTcache,GetHandleId(tmpCity),75,warn)
elseif GetRandomInt(0,100)< 5 then
//succes on deploy a medium building
set tmpCity = CreateUnit(Player(PLAYER_EMPIRE), udg_Fupgrade_build[race_seq[r]+1], CityX[i],CityY[i], bj_UNIT_FACING )
set warn = WarningUnit(tmpCity,1)
call SaveTextTagHandle(HTcache,GetHandleId(tmpCity),75,warn)
else
set tmpCity = CreateUnit(Player(PLAYER_EMPIRE), udg_Main_build[race_seq[r]+1], CityX[i],CityY[i], bj_UNIT_FACING )
endif
set warn = null
call SetUnitUserData(tmpCity,race_seq[r]+1)
call GroupAddUnit(neutralbuildattack,tmpCity)
set tcities = tcities + 1
endif
set j = j+1
if j>200 then
set j = 0
set r = r+1
set z = z + 1
endif
set i = i+1
call SaveInteger(HTcache,GetHandleId(t),1,i)
call SaveInteger(HTcache,GetHandleId(t),2,j)
call SaveInteger(HTcache,GetHandleId(t),3,z)
call SaveInteger(HTcache,GetHandleId(t),4,r)
if i>2187 then
call PauseTimer(t)
call FlushChildHashtable(HTcache,GetHandleId(t))
call ReleaseTimer(t)
set cities = true
endif
set t = null
endfunction
function init takes nothing returns nothing
local integer i = 0
local integer p = 0
local integer aid = 0
local integer orderIndex = 0
set sandforce = CreateForce()
set stormforce = CreateForce()
call sequencer(9)
loop
exitwhen i>9
set race_seq[i] = seq[i]
set i = i+1
endloop
set TreeScale[1]=9
set TreeScale[2]=1
set TreeScale[3]=9
set TreeScale[4]=4
set TreeScale[5]=1
set TreeScale[6]=4
set TreeScale[7]=9
set TreeScale[8]=9
set TreeScale[9]=9
set TreeScale[10]=2
set destroyer = CreateUnit(Player(PLAYER_NEUTRAL_AGGRESSIVE),'u003',15450,-9000,bj_UNIT_FACING)
call SetUnitInvulnerable(destroyer,true)
set iSand = 0
set iStorm = 0
loop
exitwhen p > 23 //maxP starts at 0
if (GetPlayerSlotState(Player(p)) == PLAYER_SLOT_STATE_PLAYING) then
set maxP = maxP + 1
set Domain[p] = CreateGroup()
if p < 12 then //assign forces
call ForceAddPlayer(sandforce, Player(p))
set iSandPlayers[iSand] = Player(p)
set iSand = iSand+1
else
call ForceAddPlayer(stormforce, Player(p))
set iStormPlayers[iStorm] = Player(p)
set iStorm = iStorm+1
endif
if (GetPlayerController(Player(p)) == MAP_CONTROL_COMPUTER) then //defining AI controllers
set aid = GetRandomInt(0,11)
set Aiplayer[indexAi] = Player(p)
set Aiclock[indexAi] = NewTimer()
set IADefending[p] = false
set conqueredIndex[p] = 0
call SaveInteger(HTcache, GetHandleId(Aiclock[indexAi]),1,p) // player id
call SaveInteger(HTcache, GetHandleId(Aiclock[indexAi]),2,0) // order index
call SaveInteger(HTcache, GetHandleId(Aiclock[indexAi]),3,aid) //Ai id
set indexAi = indexAi + 1
endif
endif
set p = p + 1
endloop
if IsPlayerInForce(GetLocalPlayer(),sandforce) == true or IsPlayerInForce(GetLocalPlayer(),stormforce) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),.1,.1,50,"Welcome to |cffddffaaWarlords Empires: Legends of sand and treachery|r")
call DisplayTimedTextToPlayer(GetLocalPlayer(),.1,.1,50,"Starting map settings for "+I2S(maxP)+" players")
call DisplayTimedTextToPlayer(GetLocalPlayer(),.1,.1,50,"Please wait while the game is being configured")
// call DisplayTimedTextToPlayer(GetLocalPlayer(),.1,.1,50,"To win the battle you must destroy all enemy emblems!")
endif
endfunction
endlibrary
function Trig_startunits_Actions takes nothing returns nothing
local integer i = 0
local integer c = 0
local integer j = 10
local integer z = 0
local integer r = 0
local integer aid = 0
local integer pid = 0
local integer orderx = 0
local location p = null
local timer t = NewTimer()
local timer boardt = NewTimer()
// set udg_Race[0] = 4
// set udg_Race[1] = 5
// set udg_Race[2] = 3
// set udg_Race[3] = 9
// set udg_Race[4] = 7
// set udg_Race[5] = 1
// set udg_Race[6] = 6
// set udg_Race[7] = 8
// set udg_Race[8] = 2
// set udg_Race[9] = 10
// set udg_Race[10] = 1
// set udg_Race[11] = 5
// set udg_Race[12] = 3
// set udg_Race[13] = 9
// set udg_Race[14] = 7
// set udg_Race[15] = 4
// set udg_Race[16] = 6
// set udg_Race[17] = 8
// set udg_Race[18] = 2
// set udg_Race[19] = 10
// set udg_Race[20] = 1
// set udg_Race[21] = 5
// set udg_Race[22] = 3
// set udg_Race[23] = 9
call SetupLoc()
loop
exitwhen locs == true
call TriggerSleepAction(0.5)
endloop
call SaveInteger(HTcache,GetHandleId(t),1,i)
call SaveInteger(HTcache,GetHandleId(t),2,j)
call SaveInteger(HTcache,GetHandleId(t),3,z)
call SaveInteger(HTcache,GetHandleId(t),4,r)
call TimerStart(t,0.01,true,function addUnit)
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),.3,.2,20,"Building Geopolitical Map...")
endif
set turncounter = 12.00
loop
exitwhen cities == true
call TriggerSleepAction(0.5)
endloop
call ForGroupBJ( GetUnitsInRectAll(gg_rct_remover), function removerunit )
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),.3,.2,8,"Setting up players...")
endif
call sequencer(23)
loop
exitwhen c > 23 //c starts at 0
set udg_Race[c] = GetRandomInt(1,10)
if (GetPlayerSlotState(Player(c)) == PLAYER_SLOT_STATE_PLAYING) then
set OnlinePlayers = OnlinePlayers + 1
call SetPlayerState(Player(c),PLAYER_STATE_GIVES_BOUNTY, 1 )
if (GetPlayerController(Player(c)) == MAP_CONTROL_COMPUTER) then
call SetStartLocation(c)
set PlayerBase[c] = Rect(GetUnitX(MainBase[c])-450,GetUnitY(MainBase[c])-450,GetUnitX(MainBase[c])+450,GetUnitY(MainBase[c])+450)
else
call CreateUnit(Player(c),'e00D',GetUnitX(gg_unit_n00C_0053),GetUnitY(gg_unit_n00C_0053), bj_UNIT_FACING) //pickupunit
set p = Location(GetUnitX(gg_unit_n00C_0053),GetUnitY(gg_unit_n00C_0053))
call PanCameraToTimedLocForPlayer( Player(c), p, 0 )
call RemoveLocation(p)
set p = null
endif
call SetPlayerState(Player(c), PLAYER_STATE_RESOURCE_GOLD, 100 )
set conqueredIndex[c] = 0
set Arca_destruida[c] = false
endif
set c = c + 1
endloop
//initializing Ai controllers orders
set c = 0
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),.3,.2,8,"Setting AI for leavers and computer players...")
endif
loop
exitwhen c > indexAi
set pid = LoadInteger(HTcache,GetHandleId(Aiclock[c]),1)
set aid = LoadInteger(HTcache,GetHandleId(Aiclock[c]),3)
// set conquered[pid][conqueredIndex[pid]] = MainBase[pid]
// call SaveInteger(HTcache,GetHandleId(MainBase[pid]),100,conqueredIndex[pid])
set conqueredIndex[pid] = conqueredIndex[pid] + 1
if ( GetAIDifficulty(Aiplayer[c]) == AI_DIFFICULTY_NEWBIE ) then
call SetPlayerName(Aiplayer[c], aiNameEasy[aid] )
call TimerStart(Aiclock[c], aiClockEasy[aid] , true, function AiCore )
elseif ( GetAIDifficulty(Aiplayer[c]) == AI_DIFFICULTY_NORMAL ) then
call SetPlayerName(Aiplayer[c], aiNameNormal[aid] )
call TimerStart(Aiclock[c], aiClockNormal[aid] , true, function AiCore )
elseif ( GetAIDifficulty(Aiplayer[c]) == AI_DIFFICULTY_INSANE ) then
call SetPlayerName(Aiplayer[c], aiNameInsane[aid] )
call TimerStart(Aiclock[c], aiClockInsane[aid] , true, function AiCore )
endif
set c = c + 1
endloop //Ai orders
set t = null
set tcities = tcities - remNeutral
if IsPlayerInForce(GetLocalPlayer(),bj_FORCE_ALL_PLAYERS) == true then
call DisplayTimedTextToPlayer(GetLocalPlayer(),.3,.2,8,"|cffffcc00Setup ready!...|r")
// call DisplayTimedTextToPlayer(GetLocalPlayer(),.3,.2,8,"To win the battle you must destroy all enemy emblems")
endif
set udg_storm_victory = I2R(iSand)
set udg_sand_victory = I2R(iStorm)
call NewBoard()
call FogEnable(false)
call FogMaskEnable(false)
call EnableTrigger( gg_trg_taxing )
call TimerStart(boardt, 2.00,true, function UpdateBoard)
endfunction
//===========================================================================
function InitTrig_startunits takes nothing returns nothing
set gg_trg_startunits = CreateTrigger( )
call TriggerAddAction( gg_trg_startunits, function Trig_startunits_Actions )
endfunction
function pickrace takes nothing returns boolean
return GetUnitTypeId(GetManipulatingUnit()) == 'e00D'
endfunction
function Trig_pickuprace_Actions takes nothing returns nothing
local integer id = GetPlayerId(GetOwningPlayer(GetManipulatingUnit()))
local location p = null
set udg_Race[id] = R2I(GetWidgetLife(GetManipulatedItem()))
call SetStartLocation(id)
set PlayerBase[id] = Rect(GetUnitX(MainBase[id])-450,GetUnitY(MainBase[id])-450,GetUnitX(MainBase[id])+450,GetUnitY(MainBase[id])+450)
call RemoveUnit(GetManipulatingUnit())
set p = Location(GetUnitX(MainBase[id]),GetUnitY(MainBase[id]))
call PanCameraToTimedLocForPlayer( Player(id), p, 0 )
call ShowBoard(id)
call RemoveLocation(p)
set p = null
endfunction
//===========================================================================
function InitTrig_pickuprace takes nothing returns nothing
local integer index = 0
set gg_trg_pickuprace = CreateTrigger( )
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_pickuprace, Player(index), EVENT_PLAYER_UNIT_PICKUP_ITEM, null)
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
call TriggerAddCondition( gg_trg_pickuprace, Condition( function pickrace ) )
call TriggerAddAction( gg_trg_pickuprace, function Trig_pickuprace_Actions )
endfunction
function Trig_Innate_Actions takes nothing returns nothing
local integer r = GetRandomInt(1, 4)
local unit u = GetTrainedUnit()
local integer i
if ( r == 2 ) then
set i = GetRandomInt(1, 9)
call UnitAddAbility(u,udg_Innate[i])
call UnitAddAbility(u,udg_fake_innate[i])
call GroupAddUnit( udg_Innate_group[i],u)
call SaveInteger(udg_Innate_Ability,GetHandleId(u),1,i)
endif
set r = 0
set i = 0
endfunction
//===========================================================================
function InitTrig_Innate takes nothing returns nothing
set gg_trg_Innate = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Innate, EVENT_PLAYER_UNIT_TRAIN_FINISH )
call TriggerAddAction( gg_trg_Innate, function Trig_Innate_Actions )
endfunction
function removeconditions takes nothing returns boolean
return GetPlayerController(GetOwningPlayer(GetTriggerUnit())) == MAP_CONTROL_COMPUTER and IsUnitInGroup(GetTriggerUnit(), udg_Grupo_rescate) == true
endfunction
function Trig_removescape_Actions takes nothing returns nothing
call GroupRemoveUnit( udg_Grupo_rescate, GetLeavingUnit() )
endfunction
//===========================================================================
function InitTrig_removescape takes nothing returns nothing
set gg_trg_removescape = CreateTrigger( )
call TriggerAddCondition( gg_trg_removescape, Condition( function removeconditions ) )
call TriggerAddAction( gg_trg_removescape, function Trig_removescape_Actions )
endfunction
library corefunc initializer init
globals
integer tempPlayerId
integer tempUnitType
boolean array IADefending
group array aiArmy
real mainX = 0
real mainY = 0
endglobals
function NoWorker takes unit u returns boolean
return GetUnitDefaultAcquireRange(GetDyingUnit()) != 503.00
endfunction
function healthOK takes nothing returns boolean
return ( NoWorker(GetFilterUnit()) and GetUnitLifePercent(GetFilterUnit()) > 90.00 )
endfunction
function GetNeutrals takes nothing returns boolean
return GetOwningPlayer(GetFilterUnit()) == Player(PLAYER_EMPIRE)
endfunction
function GetUnitsType takes nothing returns boolean
return GetUnitTypeId(GetFilterUnit()) == tempUnitType //udg_Tech_build[udg_Race[tempPlayerId]]
endfunction
function Is_struct takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == true )
endfunction
function Non_Struct takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction
function Noself takes integer playernumber returns boolean
return ( GetFilterPlayer() != Player(playernumber) )
endfunction
function Noally takes integer playernumber returns boolean
return ( IsPlayerAlly(GetOwningPlayer(GetFilterUnit()), Player(playernumber)) == false )
endfunction
function Is_enemy takes nothing returns boolean
return (Is_struct() and Noself(tempPlayerId) and Noally(tempPlayerId))
endfunction
function CheckAiGold takes player AIPlayer, integer gold returns boolean
return ( GetPlayerState(AIPlayer, PLAYER_STATE_RESOURCE_GOLD) >= gold )
endfunction
function CheckAiKPoints takes player AIPlayer, integer kpoint returns boolean
return ( GetPlayerState(AIPlayer, PLAYER_STATE_RESOURCE_LUMBER) >= kpoint )
endfunction
//=====================================DEFENDING ORDERS==========================================================
//======================AI Defending ===============00
function Ownerfilter takes nothing returns boolean
return GetOwningPlayer(GetFilterUnit()) == Player(tempPlayerId)
endfunction
function DefOrder takes nothing returns nothing
call IssuePointOrder( GetEnumUnit(), "attack", mainX, mainY)
endfunction
function AiDefendOrder takes real range, integer playernumber, unit attacked returns nothing
local boolexpr owns = null
set tempPlayerId = playernumber
set aiArmy[playernumber] = CreateGroup()
set owns = Condition (function Ownerfilter)
set mainX = GetUnitX(attacked)
set mainY = GetUnitY(attacked)
call GroupEnumUnitsInRange(aiArmy[playernumber], mainX, mainY, range, owns)
call DestroyBoolExpr(owns)
set owns = null
call ForGroup( aiArmy[playernumber], function DefOrder )
call DestroyGroup(aiArmy[playernumber])
set aiArmy[playernumber] = null
endfunction
//=========================== AI defending ally ================
function CheckAlly takes unit attacked returns boolean
return IADefending[tempPlayerId] == false and IsUnitType(attacked, UNIT_TYPE_STRUCTURE) == true and IsPlayerAlly(GetOwningPlayer(attacked), Player(tempPlayerId)) == true
endfunction
function DefAllyFilter takes nothing returns boolean
return Non_Struct() and GetOwningPlayer(GetFilterUnit()) == Player(tempPlayerId)
endfunction
function DefAllyOrder takes nothing returns nothing
call IssuePointOrder( GetEnumUnit(), "attack", mainX, mainY)
endfunction
function AIDefendAlly takes real range, integer playernumber, unit attacked returns nothing
local boolexpr allies = null
set tempPlayerId = playernumber
set aiArmy[playernumber] = CreateGroup()
set allies = Condition (function DefAllyFilter)
set mainX = GetUnitX(attacked)
set mainY = GetUnitY(attacked)
call GroupEnumUnitsInRange(aiArmy[playernumber], mainX, mainY, range, allies)
if ( IsUnitGroupEmptyBJ(aiArmy[playernumber]) == true ) then
call GroupEnumUnitsInRange(aiArmy[playernumber], mainX, mainY, range * 2, allies)
endif
call DestroyBoolExpr(allies)
set allies = null
call ForGroup( aiArmy[playernumber], function DefAllyOrder )
call DestroyGroup(aiArmy[playernumber])
set aiArmy[playernumber] = null
endfunction
// research orders
function upArmor takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), 'R002' )
endfunction
function upDamage takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), 'R001' )
endfunction
function upLife takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), 'R000' )
endfunction
function upBuild takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), 'R004' )
endfunction
function ReshArmor takes nothing returns nothing
local group g = CreateGroup()
local boolexpr reserch = null
set tempUnitType = udg_Tech_build[udg_Race[tempPlayerId]]
set reserch = Condition (function GetUnitsType)
call GroupEnumUnitsOfPlayer(g, Player(tempPlayerId), reserch)
call DestroyBoolExpr(reserch)
set reserch = null
call ForGroup(g, function upArmor)
call DestroyGroup(g)
set g = null
endfunction
function ReshDamage takes nothing returns nothing
local group g = CreateGroup()
local boolexpr reserch = null
set tempUnitType = udg_Tech_build[udg_Race[tempPlayerId]]
set reserch = Condition (function GetUnitsType)
call GroupEnumUnitsOfPlayer(g, Player(tempPlayerId), reserch)
call DestroyBoolExpr(reserch)
set reserch = null
call ForGroup(g, function upDamage)
call DestroyGroup(g)
set g = null
endfunction
function ReshHealth takes nothing returns nothing
local group g = CreateGroup()
local boolexpr reserch = null
set tempUnitType = udg_Tech_build[udg_Race[tempPlayerId]]
set reserch = Condition (function GetUnitsType)
call GroupEnumUnitsOfPlayer(g, Player(tempPlayerId), reserch)
call DestroyBoolExpr(reserch)
set reserch = null
call ForGroup(g, function upLife)
call DestroyGroup(g)
set g = null
endfunction
// Train units orders
function GetUnitsTrainers takes nothing returns boolean
return GetUnitTypeId(GetFilterUnit()) == udg_Main_build[udg_Race[tempPlayerId]] or GetUnitTypeId(GetFilterUnit()) == udg_Fupgrade_build[udg_Race[tempPlayerId]] or GetUnitTypeId(GetFilterUnit()) == udg_Supgrade_build[udg_Race[tempPlayerId]]
endfunction
function AiTrainMelee takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), udg_Mele_Unit[udg_Race[tempPlayerId]] )
endfunction
function AiTrainMage takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), udg_Mage_Unit[udg_Race[tempPlayerId]] )
endfunction
function AiTrainTank takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), udg_Tank_Unit[udg_Race[tempPlayerId]] )
endfunction
function AiTrainRange takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), udg_Range_Unit[udg_Race[tempPlayerId]] )
endfunction
function AiTrainFlying takes nothing returns nothing
call IssueImmediateOrderById( GetEnumUnit(), udg_Flyng_Unit[udg_Race[tempPlayerId]] )
endfunction
function TrainMelee takes nothing returns nothing
local group g = CreateGroup()
local boolexpr reserch = null
set reserch = Condition (function GetUnitsTrainers)
call GroupEnumUnitsOfPlayer(g, Player(tempPlayerId), reserch)
call DestroyBoolExpr(reserch)
set reserch = null
call ForGroup(g, function AiTrainMelee)
call DestroyGroup(g)
set g = null
endfunction
function TrainRange takes nothing returns nothing
local group g = CreateGroup()
local boolexpr reserch = null
set reserch = Condition (function GetUnitsTrainers)
call GroupEnumUnitsOfPlayer(g, Player(tempPlayerId), reserch)
call DestroyBoolExpr(reserch)
set reserch = null
call ForGroup(g, function AiTrainRange)
call DestroyGroup(g)
set g = null
endfunction
function TrainMage takes nothing returns nothing
local group g = CreateGroup()
local boolexpr reserch = null
set reserch = Condition (function GetUnitsTrainers)
call GroupEnumUnitsOfPlayer(g, Player(tempPlayerId), reserch)
call DestroyBoolExpr(reserch)
set reserch = null
call ForGroup(g, function AiTrainMage)
call DestroyGroup(g)
set g = null
endfunction
function TrainTanke takes nothing returns nothing
local group g = CreateGroup()
local boolexpr reserch = null
set reserch = Condition (function GetUnitsTrainers)
call GroupEnumUnitsOfPlayer(g, Player(tempPlayerId), reserch)
call DestroyBoolExpr(reserch)
set reserch = null
call ForGroup(g, function AiTrainTank)
call DestroyGroup(g)
set g = null
endfunction
function TrainFlyer takes nothing returns nothing
local group g = CreateGroup()
local boolexpr reserch = null
set tempUnitType = udg_Supgrade_build[udg_Race[tempPlayerId]]
set reserch = Condition (function GetUnitsType)
call GroupEnumUnitsOfPlayer(g, Player(tempPlayerId), reserch)
call DestroyBoolExpr(reserch)
set reserch = null
call ForGroup(g, function AiTrainFlying)
call DestroyGroup(g)
set g = null
endfunction
//Battle orders
function UpgradeFirst takes nothing returns nothing
local integer id = tempPlayerId
local integer i = 0
local integer c = 0
local unit upon
if CheckAiGold(Player(id),500) == true then
loop
exitwhen i>10
if (GetUnitTypeId(conquered[id][conqueredIndex[i]]) == udg_Main_build[udg_Race[id]]) then
set upon = conquered[id][conqueredIndex[i]]
set i = 10
endif
set i = i+1
call TriggerSleepAction(0.02)
endloop
if upon != null then
call SelectUnitForPlayerSingle(upon, Player(id) )
loop
exitwhen c > 7
call ForceUICancelBJ( Player(id) )
set c = c + 1
call TriggerSleepAction(0.02)
endloop
call IssueImmediateOrderById( upon, udg_Fupgrade_build[udg_Race[id]] )
endif
endif
endfunction
function UpgradeSecond takes nothing returns nothing
local integer id = tempPlayerId
local integer i = 0
local integer c = 0
local unit upon
if CheckAiGold(Player(id),800) == true then
loop
exitwhen i>10
if (GetUnitTypeId(conquered[id][conqueredIndex[i]]) == udg_Fupgrade_build[udg_Race[id]]) then
set upon = conquered[id][conqueredIndex[i]]
set i = 10
endif
set i = i+1
call TriggerSleepAction(0.02)
endloop
if upon != null then
call SelectUnitForPlayerSingle(upon, Player(id) )
loop
exitwhen c > 7
call ForceUICancelBJ( Player(id) )
set c = c + 1
call TriggerSleepAction(0.02)
endloop
call IssueImmediateOrderById( upon, udg_Supgrade_build[udg_Race[id]] )
endif
endif
endfunction
function AttackOrder takes integer playerId, real x , real y returns nothing
local group g = CreateGroup()
local boolexpr healthies = null
local unit a = null
//call DisplayTimedTextToPlayer(Player(0),.3,.2,8,"Preparing attack")
set healthies = Condition (function healthOK)
call GroupEnumUnitsOfPlayer(g, Player(playerId), healthies)
call DestroyBoolExpr(healthies)
set healthies = null
loop
exitwhen FirstOfGroup(g) == null
set a = FirstOfGroup(g)
call IssuePointOrder( a, "attack",x,y)
// call DisplayTimedTextToPlayer(Player(0),.3,.2,8,"Attack running")
call GroupRemoveUnit(g,a)
set a = null
endloop
call DestroyGroup(g)
set g = null
endfunction
function Expand takes nothing returns nothing
local integer m = GetRandomInt(1, 3)// 33% cahcne of launch attack
local group g = CreateGroup()
local real x = 0
local real y = 0
local unit u = null
local boolexpr targets = null
if m == 2 then
set targets = Condition (function GetNeutrals)
set x = GetUnitX(MainBase[tempPlayerId])
set y = GetUnitY(MainBase[tempPlayerId])
call GroupEnumUnitsInRange(g, x, y, 15000, targets)
call DestroyBoolExpr(targets)
set targets = null
if ( FirstOfGroup(g) != null ) then
set u = FirstOfGroup(g)
//call DisplayTimedTextToPlayer(Player(0),.3,.2,8,"Expand running")
call AttackOrder(tempPlayerId,GetUnitX(u),GetUnitY(u))
set u = null
else
//call DisplayTimedTextToPlayer(Player(0),.3,.2,8,"No group")
endif
endif
call DestroyGroup(g)
set g = null
endfunction
//================================ AI AGGRESIVE ORDERS =========================================================
function SetMinor takes integer Apl, integer Bpl returns integer
local integer P1 = GetPlayerUnitCount(Player(Apl), false)
local integer P2 = GetPlayerUnitCount(Player(Bpl), false)
if ( P1 > P2) then
return Bpl
endif
return Apl
endfunction
function CheckWeakSand takes integer playernumber returns integer
local integer c = 0
local integer t
local integer minor
loop
exitwhen c > 11
set t = GetPlayerId(iSandPlayers[c])
if (t != 0) then
set minor = SetMinor(playernumber,t)
set c = c + 1
else
set c = c + 1
endif
endloop
return minor
endfunction
function CheckWeakStorm takes integer playernumber returns integer
local integer c = 0
local integer t
local integer minor
loop
exitwhen c > 11
set t = (GetPlayerId(iStormPlayers[c]))
if (t != 0) then
set minor = SetMinor(playernumber,t)
set c = c + 1
else
set c = c + 1
endif
endloop
return minor
endfunction
function Mass_Attack takes player Enm, player Own returns nothing
local integer c = 0
local integer mon = GetRandomInt(1, 3)
local real x = 0
local real y = 0
local unit btarget = null
local group army
local group s_army
local group Enemg
local boolexpr filter = null
if mon == 2 then
set Enemg = CreateGroup()
set filter = Condition(function Is_struct)
call GroupEnumUnitsOfPlayer(Enemg, Enm, filter)
call DestroyBoolExpr(filter)
set filter = null
set btarget = GroupPickRandomUnit(Enemg)
call DestroyGroup (Enemg)
set Enemg = null
set x = GetUnitX(btarget)
set y = GetUnitY(btarget)
set army = CreateGroup()
set filter = Condition(function healthOK)
call GroupEnumUnitsOfPlayer(army, Own, filter)
call DestroyBoolExpr(filter)
set filter = null
loop
exitwhen c > 10
set s_army = GetRandomSubGroup(12, army)
call GroupPointOrder( s_army, "attack", x , y )
call GroupRemoveGroup( s_army, army )
call DestroyGroup (s_army)
set c = c + 1
endloop
call DestroyGroup (army)
set btarget = null
endif
endfunction
function AttackWeak takes nothing returns nothing
local integer targetnumber
if (tempPlayerId <= 11) then
set targetnumber = CheckWeakStorm(tempPlayerId)
if (targetnumber == tempPlayerId) then
set targetnumber = 0
return
endif
else
set targetnumber = CheckWeakSand(tempPlayerId)
if (targetnumber == tempPlayerId) then
set targetnumber = 0
return
endif
endif
call Mass_Attack(Player(targetnumber),Player(tempPlayerId))
endfunction
function AIattack takes integer playernumber, real x , real y returns nothing
local group g = null
local group sg = null
local integer c = 1
local boolexpr filter = null
set g = CreateGroup()
set filter = Condition(function healthOK)
call GroupEnumUnitsOfPlayer(g,Player(playernumber), filter)
call DestroyBoolExpr(filter)
set filter = null
loop
exitwhen c > 10
set sg = GetRandomSubGroup(12, g)
call GroupPointOrder( sg, "attack",x, y)
call GroupRemoveGroup(sg, g )
call DestroyGroup (sg)
set c = c + 1
endloop
call DestroyGroup (g)
endfunction
function AIattackb takes integer playernumber, real x, real y returns nothing
local group g = null
local group sg = null
local integer c = 1
local boolexpr filter = null
set g = CreateGroup()
set filter = Condition(function Non_Struct)
call GroupEnumUnitsOfPlayer(g,Player(playernumber), filter)
call DestroyBoolExpr(filter)
set filter = null
loop
exitwhen c > 10
set sg = GetRandomSubGroup(12, g)
call GroupPointOrder( sg, "attack",x, y)
call GroupRemoveGroup(sg, g )
call DestroyGroup (sg)
set c = c + 1
endloop
call DestroyGroup (g)
endfunction
function Total_Attack takes integer playerid returns nothing
local integer m = GetRandomInt(1, 3)
local group targetg
local real x
local real y
local unit target = null
local boolexpr filter = null
if m == 2 then
set targetg = CreateGroup()
set filter = Condition(function Is_enemy)
call GroupEnumUnitsInRange(targetg ,GetUnitX(MainEmblem[playerid]),GetUnitY(MainEmblem[playerid]),49000, filter)
call DestroyBoolExpr(filter)
set filter = null
if ( IsUnitGroupEmptyBJ(targetg) == false ) then
set target = GroupPickRandomUnit(targetg)
set x = GetUnitX(target)
set y = GetUnitY(target)
call AIattackb(playerid,x,y)
endif
//call DisplayTimedTextToPlayer(Player(0),.3,.2,8,"AI Player("+I2S(playerid)+") has lauched A great attack to Player ("+I2S(GetPlayerId(GetOwningPlayer(target)))+")")
call DestroyGroup (targetg)
set target = null
endif
endfunction
function AttackMassive takes nothing returns nothing
local integer targetnumber
if (tempPlayerId < 12) then
set targetnumber = GetRandomInt(12, 23)
else
set targetnumber = GetRandomInt(0, 11)
endif
call Total_Attack(tempPlayerId)
endfunction
function Assemble takes nothing returns nothing
endfunction
function Assault takes nothing returns nothing
endfunction
function AiCore takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer playerId = LoadInteger(HTcache, GetHandleId(t),1)
local integer orderIndex = LoadInteger(HTcache, GetHandleId(t),2)
local integer Aindex = LoadInteger(HTcache, GetHandleId(t),3)
set tempPlayerId = playerId
call ExecuteFunc(aiOrders[Aindex][orderIndex])
set orderIndex = orderIndex + 1
if orderIndex == 30 then
set orderIndex = 0
endif
call SaveInteger(HTcache, GetHandleId(t),2,orderIndex)
set t = null
endfunction
private function init takes nothing returns nothing
endfunction
endlibrary
library characters initializer init
globals
constant real empireexp = 30000
constant real countryexp = 15000
constant real cityexp = 7500
string array aiNameEasy
string array aiNameNormal
string array aiNameInsane
real array aiClockEasy
real array aiClockNormal
real array aiClockInsane
boolean array aiDefending
boolean array aiReshDamage
boolean array aiReshHealth
boolean array aiReshArmor
boolean array aiTrainingMelee
boolean array aiTrainingRange
boolean array aiTrainingMagic
boolean array aiTrainingTanke
boolean array aiTrainingFlyer
boolean array aiUpgrading
string array aiOrders[12][30]
unit array conquered[24][10]
unit array tempbarray
integer array conqueredIndex
endglobals
private function init takes nothing returns nothing
local integer i=0
// Wizzard
set aiNameEasy[0] = "Magic Follower"
set aiNameNormal[0] = "Lord of Magic"
set aiNameInsane[0] = "Archmage Warlord"
set aiClockEasy[0] = 6.1
set aiClockNormal[0] = 5.0
set aiClockInsane[0] = 4.0
set aiOrders[0][0] = "ReshArmor"
set aiOrders[0][1] = "TrainMelee"
set aiOrders[0][2] = "TrainRange"
set aiOrders[0][3] = "TrainMelee"
set aiOrders[0][4] = "TrainMage"
set aiOrders[0][5] = "TrainMage"
set aiOrders[0][6] = "TrainMage"
set aiOrders[0][7] = "TrainTanke"
set aiOrders[0][8] = "TrainRange"
set aiOrders[0][9] = "UpgradeFirst"
set aiOrders[0][10] = "UpgradeSecond"
set aiOrders[0][11] = "Expand"
set aiOrders[0][12] = "ReshHealth"
set aiOrders[0][13] = "TrainMage"
set aiOrders[0][14] = "TrainMage"
set aiOrders[0][15] = "AttackWeak"
set aiOrders[0][16] = "TrainMelee"
set aiOrders[0][17] = "TrainRange"
set aiOrders[0][18] = "ReshDamage"
set aiOrders[0][19] = "TrainMage"
set aiOrders[0][20] = "TrainRange"
set aiOrders[0][21] = "TrainFlyer"
set aiOrders[0][22] = "TrainFlyer"
set aiOrders[0][23] = "TrainMage"
set aiOrders[0][24] = "Assault"
set aiOrders[0][25] = "TrainFlyer"
set aiOrders[0][26] = "TrainTanke"
set aiOrders[0][27] = "TrainTanke"
set aiOrders[0][28] = "TrainRange"
set aiOrders[0][29] = "AttackMassive"
// Paladin
set aiNameEasy[1] = "White Soldier"
set aiNameNormal[1] = "Paladin Lord"
set aiNameInsane[1] = "Divine Warlord"
set aiClockEasy[1] = 7.5
set aiClockNormal[1] = 5.5
set aiClockInsane[1] = 3.5
set aiOrders[1][0] = "Assemble"
set aiOrders[1][1] = "TrainMelee"
set aiOrders[1][2] = "TrainRange"
set aiOrders[1][3] = "TrainMelee"
set aiOrders[1][4] = "TrainMelee"
set aiOrders[1][5] = "TrainMage"
set aiOrders[1][6] = "TrainRange"
set aiOrders[1][7] = "TrainTanke"
set aiOrders[1][8] = "TrainRange"
set aiOrders[1][9] = "UpgradeFirst"
set aiOrders[1][10] = "UpgradeSecond"
set aiOrders[1][11] = "Expand"
set aiOrders[1][12] = "ReshDamage"
set aiOrders[1][13] = "TrainTanke"
set aiOrders[1][14] = "TrainMage"
set aiOrders[1][15] = "AttackWeak"
set aiOrders[1][16] = "TrainMelee"
set aiOrders[1][17] = "TrainRange"
set aiOrders[1][18] = "ReshHealth"
set aiOrders[1][19] = "TrainMage"
set aiOrders[1][20] = "TrainRange"
set aiOrders[1][21] = "TrainFlyer"
set aiOrders[1][22] = "ReshArmor"
set aiOrders[1][23] = "TrainFlyer"
set aiOrders[1][24] = "Assault"
set aiOrders[1][25] = "TrainFlyer"
set aiOrders[1][26] = "TrainTanke"
set aiOrders[1][27] = "TrainTanke"
set aiOrders[1][28] = "TrainRange"
set aiOrders[1][29] = "AttackMassive"
// Assasin
set aiNameEasy[2] = "Murderer Man"
set aiNameNormal[2] = "Ripper Lord"
set aiNameInsane[2] = "Butcherer Warlord"
set aiClockEasy[2] = 6.3
set aiClockNormal[2] = 4
set aiClockInsane[2] = 2.9
set aiOrders[2][0] = "AttackWeak"
set aiOrders[2][1] = "TrainMelee"
set aiOrders[2][2] = "TrainRange"
set aiOrders[2][3] = "TrainMelee"
set aiOrders[2][4] = "TrainMelee"
set aiOrders[2][5] = "TrainRange"
set aiOrders[2][6] = "TrainRange"
set aiOrders[2][7] = "TrainTanke"
set aiOrders[2][8] = "TrainRange"
set aiOrders[2][9] = "TrainRange"
set aiOrders[2][10] = "TrainTanke"
set aiOrders[2][11] = "Expand"
set aiOrders[2][12] = "ReshHealth"
set aiOrders[2][13] = "TrainTanke"
set aiOrders[2][14] = "TrainMage"
set aiOrders[2][15] = "AttackWeak"
set aiOrders[2][16] = "TrainMelee"
set aiOrders[2][17] = "TrainRange"
set aiOrders[2][18] = "ReshDamage"
set aiOrders[2][19] = "TrainMage"
set aiOrders[2][20] = "TrainRange"
set aiOrders[2][21] = "TrainFlyer"
set aiOrders[2][22] = "ReshArmor"
set aiOrders[2][23] = "TrainFlyer"
set aiOrders[2][24] = "Assault"
set aiOrders[2][25] = "TrainMelee"
set aiOrders[2][26] = "TrainTanke"
set aiOrders[2][27] = "TrainTanke"
set aiOrders[2][28] = "TrainRange"
set aiOrders[2][29] = "AttackMassive"
// Thief
set aiNameEasy[3] = "Thief Player"
set aiNameNormal[3] = "Rogue Lord"
set aiNameInsane[3] = "King of Thieves"
set aiClockEasy[3] = 7.7
set aiClockNormal[3] = 5.7
set aiClockInsane[3] = 3.7
set aiOrders[3][0] = "Assemble"
set aiOrders[3][1] = "TrainMelee"
set aiOrders[3][2] = "TrainRange"
set aiOrders[3][3] = "TrainMelee"
set aiOrders[3][4] = "TrainMelee"
set aiOrders[3][5] = "TrainMelee"
set aiOrders[3][6] = "TrainFlyer"
set aiOrders[3][7] = "TrainTanke"
set aiOrders[3][8] = "TrainRange"
set aiOrders[3][9] = "UpgradeFirst"
set aiOrders[3][10] = "UpgradeSecond"
set aiOrders[3][11] = "Expand"
set aiOrders[3][12] = "ReshDamage"
set aiOrders[3][13] = "TrainTanke"
set aiOrders[3][14] = "TrainMage"
set aiOrders[3][15] = "AttackWeak"
set aiOrders[3][16] = "TrainMelee"
set aiOrders[3][17] = "TrainMelee"
set aiOrders[3][18] = "ReshHealth"
set aiOrders[3][19] = "TrainRange"
set aiOrders[3][20] = "TrainRange"
set aiOrders[3][21] = "TrainFlyer"
set aiOrders[3][22] = "ReshArmor"
set aiOrders[3][23] = "TrainFlyer"
set aiOrders[3][24] = "Assault"
set aiOrders[3][25] = "TrainMelee"
set aiOrders[3][26] = "TrainTanke"
set aiOrders[3][27] = "TrainTanke"
set aiOrders[3][28] = "TrainTanke"
set aiOrders[3][29] = "AttackMassive"
// Psychopath
set aiNameEasy[4] = "Damaged Fighter"
set aiNameNormal[4] = "Psychopath Lord"
set aiNameInsane[4] = "Cruel Warlord"
set aiClockEasy[4] = 10.5
set aiClockNormal[4] = 7.5
set aiClockInsane[4] = 4.5
set aiOrders[4][0] = "TrainRange"
set aiOrders[4][1] = "TrainMelee"
set aiOrders[4][2] = "TrainRange"
set aiOrders[4][3] = "TrainMelee"
set aiOrders[4][4] = "TrainMelee"
set aiOrders[4][5] = "TrainMage"
set aiOrders[4][6] = "TrainRange"
set aiOrders[4][7] = "TrainTanke"
set aiOrders[4][8] = "TrainRange"
set aiOrders[4][9] = "UpgradeFirst"
set aiOrders[4][10] = "UpgradeSecond"
set aiOrders[4][11] = "Expand"
set aiOrders[4][12] = "ReshDamage"
set aiOrders[4][13] = "TrainTanke"
set aiOrders[4][14] = "TrainMage"
set aiOrders[4][15] = "AttackWeak"
set aiOrders[4][16] = "TrainMelee"
set aiOrders[4][17] = "TrainRange"
set aiOrders[4][18] = "ReshHealth"
set aiOrders[4][19] = "TrainMage"
set aiOrders[4][20] = "TrainRange"
set aiOrders[4][21] = "TrainFlyer"
set aiOrders[4][22] = "ReshArmor"
set aiOrders[4][23] = "TrainFlyer"
set aiOrders[4][24] = "Assault"
set aiOrders[4][25] = "TrainMelee"
set aiOrders[4][26] = "TrainTanke"
set aiOrders[4][27] = "TrainTanke"
set aiOrders[4][28] = "TrainRange"
set aiOrders[4][29] = "AttackMassive"
// Emperor
set aiNameEasy[5] = "Explorer Soldier"
set aiNameNormal[5] = "Lord of Conquer"
set aiNameInsane[5] = "Emperor & Warlord"
set aiClockEasy[5] = 5
set aiClockNormal[5] = 4
set aiClockInsane[5] = 3
set aiOrders[5][0] = "TrainRange"
set aiOrders[5][1] = "TrainFlyer"
set aiOrders[5][2] = "TrainRange"
set aiOrders[5][3] = "TrainMelee"
set aiOrders[5][4] = "TrainMelee"
set aiOrders[5][5] = "TrainRange"
set aiOrders[5][6] = "TrainRange"
set aiOrders[5][7] = "TrainTanke"
set aiOrders[5][8] = "TrainRange"
set aiOrders[5][9] = "UpgradeFirst"
set aiOrders[5][10] = "UpgradeSecond"
set aiOrders[5][11] = "Expand"
set aiOrders[5][12] = "ReshDamage"
set aiOrders[5][13] = "TrainTanke"
set aiOrders[5][14] = "TrainRange"
set aiOrders[5][15] = "AttackWeak"
set aiOrders[5][16] = "TrainMelee"
set aiOrders[5][17] = "TrainRange"
set aiOrders[5][18] = "ReshHealth"
set aiOrders[5][19] = "TrainMage"
set aiOrders[5][20] = "TrainRange"
set aiOrders[5][21] = "TrainFlyer"
set aiOrders[5][22] = "ReshArmor"
set aiOrders[5][23] = "TrainFlyer"
set aiOrders[5][24] = "Assault"
set aiOrders[5][25] = "TrainMelee"
set aiOrders[5][26] = "TrainTanke"
set aiOrders[5][27] = "TrainFlyer"
set aiOrders[5][28] = "TrainFlyer"
set aiOrders[5][29] = "AttackMassive"
// Pacifist
set aiNameEasy[6] = "Village Knight"
set aiNameNormal[6] = "Diplomatic Lord"
set aiNameInsane[6] = "Chancellor"
set aiClockEasy[6] = 9
set aiClockNormal[6] = 6
set aiClockInsane[6] = 3
set aiOrders[6][0] = "TrainRange"
set aiOrders[6][1] = "TrainMelee"
set aiOrders[6][2] = "TrainRange"
set aiOrders[6][3] = "TrainMelee"
set aiOrders[6][4] = "TrainMelee"
set aiOrders[6][5] = "TrainRange"
set aiOrders[6][6] = "TrainRange"
set aiOrders[6][7] = "TrainTanke"
set aiOrders[6][8] = "TrainRange"
set aiOrders[6][9] = "UpgradeFirst"
set aiOrders[6][10] = "UpgradeSecond"
set aiOrders[6][11] = "Expand"
set aiOrders[6][12] = "ReshDamage"
set aiOrders[6][13] = "TrainTanke"
set aiOrders[6][14] = "TrainRange"
set aiOrders[6][15] = "AttackWeak"
set aiOrders[6][16] = "TrainMelee"
set aiOrders[6][17] = "TrainRange"
set aiOrders[6][18] = "ReshHealth"
set aiOrders[6][19] = "TrainMage"
set aiOrders[6][20] = "TrainRange"
set aiOrders[6][21] = "TrainFlyer"
set aiOrders[6][22] = "ReshArmor"
set aiOrders[6][23] = "TrainFlyer"
set aiOrders[6][24] = "Assault"
set aiOrders[6][25] = "TrainMelee"
set aiOrders[6][26] = "TrainTanke"
set aiOrders[6][27] = "TrainFlyer"
set aiOrders[6][28] = "TrainRange"
set aiOrders[6][29] = "Expand"
// Evil
set aiNameEasy[7] = "Cultist Fighter"
set aiNameNormal[7] = "Dark Lord"
set aiNameInsane[7] = "Demon Warlord"
set aiClockEasy[7] = 12
set aiClockNormal[7] = 8
set aiClockInsane[7] = 4
set aiOrders[7][0] = "Expand"
set aiOrders[7][1] = "TrainTanke"
set aiOrders[7][2] = "TrainTanke"
set aiOrders[7][3] = "TrainFlyer"
set aiOrders[7][4] = "TrainMelee"
set aiOrders[7][5] = "TrainRange"
set aiOrders[7][6] = "TrainRange"
set aiOrders[7][7] = "TrainMelee"
set aiOrders[7][8] = "TrainRange"
set aiOrders[7][9] = "UpgradeFirst"
set aiOrders[7][10] = "UpgradeSecond"
set aiOrders[7][11] = "AttackMassive"
set aiOrders[7][12] = "ReshDamage"
set aiOrders[7][13] = "TrainRange"
set aiOrders[7][14] = "TrainMage"
set aiOrders[7][15] = "AttackWeak"
set aiOrders[7][16] = "TrainMelee"
set aiOrders[7][17] = "TrainMage"
set aiOrders[7][18] = "ReshHealth"
set aiOrders[7][19] = "TrainMage"
set aiOrders[7][20] = "TrainMage"
set aiOrders[7][21] = "TrainFlyer"
set aiOrders[7][22] = "ReshArmor"
set aiOrders[7][23] = "TrainFlyer"
set aiOrders[7][24] = "Assault"
set aiOrders[7][25] = "TrainMelee"
set aiOrders[7][26] = "TrainTanke"
set aiOrders[7][27] = "TrainFlyer"
set aiOrders[7][28] = "TrainRange"
set aiOrders[7][29] = "AttackMassive"
// Crazy
set aiNameEasy[8] = "Freak Villager"
set aiNameNormal[8] = "Mad Soldier"
set aiNameInsane[8] = "Crazy Warlord"
set aiClockEasy[8] = 6
set aiClockNormal[8] = 4
set aiClockInsane[8] = 2
set aiOrders[8][0] = "AttackWeak"
set aiOrders[8][1] = "TrainRange"
set aiOrders[8][2] = "TrainRange"
set aiOrders[8][3] = "TrainRange"
set aiOrders[8][4] = "TrainMelee"
set aiOrders[8][5] = "TrainRange"
set aiOrders[8][6] = "TrainRange"
set aiOrders[8][7] = "TrainMelee"
set aiOrders[8][8] = "AttackMassive"
set aiOrders[8][9] = "UpgradeFirst"
set aiOrders[8][10] = "UpgradeSecond"
set aiOrders[8][11] = "TrainRange"
set aiOrders[8][12] = "ReshDamage"
set aiOrders[8][13] = "TrainTanke"
set aiOrders[8][14] = "TrainMage"
set aiOrders[8][15] = "AttackWeak"
set aiOrders[8][16] = "TrainMelee"
set aiOrders[8][17] = "TrainMage"
set aiOrders[8][18] = "ReshHealth"
set aiOrders[8][19] = "TrainMage"
set aiOrders[8][20] = "TrainMage"
set aiOrders[8][21] = "TrainFlyer"
set aiOrders[8][22] = "ReshArmor"
set aiOrders[8][23] = "TrainFlyer"
set aiOrders[8][24] = "Assault"
set aiOrders[8][25] = "TrainMelee"
set aiOrders[8][26] = "TrainTanke"
set aiOrders[8][27] = "TrainFlyer"
set aiOrders[8][28] = "TrainRange"
set aiOrders[8][29] = "TrainFlyer"
// Genious
set aiNameEasy[9] = "Strategic Fighter"
set aiNameNormal[9] = "Genius Lord"
set aiNameInsane[9] = "Magnificent Warlord"
set aiClockEasy[9] = 10.5
set aiClockNormal[9] = 7
set aiClockInsane[9] = 3.5
set aiOrders[9][0] = "ReshArmor"
set aiOrders[9][1] = "Assemble"
set aiOrders[9][2] = "TrainRange"
set aiOrders[9][3] = "TrainMelee"
set aiOrders[9][4] = "TrainFlyer"
set aiOrders[9][5] = "TrainRange"
set aiOrders[9][6] = "TrainRange"
set aiOrders[9][7] = "TrainTanke"
set aiOrders[9][8] = "TrainRange"
set aiOrders[9][9] = "UpgradeFirst"
set aiOrders[9][10] = "UpgradeSecond"
set aiOrders[9][11] = "AttackWeak"
set aiOrders[9][12] = "ReshDamage"
set aiOrders[9][13] = "TrainTanke"
set aiOrders[9][14] = "TrainRange"
set aiOrders[9][15] = "TrainRange"
set aiOrders[9][16] = "TrainMelee"
set aiOrders[9][17] = "TrainRange"
set aiOrders[9][18] = "ReshHealth"
set aiOrders[9][19] = "TrainMage"
set aiOrders[9][20] = "AttackMassive"
set aiOrders[9][21] = "TrainFlyer"
set aiOrders[9][22] = "ReshArmor"
set aiOrders[9][23] = "TrainFlyer"
set aiOrders[9][24] = "Assault"
set aiOrders[9][25] = "TrainMelee"
set aiOrders[9][26] = "TrainTanke"
set aiOrders[9][27] = "TrainFlyer"
set aiOrders[9][28] = "TrainRange"
set aiOrders[9][29] = "Expand"
// Furious
set aiNameEasy[10] = "Angry soldier"
set aiNameNormal[10] = "Ranging Lord"
set aiNameInsane[10] = "Furious Warlord"
set aiClockEasy[10] = 10.6
set aiClockNormal[10] = 7.4
set aiClockInsane[10] = 4.2
set aiOrders[10][0] = "Expand"
set aiOrders[10][1] = "TrainRange"
set aiOrders[10][2] = "TrainRange"
set aiOrders[10][3] = "TrainRange"
set aiOrders[10][4] = "TrainMelee"
set aiOrders[10][5] = "TrainRange"
set aiOrders[10][6] = "TrainRange"
set aiOrders[10][7] = "TrainMelee"
set aiOrders[10][8] = "TrainRange"
set aiOrders[10][9] = "UpgradeFirst"
set aiOrders[10][10] = "UpgradeSecond"
set aiOrders[10][11] = "AttackMassive"
set aiOrders[10][12] = "ReshDamage"
set aiOrders[10][13] = "TrainTanke"
set aiOrders[10][14] = "TrainMage"
set aiOrders[10][15] = "AttackWeak"
set aiOrders[10][16] = "TrainMelee"
set aiOrders[10][17] = "TrainMage"
set aiOrders[10][18] = "ReshHealth"
set aiOrders[10][19] = "TrainMage"
set aiOrders[10][20] = "TrainMage"
set aiOrders[10][21] = "TrainFlyer"
set aiOrders[10][22] = "ReshArmor"
set aiOrders[10][23] = "TrainFlyer"
set aiOrders[10][24] = "AttackMassive"
set aiOrders[10][25] = "TrainMelee"
set aiOrders[10][26] = "TrainTanke"
set aiOrders[10][27] = "TrainFlyer"
set aiOrders[10][28] = "TrainRange"
set aiOrders[10][29] = "TrainFlyer"
// Wild
set aiNameEasy[11] = "Barbarian"
set aiNameNormal[11] = "Berserk Lord"
set aiNameInsane[11] = "Wild Warlord"
set aiClockEasy[11] = 7.5
set aiClockNormal[11] = 5.0
set aiClockInsane[11] = 2.5
set aiOrders[11][0] = "Expand"
set aiOrders[11][1] = "TrainRange"
set aiOrders[11][2] = "TrainRange"
set aiOrders[11][3] = "TrainRange"
set aiOrders[11][4] = "TrainMelee"
set aiOrders[11][5] = "TrainRange"
set aiOrders[11][6] = "TrainRange"
set aiOrders[11][7] = "TrainMelee"
set aiOrders[11][8] = "TrainRange"
set aiOrders[11][9] = "UpgradeFirst"
set aiOrders[11][10] = "UpgradeSecond"
set aiOrders[11][11] = "AttackMassive"
set aiOrders[11][12] = "ReshDamage"
set aiOrders[11][13] = "TrainTanke"
set aiOrders[11][14] = "TrainMage"
set aiOrders[11][15] = "AttackWeak"
set aiOrders[11][16] = "TrainMelee"
set aiOrders[11][17] = "TrainMage"
set aiOrders[11][18] = "ReshHealth"
set aiOrders[11][19] = "TrainMage"
set aiOrders[11][20] = "TrainMage"
set aiOrders[11][21] = "TrainFlyer"
set aiOrders[11][22] = "ReshArmor"
set aiOrders[11][23] = "TrainFlyer"
set aiOrders[11][24] = "Assault"
set aiOrders[11][25] = "TrainMelee"
set aiOrders[11][26] = "TrainTanke"
set aiOrders[11][27] = "TrainFlyer"
set aiOrders[11][28] = "TrainRange"
set aiOrders[11][29] = "TrainMelee"
endfunction
endlibrary
function rescue takes nothing returns boolean
return ((GetPlayerController(GetOwningPlayer(GetTriggerUnit())) == MAP_CONTROL_COMPUTER) and (GetUnitLifePercent(GetTriggerUnit()) < 70.00) and (IsUnitInGroup(GetTriggerUnit(), udg_Grupo_rescate) == false))
endfunction
function AIDefc takes nothing returns boolean
return (IsUnitType(GetTriggerUnit(), UNIT_TYPE_STRUCTURE) == true)
endfunction
function DefendFalse takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer id = LoadInteger(HTcache,GetHandleId(t),1)
set IADefending[id] = false
call PauseTimer(t)
call ReleaseTimer(t)
set t = null
endfunction
function AI_def takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer c = 0
local integer no = GetPlayerId(GetOwningPlayer(u))
local integer na
local timer t = null
if ((IADefending[no] == false) and (GetPlayerController(GetOwningPlayer(u)) == MAP_CONTROL_COMPUTER))then
set t = NewTimer()
set IADefending[no] = true
call AiDefendOrder(6500,no,u)
call SaveInteger(HTcache,GetHandleId(t),1,no)
call TimerStart(t,15,false,function DefendFalse)
set t = null
endif
loop
exitwhen c > 23
if ((IADefending[c] == false) and (IsPlayerAlly(Player(c), GetOwningPlayer(u)) == true) and (GetPlayerController(Player(c)) == MAP_CONTROL_COMPUTER)) then
set na = GetPlayerId(Player(c))
call AIDefendAlly(8000, na, u)
set t = NewTimer()
set IADefending[c] = true
call SaveInteger(HTcache,GetHandleId(t),1,c)
call TimerStart(t,15,false,function DefendFalse)
set t = null
endif
set c = c + 1
endloop
set c = 0
set u = null
set no = 0
set na = 0
endfunction
function Trig_rescatab_Actions takes nothing returns nothing
local unit survivor = GetTriggerUnit()
local real angle = GetUnitFacing(GetAttacker())
local real x = 0
local real y = 0
local real array dist1
local real safedist = 0
local integer R_count = 0
local integer B_count = 0
local integer currentCheck = 0
local boolean ok = false
local integer team = 0
local boolean defend = AIDefc()
local boolean escape = rescue()
if defend == true then
call AI_def()
elseif escape == true then
if IsPlayerAlly(GetOwningPlayer(survivor), iStormPlayers[0]) == true then
set team = 12
else
set team = 0
endif
if (GetUnitLifePercent(survivor) > 55.00) then
if ( GetUnitDefaultAcquireRange(GetAttacker()) >= 501 ) then
set safedist = 800
else
set safedist = 400
endif
set x = GetUnitX(survivor) + safedist * Cos(angle * bj_DEGTORAD)
set y = GetUnitY(survivor) + safedist * Sin(angle * bj_DEGTORAD)
call IssuePointOrder( survivor, "move",x,y)
call GroupAddUnit(udg_Grupo_rescate, survivor )
call TriggerSleepAction(2)
call GroupRemoveUnit( udg_Grupo_rescate, survivor )
set x = GetStartLocationX(GetPlayerStartLocation(GetOwningPlayer(survivor)))
set y = GetStartLocationY(GetPlayerStartLocation(GetOwningPlayer(survivor)))
call IssuePointOrder( survivor, "attack",x,y)
set survivor = null
else
set B_count = 1
set dist1[0] = 99999.00
call GroupAddUnitSimple( survivor, udg_Grupo_rescate )
loop
exitwhen B_count> 12
set currentCheck = B_count + team - 1
set dist1[B_count] = 99999.00
if GetPlayerSlotState(Player(currentCheck)) == PLAYER_SLOT_STATE_PLAYING and Arca_destruida[currentCheck] == false then
set dist1[B_count] = DistanceBetweenUnits(survivor,MainEmblem[currentCheck])
if dist1[B_count] < dist1[B_count - 1] then
set R_count = currentCheck
else
set dist1[B_count] = dist1[ B_count - 1]
endif
// call DisplayTimedTextToPlayer(Player(0),0,0,8,"Escape to "+I2S(R_count)+" : "+R2S(dist1[B_count]))
endif
set B_count = B_count + 1
endloop
set x = GetUnitX(MainEmblem[R_count])
set y = GetUnitY(MainEmblem[R_count])
call IssuePointOrder( survivor, "move", x,y )
// call PingMinimap(x,y,2)
endif
endif //rescue
set survivor = null
endfunction
//===========================================================================
function InitTrig_Aiescape takes nothing returns nothing
set gg_trg_Aiescape = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Aiescape, EVENT_PLAYER_UNIT_ATTACKED )
//call TriggerAddCondition( gg_trg_Aiescape, Condition( function rescue ) )
call TriggerAddAction( gg_trg_Aiescape, function Trig_rescatab_Actions )
endfunction
function atkbcon takes nothing returns boolean
return IsUnitInGroup(GetTriggerUnit(),neutralbuildattack) == true
endfunction
function smallGuard takes integer d, real x, real y returns nothing
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_Unit[d],x,y, bj_UNIT_FACING)
endfunction
function mediumGuard takes integer d, real x, real y returns nothing
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mage_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_Unit[d],x,y, bj_UNIT_FACING)
endfunction
function largeGuard takes integer d, real x, real y returns nothing
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mele_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mage_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Mage_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_scnd[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_third[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Range_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Tank_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Tank_Unit[d],x,y, bj_UNIT_FACING)
call CreateUnit(Player(PLAYER_EMPIRE),udg_Tank_scnd[d],x,y, bj_UNIT_FACING)
endfunction
function atkbacc takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer rce = GetUnitUserData(u)
local real x = GetUnitX(u)
local real y = GetUnitY(u)
call GroupRemoveUnit(neutralbuildattack,u)
if GetUnitDefaultAcquireRange(u) == 1.00 then
call smallGuard(rce,x,y)
elseif GetUnitDefaultAcquireRange(u) == 2.00 then
call mediumGuard(rce,x,y)
elseif GetUnitDefaultAcquireRange(u) == 3.00 then
call largeGuard(rce,x,y)
endif
set u = null
endfunction
//===========================================================================
function InitTrig_AtkNeutralBuild takes nothing returns nothing
set gg_trg_AtkNeutralBuild = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AtkNeutralBuild, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_AtkNeutralBuild, Condition( function atkbcon ) )
call TriggerAddAction( gg_trg_AtkNeutralBuild, function atkbacc )
endfunction
function Trig_castingwalls_Actions takes nothing returns boolean
local integer spell = GetSpellAbilityId()
local unit u = GetSpellAbilityUnit()
local integer id = GetPlayerId(GetOwningPlayer(u))
local unit w = null
local real x = 0
local real y = 0
local rect r = null
local integer s = 0
if spell >= 'A0AU' and spell <'A0B4' then
if GetPlayerState(Player(id), PLAYER_STATE_RESOURCE_LUMBER) < 1 then //wall casting
call CS_Error(Player(id), "|cffffff00Not enough lumber.|r")
call IssueImmediateOrder( u, "stop" )
else
call SetPlayerState(Player(id), PLAYER_STATE_RESOURCE_LUMBER, GetPlayerState(Player(id), PLAYER_STATE_RESOURCE_LUMBER ) - 2)
endif
elseif spell == 'A0BL' then // harvest order
set w = LoadUnitHandle(HTcache,GetHandleId(u),33)
set x = GetUnitX(u)
set y = GetUnitY(u)
set r = Rect(x - 1500, y - 1500, x + 1500, y + 1500)
set bj_destRandomConsidered = 0
set bj_destRandomCurrentPick = null
call EnumDestructablesInRect(r, null, function pickTree)
call IssueTargetDestructableOrder( w, "harvest", bj_destRandomCurrentPick)
call RemoveRect(r)
set r = null
set w = null
elseif GetUnitPointValue(u) == 999 then //seetlement casting
set s = LoadInteger(HTcache,GetHandleId(u),2)
if s>1 then
call UnitRemoveAbility(u,spell)
else
call SaveInteger (HTcache,GetHandleId(u),2,s+1)
endif
endif
set u = null
return false
endfunction
//===========================================================================
function InitTrig_castingwalls takes nothing returns nothing
set gg_trg_castingwalls = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_castingwalls, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_castingwalls, Condition( function Trig_castingwalls_Actions ) )
endfunction
function KillerText takes unit u, string txt , integer r , integer g, integer b , integer a returns nothing
local real x
local real y
local real diff
local texttag tt
local real fsize = 9
local integer speed = 6
local integer dir = 90
if IsUnitVisible(u, GetLocalPlayer()) then
set x = GetUnitX( u )
set y = GetUnitY( u )
set diff = StringLength( txt ) * fsize / 2.00 + 1
set tt = CreateTextTag( )
call SetTextTagText( tt, txt, fsize * 0.023 /10)
call SetTextTagPosUnit( tt, u, 5 )
call SetTextTagColor( tt, (r*255)/100, (g*255)/100, (b*255)/100, (a*255)/100 )
call SetTextTagPermanent( tt, false )
call SetTextTagLifespan( tt, 2.3 )
call SetTextTagFadepoint( tt, 0 )
set x = speed * 0.71 / 128
call SetTextTagVelocity( tt, x * Cos( dir * bj_DEGTORAD ), x * Sin( dir * bj_DEGTORAD ) )
set tt = null
endif
// call CreateTextTagUnitBJ(txt, u, 5, 9, r, g, b, a )
// call SetTextTagPermanent( GetLastCreatedTextTag(), false )
// call SetTextTagLifespan( GetLastCreatedTextTag(), 2.3 )
// call SetTextTagFadepoint( GetLastCreatedTextTag(), 0.00 )
// call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
endfunction
function UPC takes nothing returns boolean
return IsUnitType(GetKillingUnitBJ(), UNIT_TYPE_HERO) == false
endfunction
function UPA takes nothing returns nothing
local unit k = GetKillingUnitBJ()
local unit d = GetDyingUnit()
local boolean hav1 = false
local boolean hav2 = false
local boolean hav3 = false
local boolean hav4 = false
local boolean isowner = (GetOwningPlayer(k) == GetOwningPlayer(d))
local boolean isally = (IsPlayerAlly(GetOwningPlayer(k), GetOwningPlayer(d)) == true)
local boolean isbuilding = (IsUnitType(k, UNIT_TYPE_STRUCTURE) == true)
local boolean isinnate = false
local texttag t = null
local integer tkills = 0
local integer unitdata = 0
local integer killer_temp = 0
local integer looping = 1
local integer dtrange = 0
local integer loadtype = 0
local integer loadint = 0
local integer rank = 0
local real x = 0
local real y = 0
local string loadstr = null
local integer innateid = 0
local integer floop = 0
local unit upgradedUnit = null
if (isbuilding) then
if ( GetUnitDefaultAcquireRange(d) == 33.00 or GetUnitTypeId(d) == 'o00R' or GetUnitTypeId(d) == 'h03A') then
call KillUnit( LoadUnitHandle(HTcache,GetHandleId(d),33))
endif //settlements
set k = null
set d = null
return
endif
if ( isowner or isally ) then
set k = null
set d = null
return
endif
set killer_temp = ( GetUnitUserData(k) + GetUnitFoodUsed(d))
call SetUnitUserData( k, killer_temp )
set tkills = GetUnitUserData(k)
if ( tkills >= 3 ) and ( tkills < 12 ) then
call UnitAddAbilityBJ( 'S000', k )
elseif ( tkills >= 12 ) and ( tkills < 36 ) then
call SetUnitAbilityLevelSwapped( 'S000', k, 2 )
elseif ( tkills >= 36 ) and ( tkills < 80 ) then
call SetUnitAbilityLevelSwapped( 'S000',k, 3 )
elseif ( tkills >= 80 ) then
call SetUnitAbilityLevelSwapped( 'S000', k, 4 )
endif
set dtrange = LoadIntegerBJ(1, StringHashBJ(UnitId2StringBJ(GetUnitTypeId(k))), udg_Load_U)
set loadstr = LoadStringBJ(1, dtrange, udg_Save_U)
if (dtrange > 0 and dtrange < 31) then
set loadtype = 1
set loadint = dtrange
elseif (dtrange > 30 and dtrange < 61) then
set loadtype = 2
set loadint = ( dtrange - 30 )
elseif (dtrange > 60 and dtrange < 91) then
set loadtype = 3
set loadint = ( dtrange - 60 )
elseif (dtrange > 90 and dtrange < 121) then
set loadtype = 4
set loadint = ( dtrange - 90 )
endif
if ( loadint < 11 ) then
set rank = 3
elseif ( loadint > 10 and loadint < 21) then
set rank = 1
elseif ( loadint > 20 and loadint < 31) then
set rank = 2
endif
set unitdata = LoadIntegerBJ(rank, loadtype, udg_ModeC)
if ( unitdata == 0 ) then
set k = null
set d = null
return
endif
if ( tkills >= unitdata ) then
if ( rank == 3 ) then
set hav1 = ( loadtype == 1) and ( udg_Have_meleeW[GetConvertedPlayerId(GetOwningPlayer(k))] == true )
set hav2 = ( loadtype == 2) and ( udg_Have_rangeW[GetConvertedPlayerId(GetOwningPlayer(k))] == true )
set hav3 = ( loadtype == 3) and ( udg_Have_mageW[GetConvertedPlayerId(GetOwningPlayer(k))] == true )
set hav4 = ( loadtype == 4) and ( udg_Have_tankW[GetConvertedPlayerId(GetOwningPlayer(k))] == true )
if (hav1 == true) or (hav2 == true) or (hav3 == true) or (hav4 == true) then
set k = null
set d = null
return
else
set floop = 1
loop
exitwhen floop > 6
call UnitRemoveItemFromSlotSwapped( floop, k )
set floop = floop + 1
endloop
if (loadtype == 1) then
set udg_Have_meleeW[GetConvertedPlayerId(GetOwningPlayer(k))] = true
elseif (loadtype == 2) then
set udg_Have_rangeW[GetConvertedPlayerId(GetOwningPlayer(k))] = true
elseif (loadtype == 3) then
set udg_Have_mageW[GetConvertedPlayerId(GetOwningPlayer(k))] = true
elseif (loadtype == 4) then
set udg_Have_tankW[GetConvertedPlayerId(GetOwningPlayer(k))] = true
endif
endif
endif
call KillerText(k,I2S(tkills)+"/"+I2S(unitdata),100, 100, 100, 25)
set x = GetUnitX(k)
set y = GetUnitY(k)
if ( IsUnitInGroup(k, udg_Grupo_rescate) == true ) then
call GroupRemoveUnit(udg_Grupo_rescate,k)
endif
set innateid = LoadInteger(udg_Innate_Ability,GetHandleId(k),1)
if innateid>0 then
set isinnate = true
if ( IsUnitInGroup(k, udg_Innate_group[innateid]) == true ) then
call GroupRemoveUnit(udg_Innate_group[innateid],k)
call FlushChildHashtable(udg_Innate_Ability,GetHandleId(k))
endif
endif
call RemoveUnit( k )
set upgradedUnit = CreateUnit(GetOwningPlayer(k),String2UnitIdBJ(loadstr),x,y,bj_UNIT_FACING)
if ( isinnate == true ) then
call UnitAddAbility(upgradedUnit,udg_Innate[innateid])
call UnitAddAbility(upgradedUnit,udg_fake_innate[innateid])
call GroupAddUnit( udg_Innate_group[innateid],upgradedUnit)
call SaveInteger( udg_Innate_Ability,GetHandleId(upgradedUnit),1,innateid)
endif
call DestroyEffect(AddSpecialEffectTarget(udg_UP_effect[udg_Race[GetConvertedPlayerId(GetOwningPlayer(k))]],upgradedUnit,"origin"))
if ( GetPlayerController(GetOwningPlayer(upgradedUnit)) == MAP_CONTROL_COMPUTER ) then
call IssuePointOrderLocBJ( upgradedUnit, "attack", GetPlayerStartLocationLoc(GetOwningPlayer(upgradedUnit)) )
endif
else
call KillerText(k,I2S(tkills)+"/"+I2S(unitdata),100, 50, 50, 35)
set k = null
set d = null
set loadstr = null
set upgradedUnit = null
endif
endfunction
//===========================================================================
function InitTrig_UP takes nothing returns nothing
local integer index
set index = 0
set gg_trg_UP = CreateTrigger( )
// call DisableTrigger( gg_trg_UP )
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_UP, Player(index), EVENT_PLAYER_UNIT_DEATH, null)
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
// call TriggerRegisterAnyUnitEventBJ( gg_trg_UP, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_UP, Condition( function UPC ) )
call TriggerAddAction( gg_trg_UP, function UPA )
endfunction
function Trig_UDC_Conditions takes nothing returns boolean
return ( GetPlayerController(GetOwningPlayer(GetKillingUnit())) == MAP_CONTROL_USER )
endfunction
function PileofGold takes nothing returns nothing
local timer t = GetExpiredTimer()
local real x = LoadReal(hts,GetHandleId(t),1)
local real y = LoadReal(hts,GetHandleId(t),2)
local integer i = 1
local integer lop = GetRandomInt(2,6)
loop
exitwhen i>lop
call CreateItem(udg_itmpool[91],GetRandomReal(x-70,x+70),GetRandomReal(y-70,y+70))
set i = i+1
endloop
call PauseTimer(t)
call FlushChildHashtable(hts,GetHandleId(t))
call ReleaseTimer(t)
set t = null
endfunction
function DropGoldUnit takes unit u returns nothing
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local timer t = NewTimer()
call DestroyEffect(AddSpecialEffect(goldpile,x,y))
call SaveReal(hts,GetHandleId(t),1,x)
call SaveReal(hts,GetHandleId(t),2,y)
call TimerStart(t,1.8,false,function PileofGold)
set t = null
endfunction
function Trig_UDC_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer id = GetPlayerId(GetOwningPlayer(GetKillingUnit()))
local integer ids
local integer questid = 0
local boolean ok = false
local integer i = 0
local integer fid = id+1
local integer assa
local integer own
local integer act
local item it = null
local unit md = null
local real x
local real y
local integer ulvl = GetUnitLevel(u)
local integer rand = R2I(12 + logg(1.618,I2R(1+Fortune[id])))
local integer bountyL = R2I(ulvl/4)
local integer bountyH = R2I(ulvl/2)+bountyL
local integer bounty
local boolean ambusher = IsUnitInGroup(u,Ambushgroup) == true
local unit rat = null
local timer snt
local real textHeight = 11 * 0.023 / 10
call GroupRemoveUnit(udg_HasDMGevent,u)
call GroupRemoveUnit(udg_Spelledg, u)
call GroupRemoveUnit(clownvictim,u)
if IsUnitInGroup(u,aggresiveUnits)== true then
call GroupRemoveUnit(aggresiveUnits,u)
endif
if IsUnitInGroup(u,sneakers)==true then
set snt = LoadTimerHandle(AiHash,GetHandleId(u),GetHandleId(sneakers))
set ids = LoadInteger(AiHash,GetHandleId(snt),2)
set sneakerscnt[ids] = sneakerscnt[ids] - 1
call PauseTimer(snt)
call ReleaseTimer(snt)
set snt = null
call GroupRemoveUnit(sneakers,u)
endif
if IsUnitInGroup(u,stingers)==true then
set snt = LoadTimerHandle(AiHash,GetHandleId(u),GetHandleId(stingers))
call PauseTimer(snt)
call ReleaseTimer(snt)
set snt = null
call GroupRemoveUnit(stingers,u)
endif
call FlushChildHashtable(AiHash,GetHandleId(u))
if IsUnitInGroup(u,crazybeast) == true then
call GroupRemoveUnit(crazybeast,u)
endif
if IsUnitInGroup(u,sneakersfnd)==true then
call GroupRemoveUnit(sneakersfnd,u)
endif
if IsUnitInGroup(u,giantbeast) == true then
call GroupRemoveUnit(giantbeast,u)
endif
//====BORRARRRRRRRRRRRRRRRRRRRRRRRRRRRR======================
// call AddHeroXP(udg_PHero[id],GetUnitLevel(u)*GetHeroLevel(udg_PHero[id])*100,false)
//====BORRARRRRRRRRRRRRRRRRRRRRRRRRRRRR======================
if GetUnitUserData(u)==3713 then
call SaveInteger(questtm,GetHandleId(u),StringHash("killer"),id+10)
endif
if (GetRandomInt(0,99)<rand or ambusher==true) then
set bounty = (1+ GetRandomInt(bountyL,bountyH)) * globalWealth
if ambusher==true then
call DropGoldUnit(u)
endif
// call CreateTextTagUnitBJ("+" +I2S(bounty) , u, 0, 11.00, 100, 100, 0, 0.00 )
set bj_lastCreatedTextTag = CreateTextTag()
call SetTextTagText(bj_lastCreatedTextTag,"+" +I2S(bounty), textHeight)
call SetTextTagPos(bj_lastCreatedTextTag, GetUnitX(u), GetUnitY(u), 0)
call SetTextTagColor(bj_lastCreatedTextTag, 255, 255, 0, 255)
call SetTextTagPermanent(bj_lastCreatedTextTag, false )
call SetTextTagLifespan(bj_lastCreatedTextTag, 2 )
call SetTextTagFadepoint(bj_lastCreatedTextTag, 0.00 )
call SetTextTagVelocityBJ(bj_lastCreatedTextTag, 50, 90 )
// call SetTextTagPermanentBJ( bj_lastCreatedTextTag, false )
// call SetTextTagLifespanBJ( bj_lastCreatedTextTag, 2.00 )
// call SetTextTagFadepointBJ( bj_lastCreatedTextTag, 1.00 )
// call SetTextTagVelocityBJ( bj_lastCreatedTextTag, 50, 90 )
call AdjustPlayerStateBJ( bounty, Player(id), PLAYER_STATE_RESOURCE_GOLD )
endif
if GetUnitUserData(GetKillingUnit()) <6481 then
call SetUnitUserData( GetKillingUnit(), ( GetUnitUserData(GetKillingUnit()) + 1 ) )//cambiar 5 x 1
if IsUnitIdType(GetUnitTypeId(GetKillingUnit()), UNIT_TYPE_ANCIENT) == true then
call SetUnitUserData( udg_PHero[id], ( GetUnitUserData(udg_PHero[id]) + 1 ) )
endif
if ksquest[id]==0 then
if GetUnitUserData(udg_PHero[id])<SetNext(id)*300 then
set ksquest[id] = SetupQuest(id,null,"BUILDING A HERO","Get |cffffcc00"+I2S(SetNext(id)*300)+"|r kill points to be allowed for next promotion","0","/"+I2S(SetNext(id)*300),0,qty[1])
endif
else
call UpdatePersQuestND(id,ksquest[id],GetUnitUserData(udg_PHero[id]),"-",I2S(GetUnitUserData(udg_PHero[id])),"-")
if Qboard[id].visible[Player(id)] == true then
call RequestLog(id)
endif
endif
endif
//=============000centaurs==============================
if (GetUnitPointValue(u)==119 and killingcentaurs[id]==true) then
set questid = LoadInteger(udg_cache,GetHandleId(ankit),GetHandleId(udg_PHero[id]))
set Qdata[questid] = Qdata[questid] + 1
if Qdata[questid]>= Qrequ[questid] then
call StartSound(bj_questUpdatedSound)
call UpdatePersQuest(id,questid,Qdata[questid],"Exploration is complete, return to Ankit for reports and instructions ",I2S(Qrequ[questid]),"-")
set centaursready[id] = true
else
call UpdatePersQuest(id,questid,Qdata[questid],"-",I2S(Qdata[questid]),"-")
endif
endif
//===================cellars========================
if IsUnitInGroup(u,ratgroup)==true then
call GroupRemoveUnit(ratgroup,u)
set ratscount = ratscount-1
set deadrats = deadrats + 1
set rat = FirstOfGroup(ratgroup)
if rat==null then
call DisableTrigger(gg_trg_enablecellars)
call DestroyGroup(ratgroup)
set ratgroup = null
call StartSound(bj_questUpdatedSound)
call EnableTrigger(gg_trg_endrats)
set i=0
loop
exitwhen i>8
if AlreadyIncellar[i]==true then
call DisplayTimedTextToPlayer(Player(i),0,0,3,"All rats have been dispatched, Return to Merchant with news")
endif
set AlreadyIncellar[i] = false
set i = i+1
endloop
set HeroIncellar = 0
else
if (GetLocalPlayer() == Player(id)) then
call ClearTextMessages()
endif
call DisplayTimedTextToPlayer(Player(id),0,0,3,"Rats left: "+I2S(ratscount))
endif
set rat = null
set i = 0
endif
if (GetUnitTypeId(u)=='n01Y' and killingogres[id]==true) then
set questid = LoadInteger(udg_cache,GetHandleId(valdkeeper),GetHandleId(udg_PHero[id]))
set Qdata[questid] = Qdata[questid] + 1
if Qdata[questid]>= Qrequ[questid] then
call StartSound(bj_questUpdatedSound)
call UpdatePersQuest(id,questid,Qdata[questid],"Work is done but ogres still appears into the fields, come back to Valdivia and report it to the Keeper ",I2S(Qrequ[questid]),"-")
set ogreready[id] = true
else
call UpdatePersQuest(id,questid,Qdata[questid],"-",I2S(Qdata[questid]),"-")
endif
endif
if GetUnitTypeId(u)=='h02X' then//renegade tower - ogre problem
set questid = GetUnitUserData(u)
set Qdata[questid] = Qdata[questid] + 1
call UpdatePersQuest(QPid[questid],questid,Qdata[questid],"The tower was destroyed, return to the keeper for instructions ",I2S(Qrequ[questid]),"-")
set wtowerdtryd[QPid[questid]] = true
if QPid[questid] == id then
set ownertower[QPid[questid]] = true
endif
endif
if GetUnitTypeId(u)=='n06U' then//renegade tower - ogre problem
// set questid = GetUnitUserData(u)
set questid = LoadInteger(questtm,GetHandleId(u),2)
set Qdata[questid] = Qdata[questid] + 1
call UpdatePersQuest(QPid[questid],questid,Qdata[questid],"The Mini demon has been destroyed, return to the keeper with the supplies ",I2S(Qrequ[questid]),"-")
set minidemonk[QPid[questid]] = true
set it = CreateItem('I05E',GetUnitX(u),GetUnitY(u))
call ItemName(GetItemName(it),GetUnitX(u),GetUnitY(u))
call SaveItemHandle(questtm,GetHandleId(Player(QPid[questid])),28,it)
endif
if GetUnitTypeId(u) == 'h031' then
set questid = LoadInteger(questtm,GetHandleId(u),2)
call DestroyEffect(AddSpecialEffect(conversion,GetUnitX(u),GetUnitY(u)))
//call TriggerSleepAction(0.6)
set md = CreateUnit(Player(PLAYER_DARK_LORD),'n06U',GetUnitX(u),GetUnitY(u),270)
// call SetUnitUserData(md,questid)
call SaveInteger(questtm,GetHandleId(md),2,questid)
call TriggerSleepAction(1.6)
call StartSound(bj_questUpdatedSound)
call UpdatePersQuest(QPid[questid],questid,Qdata[questid],"Destroy that demon!!! [",I2S(Qrequ[questid]),"-")
endif
if ghostavenger[id]>0 then
set own = GetPlayerId(GetOwningPlayer(u))
set assa = LoadInteger(questtm,StringHash(GetUnitName(u)),own)
loop
exitwhen i>9
set act = LoadInteger(questtm,GetHandleId(Player(id)),i)
if LoadInteger(questtm,StringHash(GetUnitName(u)),act) == fid then
set Qdata[act] = Qdata[act] + 1
if Qdata[act]>= Qrequ[act] then
call UpdatePersQuest(id,act,Qdata[act],"Job is ready, return to the ghost location to claim rewards ",I2S(Qrequ[act]),"-")
call UnitAddAbility(QUid[act],'A09S')
set x = GetUnitX(QUid[act])
set y = GetUnitY(QUid[act])
if (GetLocalPlayer() == Player(id)) then
call PingMinimap(x,y, 7)
endif
else
call UpdatePersQuest(id,act,Qdata[act],"-",I2S(Qdata[act]),"-")
endif
endif
set i = i+1
endloop
endif
if monster_kill_display[id]==true then
set monster_count[id] = monster_count[id] + 1
if (GetLocalPlayer() == Player(id)) then
call ClearTextMessages()
endif
set questid = LoadInteger(udg_cache,GetHandleId(tutor),GetHandleId(udg_PHero[id]))
call UpdatePersQuestND(id,questid,monster_count[id],"-",I2S(monster_count[id]),"-")
call DisplayTimedTextToPlayer(Player(id),0,0,3,"|cffffcc00"+monster_to_kill[id]+" killed:|r "+I2S(monster_count[id])+"/"+I2S(monster_total[id]))
// call UpdateQuestLog(tutor,id,"|cffffcc00"+monster_to_kill[id]+" killed:|r "+I2S(monster_count[id])+"/"+I2S(monster_total[id]))
endif
if IsUnitInGroup(u,hasprotector) then
call GroupRemoveUnit(hasprotector,u)
endif
if (orckiller[id] == true and IsUnitRace(u,RACE_ORC) == true and TimerGetRemaining(TOrchunt[id])>2 ) then
set orcskilled[id] = orcskilled[id]+ R2I( 53*I2R(GetUnitLevel(u))/10 )
if (GetLocalPlayer() == Player(id)) then
call ClearTextMessages()
endif
call DisplayTimedTextToPlayer(Player(id),0,0,3,"|cffffcc00Orc sesion points:|r "+I2S(orcskilled[id]))
endif
if IsUnitInGroup(u,cathedralunits)==true and on_event == true then
if IsPlayerInForce(Player(id),teamA) and Valive == false then
set HPVTleft = HPVTleft + (ulvl/16)
call LeaderboardSetPlayerItemValueBJ( Player(9), clashlb, HPVTleft )
if HPVTleft>tlifereq then
set Valive = true
call LeaderboardSetPlayerItemLabelBJ(Player(9),clashlb, "V. Titan Alive")
call PauseUnit(Vtitan,false)
call SetUnitAnimation( Vtitan, "morph" )
call TriggerSleepAction(3)
call SetUnitAnimation( Vtitan, "stand" )
endif
elseif IsPlayerInForce(Player(id),teamB)== true and Halive == false then
set HPHTleft = HPHTleft + (ulvl/16)
call LeaderboardSetPlayerItemValueBJ( Player(8), clashlb, HPHTleft )
if HPHTleft>tlifereq then
set Halive = true
call LeaderboardSetPlayerItemLabelBJ(Player(8),clashlb, "H. Titan Alive")
call PauseUnit(Htitan,false)
call SetUnitAnimation( Htitan, "morph" )
call TriggerSleepAction(3)
call SetUnitAnimation( Htitan, "stand" )
endif
endif
call GroupRemoveUnit(cathedralunits,u)
endif
set it = null
set u = null
set md = null
endfunction
//===========================================================================
function InitTrig_UDC takes nothing returns nothing
local integer index = 0
set gg_trg_UDC = CreateTrigger( )
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_UDC, Player(index),EVENT_PLAYER_UNIT_DEATH, null)
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
call TriggerAddCondition( gg_trg_UDC, Condition( function Trig_UDC_Conditions ) )
call TriggerAddAction( gg_trg_UDC, function Trig_UDC_Actions )
endfunction
function Trig_countcities_Actions takes nothing returns nothing
local unit c = GetConstructedStructure()
local unit w = null
local integer id = GetPlayerId(GetOwningPlayer(c))
local real x = GetUnitX(c)
local real y = GetUnitY(c)
local real l = 900
local rect r = null
local integer o = 0
if (GetUnitDefaultAcquireRange(c) < 3.10) then
set playercities[id] = playercities[id] + 1
elseif ( GetUnitDefaultAcquireRange(c) == 33.00 or GetUnitTypeId(c) == 'o00R' or GetUnitTypeId(c) == 'h03A') then
set w = CreateUnit(Player(id),udg_harvest_unit[udg_Race[id]],x,y, bj_UNIT_FACING) //pickupunit
call SaveUnitHandle(HTcache,GetHandleId(c),33,w)
// If another elevator is overlapping this one, ignore the wall.
set r = Rect(x - l, y - l, x + l, y + l)
set bj_destRandomConsidered = 0
set bj_destRandomCurrentPick = null
call EnumDestructablesInRect(r, null, function pickTree)
call IssueTargetDestructableOrder( w, "harvest", bj_destRandomCurrentPick)
call RemoveRect(r)
set r = null
set w = null
elseif GetUnitPointValue(c) == 999 then
call SaveInteger(HTcache, GetHandleId(c),2,o)
endif
set c = null
endfunction
//===========================================================================
function InitTrig_countcities takes nothing returns nothing
local integer index = 0
set gg_trg_countcities = CreateTrigger( )
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_countcities, Player(index), EVENT_PLAYER_UNIT_CONSTRUCT_FINISH, null)
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
// call TriggerAddCondition( gg_trg_countcities, Condition( function Trig_countcities_Conditions ) )
call TriggerAddAction( gg_trg_countcities, function Trig_countcities_Actions )
endfunction
function Trig_owningbuild_Conditions takes nothing returns boolean
return GetUnitDefaultAcquireRange(GetDyingUnit()) < 3.10
endfunction
function Trig_owningbuild_Actions takes nothing returns nothing
local unit d = GetDyingUnit()
local unit k = GetKillingUnit()
local real x = GetUnitX(d)
local real y = GetUnitY(d)
local integer player_id = GetPlayerId(GetOwningPlayer(k))
local integer player_dh = GetPlayerId(GetOwningPlayer(d))
local integer bld = 0
local unit own = null
local integer bid
local boolean flag = false
local texttag warn = null
set playercities[player_dh] = playercities[player_dh] - 1
call GroupRemoveUnit(Domain[player_dh],d)
if (Player(player_dh)==Player(PLAYER_NEUTRAL_AGGRESSIVE) and GetUnitDefaultAcquireRange(d) > 1.00) then
set warn = LoadTextTagHandle(HTcache,GetHandleId(d),75)
call SetTextTagPermanent( warn, false )
call SetTextTagLifespan( warn, 2.3 )
call SetTextTagFadepoint( warn, 0 )
set warn = null
endif
if ( GetPlayerSlotState(Player(player_id)) == PLAYER_SLOT_STATE_LEFT ) then
set d = null
set k = null
return
endif
call AdjustPlayerStateBJ( ( GetPlayerState(GetOwningPlayer(d), PLAYER_STATE_RESOURCE_GOLD) / 10 ), GetOwningPlayer(k), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( ( GetPlayerState(GetOwningPlayer(d), PLAYER_STATE_RESOURCE_GOLD) / -20 ), GetOwningPlayer(d), PLAYER_STATE_RESOURCE_GOLD )
if ( GetPlayerController(GetOwningPlayer(d)) == MAP_CONTROL_COMPUTER) then
loop
exitwhen bld > 10
if LoadInteger(HTcache,GetHandleId(d),100) == bld then
set flag = true
endif
if flag==true and conquered[player_dh][conqueredIndex[bld + 1]] != null then
set conquered[player_dh][conqueredIndex[bld]] = conquered[player_dh][conqueredIndex[bld + 1]]
call SaveInteger(HTcache,GetHandleId(conquered[player_dh][conqueredIndex[bld]]),100,bld)
endif
set bld = bld+1
//call TriggerSleepAction(0.02)
endloop
endif
if ( GetPlayerController(Player(player_id)) == MAP_CONTROL_COMPUTER) then
if ( GetUnitDefaultAcquireRange(d) == 1.00 ) then
set conquered[player_id][conqueredIndex[player_id]] = CreateUnit(Player(player_id),udg_Main_build[udg_Race[player_id]],x,y,bj_UNIT_FACING)
elseif ( GetUnitDefaultAcquireRange(d) == 2.00 ) then
set conquered[player_id][conqueredIndex[player_id]] = CreateUnit(Player(player_id),udg_Fupgrade_build[udg_Race[player_id]],x,y,bj_UNIT_FACING)
elseif ( GetUnitDefaultAcquireRange(d) == 3.00 ) then
set conquered[player_id][conqueredIndex[player_id]] = CreateUnit(Player(player_id),udg_Supgrade_build[udg_Race[player_id]],x,y,bj_UNIT_FACING)
endif
if (conqueredIndex[player_id] <11) then
call SaveInteger(HTcache,GetHandleId(conquered[player_id][conqueredIndex[player_id]]),100,conqueredIndex[player_id])
set conqueredIndex[player_id] = conqueredIndex[player_id] + 1
endif
set playercities[player_id] = playercities[player_id] + 1
set d = null
set k = null
return
endif
if ( GetUnitDefaultAcquireRange(d) == 1.00 ) then
set own = CreateUnit(Player(player_id),udg_owned_Main[udg_Race[player_id]],x,y,bj_UNIT_FACING)
elseif ( GetUnitDefaultAcquireRange(d) == 2.00 ) then
set own = CreateUnit(Player(player_id),udg_owned_second[udg_Race[player_id]],x,y,bj_UNIT_FACING)
elseif ( GetUnitDefaultAcquireRange(d) == 3.00 ) then
set own = CreateUnit(Player(player_id),udg_owned_third[udg_Race[player_id]],x,y,bj_UNIT_FACING)
endif
call SetUnitUserData(own,udg_Race[player_id])
call UnitApplyTimedLife(own,'BTLF',45.00)
call SavePlayerHandle(HTcache,GetHandleId(own),1,GetOwningPlayer(d))
set own = null
set d = null
set k = null
endfunction
//===========================================================================
function InitTrig_owningbuild takes nothing returns nothing
set gg_trg_owningbuild = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_owningbuild, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_owningbuild, Condition( function Trig_owningbuild_Conditions ) )
call TriggerAddAction( gg_trg_owningbuild, function Trig_owningbuild_Actions )
endfunction
function Trig_building_Conditions takes nothing returns boolean
local unit u = GetSpellAbilityUnit()
local integer cast = GetSpellAbilityId()
local real range = GetUnitDefaultAcquireRange(u)
local boolean owned = range == 10.00 or range == 11.00 or range == 12.00
local boolean spell = not(cast == 'A065') and not(cast == 'A00W') and not(cast == 'A00X') and not(cast == 'A00Z')
set u = null
return owned and spell
endfunction
function Trig_building_Actions takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
call ShowUnit(u,false)
call TriggerSleepAction(2)
call RemoveUnit(u)
set u = null
endfunction
//===========================================================================
function InitTrig_building takes nothing returns nothing
set gg_trg_building = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_building, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_building, Condition( function Trig_building_Conditions ) )
call TriggerAddAction( gg_trg_building, function Trig_building_Actions )
endfunction
function Trig_Pillage_A_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A00W' )
endfunction
function Trig_Pillage_A_Actions takes nothing returns nothing
local unit p = GetSpellAbilityUnit()
local integer rce = GetUnitUserData(p)
local real x = GetUnitX(p)
local real y = GetUnitY(p)
local player pillager = GetOwningPlayer(p)
local integer id = GetPlayerId(pillager)
local player lastowner = LoadPlayerHandle(HTcache,GetHandleId(p),1)
local unit free = null
local integer gold = 0
local integer goldm = 0
local integer wood = 0
local integer woodm = 0
call PillageText(p)
call TriggerSleepAction(3)
call FlushChildHashtable(HTcache,GetHandleId(p))
call RemoveUnit(p)
set free = CreateUnit(lastowner,udg_Main_build[udg_Race[GetPlayerId(lastowner)]],x,y,bj_UNIT_FACING)
call SetUnitUserData(free,rce)
set gold = GetPlayerState(lastowner, PLAYER_STATE_RESOURCE_GOLD) / 25
set wood = GetPlayerState(lastowner, PLAYER_STATE_RESOURCE_LUMBER) / 10
set goldm = gold * -1
set woodm = wood * -1
call DisplayTimedTextToPlayer(pillager,.1,.1,8,"You get |cffffcc00" + I2S(gold)+"|r gold & |cffeeff00"+I2S(wood)+"|r lumber from |cffffcc00"+GetPlayerName(lastowner)+"|r's reserves!")
call DisplayTimedTextToPlayer(lastowner,.1,.1,8,"|cffffcc00"+GetPlayerName(pillager)+"|r has stolen |cffffcc00" + I2S(gold)+"|r gold & |cffeeff00"+I2S(wood)+"|r lumber from your resources stock!")
call AdjustPlayerStateBJ( gold, pillager, PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( goldm, lastowner, PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( wood, pillager, PLAYER_STATE_RESOURCE_LUMBER )
call AdjustPlayerStateBJ( woodm, lastowner, PLAYER_STATE_RESOURCE_LUMBER )
call TriggerSleepAction(15)
call GroupAddUnit(neutralbuildattack,free)
set lastowner = null
set pillager = null
set free = null
set p = null
endfunction
//===========================================================================
function InitTrig_Pillage_A takes nothing returns nothing
set gg_trg_Pillage_A = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Pillage_A, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Pillage_A, Condition( function Trig_Pillage_A_Conditions ) )
call TriggerAddAction( gg_trg_Pillage_A, function Trig_Pillage_A_Actions )
endfunction
function Trig_Pillage_B_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A00X' )
endfunction
function Trig_Pillage_B_Actions takes nothing returns nothing
local unit p = GetSpellAbilityUnit()
local integer rce = GetUnitUserData(p)
local real x = GetUnitX(p)
local real y = GetUnitY(p)
local integer id = GetPlayerId(GetOwningPlayer(p))
local player lastowner = LoadPlayerHandle(HTcache,GetHandleId(p),1)
local unit free = null
call PillageText(p)
call TriggerSleepAction(3)
call FlushChildHashtable(HTcache,GetHandleId(p))
call RemoveUnit(p)
set free = CreateUnit(lastowner,udg_Fupgrade_build[udg_Race[id]],x,y,bj_UNIT_FACING)
call SetUnitUserData(free,rce)
call AdjustPlayerStateBJ( (GetPlayerState(lastowner, PLAYER_STATE_RESOURCE_GOLD) / 15), GetOwningPlayer(p), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( (GetPlayerState(lastowner, PLAYER_STATE_RESOURCE_GOLD) / -15), lastowner, PLAYER_STATE_RESOURCE_GOLD )
call TriggerSleepAction(15)
call GroupAddUnit(neutralbuildattack,free)
set lastowner = null
set free = null
set p = null
endfunction
//===========================================================================
function InitTrig_Pillage_B takes nothing returns nothing
set gg_trg_Pillage_B = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Pillage_B, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Pillage_B, Condition( function Trig_Pillage_B_Conditions ) )
call TriggerAddAction( gg_trg_Pillage_B, function Trig_Pillage_B_Actions )
endfunction
function Trig_Pillage_C_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == 'A00Z' )
endfunction
function Trig_Pillage_C_Actions takes nothing returns nothing
local unit p = GetSpellAbilityUnit()
local integer rce = GetUnitUserData(p)
local real x = GetUnitX(p)
local real y = GetUnitY(p)
local integer id = GetPlayerId(GetOwningPlayer(p))
local player lastowner = LoadPlayerHandle(HTcache,GetHandleId(p),1)
local unit free = null
call PillageText(p)
call TriggerSleepAction(3)
call FlushChildHashtable(HTcache,GetHandleId(p))
call RemoveUnit(p)
set free = CreateUnit(lastowner,udg_Supgrade_build[udg_Race[id]],x,y,bj_UNIT_FACING)
call SetUnitUserData(free,rce)
call AdjustPlayerStateBJ( (GetPlayerState(lastowner, PLAYER_STATE_RESOURCE_GOLD) / 5), GetOwningPlayer(p), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( (GetPlayerState(lastowner, PLAYER_STATE_RESOURCE_GOLD) / -5), lastowner, PLAYER_STATE_RESOURCE_GOLD )
call TriggerSleepAction(15)
call GroupAddUnit(neutralbuildattack,free)
set lastowner = null
set free = null
set p = null
endfunction
//===========================================================================
function InitTrig_Pillage_C takes nothing returns nothing
set gg_trg_Pillage_C = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Pillage_C, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Pillage_C, Condition( function Trig_Pillage_C_Conditions ) )
call TriggerAddAction( gg_trg_Pillage_C, function Trig_Pillage_C_Actions )
endfunction
function Trig_AutorebuildA_Conditions takes nothing returns boolean
return (( GetUnitDefaultAcquireRange(GetDyingUnit()) == 10 ) and ( GetUnitTypeId(GetKillingUnitBJ()) != 'u003' ))
endfunction
function Trig_AutorebuildA_Actions takes nothing returns nothing
local location d = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Main_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), d, bj_UNIT_FACING )
call RemoveLocation(d)
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), HTcache )
endfunction
//===========================================================================
function InitTrig_AutorebuildA takes nothing returns nothing
set gg_trg_AutorebuildA = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AutorebuildA, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_AutorebuildA, Condition( function Trig_AutorebuildA_Conditions ) )
call TriggerAddAction( gg_trg_AutorebuildA, function Trig_AutorebuildA_Actions )
endfunction
function Trig_AutorebuildB_Conditions takes nothing returns boolean
return (( GetUnitDefaultAcquireRange(GetDyingUnit()) == 11.00 ) and ( GetUnitTypeId(GetKillingUnitBJ()) != 'u003' ))
endfunction
function Trig_AutorebuildB_Actions takes nothing returns nothing
local location p = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Fupgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), p, bj_UNIT_FACING )
call RemoveLocation(p)
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), HTcache )
endfunction
//===========================================================================
function InitTrig_AutorebuildB takes nothing returns nothing
set gg_trg_AutorebuildB = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AutorebuildB, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_AutorebuildB, Condition( function Trig_AutorebuildB_Conditions ) )
call TriggerAddAction( gg_trg_AutorebuildB, function Trig_AutorebuildB_Actions )
endfunction
function Trig_AutorebuildC_Conditions takes nothing returns boolean
return (( GetUnitDefaultAcquireRange(GetDyingUnit()) == 12.00 ) and ( GetUnitTypeId(GetKillingUnitBJ()) != 'u003' ))
endfunction
function Trig_AutorebuildC_Actions takes nothing returns nothing
local location q = GetUnitLoc(GetDyingUnit())
call CreateNUnitsAtLoc( 1, udg_Supgrade_build[udg_Race[GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))]], Player(PLAYER_NEUTRAL_AGGRESSIVE), q, bj_UNIT_FACING )
call RemoveLocation(q)
call FlushChildHashtableBJ( GetHandleIdBJ(GetDyingUnit()), HTcache )
endfunction
//===========================================================================
function InitTrig_AutorebuildC takes nothing returns nothing
set gg_trg_AutorebuildC = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AutorebuildC, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_AutorebuildC, Condition( function Trig_AutorebuildC_Conditions ) )
call TriggerAddAction( gg_trg_AutorebuildC, function Trig_AutorebuildC_Actions )
endfunction
function Trig_Autodestroy_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A065'
endfunction
function Trig_Autodestroy_Actions takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
/*local integer id = GetPlayerId(GetOwningPlayer(u))
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local unit d = CreateUnit(Player(id),'u003',x,y,bj_UNIT_FACING)
call UnitApplyTimedLife(d,'BTLF',1.00 )
call IssueTargetOrder(d,"attack",u)*/
call UnitDamageTarget(destroyer, u ,9999,true,true,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS)
call FlushChildHashtable(HTcache,GetHandleId(u))
endfunction
//===========================================================================
function InitTrig_Autodestroy takes nothing returns nothing
set gg_trg_Autodestroy = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Autodestroy, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Autodestroy, Condition( function Trig_Autodestroy_Conditions ) )
call TriggerAddAction( gg_trg_Autodestroy, function Trig_Autodestroy_Actions )
endfunction
function Trig_DestroyEmblems_Actions takes nothing returns nothing
local unit u = GetDyingUnit()
local integer id = GetPlayerId(GetOwningPlayer(u))
set Arca_destruida[id] = true
if IsPlayerInForce(Player(id),sandforce) == true then
set udg_storm_victory = udg_storm_victory - 1.00
elseif IsPlayerInForce(Player(id),stormforce) == true then
set udg_sand_victory = udg_sand_victory - 1.00
endif
set u = null
endfunction
//===========================================================================
function InitTrig_DestroyEmblems takes nothing returns nothing
set gg_trg_DestroyEmblems = CreateTrigger( )
call TriggerAddAction( gg_trg_DestroyEmblems, function Trig_DestroyEmblems_Actions )
endfunction
function Trig_traceRoute_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A0BJ'
endfunction
function BuildWay takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit builder = LoadUnitHandle(HTcache,GetHandleId(t),1)
local unit target = LoadUnitHandle(HTcache,GetHandleId(t),2)
local real x = GetUnitX(builder)
local real y = GetUnitY(builder)
local real i = GetUnitX(target)
local real j = GetUnitY(target)
local real dx = i - x
local real dy = j - y
local real delta = SquareRoot(dx * dx + dy * dy)
if delta < 128 then
call PauseTimer(t)
call FlushChildHashtable(HTcache,GetHandleId(t))
call ReleaseTimer(t)
if GetOwningPlayer(builder) == GetOwningPlayer(target) then
call GroupAddUnit(Domain[GetPlayerId(GetOwningPlayer(builder))],target)
endif
call RemoveUnit(builder)
else
call SetTerrainType(x,y,'Vcbp',-1,1,0)
endif
set builder = null
set target = null
set t = null
endfunction
function Trig_traceRoute_Actions takes nothing returns nothing
local unit target = GetSpellTargetUnit()
local unit caster = GetSpellAbilityUnit()
local integer id =GetPlayerId(GetOwningPlayer(caster))
local real x1 = GetUnitX(caster)
local real y1 = GetUnitY(caster)
local real x2 = GetUnitX(target)
local real y2 = GetUnitY(target)
local real radian = GetRandomReal(0,359)
local real inc = 220
local real x = x1 + inc * Cos(radian * bj_DEGTORAD)
local real y = y1 + inc * Sin(radian * bj_DEGTORAD)
local unit builder = CreateUnit(Player(id),'u025',x,y,bj_UNIT_FACING)
local timer t = NewTimer()
call IssuePointOrder(builder,"move",x2,y2)
// call IssueTargetOrder(builder,"move",target)
call SaveUnitHandle(HTcache,GetHandleId(t),1,builder)
call SaveUnitHandle(HTcache,GetHandleId(t),2,target)
call TimerStart(t,0.25,true,function BuildWay)
set target = null
set caster = null
set builder = null
set t = null
endfunction
//===========================================================================
function InitTrig_traceRoute takes nothing returns nothing
set gg_trg_traceRoute = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_traceRoute, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_traceRoute, Condition( function Trig_traceRoute_Conditions ) )
call TriggerAddAction( gg_trg_traceRoute, function Trig_traceRoute_Actions )
endfunction
function SetTerrain takes real x, real y, player whichPlayer, integer PlayerRace returns nothing
if PlayerRace == 9 or PlayerRace == 10 then
call SetBlight(whichPlayer,x,y,256,true)
else
if GetTerrainType(x,y) == 'Lgrs' then
call SetTerrainType(x,y,'Bgrr',-1,1,0)
elseif GetTerrainType(x,y) == 'Zdrg' then
call SetTerrainType(x,y,'Lgrs',-1,2,0)
else
call SetTerrainType(x,y,'Zdrg',-1,1,0)
endif
endif
endfunction
function SetTerrainOnly takes real x, real y, player whichPlayer, integer PlayerRace returns nothing
if PlayerRace == 9 or PlayerRace == 10 then
call SetBlight(whichPlayer,x,y,256,true)
else
if GetTerrainType(x,y) == 'Lgrs' then
call SetTerrainType(x,y,'Bgrr',-1,GetRandomInt(1,2),GetRandomInt(0,1))
elseif GetTerrainType(x,y) == 'Zdrg' then
call SetTerrainType(x,y,'Lgrs',-1,GetRandomInt(1,2),GetRandomInt(0,1))
else
call SetTerrainType(x,y,'Zdrg',-1,GetRandomInt(1,2),GetRandomInt(0,1))
endif
// call SetTerrainType(x,y,'Bgrr',-1,GetRandomInt(1,2),GetRandomInt(0,1))
endif
endfunction
function NatureNodeBasic takes integer unitId, player whichPlayer returns nothing
local group g = CreateGroup()
local unit b = null
local integer treecount = 0
local integer prace = udg_Race[GetPlayerId(whichPlayer)]
local real x = 0
local real y = 0
local real angle = 0
local real radian = 0
local real inc = 0
set bj_livingPlayerUnitsTypeId = unitId
set filterLivingPlayerUnitsOfTypeId = Condition(function LivingPlayerUnitTypeIdFilter)
call GroupEnumUnitsOfPlayer(g, whichPlayer, filterLivingPlayerUnitsOfTypeId)
call DestroyBoolExpr(filterLivingPlayerUnitsOfTypeId)
set filterLivingPlayerUnitsOfTypeId = null
loop
exitwhen FirstOfGroup(g) == null
set b = FirstOfGroup(g)
if GetRandomInt(0,6) == 3 then
set angle = I2R(GetRandomInt(0,359))
set radian = GetRandomReal(0,359)
set inc = GetRandomReal(350,800)
set x = GetUnitX(b) + inc * Cos(radian * bj_DEGTORAD)
set y = GetUnitY(b) + inc * Sin(radian * bj_DEGTORAD)
set treecount = LoadInteger(HTcache, GetHandleId(b),StringHash("treecount"))
if treecount < 15 then
/* set treecount = treecount + 1
call createTree(udg_Tree[prace], x, y, angle, 20,GetRandomInt(0, TreeScale[prace]), true)
call SetTerrain(x,y, whichPlayer,prace)
call SaveInteger(HTcache, GetHandleId(b),StringHash("treecount"),treecount)
elseif treecount>0 and treecount<12 then*/
set treecount = treecount + 1
call createTree(udg_Tree[prace], x, y, angle, 20,GetRandomInt(0, TreeScale[prace]), true)
call SetTerrain(x,y, whichPlayer,prace)
call SaveInteger(HTcache, GetHandleId(b),StringHash("treecount"),treecount)
else
set inc = GetRandomReal(0,900)
set x = GetUnitX(b) + inc * Cos(radian * bj_DEGTORAD)
set y = GetUnitY(b) + inc * Sin(radian * bj_DEGTORAD)
call SetTerrainOnly(x,y, whichPlayer,prace)
endif
endif //getrandom = 6
call GroupRemoveUnit(g,b)
set b = null
endloop
call DestroyGroup(g)
set g = null
endfunction
function Trig_makeWhealt_Actions takes nothing returns nothing
local integer c = 0
loop
exitwhen c > 23
call NatureNodeBasic(udg_Main_build[udg_Race[c]], Player(c))
call NatureNodeBasic(udg_Fupgrade_build[udg_Race[c]], Player(c))
call NatureNodeBasic(udg_Supgrade_build[udg_Race[c]], Player(c))
set c = c + 1
endloop
set c = 0
endfunction
//===========================================================================
function InitTrig_makeWhealt takes nothing returns nothing
set gg_trg_makeWhealt = CreateTrigger( )
call TriggerRegisterTimerEvent( gg_trg_makeWhealt, 10.00 , true)
call TriggerAddAction( gg_trg_makeWhealt, function Trig_makeWhealt_Actions )
endfunction
function CountLivingPlayerUnitsId takes integer unitId, player whichPlayer returns integer
local group g = CreateGroup()
local integer matchedCount = 0
set bj_livingPlayerUnitsTypeId = unitId
set filterLivingPlayerUnitsOfTypeId = Condition(function LivingPlayerUnitTypeIdFilter)
call GroupEnumUnitsOfPlayer(g, whichPlayer, filterLivingPlayerUnitsOfTypeId)
call DestroyBoolExpr(filterLivingPlayerUnitsOfTypeId)
set filterLivingPlayerUnitsOfTypeId = null
loop
exitwhen FirstOfGroup(g) == null
call GroupRemoveUnit(g,FirstOfGroup(g))
set matchedCount = matchedCount + 1
endloop
call DestroyGroup(g)
set g = null
return matchedCount
endfunction
function TXAn takes nothing returns nothing
local integer c = PLAYER_NEUTRAL_AGGRESSIVE
set tax1[c] = CountLivingPlayerUnitsId(udg_Main_build[udg_Race[c]], Player(c)) * fortress_mode_value
set tax2[c] = CountLivingPlayerUnitsId(udg_Fupgrade_build[udg_Race[c]], Player(c)) * Stronghold_mode_Value
set tax3[c] = CountLivingPlayerUnitsId(udg_Supgrade_build[udg_Race[c]], Player(c)) * Castle_mode_value
set current_income[c] = tax1[c] + tax2[c] + tax3[c] + GetRandomInt(0,4)
call AdjustPlayerStateBJ( current_income[c], Player(c), PLAYER_STATE_RESOURCE_GOLD )
endfunction
function TXA takes nothing returns nothing
local integer c = 0
loop
exitwhen c > 23
set tax1[c] = CountLivingPlayerUnitsId(udg_Main_build[udg_Race[c]], Player(c)) * fortress_mode_value
set tax2[c] = CountLivingPlayerUnitsId(udg_Fupgrade_build[udg_Race[c]], Player(c)) * Stronghold_mode_Value
set tax3[c] = CountLivingPlayerUnitsId(udg_Supgrade_build[udg_Race[c]], Player(c)) * Castle_mode_value
set current_income[c] = tax1[c] + tax2[c] + tax3[c] + GetRandomInt(0,4)
call AdjustPlayerStateBJ( current_income[c], Player(c), PLAYER_STATE_RESOURCE_GOLD )
call DisplayTextToPlayer(Player(c),0,0,"Incoming gold: |cffccff00+" + ( I2S(current_income[c]) + "|r" ))
set c = c + 1
endloop
call TXAn()
set c = 0
// call PlaySoundBJ( gg_snd_ReceiveGold )
// call TriggerExecute( gg_trg_actualiza )
// call TriggerExecute( gg_trg_SE )
// call TriggerExecute( gg_trg_TGR )
endfunction
//===========================================================================
function InitTrig_taxing takes nothing returns nothing
set gg_trg_taxing = CreateTrigger( )
call DisableTrigger( gg_trg_taxing )
call TriggerRegisterTimerEventPeriodic( gg_trg_taxing, 40.00 )
call TriggerAddAction( gg_trg_taxing, function TXA )
endfunction
function CEAA takes nothing returns nothing
call DisableTrigger( gg_trg_taxing )
// call DisableTrigger( gg_trg_timerturno )
call PauseAllUnitsBJ( true )
call TriggerSleepAction( 9.00 )
call DisplayTimedTextToForce( GetPlayersAll(), 10.00, "|cffffcc57Thanks for fight on Walords Empire.|r\n|cffffcc57Hope to see you again soon.|r\n" )
//call MultiboardMinimizeBJ( false, GetLastCreatedMultiboard() )
endfunction
//===========================================================================
function InitTrig_cinematicend1 takes nothing returns nothing
set gg_trg_cinematicend1 = CreateTrigger( )
call TriggerAddAction( gg_trg_cinematicend1, function CEAA )
endfunction
function Trig_emblemvictorycount_Actions takes nothing returns nothing
local integer c = 0
local integer winners = 0
local player array pl
local boolean sand = false
local string plname = null
call PlayThematicMusicBJ( "Sound\\Music\\mp3Music\\HumanVictory.mp3" )
call TriggerSleepAction( 1.00 )
call TriggerExecute( gg_trg_cinematicend1 )
call TriggerSleepAction( 4.00 )
if udg_sand_victory == 0 then
set winners = iSand
set sand = true
elseif udg_storm_victory == 0 then
set winners = iStorm
endif
loop
exitwhen c > winners
if sand == true then
set plname = GetPlayerName(iSandPlayers[c])
else
set plname = GetPlayerName(iStormPlayers[c])
endif
call DisplayTextToForce( GetPlayersAll(), "|cffffcc00"+plname+"|r became victorious from the war!")
set c = c + 1
endloop
set c = 0
call DisableTrigger( GetTriggeringTrigger() )
endfunction
//===========================================================================
function InitTrig_emblemvictory takes nothing returns nothing
set gg_trg_emblemvictory = CreateTrigger( )
call TriggerRegisterVariableEvent( gg_trg_emblemvictory, "udg_sand_victory", EQUAL, 0 )
call TriggerRegisterVariableEvent( gg_trg_emblemvictory, "udg_storm_victory", EQUAL, 0 )
call TriggerAddAction( gg_trg_emblemvictory, function Trig_emblemvictorycount_Actions )
endfunction
function Trig_leaves_Actions takes nothing returns nothing
local integer id = GetPlayerId(GetTriggerPlayer())
local integer aid = GetRandomInt(0,11)
set Aiplayer[indexAi] = Player(id)
set Aiclock[indexAi] = NewTimer()
set IADefending[id] = false
call SaveInteger(HTcache, GetHandleId(Aiclock[indexAi]),1,id) // player id
call SaveInteger(HTcache, GetHandleId(Aiclock[indexAi]),2,0) // order index
call SaveInteger(HTcache, GetHandleId(Aiclock[indexAi]),3,aid) //Ai id
call TimerStart(Aiclock[indexAi], aiClockNormal[aid] , true, function AiCore )
set indexAi = indexAi + 1
call DisplayTextToForce(GetPlayersAll(), "|cffff0000" + GetPlayerName(Player(id)) + " has left the game!|r")
call SetPlayerName(Player(id), GetPlayerName(Player(id)) +"[AI]")
endfunction
//===========================================================================
function InitTrig_leaves takes nothing returns nothing
local integer i = 0
set gg_trg_leaves = CreateTrigger( )
loop
exitwhen i>23
call TriggerRegisterPlayerEventLeave( gg_trg_leaves, Player(i) )
set i = i+1
endloop
call TriggerAddAction( gg_trg_leaves, function Trig_leaves_Actions )
endfunction