112 lines
4.0 KiB
Plaintext
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;
|
|
}
|
|
}
|
|
}
|