Files
2026-02-24 09:41:01 +01:00

110 lines
2.6 KiB
Plaintext

//? Tool Behaviours - make these human readable!
//* Engineering
#define TOOL_CROWBAR "crowbar"
#define TOOL_MULTITOOL "multitool"
#define TOOL_SCREWDRIVER "screwdriver"
#define TOOL_WIRECUTTER "wirecutter"
#define TOOL_WRENCH "wrench"
#define TOOL_WELDER "welder"
#define TOOL_ANALYZER "analyzer"
//* Mining
#define TOOL_MINING "mining"
#define TOOL_SHOVEL "shovel"
//* Surgery
#define TOOL_RETRACTOR "retractor"
#define TOOL_HEMOSTAT "hemostat"
#define TOOL_CAUTERY "cautery"
#define TOOL_DRILL "drill"
#define TOOL_SCALPEL "scalpel"
#define TOOL_SAW "saw"
//* Glassworking
#define TOOL_BLOW "blowing-rod"
#define TOOL_GLASS_CUT "glass-kit"
#define TOOL_BONESET "bone-setter"
/**
* Hardcoded tool behaviors.
*/
GLOBAL_REAL_VAR(tool_behaviors_hardcoded) = list(
// engineering
TOOL_CROWBAR,
TOOL_MULTITOOL,
TOOL_SCREWDRIVER,
TOOL_WIRECUTTER,
TOOL_WRENCH,
TOOL_WELDER,
TOOL_ANALYZER,
// mining
TOOL_MINING,
TOOL_SHOVEL,
// surgery
TOOL_RETRACTOR,
TOOL_HEMOSTAT,
TOOL_CAUTERY,
TOOL_DRILL,
TOOL_SCALPEL,
TOOL_SAW,
// glassworking
TOOL_BLOW,
TOOL_GLASS_CUT,
TOOL_BONESET,
)
/**
* Remaps for tool behavior names.
*/
GLOBAL_REAL_LIST(tool_behavior_name_remaps) = list()
/**
* Gets the human-friendly name of a tool behavior.
*/
/proc/tool_behavior_name(behavior)
return global.tool_behavior_name_remaps[behavior] || behavior
/// Yes, this is a real global. No, you shouldn't touch this for no reason.
/// Add tools to this when they get states in the default icon file for:
/// - neutral (no append)
/// - forwards (append _up)
/// - backwards (append _down)
GLOBAL_REAL_VAR(_dyntool_image_states) = list(
null = "unknown",
TOOL_CROWBAR = "crowbar",
TOOL_SCREWDRIVER = "screwdriver",
)
//? Tool usage flags
// ----------- broad -----------------------
/// repairing
#define TOOL_USAGE_REPAIR (1<<0)
/// initial construction
#define TOOL_USAGE_CONSTRUCT (1<<1)
/// deconstruct
#define TOOL_USAGE_DECONSTRUCT (1<<2)
// ----------- kind ------------------------
/// superstructure, making / breaking turfs, etc
#define TOOL_USAGE_BUILDING_SUPERSTRUCTURE (1<<3)
/// making railings, catwalks, wires, etc
#define TOOL_USAGE_BUILDING_FRAMEWORK (1<<4)
/// making tables, detailed furnishings, etc
#define TOOL_USAGE_BUILDING_FURNISHINGS (1<<5)
//? tool_locked var
/// unlocked - use dynamic tool system
#define TOOL_LOCKING_DYNAMIC 1
/// use static behavior
#define TOOL_LOCKING_STATIC 2
/// automatically, if we only have one dynamic behavior, use that
#define TOOL_LOCKING_AUTO 3
//? Tool directions - used as hints.
#define TOOL_DIRECTION_FORWARDS "forwards"
#define TOOL_DIRECTION_BACKWARDS "backwards"
#define TOOL_DIRECTION_NEUTRAL "neutral"