Перейти к содержанию

🧠 Pawns & AI API

This section covers reading, spawning, editing, and controlling pawns, as well as managing group AI behavior (Lords).

Pawn Controller

Pawn Controller — это интерфейс только для чтения для получения подробной статистики о поселенцах, заключенных, животных и врагах.

Он предоставляет глубокое погружение в:

  • Потребности (Needs): Голод, Отдых, Развлечения.
  • Биография (Bio): Возраст, Черты характера, Предыстория.
  • Работа (Work): Текущая работа, приоритеты и расписания.

GET
/api/v2/colonists/detailed

Получает исчерпывающий список всех поселенцев с подробной статистикой, включая потребности (сон, радость, красота), приоритеты в работе и медицинский статус.

Политика кэширования

Эта конечная точка кэшируется на стороне сервера на 1800 игровых тиков (~30 секунд), чтобы уменьшить влияние на производительность игрового цикла.

Example:

curl --request GET \
--url http://localhost:8765/api/v2/colonists/detailed

Response:

{
    "success": true,
    "data": [
        {
            "pawn": {
                "id": 101,
                "name": "Lumi",
                "gender": "Female",
                "age": 25,
                "health": 1.0,
                "mood": 0.85,
                "hunger": 0.2,
                "position": {
                    "x": 10,
                    "y": 0,
                    "z": 15
                }
            },
            "detailes": {
                "body_size": 1.0,
                "sleep": 0.9,
                "comfort": 0.8,
                "beauty": 0.5,
                "joy": 0.75,
                "energy": 0.8,
                "drugs_desire": 0.0,
                "surrounding_beauty": 1.2,
                "fresh_air": 1.0,
                "work_info": {
                    "job": "Harvesting",
                    "work_speed": 1.1
                },
                "policies_info": {
                    "food": "Lavish",
                    "clothing": "Anything"
                },
                "medical_info": {
                    "in_pain": false,
                    "bleeding_rate": 0.0
                },
                "social_info": {
                    "marital_status": "Single"
                }
            }
        }
    ],
    "timestamp": "2025-12-11T19:46:05.7088803Z"
}


GET
/api/v2/colonist/detailed

Получает подробную статистику для одного поселенца, идентифицированного по его ID. В отличие от массовой конечной точки, этот запрос извлекает данные в реальном времени без кэширования.

Example:

curl --request GET \
--url "http://localhost:8765/api/v2/colonist/detailed?id=101"

Response:

{
    "success": true,
    "data": {
        "pawn": {
            "id": 101,
            "name": "Lumi",
            "gender": "Female",
            "age": 25,
            "health": 1.0,
            "mood": 0.85,
            "hunger": 0.2,
            "position": {
                "x": 10,
                "y": 0,
                "z": 15
            }
        },
        "detailes": {
            "body_size": 1.0,
            "sleep": 0.9,
            "comfort": 0.8,
            "beauty": 0.5,
            "joy": 0.75,
            "energy": 0.8,
            "drugs_desire": 0.0,
            "surrounding_beauty": 1.2,
            "fresh_air": 1.0,
            "work_info": {
                "job": "Harvesting",
                "work_speed": 1.1
            },
            "policies_info": {
                "food": "Lavish",
                "clothing": "Anything"
            },
            "medical_info": {
                "in_pain": false,
                "bleeding_rate": 0.0
            },
            "social_info": {
                "marital_status": "Single"
            }
        }
    },
    "timestamp": "2025-12-11T19:46:05.7088803Z"
}


GET
/api/v1/colonists

Получает список всех поселенцев во фракции игрока, включая их навыки, черты характера, здоровье, настроение и текущие занятия.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/colonists'

Response:

