summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/debug.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/debug.cc')
-rw-r--r--crawl-ref/source/debug.cc58
1 files changed, 36 insertions, 22 deletions
diff --git a/crawl-ref/source/debug.cc b/crawl-ref/source/debug.cc
index 35847b7c6a..da8a8a77ad 100644
--- a/crawl-ref/source/debug.cc
+++ b/crawl-ref/source/debug.cc
@@ -45,6 +45,7 @@
#include "fight.h"
#include "files.h"
#include "invent.h"
+#include "it_use2.h"
#include "itemname.h"
#include "itemprop.h"
#include "item_use.h"
@@ -1615,8 +1616,7 @@ static bool debug_fight_simulate(FILE *out, int wskill, int mi, int miss_slot)
int weapon = you.equip[EQ_WEAPON];
const item_def *iweap = weapon != -1? &you.inv[weapon] : NULL;
- if (iweap && iweap->base_type == OBJ_WEAPONS
- && is_range_weapon(*iweap))
+ if (iweap && iweap->base_type == OBJ_WEAPONS && is_range_weapon(*iweap))
return fsim_ranged_combat(out, wskill, mi, iweap, miss_slot);
else
return fsim_melee_combat(out, wskill, mi, iweap);
@@ -1644,19 +1644,24 @@ static std::string fsim_wskill()
static std::string fsim_weapon(int missile_slot)
{
std::string item_buf;
- if (you.equip[EQ_WEAPON] != -1)
+ if (you.equip[EQ_WEAPON] != -1 || missile_slot != -1)
{
- const item_def &weapon = you.inv[ you.equip[EQ_WEAPON] ];
- item_buf = weapon.name(DESC_PLAIN, true);
-
- if (is_range_weapon(weapon))
+ if (you.equip[EQ_WEAPON] != -1)
{
- const int missile =
- missile_slot == -1? get_fire_item_index() :
- missile_slot;
- if (missile < ENDOFPACK)
- return item_buf+" with "+you.inv[missile].name(DESC_PLAIN);
+ const item_def &weapon = you.inv[ you.equip[EQ_WEAPON] ];
+ item_buf = weapon.name(DESC_PLAIN, true);
+ if (is_range_weapon(weapon))
+ {
+ const int missile =
+ missile_slot == -1? get_fire_item_index() :
+ missile_slot;
+ if (missile < ENDOFPACK)
+ return item_buf + " with "
+ + you.inv[missile].name(DESC_PLAIN);
+ }
}
+ else
+ return you.inv[missile_slot].name(DESC_PLAIN);
}
else
{
@@ -1880,22 +1885,31 @@ int fsim_kit_equip(const std::string &kit)
trim_string(missile);
}
- for (int i = 0; i < ENDOFPACK; ++i)
+ if (!weapon.empty())
{
- if (!is_valid_item(you.inv[i]))
- continue;
-
- if (you.inv[i].name(DESC_PLAIN).find(weapon) != std::string::npos)
+ for (int i = 0; i < ENDOFPACK; ++i)
{
- if (i != you.equip[EQ_WEAPON])
+ if (!is_valid_item(you.inv[i]))
+ continue;
+
+ if (you.inv[i].name(DESC_PLAIN).find(weapon) != std::string::npos)
{
- wield_weapon(true, i, false);
if (i != you.equip[EQ_WEAPON])
- return -100;
+ {
+ wield_weapon(true, i, false);
+ if (i != you.equip[EQ_WEAPON])
+ return -100;
+ }
+ break;
}
- break;
}
}
+ else if (you.equip[EQ_WEAPON] != -1)
+ {
+ unwield_item(you.equip[EQ_WEAPON], false);
+ if (you.equip[EQ_WEAPON] != -1)
+ return (-100);
+ }
if (!missile.empty())
{
@@ -1904,7 +1918,7 @@ int fsim_kit_equip(const std::string &kit)
if (!is_valid_item(you.inv[i]))
continue;
- if (you.inv[i].name(DESC_PLAIN).find(missile)!=std::string::npos)
+ if (you.inv[i].name(DESC_PLAIN).find(missile) != std::string::npos)
{
missile_slot = i;
break;