summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-29 11:45:50 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-29 11:45:50 +0000
commit00af579c24de8cec2ed28065c30164f30ccac64e (patch)
tree7bf11cb690abbc5005fd8c58d93972caca59ecd7
parent45afdf8ec9515a1510b08acdde4e5f65b9c30262 (diff)
downloadcrawl-ref-00af579c24de8cec2ed28065c30164f30ccac64e.tar.gz
crawl-ref-00af579c24de8cec2ed28065c30164f30ccac64e.zip
Add gods' powers and abilities to their descriptions, viewable via ^!
(as well as when praying at an altar) and when searching the database. Texts might need to be tweaked a bit but it's a *huge* improvement. (Thanks to whoever had that idea!) git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6216 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/acr.cc5
-rw-r--r--crawl-ref/source/command.cc12
-rw-r--r--crawl-ref/source/dat/descript/gods.txt90
-rw-r--r--crawl-ref/source/describe.cc44
-rw-r--r--crawl-ref/source/religion.cc25
-rw-r--r--crawl-ref/source/religion.h5
-rw-r--r--crawl-ref/source/tutorial.cc9
7 files changed, 148 insertions, 42 deletions
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc
index e90e785694..fb3514c1be 100644
--- a/crawl-ref/source/acr.cc
+++ b/crawl-ref/source/acr.cc
@@ -1971,8 +1971,9 @@ void process_command( command_type cmd )
{
mpr("Only intelligent permanent allies may equip themselves, "
"and these two restrictions are only met by allies of the "
- "followers of three gods in the pantheon: the Shining "
- "One, Yredelemnul, and Beogh.", MSGCH_TUTORIAL);
+ "followers of four gods in the pantheon: the Shining "
+ "One, Yredelemnul, Kikubaaqudgha, and Beogh.",
+ MSGCH_TUTORIAL);
}
break;
}
diff --git a/crawl-ref/source/command.cc b/crawl-ref/source/command.cc
index 776d0f76e8..38a9180a65 100644
--- a/crawl-ref/source/command.cc
+++ b/crawl-ref/source/command.cc
@@ -1099,10 +1099,16 @@ static bool _do_description(std::string key, std::string footer = "")
god_type which_god = string_to_god(key.c_str());
if (which_god != GOD_NO_GOD)
{
- desc += EOL EOL;
- desc += print_god_likes(which_god);
+ std::string help = get_god_powers(which_god);
+ if (!help.empty())
+ {
+ desc += EOL;
+ desc += help;
+ }
+ desc += EOL;
+ desc += get_god_likes(which_god);
- std::string help = print_god_dislikes(which_god);
+ help = get_god_dislikes(which_god);
if (!help.empty())
{
desc += EOL EOL;
diff --git a/crawl-ref/source/dat/descript/gods.txt b/crawl-ref/source/dat/descript/gods.txt
index 54a67d8805..f936ce7062 100644
--- a/crawl-ref/source/dat/descript/gods.txt
+++ b/crawl-ref/source/dat/descript/gods.txt
@@ -124,3 +124,93 @@ their devotion by bloodshed and sacrifice. Devout followers of Beogh
can smite their foes, and especially fervent devotees of Beogh may even
gain followers of their own, for the orcs still look for their Messiah.
%%%%
+Zin powers
+
+Zin grants followers the ability to preach to the unenlightened masses
+with various results. Later, followers will gain a power to help them
+purify and strengthen their body, and eventually they can find
+temporary safety in a divine refuge. Apart from that, Zin may
+occasionally directly intervene to save a follower's life.
+%%%%
+The Shining One powers
+
+Followers will gain use of a divine shield to protect them in battle.
+Later, they can hurl blasts of cleansing flame that are particularly
+effective against unholy creatures, and eventually they can ask
+the Shining One to send them help in the form of a Daeva, a powerful
+divine being. The Shining One may occasionally directly intervene to
+save a follower's life.
+%%%%
+Kikubaaqudgha powers
+
+Kikubaaqudgha offers a power to recall your undead followers to your
+near surroundings, will protect you against side effects of necromantic
+magic, and allow you to permanently enslave undead creatures.
+Eventually, you can summon an emissary of death to fight with you.
+%%%%
+Yredelemnul powers
+
+Yredelemnul gives you powers to raise corpses to fight on your side, to
+recall your undead followers to your vicinity, and to drain the life
+force of living creatures. Eventually, you'll gain a power to sway
+hostile undeads' loyalties and make them fight for you instead.
+Sometimes, Yredelemnul may directly intervene to save a follower's life.
+%%%%
+# no active powers of Vehumet
+%%%%
+Okawaru powers
+
+Followers will soon gain the ability to temporarily increase their
+strength, and, much later, to haste themselves. Okawaru will eventually
+gift followers with weapons and armour.
+%%%%
+Makhleb powers
+
+Makhleb offers followers various means to inflict immense damage and to
+call in help from powerful demons.
+%%%%
+Sif Muna powers
+
+Followers of Sif Muna can channel magical energy when they need it the
+most and they gain a power to forget any spell at will, so as to learn
+new ones. Sif Muna protects spellcasters against the negative effects
+of miscasting a spell. Over time, followers will receive any spellbook
+to be found in the realm.
+%%%%
+Trog powers
+
+Trog offers various powers to help you in battle, namely the ability to
+go berserk at will and the ability to make wounds heal more quickly.
+Later, followers may call in powerful raging allies. Eventually, Trog
+will gift followers with weapons focused on damage.
+%%%%
+Nemelex Xobeh powers
+
+Followers of Nemelex Xobeh gain various ways to influence fate when
+playing cards.
+%%%%
+Elyvilon powers
+
+The healer god offers followers various means to heal themselves and
+others, including ones to rid their body from effects surpassing those
+of simple damage. Elyvilon will occasionally directly intervene to
+save a follower's life, and is almost certain to do so during prayer.
+%%%%
+Lugonu powers
+
+Followers of Lugonu gain powers to depart the Abyss at will, to banish
+monsters there, and eventually to gate themselves into this realm of
+chaos - at the cost of a part of their soul.
+Apart from that, they may cause great damage to monsters, and gain an
+ability to corrupt the ordered world, enabling them to open a gate for
+creatures of the Abyss to pass through.
+%%%%
+Beogh powers
+
+Beogh encourages followers to make use of orcish gear to be found in
+the dungeon. Followers can smite their foes and may even gain orcish
+followers of their own who may be blessed by Beogh in battle, and can
+be recalled within a level as needed. Eventually, they'll gain the
+power to walk on water.
+Beogh will sometimes directly intervene to save a follower's life.
+%%%%
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc
index f472fc12dc..21d5db3bc6 100644
--- a/crawl-ref/source/describe.cc
+++ b/crawl-ref/source/describe.cc
@@ -2698,11 +2698,19 @@ static void _detailed_god_description(god_type which_god)
}
else
{
- std::string broken = print_god_likes(which_god, true);
+ std::string broken = get_god_powers(which_god);
+ if (!broken.empty())
+ {
+ linebreak_string2(broken, width);
+ formatted_string::parse_block(broken, false).display();
+ cprintf(EOL);
+ cprintf(EOL);
+ }
+ broken = get_god_likes(which_god, true);
linebreak_string2(broken, width);
formatted_string::parse_block(broken, false).display();
- broken = print_god_dislikes(which_god, true);
+ broken = get_god_dislikes(which_god, true);
if (!broken.empty())
{
cprintf(EOL);
@@ -2721,24 +2729,22 @@ static void _detailed_god_description(god_type which_god)
break;
case GOD_ELYVILON:
- broken = "Under prayer, there is a chance, depending on your "
- "piety, that Elyvilon will protect you from deadly "
- "damage. On the other hand, Elyvilon will put you "
- "under penance should you be praying and attack a "
- "being which is neither evil nor undead. "
+ broken = "Under prayer, with a chance depending on piety, Elyvilon "
+ "may protect you from deadly damage. "
+ "On the other hand, should you be praying and attack a "
+ "being which is neither evil nor undead, you'll be put "
+ "under penance."
EOL EOL
- "You can use your divine healing abilities on "
- "monsters. This may turn hostile ones neutral, "
- "temporarily or permanently. Neutralising works "
- "better on natural beasts and worse on demons and "
- "undead. If the neutralisation does not succeed, the "
- "Magic will be spent, but the monster will not be "
- "healed. If you manage to neutralise the monster, you "
- "gain piety and the monster is healed. Should a "
- "monster become permanently neutral, then you gain "
- "half of its experience value and the monster tries "
- "to leave the level as quickly as possible (and "
- "vanishes thereafter).";
+ "If you use your healing abilities on monsters, this may "
+ "turn hostile ones neutral, temporarily or permanently. "
+ "Neutralising works better on natural beasts and worse on "
+ "demons and undead. If the neutralisation does not "
+ "succeed, the Magic will be spent, but the monster will "
+ "not be healed. If you manage to neutralise the monster, "
+ "you gain piety and the monster is healed. Should a "
+ "monster become permanently neutral, you'll gain "
+ "half of its experience value and the monster will "
+ "leave the level as quickly as possible.";
break;
case GOD_NEMELEX_XOBEH:
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index cc198b1ec7..f6413ca393 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -455,23 +455,33 @@ bool is_priest_god(god_type god)
bool god_gives_permanent_followers(god_type god)
{
- // Only TSO, Yredelemnul, and Beogh do this, but if you switch from
- // TSO to another good god, you keep your (non-daeva) permanent
+ // Only TSO, Yredelemnul, Kikubaaqudgha and Beogh do this, but if you
+ // switch from TSO to another good god, you keep your (non-daeva) permanent
// followers, so count the other good gods here as well.
return (god == GOD_SHINING_ONE
- || you.worshipped[GOD_SHINING_ONE] && is_good_god(god)
+ || god == GOD_BEOGH
|| god == GOD_YREDELEMNUL
- || god == GOD_BEOGH);
+ || god == GOD_KIKUBAAQUDGHA
+ || you.worshipped[GOD_SHINING_ONE] && is_good_god(god));
}
+std::string get_god_powers(god_type which_god)
+{
+ // Return early for the special cases.
+ if (which_god == GOD_NO_GOD || which_god == GOD_XOM)
+ return "";
+
+ std::string result = getLongDescription(god_name(which_god) + " powers");
+ return (result);
+}
-std::string print_god_likes(god_type which_god, bool verbose)
+std::string get_god_likes(god_type which_god, bool verbose)
{
// Return early for the special cases.
if (which_god == GOD_NO_GOD || which_god == GOD_XOM)
return "";
- std::string text = god_name(which_god);
+ std::string text = god_name(which_god);
std::vector<std::string> likes;
// Unique/unusual piety gain methods first.
@@ -615,8 +625,7 @@ std::string print_god_likes(god_type which_god, bool verbose)
return (text);
}
-// verbose currently unused
-std::string print_god_dislikes(god_type which_god, bool /*verbose*/)
+std::string get_god_dislikes(god_type which_god, bool /*verbose*/)
{
// Return early for the special cases.
if (which_god == GOD_NO_GOD || which_god == GOD_XOM)
diff --git a/crawl-ref/source/religion.h b/crawl-ref/source/religion.h
index 044130133b..fbd6afbf38 100644
--- a/crawl-ref/source/religion.h
+++ b/crawl-ref/source/religion.h
@@ -62,8 +62,9 @@ int piety_breakpoint(int i);
std::string god_name(god_type which_god, bool long_name = false);
god_type string_to_god(const char *name);
-std::string print_god_likes(god_type which_god, bool verbose = false);
-std::string print_god_dislikes(god_type which_god, bool verbose = false);
+std::string get_god_powers(god_type which_god);
+std::string get_god_likes(god_type which_god, bool verbose = false);
+std::string get_god_dislikes(god_type which_god, bool verbose = false);
void dec_penance(int val);
void dec_penance(god_type god, int val);
diff --git a/crawl-ref/source/tutorial.cc b/crawl-ref/source/tutorial.cc
index 803d7c4192..4a7979b991 100644
--- a/crawl-ref/source/tutorial.cc
+++ b/crawl-ref/source/tutorial.cc
@@ -1384,15 +1384,8 @@ static void _new_god_conduct()
_get_tutorial_cols());
text.str("");
- formatted_message_history(print_god_likes(you.religion, true).c_str(),
- MSGCH_TUTORIAL, 0, _get_tutorial_cols());
- formatted_message_history(print_god_dislikes(you.religion, true).c_str(),
- MSGCH_TUTORIAL, 0, _get_tutorial_cols());
-
- text.str("");
text << "\nYou can check your god's likes and dislikes, as well as your "
- "current standing and divine abilites, at any time by typing "
- "<w>^</w> "
+ "current standing and divine abilites, by typing <w>^</w> "
#ifdef USE_TILE
"(alternatively press <w>Shift</w> while "
"<w>right-clicking</w> on your avatar)"