Trog's abilities Might and Haste have been replaced with Regeneration (Trog's Hand) and summoning (Brothers in Arms).
Right now, berserking summonings don't behave as intended as they'd rather follow the player than attack a monster closer to them. Also, they should disappear when Berserk runs out.
God gifts of Trog and Okawaru are now tweaked towards damage (Trog) or accuracy (Oki). In general, gifts no longer need praying to appear. Right now, this means that they're more likely (I think), so the gift timeout numbers will probably have to be changed.
I've also done the much-needed update of tutorial.cc, so that it now gives correct information about praying, saccing and escape hatches.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1962 c06c8d41-db1a-0410-9941-cceddc491573
U3KGUJJQWQORJIIFH3ADVNIEEX5HOX6KEOXO7DJSL7L3Z6GG3PAQC
BGDUVGIMDKJBXQBRIQXBBV43WOBFL3LXNKADCKWNXEEKOMBLAMAAC
2N5AKUYV6EUUT254C47WSHZKD7FGN65JKJ3RCKSDP74XJIHIFMDQC
WZNB427K3EUNV3FMVXLQTM4UIHER4FIKQXWLUUXRNQC3OQ33VQYAC
R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC
PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
RCU52DRCPWJVQ6HME4QR6V6EVQWTBKZTPWDI47UGUDAUBPOO5YNAC
XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC
6HQB2N6N75R2RGKJFWRUN7WAC2PNGWQFXTII5DTRLTHZ2BOTMTVAC
TRNEOO3YKZSUGYTJZDDXZTJFQJXY6PWKBDJXAOLY3FZAD6WHTUTQC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
YQ5IYBHW2ICYKOC2M6CI5BNOZKST3DIMMZRQN72LUQCHDAPVYQCQC
JW2KRJHES33W7UTWZ6NDO4TLMK4EFU4HKZXBWR2UJOMPCCOTR4CQC
3NFVCXRVGHN2CHLLWFZES5RBS4R2BCDS4EEQNSDCFYIFQWQK7MUQC
BIZDHHK5LIO57S5AKHEPJFLWV5DAFKZIKYBGOUNGICSWTX7DCXKAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
DODCHP2S4I6VZKQAVXX6D76OPNFI2YWZ4XH3HZTMAJZXA2RJ3XRQC
IHIJSWVOONSTA2WCHKW3YKBLETUQECFVBVLMET5SGQZ4C6U3GCUQC
SJOTTUZMA3UTGT5D6LKUTBDP2CZFXT24FB5IAWCUFHSHLLACM75QC
QRD2M37AMG76CPGCALZQ3N2PZ3OZ3MFETMVAEHBJJVVH2BCPVGUAC
WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC
if (is_feature('>', gc.x, gc.y))
learned_something_new(TUT_SEEN_STAIRS, gc.x, gc.y);
if ((grd(gc) == DNGN_ROCK_STAIRS_DOWN || grd(gc) == DNGN_ROCK_STAIRS_UP)
&& see_grid( gc.x, gc.y ))
{
learned_something_new(TUT_SEEN_ESCAPE_HATCH, gc.x, gc.y);
}
else if (is_feature('>', gc.x, gc.y))
learned_something_new(TUT_SEEN_STAIRS, gc.x, gc.y);
if (coinflip()) // always would be too annoying
// when hungry, give appropriate message or at least don't suggest sacrifice
if (you.hunger_state < HS_SATIATED)
{
learned_something_new(TUT_MAKE_CHUNKS);
return;
}
if (!god_likes_butchery(you.religion))
return;
if (Options.tutorial_events[TUT_OFFER_CORPSE])
learned_something_new(TUT_OFFER_CORPSE);
else if (one_chance_in(8))
case TUT_SEEN_ESCAPE_HATCH:
object = env.show[ex][ey];
colour = env.show_col[ex][ey];
get_item_symbol( object, &ch, &colour );
text << "These " << colour_to_tag(colour) << static_cast<char>(ch);
if (ch == '<')
text << "<";
text << "<magenta> are some kind of escape hatch. You can use them to "
"quickly leave a level with <w><<<magenta> and <w>><magenta>, "
"respectively, but will usually be unable to return right away.";
break;
"latter, all you need to do is <w>D<magenta> a corpse with a "
"sharp implement. Your starting weapon will do nicely. "
"latter, all you need to do is <w>D<magenta>issect a corpse "
"with a sharp implement. Your starting weapon will do nicely. "
if (you.religion == GOD_TROG || you.religion == GOD_MAKHLEB ||
you.religion == GOD_OKAWARU)
{
text << "\nIf it is a rotting corpse you carry now might be a good "
"time to <w>d<magenta>rop and <w>D<magenta>issect it during "
"prayer (<w>p<magenta>) as an offer to "
<< god_name(you.religion)
<< ".";
}
"<w>D<magenta>issect. One or more chunks will appear that you can "
"then <w>e<magenta>at. Beware that some chunks may be, "
"<w>D<magenta>issect. One or more chunks will appear that you "
"can then <w>e<magenta>at. Beware that some chunks may be, "
if (you.duration[DUR_PRAYER] &&
(you.religion == GOD_OKAWARU || you.religion == GOD_MAKHLEB ||
you.religion == GOD_TROG || you.religion == GOD_ELYVILON))
if (you.duration[DUR_PRAYER]
&& (god_likes_butchery(you.religion)
|| god_hates_butchery(you.religion)))
"running is an option! ";
if (Options.tutorial_type == TUT_BERSERK_CHAR && !you.duration[DUR_BERSERKER]
&& !you.hunger)
"running is an option!";
if (Options.tutorial_type == TUT_BERSERK_CHAR && you.religion == GOD_TROG
&& !you.duration[DUR_BERSERKER] && you.hunger_state >= HS_SATIATED)
text +=
"<w>Renounce Religion<magenta> will make your character leave your god" EOL
"(and usually anger said god), while <w>Berserk<magenta> temporarily increases your" EOL
"damage output in melee fights.";
text <<
"<w>Renounce Religion<magenta> will make your character leave your god" EOL
"(and usually anger said god)";
if (you.religion == GOD_TROG)
{
text << ", while <w>Berserk<magenta> temporarily increases your" EOL
"damage output in melee fights";
}
text << ".";
} // end summon_ice_beast_etc()
// Trog sends some fighting buddies for his followers
void summon_berserker()
{
beh_type beha = BEH_GOD_GIFT;
int pow = you.piety + random2(you.piety/4) - random2(you.piety/4);
int numsc = std::min(2 + (random2(pow) / 4), 6);
int mon = MONS_TROLL;
if (pow <= 100)
{ // bears
if (coinflip())
mon = MONS_BLACK_BEAR;
else
mon = MONS_GRIZZLY_BEAR;
}
else if (pow <= 140)
{
// ogres
if (one_chance_in(3))
mon = MONS_TWO_HEADED_OGRE;
else
mon = MONS_OGRE;
}
else if (pow <= 180)
{
// trolls
switch(random2(8))
{
case 0:
mon = MONS_DEEP_TROLL;
break;
case 1:
case 2:
mon = MONS_IRON_TROLL;
break;
case 3:
case 4:
mon = MONS_ROCK_TROLL;
break;
default:
mon = MONS_TROLL;
break;
}
}
else
{
// giants
if (coinflip())
mon = MONS_HILL_GIANT;
else
mon = MONS_STONE_GIANT;
}
int mons = create_monster( mon, numsc, beha, you.x_pos, you.y_pos, MHITYOU, 250 );
menv[mons].go_berserk(false);
TUT_EVENTS_NUM // 44
}; // for numbers higher than 45 change size of tutorial_events in externs.h
TUT_EVENTS_NUM // 46
}; // for numbers higher than 48 change size of tutorial_events in externs.h
mpr(" p - Order allies to attack your previous target");
targ_prev = true;
struct monsters *target = &menv[you.prev_targ];
if (mons_near(target) && player_monster_visible(target))
{
mpr(" p - Order allies to attack your previous target");
targ_prev = true;
}
{ ABIL_TROG_MIGHT, "Might", 0, 0, 200, 1, ABFLAG_NONE },
{ ABIL_TROG_HASTE_SELF, "Haste Self", 0, 0, 250, 3, ABFLAG_NONE },
{ ABIL_TROG_REGENERATION, "Trog's Hand", 0, 0, 50, 1, ABFLAG_NONE },
{ ABIL_TROG_BROTHERS_IN_ARMS, "Brothers in Arms", 0, 0, 100, 3, ABFLAG_NONE },