{
    "success": true,
    "data": [
        {
            "id": 1011,
            "name": "Walters",
            "gender": "Male",
            "age": 13,
            "health": 1.0,
            "mood": 0.7448001,
            "hunger": 0.663999736,
            "position": {
                "x": 71,
                "y": 0,
                "z": 94
            }
        },
        {
            "id": 1014,
            "name": "Nordi",
            "gender": "Male",
            "age": 61,
            "health": 1.0,
            "mood": 0.559999764,
            "hunger": 0.663999736,
            "position": {
                "x": 74,
                "y": 0,
                "z": 91
            }
        },
        {
            "id": 1017,
            "name": "Casey",
            "gender": "Male",
            "age": 41,
            "health": 1.0,
            "mood": 0.55,
            "hunger": 0.667999744,
            "position": {
                "x": 68,
                "y": 0,
                "z": 95
            }
        }
    ],
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-11T20:00:34.2760128Z"
}


GET
/api/v1/colonist

Получает информацию об одном поселенце во фракции игрока.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/colonist?id=1020'

Response:

{
    "success": true,
    "data": {
        "id": 1040,
        "name": "Blake",
        "gender": "Male",
        "age": 31,
        "health": 1.0,
        "mood": 0.5072,
        "hunger": 0.796,
        "position": {
        "x": 63,
        "y": 0,
        "z": 88
        }
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-11T20:09:41.7078214Z"
}


GET
/api/v1/colonists/detailed

Получает подробный список всех поселенцев во фракции игрока, включая их навыки, черты характера, здоровье, настроение и текущие занятия.

Example:

curl --request GET \
--url http://localhost:8765/api/v1/colonists/detailed

Response:

{
    "success": true,
    "data": [
        {
            "colonist": {
                "id": 1020,
                "name": "Lumi",
                "gender": "Female",
                "age": 25,
                "health": 1.0,
                "mood": 0.85,
                "hunger": 0.2,
                "position": { "x": 10, "y": 0, "z": 15 }
            },
            "body_size": 1.0,
            "sleep": 0.9,
            "comfort": 0.8,
            "beauty": 0.5,
            "joy": 0.75,
            "energy": 0.8,
            "drugs_desire": 0.0,
            "surrounding_beauty": 1.2,
            "fresh_air": 1.0,
            "colonist_work_info": {
                "job": "Harvesting",
                "work_speed": 1.1
            },
            "policies_info": {
                "food": "Lavish",
                "clothing": "Anything"
            },
            "colonist_medical_info": {
                "in_pain": false,
                "bleeding_rate": 0.0
            },
            "social_info": {
                "marital_status": "Single"
            }
        }
    ],
    "timestamp": "2025-12-11T19:46:05.7088803Z"
}


GET
/api/v1/colonist/detailed

Получает подробную информацию об одном поселенце во фракции игрока по ID.

Example:

curl --request GET \
--url "http://localhost:8765/api/v1/colonist/detailed?id=1020"

Response:

{
    "success": true,
    "data": {
        "colonist": {
            "id": 1020,
            "name": "Lumi",
            "gender": "Female",
            "age": 25,
            "health": 1.0,
            "mood": 0.85,
            "hunger": 0.2,
            "position": { "x": 10, "y": 0, "z": 15 }
        },
        "body_size": 1.0,
        "sleep": 0.9,
        "comfort": 0.8,
        "beauty": 0.5,
        "joy": 0.75,
        "energy": 0.8,
        "drugs_desire": 0.0,
        "surrounding_beauty": 1.2,
        "fresh_air": 1.0,
        "colonist_work_info": {
            "job": "Harvesting",
            "work_speed": 1.1
        },
        "policies_info": {
            "food": "Lavish",
            "clothing": "Anything"
        },
        "colonist_medical_info": {
            "in_pain": false,
            "bleeding_rate": 0.0
        },
        "social_info": {
            "marital_status": "Single"
        }
    },
    "timestamp": "2025-12-11T19:46:05.7088803Z"
}


GET
/api/v1/colonist/opinion-about

Получает мнение одного поселенца о другом указанном поселенце. Эта конечная точка дает представление о межличностных отношениях внутри поселения, возвращая два целочисленных значения: Opinion (мнение поселенца с id о поселенце с other_id) и OpinionAboutMe (мнение поселенца с other_id о поселенце с id).

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/colonist/opinion-about?id=1020&other_id=964'

Response:

{
    "success": true,
    "data": {
        "opinion": 75,
        "opinion_about_me": 50
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-12T10:00:00.0000000Z"
}


POST
/api/v1/colonist/time-assignment

Устанавливает или изменяет назначение времени (расписание) для одного или нескольких поселенцев. Расписание в RimWorld определяет распорядок дня для каждого поселенца, определяя, когда они спят, работают, развлекаются или занимаются чем-либо еще.

Example:

curl --request POST \
--url http://localhost:8765/api/v1/colonist/time-assignment \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 99,
    "hour": 14,
    "assignment": "Joy"
}'

Request:

{
    "pawn_id": 99,
    "hour": 14,
    "assignment": "Joy"
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-10T19:53:16.733319Z"
}


GET
/api/v1/colonists/positions

Получает координаты всех поселенцев на всех картах в реальном времени.

Примечание по производительности: Эта конечная точка активно кэшируется (TTL 100 мс) и оптимизирована для высокочастотного опроса. Она возвращает облегченный DTO, содержащий только необходимые данные о местоположении, что делает её идеальной для обновления миникарт или трекеров в реальном времени.

Example:

curl --request GET \
--url http://localhost:8765/api/v1/colonists/positions

Response:

{
    "success": true,
    "data": [
        {
            "id": 5612,
            "map_id": 0,
            "x": 125,
            "z": 110
        },
        {
            "id": 5613,
            "map_id": 0,
            "x": 128,
            "z": 112
        },
        {
            "id": 8901,
            "map_id": 1,
            "x": 45,
            "z": 200
        }
    ],
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-14T14:22:15.500Z"
}


GET
/api/v1/colonist/inventory

Получает подробный список всех предметов, одежды и снаряжения, находящихся в данный момент в инвентаре поселенца. Сюда входят переносимые предметы, надетая одежда и экипированное оружие/инструменты.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/colonist/inventory?id=1020'

Response:

{
    "success": true,
    "data": {
        "Items": [
            {
                "thing_id": 4895,
                "def_name": "MealSurvivalPack",
                "label": "packaged survival meal",
                "categories": ["FoodMeals"],
                "position": { "x": 13, "y": 0, "z": 62 },
                "stack_count": 5,
                "market_value": 24.0,
                "is_forbidden": false,
                "quality": -1,
                "hit_points": 50,
                "max_hit_points": 50
            }
        ],
        "Apparels": [
            {
                "thing_id": 1234,
                "def_name": "Apparel_Pants",
                "label": "pants",
                "categories": ["Apparel"],
                "position": { "x": 0, "y": 0, "z": 0 },
                "stack_count": 1,
                "market_value": 50.0,
                "is_forbidden": false,
                "quality": 3,
                "hit_points": 75,
                "max_hit_points": 100
            }
        ],
        "Equipment": [
            {
                "thing_id": 5678,
                "def_name": "Weapon_AssaultRifle",
                "label": "assault rifle",
                "categories": ["Weapons"],
                "position": { "x": 0, "y": 0, "z": 0 },
                "stack_count": 1,
                "market_value": 700.0,
                "is_forbidden": false,
                "quality": 4,
                "hit_points": 120,
                "max_hit_points": 150
            }
        ]
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-12T10:00:00.0000000Z"
}


GET
/api/v1/colonist/body/image

Получает изображения в кодировке base64 и информацию о цвете тела и головы поселенца. Эта конечная точка полезна для рендеринга или анализа внешности поселенца.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/colonist/body/image?id=1020'

Response:

{
    "success": true,
    "data": {
        "body_image": "base64_encoded_body_image_string",
        "body_color": "RGBA(1.000, 1.000, 1.000, 1.000)",
        "head_image": "base64_encoded_head_image_string",
        "head_color": "RGBA(1.000, 1.000, 1.000, 1.000)"
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-12T10:00:00.0000000Z"
}


POST
/api/v1/colonist/work-priority

Устанавливает или корректирует приоритеты типов работ для одного или нескольких поселенцев. Приоритеты работы определяют, какие задачи поселенец будет выполнять в рабочее время; каждому типу работы (например, пожаротушение, строительство, выращивание, ремесло) назначается уровень приоритета от 1 (самый высокий) до 4 (самый низкий) или работа отключается (0).

Example:

curl --request POST \
--url http://localhost:8765/api/v1/colonist/work-priority \
--header 'content-type: application/json' \
--data '{
    "id": 99,
    "work": "Cooking",
    "priority": 1
}'

Request:

{
    "id": 99,
    "work": "Cooking",
    "priority": 1
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-10T19:53:16.733319Z"
}


POST
/api/v1/colonists/work-priority

Устанавливает или корректирует приоритеты типов работ для нескольких поселенцев в одном запросе.

Example:

curl --request POST \
--url http://localhost:8765/api/v1/colonists/work-priority \
--header 'content-type: application/json' \
--data '[
    { "id": 37586, "work": "Patient", "priority": 5 },
    { "id": 67969, "work": "Hauling", "priority": 1 }
]'

Request:

[
    { "id": 37586, "work": "Patient", "priority": 5 },
    { "id": 67969, "work": "Hauling", "priority": 1 }
]

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-10T19:53:16.733319Z"
}


