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
KEYK3CH5J46U6TTOKTWRNMYTZXMQXFVEAZUC4ZQ4QCOSJHVIBDRQC
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 );
}
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);
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);
}
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] );