choose your projectiles and are no longer prompted when "firing through" friendlies. (FR 1816789)
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5615 c06c8d41-db1a-0410-9941-cceddc491573
RDZUMV3A5TREQHLPPJWDWVXBNIOWC3CQJJ35TYFBQQVQNTU7SPXQC
3EUPIYJNWOMOQBP2Z5SGSMWK453BXJD6KL2WFTR3NM565MEBYASAC
NQMXQ6OQVUSC7Y7F7IL252QW4A5JED224EECNHWAM4ZZYVNY745AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
WG6O475IOLZFMUQSLVR2KHM7XTBF5HH276L2KDGF7UOSESDOAILQC
HPE7PVDIOJDELSCDLCMFYFSDKOEJN35IZPWT57U3AIAPU45QOP6QC
EAAACIJUVSBDOB6S73O4NFSMRDLFLQTFO7SXWWALGMVDZTQTHQBQC
ENI6P5WUO7DS4Y7EUDCYB4PSNT7CXH2L5JIB5BLZHNMWN4QDXMWQC
4NBPZKMZBKB3QYX4FFUAKDXQS43NJCBDLMHKDJFVXHQLX4MQDINAC
GT7BSR54BVJKHUCLEBTELGBMNBFFDQW52EVC4XKVEMUVG2UGZMDAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
LFBNFE3PZBXTR2ROPKYPARUWLJAYWAKGTS7VBWADZWVVSJ5CLX6AC
AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC
RPGERJQMO2J4ZDYTRHJCLZMXDVSTUOOJURSZ7FPWOUFHTXIV5VIAC
CE6FLTWU5PYFBSGVTIJXQXRMHOIHQ3VJCKHQVIMUUAIFHQ73X7NAC
HSRRNAU5UAYC6B6IQWGJPFROMZBTJICPCH6DJVZDHDTAGOQ6IOYAC
SXLHOSCHX4BPRYRR35DI5GWISPIDKRFUSRVCYYHUUAYLAYFHSPBQC
AUCFV2PP6IAG2Z5KSQ5TASSEWYR5BJOZ2BGWUXDK343SNGWLGGCAC
TM35IHKZZNBCMR3ERBS4EYHGUK5IVCPUT2JUITMT74AYAIUZSYFQC
ECUYJLVGW6ADRLLF2WOMRG464VHOVDPP5OK5SAX2PHBUUC5FD4TQC
TPPJRQ2NTCV3GI2VRHEXQJREDERPJODCJWUG5WCOQGN4REPPPAMAC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
7V6TZHBSKK7AKY3SCYSP27QR2HP5N7HI3FI7V2QL7Y44OKKNI6IAC
JYCMD6WMNHXA53K4LLKVTNX6PLRLU25F6J2TYMPQXM2ENAE66NIAC
ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC
E3X5HVN5UN75OMTJA6JFQBNZ54P37NDZLZZF7EFBZZC45KR73YGAC
7GJR755MBM55KIOP3DGSZIIAEQ5E2PRBHLEXZOU2ZMXHHZ5JI3GQC
SJP5BHX6MFWF3OSQPEF4WUWZWPUGMOVURTT2CUVT6H3A66LETXUAC
5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC
FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC
ZJIGDAAKOHJWPD7TMNTNKP7ZT4K4GHD7UGSAWERTIJA3BGL5BETQC
W74555HMPXUQ72AGKBXC5P3STMMX5DZAW6ZESUDLNVJBCAG43PLAC
if (spell == SPELL_PORTAL_PROJECTILE)
{
const item_def* item;
int idx;
you.m_quiver->get_desired_item(&item, &idx);
if ( item == NULL )
{
mpr("No suitable missiles.");
return (SPRET_ABORT);
}
else if ( idx == -1 )
{
mpr("No missiles left.");
return SPRET_ABORT;
}
mprf(MSGCH_PROMPT, "Where do you want to aim %s?",
you.inv[idx].name(DESC_NOCAP_YOUR).c_str());
}
else if (spell == SPELL_EVAPORATE)
if (spell == SPELL_EVAPORATE)
int idx;
const item_def* item;
you.m_quiver->get_desired_item(&item, &idx);
if (item == NULL)
{
mpr("No suitable missiles.");
return false;
}
else if (idx == -1)
{
mpr("No missiles left.");
return false;
}
if (!check_warning_inscriptions(you.inv[item], OPER_FIRE))
return (false);
message_current_target(); // XXX: this stuff should be done by direction()
direction( target, DIR_NONE, TARG_ENEMY, -1, false, true, NULL, &beh );
message_current_target(); // XXX: This stuff should be done by direction()!
direction( target, DIR_NONE, TARG_ENEMY, -1, false, !teleport, NULL, &beh );
// if item == -1, prompt the user.
// if item passed, it will be put into the quiver.
void fire_thing(int item)
int get_ammo_to_shoot(int item, dist &target, bool teleport)
return (item);
}
// If item == -1, prompt the user.
// If item passed, it will be put into the quiver.
void fire_thing(int item)
{
mpr("in fire_thing()");
dist target;
item = get_ammo_to_shoot(item, target);
mpr("back in fire_thing()");
if (item == -1)
return;
if (Options.tutorial_left)
Options.tut_throw_counter++;
message_current_target();
direction( thr, DIR_NONE, TARG_ENEMY );
if (!thr.isValid)
{
if (thr.isCancel)
canned_msg(MSG_OK);
if (thr.isCancel)
canned_msg(MSG_OK);
// init tracer variables
pbolt.foe_count = pbolt.fr_count = 0;
pbolt.foe_power = pbolt.fr_power = 0;
pbolt.fr_helped = pbolt.fr_hurt = 0;
pbolt.foe_helped = pbolt.foe_hurt = 0;
pbolt.foe_ratio = 100;
// Don't do the tracing when using Portaled Projectile, or when confused.
if (!teleport && !you.duration[DUR_CONF])
{
// Init tracer variables.
pbolt.foe_count = pbolt.fr_count = 0;
pbolt.foe_power = pbolt.fr_power = 0;
pbolt.fr_helped = pbolt.fr_hurt = 0;
pbolt.foe_helped = pbolt.foe_hurt = 0;
pbolt.foe_ratio = 100;
// Should only happen if the player answered 'n' to one of those
// "Fire through friendly?" prompts.
if (pbolt.fr_count > 0)
{
canned_msg(MSG_OK);
you.turn_is_over = false;
return (false);
// Should only happen if the player answered 'n' to one of those
// "Fire through friendly?" prompts.
if (pbolt.fr_count > 0)
{
canned_msg(MSG_OK);
you.turn_is_over = false;
return (false);
}
case MI_STONE: chance = 4; break;
case MI_DART: chance = 3; break;
case MI_ARROW: chance = 4; break;
case MI_BOLT: chance = 4; break;
case MI_STONE: chance = 4; break;
case MI_DART: chance = 3; break;
case MI_ARROW: chance = 4; break;
case MI_BOLT: chance = 4; break;