summaryrefslogtreecommitdiffstats
path: root/stone_soup/crawl-ref/source/it_use2.cc
diff options
context:
space:
mode:
Diffstat (limited to 'stone_soup/crawl-ref/source/it_use2.cc')
-rw-r--r--stone_soup/crawl-ref/source/it_use2.cc523
1 files changed, 0 insertions, 523 deletions
diff --git a/stone_soup/crawl-ref/source/it_use2.cc b/stone_soup/crawl-ref/source/it_use2.cc
deleted file mode 100644
index d03abea16e..0000000000
--- a/stone_soup/crawl-ref/source/it_use2.cc
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * File: it_use2.cc
- * Summary: Functions for using wands, potions, and weapon/armour removal.4\3
- * Written by: Linley Henzell
- *
- * Change History (most recent first):
- *
- * 26jun2000 jmf added ZAP_MAGMA
- * <4> 19mar2000 jmf Added ZAP_BACKLIGHT and ZAP_SLEEP
- * <3> 10/1/99 BCR Changed messages for speed and
- * made amulet resist slow up speed
- * <2> 5/20/99 BWR Fixed bug with RAP_METABOLISM
- * and RAP_NOISES artefacts/
- * <1> -/--/-- LRH Created
- */
-
-#include "AppHdr.h"
-#include "it_use2.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include "externs.h"
-
-#include "beam.h"
-#include "effects.h"
-#include "food.h"
-#include "itemname.h"
-#include "misc.h"
-#include "mutation.h"
-#include "player.h"
-#include "randart.h"
-#include "religion.h"
-#include "skills2.h"
-#include "spells2.h"
-#include "spl-cast.h"
-#include "stuff.h"
-#include "view.h"
-
-// From an actual potion, pow == 40 -- bwr
-bool potion_effect( char pot_eff, int pow )
-{
- bool effect = true; // current behaviour is all potions id on quaffing
-
- int new_value = 0;
- unsigned char i;
-
- if (pow > 150)
- pow = 150;
-
- switch (pot_eff)
- {
- case POT_HEALING:
- mpr("You feel better.");
- inc_hp(5 + random2(7), false);
-
- // only fix rot when healed to full
- if (you.hp == you.hp_max)
- {
- unrot_hp(1);
- set_hp(you.hp_max, false);
- }
-
- you.poison = 0;
- you.rotting = 0;
- you.disease = 0;
- you.conf = 0;
- break;
-
- case POT_HEAL_WOUNDS:
- mpr("You feel much better.");
- inc_hp(10 + random2avg(28, 3), false);
-
- // only fix rot when healed to full
- if (you.hp == you.hp_max)
- {
- unrot_hp( 2 + random2avg(5, 2) );
- set_hp(you.hp_max, false);
- }
- break;
-
- case POT_SPEED:
- haste_player( 40 + random2(pow) );
- break;
-
- case POT_MIGHT:
- {
- bool were_mighty = (you.might > 0);
-
- if (!were_mighty)
- mpr( "You feel very mighty all of a sudden." );
- else
- {
- mpr( "You still feel pretty mighty." );
- contaminate_player(1);
- }
-
- // conceivable max gain of +184 {dlb}
- you.might += 35 + random2(pow);
-
- if (!were_mighty)
- modify_stat(STAT_STRENGTH, 5, true);
-
- // files.cc permits values up to 215, but ... {dlb}
- if (you.might > 80)
- you.might = 80;
-
- did_god_conduct( DID_STIMULANTS, 4 + random2(4) );
- }
- break;
-
- case POT_GAIN_STRENGTH:
- mutate(MUT_STRONG);
- break;
-
- case POT_GAIN_DEXTERITY:
- mutate(MUT_AGILE);
- break;
-
- case POT_GAIN_INTELLIGENCE:
- mutate(MUT_CLEVER);
- break;
-
- case POT_LEVITATION:
- strcpy(info, "You feel");
- strcat(info, (!player_is_levitating()) ? " very" : " more");
- strcat(info, " buoyant.");
- mpr(info);
-
- if (!player_is_levitating())
- mpr("You gently float upwards from the floor.");
-
- you.levitation += 25 + random2(pow);
-
- if (you.levitation > 100)
- you.levitation = 100;
-
- burden_change();
- break;
-
- case POT_POISON:
- case POT_STRONG_POISON:
- if (player_res_poison())
- {
- snprintf( info, INFO_SIZE, "You feel %s nauseous.",
- (pot_eff == POT_POISON) ? "slightly" : "quite" );
-
- mpr(info);
- }
- else
- {
- snprintf( info, INFO_SIZE, "That liquid tasted %s nasty...",
- (pot_eff == POT_POISON) ? "very" : "extremely" );
-
- mpr(info);
-
- poison_player( ((pot_eff == POT_POISON) ? 1 + random2avg(5, 2)
- : 3 + random2avg(13, 2)) );
- }
- break;
-
- case POT_SLOWING:
- slow_player( 10 + random2(pow) );
- break;
-
- case POT_PARALYSIS:
- snprintf( info, INFO_SIZE, "You %s the ability to move!",
- (you.paralysis) ? "still haven't" : "suddenly lose" );
-
- mpr( info, MSGCH_WARN );
-
- new_value = 2 + random2( 6 + you.paralysis );
-
- if (new_value > you.paralysis)
- you.paralysis = new_value;
-
- if (you.paralysis > 13)
- you.paralysis = 13;
- break;
-
- case POT_CONFUSION:
- confuse_player( 3 + random2(8) );
- break;
-
- case POT_INVISIBILITY:
- mpr( (!you.invis) ? "You fade into invisibility!"
- : "You feel safely hidden away." );
-
- // now multiple invisiblity casts aren't as good -- bwr
- if (!you.invis)
- you.invis = 15 + random2(pow);
- else
- you.invis += random2(pow);
-
- if (you.invis > 100)
- you.invis = 100;
- break;
-
- // carnivore check here? {dlb}
- case POT_PORRIDGE: // oatmeal - always gluggy white/grey?
- mpr("That potion was really gluggy!");
- lessen_hunger(6000, true);
- break;
-
- case POT_DEGENERATION:
- mpr("There was something very wrong with that liquid!");
- lose_stat(STAT_RANDOM, 1 + random2avg(4, 2));
- break;
-
- // Don't generate randomly - should be rare and interesting
- case POT_DECAY:
- if (you.is_undead)
- mpr( "You feel terrible." );
- else
- rot_player( 10 + random2(10) );
- break;
-
- case POT_WATER:
- mpr("This tastes like water.");
- // we should really separate thirst from hunger {dlb}
- // Thirst would just be annoying for the player, the
- // 20 points here doesn't represesent real food anyways -- bwr
- lessen_hunger(20, true);
- break;
-
- case POT_EXPERIENCE:
- if (you.experience_level < 27)
- {
- mpr("You feel more experienced!");
-
- you.experience = 1 + exp_needed( 2 + you.experience_level );
- level_change();
- }
- else
- mpr("A flood of memories washes over you.");
- break; // I'll let this slip past robe of archmagi
-
- case POT_MAGIC:
- mpr( "You feel magical!" );
- new_value = 5 + random2avg(19, 2);
-
- // increase intrinsic MP points
- if (you.magic_points + new_value > you.max_magic_points)
- {
- new_value = (you.max_magic_points - you.magic_points)
- + (you.magic_points + new_value - you.max_magic_points) / 4 + 1;
- }
-
- inc_mp( new_value, true );
- break;
-
- case POT_RESTORE_ABILITIES:
- // messaging taken care of within function {dlb}
- // not quite true... if no stat's are restore = no message, and
- // that's just confusing when trying out random potions (this one
- // still auto-identifies so we know what the effect is, but it
- // shouldn't require bringing up the descovery screen to do that -- bwr
- if (restore_stat(STAT_ALL, false) == false)
- mpr( "You feel refreshed." );
- break;
-
- case POT_BERSERK_RAGE:
- go_berserk(true);
- break;
-
- case POT_CURE_MUTATION:
- mpr("It has a very clean taste.");
- for (i = 0; i < 7; i++)
- {
- if (random2(10) > i)
- delete_mutation(100);
- }
- break;
-
- case POT_MUTATION:
- mpr("You feel extremely strange.");
- for (i = 0; i < 3; i++)
- {
- mutate(100, false);
- }
-
- did_god_conduct(DID_STIMULANTS, 4 + random2(4));
- break;
- }
-
- return (effect);
-} // end potion_effect()
-
-void unwield_item(char unw)
-{
- you.special_wield = SPWLD_NONE;
- you.wield_change = true;
-
- if (you.inv[unw].base_type == OBJ_WEAPONS)
- {
- if (is_fixed_artefact( you.inv[unw] ))
- {
- switch (you.inv[unw].special)
- {
- case SPWPN_SINGING_SWORD:
- mpr("The Singing Sword sighs.");
- break;
- case SPWPN_WRATH_OF_TROG:
- mpr("You feel less violent.");
- break;
- case SPWPN_SCYTHE_OF_CURSES:
- case SPWPN_STAFF_OF_OLGREB:
- you.inv[unw].plus = 0;
- you.inv[unw].plus2 = 0;
- break;
- case SPWPN_STAFF_OF_WUCAD_MU:
- you.inv[unw].plus = 0;
- you.inv[unw].plus2 = 0;
- miscast_effect( SPTYP_DIVINATION, 9, 90, 100, "the Staff of Wucad Mu" );
- break;
- default:
- break;
- }
-
- return;
- }
-
- int brand = get_weapon_brand( you.inv[unw] );
-
- if (is_random_artefact( you.inv[unw] ))
- unuse_randart(unw);
-
- if (brand != SPWPN_NORMAL)
- {
- char str_pass[ ITEMNAME_SIZE ];
- in_name(unw, DESC_CAP_YOUR, str_pass);
- strcpy(info, str_pass);
-
- switch (brand)
- {
- case SPWPN_SWORD_OF_CEREBOV:
- case SPWPN_FLAMING:
- strcat(info, " stops flaming.");
- mpr(info);
- break;
-
- case SPWPN_FREEZING:
- case SPWPN_HOLY_WRATH:
- strcat(info, " stops glowing.");
- mpr(info);
- break;
-
- case SPWPN_ELECTROCUTION:
- strcat(info, " stops crackling.");
- mpr(info);
- break;
-
- case SPWPN_VENOM:
- strcat(info, " stops dripping with poison.");
- mpr(info);
- break;
-
- case SPWPN_PROTECTION:
- mpr("You feel less protected.");
- you.redraw_armour_class = 1;
- break;
-
- case SPWPN_VAMPIRICISM:
- mpr("You feel the strange hunger wane.");
- break;
-
- /* case 8: draining
- case 9: speed, 10 slicing etc */
-
- case SPWPN_DISTORTION:
- // Removing the translocations skill reduction of effect,
- // it might seem sensible, but this brand is supposted
- // to be dangerous because it does large bonus damage,
- // as well as free teleport other side effects, and
- // even with the miscast effects you can rely on the
- // occasional spatial bonus to mow down some opponents.
- // It's far too powerful without a real risk, especially
- // if it's to be allowed as a player spell. -- bwr
-
- // int effect = 9 - random2avg( you.skills[SK_TRANSLOCATIONS] * 2, 2 );
- miscast_effect( SPTYP_TRANSLOCATION, 9, 90, 100, "a distortion effect" );
- break;
-
- // when more are added here, *must* duplicate unwielding
- // effect in vorpalise weapon scroll effect in read_scoll
- } // end switch
-
-
- if (you.duration[DUR_WEAPON_BRAND])
- {
- you.duration[DUR_WEAPON_BRAND] = 0;
- set_item_ego_type( you.inv[unw], OBJ_WEAPONS, SPWPN_NORMAL );
- mpr("Your branding evaporates.");
- }
- } // end if
- }
-
- if (player_equip( EQ_STAFF, STAFF_POWER ))
- {
- // XXX: Ugly hack so that thhis currently works (don't want to
- // mess with the fact that currently this function doesn't
- // actually unwield the item, but we need it out of the player's
- // hand for this to work. -- bwr
- int tmp = you.equip[ EQ_WEAPON ];
-
- you.equip[ EQ_WEAPON ] = -1;
- calc_mp();
- you.equip[ EQ_WEAPON ] = tmp;
- }
-
- return;
-} // end unwield_item()
-
-// This does *not* call ev_mod!
-void unwear_armour(char unw)
-{
- you.redraw_armour_class = 1;
- you.redraw_evasion = 1;
-
- switch (get_armour_ego_type( you.inv[unw] ))
- {
- case SPARM_RUNNING:
- mpr("You feel rather sluggish.");
- break;
-
- case SPARM_FIRE_RESISTANCE:
- mpr("\"Was it this warm in here before?\"");
- break;
-
- case SPARM_COLD_RESISTANCE:
- mpr("You catch a bit of a chill.");
- break;
-
- case SPARM_POISON_RESISTANCE:
- if (!player_res_poison())
- mpr("You feel less healthy.");
- break;
-
- case SPARM_SEE_INVISIBLE:
- if (!player_see_invis())
- mpr("You feel less perceptive.");
- break;
-
- case SPARM_DARKNESS: // I do not understand this {dlb}
- if (you.invis)
- you.invis = 1;
- break;
-
- case SPARM_STRENGTH:
- modify_stat(STAT_STRENGTH, -3, false);
- break;
-
- case SPARM_DEXTERITY:
- modify_stat(STAT_DEXTERITY, -3, false);
- break;
-
- case SPARM_INTELLIGENCE:
- modify_stat(STAT_INTELLIGENCE, -3, false);
- break;
-
- case SPARM_PONDEROUSNESS:
- mpr("That put a bit of spring back into your step.");
- // you.speed -= 2;
- break;
-
- case SPARM_LEVITATION:
- //you.levitation++;
- if (you.levitation)
- you.levitation = 1;
- break;
-
- case SPARM_MAGIC_RESISTANCE:
- mpr("You feel less resistant to magic.");
- break;
-
- case SPARM_PROTECTION:
- mpr("You feel less protected.");
- break;
-
- case SPARM_STEALTH:
- mpr("You feel less stealthy.");
- break;
-
- case SPARM_RESISTANCE:
- mpr("You feel hot and cold all over.");
- break;
-
- case SPARM_POSITIVE_ENERGY:
- mpr("You feel vulnerable.");
- break;
-
- case SPARM_ARCHMAGI:
- mpr("You feel strangely numb.");
- break;
- }
-
- if (is_random_artefact( you.inv[unw] ))
- unuse_randart(unw);
-
- return;
-} // end unwear_armour()
-
-void unuse_randart(unsigned char unw)
-{
- ASSERT( is_random_artefact( you.inv[unw] ) );
-
- FixedVector< char, RA_PROPERTIES > proprt;
- randart_wpn_properties( you.inv[unw], proprt );
-
- if (proprt[RAP_AC])
- you.redraw_armour_class = 1;
-
- if (proprt[RAP_EVASION])
- you.redraw_evasion = 1;
-
- // modify ability scores
- modify_stat( STAT_STRENGTH, -proprt[RAP_STRENGTH], true );
- modify_stat( STAT_INTELLIGENCE, -proprt[RAP_INTELLIGENCE], true );
- modify_stat( STAT_DEXTERITY, -proprt[RAP_DEXTERITY], true );
-
- if (proprt[RAP_NOISES] != 0)
- you.special_wield = SPWLD_NONE;
-} // end unuse_randart()