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_red4
glowing_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_ETTIN
stone_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_JACKAL
hound CORPSE_HOUND
warg CORPSE_WARG
war_dog CORPSE_WAR_DOG
wolf CORPSE_WOLF
hog CORPSE_HOG
%sdir dc-mon/animals
blink_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_green
bumblebee CORPSE_BUMBLEBEE
killer_bee CORPSE_KILLER_BEE
%sdir dc-mon
eye_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_red4
giant_newt CORPSE_GIANT_NEWT
giant_gecko CORPSE_GIANT_GECKO
giant_iguana CORPSE_GIANT_IGUANA
giant_lizard CORPSE_GIANT_LIZARD
gila_monster CORPSE_GILA_MONSTER
komodo_dragon CORPSE_KOMODO_DRAGON
kobold CORPSE_KOBOLD /* K */
big_kobold CORPSE_BIG_KOBOLD
giant_centipede CORPSE_GIANT_CENTIPEDE
giant_mite CORPSE_GIANT_MITE
scorpion CORPSE_SCORPION
wolf_spider CORPSE_WOLF_SPIDER
trapdoor_spider CORPSE_TRAPDOOR_SPIDER
redback CORPSE_REDBACK
%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4
greater_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/animals
killer_bee_larva CORPSE_ANT_LARVA
killer_bee_larva CORPSE_KILLER_BEE_LARVA
worm CORPSE_WORM
swamp_worm CORPSE_SWAMP_WORM
spiny_worm CORPSE_SPINY_WORM
brain_worm CORPSE_BRAIN_WORM
%back dc-misc/blood_red dc-misc/blood_red1 dc-misc/blood_red2 dc-misc/blood_red3 dc-misc/blood_red4
black_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_FROG
giant_brown_frog CORPSE_GIANT_BROWN_FROG
blink_frog CORPSE_BLINK_FROG
spiny_frog CORPSE_SPINY_FROG
%sdir dc-mon
deep_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_green
queen_ant CORPSE_QUEEN_ANT
queen_bee CORPSE_QUEEN_BEE
%sdir dc-mon/animals
bear 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_red4
small_snake CORPSE_SMALL_SNAKE
snake CORPSE_SNAKE
black_mamba CORPSE_BLACK_MAMBA
water_moccasin CORPSE_WATER_MOCCASIN
grey_snake CORPSE_GREY_SNAKE
viper CORPSE_VIPER
%sdir dc-mon/animals
%back dc-misc/blood_green
giant_ant CORPSE_GIANT_ANT /* a */
giant_cockroach CORPSE_GIANT_COCKROACH /* a */
soldier_ant CORPSE_SOLDIER_ANT /* a */
## Cattle ('Y')
sheep CORPSE_SHEEP
yak CORPSE_YAK
death_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_red4
giant_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_CENTAUR
yaktaur 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/animals
jackal 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_red4
merfolk_fighter_water CORPSE_MERFOLK_FIGHTER
mermaid_water CORPSE_MERMAID
siren_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_green
elephant_slug CORPSE_ELEPHANT_SLUG /* m */
giant_slug CORPSE_GIANT_SLUG /* m */
giant_snail CORPSE_GIANT_SNAIL /* m */
%sdir dc-mon
manticore 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_GIANT
ettin CORPSE_ETTIN
cyclops CORPSE_CYCLOPS
fire_giant CORPSE_FIRE_GIANT
frost_giant CORPSE_FROST_GIANT
stone_giant CORPSE_STONE_GIANT
titan CORPSE_TITAN
%sdir dc-mon/animals
green_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_DRAKE
firedrake CORPSE_FIREDRAKE
lindwurm CORPSE_LINDWURM
death_drake CORPSE_DEATH_DRAKE
## Dragons ('D')
wyvern CORPSE_WYVERN
dragon CORPSE_DRAGON
hydra5 CORPSE_HYDRA
steam_dragon CORPSE_STEAM_DRAGON
ice_dragon CORPSE_ICE_DRAGON
swamp_dragon CORPSE_SWAMP_DRAGON
mottled_dragon CORPSE_MOTTLED_DRAGON
quicksilver_dragon CORPSE_QUICKSILVER_DRAGON
iron_dragon CORPSE_IRON_DRAGON
storm_dragon CORPSE_STORM_DRAGON
golden_dragon CORPSE_GOLDEN_DRAGON
shadow_dragon CORPSE_SHADOW_DRAGON
## Eyes ('G')
giant_eyeball CORPSE_GIANT_EYEBALL
eye_of_draining CORPSE_EYE_OF_DRAINING
giant_orange_brain CORPSE_GIANT_ORANGE_BRAIN
great_orb_of_eyes CORPSE_GREAT_ORB_OF_EYES
## Hybrids ('H')
hippogriff CORPSE_HIPPOGRIFF
griffon CORPSE_GRIFFON
manticore CORPSE_MANTICORE
harpy 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_KOBOLD
big_kobold CORPSE_BIG_KOBOLD
%sdir dc-mon/demons
ugly_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_red4
naga CORPSE_NAGA
guardian_naga CORPSE_GUARDIAN_NAGA
%sdir dc-mon/animals
killer_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_OGRE
two_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_TROLL
rock_troll CORPSE_ROCK_TROLL
iron_troll CORPSE_IRON_TROLL
deep_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_red4
human CORPSE_HUMAN
shapeshifter CORPSE_SHAPESHIFTER
glowing_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_red4
mermaid_water CORPSE_MERMAID
merfolk_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];
};
#endif
struct 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_TILE
dolls_data doll;
// int floor_tile;
bool held_in_net;
#endif
player_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;
else
want_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_TILE
static 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_TILE
if (Options.tile_menu_icons)
{
const std::string dollname = basename + ".tdl";
#ifdef LOAD_UNPACKAGE_CMD
snprintf( cmd_buff, sizeof(cmd_buff),
UNPACK_SPECIFIC_FILE_CMD,
zipname.c_str(),
dir.c_str(),
dollname.c_str() );
system(cmd_buff);
#endif
const 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