Skip to content

PlayerData

Classes

Player

Bases: AoE2Object

A class for handling all player information.

Source code in AoE2ScenarioParser/objects/data_objects/player/player.py
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
class Player(AoE2Object):
    """A class for handling all player information."""

    _object_attributes = [
        'player_id',
        'starting_age',
        'lock_civ',
        'food',
        'wood',
        'gold',
        'stone',
        'color',
        'active',
        'human',
        'civilization',
        'architecture_set',
    ]
    _object_attributes_non_gaia = [
        'population_cap',
        'diplomacy',
        'initial_camera_x',
        'initial_camera_y',
        'allied_victory',
        'disabled_techs',
        'disabled_buildings',
        'disabled_units',
        'base_priority',
        'tribe_name',
        'string_table_name_id',
    ]

    def __init__(
            self,
            player_id: int,
            starting_age: int,
            lock_civ: int,
            lock_personality: int,
            food: int,
            wood: int,
            gold: int,
            stone: int,
            color: int,
            active: bool,
            human: bool,
            civilization: int,
            architecture_set: int,

            # Optionals due to GAIA not having such value
            population_cap: Optional[int] = None,
            diplomacy: Optional[List[int]] = None,
            initial_camera_x: Optional[int] = None,
            initial_camera_y: Optional[int] = None,
            allied_victory: Optional[int] = None,
            disabled_techs: Optional[List[int]] = None,
            disabled_buildings: Optional[List[int]] = None,
            disabled_units: Optional[List[int]] = None,
            tribe_name: Optional[str] = None,
            base_priority: Optional[int] = None,
            string_table_name_id: Optional[int] = None,
            **kwargs
    ):
        super().__init__(**kwargs)

        self._player_id: int = player_id
        self._active: bool = active
        self.starting_age: int = dataset_or_value(StartingAge, starting_age)
        self.lock_civ: bool = bool(lock_civ)
        self.lock_personality: bool = bool(lock_personality)
        self.food: int = food
        self.wood: int = wood
        self.gold: int = gold
        self.stone: int = stone
        self.color: int = color
        self.human: bool = human
        self.civilization: int | Civilization = dataset_or_value(Civilization, civilization)
        self.architecture_set: int | Civilization = dataset_or_value(Civilization, architecture_set)

        # Optionals due to GAIA not having such value
        self.population_cap: Optional[int] = population_cap
        self.diplomacy: Optional[List[int]] = diplomacy
        self.initial_camera_x: Optional[int] = initial_camera_x
        self.initial_camera_y: Optional[int] = initial_camera_y
        self.allied_victory: Optional[bool] = bool(allied_victory) if allied_victory is not None else None
        self.disabled_techs: Optional[List[int]] = disabled_techs
        self.disabled_buildings: Optional[List[int]] = disabled_buildings
        self.disabled_units: Optional[List[int]] = disabled_units
        self.tribe_name: Optional[str] = tribe_name
        self.base_priority: Optional[int] = base_priority
        self.string_table_name_id: Optional[int] = string_table_name_id

    @property
    def player_id(self):
        """Read-only value of the player ID"""
        return self._player_id

    @property
    def active(self):
        """Read-only value if this player is active or not"""
        return self._active

    def set_player_diplomacy(self, players: PlayerId | int | List[PlayerId | int], diplomacy: DiplomacyState):
        """
        Set the diplomacy of this player to other players.

        Note: This sets the player diplomacy ONE WAY!
            This does NOT set the other player's diplomacy to this player to the same diplomacy

        Args:
            players: The player(s) to change
            diplomacy: The diplomacy setting to set the player to
        """
        players: List[PlayerId | int] = listify(players)

        if self.player_id in players:
            raise ValueError("Cannot set diplomacy from and to the same player")

        for player in players:
            self.diplomacy[player - 1] = diplomacy

    def _get_object_attrs(self):
        attrs = self._object_attributes
        if self.player_id != PlayerId.GAIA:
            attrs.extend(self._object_attributes_non_gaia)
        return super()._get_object_attrs() + attrs

Attributes

active property

Read-only value if this player is active or not

allied_victory: Optional[bool] = bool(allied_victory) if allied_victory is not None else None instance-attribute
Type: Optional[bool]
Value: bool(allied_victory) if allied_victory is not None else None
architecture_set: int | Civilization = dataset_or_value(Civilization, architecture_set) instance-attribute
Type: int | Civilization
Value: dataset_or_value(Civilization, architecture_set)
base_priority: Optional[int] = base_priority instance-attribute
Type: Optional[int]
Value: base_priority
civilization: int | Civilization = dataset_or_value(Civilization, civilization) instance-attribute
Type: int | Civilization
Value: dataset_or_value(Civilization, civilization)
color: int = color instance-attribute
Type: int
Value: color
diplomacy: Optional[List[int]] = diplomacy instance-attribute
Type: Optional[List[int]]
Value: diplomacy
disabled_buildings: Optional[List[int]] = disabled_buildings instance-attribute
Type: Optional[List[int]]
Value: disabled_buildings
disabled_techs: Optional[List[int]] = disabled_techs instance-attribute
Type: Optional[List[int]]
Value: disabled_techs
disabled_units: Optional[List[int]] = disabled_units instance-attribute
Type: Optional[List[int]]
Value: disabled_units
food: int = food instance-attribute
Type: int
Value: food
gold: int = gold instance-attribute
Type: int
Value: gold
human: bool = human instance-attribute
Type: bool
Value: human
initial_camera_x: Optional[int] = initial_camera_x instance-attribute
Type: Optional[int]
Value: initial_camera_x
initial_camera_y: Optional[int] = initial_camera_y instance-attribute
Type: Optional[int]
Value: initial_camera_y
lock_civ: bool = bool(lock_civ) instance-attribute
Type: bool
Value: bool(lock_civ)
lock_personality: bool = bool(lock_personality) instance-attribute
Type: bool
Value: bool(lock_personality)
player_id property

