being, make TSO sometimes avenge it with cleansing flame.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7360 c06c8d41-db1a-0410-9941-cceddc491573
BEPZL7D7JJHJUUDCVLGJRKKWM7NUAC7X2SU5XJMEASE6YTB53P3AC
BNRY5YIXLFE2TDNU2JQHWWXJQVWNSEWQ52DU7XUWIT5DZWKGBDDAC
GGDX26OLH2EBB2ZBJCBIE3UDPHWEMTMSOEJBJIWCBLUK3HEY3PKQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
IQGGFC563RBS7GDOACKCLXK752EE5RC3T6G5L6H446SXTMSA7T2AC
J5QZ5KFSCOJBBLE5PVTSFYE7QSHPWGH574TIDGWSLVOAIYTTUKVAC
6MGFBTLOHGYVF3XCAKXCBIN43BL3F7X7X3BN6QFTOBAIZFT3FSVQC
3YKYP4IHQWG4NAOP4GANSZS24JPORQXVJYO7DMRXAF4NVPAHIDBQC
SM5TRAZJD7BTJUVJ4HUNKROCH7DLD24SU5II6FQSJYIPQ2XA4RUAC
RRNEVUYOK5S4M4QH77N34IXSSNUXVQAIZQLXAQKQCRITMPUKGP6AC
SWOYPTHJAWFEDBMB3ROT33VQZIXGZD5UOXEV456DDUENW2HGA66QC
6IX7V3PY4ZESJO3MCEXXRQWT2OTJCGUU5LQQZF76YNE4XHSW523QC
5CCE6LI3KYGMU3UPRY4NK3AVJ64JUG6ENABDZI72KHPM2OYYKH7QC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
CQ24AVAI6SW3AHTIDMLPSTRRBEU6FHRF5I5FD6G5QIYE6PO4BQMQC
2P3IJKK547AOEFWKXEAL73QFKW423GGAZEZHW6OZ6QB7YUSDNC3AC
NMZFCCM6O3KO2GJWKOSULN27B3QIZKWPBOB62PAILXMRQD4JMIMAC
{
simple_god_message(" blasts you with cleansing flame!", god);
bolt beam;
beam.beam_source = NON_MONSTER;
beam.type = dchar_glyph(DCHAR_FIRED_BURST);
beam.damage = calc_dice(2, 20 + (you.experience_level * 7) / 3);
beam.flavour = BEAM_HOLY;
beam.target = you.pos();
beam.name = "golden flame";
beam.colour = YELLOW;
beam.thrower = KILL_MISC;
beam.aux_source = "the Shining One's cleansing flame";
beam.ex_size = 2;
beam.is_tracer = false;
beam.is_explosion = true;
explosion(beam);
tso_blasts_cleansing_flame();
void tso_blasts_cleansing_flame(const char *message)
{
// TSO won't protect you from his own cleansing flame, and Xom is too
// capricious to protect you from it.
if (you.religion != GOD_SHINING_ONE && you.religion != GOD_XOM
&& !player_under_penance() && x_chance_in_y(you.piety, MAX_PIETY * 2))
{
god_speaks(you.religion,
make_stringf("\"Mortal, I have averted the wrath of %s... "
"this time.\"",
god_name(GOD_SHINING_ONE).c_str()).c_str());
}
else
{
// If there's a message, display it before firing.
if (message)
god_speaks(GOD_SHINING_ONE, message);
simple_god_message(" blasts you with cleansing flame!",
GOD_SHINING_ONE);
bolt beam;
beam.beam_source = NON_MONSTER;
beam.type = dchar_glyph(DCHAR_FIRED_BURST);
beam.damage = calc_dice(2, 20 + (you.experience_level * 7) / 3);
beam.flavour = BEAM_HOLY;
beam.target = you.pos();
beam.name = "golden flame";
beam.colour = YELLOW;
beam.thrower = KILL_MISC;
beam.aux_source = "the Shining One's cleansing flame";
beam.ex_size = 2;
beam.is_tracer = false;
beam.is_explosion = true;
explosion(beam);
}
}
// Currently only used when holy beings have been killed.
static std::string _get_tso_speech(const std::string key)
{
std::string result = getSpeakString("TSO " + key);
if (!result.empty())
return (result);
return ("The Shining One is angry!");
}
// Killing holy beings may anger TSO.
void tso_holy_revenge()
{
god_acting gdact(GOD_SHINING_ONE, true);
// TSO watches evil god worshippers more closely.
if ((is_evil_god(you.religion) && one_chance_in(3))
|| (!is_good_god(you.religion) && one_chance_in(4)))
{
const char *revenge;
if (is_evil_god(you.religion))
revenge = _get_tso_speech("holy evil").c_str();
else if (!is_good_god(you.religion))
revenge = _get_tso_speech("holy other").c_str();
tso_blasts_cleansing_flame(revenge);
}
}
#####################################
# TSO rants on killing a holy being #
#####################################
# An evil worshipper has killed a holy being
TSO holy evil
The Shining One thunders, "Cease your foul attacks on the divine!"
The Shining One shouts, "That base death shall not go unavenged!"
%%%%
# A non-good worshipper or atheist has killed a holy being
TSO holy other
The Shining One says, "As holy lives are taken, so shall yours be."
The Shining One warns, "Defile yourself no further with such kills."
%%%%