enshwick 1.0.0-alpha.4

The Enshwick Loader's modding API for Enshrouded: the one crate mods are written against
Documentation
//! The ids the API asks the loader for engine facts by; the loader maps each
//! to the game's names and offsets, so no engine name is compiled into a mod.

/// Declares each id as a constant and lists them all in [`ALL`].
macro_rules! ids {
    ($($(#[$meta:meta])* $name:ident = $id:literal;)*) => {
        $($(#[$meta])* pub(crate) const $name: &str = $id;)*

        /// Every id, for the loader's test that each one resolves.
        pub const ALL: &[&str] = &[$($id),*];
    };
}

ids! {
    HIT_EVENT = "hit_event";
    HIT_ATTACKER = "hit_event.attacker";
    HIT_TARGET = "hit_event.target";
    HIT_SOURCE = "hit_event.source";
    HIT_ROOT_TARGET = "hit_event.root_target";
    HIT_WEAPON = "hit_event.weapon";
    HIT_HEALTH_CHANGE = "hit_event.health_change";
    HIT_STAMINA_CHANGE = "hit_event.stamina_change";
    HIT_DAMAGE_TYPES = "hit_event.damage_types";
    HIT_ATTACK = "hit_event.attack";
    HIT_TARGET_FACTION = "hit_event.target_faction";
    DIED_EVENT = "died_event";
    DIED_ENTITY = "died_event.entity";
    HIT_HISTORY = "hit_history";
    HIT_HISTORY_LAST_INDEX = "hit_history.last_index";
    HIT_HISTORY_ENTRIES = "hit_history.entries";
    HIT_HISTORY_END = "hit_history.end";
    EXPERIENCE_CREDIT = "experience_credit";
    EXPERIENCE_CREDIT_LAST_PLAYER = "experience_credit.last_player";
    LEVEL_GAINED_EVENT = "level_gained_event";
    LEVEL_GAINED_PLAYER = "level_gained_event.player";
    LEVEL_GAINED_LEVEL = "level_gained_event.level";
    EXPERIENCE_GAINED_EVENT = "experience_gained_event";
    EXPERIENCE_GAINED_PLAYER = "experience_gained_event.player";
    EXPERIENCE_GAINED_AMOUNT = "experience_gained_event.amount";
    EXPERIENCE_GAINED_SOURCE = "experience_gained_event.source";
    CRAFT_REQUESTED_EVENT = "craft_requested_event";
    CRAFT_REQUESTED_PLAYER = "craft_requested_event.player";
    CRAFT_REQUESTED_STATION = "craft_requested_event.station";
    CRAFT_REQUESTED_RECIPE = "craft_requested_event.recipe";
    CRAFT_REQUESTED_AMOUNT = "craft_requested_event.amount";
    CRAFTED_EVENT = "crafted_event";
    CRAFTED_WORKSHOP = "crafted_event.workshop";
    CRAFTED_RECIPE = "crafted_event.recipe";
    INTERACTED_EVENT = "interacted_event";
    INTERACTED_PLAYER = "interacted_event.player";
    INTERACTED_TARGET = "interacted_event.target";
    INTERACTED_OFFER = "interacted_event.offer";
    BUILT_EVENT = "built_event";
    BUILT_PLAYER = "built_event.player";
    BUILT_POSITION = "built_event.position";
    BUILT_VOLUME_MIN = "built_event.volume_min";
    BUILT_VOLUME_MAX = "built_event.volume_max";
    BUILT_MATERIAL = "built_event.material";
    BUILT_ITEM = "built_event.item";
    TORN_DOWN_EVENT = "torn_down_event";
    TORN_DOWN_PLAYER = "torn_down_event.player";
    TORN_DOWN_POSITION = "torn_down_event.position";
    TORN_DOWN_VOLUME_MIN = "torn_down_event.volume_min";
    TORN_DOWN_VOLUME_MAX = "torn_down_event.volume_max";
    TORN_DOWN_MATERIAL = "torn_down_event.material";
    PICKED_UP_EVENT = "picked_up_event";
    PICKED_UP_PLAYER = "picked_up_event.player";
    PICKED_UP_POSITION = "picked_up_event.position";
    PICKED_UP_VOLUME_MIN = "picked_up_event.volume_min";
    PICKED_UP_VOLUME_MAX = "picked_up_event.volume_max";
    PICKED_UP_MATERIAL = "picked_up_event.material";
    PICKED_UP_ENTITY = "picked_up_event.entity";
    ALTAR_USED_EVENT = "altar_used_event";
    ALTAR_USED_PLAYER = "altar_used_event.player";
    ALTAR_USED_ALTAR = "altar_used_event.altar";
    ALTAR_USED_ACTION = "altar_used_event.action";
    LOOT_OPENED_EVENT = "loot_opened_event";
    LOOT_OPENED_PLAYER = "loot_opened_event.player";
    LOOT_OPENED_CONTAINER = "loot_opened_event.container";
    LOOT_OPENED_TAKE_ALL = "loot_opened_event.take_all";
    EQUIPMENT_CHANGED_EVENT = "equipment_changed_event";
    EQUIPMENT_CHANGED_PLAYER = "equipment_changed_event.player";
    EQUIPMENT_CHANGED_SLOT = "equipment_changed_event.slot";
    REVIVED_EVENT = "revived_event";
    REVIVED_PLAYER = "revived_event.player";
    REVIVED_BY = "revived_event.by";
    WORLD_TRANSFORM_POSITION = "world_transform.position";
    WORLD_TRANSFORM_ORIENTATION = "world_transform.orientation";
    WORLD_TRANSFORM_SCALE = "world_transform.scale";
    NPC_COMMAND_EVENT = "npc_command_event";
    NPC_COMMAND_KIND = "npc_command_event.kind";
    NPC_COMMAND_NPC = "npc_command_event.npc";
    NPC_COMMAND_TARGET = "npc_command_event.target";
    SET_TOGGLE_STATE_EVENT = "set_toggle_state_event";
    SET_TOGGLE_SENDER = "set_toggle_state_event.sender";
    SET_TOGGLE_SIGNAL = "set_toggle_state_event.signal";
    SET_TOGGLE_STATE = "set_toggle_state_event.state";
    ADD_THREAT_TARGET_EVENT = "add_threat_target_event";
    ADD_THREAT_ATTACKER = "add_threat_target_event.attacker";
    ADD_THREAT_TARGET = "add_threat_target_event.target";
    ADD_THREAT_THREAT = "add_threat_target_event.threat";
    UI_PING_EVENT = "ui_ping_event";
    UI_PING_SENDER = "ui_ping_event.sender";
    UI_PING_POSITION = "ui_ping_event.position";
    ITEM_INFO = "item_info";
    ITEM_INFO_ID = "item_info.id";
    ITEM_INFO_OBJECT = "item_info.object";
    ITEM_INFO_NAME = "item_info.name";
    ITEM_INFO_DESCRIPTION = "item_info.description";
    ITEM_INFO_FLAGS = "item_info.flags";
    ITEM_INFO_PID_ENTITY = "item_info.pid_entity";
    ITEM_INFO_UI_VALUES = "item_info.ui_values";
    ITEM_INFO_ICON_IMAGE = "item_info.icon_image";
    ITEM_INFO_PLACED_ENTITY = "item_info.placed_entity";
    #[expect(dead_code, reason = "listed only so the loader's test resolves it")]
    ITEM_INFO_EQUIPMENT_SLOT = "item_info.equipment_slot";
    #[expect(dead_code, reason = "listed only so the loader's test resolves it")]
    EQUIPMENT_SLOT = "equipment_slot";
    ITEM_STAT = "item_stat";
    ITEM_STAT_LABEL = "item_stat.label";
    ITEM_STAT_FORMAT = "item_stat.format";
    ITEM_STAT_VALUE = "item_stat.value";
    ITEM_STAT_SIGNED = "item_stat.signed";
    ITEM_REGISTRY = "item_registry";
    ITEM_REGISTRY_REFS = "item_registry.refs";
    ITEM_REGISTRY_NAMES = "item_registry.names";
    TEMPLATE = "template";
    TEMPLATE_COMPONENTS = "template.components";
    TEMPLATE_COLLECTION = "template_collection";
    TEMPLATE_COLLECTION_TEMPLATES = "template_collection.templates";
    FUEL_SETUP = "fuel_setup";
    FUEL_SETUP_MAX = "fuel_setup.max";
    FUEL_SETUP_START = "fuel_setup.start";
    CRAFTING = "crafting";
    CRAFTING_WORKSHOP = "crafting.workshop";
    CRAFTING_WORKSHOP_ID = "crafting.workshop_id";
    CRAFTING_INTERACTION = "crafting_interaction";
    CRAFTING_INTERACTION_WORKSHOP = "crafting_interaction.workshop";
    CRAFTING_INTERACTION_WORKSHOP_ID = "crafting_interaction.workshop_id";
    CLIENT_CRAFTING_INTERACTION = "client_crafting_interaction";
    CLIENT_CRAFTING_INTERACTION_WORKSHOP_ID = "client_crafting_interaction.workshop_id";
    WORKSHOP_REGISTRY = "workshop_registry";
    WORKSHOP_REGISTRY_WORKSHOPS = "workshop_registry.workshops";
    WORKSHOP = "workshop";
    WORKSHOP_GUID = "workshop.guid";
    WORKSHOP_ID = "workshop.id";
    WORKSHOP_NAME = "workshop.name";
    WORKSHOP_ITEM = "workshop.item";
    WORKSHOP_ITEM_REF = "workshop.item_ref";
    WORKSHOP_NPC = "workshop.npc";
    RECIPE_REGISTRY = "recipe_registry";
    RECIPE_REGISTRY_RECIPES = "recipe_registry.recipes";
    RECIPE = "recipe";
    RECIPE_GUID = "recipe.guid";
    RECIPE_ID = "recipe.id";
    RECIPE_WORKSHOP_GUID = "recipe.workshop_guid";
    RECIPE_WORKSHOP = "recipe.workshop";
    RECIPE_INPUT = "recipe.input";
    RECIPE_OUTPUT = "recipe.output";
    RECIPE_COMPLETION = "recipe.completion";
    RECIPE_REQUIRED_PROPS = "recipe.required_props";
    RECIPE_DEBUG_NAME = "recipe.debug_name";
    RECIPE_INGREDIENT = "recipe_ingredient";
    RECIPE_STACK = "recipe_stack";
    RECIPE_STACK_ITEM = "recipe_stack.item";
    RECIPE_STACK_COUNT = "recipe_stack.count";
    UI_IMAGE = "ui_image";
    UI_BUNDLE = "ui_bundle";
    UI_BUNDLE_CRAFTING_MENU = "ui_bundle.crafting_menu";
    CRAFTING_MENU_WORKSHOPS = "crafting_menu.workshops";
    CRAFTING_MENU_TREES = "crafting_menu.trees";
    CRAFTING_MENU_MAX_GROUPS = "crafting_menu.max_groups";
    CRAFTING_MENU_MAX_SETS = "crafting_menu.max_sets";
    CRAFTING_MENU_TREE = "crafting_menu_tree";
    CRAFTING_MENU_TREE_GROUPS = "crafting_menu_tree.groups";
    CRAFTING_MENU_GROUP = "crafting_menu_group";
    CRAFTING_MENU_GROUP_ID = "crafting_menu_group.id";
    CRAFTING_MENU_GROUP_SETS = "crafting_menu_group.sets";
    CRAFTING_MENU_SET = "crafting_menu_set";
    CRAFTING_MENU_SET_ENTRIES = "crafting_menu_set.entries";
    CURRENT_TRANSFORM = "current_transform";
    USED_ITEM = "used_item";
    LABEL = "label";
    INVENTORY_SETUP = "inventory_setup";
    INVENTORY_SETUP_LINKS = "inventory_setup.links";
    INVENTORY_SETUP_CATEGORIES = "inventory_setup.categories";
    INVENTORY_SETUP_INITIALIZED = "inventory_setup.initialized";
    INVENTORY = "inventory";
    ITEM_STACK = "item_stack";
    ITEM_STACK_COUNT = "item_stack.count";
    ITEM_STACK_PIDE = "item_stack.pide";
    DURABILITY = "durability";
    DURABILITY_MAX = "durability.max";
    FUEL = "fuel";
    FUEL_MAX = "fuel.max";
    OWNER = "owner";
    INVENTORY_EMPTY_STATE = "inventory_empty_state";
    INVENTORY_EMPTY_STATE_EMPTY = "inventory_empty_state.empty";
    DESTROY_ON_LOOT = "destroy_on_loot";
    LIFETIME = "lifetime";
    AREA_LOOT = "area_loot";
    AREA_LOOT_EXCLUDE = "area_loot.exclude";
    INTERACTION_OFFER = "interaction_offer";
    INTERACTION_OFFER_ACCEPT_TIME = "interaction_offer.accept_time";
    INTERACTION_OFFER_ACCEPT_GUEST = "interaction_offer.accept_guest";
    INTERACTION_OFFER_DISABLED = "interaction_offer.disabled";
    PLAYER_INPUT = "player_input";
    BOSS = "boss";
    INTERACTION_LOCK = "interaction_lock";
    INTERACTION_LOCK_ITEM = "interaction_lock.item";
    LOOT_SLOT = "loot_slot";
    LOOT_SLOT_ITEM = "loot_slot.item";
    LOOT_SLOT_COUNT = "loot_slot.count";
    ATTRIBUTE_SET_HEALTH = "attribute_set.health";
    ATTRIBUTE_SET_STAMINA = "attribute_set.stamina";
    ATTRIBUTE_SET_MANA = "attribute_set.mana";
    ATTRIBUTE_SET_LEVEL = "attribute_set.level";
    ATTRIBUTE_SET_EXPERIENCE = "attribute_set.experience";
    ATTRIBUTE_SET_FUEL = "attribute_set.fuel";
    ATTRIBUTE_SET_SHROUD = "attribute_set.shroud";
    SKILL_NODES = "skill_nodes";
    SKILL_NODES_IDS = "skill_nodes.ids";
    SKILL_NODES_LEVELS = "skill_nodes.levels";
    BASE_ACTOR = "base_actor";
    BASE_ACTOR_STATE = "base_actor.state";
    NPC = "npc";
    ANIMAL = "animal";
    LOOT_FILL = "loot_fill";
    RESOURCE_NODE = "resource_node";
}