# YAInteraction A DayZ server mod that adds interactable furniture (search for loot) and a two-stage repairable sink (repair, then gather water). ## Features - **Searchable furniture** — medical cabinet, fridge, and vending machine yield random items from weighted, config-defined loot tables. Per-object cooldown. - **Repairable sink** — repair with a `Wrench`/`PipeWrench`, then gather water into a held/inventory container. Per-player cooldown, configurable amount. - **Data-driven** — every interactable is one line in [`YAInteractionConfig`](scripts/4_World/YAInteraction/Config/YAInteractionConfig.c). No target/loot classnames exist anywhere else in the codebase. ## Target objects (v1) | Classname | Action | Loot table | |-----------|--------|-----------| | `StaticObj_Furniture_case_sink_a` | Repair → Gather Water | — | | `StaticObj_Furniture_lekarnicka` | Search | MedTable | | `StaticObj_Furniture_fridge` | Search | FoodTable | | `StaticObj_Furniture_vending_machine` | Search | VendingTable | ## Structure ``` config.cpp / mod.cpp mod + script-module registration, metadata scripts/3_Game shared game-layer placeholder (v2 hooks) scripts/4_World/YAInteraction Config/YAInteractionConfig.c single source of truth (registry + loot tables) YALootTableManager.c weighted pick + item spawning Entities/YAInteractionManager.c registry lookup + repair state Actions/ Search / RepairSink / GatherWater actions YAInteractionInit.c modded BuildingBase action injection scripts/5_Mission mission-layer placeholder (v2 hooks) ``` ## Notes - Cooldowns and sink repair state are tracked in memory and **reset on server restart**. CF persistence hooks are marked with `// TODO (v2)`. - All item and tool classnames are verified against the base game data. ## Adding a new interactable Add one line to `GetInteractables()` in `YAInteractionConfig.c`: ```c m_Interactables.Insert(new YAInteractableEntry("Your_Classname", ACTION_SEARCH, TABLE_FOOD, 7200)); ```