selection menu.
TODO: Use this instead of dolls.txt for initialising dolls, falling back on dolls.txt if name.tdl cannot be found and for new characters.
I've tried displaying floor type but found it resulted in an information overload, and also distracts from the main information (species, equipment), esp. since it's mostly floor and most of the tile is covered anyway. I left it in (though commented out), so it's in the repository, but will remove it afterwards.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10122 c06c8d41-db1a-0410-9941-cceddc491573
WRDCASRSGOBY5RLVORAMRBSYKEWLLO7VZ4V5NQG2TKBWYNU4OZKAC 32ZJULPV5A4ZUD3J6X3U2JJHTBSRWUL7RJ4CIDIUTC6FKHR3XAWQC FXMHQR6XCQE27OBQ7LG2P6WBBXVAESBQRJUNNL44VF6342TAZHFQC GLHWVF2JPHBL7NV3D3CNHPIQSHZQPREVUJT6ZN43OBKBX5HL5NKQC POACC5YR6QQGEX6GGMUJKGCDQNX6P6FUF4UQTYGOSHFOHJ26X4SQC Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC 3SQQ4MM6YO4I37CQ6GIBIX6BXAEVHNVNHPVMR3PPBBNO454D6XWQC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC HBPUTW5HDHUEPB62DMJ6GGP2D2GLZB53O5VRTWDLQ4Z53NWB3MKQC MADTICUXDKQB7EKTXG7J2OIJGUM7A437FRWIBRA3BIVEKXEXHO6AC BWH4C6ZVGZV37Y3ILA6Q22IBZKEYY35TJTT2YULSRIYI6SQNLPQQC RXZRRWQZH7H3E66ENDI6WTSDDTC5F7MDGIMZTEDYDE4YCUQN4CSAC OGDVYT4KKXIUOB4NCNWBX64EJWS25B54DF23UP3NMQ6QWHEW2RAAC U6ILMKBXTQZYT62IGD2CALYNU4VQGRSTHN6QBFBU7BVUBHWYOEQQC G7Y4WKHR2FHMKCBFZXKZNT37S7YVNHTDI7CZPXEKD4QXXCR6HQWQC 3XRTONH32W5DNI2V2SGAHXN3EHOZQ26ZXMVYL5TRP6HLQN7P4HNAC YP2ADVIVFDLAU4NYFG7BTHV6BMH7VPKUYQ6WVQF3Z725L3DSX7HAC LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC LP5EK64IEM7AHNYQID4GGKOQJQNZLKY4DCCZN47SIUZ6IXAXH5UAC TXVL24IFH5SK7EJAN7JAUHAZJHJV7GB364UU65P745GUBWJS6Q6AC BCL6BB7HZXAJCAGKK6MZ7AGWNLFP46FIXRVGJ6LR3QLDE6XFQGVAC QXMDZLLFI565U6MG5VNDZGMHCUU7EE265YRQGTFMCH73ECG2I62AC NQ5X2L66MPWZTR3ANZDBQ5ISPDTJ3AGEYTFQIS437S7MOTXN7A2AC 5OG2ACRHEIK5HD5C3OCV4COQBIYFE4JCHYCWXSSZ26PMDXXPRHIAC HBXWZNXAJ7LUX7FYUIHQYBTRMWVJC6CAQQL3NNZHK5ETLIFEZJ7QC DIAGORS5MPTNYDMPDOBXCIGCVDH7THTHYFOQUKMET57QH2J6WF5AC CLIEHAE2PP7ZIGLLIMYCWM4FC54KBOAN5AILOLAZJ5S26GTJM4RQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC M7WTOF3BVX5MGA7AQZB22YEFWCSL7RLW54PQM3MTRLCKUCUZZEUAC QFIV4YISNBTC5QXN7JYHEL3FBFWIQ2HKJ4YBDCZYTQ3PMPFE653AC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC HVSBRVFZODK4R7P6EJ7Y7AHZDVRSNSFDHIH3M3DDGG5E26Z4KD5AC 2NCKGJDDPPGP2NXYYPEPVRJIIWEP6M7HE6WYMQN3UNNN3C2JIRFQC IHOKNI4O7EEW4UBMKHP6XOZNEIQSW4AYOT4O3JXUIXNNR553IQAQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC VEHHZZFWDG5M4IXTCXXMKH3S2FSXTZ4CD23J6AYVFEPY7PBZ7GWQC TXVVUZNKI2O5YJXC2N4GPG3RJFNC6LSC5IJZKD5XLS4LGJHD2H7AC 5YYQEHOEBH6H4FXW3H6RAQ7U6VZ33BVP3S3I3BE3GM5IUL5DAKYQC 2KTJHQUX2LTU2BCLS5YXVRRKMOYKKIZAPF2LBKORFGSHEN5IO3IAC HDLNRHAMFVDM4QCZMY6COBYZ35ODPR5PONT4UE77UAZ7GEE2FLHQC V32K3LIICYQ2JEQ7BW62IEPVG2NSUAURMKTAVNSXLYCZ66CLDUUQC MOT3YZFRY3JG2MH3GN2VD6IY3IJSAXJUXMXS222TXWKRFCENOCDQC 7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC T4IH76FA5TWHFOZUJFHLQXQJENJHWTUZZP4EGNA7D4GTZY7D4ZKAC NCDWWDJQLAU5ORSAQGZKJJ5E22VTDGGPJMVVBWQFHQ2B3U3UFHDQC TW7QOMTSLYPGUUWHGHLY5G5LV6QQRQIKK4BSE64RY7RDGKVDHCEAC OMSSJON5IE4LBXJ7CZE52IZRZS7ZICS23SKP4AGLHH3QNCRMEFVAC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC V2XKNBSMA7QYPRZ4IXI2MBD6D63WJY5VQSMSISF7G4XYBITNN7IQC // Writes equipment information into per-character doll file.void save_doll_file(FILE *dollf){ASSERT(dollf);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);// Write into file.char fbuf[80];tilep_print_parts(fbuf, result.parts, true);fprintf(dollf, "%s\n", fbuf);// const coord_def c = you.pos();// int feat = tileidx_feature(grd(c), c.x, c.y);// if (feat == TILE_FLOOR_NORMAL)// feat = env.tile_flv(c).floor;// else if (feat == TILE_WALL_NORMAL)// feat = env.tile_flv(c).wall;// fprintf(dollf, "floor=%d\n", feat);if (you.attribute[ATTR_HELD] > 0)fprintf(dollf, "net\n");}
%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4glowing_shapeshifter CORPSE_GLOWING_SHAPESHIFTER /* @ */hell_knight CORPSE_HELL_KNIGHT /* @ */human CORPSE_HUMAN /* @ */necromancer CORPSE_NECROMANCER /* @ */shapeshifter CORPSE_SHAPESHIFTER /* @ */wizard CORPSE_WIZARD /* @ */
cyclops CORPSE_CYCLOPS /* C */fire_giant CORPSE_FIRE_GIANT /* C */frost_giant CORPSE_FROST_GIANT /* C */hill_giant CORPSE_HILL_GIANT /* C */ettin CORPSE_ETTINstone_giant CORPSE_STONE_GIANT /* C */titan CORPSE_TITAN /* C */
giant_bat CORPSE_GIANT_BAT
dragon CORPSE_DRAGON /* D */golden_dragon CORPSE_GOLDEN_DRAGON /* D */hydra5 CORPSE_HYDRA /* D */ice_dragon CORPSE_ICE_DRAGON /* D */iron_dragon CORPSE_IRON_DRAGON /* D */quicksilver_dragon CORPSE_QUICKSILVER_DRAGON /* D */shadow_dragon CORPSE_SHADOW_DRAGON /* D */storm_dragon CORPSE_STORM_DRAGON /* D */swamp_dragon CORPSE_SWAMP_DRAGON /* D */wyvern CORPSE_WYVERN /* D */
## Hounds ('h')jackal CORPSE_JACKALhound CORPSE_HOUNDwarg CORPSE_WARGwar_dog CORPSE_WAR_DOGwolf CORPSE_WOLFhog CORPSE_HOG
%sdir dc-mon/animalsblink_frog CORPSE_BLINK_FROG /* F */giant_brown_frog CORPSE_GIANT_BROWN_FROG /* F */giant_frog CORPSE_GIANT_FROG /* F */spiny_frog CORPSE_SPINY_FROG /* F */
## Bees ('k')%back dc-misc/blood_greenbumblebee CORPSE_BUMBLEBEEkiller_bee CORPSE_KILLER_BEE
%sdir dc-moneye_of_draining CORPSE_EYE_OF_DRAINING /* G */giant_eyeball CORPSE_GIANT_EYEBALL /* G */giant_orange_brain CORPSE_GIANT_ORANGE_BRAIN /* G */great_orb_of_eyes CORPSE_GREAT_ORB_OF_EYES /* G */
## Lizards ('l')%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4giant_newt CORPSE_GIANT_NEWTgiant_gecko CORPSE_GIANT_GECKOgiant_iguana CORPSE_GIANT_IGUANAgiant_lizard CORPSE_GIANT_LIZARDgila_monster CORPSE_GILA_MONSTERkomodo_dragon CORPSE_KOMODO_DRAGON
kobold CORPSE_KOBOLD /* K */big_kobold CORPSE_BIG_KOBOLD
giant_centipede CORPSE_GIANT_CENTIPEDEgiant_mite CORPSE_GIANT_MITEscorpion CORPSE_SCORPIONwolf_spider CORPSE_WOLF_SPIDERtrapdoor_spider CORPSE_TRAPDOOR_SPIDERredback CORPSE_REDBACK
%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4greater_naga CORPSE_GREATER_NAGA /* N */guardian_naga CORPSE_GUARDIAN_NAGA /* N */naga CORPSE_NAGA /* N */###naga_mage CORPSE_NAGA_MAGE /* N */###naga_warrior CORPSE_NAGA_WARRIOR /* N */
## Worms ('w')%sdir dc-mon/animalskiller_bee_larva CORPSE_ANT_LARVAkiller_bee_larva CORPSE_KILLER_BEE_LARVAworm CORPSE_WORMswamp_worm CORPSE_SWAMP_WORMspiny_worm CORPSE_SPINY_WORMbrain_worm CORPSE_BRAIN_WORM
%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4black_mamba CORPSE_BLACK_MAMBA /* S */water_moccasin CORPSE_WATER_MOCCASIN /* S */grey_snake CORPSE_GREY_SNAKE /* S */small_snake CORPSE_SMALL_SNAKE /* S */snake CORPSE_SNAKE /* S */viper CORPSE_VIPER /* S */
## Frogs ('F')giant_frog CORPSE_GIANT_FROGgiant_brown_frog CORPSE_GIANT_BROWN_FROGblink_frog CORPSE_BLINK_FROGspiny_frog CORPSE_SPINY_FROG
%sdir dc-mondeep_troll CORPSE_DEEP_TROLL /* T */iron_troll CORPSE_IRON_TROLL /* T */rock_troll CORPSE_ROCK_TROLL /* T */troll CORPSE_TROLL /* T */
## Queen insects ('Q')%back dc-misc/blood_greenqueen_ant CORPSE_QUEEN_ANTqueen_bee CORPSE_QUEEN_BEE
%sdir dc-mon/animalsbear CORPSE_BEAR /* U */black_bear CORPSE_BLACK_BEAR /* U */grizzly_bear CORPSE_GRIZZLY_BEAR /* U */polar_bear CORPSE_POLAR_BEAR /* U */
## Snakes ('S')%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4small_snake CORPSE_SMALL_SNAKEsnake CORPSE_SNAKEblack_mamba CORPSE_BLACK_MAMBAwater_moccasin CORPSE_WATER_MOCCASINgrey_snake CORPSE_GREY_SNAKEviper CORPSE_VIPER
%sdir dc-mon/animals%back dc-misc/blood_greengiant_ant CORPSE_GIANT_ANT /* a */giant_cockroach CORPSE_GIANT_COCKROACH /* a */soldier_ant CORPSE_SOLDIER_ANT /* a */
## Cattle ('Y')sheep CORPSE_SHEEPyak CORPSE_YAKdeath_yak CORPSE_DEATH_YAK
butterfly CORPSE_BUTTERFLY /* b */%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4giant_bat CORPSE_GIANT_BAT /* b */
firedrake CORPSE_FIREDRAKE /* d */lindwurm CORPSE_LINDWURM /* d */mottled_dragon CORPSE_MOTTLED_DRAGON /* d */steam_dragon CORPSE_STEAM_DRAGON /* d */swamp_drake CORPSE_SWAMP_DRAKE /* d */death_drake CORPSE_DEATH_DRAKE /* d */
## Centaurs ('c')centaur CORPSE_CENTAURyaktaur CORPSE_YAKTAUR
##deep_elf_annihilator CORPSE_DEEP_ELF_ANNIHILATOR /* e */##deep_elf_conjurer CORPSE_DEEP_ELF_CONJURER /* e */##deep_elf_death_mage CORPSE_DEEP_ELF_DEATH_MAGE /* e */##deep_elf_demonologist CORPSE_DEEP_ELF_DEMONOLOGIST /* e */##deep_elf_fighter CORPSE_DEEP_ELF_FIGHTER /* e */##deep_elf_high_priest CORPSE_DEEP_ELF_HIGH_PRIEST /* e */##deep_elf_knight CORPSE_DEEP_ELF_KNIGHT /* e */##deep_elf_mage CORPSE_DEEP_ELF_MAGE /* e */##deep_elf_priest CORPSE_DEEP_ELF_PRIEST /* e */##deep_elf_soldier CORPSE_DEEP_ELF_SOLDIER /* e */##deep_elf_sorcerer CORPSE_DEEP_ELF_SORCERER /* e */##deep_elf_summoner CORPSE_DEEP_ELF_SUMMONER /* e */elf CORPSE_ELF /* e */
## Elves ('e')elf CORPSE_ELF
%sdir dc-mon/animalsjackal CORPSE_JACKAL /* h */hog CORPSE_HOG /* h */hound CORPSE_HOUND /* h */warg CORPSE_WARG /* h */war_dog CORPSE_WAR_DOG /* h */wolf CORPSE_WOLF /* h */
## Merfolk ('m')%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4merfolk_fighter_water CORPSE_MERFOLK_FIGHTERmermaid_water CORPSE_MERMAIDsiren_water CORPSE_SIREN
giant_gecko CORPSE_GIANT_GECKO /* l */giant_iguana CORPSE_GIANT_IGUANA /* l */giant_lizard CORPSE_GIANT_LIZARD /* l */giant_newt CORPSE_GIANT_NEWT /* l */gila_monster CORPSE_GILA_MONSTER /* l */komodo_dragon CORPSE_KOMODO_DRAGON /* l */
orc CORPSE_ORC
%back dc-misc/blood_greenelephant_slug CORPSE_ELEPHANT_SLUG /* m */giant_slug CORPSE_GIANT_SLUG /* m */giant_snail CORPSE_GIANT_SNAIL /* m */%sdir dc-monmanticore CORPSE_MANTICORE /* m */
## Minotaur ('t')
orc CORPSE_ORC /* o */###orc_high_priest CORPSE_ORC_HIGH_PRIEST /* o */###orc_priest CORPSE_ORC_PRIEST /* o */###orc_sorcerer CORPSE_ORC_SORCERER /* o */###orc_warlord CORPSE_ORC_WARLORD /* o */
hill_giant CORPSE_HILL_GIANTettin CORPSE_ETTINcyclops CORPSE_CYCLOPSfire_giant CORPSE_FIRE_GIANTfrost_giant CORPSE_FROST_GIANTstone_giant CORPSE_STONE_GIANTtitan CORPSE_TITAN
%sdir dc-mon/animalsgreen_rat CORPSE_GREEN_RAT /* r */grey_rat CORPSE_GREY_RAT /* r */orange_rat CORPSE_ORANGE_RAT /* r */quokka CORPSE_QUOKKA /* r */rat CORPSE_RAT /* r */
## Drakes ('l')swamp_drake CORPSE_SWAMP_DRAKEfiredrake CORPSE_FIREDRAKElindwurm CORPSE_LINDWURMdeath_drake CORPSE_DEATH_DRAKE## Dragons ('D')wyvern CORPSE_WYVERNdragon CORPSE_DRAGONhydra5 CORPSE_HYDRAsteam_dragon CORPSE_STEAM_DRAGONice_dragon CORPSE_ICE_DRAGONswamp_dragon CORPSE_SWAMP_DRAGONmottled_dragon CORPSE_MOTTLED_DRAGONquicksilver_dragon CORPSE_QUICKSILVER_DRAGONiron_dragon CORPSE_IRON_DRAGONstorm_dragon CORPSE_STORM_DRAGONgolden_dragon CORPSE_GOLDEN_DRAGONshadow_dragon CORPSE_SHADOW_DRAGON## Eyes ('G')giant_eyeball CORPSE_GIANT_EYEBALLeye_of_draining CORPSE_EYE_OF_DRAININGgiant_orange_brain CORPSE_GIANT_ORANGE_BRAINgreat_orb_of_eyes CORPSE_GREAT_ORB_OF_EYES## Hybrids ('H')hippogriff CORPSE_HIPPOGRIFFgriffon CORPSE_GRIFFONmanticore CORPSE_MANTICOREharpy CORPSE_HARPY
giant_centipede CORPSE_GIANT_CENTIPEDE /* s */giant_mite CORPSE_GIANT_MITE /* s */redback CORPSE_REDBACK /* s */scorpion CORPSE_SCORPION /* s */wolf_spider CORPSE_WOLF_SPIDER /* s */trapdoor_spider CORPSE_TRAPDOOR_SPIDER /* s */
kobold CORPSE_KOBOLDbig_kobold CORPSE_BIG_KOBOLD
%sdir dc-mon/demonsugly_thing CORPSE_UGLY_THING /* u */very_ugly_thing CORPSE_VERY_UGLY_THING /* u */
## Nagas ('N')%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4naga CORPSE_NAGAguardian_naga CORPSE_GUARDIAN_NAGA
%sdir dc-mon/animalskiller_bee_larva CORPSE_ANT_LARVA /* w */brain_worm CORPSE_BRAIN_WORM /* w */killer_bee_larva CORPSE_KILLER_BEE_LARVA /* w */spiny_worm CORPSE_SPINY_WORM /* w */swamp_worm CORPSE_SWAMP_WORM /* w */worm CORPSE_WORM /* w */
## Ogres ('O')ogre CORPSE_OGREtwo_headed_ogre CORPSE_TWO_HEADED_OGRE
giant_blowfly CORPSE_GIANT_BLOWFLY /* y */giant_mosquito CORPSE_GIANT_MOSQUITO /* y */red_wasp CORPSE_RED_WASP /* y */yellow_wasp CORPSE_YELLOW_WASP /* y */
## Trolls ('T')troll CORPSE_TROLLrock_troll CORPSE_ROCK_TROLLiron_troll CORPSE_IRON_TROLLdeep_troll CORPSE_DEEP_TROLL## Human shaped ('@')%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4human CORPSE_HUMANshapeshifter CORPSE_SHAPESHIFTERglowing_shapeshifter CORPSE_GLOWING_SHAPESHIFTER
%sdir dc-mon%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4mermaid_water CORPSE_MERMAIDmerfolk_fighter_water CORPSE_MERFOLK_FIGHTER
#ifdef USE_TILE// This used to be in tiles.h. (jpeg)#include "tiledef-main.h"#include "tiledef-dngn.h"#include "tiledef-player.h"struct dolls_data{dolls_data() { memset(parts, 0, sizeof(parts)); }int parts[TILEP_PART_MAX];};#endifstruct player_save_info{std::string name;unsigned long experience;int experience_level;bool wizard;species_type species;std::string class_name;god_type religion;#ifdef USE_TILEdolls_data doll;// int floor_tile;bool held_in_net;#endifplayer_save_info operator=(const player& rhs);bool operator<(const player_save_info& rhs) const;std::string short_desc() const;};
dolls_data equip_doll;for (unsigned int j = 0; j < TILEP_PART_MAX; ++j)equip_doll.parts[j] = TILEP_SHOW_EQUIP;const int gender = TILEP_GENDER_MALE;tilep_race_default(existing_chars[i].species, gender,existing_chars[i].experience_level,equip_doll.parts);int job = get_class_by_name(existing_chars[i].class_name.c_str());if (job == -1)job = JOB_FIGHTER;tilep_job_default(job, gender, equip_doll.parts);existing_chars[i].doll = equip_doll;
#if 0#ifdef USE_TILE// What's this supposed to achieve? (jpeg)clrscr();cgotoxy(1, 1);#endif#endif
if (!has_space && i > 5 && i < len - 4&& (numb[(k + 10 * j) % 17] % 5) != 3)
if (i == 0 && start != 0){// Start the name with a predefined letter.name[i] = start;want_vowel = _is_random_name_vowel(start);}else if (!has_space && i > 5 && i < len - 4&& (numb[(k + 10 * j) % 17] % 5) != 3) // 4/5 chance of a space
&& (want_vowel|| (i > 1&& is_random_name_vowel( name[i - 1] )&& !is_random_name_vowel( name[i - 2] )&& (numb[(k + 4 * j) % 17] % 5) <= 1 )))
&& (want_vowel|| (i > 1&& _is_random_name_vowel( name[i - 1] )&& !_is_random_name_vowel( name[i - 2] )&& (numb[(k + 4 * j) % 17] % 5) <= 1 ))) // 2/5 chance
|| i <= 2 || i >= len - 3|| is_random_name_space( name[i - 1] )|| (i > 1 && is_random_name_space( name[i - 2] ))|| (i > 2&& !is_random_name_vowel( name[i - 1] )&& !is_random_name_vowel( name[i - 2] )))
|| i <= 2 || i >= len - 3|| _is_random_name_space( name[i - 1] )|| (i > 1 && _is_random_name_space( name[i - 2] ))|| i > 2&& !_is_random_name_vowel( name[i - 1] )&& !_is_random_name_vowel( name[i - 2] ))
&& name[i] == name[i - 1]&& (name[i] == 'y' || name[i] == 'i'|| (numb[(k + 12 * j) % 17] % 5) <= 1))
&& name[i] == name[i - 1]&& (name[i] == 'y' || name[i] == 'i'|| (numb[(k + 12 * j) % 17] % 5) <= 1))
if (!is_random_name_vowel( name[i] ))want_vowel = true;elsewant_vowel = false;
// If we just got a vowel, we want a consonant next, and vice versa.want_vowel = !_is_random_name_vowel(name[i]);
}#ifdef USE_TILEstatic void _fill_player_doll(player_save_info &p, const std::string &dollfile){dolls_data equip_doll;for (unsigned int j = 0; j < TILEP_PART_MAX; ++j)equip_doll.parts[j] = TILEP_SHOW_EQUIP;equip_doll.parts[TILEP_PART_BASE]= tilep_species_to_base_tile(p.species, p.experience_level);bool success = false;FILE *fdoll = fopen(dollfile.c_str(), "r");if (fdoll){char fbuf[1024];memset(fbuf, 0, sizeof(fbuf));if (fscanf(fdoll, "%s", fbuf) != EOF){tilep_scan_parts(fbuf, equip_doll.parts);tilep_race_default(p.species,get_gender_from_tile(equip_doll.parts),p.experience_level,equip_doll.parts);success = true;while (fscanf(fdoll, "%s", fbuf) != EOF){if (strcmp(fbuf, "net") == 0)p.held_in_net = true;// else if (strncmp(fbuf, "floor=", 6) == 0)// sscanf(fbuf, "floor=%d", &p.floor_tile);}}fclose(fdoll);}if (!success) // Use default doll instead.{int job = get_class_by_name(p.class_name.c_str());if (job == -1)job = JOB_FIGHTER;int gender = coinflip();tilep_job_default(job, gender, equip_doll.parts);}p.doll = equip_doll;
{#ifdef USE_TILEif (Options.tile_menu_icons){const std::string dollname = basename + ".tdl";#ifdef LOAD_UNPACKAGE_CMDsnprintf( cmd_buff, sizeof(cmd_buff),UNPACK_SPECIFIC_FILE_CMD,zipname.c_str(),dir.c_str(),dollname.c_str() );system(cmd_buff);#endifconst std::string dollpath = get_savedir_path(dollname);_fill_player_doll(p, dollpath);#ifdef LOAD_UNPACKAGE_CMD// Throw away doll file.if (file_exists(dollpath.c_str()))unlink( dollpath.c_str() );#endif}#endif
/* tile dolls (empty for ASCII)*/std::string dollFile = get_savedir_filename(you.your_name, "", "tdl");#ifdef USE_TILE// Save the current equipment into a file.FILE *dollf = fopen(dollFile.c_str(), "w+");if (dollf){save_doll_file(dollf);fclose(dollf);DO_CHMOD_PRIVATE(dollFile.c_str());}#else// Don't overwrite old tile dolls.if (!file_exists(dollFile)){FILE *dollf = fopen(dollFile.c_str(), "wb");fclose(dollf);}#endif
MOUSE_MODE_NORMAL,MOUSE_MODE_COMMAND,MOUSE_MODE_TARGET,MOUSE_MODE_TARGET_DIR,MOUSE_MODE_TARGET_PATH,MOUSE_MODE_MORE,MOUSE_MODE_MACRO
MOUSE_MODE_NORMAL,MOUSE_MODE_COMMAND,MOUSE_MODE_TARGET,MOUSE_MODE_TARGET_DIR,MOUSE_MODE_TARGET_PATH,MOUSE_MODE_MORE,MOUSE_MODE_MACRO