Идея в реолезуема частично.
Для марадёрства оружия в бою я у себя уже сделал. Даже где-то это выкладывал.
dplmc_key_proba = (
0, 0, 0,
[(key_clicked, key_z),
],
[
(get_player_agent_no,":agent_id"),
(agent_get_wielded_item,":item_id",":agent_id", 0),
(troop_get_inventory_slot, ":itm_0", "trp_player", 0),
(troop_get_inventory_slot, ":itm_1", "trp_player", 1),
(troop_get_inventory_slot, ":itm_2", "trp_player", 2),
(troop_get_inventory_slot, ":itm_3", "trp_player", 3),
(try_begin),
(ge, ":item_id", 0),
(troop_get_inventory_capacity, ":max_num", "trp_player"),
(try_for_range, ":num", 9, ":max_num"),
(troop_get_inventory_slot, ":iii", "trp_player", ":num"),
(try_begin),
(eq, ":iii", -1),
(try_begin),
(eq, ":item_id", ":itm_0"),
(troop_set_inventory_slot, "trp_player", 0, -1),
(else_try),
(eq, ":item_id", ":itm_1"),
(troop_set_inventory_slot, "trp_player", 1, -1),
(else_try),
(eq, ":item_id", ":itm_2"),
(troop_set_inventory_slot, "trp_player", 2, -1),
(else_try),
(eq, ":item_id", ":itm_3"),
(troop_set_inventory_slot, "trp_player", 3, -1),
(try_end),
(troop_add_item, "trp_player", ":item_id"),
(agent_unequip_item, ":agent_id", ":item_id"),
(assign, ":max_num", 0),
(try_end),
(try_end),
(try_end),
])
Достаточно прописать его в сцене и можно отправлять оружие в инвентарь, нажав клавишу "Z".
Для щита можно сделать аналогично для другой клавиши (под левую руку).
Для снятия шмота, есть небольшая проблемма с идентификацией конкретного мёртвого агента.
Проще снимать доспехи с пленных в диалоге.