POST
/api/v1/jobs/make/equip

Создает задание для поселенца экипировать определенный предмет из доступного инвентаря или окружающей местности. Эта конечная точка ставит в очередь немедленную задачу "экипировать", приказывая поселенцу взять и надеть/вооружить указанную одежду или оружие.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/jobs/make/equip?map_id=0&pawn_id=1011&item_id=4849' \
--header 'content-type: application/json'

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-10T19:53:16.733319Z"
}


GET
/api/v1/pawn/portrait/image

Получает портретное изображение конкретной пешки в кодировке base64. Эта конечная точка позволяет указать желаемую ширину, высоту и направление взгляда для портрета.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/pawn/portrait/image?pawn_id=1020&width=128&height=128&direction=South'

Response:

{
    "success": true,
    "data": {
        "result": "success",
        "image_base64": "base64_encoded_portrait_image_string"
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-12T10:00:00.0000000Z"
}


GET
/api/v1/trait-def

Получает подробную информацию об определении конкретной черты характера. Черты определяют врожденные характеристики пешки и могут влиять на их навыки, настроение и взаимодействия.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/trait-def?name=Ascetic'

Response:

{
    "success": true,
    "data": {
        "def_name": "Ascetic",
        "label": "ascetic",
        "description": "",
        "degree_datas": [
            {
                "label": "ascetic",
                "description": "{PAWN_nameDef} has forsaken physical comforts and enjoyments in favor of a simple, pure lifestyle. {PAWN_pronoun} will become unhappy if {PAWN_pronoun} has a bedroom that's too impressive. {PAWN_pronoun} also dislikes fancy food and prefers to eat raw. {PAWN_pronoun} never judges others by their appearance.",
                "degree": 0,
                "skill_gains": {},
                "stat_offsets": [],
                "stat_factors": [
                    {
                        "stat_def_name": "CertaintyLossFactor",
                        "value": 0.5
                    }
                ]
            }
        ],
        "conflicting_traits": [
            "Greedy",
            "Jealous",
            "Gourmand"
        ],
        "disabled_work_types": [],
        "disabled_work_tags": "None"
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-12T10:00:00.0000000Z"
}


GET
/api/v1/time-assignments

Получает список всех доступных назначений времени, которые могут быть установлены для поселенцев. Эти назначения определяют распорядок дня, такой как "Сон", "Работа", "Радость" и т. д.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/time-assignments'

Response:

{
    "success": true,
    "data": [
        { "name": "Anything" },
        { "name": "Work" },
        { "name": "Joy" },
        { "name": "Sleep" },
        { "name": "Meditate" }
    ],
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-12T10:00:00.0000000Z"
}


GET
/api/v1/outfits

Получает список всех определенных наборов одежды (outfits) в игре, включая их названия и связанные фильтры предметов. Наборы одежды определяют, какую одежду будут носить поселенцы на основе таких критериев, как тип, качество и очки здоровья.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/outfits'

Response:

{
    "success": true,
    "data": [
        {
            "Id": 1,
            "Label": "Worker",
            "Filter": {
                "allowed_thing_def_names": [
                    "Apparel_CowboyHat",
                    "Apparel_BowlerHat",
                    "Apparel_TribalHeaddress",
                    "Apparel_Tuque",
                ],
                "disallowed_special_filter_def_names": ["AllowBurned"],
                "allowed_hit_points_min": 0.5,
                "allowed_hit_points_max": 1.0,
                "allowed_hit_points_configurable": true,
                "allowed_qualities_configurable": true
            }
        },
        {
            "id": 2,
            "label": "soldier",
            "filter": {
                "allowed_thing_def_names": [],
                "disallowed_special_filter_def_names": ["AllowSmeltable"],
                "allowed_hit_points_min": 0.8,
                "allowed_hit_points_max": 1.0,
                "allowed_quality_min": "good",
                "allowed_quality_max": "legendary",
                "allowed_hit_points_configurable": true,
                "allowed_qualities_configurable": true
            }
        }
    ],
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-12T10:00:00.0000000Z"
}


GET
/api/v1/work-list

Получает исчерпывающий список всех определенных типов работ в игре. Типы работ классифицируют задачи, которые могут выполнять поселенцы, такие как "Переноска", "Приготовление пищи", "Добыча ресурсов", "Стрижка растений" и т. д.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/work-list'

Response:

{
    "success": true,
    "data": {
        "work": [
            "Firefighter",
            "Patient",
            "Doctor",
            "PatientBedRest",
            "BasicWorker",
            "Warden",
            "Handling",
            "Cooking",
            "Hunting",
            "Construction",
            "Growing",
            "Mining",
            "PlantCutting",
            "Smithing",
            "Tailoring",
            "Art",
            "Crafting",
            "Hauling",
            "Cleaning",
            "Research",
            "Childcare",
            "DarkStudy"
        ]
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-12T10:00:00.0000000Z"
}

Pawn Info Controller

Pawn Info Controller предоставляет подробную информацию о пешках.


GET
/api/v1/pawns/details

Получает подробную информацию о пешке.


GET
/api/v1/pawns/inventory

Получает инвентарь пешки.

Социальное взаимодействие

Контроллер Pawn Social Controller управляет межличностными отношениями, взаимодействиями и мнениями между пешками. Он позволяет просматривать логи общения, управлять родственными связями и принудительно вызывать социальные взаимодействия.


GET
/api/v1/game/defs/interactions

Возвращает список всех доступных в игре типов социальных взаимодействий (например, Chitchat, Insult, KindWords).

Пример:

curl --request GET \
--url http://localhost:8765/api/v1/game/defs/interactions

Ответ:

{
    "success": true,
    "data": [
        {
            "def_name": "Chitchat",
            "label": "болтовня",
            "description": "Обычный разговор."
        },
        {
            "def_name": "Insult",
            "label": "оскорбление",
            "description": "Прямое оскорбление."
        }
    ]
}


GET
/api/v1/pawns/interactions

Получает готовность конкретной пешки к взаимодействию в реальном времени, включая текущий статус перезарядки.

Пример:

curl --request GET \
--url 'http://localhost:8765/api/v1/pawns/interactions?pawn_id=779'

Ответ:

{
    "success": true,
    "data": {
        "can_interact": true,
        "last_interaction_ticks": 45000,
        "cooldown_ticks": 0,
        "cooldown_days": 0.0
    }
}


GET
/api/v1/pawns/interactions/log

Возвращает историю последних взаимодействий для конкретной пешки. Поддерживает необязательный параметр limit (по умолчанию 50).

Пример:

curl --request GET \
--url 'http://localhost:8765/api/v1/pawns/interactions/log?pawn_id=779&limit=5'

Ответ:

{
    "success": true,
    "data": {
        "pawn_id": 779,
        "interactions": [
            {
                "initiator_id": 779,
                "initiator_name": "Lumi",
                "recipient_id": 780,
                "recipient_name": "Blake",
                "interaction_def_name": "Chitchat",
                "interaction_label": "болтовня",
                "text": "Люми и Блейк поговорили о метеорологии.",
                "ticks": 152000,
                "time_ago": "2 часа назад"
            }
        ],
        "count": 1
    }
}


GET
/api/v1/pawns/relations

Возвращает все установленные семейные и романтические отношения для этой пешки (например, родитель, ребенок, супруг, любовник).

Пример:

curl --request GET \
--url 'http://localhost:8765/api/v1/pawns/relations?pawn_id=779'

Ответ:

{
    "success": true,
    "data": {
        "pawn_id": 779,
        "relations": [
            {
                "other_pawn_id": 780,
                "other_pawn_name": "Blake",
                "relation_def_name": "Spouse",
                "relation_label": "муж"
            }
        ]
    }
}


GET
/api/v1/pawns/opinions

Возвращает список числовых мнений этой пешки обо всех остальных поселенцах, включая разбивку мыслей и воспоминаний, влияющих на оценку.

Пример:

curl --request GET \
--url 'http://localhost:8765/api/v1/pawns/opinions?pawn_id=779'

Ответ:

{
    "success": true,
    "data": [
        {
            "target_pawn_id": 780,
            "target_pawn_name": "Blake",
            "opinion": 45,
            "breakdown": [
                {
                    "thought_def_name": "Pretty",
                    "label": "красивый(ая)",
                    "score": 20.0
                }
            ]
        }
    ]
}


POST
/api/v1/pawns/interactions/force

Принудительно вызывает немедленное социальное взаимодействие между двумя пешками.

Пример:

curl --request POST \
--url http://localhost:8765/api/v1/pawns/interactions/force \
--header 'content-type: application/json' \
--data '{
    "initiator_id": 779,
    "recipient_id": 780,
    "interaction_def_name": "Chitchat"
}'

Запрос:

{
    "initiator_id": 779,
    "recipient_id": 780,
    "interaction_def_name": "Chitchat"
}

Ответ:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2026-04-14T12:00:00.000Z"
}


POST
/api/v1/pawns/relations/add

Мгновенно создает постоянную социальную связь (отношение) между двумя пешками.

Пример:

curl --request POST \
--url http://localhost:8765/api/v1/pawns/relations/add \
--header 'content-type: application/json' \
--data '{
    "pawn1_id": 779,
    "pawn2_id": 780,
    "relation_def_name": "Lover"
}'

