debugging functions, and some other clean-up.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5757 c06c8d41-db1a-0410-9941-cceddc491573
O7S3ILRELHICJXXTDGMF7KPPZWYHPYCNDPV2I77FZXXH4I454B4QC
V6AGXNG2BJ3UNSTV37R7IFKMP6HDXCCIGHCMKQQXCJXJUIMLDPOAC
WRKNMOVYG65ZCSWOFGT6Z6FRTL27XMYAQV7VMRYNZ7NREWL5OUBAC
3IMZJEIBQTRXX5OLN7NUZ3QSGNVH2VPVTBDESVVWXIYURTHF3VXAC
WNUXO4K3ATEOPH53ZO2HMCHRIHUNQYGJ4LG5QDSISLVJXNHWVWOAC
LTFWXACXWTSFJNSVDFCMC4IJBHUERV6DNCKIECIMRXG2M2U3TYJAC
ATDAT2AONG2BDLZFBJZB4WVNRUFQAU7RDIVUBAZ6STAV62NX5R4AC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
DWSABP6YFM2CCMO7NVGGBWVCPAXOXOT5VQ6SADR4M66LHW66AP6QC
QSRRV725GCNDOMIDS36NYAA65MOLDMAZSENVSZ3PNOLBFSGHH7BQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
4UQBOVCMAMNCCF6PPX222H6JJO7MPYOKKC2NBKMVYIT5R5FOACNAC
7PRZJ6KZLG26YVTAMXT7YOTQLWZHGWGRTKXZZ52P4XYCQD4GT5WQC
43ZTEB57FU7KE5EVMYWZONNVJBZCGF3JEAJZIY25LC4LGE65PG5QC
JQK4F4RTKVQWIF5YKFPH7IHF7UREBOY2NOFQ7J3O44KYPCNHNL5AC
TM35IHKZZNBCMR3ERBS4EYHGUK5IVCPUT2JUITMT74AYAIUZSYFQC
CJ6OSJQPAZOGWC56OYBALICSITGVUEQERE7LWIYJL2AXWRZE523AC
5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC
ZBPZZ5A7AB2VFZKQ2UJXVDGUK22OCZJCEN2RWTGDGK3VXFCCDKVAC
LIBWXPN6HLJAIGEFJYLOL4HLIUD236U3WM5QPHIZ3DSB4CCUJERAC
5367JDYN2THJDKXGPP3UJYZFLBOUHCWRPPMBEQCFUALLAHLGAPOAC
7IAREA6ETDRIFRARG5MEAZMXQV44FQZT3VIWJG6AAZRIEFNHKNQAC
UA567W6JTM5YXHN7ASN6KU3K66JCXPLTKSAOK5ZEXQMEI6K2SHZAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
JW2KRJHES33W7UTWZ6NDO4TLMK4EFU4HKZXBWR2UJOMPCCOTR4CQC
3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC
MLZSEZWNNZMSIDQNAAIOJJR4K7VSVJICL5SAGHD3ROM7SYDVZABAC
RM2JXW3ATVYRYHF3NMG5ALGI64OJ7IP2F3MDUDPUT5TBKSSN4KVQC
JR2RAQ523LOWNDYJNK6AZVKI6WVMI622PIV72XWOVZYPXPUKSQWAC
KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC
TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC
FSD7GIK3YLZXWLEH37BU6KV3IUCFGXPQL6IZ7H65YWNRBEKDBX5AC
475LL4U4ND6PTNV4XKC7WQAOJC7RF2VCCVX3DRILP2PKIBFYWE6QC
VJDLV4PF2ZJ46NERO4LZUX5JE2CD5XBOBQCYYPTFWTHLUEYDUOYAC
3UKFCWWS5BLFQWZRB5FUA46CE2XGX5VRCEWC3K3XH5RCGQK64N2AC
5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC
45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC
3XZOL3FFQZITUJIGDD6B6V6ZYMBN524JKNN6ZPJAXEC7RY433I3QC
KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC
E5JKWMBVQQGVSCAX4UOGHI6QW5RFOX6PJB77LHL3UI2NJ427BFFQC
TZ55IZNANEJO2WDTKYWVLY2W2VV6BR7WKIN7XLNISAMMFT6LG2WQC
AOLWOUIFBQDQTCMSVB7N7GAKFUY5J5LH7CJZAY3HEY3WEUSLADZAC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
KA5FM5FELFEKHCCICIQCKVKOLHOYXOCODGK4NFJWRSPJ4UXULC2AC
AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC
HSRRNAU5UAYC6B6IQWGJPFROMZBTJICPCH6DJVZDHDTAGOQ6IOYAC
TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC
23I5KJ245D43B6QYWS4TDQYJO2W2PKTDCLFBWPVAFDWS6L7NMGKQC
47NSOFQMBZCDIBHEAZSENFUGDSQCX3GJHFBUZ65ARDKCYIZ435LAC
J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC
CRX4RG35C3DH57NIXCW4CG4X7SBMSX7TAJR2BAFQ4LQKCLYUNANQC
7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC
ZIFFVCQ72K35WGIUMZYN3KOXIUXF2CNXWKG6ZWEZ6LT3NSF3XOQAC
X2FMEN4E345XD26Z2X7JMJ7VGHOGCGIELMHQRE2ITLVNQACP3NOQC
4TPFZIL52CS4HPO5LQMKS3PHTE2X2C547ULEFXKM4UIQQ64FUBGAC
SQDS2YBPOYDDDCW3GGARBZ2HQIUHCQKL7SSHKFQWDENOL5YNNVNQC
ODNAIEJW732NG7USKQKCIP4R4DAEYXXJQX6LY7TIN32NKE75454QC
BW3XFNOS6LDAQLHOZ6RXARCMKCY5JVLVDSXDSSAX4DSYM3FANQBAC
ZHFUXYUHS6V47WK2NRH7OU6RX77NRKTXOZC3MND2GG7PEEWSGFTAC
KQNIGKATHT4YSPJFPJGIGPD6VNR5B753SE2JN2LCXZZJNHCGY3DQC
FUEEIUKGHHFPIRZCN3N753GONWAZTWQ2ZWR53IBJAAZ6FZUNGOMAC
L5CVPV5IUBSO4EE3WK4O6SQGIMIEPSMQONFBWEVGJBR2HATLPZIAC
KFZYPFHHOWRUZEK2PW26EI73Z6I6DLHW2YEJV2CB5XBWFRRNBFXQC
FMBJCM5LJKCG326YRJGOOJU6QNWONXAHK2AB4CP4SAOHKJ5CORXQC
X5OHFTHRXTI5KHFIYFJ6DB3W5MY3JUJKNTL4HF37MKABYNCOBOZAC
WLX2RQMMOMP2PYPAGJRM4VFD2WTLJTOAZZPPY3MV76FU2EGEJ54QC
L254F6ZIU2HWGLFFGPIORTN4C3TDQ3E5JZ7Z7GQA5AEDIKL6PKDAC
Y5RFQ6KNJCBQUSV2T6WDR7TPZLZYLOAWBVMUTHDXGOZQDZ2U423AC
Y4NA3JSN63RLATF4NNBPSR5CWF5Z7UEMWCGVX4B6NOAR47CGM4GQC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
CG4TL4AKSN4J7CMATZFJ5N7PSDCQXLS3QYX7PZ3K67KMMBT675OQC
RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC
3FBKOX4Y5QYPMBOCSAMHNZXCY7Z75YDQDL4EJZHZIGDXL7RMZ7TAC
ILO5P5FRDUY4SEQEXMTUDKOPXAUBJRSORHHUVTLLCYOYSXBXOVRAC
XBSRV4LDUNTV7IYWAUCE7SW3ILWWJUB5ZQCHACLLWBZK5M2WUPDAC
PAYI4UTJCR3XZSFOX5L35EURHRXQ6STO4Z7AQ3525QPNL3QYLNBAC
Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC
CKY7MRFWMNHXIPJD5ZUAJN5T2YHUIEAYBNYYV5GN74LBZJRDJMEQC
ZLQAAP55CJ77XIJN3DZVPT4GTTVLIBFJLIJJKI6L5UBSHX7VUK6AC
QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC
B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC
Y5GWVQ5SM7DJEAPFOBPMMJH4D3NXBB2MPONSJUMG3KIQMBVGEE6AC
TFZ4TER7O2Z4FOGF2RCPEPYIHBTUA4LG3ECXLR7XGLCC6GO6OOTAC
W45PMU4HNPSAMMEBJ4XH4MTHLPVIASZT4FXTBPID5LFXKIMNUBKAC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
IHOKNI4O7EEW4UBMKHP6XOZNEIQSW4AYOT4O3JXUIXNNR553IQAQC
LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC
2PAHDAPDO6PN4FNGB5N7CQNEGHSE3NOGPXYZMIAOJC4VW34FRVOAC
LAMIVDKY7LO5ONX5Z273ZCCEA5UBENOJD5VWNE4AK2EXGFED6BFQC
6HG6JFO47Y3BZLU7Y6G3R2CX6JFGN4X5PKK6S5IGUXUYQ5GVZYFQC
AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC
JNB3PBPBJHDUHH47ZICB25QENPTMLYK7CXC5BXRVWZ3J3ZZPKCUAC
VXMRWJ2CPHIB2NAHMZKUV7DAFA7GLVA32WDS53WNT3BIDHK6GOZQC
KXUQB3WNWC5IFL6VFWADEPQMMU3VV3NDI5FLA666PGOEWFYUHCLQC
ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
WF2DSJGR6PKLGQSXEFF4ZW4EZZFGMHXPXWUYAKYBPFJH6KJKAANQC
C5VA63WAQRWPENIMXRPUPZLZJMC77PL2B3A77HYFWDCZU5QDG7VQC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
// Old overview screen, now only used for dumping.
std::vector<formatted_string> get_full_detail(bool calc_unid, long sc)
{
char buf[1000];
// 3 columns, splits at columns 32, 52
column_composer cols(3, 33, 52);
char god_colour_tag[20];
god_colour_tag[0] = 0;
std::string godpowers(god_name(you.religion));
if ( you.religion != GOD_NO_GOD )
{
if ( player_under_penance() )
strcpy(god_colour_tag, "<red>*");
else
{
snprintf(god_colour_tag, sizeof god_colour_tag, "<%s>",
colour_to_str(god_colour(you.religion)));
// piety rankings
int prank = piety_rank() - 1;
if ( prank < 0 )
prank = 0;
// Careful about overflow. We erase some of the god's name
// if necessary.
godpowers = godpowers.substr(0, 17 - prank) +
std::string(prank, '*');
}
}
const std::string score =
(sc > -1? make_stringf(" (%ld points)", sc) : "");
snprintf(buf, sizeof buf,
"<yellow>%s the %s</yellow>%s\n\n"
"Race : %s\n"
"Class : %s\n"
"Worship : %s%s\n"
"Level : %7d\n"
"Exp : %7lu\n",
you.your_name,
player_title().c_str(),
score.c_str(),
species_name(you.species,you.experience_level).c_str(),
you.class_name,
god_colour_tag,
godpowers.c_str(),
you.experience_level,
you.experience);
cols.add_formatted(0, buf, false);
if (you.experience_level < 27)
{
int xp_needed = (exp_needed(you.experience_level+2)-you.experience)+1;
snprintf(buf, sizeof buf,
"Next Level : %7lu\n"
"Exp Needed : %7d\n",
exp_needed(you.experience_level + 2) + 1,
xp_needed);
cols.add_formatted(0, buf, false);
}
else
cols.add_formatted(0, "\n\n", false);
snprintf(buf, sizeof buf,
"Spls.Left : %7d\n"
"Gold : %7d\n",
player_spell_levels(),
you.gold);
cols.add_formatted(0, buf, false);
if (!player_rotted())
{
if (you.hp < you.hp_max)
snprintf(buf, sizeof buf, "HP : %3d/%d",you.hp,you.hp_max);
else
snprintf(buf, sizeof buf, "HP : %3d", you.hp);
}
else
{
snprintf(buf, sizeof buf, "HP : %3d/%d (%d)",
you.hp, you.hp_max, you.hp_max + player_rotted() );
}
cols.add_formatted(0, buf, true);
if (you.magic_points < you.max_magic_points)
snprintf(buf, sizeof buf, "MP : %3d/%d",
you.magic_points, you.max_magic_points);
else
snprintf(buf, sizeof buf, "MP : %3d", you.magic_points);
cols.add_formatted(0, buf, false);
if (you.strength == you.max_strength)
snprintf(buf, sizeof buf, "Str : %3d", you.strength);
else
snprintf(buf, sizeof buf, "Str : <yellow>%3d</yellow> (%d)",
you.strength, you.max_strength);
cols.add_formatted(0, buf, false);
if (you.intel == you.max_intel)
snprintf(buf, sizeof buf, "Int : %3d", you.intel);
else
snprintf(buf, sizeof buf, "Int : <yellow>%3d</yellow> (%d)",
you.intel, you.max_intel);
cols.add_formatted(0, buf, false);
if (you.dex == you.max_dex)
snprintf(buf, sizeof buf, "Dex : %3d", you.dex);
else
snprintf(buf, sizeof buf, "Dex : <yellow>%3d</yellow> (%d)",
you.dex, you.max_dex);
cols.add_formatted(0, buf, false);
snprintf(buf, sizeof buf,
"AC : %3d\n"
"Evasion : %3d\n"
"Shield : %3d\n",
player_AC(),
player_evasion(),
player_shield_class());
cols.add_formatted(0, buf, false);
if (you.real_time != -1)
{
const time_t curr = you.real_time + (time(NULL) - you.start_time);
snprintf(buf, sizeof buf,
"Play time : %10s\n"
"Turns : %10ld\n",
make_time_string(curr, true).c_str(), you.num_turns );
cols.add_formatted(0, buf, true);
}
const int rfire = player_res_fire(calc_unid);
const int rcold = player_res_cold(calc_unid);
const int rlife = player_prot_life(calc_unid);
const int rpois = player_res_poison(calc_unid);
const int relec = player_res_electricity(calc_unid);
snprintf(buf, sizeof buf, "\n\n"
"%sRes.Fire : %s\n"
"%sRes.Cold : %s\n"
"%sLife Prot.: %s\n"
"%sRes.Poison: %s\n"
"%sRes.Elec. : %s\n",
_determine_color_string(rfire), itosym3(rfire),
_determine_color_string(rcold), itosym3(rcold),
_determine_color_string(rlife), itosym3(rlife),
_determine_color_string(rpois), itosym1(rpois),
_determine_color_string(relec), itosym1(relec));
cols.add_formatted(1, buf, false);
const int rsust = player_sust_abil(calc_unid);
const int rmuta = wearing_amulet(AMU_RESIST_MUTATION, calc_unid);
const int rslow = wearing_amulet(AMU_RESIST_SLOW, calc_unid);
const int rclar = wearing_amulet(AMU_CLARITY, calc_unid);
snprintf(buf, sizeof buf,
"%sSust.Abil.: %s\n"
"%sRes.Mut. : %s\n"
"%sRes.Slow : %s\n"
"%sClarity : %s\n \n",
_determine_color_string(rsust), itosym1(rsust),
_determine_color_string(rmuta), itosym1(rmuta),
_determine_color_string(rslow), itosym1(rslow),
_determine_color_string(rclar), itosym1(rclar));
cols.add_formatted(1, buf, true);
{
const int e_order[] =
{
EQ_WEAPON, EQ_BODY_ARMOUR, EQ_SHIELD, EQ_HELMET, EQ_CLOAK,
EQ_GLOVES, EQ_BOOTS, EQ_AMULET, EQ_RIGHT_RING, EQ_LEFT_RING
};
for (int i = 0; i < NUM_EQUIP; i++)
{
int eqslot = e_order[i];
const char *slot = equip_slot_to_name( eqslot );
if ( you.equip[ e_order[i] ] != -1)
{
const item_def& item = you.inv[you.equip[e_order[i]]];
const char* colname = colour_to_str(item.colour);
snprintf(buf, sizeof buf, "%-7s: <%s>%s</%s>",
slot, colname,
item.name(DESC_PLAIN).substr(0,38).c_str(), colname);
}
else
{
if (e_order[i] == EQ_WEAPON)
{
if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BLADE_HANDS)
snprintf(buf, sizeof buf, "%-7s: Blade Hands", slot);
else if (you.skills[SK_UNARMED_COMBAT])
snprintf(buf, sizeof buf, "%-7s: Unarmed", slot);
else
snprintf(buf, sizeof buf, "%-7s:", slot);
}
else
{
snprintf(buf, sizeof buf, "%-7s:", slot);
}
}
cols.add_formatted(1, buf, false);
}
}
const int rinvi = player_see_invis(calc_unid);
const int rward = (wearing_amulet(AMU_WARDING, calc_unid)
|| you.religion == GOD_VEHUMET && !player_under_penance()
&& you.piety >= piety_breakpoint(2));
const int rcons = wearing_amulet(AMU_CONSERVATION, calc_unid);
const int rcorr = wearing_amulet(AMU_RESIST_CORROSION, calc_unid);
snprintf(buf, sizeof buf, "\n\n"
"%sSee Invis. : %s\n"
"%sWarding : %s\n"
"%sConserve : %s\n"
"%sRes.Corr. : %s\n",
_determine_color_string(rinvi), itosym1(rinvi),
_determine_color_string(rward), itosym1(rward),
_determine_color_string(rcons), itosym1(rcons),
_determine_color_string(rcorr), itosym1(rcorr));
cols.add_formatted(2, buf, false);
int saplevel = player_mutation_level(MUT_SAPROVOROUS);
const char* pregourmand;
const char* postgourmand;
if ( wearing_amulet(AMU_THE_GOURMAND, calc_unid) )
{
pregourmand = "Gourmand : ";
postgourmand = itosym1(1);
saplevel = 1;
}
else
{
pregourmand = "Saprovore : ";
postgourmand = itosym3(saplevel);
}
snprintf(buf, sizeof buf, "%s%s%s",
_determine_color_string(saplevel), pregourmand, postgourmand);
cols.add_formatted(2, buf, false);
cols.add_formatted(2, " \n", false);
if ( scan_randarts(RAP_PREVENT_TELEPORTATION, calc_unid) )
{
snprintf(buf, sizeof buf, "%sPrev.Telep.: %s",
_determine_color_string(-1), itosym1(1));
}
else
{
const int rrtel = !!player_teleport(calc_unid);
snprintf(buf, sizeof buf, "%sRnd.Telep. : %s",
_determine_color_string(rrtel), itosym1(rrtel));
}
cols.add_formatted(2, buf, false);
const int rctel = player_control_teleport(calc_unid);
const int rlevi = player_is_airborne();
const int rcfli = wearing_amulet(AMU_CONTROLLED_FLIGHT, calc_unid);
snprintf(buf, sizeof buf,
"%sCtrl.Telep.: %s\n"
"%sLevitation : %s\n"
"%sCtrl.Flight: %s\n",
_determine_color_string(rctel), itosym1(rctel),
_determine_color_string(rlevi), itosym1(rlevi),
_determine_color_string(rcfli), itosym1(rcfli));
cols.add_formatted(2, buf, false);
return cols.formatted_lines();
}
// Bottom level of branch - replaces down stairs with up ladders:
if (player_branch_depth() == your_branch().depth
&& you.level_type == LEVEL_DUNGEON
&& you.where_are_you != BRANCH_VESTIBULE_OF_HELL )
// Branches that consist of only 1 level (Hall of Blades).
// No down staircases, thanks!
if (player_branch_depth() == 1)
// Hall of blades (1 level deal) - no down staircases, thanks!
// XXX XXX why the special-casing?
if (player_in_branch( BRANCH_HALL_OF_BLADES ))
else if (at_branch_bottom()
&& you.level_type == LEVEL_DUNGEON)
unsigned char feat = grd[x][y];
switch (feat)
{
case DNGN_ROCK_WALL:
case DNGN_STONE_WALL:
case DNGN_METAL_WALL:
case DNGN_GREEN_CRYSTAL_WALL:
case DNGN_WAX_WALL:
case DNGN_CLEAR_ROCK_WALL:
case DNGN_CLEAR_STONE_WALL:
case DNGN_CLEAR_PERMAROCK_WALL:
return (true);
default:
return (false);
}
return grid_is_wall(grd[x][y]);
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: acr
* *********************************************************************** */
void cast_spec_spell(void);
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: acr
* *********************************************************************** */
void cast_spec_spell_name(void);
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: acr
* *********************************************************************** */
void create_spec_monster(void);
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: acr
* *********************************************************************** */
void create_spec_monster_name(void);
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: ( this does not seem to be used at all ... {dlb} )
* *********************************************************************** */
void create_spec_object(void);
void tweak_object(void);
// last updated 12say2001 {dlb}
/* ***********************************************************************
* called from: acr
* *********************************************************************** */
void debug_add_skills(void);
void debug_set_skills(void);
void debug_set_all_skills(void);
void debug_add_skills(void);
// last updated 17sep2001 {dlb}
/* ***********************************************************************
* called from: acr
* *********************************************************************** */
bool debug_add_mutation(void);
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: direct - food - items
* *********************************************************************** */
void error_message_to_player(void);
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: acr
* *********************************************************************** */
void wizard_cast_spec_spell(void);
void wizard_cast_spec_spell_name(void);
void wizard_create_spec_monster(void);
void wizard_create_spec_monster_name(void);
void wizard_create_spec_object(void);
void wizard_tweak_object(void);
void wizard_exercise_skill(void);
void wizard_set_skill_level(void);
void wizard_set_all_skills(void);
bool wizard_add_mutation(void);
void wizard_change_species( void );
void wizard_set_xl();
void wizard_get_religion( void );
void wizard_set_stats( void );
void wizard_draw_card();
void wizard_dismiss_all_monsters(bool force_all = false);
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: acr - direct
* *********************************************************************** */
void stethoscope(int mwh);
void debug_make_trap( void );
void debug_make_shop( void );
void debug_place_map();
// Honest debugging functions.
void debug_card();
void debug_set_xl();
void debug_place_map();
void debug_test_explore();
void debug_dismiss_all_monsters(bool force_all = false);
// last updated 12 Jun 2008 {jpeg}
/* ***********************************************************************
* called from: directn
* *********************************************************************** */
void error_message_to_player(void);
#if DEBUG_DIAGNOSTICS
void debug_stethoscope(int mon);
#endif
// last updated 12may2000 {dlb}
/* ***********************************************************************
* called from: acr
* *********************************************************************** */
void print_version(void);
void place_cloud(cloud_type cl_type, int ctarget_x, int ctarget_y,
int cl_range, kill_category whose, int spread_rate = -1 );
void place_cloud( cloud_type cl_type, int ctarget_x, int ctarget_y,
int cl_range, kill_category whose, int spread_rate = -1 );
scr.show();
redraw_screen();
}
void resists_screen()
{
#ifdef USE_TILE
mouse_control mc(MOUSE_MODE_MORE);
#endif
std::vector<formatted_string> vfs = get_full_detail(false);
clrscr();
cgotoxy(1,1);
textcolor(LIGHTGREY);
formatted_scroller scr;
scr.set_tag("resists");
for ( unsigned i = 0; i < vfs.size(); ++i )
scr.add_item_formatted_string(vfs[i]);
int altar_chance; // in percent
int travel_shortcut; // which key to press for travel
bool any_upstair_exits; // any upstair exits the branch (Hell branches)
int altar_chance; // in percent
int travel_shortcut; // Which key to press for travel.
bool any_upstair_exits; // any upstair exits the branch (Hell branches)
return ghost_name +
(Options.dump_kill_places != KDO_NO_PLACES?
" (" + short_place_name(place) + ")" : std::string(""));
return ghost_name
+ (Options.dump_kill_places != KDO_NO_PLACES?
" (" + short_place_name(place) + ")" : std::string(""));