Give Lugonu's retribution more of the Abyss/distortion theme.
Added extra check for Sif Muna gifts.
Reduced spatial vortex base damage, but give them a distortion attack.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1118 c06c8d41-db1a-0410-9941-cceddc491573
L4PKJZERR7WADKWHY3MR6J6OZFREVPL3CB43I6MLJ2BVKWCUTE7AC
T3N3QMDZCRFNBUCRXTICPL4XBK6ZBQC4HE2QD747EKTPABXRRA7QC
LOJYD6QZRNLNDDZJKVBMKQIBPTKSRN2ETCYGNVV47M7L3QLUJUJAC
D77K7ISUWRLGNSQGYH5P2KEJZCNYQHDZC5AMLSKTXVBIRNG6F5KQC
TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
JW2KRJHES33W7UTWZ6NDO4TLMK4EFU4HKZXBWR2UJOMPCCOTR4CQC
WHY6LRRJ5T2NSBE3IUCR4X3TOAH7TTK5NPUPUIFT7TPNJ6J4HBDAC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
CRCKW7MAFIP2MB6ZNPVZXUHBGSPQNTYHGDVF2TCM2K6XLRUTUW4QC
RISMOCQM6BKK4XSIRKYLOBB2UPDYJNDAL6OGIIR5GGNZQAK5YSZAC
R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC
U5IBPFKQSOUYHVCULUKZC3NUAUB5XPAFW2R7SZYTGZZVMRF5DH2AC
GNJGG33CNP6IWUW4V2JKIFAC5N43TP5MX4PZOTXROBYZVXQEAJLAC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
static void lugonu_retribution(int god)
{
if (coinflip())
{
simple_god_message("'s wrath finds you!", god);
miscast_effect( SPTYP_TRANSLOCATION, 9, 90, 100, "Lugonu's touch" );
// No return - Lugonu's touch is independent of other effects.
}
else if (coinflip())
{
// Give extra opportunities for embarrassing teleports.
simple_god_message("'s wrath finds you!", god);
mpr("Space warps around you!");
if (!one_chance_in(3))
you_teleport2(false);
else
random_blink(false);
// No return.
}
// abyssal servant theme
if (random2(you.experience_level) > 7 && !one_chance_in(5))
{
if (create_monster(MONS_GREEN_DEATH + random2(3), 0,
BEH_HOSTILE, you.x_pos, you.y_pos,
MHITYOU, 250) != -1)
{
simple_god_message(" sends a demon after you!", god);
}
else
{
simple_god_message("'s demon is unavoidably detained.", god);
}
}
else
{
bool success = false;
int how_many = 1 + (you.experience_level / 7);
for (int loopy = 0; loopy < how_many; loopy++)
{
if (create_monster(MONS_NEQOXEC + random2(5), 0, BEH_HOSTILE,
you.x_pos, you.y_pos, MHITYOU, 250) != -1)
{
success = true;
}
}
if (success)
simple_god_message(" sends minions to punish you.", god);
else
simple_god_message("'s minions fail to arrive.", god);
}
}
// abyssal servant theme
if (random2(you.experience_level) > 7 && !one_chance_in(5))
{
if (create_monster(MONS_GREEN_DEATH + random2(3), 0,
BEH_HOSTILE, you.x_pos, you.y_pos,
MHITYOU, 250) != -1)
{
simple_god_message(" sends a demon after you!", god);
}
else
{
simple_god_message("'s demon is unavoidably detained.", god);
}
}
else
{
success = false;
how_many = 1 + (you.experience_level / 7);
for (loopy = 0; loopy < how_many; loopy++)
{
if (create_monster(MONS_NEQOXEC + random2(5), 0, BEH_HOSTILE,
you.x_pos, you.y_pos, MHITYOU, 250) != -1)
{
success = true;
}
}
if (success)
simple_god_message(" sends minions to punish you.", god);
else
simple_god_message("'s minions fail to arrive.", god);
}
lugonu_retribution(god);
}
bool melee_attack::distortion_affects_defender()
{
//jmf: blink frogs *like* distortion
// I think could be amended to let blink frogs "grow" like
// jellies do {dlb}
if (defender->id() == MONS_BLINK_FROG)
{
if (one_chance_in(5))
{
emit_nodmg_hit_message();
special_damage_message =
make_stringf("%s %s in the translocular energy.",
defender->name(DESC_CAP_THE).c_str(),
defender->conj_verb("bask").c_str());
defender->heal(1 + random2avg(7, 2), true); // heh heh
}
return (false);
}
if (one_chance_in(3))
{
special_damage_message =
make_stringf(
"Space bends around %s.",
defender->name(DESC_NOCAP_THE).c_str());
special_damage += 1 + random2avg(7, 2);
return (false);
}
if (one_chance_in(3))
{
special_damage_message =
make_stringf(
"Space warps horribly around %s!",
defender->name(DESC_NOCAP_THE).c_str());
special_damage += 3 + random2avg(24, 2);
return (false);
}
if (one_chance_in(3))
{
emit_nodmg_hit_message();
defender->blink();
return (false);
}
// Used to be coinflip() || coinflip() for players, just coinflip()
// for monsters; this is a compromise. Note that it makes banishment
// a touch more likely for players, and a shade less likely for
// monsters.
if (!one_chance_in(3))
{
emit_nodmg_hit_message();
defender->teleport(coinflip(), one_chance_in(5));
return (false);
}
if (you.level_type != LEVEL_ABYSS && coinflip())
{
emit_nodmg_hit_message();
defender->banish( atk? atk->name(DESC_PLAIN, true)
: attacker->name(DESC_PLAIN) );
return (true);
}
return (false);
//jmf: blink frogs *like* distortion
// I think could be amended to let blink frogs "grow" like
// jellies do {dlb}
if (defender->id() == MONS_BLINK_FROG)
{
if (one_chance_in(5))
{
emit_nodmg_hit_message();
special_damage_message =
make_stringf("%s %s in the translocular energy.",
defender->name(DESC_CAP_THE).c_str(),
defender->conj_verb("bask").c_str());
defender->heal(1 + random2avg(7, 2), true); // heh heh
}
break;
}
if (one_chance_in(3))
{
special_damage_message =
make_stringf(
"Space bends around %s.",
defender->name(DESC_NOCAP_THE).c_str());
special_damage += 1 + random2avg(7, 2);
break;
}
if (one_chance_in(3))
{
special_damage_message =
make_stringf(
"Space warps horribly around %s!",
defender->name(DESC_NOCAP_THE).c_str());
special_damage += 3 + random2avg(24, 2);
break;
}
if (one_chance_in(3))
{
emit_nodmg_hit_message();
defender->blink();
break;
}
// Used to be coinflip() || coinflip() for players, just coinflip()
// for monsters; this is a compromise. Note that it makes banishment
// a touch more likely for players, and a shade less likely for
// monsters.
if (!one_chance_in(3))
{
emit_nodmg_hit_message();
defender->teleport(coinflip(), one_chance_in(5));
break;
}
if (you.level_type != LEVEL_ABYSS && coinflip())
{
emit_nodmg_hit_message();
defender->banish( atk? atk->name(DESC_PLAIN, true)
: attacker->name(DESC_PLAIN) );
if (distortion_affects_defender())
* no_dark_brand defaults to true.
* no_dark_brand defaults to true, since the option is otherwise too obscure to
find (and the problem it addresses is widespread on Unix terms).
* Added a synthetic cursor (use_fake_cursor = yes) for terms that cannot draw
cursors on black/darkgrey spaces.