Запрос:

{
    "pawn1_id": 779,
    "pawn2_id": 780,
    "relation_def_name": "Lover"
}

Ответ:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2026-04-14T12:00:00.000Z"
}


DELETE
/api/v1/pawns/relations/remove

Разрывает определенную социальную связь между двумя пешками.

Пример:

curl --request DELETE \
--url 'http://localhost:8765/api/v1/pawns/relations/remove?pawn1_id=779&pawn2_id=780&relation_def_name=Lover'

Ответ:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2026-04-14T12:00:00.000Z"
}

Pawn Edit Controller

Pawn Edit Controller позволяет напрямую изменять (Mutation) данные сущностей. В отличие от стандартного контроллера Pawn, этот позволяет перезаписывать фундаментальные свойства персонажа.

Экспериментальная функция

Этот контроллер API является экспериментальным.

Общие случаи использования:

  • Resurrection (Воскрешение) / Heal (Лечение)
  • Set Skill Level (Установка уровня навыка)
  • Add/Remove Traits (Добавление/удаление черт)
  • Teleport (Телепортация)

POST
/api/v1/pawn/edit/basic

Редактирует основную информацию о пешке, такую как имя, пол и возраст.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/basic \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "nick_name": "Ace",
    "gender": "Male",
    "biological_age": 25
}'

