summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-09-22 07:12:29 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-09-22 07:12:29 +0000
commitd88cf87c8830e4cddb975c978f466999462c65af (patch)
tree9ec69a234805af7b85d0e4a28ec56bbb76f66f13 /crawl-ref
parenteac62b6c65f56eaf7e44fffd814550b14c59e86d (diff)
downloadcrawl-ref-d88cf87c8830e4cddb975c978f466999462c65af.tar.gz
crawl-ref-d88cf87c8830e4cddb975c978f466999462c65af.zip
* [Balance] Okawaru no longer protects you from harm. Needs to be further
discussed. * [Balance] Rods are now generated in the 9-14MP range (was 9-17MP). * [Balance] Draconians are slightly weaker, hpwise. Attackwise they're still a bundle of hurt. * [Balance] Sif Muna spell training piety is now scaled with respect to skill aptitudes. I've also lowered the level divider to 60 to make piety gain easier. * [Balance] Okawaru will only attempt to grant missiles if he's decided not to do a high-end gift. This reduces the encroachment of missile gifts on armour/weapon probability. Okawaru also expects a minimum missile skill of 7 before handing out free missiles. * Ctrl+direction attack/untrap no longer ignores confusion. * The game name is now a #define in version.h so we don't have to scatter it across multiple source files. * Fixed X map not handling DOS keypad correctly (Tina Hall). * Added MR_RES_ASPHYX to flag resistance to curare's secondary effects. Plants also get blanket immunity to secondary curare effects. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup@62 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/acr.cc23
-rw-r--r--crawl-ref/source/chardump.cc2
-rw-r--r--crawl-ref/source/command.cc2
-rw-r--r--crawl-ref/source/debug.cc2
-rw-r--r--crawl-ref/source/describe.cc1
-rw-r--r--crawl-ref/source/direct.cc9
-rw-r--r--crawl-ref/source/direct.h2
-rw-r--r--crawl-ref/source/dungeon.cc3
-rw-r--r--crawl-ref/source/enum.h3
-rw-r--r--crawl-ref/source/itemname.cc1
-rw-r--r--crawl-ref/source/libutil.cc21
-rw-r--r--crawl-ref/source/libw32c.cc2
-rw-r--r--crawl-ref/source/mon-data.h60
-rw-r--r--crawl-ref/source/mon-util.cc4
-rw-r--r--crawl-ref/source/newgame.cc2
-rw-r--r--crawl-ref/source/ouch.cc1
-rw-r--r--crawl-ref/source/output.cc2
-rw-r--r--crawl-ref/source/religion.cc49
-rw-r--r--crawl-ref/source/spl-cast.cc17
-rw-r--r--crawl-ref/source/stuff.cc6
-rw-r--r--crawl-ref/source/stuff.h1
-rw-r--r--crawl-ref/source/travel.cc6
-rw-r--r--crawl-ref/source/version.h4
-rw-r--r--crawl-ref/source/view.cc7
24 files changed, 140 insertions, 90 deletions
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc
index 7f32acb932..8e192a5c1f 100644
--- a/crawl-ref/source/acr.cc
+++ b/crawl-ref/source/acr.cc
@@ -185,12 +185,12 @@ extern unsigned char your_sign;
extern unsigned char your_colour;
// Functions in main module
-static void close_door(char move_x, char move_y);
+static void close_door(int move_x, int move_y);
static void do_berserk_no_combat_penalty(void);
static bool initialise(void);
static void input(void);
-static void move_player(char move_x, char move_y);
-static void open_door(char move_x, char move_y);
+static void move_player(int move_x, int move_y);
+static void open_door(int move_x, int move_y, bool check_confused = true);
/*
It all starts here. Some initialisations are run first, then straight to
@@ -851,8 +851,9 @@ static bool recharge_rod( item_def &rod, bool wielded )
rate = ROD_CHARGE_MULT / 2;
// If not wielded, the rod charges far more slowly.
+ // [dshaligram] Reduced charge rate of non-wielded rods further.
if (!wielded)
- rate /= 3;
+ rate /= 5;
if (rod.plus / ROD_CHARGE_MULT != (rod.plus + rate) / ROD_CHARGE_MULT)
{
@@ -2610,11 +2611,17 @@ static void input(void)
move_y are non-zero, the pair carries a specific direction for the door
to be opened (eg if you type ctrl - dir).
*/
-static void open_door(char move_x, char move_y)
+static void open_door(int move_x, int move_y, bool check_confused)
{
struct dist door_move;
int dx, dy; // door x, door y
+ if (check_confused && you.conf && !one_chance_in(3))
+ {
+ move_x = random2(3) - 1;
+ move_y = random2(3) - 1;
+ }
+
door_move.dx = move_x;
door_move.dy = move_y;
@@ -2691,7 +2698,7 @@ static void open_door(char move_x, char move_y)
/*
Similar to open_door. Can you spot the difference?
*/
-static void close_door(char door_x, char door_y)
+static void close_door(int door_x, int door_y)
{
struct dist door_move;
int dx, dy; // door x, door y
@@ -2960,7 +2967,7 @@ static void do_berserk_no_combat_penalty(void)
// Called when the player moves by walking/running. Also calls
// attack function and trap function etc when necessary.
-static void move_player(char move_x, char move_y)
+static void move_player(int move_x, int move_y)
{
bool attacking = false;
bool moving = true; // used to prevent eventual movement (swap)
@@ -3194,7 +3201,7 @@ static void move_player(char move_x, char move_y)
out_of_traps:
// BCR - Easy doors single move
if (targ_grid == DNGN_CLOSED_DOOR && (Options.easy_open || you.running < 0))
- open_door(move_x, move_y);
+ open_door(move_x, move_y, false);
else if (targ_grid <= MINMOVE)
{
stop_running();
diff --git a/crawl-ref/source/chardump.cc b/crawl-ref/source/chardump.cc
index 843a5cb86d..7cacac08cc 100644
--- a/crawl-ref/source/chardump.cc
+++ b/crawl-ref/source/chardump.cc
@@ -1036,7 +1036,7 @@ bool dump_char( const char fname[30], bool show_prices ) // $$$ a try block?
// start with enough room for 100 80 character lines
text.reserve(100 * 80);
- text += " Dungeon Crawl Stone Soup version " VERSION " character file.";
+ text += " " CRAWL " version " VERSION " character file.";
text += EOL;
text += EOL;
diff --git a/crawl-ref/source/command.cc b/crawl-ref/source/command.cc
index eb2bc068d2..0ba2b4e46b 100644
--- a/crawl-ref/source/command.cc
+++ b/crawl-ref/source/command.cc
@@ -64,7 +64,7 @@ static const char *features[] = {
void version(void)
{
- mpr( "This is Dungeon Crawl Stone Soup " VERSION " (" BUILD_DATE ")." );
+ mpr( "This is " CRAWL " " VERSION " (" BUILD_DATE ")." );
std::string feats = "Features: ";
for (int i = 1, size = sizeof features / sizeof *features; i < size; ++i)
diff --git a/crawl-ref/source/debug.cc b/crawl-ref/source/debug.cc
index 12fdae7acb..08822e84a3 100644
--- a/crawl-ref/source/debug.cc
+++ b/crawl-ref/source/debug.cc
@@ -1930,7 +1930,7 @@ static void fsim_mon_stats(FILE *o, const monsters &mon)
static void fsim_title(FILE *o, int mon, int ms)
{
char buf[ITEMNAME_SIZE];
- fprintf(o, "Dungeon Crawl Stone Soup version " VERSION "\n\n");
+ fprintf(o, CRAWL " version " VERSION "\n\n");
fprintf(o, "Combat simulation: %s %s vs. %s (%ld rounds) (%s)\n",
species_name(you.species, you.experience_level),
you.class_name,
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc
index 031ca5f60d..b3f04020c9 100644
--- a/crawl-ref/source/describe.cc
+++ b/crawl-ref/source/describe.cc
@@ -6579,7 +6579,6 @@ void describe_god( int which_god, bool give_title )
if ((which_god == GOD_ZIN
|| which_god == GOD_SHINING_ONE
|| which_god == GOD_ELYVILON
- || which_god == GOD_OKAWARU
|| which_god == GOD_YREDELEMNUL)
&& you.piety >= 30)
{
diff --git a/crawl-ref/source/direct.cc b/crawl-ref/source/direct.cc
index 665ebef4e8..dbdd478564 100644
--- a/crawl-ref/source/direct.cc
+++ b/crawl-ref/source/direct.cc
@@ -78,7 +78,8 @@ static const char ycomp[9] = { 1, 1, 1, 0, 0, 0, -1, -1, -1 };
// [dshaligram] Removed . and 5 from dirchars so it's easier to
// special case them.
static const char dirchars[19] = { "b1j2n3h4bbl6y7k8u9" };
-static const char DOSidiocy[10] = { "OPQKSMGHI" };
+static const char DOSidiocy[10] = { "OPQKSMGHI" };
+static const char DOSunidiocy[10] = { "bjnh.lyku" };
static const char *aim_prompt = "Aim (move cursor or -/+/=, change mode with CTRL-F, select with . or >)";
static void describe_feature(int mx, int my, bool oos);
@@ -99,6 +100,12 @@ static bool is_mapped(int x, int y)
return (is_player_mapped(x, y));
}
+int dos_direction_unmunge(int doskey)
+{
+ const char *pos = strchr(DOSidiocy, doskey);
+ return (pos? DOSunidiocy[ pos - DOSidiocy ] : doskey);
+}
+
//---------------------------------------------------------------
//
// direction
diff --git a/crawl-ref/source/direct.h b/crawl-ref/source/direct.h
index dbd60ad240..3d35c571f8 100644
--- a/crawl-ref/source/direct.h
+++ b/crawl-ref/source/direct.h
@@ -42,6 +42,8 @@ bool in_viewport_bounds(int x, int y);
bool in_los(int x, int y);
bool in_vlos(int x, int y);
+int dos_direction_unmunge(int doskey);
+
std::string feature_description(int mx, int my);
inline int view2gridX(int vx)
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 79e0c9a1b6..384ae35c4e 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -2408,8 +2408,7 @@ int items( int allow_uniques, // not just true-false,
if (item_is_rod( mitm[p] ))
{
- mitm[p].plus2 = (9 + random2( MAX_ROD_CHARGE - 8 ))
- * ROD_CHARGE_MULT;
+ mitm[p].plus2 = random_range(9, 14) * ROD_CHARGE_MULT;
mitm[p].plus = mitm[p].plus2;
}
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index e32fea0575..dd4bfe839c 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -1802,12 +1802,13 @@ enum mon_resist_flags
// Notes:
// - negative energy is mostly handled via mons_has_life_force()
// - acid is handled mostly by genus (jellies) plus non-living
+ // - asphyx-resistance replaces hellfrost resistance.
MR_RES_ELEC = (1<< 0),
MR_RES_POISON = (1<< 1),
MR_RES_FIRE = (1<< 2),
MR_RES_HELLFIRE = (1<< 3),
MR_RES_COLD = (1<< 4),
- MR_RES_HELLFROST = (1<< 5),
+ MR_RES_ASPHYX = (1<< 5),
// vulnerabilities
MR_VUL_ELEC = (1<< 6),
diff --git a/crawl-ref/source/itemname.cc b/crawl-ref/source/itemname.cc
index f8862888a0..11ee7cd504 100644
--- a/crawl-ref/source/itemname.cc
+++ b/crawl-ref/source/itemname.cc
@@ -1063,6 +1063,7 @@ static char item_name_2( const item_def &item, char buff[ITEMNAME_SIZE],
if (item_cursed( item ))
strncat(buff, "cursed ", ITEMNAME_SIZE );
else if (Options.show_uncursed
+ && !terse
&& (!ring_has_pluses(item)
|| !item_ident(item, ISFLAG_KNOW_PLUSES)))
{
diff --git a/crawl-ref/source/libutil.cc b/crawl-ref/source/libutil.cc
index b4ec7ab2fa..2e256b03cc 100644
--- a/crawl-ref/source/libutil.cc
+++ b/crawl-ref/source/libutil.cc
@@ -460,7 +460,8 @@ static bool glob_match( const char *pattern, const char *text, bool icase )
////////////////////////////////////////////////////////////////////
// Perl Compatible Regular Expressions
-void *compile_pattern(const char *pattern, bool icase) {
+void *compile_pattern(const char *pattern, bool icase)
+{
const char *error;
int erroffset;
int flags = icase? PCRE_CASELESS : 0;
@@ -471,7 +472,8 @@ void *compile_pattern(const char *pattern, bool icase) {
NULL);
}
-void free_compiled_pattern(void *cp) {
+void free_compiled_pattern(void *cp)
+{
if (cp)
pcre_free(cp);
}
@@ -495,7 +497,8 @@ bool pattern_match(void *compiled_pattern, const char *text, int length)
////////////////////////////////////////////////////////////////////
// POSIX regular expressions
-void *compile_pattern(const char *pattern, bool icase) {
+void *compile_pattern(const char *pattern, bool icase)
+{
regex_t *re = new regex_t;
if (!re)
return NULL;
@@ -505,15 +508,18 @@ void *compile_pattern(const char *pattern, bool icase) {
flags |= REG_ICASE;
int rc = regcomp(re, pattern, flags);
// Nonzero return code == failure
- if (rc) {
+ if (rc)
+ {
delete re;
return NULL;
}
return re;
}
-void free_compiled_pattern(void *cp) {
- if (cp) {
+void free_compiled_pattern(void *cp)
+{
+ if (cp)
+ {
regex_t *re = static_cast<regex_t *>( cp );
regfree(re);
delete re;
@@ -542,7 +548,8 @@ void *compile_pattern(const char *pattern, bool icase)
// If we're using simple globs, we need to box the pattern with '*'
std::string s = std::string("*") + pattern + "*";
glob_info *gi = new glob_info;
- if (gi) {
+ if (gi)
+ {
gi->s = s;
gi->ignore_case = icase;
}
diff --git a/crawl-ref/source/libw32c.cc b/crawl-ref/source/libw32c.cc
index 975e14e641..782e2e117e 100644
--- a/crawl-ref/source/libw32c.cc
+++ b/crawl-ref/source/libw32c.cc
@@ -338,7 +338,7 @@ void init_libw32c(void)
}
GetConsoleTitle( oldTitle, 78 );
- SetConsoleTitle( "Crawl Stone Soup " VERSION );
+ SetConsoleTitle( CRAWL " " VERSION );
init_colors(oldTitle);
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index f51df5b096..e77c76b5c8 100644
--- a/crawl-ref/source/mon-data.h
+++ b/crawl-ref/source/mon-data.h
@@ -515,7 +515,7 @@
{
MONS_GIANT_SPORE, 'G', GREEN, "giant spore",
M_LEVITATE,
- MR_RES_POISON,
+ MR_RES_POISON | MR_RES_ASPHYX,
0, 10, MONS_PLANT, MONS_GIANT_SPORE, MH_NATURAL, -3,
{ 1, 0, 0, 0 },
{ 1, 0, 0, 1 },
@@ -539,7 +539,7 @@
{
MONS_ICE_BEAST, 'I', WHITE, "ice beast",
M_NO_FLAGS,
- MR_RES_POISON | MR_VUL_FIRE | MR_RES_COLD,
+ MR_RES_POISON | MR_RES_ASPHYX | MR_VUL_FIRE | MR_RES_COLD,
0, 12, MONS_ICE_BEAST, MONS_ICE_BEAST, MH_NATURAL, -3,
{ 5, 0, 0, 0 },
{ 5, 3, 5, 0 },
@@ -551,7 +551,7 @@
{
MONS_JELLY, 'J', LIGHTRED, "jelly",
M_SEE_INVIS | M_SPLITS | M_AMPHIBIOUS,
- MR_RES_POISON,
+ MR_RES_POISON | MR_RES_ASPHYX,
0, 13, MONS_JELLY, MONS_JELLY, MH_NATURAL, -3,
{ 8, 0, 0, 0 },
{ 3, 5, 5, 0 },
@@ -845,7 +845,7 @@
{
MONS_GIANT_EYEBALL, 'G', WHITE, "giant eyeball",
M_NO_SKELETON | M_LEVITATE,
- MR_NO_FLAGS,
+ MR_RES_ASPHYX,
400, 10, MONS_GIANT_EYEBALL, MONS_GIANT_EYEBALL, MH_NATURAL, -3,
{ 0, 0, 0, 0 },
{ 3, 3, 5, 0 },
@@ -917,7 +917,7 @@
{
MONS_EYE_OF_DRAINING, 'G', LIGHTGREY, "eye of draining",
M_NO_SKELETON | M_LEVITATE | M_SEE_INVIS,
- MR_NO_FLAGS,
+ MR_RES_ASPHYX,
400, 10, MONS_GIANT_EYEBALL, MONS_EYE_OF_DRAINING, MH_NATURAL, 5000,
{ 0, 0, 0, 0 },
{ 7, 3, 5, 0 },
@@ -929,7 +929,7 @@
{
MONS_BUTTERFLY, 'b', BLACK, "butterfly",
M_FLIES | M_CONFUSED,
- MR_VUL_POISON,
+ MR_VUL_POISON | MR_RES_ASPHYX,
150, 10, MONS_BUTTERFLY, MONS_BUTTERFLY, MH_NATURAL, -3,
{ 0, 0, 0, 0 },
{ 1, 3, 5, 0 },
@@ -977,7 +977,7 @@
{
MONS_GIANT_ORANGE_BRAIN, 'G', LIGHTRED, "giant orange brain",
M_NO_SKELETON | M_SPELLCASTER | M_LEVITATE | M_SEE_INVIS,
- MR_NO_FLAGS,
+ MR_RES_ASPHYX,
1000, 13, MONS_GIANT_ORANGE_BRAIN, MONS_GIANT_ORANGE_BRAIN, MH_NATURAL, -8,
{ 0, 0, 0, 0 },
{ 10, 3, 5, 0 },
@@ -1625,7 +1625,7 @@
{
MONS_PULSATING_LUMP, 'J', RED, "pulsating lump",
M_SEE_INVIS,
- MR_RES_POISON,
+ MR_RES_POISON | MR_RES_ASPHYX,
0, 3, MONS_JELLY, MONS_PULSATING_LUMP, MH_NATURAL, -3,
{ 13, 0, 0, 0 },
{ 10, 3, 5, 0 },
@@ -2871,7 +2871,7 @@
{
MONS_BROWN_OOZE, 'J', BROWN, "brown ooze",
M_NO_SKELETON | M_SEE_INVIS,
- MR_RES_POISON,
+ MR_RES_POISON | MR_RES_ASPHYX,
0, 11, MONS_JELLY, MONS_BROWN_OOZE, MH_NATURAL, -7,
{ 25, 0, 0, 0 },
{ 7, 3, 5, 0 },
@@ -2883,7 +2883,7 @@
{
MONS_AZURE_JELLY, 'J', LIGHTBLUE, "azure jelly",
M_NO_SKELETON | M_SEE_INVIS,
- MR_RES_POISON | MR_RES_COLD | MR_VUL_FIRE | MR_RES_ELEC,
+ MR_RES_POISON | MR_RES_COLD | MR_VUL_FIRE | MR_RES_ELEC | MR_RES_ASPHYX,
0, 11, MONS_JELLY, MONS_AZURE_JELLY, MH_NATURAL, -4,
{ 12, 12, 12, 12 },
{ 15, 3, 5, 0 },
@@ -2895,7 +2895,7 @@
{
MONS_DEATH_OOZE, 'J', DARKGREY, "death ooze",
M_NO_SKELETON | M_SEE_INVIS | M_EVIL,
- MR_RES_POISON | MR_RES_COLD,
+ MR_RES_POISON | MR_RES_COLD | MR_RES_ASPHYX,
0, 13, MONS_JELLY, MONS_DEATH_OOZE, MH_UNDEAD, -8,
{ 32, 32, 0, 0 },
{ 11, 3, 3, 0 },
@@ -2907,7 +2907,7 @@
{
MONS_ACID_BLOB, 'J', LIGHTGREEN, "acid blob",
M_NO_SKELETON | M_SEE_INVIS | M_SPECIAL_ABILITY,
- MR_RES_POISON,
+ MR_RES_POISON | MR_RES_ASPHYX,
0, 12, MONS_JELLY, MONS_ACID_BLOB, MH_NATURAL, -7,
{ 42, 0, 0, 0 },
{ 18, 3, 5, 0 },
@@ -2919,7 +2919,7 @@
{
MONS_ROYAL_JELLY, 'J', YELLOW, "royal jelly",
M_NO_SKELETON | M_SEE_INVIS,
- MR_RES_POISON,
+ MR_RES_POISON | MR_RES_ASPHYX,
0, 20, MONS_JELLY, MONS_ROYAL_JELLY, MH_NATURAL, -7,
{ 50, 0, 0, 0 },
{ 21, 0, 0, 111 },
@@ -3378,7 +3378,7 @@
{
MONS_OOZE, 'J', LIGHTGREY, "ooze",
M_NO_SKELETON | M_SEE_INVIS,
- MR_RES_POISON,
+ MR_RES_POISON | MR_RES_ASPHYX,
0, 5, MONS_JELLY, MONS_OOZE, MH_NATURAL, -6,
{ 5, 0, 0, 0 },
{ 3, 3, 5, 0 },
@@ -3440,7 +3440,7 @@
{
MONS_SHINING_EYE, 'G', LIGHTMAGENTA, "shining eye",
M_NO_SKELETON | M_LEVITATE | M_SPELLCASTER | M_SEE_INVIS,
- MR_NO_FLAGS,
+ MR_RES_ASPHYX,
0, 14, MONS_SHINING_EYE, MONS_SHINING_EYE, MH_NATURAL, 5000,
{ 0, 0, 0, 0 },
{ 10, 3, 5, 0 },
@@ -3626,7 +3626,7 @@
MR_RES_ELEC,
900, 10, MONS_DRACONIAN, MONS_BLACK_DRACONIAN, MH_NATURAL, 3,
{ 20, 0, 0, 0 },
- { 14, 6, 4, 0 },
+ { 14, 5, 4, 0 },
9, 10, 10, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3638,7 +3638,7 @@
MR_NO_FLAGS,
900, 10, MONS_DRACONIAN, MONS_YELLOW_DRACONIAN, MH_NATURAL, 3,
{ 20, 0, 0, 0 },
- { 14, 6, 4, 0 },
+ { 14, 5, 4, 0 },
9, 10, 10, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3650,7 +3650,7 @@
MR_RES_FIRE,
900, 10, MONS_DRACONIAN, MONS_PALE_DRACONIAN, MH_NATURAL, 3,
{ 20, 0, 0, 0 },
- { 14, 6, 4, 0 },
+ { 14, 5, 4, 0 },
9, 14, 12, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3662,7 +3662,7 @@
MR_RES_POISON,
900, 10, MONS_DRACONIAN, MONS_GREEN_DRACONIAN, MH_NATURAL, 3,
{ 20, 0, 0, 0 },
- { 14, 6, 4, 0 },
+ { 14, 5, 4, 0 },
9, 10, 10, 10, MST_NO_SPELLS, CE_POISONOUS, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3674,7 +3674,7 @@
MR_NO_FLAGS,
900, 10, MONS_DRACONIAN, MONS_PURPLE_DRACONIAN, MH_NATURAL, 6,
{ 20, 0, 0, 0 },
- { 14, 6, 4, 0 },
+ { 14, 5, 4, 0 },
8, 10, 10, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3686,7 +3686,7 @@
MR_RES_FIRE,
900, 10, MONS_DRACONIAN, MONS_RED_DRACONIAN, MH_NATURAL, 3,
{ 20, 0, 0, 0 },
- { 14, 6, 4, 0 },
+ { 14, 5, 4, 0 },
9, 10, 10, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3698,7 +3698,7 @@
MR_RES_COLD,
900, 10, MONS_DRACONIAN, MONS_WHITE_DRACONIAN, MH_NATURAL, 3,
{ 20, 0, 0, 0 },
- { 14, 6, 4, 0 },
+ { 14, 5, 4, 0 },
9, 10, 10, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3710,7 +3710,7 @@
MR_RES_FIRE,
900, 10, MONS_DRACONIAN, MONS_MOTTLED_DRACONIAN, MH_NATURAL, 3,
{ 20, 0, 0, 0 },
- { 14, 6, 4, 0 },
+ { 14, 5, 4, 0 },
9, 10, 10, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3722,7 +3722,7 @@
MR_NO_FLAGS,
900, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, 3,
{ 20, 0, 0, 0 },
- { 16, 5, 5, 0 },
+ { 16, 4, 3, 0 },
9, 10, 10, 10, MST_DRAC_CALLER, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3734,7 +3734,7 @@
MR_NO_FLAGS,
900, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, 3,
{ 15, 15, 15, 0 },
- { 16, 6, 4, 0 },
+ { 16, 6, 3, 0 },
6, 20, 10, 10, MST_NO_SPELLS, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3746,7 +3746,7 @@
MR_NO_FLAGS,
900, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, 3,
{ 15, 0, 0, 0 },
- { 16, 6, 4, 0 },
+ { 16, 4, 2, 0 },
12, 10, 10, 10, MST_DEEP_ELF_HIGH_PRIEST, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3758,7 +3758,7 @@
MR_NO_FLAGS,
900, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, 4,
{ 15, 0, 0, 0 },
- { 16, 5, 5, 0 },
+ { 16, 4, 4, 0 },
8, 16, 10, 10, MST_DRAC_SHIFTER, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3770,7 +3770,7 @@
MR_NO_FLAGS,
900, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, 4,
{ 15, 0, 0, 0 },
- { 16, 5, 5, 0 },
+ { 16, 4, 2, 0 },
8, 10, 10, 10, MST_DEEP_ELF_ANNIHILATOR, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3794,7 +3794,7 @@
MR_RES_FIRE | MR_RES_HELLFIRE,
900, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, 4,
{ 15, 0, 0, 0 },
- { 16, 5, 5, 0 },
+ { 16, 4, 2, 0 },
8, 12, 10, 10, MST_DRAC_SCORCHER, CE_CONTAMINATED, Z_SMALL, S_ROAR, I_HIGH,
MONUSE_STARTING_EQUIPMENT
}
@@ -3863,7 +3863,7 @@
{
MONS_EYE_OF_DEVASTATION, 'G', YELLOW, "eye of devastation",
M_NO_SKELETON | M_LEVITATE | M_SPELLCASTER | M_SEE_INVIS,
- MR_NO_FLAGS,
+ MR_RES_ASPHYX,
0, 11, MONS_GIANT_EYEBALL, MONS_EYE_OF_DEVASTATION, MH_NATURAL, 5000,
{ 0, 0, 0, 0 },
{ 10, 3, 5, 0 },
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 6ed25cad3c..4db073c884 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -502,7 +502,9 @@ bool mons_res_asphyx( const monsters *mon )
const int holiness = mons_holiness( mon );
return (holiness == MH_UNDEAD
|| holiness == MH_DEMONIC
- || holiness == MH_NONLIVING);
+ || holiness == MH_NONLIVING
+ || holiness == MH_PLANT
+ || mons_class_resist(mon->type, MR_RES_ASPHYX));
}
int mons_res_poison( struct monsters *mon )
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc
index 9fea70bfac..30fd46efd4 100644
--- a/crawl-ref/source/newgame.cc
+++ b/crawl-ref/source/newgame.cc
@@ -2008,7 +2008,7 @@ void openingScreen(void)
********************************************** */
textcolor( YELLOW );
- cprintf("Hello, welcome to Dungeon Crawl Stone Soup " VERSION "!");
+ cprintf("Hello, welcome to " CRAWL " " VERSION "!");
textcolor( BROWN );
cprintf(EOL "(c) Copyright 1997-2002 Linley Henzell");
cprintf(EOL "Please consult crawl.txt for instructions and legal details."
diff --git a/crawl-ref/source/ouch.cc b/crawl-ref/source/ouch.cc
index 073e9721be..2049706581 100644
--- a/crawl-ref/source/ouch.cc
+++ b/crawl-ref/source/ouch.cc
@@ -624,7 +624,6 @@ void ouch( int dam, int death_source, char death_type, const char *aux )
case GOD_ZIN:
case GOD_SHINING_ONE:
case GOD_ELYVILON:
- case GOD_OKAWARU:
case GOD_YREDELEMNUL:
if (dam >= you.hp && you.duration[DUR_PRAYER]
&& random2(you.piety) >= 30)
diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc
index 415e970fc0..a6fba6c84a 100644
--- a/crawl-ref/source/output.cc
+++ b/crawl-ref/source/output.cc
@@ -730,7 +730,7 @@ void get_full_detail(char* buffer, bool calc_unid)
if ( you.equip[ e_order[i] ] != -1)
{
in_name( you.equip[ e_order[i] ], DESC_PLAIN,
- str_pass, Options.terse_hand );
+ str_pass, true );
snprintf(CUR_AD, "%-7s: %s", slot, str_pass);
}
else
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index 8dd8702ff2..158084d031 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -317,26 +317,6 @@ void pray(void)
break;
case GOD_OKAWARU:
- if (you.piety > 80
- && random2( you.piety ) > 70
- && !grid_destroys_items( grd[you.x_pos][you.y_pos] )
- && one_chance_in(4)
- && you.skills[ best_skill(SK_SLINGS, SK_RANGED_COMBAT) ] >= 3)
- {
- success = acquirement( OBJ_MISSILES, you.religion );
- if (success)
- {
- simple_god_message( " has granted you a gift!" );
- more();
-
- inc_gift_timeout( 4 + roll_dice(2,4) );
- you.num_gifts[ you.religion ]++;
- take_note(Note(NOTE_GOD_GIFT, you.religion));
- }
- break;
- }
- // intentional fall through
-
case GOD_TROG:
if (you.piety > 130
&& random2(you.piety) > 120
@@ -360,8 +340,29 @@ void pray(void)
inc_gift_timeout(30 + random2avg(19, 2));
you.num_gifts[ you.religion ]++;
- take_note(Note(NOTE_GOD_GIFT, you.religion));
+ take_note(Note(NOTE_GOD_GIFT, you.religion));
}
+ break;
+ }
+
+ if (you.religion == GOD_OKAWARU
+ && you.piety > 80
+ && random2( you.piety ) > 70
+ && !grid_destroys_items( grd[you.x_pos][you.y_pos] )
+ && one_chance_in(4)
+ && you.skills[ best_skill(SK_SLINGS, SK_RANGED_COMBAT) ] >= 7)
+ {
+ success = acquirement( OBJ_MISSILES, you.religion );
+ if (success)
+ {
+ simple_god_message( " has granted you a gift!" );
+ more();
+
+ inc_gift_timeout( 4 + roll_dice(2,4) );
+ you.num_gifts[ you.religion ]++;
+ take_note(Note(NOTE_GOD_GIFT, you.religion));
+ }
+ break;
}
break;
@@ -1273,7 +1274,11 @@ bool did_god_conduct( int thing_done, int level )
// magical kills tend to do both at the same time (unlike melee).
// This means high level spells probably work pretty much like
// they used to (use spell, get piety).
- piety_change = div_rand_round( level + 10, 90 );
+ piety_change = div_rand_round( level + 10, 60 );
+#ifdef DEBUG_DIAGNOSTICS
+ mprf(MSGCH_DIAGNOSTICS, "Spell practise, level: %d, dpiety: %d",
+ level, piety_change);
+#endif
ret = true;
}
break;
diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc
index dd99876d4d..d248da977d 100644
--- a/crawl-ref/source/spl-cast.cc
+++ b/crawl-ref/source/spl-cast.cc
@@ -40,6 +40,7 @@
#include "player.h"
#include "religion.h"
#include "skills.h"
+#include "skills2.h"
#include "spells1.h"
#include "spells2.h"
#include "spells3.h"
@@ -1917,6 +1918,7 @@ void exercise_spell( int spell, bool spc, bool success )
int ndx = 0;
int skill;
int exer = 0;
+ int exer_norm = 0;
int workout = 0;
unsigned int disciplines = spell_type(spell);
@@ -1941,7 +1943,10 @@ void exercise_spell( int spell, bool spc, bool success )
if (!one_chance_in(5))
workout++; // most recently, this was an automatic add {dlb}
- exer += exercise( skill, workout );
+ const int exercise_amount = exercise( skill, workout );
+ exer += exercise_amount;
+ exer_norm +=
+ exercise_amount * species_skills(skill, you.species) / 50;
}
/* ******************************************************************
@@ -1958,12 +1963,16 @@ void exercise_spell( int spell, bool spc, bool success )
if (spc)
{
- exer += exercise(SK_SPELLCASTING, one_chance_in(3) ? 1
+ const int exercise_amount =
+ exercise(SK_SPELLCASTING, one_chance_in(3) ? 1
: random2(1 + random2(diff)));
+ exer += exercise_amount;
+ exer_norm += exercise_amount *
+ species_skills(SK_SPELLCASTING, you.species) / 50;
}
- if (exer)
- did_god_conduct( DID_SPELL_PRACTISE, exer );
+ if (exer_norm)
+ did_god_conduct( DID_SPELL_PRACTISE, exer_norm );
} // end exercise_spell()
static bool send_abyss()
diff --git a/crawl-ref/source/stuff.cc b/crawl-ref/source/stuff.cc
index 0a8a95f2b2..69ea936eee 100644
--- a/crawl-ref/source/stuff.cc
+++ b/crawl-ref/source/stuff.cc
@@ -333,6 +333,12 @@ unsigned long random_int( void )
return (genrand_int32());
}
+int random_range(int low, int high)
+{
+ ASSERT(low <= high);
+ return (low + random2(high - low + 1));
+}
+
int random2( int max )
{
if (max <= 1)
diff --git a/crawl-ref/source/stuff.h b/crawl-ref/source/stuff.h
index 4c9bf4474e..d78e5b3bc6 100644
--- a/crawl-ref/source/stuff.h
+++ b/crawl-ref/source/stuff.h
@@ -31,6 +31,7 @@ bool coinflip(void);
int div_rand_round( int num, int den );
bool one_chance_in(int a_million);
int random2(int randmax);
+int random_range(int low, int high);
unsigned long random_int(void);
int random2avg( int max, int rolls );
int bestroll(int max, int rolls);
diff --git a/crawl-ref/source/travel.cc b/crawl-ref/source/travel.cc
index 5958e8fbf3..a5381df8c6 100644
--- a/crawl-ref/source/travel.cc
+++ b/crawl-ref/source/travel.cc
@@ -1914,8 +1914,8 @@ static int find_transtravel_stair( const level_id &cur,
{
si.distance = dist2stair;
+ // Account for the cost of taking the stairs
dist2stair += Options.travel_stair_cost;
- ++dist2stair; // Account for the cost of taking the stairs
// Already too expensive? Short-circuit.
if (local_distance != -1 && dist2stair >= local_distance)
@@ -1939,7 +1939,8 @@ static int find_transtravel_stair( const level_id &cur,
continue;
}
- if (dest.id.depth > -1) { // We have a valid level descriptor.
+ if (dest.id.depth > -1) // We have a valid level descriptor.
+ {
int dist = level_distance(dest.id, target.id);
if (dist != -1 &&
(dist < best_level_distance ||
@@ -2640,7 +2641,6 @@ void LevelInfo::save(FILE *file) const
}
}
-#define EXCLUDE_LOAD_LIMIT 20
void LevelInfo::load(FILE *file)
{
stairs.clear();
diff --git a/crawl-ref/source/version.h b/crawl-ref/source/version.h
index 5bc1dedec4..24935fd5c9 100644
--- a/crawl-ref/source/version.h
+++ b/crawl-ref/source/version.h
@@ -33,13 +33,13 @@
#ifndef VERSION_H
#define VERSION_H
+#define CRAWL "Dungeon Crawl Stone Soup"
// last updated 07august2001 {mv}
/* ***********************************************************************
* called from: chardump - command - newgame
* *********************************************************************** */
-#define VERSION "0.1 beta 1 (crawl-ref)"
-
+#define VERSION "0.1.1 (crawl-ref)"
// last updated 20feb2001 {GDL}
/* ***********************************************************************
diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc
index 6d44d82b7d..23f4b06976 100644
--- a/crawl-ref/source/view.cc
+++ b/crawl-ref/source/view.cc
@@ -36,6 +36,7 @@
#include "clua.h"
#include "debug.h"
+#include "direct.h"
#include "insult.h"
#include "macro.h"
#include "monstuff.h"
@@ -2429,9 +2430,13 @@ void show_map( FixedVector<int, 2> &spec_place )
}
if (getty == 0)
+ {
getty = getchm(KC_LEVELMAP);
+ // [dshaligram] DOS madness.
+ getty = dos_direction_unmunge(getty);
+ }
-#ifdef WIN32CONSOLE
+#if defined(WIN32CONSOLE) || defined(DOS)
// Translate shifted numpad to shifted vi keys. Yes,
// this is horribly hacky.
{