summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spells3.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/spells3.cc')
-rw-r--r--crawl-ref/source/spells3.cc125
1 files changed, 111 insertions, 14 deletions
diff --git a/crawl-ref/source/spells3.cc b/crawl-ref/source/spells3.cc
index 524883c932..f6cd30dbd8 100644
--- a/crawl-ref/source/spells3.cc
+++ b/crawl-ref/source/spells3.cc
@@ -1979,35 +1979,132 @@ bool cast_sanctuary(const int power)
return (true);
}
-void cast_poison_ammo()
+void cast_brand_ammo(special_missile_type which_type)
{
const int ammo = you.equip[EQ_WEAPON];
if (ammo == -1
|| you.inv[ammo].base_type != OBJ_MISSILES
|| get_ammo_brand( you.inv[ammo] ) != SPMSL_NORMAL
- || you.inv[ammo].sub_type == MI_STONE
- || you.inv[ammo].sub_type == MI_SLING_BULLET
- || you.inv[ammo].sub_type == MI_LARGE_ROCK
|| you.inv[ammo].sub_type == MI_THROWING_NET)
{
canned_msg(MSG_NOTHING_HAPPENS);
return;
}
+ preserve_quiver_slots q;
+ const char *old_desc = you.inv[ammo].name(DESC_CAP_YOUR).c_str();
+
+ switch (which_type)
{
- preserve_quiver_slots q;
- const char *old_desc = you.inv[ammo].name(DESC_CAP_YOUR).c_str();
- if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_POISONED ))
- {
- mprf("%s %s covered in a thin film of poison.", old_desc,
- (you.inv[ammo].quantity == 1) ? "is" : "are");
+
+ case SPMSL_POISONED:
+ if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_POISONED ))
+ {
+ mprf("%s %s covered in a thin film of poison.", old_desc,
+ (you.inv[ammo].quantity == 1) ? "is" : "are");
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
- }
- else
+ if (ammo == you.equip[EQ_WEAPON])
+ you.wield_change = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+ break;
+
+ case SPMSL_FLAME:
+ if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_FLAME ))
+ {
+ mprf("%s %s warm to the touch.", old_desc,
+ (you.inv[ammo].quantity == 1) ? "feels" : "feel");
+
+ if (ammo == you.equip[EQ_WEAPON])
+ you.wield_change = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+ break;
+
+ case SPMSL_FROST:
+ if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_FROST ))
+ {
+ mprf("%s %s cool to the touch.", old_desc,
+ (you.inv[ammo].quantity == 1) ? "feels" : "feel");
+
+ if (ammo == you.equip[EQ_WEAPON])
+ you.wield_change = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+ break;
+
+ case SPMSL_DISPERSAL:
+ if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_DISPERSAL ))
+ {
+ mprf("%s %s rather jumpy.", old_desc,
+ (you.inv[ammo].quantity == 1) ? "seems" : "seem");
+
+ if (ammo == you.equip[EQ_WEAPON])
+ you.wield_change = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+ break;
+
+ case SPMSL_ELECTRIC:
+ if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_ELECTRIC ))
+ {
+ mprf("%s %s you!", old_desc,
+ (you.inv[ammo].quantity == 1) ? "shocks" : "shock");
+
+ if (ammo == you.equip[EQ_WEAPON])
+ you.wield_change = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+ break;
+
+ case SPMSL_EXPLODING:
+ if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_EXPLODING ))
+ {
+ mprf("%s %s unstable!", old_desc,
+ (you.inv[ammo].quantity == 1) ? "seems" : "seem");
+
+ if (ammo == you.equip[EQ_WEAPON])
+ you.wield_change = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+ break;
+
+ case SPMSL_REAPING:
+ if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_REAPING ))
+ {
+ mprf("%s %s of rotten flesh!", old_desc,
+ (you.inv[ammo].quantity == 1) ? "smells" : "smell");
+
+ if (ammo == you.equip[EQ_WEAPON])
+ you.wield_change = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+ break;
+
+ case SPMSL_RETURNING:
+ if (set_item_ego_type( you.inv[ammo], OBJ_MISSILES, SPMSL_RETURNING ))
+ {
+ mprf("%s %s in your hand.", old_desc,
+ (you.inv[ammo].quantity == 1) ? "wiggles" : "wiggle");
+
+ if (ammo == you.equip[EQ_WEAPON])
+ you.wield_change = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+ break;
+
+ default:
canned_msg(MSG_NOTHING_HAPPENS);
+ break;
}
}