summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spells3.cc
diff options
context:
space:
mode:
authorjohnny shelley <jwshelley@shell-23006.(none)>2009-11-15 03:52:15 +0000
committerStefan O'Rear <stefanor@cox.net>2009-11-14 23:22:03 -0800
commitdd56050f2d05db6ed7ff5bc99acd1032707c27fd (patch)
treebc15eec8b791380652ed3dd7b68609684e8333ca /crawl-ref/source/spells3.cc
parent4cb4bea3108f8fa560669bab120623729b3ff4b8 (diff)
downloadcrawl-ref-dd56050f2d05db6ed7ff5bc99acd1032707c27fd.tar.gz
crawl-ref-dd56050f2d05db6ed7ff5bc99acd1032707c27fd.zip
Warper Overhaul - Renamed to Arcane Marksman
Missile Changes -- electricity missiles are now an option - they are always destroyed reaping / dispersal ammo is now always destroyed as it can be created by players poison ammo can again affect rocks / bullets etc - still no nets. Apparently this is a contact poison, but mainly it's to close the gap between sling users and archers. SKILLS -- Ranged weapon 3 Dodging 2 Spellcasting 2 Enchantments OR Translocations 3 EQUIPMENT -- Robe Ration Scroll of blink Some ranged weapon options as Hunter No melee weapon! Either book of elemental missiles or warped missiles The book of Elemental Missiles Spells Type Level a - Corona Enchantment 1 b - Swiftness Enchantment/Air 2 c - Repel Missiles Enchantment/Air 2 d - Flame Ammunition Enchantment/Fire 3 e - Frost Ammunition Enchantment/Ice 3 f - Poison Ammunition Enchantment/Poison 4 The book of Warped Missiles Spells Type Level a - Apportation Translocation 1 b - Portal Projectile Translocation 2 c - Repel Missiles Enchantment/Air 2 d - Blink Translocation 2 e - Returning Ammunition Enchantment/Translocation 3 f - Warp Ammunition Enchantment/Translocation 5 The book of Devastating Missiles Spells Type Level a - Poison Ammunition Enchantment/Poison 4 b - Warp Ammunition Enchantment/Translocation 5 c - Shocking Ammunition Enchantment/Air 5 d - Haste Enchantment 6 e - Deflect Missiles Enchantment/Air 6 f - Exploding Ammunition Enchantment/Fire/Air 7 g - Reaping Ammunition Enchantment/Necromancy 7 Signed-off-by: Stefan O'Rear <stefanor@cox.net>
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;
}
}