Skip to content

@lands.io/mod-sdk / Player

Interface: Player

A player in the game. This is the mod-facing view - internal state management is hidden.

Table of contents

Methods

Methods

addGold

addGold(toAdd): void

Parameters

Name Type
toAdd number

Returns

void


addTroops

addTroops(troops): void

Parameters

Name Type
troops number

Returns

void


clientID

clientID(): string

Returns

string


createAttack

createAttack(target, troops, sourceTile, attackType?, targetTile?): Attack

Parameters

Name Type
target Player | TerraNullius
troops number
sourceTile null | number
attackType? AttackType
targetTile? null | number

Returns

Attack


displayName

displayName(): string

Returns

string


getModifier

getModifier(key, defaultValue?): number

Parameters

Name Type
key string
defaultValue? number

Returns

number


gold

gold(): number

Returns

number


id

id(): string

Returns

string


incomingAttacks

incomingAttacks(): Attack[]

Returns

Attack[]


info

info(): PlayerInfo

Returns

PlayerInfo


isAlive

isAlive(): boolean

Returns

boolean


isPlayer

isPlayer(): this is Player

Returns

this is Player


landBorders

landBorders(): ReadonlySet\<number>

Returns

ReadonlySet\<number>


lastHostileAttackerSmallID

lastHostileAttackerSmallID(): null | number

Returns

null | number


name

name(): string

Returns

string


neighbors

neighbors(): (Player | TerraNullius)[]

Returns

(Player | TerraNullius)[]


numTilesOwned

numTilesOwned(): number

Returns

number


outgoingAttacks

outgoingAttacks(): Attack[]

Returns

Attack[]


population

population(): number

Returns

number


relation

relation(other): Relation

Parameters

Name Type
other Player

Returns

Relation


removeGold

removeGold(toRemove): void

Parameters

Name Type
toRemove number

Returns

void


removeTroops

removeTroops(troops): number

Parameters

Name Type
troops number

Returns

number


setModifier

setModifier(key, value): void

Parameters

Name Type
key string
value number

Returns

void


setTargetTroopRatio

setTargetTroopRatio(target): void

Parameters

Name Type
target number

Returns

void


setTroops

setTroops(troops): void

Parameters

Name Type
troops number

Returns

void


sharesBorderWith

sharesBorderWith(other): boolean

Parameters

Name Type
other Player | TerraNullius

Returns

boolean


shores

shores(): ReadonlySet\<number>

Returns

ReadonlySet\<number>


skin

skin(): number

Returns

number


smallID

smallID(): number

Returns

number


targetTroopRatio

targetTroopRatio(): number

Returns

number


tiles

tiles(): ReadonlySet\<number>

Returns

ReadonlySet\<number>


troops

troops(): number

Returns

number


type

type(): PlayerType

Returns

PlayerType


units

units(...types): Unit[]

Parameters

Name Type
...types UnitType[]

Returns

Unit[]


workers

workers(): number

Returns

number


Source Code

View full implementation
/**
 * A player in the game.
 * This is the mod-facing view - internal state management is hidden.
 */
export interface Player {
  // Identity
  id(): PlayerID;
  smallID(): number;
  name(): string;
  displayName(): string;
  clientID(): ClientID;
  type(): PlayerType;
  skin(): number;
  info(): PlayerInfo;
  isPlayer(): this is Player;

  // State
  isAlive(): boolean;

  // Territory
  tiles(): ReadonlySet<TileRef>;
  landBorders(): ReadonlySet<TileRef>;
  shores(): ReadonlySet<TileRef>;
  numTilesOwned(): number;

  // Resources
  gold(): Gold;
  population(): number;
  workers(): number;
  troops(): number;
  targetTroopRatio(): number;

  // Resource mutations
  addGold(toAdd: Gold): void;
  removeGold(toRemove: Gold): void;
  addTroops(troops: number): void;
  removeTroops(troops: number): number;
  setTroops(troops: number): void;
  setTargetTroopRatio(target: number): void;

  // Units
  units(...types: UnitType[]): Unit[];

  // Relations
  neighbors(): (Player | TerraNullius)[];
  sharesBorderWith(other: Player | TerraNullius): boolean;
  relation(other: Player): Relation;

  // Attacks
  outgoingAttacks(): Attack[];
  incomingAttacks(): Attack[];
  createAttack(
    target: Player | TerraNullius,
    troops: number,
    sourceTile: TileRef | null,
    attackType?: AttackType,
    targetTile?: TileRef | null
  ): Attack;

  // Combat context
  lastHostileAttackerSmallID(): number | null;

  // Modifiers (generic per-player numeric values read by the engine)
  setModifier(key: string, value: number): void;
  getModifier(key: string, defaultValue?: number): number;
}