Home › Lua API › PlayerCities

Available out of the box. Usable from Lua in the unmodified game.

PlayerCities

12 methods. Symbol/current columns are function addresses (RVA) of the native wrapper.

Community reference for this object: PlayerCities (Sukrit Tan, external).

Signatures are recovered from the game code. ⚠ = partly understood (arguments may be missing or approximate). ? after a name = optional argument. Types: integer/number are Lua numbers, enum-typed arguments show the C++ type in brackets. Two signatures mean the method is registered separately for the UI and the gameplay state and each wrapper was decoded on its own. "same code as" in the Symbol column means the compiler merged identical functions: those methods share one wrapper and cannot be told apart by address.

Method Signature Where Reference Symbol Current
Create PlayerCities:Create(kPlacement?: integer[const City::Placement::Parameters], bCopyingCity?: integer) → nil/City
args: kPlacement — Plot x coordinate (plot:GetX()).; bCopyingCity — Plot y coordinate (plot:GetY()).
touches (inferred from the code): writes Player::Cities::m_kCities, Player::Cities::m_eHomeContinent; reads Player::Cities::m_kCities, Player::Instance::m_id
gameplay yes ↗ 0x6ee5b0 0x6eecf0
Destroy PlayerCities:Destroy(pkCity: City) (or nothing)
touches (inferred from the code): writes Player::Cities::m_kCities; reads Player::Cities::m_kCities
gameplay yes ↗ 0x6ee6f0 0x6eee30
FindClosest UI state: PlayerCities:FindClosest(x: integer/Plot, y?: integer) → City, number (or nothing)
gameplay state: PlayerCities:FindClosest(arg1?: number, arg2?: number, eOwningPlayer?: integer[PlayerTypes])
args: x — Plot x coordinate (plot:GetX()).; y — Plot y coordinate (plot:GetY()).
✓ exists at runtime (not called)
ui-cache, gameplay yes ↗ 0x6aaa50 0x6aafd0
FindID UI state: PlayerCities:FindID(arg1?: number) → City
gameplay state: PlayerCities:FindID(arg1?: number) → City
touches (inferred from the code): reads Cache::Player::Cities::m_kCities
✓ exists at runtime (not called)
ui-cache, gameplay yes ↗ 0x6aab10 0x6ab090
GetCapitalCity UI state: PlayerCities:GetCapitalCity() → City
gameplay state: PlayerCities:GetCapitalCity() → City
✓ called in the game: 1 value(s) as documented
ui-cache, gameplay yes ↗ 0x6aab80 0x6ab100
GetCount PlayerCities:GetCount() → number
touches (inferred from the code): reads Cache::Player::Cities::m_kCities
✓ called in the game: 1 value(s) as documented
ui-cache, gameplay yes ↗ 0x6aabc0 0x6ab140
GetFirstRangedAttackCity PlayerCities:GetFirstRangedAttackCity() → City
touches (inferred from the code): reads Cache::Player::Instance::m_kConstant+0x8, Cache::Player::Cities::m_kCities
✓ called in the game (returned nothing in that state)
ui-cache yes ↗ 0x6aac10 0x6ab190
GetNextCapturedCity PlayerCities:GetNextCapturedCity() → City
touches (inferred from the code): reads Cache::Player::Instance::m_kConstant+0x8, Cache::Player::Cities::m_kCities
✓ exists at runtime (not called)
ui-cache yes ↗ 0x6aac50 0x6ab1d0
GetNextRebelledCity PlayerCities:GetNextRebelledCity() → City
touches (inferred from the code): reads Cache::Player::Instance::m_kConstant+0x8, Cache::Player::Cities::m_kCities
✓ exists at runtime (not called)
ui-cache yes ↗ 0x7122e0 0x712b50
GetOriginalCapitalCity PlayerCities:GetOriginalCapitalCity() → City
touches (inferred from the code): reads Player::Instance::m_id
gameplay yes ↗ 0x6ee920 0x6ef060
IsCityWithinRange PlayerCities:IsCityWithinRange(x: integer/Plot, y?: integer, arg3?: integer) → boolean (or nothing)
args: x — A plot coordinate (named x / y / plotX / plotY in the scripts). (inferred); y — A plot coordinate (named x / y / plotX / plotY in the scripts). (inferred); arg3 — A number. (inferred)
✓ exists at runtime (not called)
ui-cache yes ↗ 0x6aac90 0x6ab210
IsValidFoundLocation PlayerCities:IsValidFoundLocation(kWhere?: integer[const PlotCoord], arg2?: integer) → boolean (City::Placement::PLACEMENT_RESULT)
args: kWhere — Plot x coordinate (plot:GetX()). (inferred); arg2 — Plot y coordinate (plot:GetY()). (inferred)
gameplay yes ↗ 0x6ee960 0x6ef0a0