always_greet, terse_hand, increasing_skill_progress, use_notes, confirm_self_target. (default_autoprayer still exists.)
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2859 c06c8d41-db1a-0410-9941-cceddc491573
CH7JECYYH35H4TRHRNRTRJCQTQLZ2WRH62TKV72SUIU2RTK5OH7AC
2D5ZCTXEOGMF2AUSFDKSQPKTJ7IIUREFGHTNQ5764OTR2Y4DD36QC
7IVPQ7VB5X4UX7P6DXZJU6MQRP5TAPU3X22JOIRRNI6JWR3LKR5AC
A7JJLKQ7HCGJH7DIYGPXNQTVJHVOLDAG5RLWEXAR2ZFRXRDGOCYQC
SXLHOSCHX4BPRYRR35DI5GWISPIDKRFUSRVCYYHUUAYLAYFHSPBQC
QUFPPRIIRXHUFEDH3EFES7CSHTA7GG2DAXTRHUAUQBYMSWK4BP6AC
3D6NWJ44UYHLZMD3BOQIWXJUEGITAVCHK6Z2WWDQONVQC4HSBRXQC
HXD33XDOBW7EE43KQ2PSKIRP3OH6WONNRE5N2WKRVL453KGWLWWAC
O2GH2BHUL4XXIIJSMKNV2NIC4KQACE6HLMUL4KEUDFNFEAGMZSZAC
7V4DCKFJCNBXFODMKJ6H3MCDUTSD4XVQ7D4D6XFCD4JNF4HCE4KAC
NXVPOFYKJFWQWKVPQUMWH2Y2KJEZX44BUOBFJ4JD4KFGPEGYHG4QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
3SVWI6KK6IFQ6SB6L3TIC7QIGDITU5QLVAG5C7X57HH75ZHW7T2AC
5HBRQ2QZTFBQE2Z2CFADUI2D52LO5Z5CNHXHA7BJP3LGO7FJPUCQC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
RR2J4VLJCZSAKY3HNS334KI4YUAPOMSETO2HGCGEEIUCUJAYAGSQC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
UWMN4HLG6YA2YFQEVIVMDISD6APKEPIZXMMPMNUYCBQDSAUYSXPQC
547JREUJXTZNYVGHNNAET5F5O5JYYGNTDQB6ABZNT7YX5EY64OHAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
NZFU5APXZZDBRYJGE57F43JKBBPWC33TIZNK6K4OZYSI47PFJMQQC
XPCGZBHHSL6MB3ORMUJI64BAERU6AZTIY6RK56BBW7SNB3IK24IAC
45QV77UI6QFW4234P365LD3FGJYRVWTT5455DPB324NG2NFQMKTQC
EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC
CAHE52HL2ZGRJPBYZ3DS4BVKUD2XC7N3SG25TGG7JGHGJDST4P3QC
COO5FB4S2L5FELAUVTKNRYV2GWKR5DPU7R3FYWMGWN3AV253KXRAC
IX3TFTYD4RYAWYJJGE634KVS4YDFFFI66DSF34VNBJALIKGBP5JQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
5K2ANIEXD3CPJM4XNKNPZINP2G4NT7SJBKRN62WNBUKJXFERTILQC
TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
JM6GKZ6VMX6FNVOZIDXIV22HGX7YESMIFZFE6EEQVCMFJIEA3FNAC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
4PUWNQO7QMEWY3GSUHLBKMYOAI7ASYSRM32KDGTA7DLNDIGFAWFAC
5HPIIGNWB3UXJ5APQLAGFOV2CA7J2GB7AWAVVZDBB2YZS4TNCMAQC
7PRZJ6KZLG26YVTAMXT7YOTQLWZHGWGRTKXZZ52P4XYCQD4GT5WQC
TR4NPGNO5QNNRJNVMNSUEO5QLT37HCXXDOBKXCB5XWXRQNAJ5SHAC
GSQ72ULBSL6WBJZUB3GJKAPQDXZIQV7B2TDBA5OP2WVGHVJMCQFQC
CRCKW7MAFIP2MB6ZNPVZXUHBGSPQNTYHGDVF2TCM2K6XLRUTUW4QC
Z3RI4XAN7J2GUABAQ5G6YIOQYMBOAEQFFGRBWHMUEB2A2QYXO5MQC
GR6ZABTGAAQTKZBVA7PTOYQG6G3ACF62ITT5COLHTRN2HGIPRG2AC
Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
BXXOYFMWNQY4TLLJBFYROSH43KO5F4JQTATU3ZEJNKGIJGOIQN4AC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
L4RYVF46EQKMVOEADGRG4WMPVTQ6NNFGYMU4SHAH6XJIKWVHT77QC
CQ24AVAI6SW3AHTIDMLPSTRRBEU6FHRF5I5FD6G5QIYE6PO4BQMQC
Q2FZIIGQECGP2FKKWLGDBBQVGCFZ4JTY53PFPJP6X7YKC23AQGFQC
HYS3HXTXATFPN7GLN3WBGDCP22UT2D3JBVUS7SP5FE7L54TDCJRQC
2KTJHQUX2LTU2BCLS5YXVRRKMOYKKIZAPF2LBKORFGSHEN5IO3IAC
BC55WY3GQDR5FEHWPC45YARY4C33X5SN6XR47TKIL76YDZNDUVAQC
WCAOZXOYYQBLVRS5FRZTP5ZFOYLQCCPWHGIFM2DLVGHIKVYSQVWQC
QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC
GMYJ4XEEKZASQWMXQZUME5VYCDBRODO7UJJUEZSVZBMSFVBFLK2AC
WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC
KW43PGXTTM57DXUGGBQXJ5G5OYYIY3WB76TXIKL2ZCIJGH7GH4LAC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
2ZFV5PKZU3HDHMLJWVWPPFV43NUNUON6YSAITHB26D7L4XIVWUHQC
UPJVSMMMHGRDUIJG4MZX6IBLQ4ODBF5Z3PF3RHDYTSAEOCVDZM5AC
XYJ5Y635KCRCTL2BFPP53NWQRK3NUHS6T3ARPIXV5A3CHWBW7VCQC
55F3WPRLVULKMXZPSACPON6H7SBEVNNZNQ2MOOISD2FKAQTRLYFAC
YWYXUCZKGNIAWAUKUESIPFCAL5HZOKOEWHUEUW7X4DMAX2HG2FSAC
E5GFDGV5XJVVDZGWFQIIZ47FGGF7AEJLGGBWRUZ34HPLNFJTNLLQC
5RK245FAGZFCDDYG4AZAXSC7JPVIJG4DSAVAKHWWVBUNGICHYNJQC
F2BIF3CG3F2THAJQZVE7N63F3NLOMA2PY4SUBA2FJOP2ANKIFYGQC
}
else if (key == "safe_autopickup")
{
safe_autopickup = read_bool( field, safe_autopickup );
}
else if (key == "terse_hand")
{
terse_hand = read_bool( field, terse_hand );
}
else if (key == "increasing_skill_progress")
{
increasing_skill_progress = read_bool( field, increasing_skill_progress );
else if (key == "safe_zero_exp")
{
safe_zero_exp = read_bool(field, safe_zero_exp);
}
{ "terse_hand", &Options.terse_hand, option_hboolean },
{ "increasing_skill_progress", &Options.increasing_skill_progress, option_hboolean },
{ "confirm_self_target", &Options.confirm_self_target, option_hboolean },
// print help
puts("Command line options:");
puts(" -name <string> character name");
puts(" -race <arg> preselect race (by letter, abbreviation, or name)");
puts(" -class <arg> preselect class (by letter, abbreviation, or name)");
puts(" -pizza <string> crawl pizza");
puts(" -plain don't use IBM extended characters");
puts(" -dir <path> crawl directory");
puts(" -rc <file> init file name");
puts(" -morgue <dir> directory to save character dumps");
puts(" -macro <dir> directory to save/find macro.txt");
puts("");
puts("Command line options override init file options, which override");
puts("environment options (CRAWL_NAME, CRAWL_PIZZA, CRAWL_DIR, CRAWL_RC).");
puts("");
puts("Highscore list options: (Can now be redirected to more, etc)");
puts(" -scores [N] highscore list");
puts(" -tscores [N] terse highscore list");
puts(" -vscores [N] verbose highscore list");
puts(" -scorefile <filename> scorefile to report on");
exit(1);
show_commandline_options_help();
return 1;
if (game_start || Options.always_greet)
{
msg::stream << "Welcome, " << you.your_name << " the "
<< species_name( you.species,you.experience_level )
<< " " << you.class_name << "."
<< std::endl;
// Activate markers only after the welcome message, so the
// player can see any resulting messages.
env.markers.activate_all();
msg::stream << "Welcome, " << you.your_name << " the "
<< species_name( you.species,you.experience_level )
<< " " << you.class_name << "."
<< std::endl;
// Starting messages can go here as this should only happen
// at the start of a new game -- bwr
// This message isn't appropriate for Options.always_greet
if (you.char_class == JOB_WANDERER && game_start)
{
int skill_levels = 0;
for (int i = 0; i <= NUM_SKILLS; i++)
skill_levels += you.skills[ i ];
// Activate markers only after the welcome message, so the
// player can see any resulting messages.
env.markers.activate_all();
if (skill_levels <= 2)
{
// Demigods and Demonspawn wanderers stand to not be
// able to see any of their skills at the start of
// the game (one or two skills should be easily guessed
// from starting equipment)... Anyways, we'll give the
// player a message to warn them (and give a reason why). -- bwr
mpr("You wake up in a daze, and can't recall much.");
}
}
if (game_start && you.char_class == JOB_WANDERER)
wanderer_startup_message();
// These need some work -- should make sure that the god's
// name is metioned, else the message might be confusing.
switch (you.religion)
{
case GOD_ZIN:
simple_god_message( " says: Spread the light, my child." );
break;
case GOD_SHINING_ONE:
simple_god_message( " says: Smite the infidels!" );
break;
case GOD_KIKUBAAQUDGHA:
case GOD_YREDELEMNUL:
case GOD_NEMELEX_XOBEH:
simple_god_message( " says: Welcome..." );
break;
case GOD_XOM:
if (game_start)
simple_god_message( " says: A new plaything!" );
break;
case GOD_VEHUMET:
god_speaks( you.religion, "Let it end in hellfire!");
break;
case GOD_OKAWARU:
simple_god_message(" says: Welcome, disciple.");
break;
case GOD_MAKHLEB:
god_speaks( you.religion, "Blood and souls for Makhleb!" );
break;
case GOD_SIF_MUNA:
simple_god_message( " whispers: I know many secrets...");
break;
case GOD_TROG:
simple_god_message( " says: Kill them all!" );
break;
case GOD_ELYVILON:
simple_god_message( " says: Go forth and aid the weak!" );
break;
case GOD_LUGONU:
simple_god_message( " says: Spread carnage and corruption!");
break;
case GOD_BEOGH:
simple_god_message(
" says: Drown the unbelievers in a sea of blood!");
break;
default:
break;
}
god_greeting_message( game_start );
{
// don't allow triggering at game start
Options.tut_just_triggered = true;
// print stats and everything
prep_input();
msg::streams(MSGCH_TUTORIAL)
<< "Press any key to start the tutorial intro, "
"or Escape to skip it."
<< std::endl;
const int ch = c_getch();
if (ch != ESCAPE)
tut_starting_screen();
}
std::ostringstream notestr;
notestr << you.your_name << ", the "
<< species_name(you.species,you.experience_level) << " "
<< you.class_name
<< ", began the quest for the Orb.";
take_note(Note(NOTE_MESSAGE, 0, 0, notestr.str().c_str()));
notestr.str("");
notestr.clear();
notestr << "HP: " << you.hp << "/" << you.hp_max
<< " MP: " << you.magic_points << "/" << you.max_magic_points;
take_note(Note(NOTE_XP_LEVEL_CHANGE, you.experience_level, 0,
notestr.str().c_str()));
startup_tutorial();
take_starting_note();
static void show_commandline_options_help()
{
puts("Command line options:");
puts(" -name <string> character name");
puts(" -race <arg> preselect race (by letter, abbreviation, or name)");
puts(" -class <arg> preselect class (by letter, abbreviation, or name)");
puts(" -pizza <string> crawl pizza");
puts(" -plain don't use IBM extended characters");
puts(" -dir <path> crawl directory");
puts(" -rc <file> init file name");
puts(" -morgue <dir> directory to save character dumps");
puts(" -macro <dir> directory to save/find macro.txt");
puts("");
puts("Command line options override init file options, which override");
puts("environment options (CRAWL_NAME, CRAWL_PIZZA, CRAWL_DIR, CRAWL_RC).");
puts("");
puts("Highscore list options: (Can now be redirected to more, etc)");
puts(" -scores [N] highscore list");
puts(" -tscores [N] terse highscore list");
puts(" -vscores [N] verbose highscore list");
puts(" -scorefile <filename> scorefile to report on");
}
static void wanderer_startup_message()
{
int skill_levels = 0;
for (int i = 0; i < NUM_SKILLS; i++)
skill_levels += you.skills[ i ];
if (skill_levels <= 2)
{
// Demigods and Demonspawn wanderers stand to not be
// able to see any of their skills at the start of
// the game (one or two skills should be easily guessed
// from starting equipment)... Anyways, we'll give the
// player a message to warn them (and give a reason why). -- bwr
mpr("You wake up in a daze, and can't recall much.");
}
}
static void god_greeting_message( bool game_start )
{
switch (you.religion)
{
case GOD_ZIN:
simple_god_message( " says: Spread the light, my child." );
break;
case GOD_SHINING_ONE:
simple_god_message( " says: Smite the infidels!" );
break;
case GOD_KIKUBAAQUDGHA:
case GOD_YREDELEMNUL:
case GOD_NEMELEX_XOBEH:
simple_god_message( " says: Welcome..." );
break;
case GOD_XOM:
if (game_start)
simple_god_message( " says: A new plaything!" );
break;
case GOD_VEHUMET:
god_speaks( you.religion, "Let it end in hellfire!");
break;
case GOD_OKAWARU:
simple_god_message(" says: Welcome, disciple.");
break;
case GOD_MAKHLEB:
god_speaks( you.religion, "Blood and souls for Makhleb!" );
break;
case GOD_SIF_MUNA:
simple_god_message( " whispers: I know many secrets...");
break;
case GOD_TROG:
simple_god_message( " says: Kill them all!" );
break;
case GOD_ELYVILON:
simple_god_message( " says: Go forth and aid the weak!" );
break;
case GOD_LUGONU:
simple_god_message( " says: Spread carnage and corruption!");
break;
case GOD_BEOGH:
simple_god_message(
" says: Drown the unbelievers in a sea of blood!");
break;
case GOD_NO_GOD:
case NUM_GODS:
case GOD_RANDOM:
break;
}
}
static void take_starting_note()
{
std::ostringstream notestr;
notestr << you.your_name << ", the "
<< species_name(you.species,you.experience_level) << " "
<< you.class_name
<< ", began the quest for the Orb.";
take_note(Note(NOTE_MESSAGE, 0, 0, notestr.str().c_str()));
notestr.str("");
notestr.clear();
notestr << "HP: " << you.hp << "/" << you.hp_max
<< " MP: " << you.magic_points << "/" << you.max_magic_points;
take_note(Note(NOTE_XP_LEVEL_CHANGE, you.experience_level, 0,
notestr.str().c_str()));
}
static void startup_tutorial()
{
// don't allow triggering at game start
Options.tut_just_triggered = true;
// print stats and everything
prep_input();
msg::streams(MSGCH_TUTORIAL)
<< "Press any key to start the tutorial intro, or Escape to skip it."
<< std::endl;
const int ch = c_getch();
if (ch != ESCAPE)
tut_starting_screen();
}
// skip over a-e if player prefers them for invocations
const int startpoint = (Options.lowercase_invocations ? 5 : 0);
for (int slot = startpoint; slot < 52; slot++)
// skip over a-e (invocations)
for (int slot = 5; slot < 52; slot++)
auto_list, lowercase_invocations, easy_open, easy_butcher,
always_confirm_butcher, easy_unequip, easy_confirm,
easy_quit_item_prompts, easy_exit_menu, default_autoprayer,
sort_menus
auto_list, easy_open, easy_butcher, always_confirm_butcher,
easy_unequip, easy_confirm, easy_quit_item_prompts,
easy_exit_menu, default_autoprayer, sort_menus
hp_warning, mp_warning, hp_colour, mp_colour, always_greet,
terse_hand, delay_message_clear, menu_colour,
menu_colour_prefix_id, menu_colour_prefix_class
message_colour, increasing_skill_progress,
hp_warning, mp_warning, hp_colour, mp_colour,
delay_message_clear, menu_colour, menu_colour_prefix_id,
menu_colour_prefix_class, message_colour,
safe_zero_exp = true
If set, presence of only zero experience monsters (like plants) will
cause autopickups, even if safe_autopickup=true is set. This option
also settles whether autoprayer considers such monsters risky.
which can make life much easier for hunter types. If you use this, be
aware that autopickup uses a turn - use Ctrl-A to turn it off while
you're fighting, or use safe_autopickup=true.
which can make life much easier for hunter types. Be aware that
autopickup uses a turn, though it won't trigger if you can see
monsters.
confirm_self_target = true
Setting this to true will make Crawl ask for confirmation whenever
selecting the character as the target of a non-friendly-targeted spell
(i.e., something other than haste, healing or invisibility.)
lowercase_invocations = true
Set this option to true if you prefer to have invocations on 'a'-'e'
instead of the older 'A'-'E'. Note that you can change the letters of
invocations (and other abilites) with the '=' command.
terse_hand = true
Set this to false to have the "in hand" description on the main screen
the same as the inventory. The default setting of true will give the
newer more terse description that should fit the limited space better.
increasing_skill_progress = true
This affects the appearance of the skills screen ('m'). With the
default true, the progress for getting new levels is shown with
increasing percentiles, so that immediately after level up it will
read (0%). With false, you get the old behaviour which counts backwards
from 10.