🧠 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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/api/v1/pawns/details
¶
Получает подробную информацию о пешке.
GET
/api/v1/pawns/inventory
¶
/api/v1/pawns/inventory
¶
Получает инвентарь пешки.
Социальное взаимодействие¶
Контроллер Pawn Social Controller управляет межличностными отношениями, взаимодействиями и мнениями между пешками. Он позволяет просматривать логи общения, управлять родственными связями и принудительно вызывать социальные взаимодействия.
GET
/api/v1/game/defs/interactions
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/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"
}