Request:

{
    "pawn_id": 148,
    "name": "Ace",
    "first_name": "John",
    "last_name": "Doe",
    "nick_name": "Ace",
    "gender": "Male",
    "biological_age": 25,
    "chronological_age": 150
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}


POST
/api/v1/pawn/edit/health

Редактирует здоровье пешки, позволяя залечивать раны или излечивать болезни.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/health \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "heal_all_injuries": true,
    "restore_body_parts": true,
    "remove_all_diseases": true
}'

Request:

{
    "pawn_id": 148,
    "heal_all_injuries": true,
    "restore_body_parts": true,
    "remove_all_diseases": true
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}


POST
/api/v1/pawn/edit/needs

Редактирует потребности пешки, такие как голод, отдых и настроение. Значения варьируются от 0.0 до 1.0.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/needs \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "food": 1.0,
    "rest": 1.0,
    "mood": 1.0
}'

Request:

{
    "pawn_id": 148,
    "food": 1.0,
    "rest": 1.0,
    "mood": 1.0
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}


POST
/api/v1/pawn/edit/skills

Редактирует навыки пешки, устанавливая уровень для указанных навыков.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/skills \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 2356,
    "skills": [
        { "skill_name": "Shooting", "level": 20, "passion": 3 }
    ]
}'