Read-only value of the player ID

population_cap: Optional[int] = population_cap instance-attribute
Type: Optional[int]
Value: population_cap
starting_age: int = dataset_or_value(StartingAge, starting_age) instance-attribute
Type: int
Value: dataset_or_value(StartingAge, starting_age)
stone: int = stone instance-attribute
Type: int
Value: stone
string_table_name_id: Optional[int] = string_table_name_id instance-attribute
Type: Optional[int]
Value: string_table_name_id
tribe_name: Optional[str] = tribe_name instance-attribute
Type: Optional[str]
Value: tribe_name
wood: int = wood instance-attribute
Type: int
Value: wood

Functions


def __init__(...)

Parameters:

Name Type Description Default
player_id int - required
starting_age int - required
lock_civ int - required
lock_personality int - required
food int - required
wood int - required
gold int - required
stone int - required
color int - required
active bool - required
human bool - required
civilization int - required
architecture_set int - required
population_cap Optional[int] - None
diplomacy Optional[List[int]] - None
initial_camera_x Optional[int] - None
initial_camera_y Optional[int] - None
allied_victory Optional[int] - None
disabled_techs Optional[List[int]] - None
disabled_buildings Optional[List[int]] - None
disabled_units Optional[List[int]] - None
tribe_name Optional[str] - None
base_priority Optional[int] - None
string_table_name_id Optional[int] - None
kwargs ? - {}
Source code in AoE2ScenarioParser/objects/data_objects/player/player.py
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
def __init__(
        self,
        player_id: int,
        starting_age: int,
        lock_civ: int,
        lock_personality: int,
        food: int,
        wood: int,
        gold: int,
        stone: int,
        color: int,
        active: bool,
        human: bool,
        civilization: int,
        architecture_set: int,

        # Optionals due to GAIA not having such value
        population_cap: Optional[int] = None,
        diplomacy: Optional[List[int]] = None,
        initial_camera_x: Optional[int] = None,
        initial_camera_y: Optional[int] = None,
        allied_victory: Optional[int] = None,
        disabled_techs: Optional[List[int]] = None,
        disabled_buildings: Optional[List[int]] = None,
        disabled_units: Optional[List[int]] = None,
        tribe_name: Optional[str] = None,
        base_priority: Optional[int] = None,
        string_table_name_id: Optional[int] = None,
        **kwargs
):
    super().__init__(**kwargs)

    self._player_id: int = player_id
    self._active: bool = active
    self.starting_age: int = dataset_or_value(StartingAge, starting_age)
    self.lock_civ: bool = bool(lock_civ)
    self.lock_personality: bool = bool(lock_personality)
    self.food: int = food
    self.wood: int = wood
    self.gold: int = gold
    self.stone: int = stone
    self.color: int = color
    self.human: bool = human
    self.civilization: int | Civilization = dataset_or_value(Civilization, civilization)
    self.architecture_set: int | Civilization = dataset_or_value(Civilization, architecture_set)

    # Optionals due to GAIA not having such value
    self.population_cap: Optional[int] = population_cap
    self.diplomacy: Optional[List[int]] = diplomacy
    self.initial_camera_x: Optional[int] = initial_camera_x
    self.initial_camera_y: Optional[int] = initial_camera_y
    self.allied_victory: Optional[bool] = bool(allied_victory) if allied_victory is not None else None
    self.disabled_techs: Optional[List[int]] = disabled_techs
    self.disabled_buildings: Optional[List[int]] = disabled_buildings
    self.disabled_units: Optional[List[int]] = disabled_units
    self.tribe_name: Optional[str] = tribe_name
    self.base_priority: Optional[int] = base_priority
    self.string_table_name_id: Optional[int] = string_table_name_id

def set_player_diplomacy(...)

Set the diplomacy of this player to other players.

This sets the player diplomacy ONE WAY!

This does NOT set the other player's diplomacy to this player to the same diplomacy

Parameters:

Name Type Description Default
players PlayerId | int | List[PlayerId | int]

The player(s) to change

required
diplomacy DiplomacyState

The diplomacy setting to set the player to

required
Source code in AoE2ScenarioParser/objects/data_objects/player/player.py
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
def set_player_diplomacy(self, players: PlayerId | int | List[PlayerId | int], diplomacy: DiplomacyState):
    """
    Set the diplomacy of this player to other players.

    Note: This sets the player diplomacy ONE WAY!
        This does NOT set the other player's diplomacy to this player to the same diplomacy

    Args:
        players: The player(s) to change
        diplomacy: The diplomacy setting to set the player to
    """
    players: List[PlayerId | int] = listify(players)

    if self.player_id in players:
        raise ValueError("Cannot set diplomacy from and to the same player")

    for player in players:
        self.diplomacy[player - 1] = diplomacy

Functions