--------------------------
src\packets.c
--------------------------
TbBool process_dungeon_control_packet_clicks(long plyr_idx)
case PSt_PlaceTrap:
1. Find
Code:
if (remove_workshop_item(plyr_idx, 8, player->field_4A5))
dungeon->lvstats.traps_used++;
Replace
Code:
dungeon->lvstats.traps_used++;
--------------------------
TbBool player_sell_trap_at_subtile(long plyr_idx, long stl_x, long stl_y)
2. Find
Code:
if (thing->byte_13 == 0) {
remove_workshop_object_from_player(thing->owner, trap_to_object[thing->model%TRAP_TYPES_COUNT]);
}
sell_value += i;
Replace
Code:
if (thing->byte_13 > 0) {
sell_value += i;
}
--------------------------
src\player_comptask.c
--------------------------
short game_action(char plyr_idx, unsigned short gaction, unsigned short a3,
unsigned short stl_x, unsigned short stl_y, unsigned short param1, unsigned short param2)
case GA_Unk18:
3. Find
Code:
if (remove_workshop_item(plyr_idx, 8, param1))
dungeon->lvstats.traps_used++;
Replace
Code:
dungeon->lvstats.traps_used++;
--------------------------
long task_sell_traps_and_doors(struct Computer2 *comp, struct ComputerTask *ctask)
case TDSC_Trap:
4. Find
Code:
item_sold = true;
value = game.traps_config[model].selling_value;
if (remove_workshop_item(dungeon->owner, 8, model))
{
remove_workshop_object_from_player(dungeon->owner, trap_to_object[model]);
}
Replace
Code:
item_sold = true;
value = game.traps_config[model].selling_value;
4. ??? Need to check the trap shoots (thing->byte_13 > 0) and not to give money (item_sold = false), if the trap is empty