Request:

{
    "pawn_id": 2356,
    "skills": [
        {
            "skill_name": "Shooting",
            "level": 20,
            "passion": 3
        },
        {
            "skill_name": "Medicine",
            "level": 15,
            "passion": 2
        },
        {
            "skill_name": "Melee",
            "level": 0,
            "passion": 1
        }
    ]
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T12:36:12.432366Z"
}


POST
/api/v1/pawn/edit/traits

Редактирует черты характера пешки, позволяя добавлять или удалять их.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/traits \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "add_traits": [{ "trait_name": "Cannibal", "degree": 0 }],
    "remove_traits": ["Wimp"]
}'

Request:

{
    "pawn_id": 148,
    "add_traits": [
        {
            "trait_name": "Cannibal",
            "degree": 0
        },
        {
            "trait_name": "Industrious",
            "degree": 0
        }
    ],
    "remove_traits": [
        "Wimp",
        "Pyromaniac"
    ]
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}


POST
/api/v1/pawn/edit/inventory

Редактирует инвентарь пешки, позволяя добавлять или удалять предметы.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/inventory \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "clear_inventory": true,
    "add_items": [{ "def_name": "MealSimple", "count": 10 }]
}'

Request:

{
    "pawn_id": 148,
    "drop_inventory": false,
    "clear_inventory": true,
    "add_items": [
        {
            "def_name": "MealSimple",
            "count": 10
        },
        {
            "def_name": "MedicineHerbal",
            "count": 5
        }
    ]
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}


