summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-11-22 14:03:00 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-11-22 14:03:00 +0000
commit3567af433bb8b8121d3c71e02876257c0d09b717 (patch)
treebe0f829834ef81c2d803cc6b51017f43dae3bca1
parentb1c3416374836953b47f620bdb88dfd940da2ae1 (diff)
downloadcrawl-ref-3567af433bb8b8121d3c71e02876257c0d09b717.tar.gz
crawl-ref-3567af433bb8b8121d3c71e02876257c0d09b717.zip
[1597623] Added draconian descriptions. I've editorialised freely.
Draconian shifters are no longer helpless blinkers. Draconian callers are a little more evil. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@467 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/describe.cc109
-rw-r--r--crawl-ref/source/enum.h2
-rw-r--r--crawl-ref/source/mon-spll.h8
-rw-r--r--crawl-ref/source/mon-util.cc2
-rw-r--r--crawl-ref/source/monplace.cc13
-rw-r--r--crawl-ref/source/mstuff2.cc35
6 files changed, 125 insertions, 44 deletions
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc
index f2608ed7ac..1c1bad3568 100644
--- a/crawl-ref/source/describe.cc
+++ b/crawl-ref/source/describe.cc
@@ -4483,6 +4483,89 @@ void describe_spell(int spelled)
#endif
} // end describe_spell()
+static std::string describe_draconian_role(const monsters *mon)
+{
+ switch (mon->type)
+ {
+ case MONS_DRACONIAN_SHIFTER:
+ return "It darts around disconcertingly without taking a step.";
+ case MONS_DRACONIAN_SCORCHER:
+ return "Its scales are sooty black from years of magical pyrotechnics.";
+ case MONS_DRACONIAN_ZEALOT:
+ return "In its gaze you see all the malefic power of its "
+ "terrible god.";
+ case MONS_DRACONIAN_ANNIHILATOR:
+ return "Crackling balls of pure energy hum and spark up and down its "
+ "scaled fists and arms.";
+ case MONS_DRACONIAN_CALLER:
+ return "It looks especially reptilian, and eager for company.";
+ case MONS_DRACONIAN_MONK:
+ return "It looks unnaturally strong and dangerous with its fists.";
+ case MONS_DRACONIAN_KNIGHT:
+ return "It wields a deadly weapon with menacing efficiency.";
+ }
+ return ("");
+}
+
+static std::string describe_draconian_colour(int species)
+{
+ switch (species)
+ {
+ case MONS_BLACK_DRACONIAN:
+ return "Sparks crackle and flare out of its mouth and nostrils.";
+ case MONS_MOTTLED_DRACONIAN:
+ return "Liquid flames drip from its mouth.";
+ case MONS_YELLOW_DRACONIAN:
+ return "Acid fumes swirl around it.";
+ case MONS_GREEN_DRACONIAN:
+ return "Venom steams and drips from its jaws.";
+ case MONS_PURPLE_DRACONIAN:
+ return "Its outline shimmers with wild energies.";
+ case MONS_RED_DRACONIAN:
+ return "Smoke pours from its nostrils.";
+ case MONS_WHITE_DRACONIAN:
+ return "Frost pours from its nostrils.";
+ case MONS_PALE_DRACONIAN:
+ return "It is cloaked in a pall of superheated steam.";
+ }
+ return ("");
+}
+
+static std::string describe_draconian(const monsters *mon)
+{
+ std::string description;
+ const int subsp = draco_subspecies( mon );
+
+ if (subsp == MONS_DRACONIAN)
+ description += "A ";
+ else
+ description += "An enormous, muscular ";
+
+ switch (subsp)
+ {
+ case MONS_DRACONIAN: description += "brown-"; break;
+ case MONS_BLACK_DRACONIAN: description += "black-"; break;
+ case MONS_MOTTLED_DRACONIAN: description += "mottled-"; break;
+ case MONS_YELLOW_DRACONIAN: description += "yellow-"; break;
+ case MONS_GREEN_DRACONIAN: description += "green-"; break;
+ case MONS_PURPLE_DRACONIAN: description += "purple-"; break;
+ case MONS_RED_DRACONIAN: description += "red-"; break;
+ case MONS_WHITE_DRACONIAN: description += "white-"; break;
+ case MONS_PALE_DRACONIAN: description += "pale-"; break;
+ default:
+ break;
+ }
+
+ description += "scaled humanoid with wings.";
+
+ if (subsp != MONS_DRACONIAN)
+ description += " " + describe_draconian_colour(subsp);
+
+ if (subsp != mon->type)
+ description += " " + describe_draconian_role(mon);
+
+ return (description);
+}
//---------------------------------------------------------------
//
@@ -4688,8 +4771,8 @@ void describe_monsters(int class_described, unsigned char which_mons)
case MONS_ORC_PRIEST:
description += "A servant of the ancient and cruel gods of the orcs,"
- " dressed in long robe. he's mumbling some strange prayers. "
- "Hope that they will remain unheard.";
+ " dressed in long robe. It continually mumbles strange prayers. "
+ "Hope that they remain unheard.";
break;
case MONS_ORC_HIGH_PRIEST:
@@ -5884,25 +5967,7 @@ void describe_monsters(int class_described, unsigned char which_mons)
case MONS_DRACONIAN_MONK:
case MONS_DRACONIAN_KNIGHT:
{
- description += "A ";
-
- const int subsp = draco_subspecies( &menv[which_mons] );
- switch (subsp)
- {
- case MONS_DRACONIAN: description += "brown "; break;
- case MONS_BLACK_DRACONIAN: description += "black "; break;
- case MONS_MOTTLED_DRACONIAN: description += "mottled "; break;
- case MONS_YELLOW_DRACONIAN: description += "yellow "; break;
- case MONS_GREEN_DRACONIAN: description += "green "; break;
- case MONS_PURPLE_DRACONIAN: description += "purple "; break;
- case MONS_RED_DRACONIAN: description += "red "; break;
- case MONS_WHITE_DRACONIAN: description += "white "; break;
- case MONS_PALE_DRACONIAN: description += "pale "; break;
- default:
- break;
- }
-
- description += "scaled humanoid with wings.";
+ description += describe_draconian( &menv[which_mons] );
break;
}
case MONS_PLAYER_GHOST:
@@ -6182,7 +6247,7 @@ void describe_monsters(int class_described, unsigned char which_mons)
{
if (!found_spell)
{
- description += "$Monster Spells:$";
+ description += "$$Monster Spells:$";
found_spell = true;
}
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index 4bf996d51f..062eac939c 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -2425,7 +2425,7 @@ enum mon_spell_type
MS_CONTROLLED_BLINK,
MS_CONTROL_UNDEAD,
MS_MIASMA, // 55
- MS_SUMMON_LIZARDS,
+ MS_SUMMON_DRAKES,
MS_BLINK_OTHER,
MS_DISPEL_UNDEAD,
MS_HELLFROST,
diff --git a/crawl-ref/source/mon-spll.h b/crawl-ref/source/mon-spll.h
index 650a5103ee..8498265dde 100644
--- a/crawl-ref/source/mon-spll.h
+++ b/crawl-ref/source/mon-spll.h
@@ -760,14 +760,14 @@
{ MST_DRAC_CALLER,
MS_NO_SPELL,
- MS_SUMMON_LIZARDS,
- MS_SUMMON_LIZARDS,
+ MS_SUMMON_DRAKES,
+ MS_SUMMON_DRAKES,
MS_NO_SPELL,
MS_NO_SPELL,
- MS_SUMMON_LIZARDS },
+ MS_SUMMON_DRAKES },
{ MST_DRAC_SHIFTER,
- MS_NO_SPELL,
+ MS_BANISHMENT,
MS_BLINK_OTHER,
MS_BLINK,
MS_NO_SPELL,
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index f4ef56fb8d..111718ec71 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -126,7 +126,7 @@ static const char *monster_spell_name[] = {
"Controlled Blink",
"Control Undead",
"Miasma",
- "Summon Lizards",
+ "Summon Drakes",
"Blink Other",
"Dispel Undead",
"Hellfrost",
diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc
index 98bb07551d..65cea78bb2 100644
--- a/crawl-ref/source/monplace.cc
+++ b/crawl-ref/source/monplace.cc
@@ -1486,14 +1486,11 @@ monster_type rand_dragon( dragon_class_type type )
{
case DRAGON_LIZARD:
temp_rand = random2(100);
- summoned = ((temp_rand > 85) ? MONS_GIANT_GECKO :
- (temp_rand > 59) ? MONS_GIANT_LIZARD :
- (temp_rand > 34) ? MONS_GIANT_IGUANA :
- (temp_rand > 22) ? MONS_GILA_MONSTER :
- (temp_rand > 11) ? MONS_KOMODO_DRAGON :
- (temp_rand > 8) ? MONS_FIREDRAKE :
- (temp_rand > 2) ? MONS_SWAMP_DRAKE
- : MONS_DEATH_DRAKE );
+ summoned = ((temp_rand > 80) ? MONS_SWAMP_DRAKE :
+ (temp_rand > 59) ? MONS_KOMODO_DRAGON :
+ (temp_rand > 34) ? MONS_FIREDRAKE :
+ (temp_rand > 11) ? MONS_DEATH_DRAKE :
+ MONS_DRAGON);
break;
case DRAGON_DRACONIAN:
diff --git a/crawl-ref/source/mstuff2.cc b/crawl-ref/source/mstuff2.cc
index c47363ad7d..f70e253edf 100644
--- a/crawl-ref/source/mstuff2.cc
+++ b/crawl-ref/source/mstuff2.cc
@@ -575,7 +575,7 @@ void mons_cast(struct monsters *monster, struct bolt &pbolt, int spell_cast)
return;
// Journey -- Added in Summon Lizards and Draconian
- case MS_SUMMON_LIZARDS:
+ case MS_SUMMON_DRAKES:
if (!mons_friendly( monster ) && !monsterNearby &&
monster_abjuration( 1, true ) > 0 && coinflip())
{
@@ -589,11 +589,27 @@ void mons_cast(struct monsters *monster, struct bolt &pbolt, int spell_cast)
if (duration > ENCH_ABJ_VI)
duration = ENCH_ABJ_VI;
- for (sumcount = 0; sumcount < sumcount2; sumcount++)
{
- create_monster( rand_dragon( DRAGON_LIZARD ), duration,
- SAME_ATTITUDE(monster),
- monster->x, monster->y, monster->foe, 250 );
+ std::vector<int> monsters;
+
+ for (sumcount = 0; sumcount < sumcount2; sumcount++)
+ {
+ const int mons = rand_dragon( DRAGON_LIZARD );
+ if (mons == MONS_DRAGON)
+ {
+ monsters.clear();
+ monsters.push_back( rand_dragon(DRAGON_DRAGON) );
+ break;
+ }
+ monsters.push_back( mons );
+ }
+
+ for (int i = 0, size = monsters.size(); i < size; ++i)
+ {
+ create_monster( monsters[i], duration,
+ SAME_ATTITUDE(monster),
+ monster->x, monster->y, monster->foe, 250 );
+ }
}
break;
@@ -650,7 +666,9 @@ void mons_cast(struct monsters *monster, struct bolt &pbolt, int spell_cast)
void setup_mons_cast(struct monsters *monster, struct bolt &pbolt, int spell_cast)
{
// always set these -- used by things other than fire_beam()
- pbolt.ench_power = 12 * monster->hit_dice;
+
+ // [ds] Used to be 12 * MHD, reduced to 7 * HD.
+ pbolt.ench_power = 7 * monster->hit_dice;
if (spell_cast == MS_TELEPORT)
pbolt.ench_power = 2000;
@@ -697,7 +715,7 @@ void setup_mons_cast(struct monsters *monster, struct bolt &pbolt, int spell_cas
case MS_SUMMON_BEAST: // Geryon
case MS_SUMMON_UNDEAD: // summon undead around player
case MS_SUMMON_MUSHROOMS:
- case MS_SUMMON_LIZARDS:
+ case MS_SUMMON_DRAKES:
case MS_TORMENT:
case MS_SUMMON_DEMON_GREATER:
case MS_CANTRIP:
@@ -716,7 +734,8 @@ void setup_mons_cast(struct monsters *monster, struct bolt &pbolt, int spell_cas
pbolt.rangeMax = theBeam.rangeMax;
pbolt.hit = theBeam.hit;
pbolt.damage = theBeam.damage;
- pbolt.ench_power = theBeam.ench_power;
+ if (theBeam.ench_power != -1)
+ pbolt.ench_power = theBeam.ench_power;
pbolt.type = theBeam.type;
pbolt.flavour = theBeam.flavour;
pbolt.thrower = theBeam.thrower;