summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mon-pick.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-20 20:08:15 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-20 20:08:15 +0000
commitebe5e29212f88a4db612ffe5707c08aaa01f818e (patch)
treefb0a90f1ae4f92250010ffca50f3300797b49379 /crawl-ref/source/mon-pick.cc
parent1aabb3c12726b02bce39e5f9ec843e18640b1fdd (diff)
downloadcrawl-ref-ebe5e29212f88a4db612ffe5707c08aaa01f818e.tar.gz
crawl-ref-ebe5e29212f88a4db612ffe5707c08aaa01f818e.zip
Refactored out branches into branch.h and branch.cc.
NOTE: This commit is *buggy*; the final Hell vaults contain buggy runes now. Will fix later; this is a benchmark, since hopefully everything else works. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@682 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/mon-pick.cc')
-rw-r--r--crawl-ref/source/mon-pick.cc251
1 files changed, 53 insertions, 198 deletions
diff --git a/crawl-ref/source/mon-pick.cc b/crawl-ref/source/mon-pick.cc
index d660cb6ef3..74455c17a1 100644
--- a/crawl-ref/source/mon-pick.cc
+++ b/crawl-ref/source/mon-pick.cc
@@ -15,180 +15,35 @@
#include "mon-pick.h"
#include "externs.h"
-
-static int mons_cocytus_level(int mcls);
-static int mons_cocytus_rare(int mcls);
-static int mons_crypt_level(int mcls);
-static int mons_crypt_rare(int mcls);
-static int mons_dis_level(int mcls);
-static int mons_dis_rare(int mcls);
-static int mons_gehenna_level(int mcls);
-static int mons_gehenna_rare(int mcls);
-static int mons_hallblade_level(int mcls);
-static int mons_hallblade_rare(int mcls);
-static int mons_hallelf_level(int mcls);
-static int mons_hallelf_rare(int mcls);
-static int mons_hallzot_level(int mcls);
-static int mons_hallzot_rare(int mcls);
-static int mons_hive_level(int mcls);
-static int mons_hive_rare(int mcls);
-static int mons_lair_level(int mcls);
-static int mons_lair_rare(int mcls);
-static int mons_mineorc_level(int mcls);
-static int mons_mineorc_rare(int mcls);
-static int mons_pitslime_level(int mcls);
-static int mons_pitslime_rare(int mcls);
-static int mons_pitsnake_level(int mcls);
-static int mons_pitsnake_rare(int mcls);
-static int mons_standard_level(int mcls);
-static int mons_standard_rare(int mcls);
-static int mons_swamp_level(int mcls);
-static int mons_swamp_rare(int mcls);
-static int mons_tartarus_level(int mcls);
-static int mons_tartarus_rare(int mcls);
-static int mons_tomb_level(int mcls);
-static int mons_tomb_rare(int mcls);
-static int mons_caverns_level(int mcls);
-static int mons_caverns_rare(int mcls);
-
-/* ******************* BEGIN EXTERNAL FUNCTIONS ******************* */
-int branch_depth(int branch)
-{
- switch (branch)
- {
- case STAIRS_LAIR:
- return 10;
-
- case STAIRS_VAULTS:
- return 8;
-
- case STAIRS_ELVEN_HALLS:
- return 7;
-
- case STAIRS_SLIME_PITS:
- return 6;
-
- case STAIRS_CRYPT:
- case STAIRS_HALL_OF_ZOT:
- case STAIRS_SNAKE_PIT:
- case STAIRS_SWAMP:
- return 5;
-
- case STAIRS_HIVE:
- case STAIRS_ORCISH_MINES:
- return 4;
-
- case STAIRS_TOMB:
- return 3;
-
- case STAIRS_ECUMENICAL_TEMPLE:
- case STAIRS_HALL_OF_BLADES:
- return 1;
-
- default:
- return 0;
- }
-} // end branch_depth()
-
-int branch_stair(int branch)
-{
- switch (branch)
- {
- case BRANCH_ORCISH_MINES: return STAIRS_ORCISH_MINES;
- case BRANCH_HIVE: return STAIRS_HIVE;
- case BRANCH_LAIR: return STAIRS_LAIR;
- case BRANCH_SLIME_PITS: return STAIRS_SLIME_PITS;
- case BRANCH_VAULTS: return STAIRS_VAULTS;
- case BRANCH_CRYPT: return STAIRS_CRYPT;
- case BRANCH_HALL_OF_BLADES: return STAIRS_HALL_OF_BLADES;
- case BRANCH_HALL_OF_ZOT: return STAIRS_HALL_OF_ZOT;
- case BRANCH_ECUMENICAL_TEMPLE: return STAIRS_ECUMENICAL_TEMPLE;
- case BRANCH_SNAKE_PIT: return STAIRS_SNAKE_PIT;
- case BRANCH_ELVEN_HALLS: return STAIRS_ELVEN_HALLS;
- case BRANCH_TOMB: return STAIRS_TOMB;
- case BRANCH_SWAMP: return STAIRS_SWAMP;
- default:
- return -1;
- }
-}
+#include "branch.h"
+#include "misc.h"
// NB - When adding new branches or levels above 50, you must
// change pre-game deletion routine in new_game in newgame.cc
-
int mons_level(int mcls)
{
int monster_level = 0;
- int (*fnc_level) (int) = 0;
if (you.level_type == LEVEL_ABYSS)
monster_level = ((mons_abyss(mcls)) ? 51 : 0);
else if (you.level_type == LEVEL_PANDEMONIUM)
monster_level = ((mons_pan(mcls)) ? 52 : 0);
else
- {
- fnc_level =
- ((you.where_are_you == BRANCH_DIS) ? mons_dis_level :
- (you.where_are_you == BRANCH_GEHENNA) ? mons_gehenna_level :
- (you.where_are_you == BRANCH_COCYTUS) ? mons_cocytus_level :
- (you.where_are_you == BRANCH_TARTARUS) ? mons_tartarus_level :
- (you.where_are_you == BRANCH_ORCISH_MINES) ? mons_mineorc_level :
- (you.where_are_you == BRANCH_HIVE) ? mons_hive_level :
- (you.where_are_you == BRANCH_LAIR) ? mons_lair_level :
- (you.where_are_you == BRANCH_SLIME_PITS) ? mons_pitslime_level :
- (you.where_are_you == BRANCH_CRYPT) ? mons_crypt_level :
- (you.where_are_you == BRANCH_HALL_OF_BLADES)?mons_hallblade_level :
- (you.where_are_you == BRANCH_HALL_OF_ZOT) ? mons_hallzot_level :
- (you.where_are_you == BRANCH_SNAKE_PIT) ? mons_pitsnake_level :
- (you.where_are_you == BRANCH_ELVEN_HALLS) ? mons_hallelf_level :
- (you.where_are_you == BRANCH_TOMB) ? mons_tomb_level :
- (you.where_are_you == BRANCH_SWAMP) ? mons_swamp_level :
- (you.where_are_you == BRANCH_VAULTS) ? mons_standard_level :
- (you.where_are_you == BRANCH_CAVERNS) ? mons_caverns_level
- : mons_standard_level);
-
- monster_level = fnc_level(mcls);
- }
+ monster_level = branches[you.where_are_you].mons_level_function(mcls);
- return (monster_level);
-} // end mons_level()
+ return monster_level;
+}
// higher values returned means the monster is "more common"
// a return value of zero means the monster will never appear {dlb}
int mons_rarity(int mcls)
{
- int monster_rarity = 0;
- int (*fnc_rarity) (int) = 0;
-
// now, what about pandemonium ??? {dlb}
if (you.level_type == LEVEL_ABYSS)
return mons_rare_abyss(mcls);
else
- {
- fnc_rarity =
- ((you.where_are_you == BRANCH_DIS) ? mons_dis_rare :
- (you.where_are_you == BRANCH_GEHENNA) ? mons_gehenna_rare :
- (you.where_are_you == BRANCH_COCYTUS) ? mons_cocytus_rare :
- (you.where_are_you == BRANCH_TARTARUS) ? mons_tartarus_rare :
- (you.where_are_you == BRANCH_ORCISH_MINES) ? mons_mineorc_rare :
- (you.where_are_you == BRANCH_HIVE) ? mons_hive_rare :
- (you.where_are_you == BRANCH_LAIR) ? mons_lair_rare :
- (you.where_are_you == BRANCH_SLIME_PITS) ? mons_pitslime_rare :
- (you.where_are_you == BRANCH_CRYPT) ? mons_crypt_rare :
- (you.where_are_you == BRANCH_HALL_OF_BLADES)?mons_hallblade_rare :
- (you.where_are_you == BRANCH_HALL_OF_ZOT) ? mons_hallzot_rare :
- (you.where_are_you == BRANCH_SNAKE_PIT) ? mons_pitsnake_rare :
- (you.where_are_you == BRANCH_ELVEN_HALLS) ? mons_hallelf_rare :
- (you.where_are_you == BRANCH_TOMB) ? mons_tomb_rare :
- (you.where_are_you == BRANCH_SWAMP) ? mons_swamp_rare :
- (you.where_are_you == BRANCH_VAULTS) ? mons_standard_rare :
- (you.where_are_you == BRANCH_CAVERNS) ? mons_caverns_rare
- : mons_standard_rare);
-
- monster_rarity = fnc_rarity(mcls);
- }
-
- return (monster_rarity);
-} // end mons_rarity()
+ return branches[you.where_are_you].mons_rarity_function(mcls);
+}
bool mons_abyss(int mcls)
{
@@ -559,7 +414,7 @@ bool mons_pan(int mcls)
/* ******************** END EXTERNAL FUNCTIONS ******************** */
-static int mons_dis_level(int mcls)
+int mons_dis_level(int mcls)
{
int mlev = 26;
@@ -632,7 +487,7 @@ static int mons_dis_level(int mcls)
return (mlev);
} // end mons_dis_level()
-static int mons_dis_rare(int mcls)
+int mons_dis_rare(int mcls)
{
switch (mcls)
{
@@ -719,7 +574,7 @@ static int mons_dis_rare(int mcls)
}
} // end mons_dis_rare()
-static int mons_gehenna_level(int mcls)
+int mons_gehenna_level(int mcls)
{
int mlev = 26;
@@ -785,7 +640,7 @@ static int mons_gehenna_level(int mcls)
return (mlev);
} // end mons_gehenna_level()
-static int mons_gehenna_rare(int mcls)
+int mons_gehenna_rare(int mcls)
{
switch (mcls)
{
@@ -872,7 +727,7 @@ static int mons_gehenna_rare(int mcls)
}
} // end mons_gehenna_rare()
-static int mons_cocytus_level(int mcls)
+int mons_cocytus_level(int mcls)
{
int mlev = 26;
@@ -933,7 +788,7 @@ static int mons_cocytus_level(int mcls)
return (mlev);
} // end mons_cocytus_level()
-static int mons_cocytus_rare(int mcls)
+int mons_cocytus_rare(int mcls)
{
switch (mcls)
{
@@ -1008,7 +863,7 @@ static int mons_cocytus_rare(int mcls)
}
} // end mons_cocytus_rare()
-static int mons_tartarus_level(int mcls)
+int mons_tartarus_level(int mcls)
{
int mlev = 26;
@@ -1077,7 +932,7 @@ static int mons_tartarus_level(int mcls)
return (mlev);
} // end mons_tartarus_level()
-static int mons_tartarus_rare(int mcls)
+int mons_tartarus_rare(int mcls)
{
switch (mcls)
{
@@ -1175,9 +1030,9 @@ static int mons_tartarus_rare(int mcls)
}
}
-static int mons_mineorc_level(int mcls)
+int mons_mineorc_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_ORCISH_MINES] + 1;
+ int mlev = absdungeon_depth(BRANCH_ORCISH_MINES, 1);
switch (mcls)
{
@@ -1219,7 +1074,7 @@ static int mons_mineorc_level(int mcls)
return (mlev);
} // end mons_mineorc_level()
-static int mons_mineorc_rare(int mcls)
+int mons_mineorc_rare(int mcls)
{
switch (mcls)
{
@@ -1268,9 +1123,9 @@ static int mons_mineorc_rare(int mcls)
}
} // end mons_mineorc_rare()
-static int mons_hive_level(int mcls)
+int mons_hive_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_HIVE] + 1;
+ int mlev = absdungeon_depth(BRANCH_HIVE, 1);
switch (mcls)
{
@@ -1290,7 +1145,7 @@ static int mons_hive_level(int mcls)
return (mlev);
} // end mons_hive_level()
-static int mons_hive_rare(int mcls)
+int mons_hive_rare(int mcls)
{
switch (mcls)
{
@@ -1308,9 +1163,9 @@ static int mons_hive_rare(int mcls)
}
} // end mons_hive_rare()
-static int mons_lair_level(int mcls)
+int mons_lair_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_LAIR] + 1;
+ int mlev = absdungeon_depth(BRANCH_LAIR, 1);
switch (mcls)
{
@@ -1410,7 +1265,7 @@ static int mons_lair_level(int mcls)
return (mlev);
} // end mons_lair_level()
-static int mons_lair_rare(int mcls)
+int mons_lair_rare(int mcls)
{
switch (mcls)
{
@@ -1530,9 +1385,9 @@ static int mons_lair_rare(int mcls)
}
} // end mons_lair_rare()
-static int mons_pitslime_level(int mcls)
+int mons_pitslime_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_SLIME_PITS] + 1;
+ int mlev = absdungeon_depth(BRANCH_SLIME_PITS, 1);
switch (mcls)
@@ -1577,7 +1432,7 @@ static int mons_pitslime_level(int mcls)
return (mlev);
} // end mons_pitslime_level()
-static int mons_pitslime_rare(int mcls)
+int mons_pitslime_rare(int mcls)
{
switch (mcls)
{
@@ -1619,9 +1474,9 @@ static int mons_pitslime_rare(int mcls)
}
} // end mons_pitslime_rare()
-static int mons_crypt_level(int mcls)
+int mons_crypt_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_CRYPT] + 1;
+ int mlev = absdungeon_depth(BRANCH_CRYPT, 1);
switch (mcls)
{
@@ -1681,7 +1536,7 @@ static int mons_crypt_level(int mcls)
return (mlev);
} // end mons_crypt_level()
-static int mons_crypt_rare(int mcls)
+int mons_crypt_rare(int mcls)
{
switch (mcls)
{
@@ -1761,9 +1616,9 @@ static int mons_crypt_rare(int mcls)
}
} // end mons_crypt_rare()
-static int mons_pitsnake_level(int mcls)
+int mons_pitsnake_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_SNAKE_PIT] + 1;
+ int mlev = absdungeon_depth(BRANCH_SNAKE_PIT, 1);
switch (mcls)
{
@@ -1800,7 +1655,7 @@ static int mons_pitsnake_level(int mcls)
return (mlev);
} // end mons_pitsnake_level()
-static int mons_pitsnake_rare(int mcls)
+int mons_pitsnake_rare(int mcls)
{
switch (mcls)
{
@@ -1832,9 +1687,9 @@ static int mons_pitsnake_rare(int mcls)
}
} // end mons_pitsnake_rare()
-static int mons_hallelf_level(int mcls)
+int mons_hallelf_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_ELVEN_HALLS] + 1;
+ int mlev = absdungeon_depth(BRANCH_ELVEN_HALLS, 1);
switch (mcls)
{
@@ -1886,7 +1741,7 @@ static int mons_hallelf_level(int mcls)
return (mlev);
} // end mons_hallelf_level()
-static int mons_hallelf_rare(int mcls)
+int mons_hallelf_rare(int mcls)
{
switch (mcls)
{
@@ -1943,9 +1798,9 @@ static int mons_hallelf_rare(int mcls)
}
} // end mons_hallelf_rare()
-static int mons_tomb_level(int mcls)
+int mons_tomb_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_CRYPT] + 1;
+ int mlev = absdungeon_depth(BRANCH_TOMB, 1);
switch (mcls)
{
@@ -1980,7 +1835,7 @@ static int mons_tomb_level(int mcls)
return (mlev);
} // end mons_tomb_level()
-static int mons_tomb_rare(int mcls)
+int mons_tomb_rare(int mcls)
{
switch (mcls)
{
@@ -2019,9 +1874,9 @@ static int mons_tomb_rare(int mcls)
}
} // end mons_tomb_rare()
-static int mons_swamp_level(int mcls)
+int mons_swamp_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_SWAMP] + 1;
+ int mlev = absdungeon_depth(BRANCH_SWAMP, 1);
switch (mcls)
{
@@ -2079,7 +1934,7 @@ static int mons_swamp_level(int mcls)
return (mlev);
} // end mons_swamp_level()
-static int mons_swamp_rare(int mcls)
+int mons_swamp_rare(int mcls)
{
switch (mcls)
{
@@ -2165,15 +2020,15 @@ static int mons_swamp_rare(int mcls)
}
} // end mons_swamp_rare()
-static int mons_hallblade_level(int mcls)
+int mons_hallblade_level(int mcls)
{
if (mcls == MONS_DANCING_WEAPON)
- return (you.branch_stairs[STAIRS_HALL_OF_BLADES] + 1);
+ return absdungeon_depth(BRANCH_HALL_OF_BLADES, 1);
else
return 0;
} // end mons_hallblade_level
-static int mons_hallblade_rare(int mcls)
+int mons_hallblade_rare(int mcls)
{
return ((mcls == MONS_DANCING_WEAPON) ? 1000 : 0);
} // end mons_hallblade_rare()
@@ -2187,9 +2042,9 @@ static int mons_hallblade_rare(int mcls)
// - ouch ouch.cc (death message)
// - and here...
-static int mons_hallzot_level(int mcls)
+int mons_hallzot_level(int mcls)
{
- int mlev = you.branch_stairs[STAIRS_HALL_OF_ZOT];
+ int mlev = absdungeon_depth(BRANCH_HALL_OF_ZOT, 0);
switch (mcls)
{
@@ -2242,7 +2097,7 @@ static int mons_hallzot_level(int mcls)
return (mlev);
} // end mons_hallzot_level()
-static int mons_hallzot_rare(int mcls)
+int mons_hallzot_rare(int mcls)
{
switch (mcls)
{
@@ -2293,10 +2148,10 @@ static int mons_hallzot_rare(int mcls)
}
} // end mons_hallzot_rare()
-static int mons_caverns_level( int mcls )
+int mons_caverns_level( int mcls )
{
- int mlev = you.branch_stairs[STAIRS_CAVERNS] + 1;
+ int mlev = absdungeon_depth(BRANCH_CAVERNS, 1);
switch (mcls)
{
@@ -2329,7 +2184,7 @@ static int mons_caverns_level( int mcls )
return (mlev);
}
-static int mons_caverns_rare( int mcls )
+int mons_caverns_rare( int mcls )
{
switch (mcls)
{
@@ -2355,7 +2210,7 @@ static int mons_caverns_rare( int mcls )
}
}
-static int mons_standard_level(int mcls)
+int mons_standard_level(int mcls)
{
switch (mcls)
{
@@ -2604,7 +2459,7 @@ static int mons_standard_level(int mcls)
}
} // end mons_standard_level()
-static int mons_standard_rare(int mcls)
+int mons_standard_rare(int mcls)
{
switch (mcls)
{