POST
/api/v1/pawn/edit/apparel

Редактирует одежду пешки. Полезно для раздевания заключенных или разоружения врагов.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/apparel \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "drop_apparel": true,
    "drop_weapons": true
}'

Request:

{
    "pawn_id": 148,
    "drop_apparel": true,
    "drop_weapons": true
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}


POST
/api/v1/pawn/edit/status

Редактирует статус пешки, например, призыв (drafting), убийство или воскрешение.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/status \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "is_drafted": true
}'

Request:

{
    "pawn_id": 148,
    "is_drafted": true,
    "kill": false,
    "resurrect": false
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}


POST
/api/v1/pawn/edit/position

Редактирует позицию пешки, телепортируя её в новое место.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/position \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "position": { "x": 100, "z": 100 }
}'

Request:

{
    "pawn_id": 148,
    "map_id": "0",
    "position": {
        "x": 100,
        "y": 0,
        "z": 100
    }
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}


POST
/api/v1/pawn/edit/faction

Редактирует фракцию пешки, например, делая заключенного поселенцем.

curl --request POST \
--url http://localhost:8765/api/v1/pawn/edit/faction \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 148,
    "make_colonist": true
}'

Request:

{
    "pawn_id": 148,
    "set_faction": "PlayerColony",
    "make_colonist": true,
    "make_prisoner": false,
    "release_prisoner": false
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-31T14:05:16.1755723Z"
}

Pawn Job Controller

Сосредоточен на переопределении стандартного поведения ИИ путем принуждения пешек к выполнению конкретных задач.

Scope

Этот контроллер имеет дело с немедленными действиями и прямым назначением работ. Для настройки долгосрочных приоритетов работы, расписаний или призыва см. PawnEditController или PawnController.

Возможности:

  • Принуждение пешки к выполнению определенного действия (переноска, добыча ресурсов, охота).
  • Прямое назначение медицинской помощи путем назначения врачей пациентам.
  • Принуждение раненых или больных пешек занять определенные медицинские кровати.

POST
/api/v1/pawn/job

