Files
draugnorak/src/menus/equipment_menu.nvgt
2026-01-21 20:01:04 -05:00

112 lines
4.0 KiB
Plaintext

// Equipment menu system
// Functions for managing equipment (weapons and clothing)
void check_equipment_menu() {
if (key_pressed(KEY_E)) {
// Check if player has any equipment
if (inv_spears == 0 && inv_axes == 0 && inv_slings == 0 &&
inv_skin_hats == 0 && inv_skin_gloves == 0 && inv_skin_pants == 0 &&
inv_skin_tunics == 0 && inv_moccasins == 0 && inv_skin_pouches == 0) {
speak_with_history("Nothing to equip.", true);
} else {
run_equipment_menu();
}
}
}
void run_equipment_menu() {
speak_with_history("Equipment menu.", true);
int selection = 0;
string[] options;
int[] equipment_types;
// Build menu dynamically based on what player has
if (inv_spears > 0) {
string status = equipment_is_equipped(EQUIP_SPEAR) ? " (equipped)" : "";
options.insert_last("Spear" + status);
equipment_types.insert_last(EQUIP_SPEAR);
}
if (inv_slings > 0) {
string status = equipment_is_equipped(EQUIP_SLING) ? " (equipped)" : "";
options.insert_last("Sling" + status);
equipment_types.insert_last(EQUIP_SLING);
}
if (inv_axes > 0) {
string status = equipment_is_equipped(EQUIP_AXE) ? " (equipped)" : "";
options.insert_last("Stone Axe" + status);
equipment_types.insert_last(EQUIP_AXE);
}
if (inv_skin_hats > 0) {
string status = equipment_is_equipped(EQUIP_HAT) ? " (equipped)" : "";
options.insert_last("Skin Hat" + status);
equipment_types.insert_last(EQUIP_HAT);
}
if (inv_skin_gloves > 0) {
string status = equipment_is_equipped(EQUIP_GLOVES) ? " (equipped)" : "";
options.insert_last("Skin Gloves" + status);
equipment_types.insert_last(EQUIP_GLOVES);
}
if (inv_skin_pants > 0) {
string status = equipment_is_equipped(EQUIP_PANTS) ? " (equipped)" : "";
options.insert_last("Skin Pants" + status);
equipment_types.insert_last(EQUIP_PANTS);
}
if (inv_skin_tunics > 0) {
string status = equipment_is_equipped(EQUIP_TUNIC) ? " (equipped)" : "";
options.insert_last("Skin Tunic" + status);
equipment_types.insert_last(EQUIP_TUNIC);
}
if (inv_moccasins > 0) {
string status = equipment_is_equipped(EQUIP_MOCCASINS) ? " (equipped)" : "";
options.insert_last("Moccasins" + status);
equipment_types.insert_last(EQUIP_MOCCASINS);
}
if (inv_skin_pouches > 0) {
string status = equipment_is_equipped(EQUIP_POUCH) ? " (equipped)" : "";
options.insert_last("Skin Pouch" + status);
equipment_types.insert_last(EQUIP_POUCH);
}
while(true) {
wait(5);
menu_background_tick();
if (key_pressed(KEY_ESCAPE)) {
speak_with_history("Closed.", true);
break;
}
if (key_pressed(KEY_DOWN)) {
selection++;
if (selection >= options.length()) selection = 0;
speak_with_history(options[selection], true);
}
if (key_pressed(KEY_UP)) {
selection--;
if (selection < 0) selection = options.length() - 1;
speak_with_history(options[selection], true);
}
int slot_index = get_quick_slot_key();
if (slot_index != -1) {
int equip_type = equipment_types[selection];
quick_slots[slot_index] = equip_type;
speak_with_history(get_equipment_name(equip_type) + " set to slot " + slot_index + ".", true);
}
if (key_pressed(KEY_RETURN)) {
int equip_type = equipment_types[selection];
if (equipment_is_equipped(equip_type)) {
unequip_equipment_type(equip_type);
speak_with_history(get_equipment_name(equip_type) + " unequipped.", true);
} else {
equip_equipment_type(equip_type);
speak_with_history(get_equipment_name(equip_type) + " equipped.", true);
}
update_max_health_from_equipment();
break;
}
}
}