predefined doll settings in dolls.txt, so players can actually use this. TODO: Save choice back into file.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9999 c06c8d41-db1a-0410-9941-cceddc491573
DK76MINM4TMQKZ6HKMJZMZM7QPGQUO3YY3I226G7JDUYJJLWKWAQC
AOGZQPY3H64AMVAOMTOR22AFS3ZMVNDJ7Y7QLT6CYRIZY4YDOALQC
EGCEFY2RR5K3DMJR7WP4KQRBXX2ENCO6YML32TWXXQO5HXJELMOQC
HICDAROOX7333JJXSSXOVZPALK5C7XCVMTGKT5DSS2SZKWXRT4NQC
V2XKNBSMA7QYPRZ4IXI2MBD6D63WJY5VQSMSISF7G4XYBITNN7IQC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
3SQQ4MM6YO4I37CQ6GIBIX6BXAEVHNVNHPVMR3PPBBNO454D6XWQC
HBPUTW5HDHUEPB62DMJ6GGP2D2GLZB53O5VRTWDLQ4Z53NWB3MKQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
PUQVSISR5TQFRV6UKOFREN45ZM4YSCST5QSJ2J5CHIHOSYK62MOQC
HBXWZNXAJ7LUX7FYUIHQYBTRMWVJC6CAQQL3NNZHK5ETLIFEZJ7QC
O746OUDNQBNZJ5YAHONNORFKWHV2EGDJWNAWGBALCYL3FGDZOOHQC
MV5USMLTBKVRWBAD67UFJ2BS4Y5HEOMYASRSB44DS24BBMRP75RQC
3XRTONH32W5DNI2V2SGAHXN3EHOZQ26ZXMVYL5TRP6HLQN7P4HNAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
PHZTAI6CW7JHKFW77MKDK75UCNWBXFK7VDD3D5ORVXUFWV3C3EVQC
LP5EK64IEM7AHNYQID4GGKOQJQNZLKY4DCCZN47SIUZ6IXAXH5UAC
RQ24Y25QDO2GY65XESEVBCP6VXCB7BDTWXO42IPPI6UPRJQ5XYDAC
NS3KXJXQSN33UQSOBDK3WXXKA3KY5YOUJL67NBZKGQAJYDYZ2COQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
CO3GKDYMG4P7SH6QLQSBQTAXPWLKSPNMHTUT46USTBL4YBLT4L5QC
Y3HZ5Q3MH5YLRMGJNGGTJDKB32WCV5XKP5HNNYPGXL5QV55K5IQAC
TZ643KHSE5CUPXFSQ7VYVOCM5MTQ7F4SENEYQX2RNFHGHLQVS3RQC
QXJZCH66QBMFHOBQAFP2C5XNTMCUYGLUSOKXQUS5O7TODSVQ6GHAC
JN4GPMQCXOY5ICTLPLWP6DXBFULN4GMAEK7T4GXTZVIJAUUKBBYAC
VD4KDTGHVKCN35AWREYB4TEOUMCTW7SAUPAMTMF5ABC7VBHVKP4AC
TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC
DMG73XDQHY2X2PHKWIY56XKD3O4NPGZKKIO6GX3IV2LLRVXPGKYQC
XCL4GC6RUWUK57HONM5CRUEOCCECR4NYAI5KLPJKCYM5OURU3AYQC
SKWBAGSAB625IIN4UP3NCPRX2H3KCPC2LULHS2A7JVRLO3EUBJDAC
SUWIERONPDATHPDMZRYO6GYIXSW6XIS5V5MK5IV23DWQH2LL7VIAC
NQMXQ6OQVUSC7Y7F7IL252QW4A5JED224EECNHWAM4ZZYVNY745AC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
PTJJ6D52LDVJN7WA7NMYV2WHH3WJMWWLRGF3D7ZSBUNLAACFRJHAC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
HSRRNAU5UAYC6B6IQWGJPFROMZBTJICPCH6DJVZDHDTAGOQ6IOYAC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
6TAQWWURX3QF4XXV7YGJEL5VKFLFEB2HV2PGJ5ARYNNRRRNVTFUAC
ROROKJTHG3XEOBFC6UDPC24ZEWR2WHSROQIVTRJ6DEX4GVC7OPAAC
IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC
L2BH25YQXSIQ7B66SXO7Q3IWUFVX7HTERRJZ5ZJJZS54ZETVFP6AC
const unsigned int ticks_per_redraw = 100;
// When moving the mouse via cursor when targeting update more often.
// For beams, the beam drawing already handles this, and when not targeting
// the normal drawing routines handle it.
const unsigned int ticks_per_redraw
= (mouse_control::current_mode() == MOUSE_MODE_TARGET ? 50 : 100);
// Don't take gender too seriously. -- Enne
tilep_race_default(you.species, coinflip(),
you.experience_level, doll->parts);
// Sanity, in case this hasn't been done before.
for (unsigned int i = 0; i < TILEP_PART_MAX; ++i)
dolls[0].parts[i] = TILEP_SHOW_EQUIP;
#if 0
// For some reason I can't reset this although it's used identically
// elsewhere. (jpeg)
for (unsigned int j = 0; j < TILEP_PART_MAX; ++j)
doll->parts[j] = TILEP_SHOW_EQUIP;
#endif
// Don't take gender too seriously. -- Enne
tilep_race_default(you.species, gender,
you.experience_level, dolls[0].parts);
default_doll.parts[i] = TILEP_SHOW_EQUIP;
mpr("loaded equipment");
_load_doll_data("dolls.txt", &default_doll);
default_doll[0].parts[i] = TILEP_SHOW_EQUIP;
default_doll.parts);
default_doll[0].parts);
player_doll = default_doll[0];
}
static int _get_random_doll_part(int p)
{
ASSERT(p >= 0 && p <= TILEP_PART_MAX);
return (tile_player_part_start[p]
+ random2(tile_player_part_count[p]));
}
static void _fill_doll_part(dolls_data &doll, int p)
{
ASSERT(p >= 0 && p <= TILEP_PART_MAX);
doll.parts[p] = _get_random_doll_part(p);
}
static void _create_random_doll(dolls_data &rdoll)
{
// All dolls roll for these.
_fill_doll_part(rdoll, TILEP_PART_BODY);
_fill_doll_part(rdoll, TILEP_PART_HAND1);
_fill_doll_part(rdoll, TILEP_PART_LEG);
_fill_doll_part(rdoll, TILEP_PART_BOOTS);
_fill_doll_part(rdoll, TILEP_PART_HAIR);
// The following only are rolled with 50% chance.
if (coinflip())
_fill_doll_part(rdoll, TILEP_PART_CLOAK);
if (coinflip())
_fill_doll_part(rdoll, TILEP_PART_ARM);
if (coinflip())
_fill_doll_part(rdoll, TILEP_PART_HAND2);
if (coinflip())
_fill_doll_part(rdoll, TILEP_PART_HELM);
tilep_job_default(you.char_class, gender, default_doll.parts);
}
else if (ch == 'e')
{
// nothing to be done
}
else if (ch == 'l')
{
_load_doll_data("dolls.txt", &default_doll);
}
else
return;
mpr("Pick (d)efault doll for job, use (e)quipment settings, roll a "
"(r)andom doll, or load doll (0-9) from file?", MSGCH_PROMPT);
char ch = (char) getchm(KMC_DEFAULT);
ch = tolower(ch);
bool finish = false;
if (ch == 'd')
{
if (!done_default)
{
default_doll = equip_doll;
tilep_job_default(you.char_class, gender, default_doll.parts);
done_default = true;
}
player_doll = default_doll;
}
else if (ch == 'e')
{
player_doll = equip_doll;
// nothing else to be done
}
else if (ch == 'r')
{
dolls_data random_doll = equip_doll;
_create_random_doll(random_doll);
player_doll = random_doll;
}
else if (ch == 's')
{
mpr("I'm sorry, you can't save your settings yet.");
continue;
}
else if (ch >= '0' && ch <= '9')
{
// HACK until I can find the proper function.
int num = ch - '0';
ASSERT(num >= 0 && num <= 9);
if (num < 0 || num >= NUM_MAX_DOLLS)
finish = true;
else
{
if (!loaded)
{
for (unsigned int i = 0; i < NUM_MAX_DOLLS; ++i)
dolls[i] = equip_doll;
// This'll have to be replaced by "load doll 0..9".
_load_doll_data("dolls.txt", dolls, NUM_MAX_DOLLS);
loaded = true;
}
player_doll = dolls[num];
}
}
else
finish = true;
mesclr();
dolls_data result = player_doll;
const bool halo = inside_halo(you.pos());
result.parts[TILEP_PART_HALO] = halo ? TILEP_HALO_TSO : 0;
result.parts[TILEP_PART_ENCH] =
(you.duration[DUR_LIQUID_FLAMES] ? TILEP_ENCH_STICKY_FLAME : 0);
// Main hand.
void DungeonRegion::pack_player(int x, int y)
{
dolls_data result = player_doll;
const bool halo = inside_halo(you.pos());
result.parts[TILEP_PART_HALO] = halo ? TILEP_HALO_TSO : 0;
result.parts[TILEP_PART_ENCH] =
(you.duration[DUR_LIQUID_FLAMES] ? TILEP_ENCH_STICKY_FLAME : 0);
_fill_doll_equipment(result);
if (parts[TILEP_PART_BASE] == TILEP_BASE_MERFOLK_WATER
|| parts[TILEP_PART_BASE] == TILEP_BASE_MERFOLK_WATER + 1)
else if (parts[TILEP_PART_BASE] == TILEP_BASE_MERFOLK_WATER
|| parts[TILEP_PART_BASE] == TILEP_BASE_MERFOLK_WATER + 1)
#if 0
#ifdef USE_TILE
if (cmd >= CMD_MIN_TILE && cmd <= CMD_MAX_TILE)
return KMC_TILE;
#endif
#endif
const bool in_range = (range < 0)
|| grid_distance(raycopy.pos(), you.pos()) <= range;
draw_ray_glyph(moves.target, MAGENTA, '*',
MAGENTA | COLFLAG_REVERSE, in_range);
const bool in_range
= (range < 0
|| grid_distance(raycopy.pos(), you.pos()) <= range);
tile_place_ray(moves.target, in_range);
#endif
MODE=LOADING
NUM=0
001:001:***:011:034:092:***:023:034:017:000:063
001:001:***:009:002:040:016:077:***:023:009:040
001:000:***:014:017:046:020:048:***:010:000:041
001:001:001:018:000:017:***:190:066:000:009:043
001:001:005:003:016:137:***:117:005:000:000:***
001:000:001:021:000:033:***:136:058:007:000:012
001:001:003:014:000:005:***:194:041:017:000:028
001:000:***:017:027:068:***:197:050:011:000:068
001:000:008:011:033:091:007:055:027:008:000:054
001:001:007:***:026:015:020:170:057:011:000:032