Назначить пешке определенную работу по имени её JobDef. Вы можете опционально указать целевой объект (например, скалу для добычи или предмет для переноски) или целевую позицию на карте.

Поиск JobDefs

Вы можете получить полный, актуальный список всех доступных определений работ в вашей текущей игре (включая добавленные модами), сделав GET-запрос к конечной точке /api/v1/def/all и изучив массив job_defs.

Текущие ограничения работы

«Под капотом» задачи RimWorld могут требовать до трех целей (targetA, targetB, targetC). В настоящее время эта конечная точка поддерживает только задачи с одной целью (сопоставляется с targetA). Задачи, требующие нескольких целей (например, переноска предмета на конкретный склад), пока не поддерживаются. (Совет: посмотрите класс Verse.JobMaker в исходном коде RimWorld, чтобы увидеть различные перегрузки MakeJob и то, как задачи создаются и объединяются внутри).

Примеры поддерживаемых в данный момент JobDef:

  • Goto (Передвижение/путешествие)
  • AttackMelee (Ближний бой)
  • ManTurret (Управление турелью)
  • LayDown (Сон/отдых)
  • PickupToHold (Подбор предметов для переноски)
  • Clean (Уборка грязи)
  • PlaceNoCostFrame (Размещение строительных чертежей)
  • TendEntity (Уход за сущностями)
  • CastJump (Прыжок/использование способностей)
  • StandAndStare (Бездействие)
  • Meditate (Медитация)

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/pawn/job' \
--header 'content-type: application/json' \
--data '{
    "pawn_id": 123,
    "job_def": "Mine",
    "target_thing_id": 456
}'

Request:

{
    "pawn_id": 123,
    "job_def": "Mine",
    "target_thing_id": 456,
    "target_position": {"x": 10, "y": 0, "z": 15}
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2026-03-28T15:00:00.0000000Z"
}


POST
/api/v1/pawn/medical/tend

Назначить врача для ухода за конкретным пациентом. Если doctor_pawn_id опущен, игра автоматически найдет и назначит лучшего доступного врача на основе навыка Медицины.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/pawn/medical/tend' \
--header 'content-type: application/json' \
--data '{
    "patient_pawn_id": 123,
    "doctor_pawn_id": 456
}'

Request:

{
    "patient_pawn_id": 123,
    "doctor_pawn_id": 456
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2026-03-28T15:05:00.0000000Z"
}


POST
/api/v1/pawn/medical/bed-rest

Принудительно отправить пешку на постельный режим. Вы можете опционально указать конкретную кровать, передав её bed_building_id. Если он опущен, пешка сама найдет лучшую доступную медицинскую кровать.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/pawn/medical/bed-rest' \
--header 'content-type: application/json' \
--data '{
    "patient_pawn_id": 123,
    "bed_building_id": 789
}'

Request:

{
    "patient_pawn_id": 123,
    "bed_building_id": 789
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2026-03-28T15:10:00.0000000Z"
}

Pawn Spawn Controller

Pawn Spawn Controller используется для создания и появления новых пешек в игровом мире.


POST
/api/v1/pawn/spawn

Создать новую пешку.

Request:

{
    "pawn_kind": "Mercenary_Gunner",
    "faction": "OutlanderCivil",
    "position": {"x": 11, "y": 0, "z": 11},
    "biological_age": 25
}

Response:

{
    "success":true,
    "data": {
        "pawn_id":39473,
        "name":"Nitro"
    },
    "errors":[],"warnings":[],
    "timestamp":"2025-12-31T12:32:16.5760065Z"
}

Lord Controller

Lord Controller отвечает за управление лордами ИИ (AI Lords), которые являются высокоуровневыми структурами ИИ, управляющими группами пешек.


POST
/api/v1/lords/create

Создать новый Lord ИИ с указанной задачей.

Request:

{
    "faction": "AncientsHostile",
    "pawn_ids": [39395],
    "job_type": "AssaultThings",
    "target_ids": [39387]
}

Response:

{
    "success":true,
    "data":
    {
        "lord_id":0,
        "member_count":1
    },
    "errors":[],
    "warnings":[],
    "timestamp":"2025-12-31T11:39:54.3651293Z"
}