# Forge Server Common ## Overview The common addon provides shared SQF utilities used by server-side Forge addons. It contains lightweight helpers only; gameplay domain state belongs in the specific domain addons or the Rust extension. ## Dependencies - `forge_server_main` ## Main Components - `fnc_baseStore.sqf` provides shared hash-map object behavior such as JSON conversion. - `fnc_eventBus.sqf` provides a framework-wide in-process event bus for cross-addon notifications. - `fnc_log.sqf` standardizes server log messages. - `fnc_getPlayer.sqf` resolves online players by UID. - `fnc_formatNumber.sqf` formats numeric values for notifications and UI text. - `fnc_generateHash.sqf` and `fnc_generateSecureData.sqf` provide hashing and random data helpers. - `fnc_timeToSeconds.sqf` converts time values into seconds. ## Notes Keep this addon free of domain-specific behavior. If a helper needs actor, bank, org, task, store, or CAD state, it belongs in that addon instead. ## Event Bus The event bus is initialized as `forge_server_common_EventBus` during store bootstrap. It is synchronous and in-process: listeners run immediately when an event is emitted. ```sqf private _token = EGVAR(common,EventBus) call ["on", [ "task.completed", { params ["_event"]; ["INFO", format ["Task completed: %1", _event getOrDefault ["taskID", ""]]] call EFUNC(common,log); }, "example" ]]; EGVAR(common,EventBus) call ["emit", [ "task.completed", createHashMapFromArray [["taskID", "task_001"]], createHashMapFromArray [["source", "task"]] ]]; EGVAR(common,EventBus) call ["off", [_token]]; ```