--- src/cave.c.orig Sun Jul 20 17:10:15 2003 +++ src/cave.c Mon Jul 21 21:35:15 2003 @@ -1497,6 +1497,20 @@ case GRAPHICS_NONE: case GRAPHICS_IBM: { + if (player_symbols && p_ptr->body_monster == 0) + { + player_race *rp_ptr = &race_info[p_ptr->prace]; + player_race_mod *rmp_ptr = &race_mod_info[p_ptr->pracem]; + + if (rp_ptr->d_attr != MEGO_CHAR_ANY) + a = rp_ptr->d_attr; + if (rp_ptr->d_char != MEGO_CHAR_ANY) + c = rp_ptr->d_char; + if (rmp_ptr->d_attr != MEGO_CHAR_ANY) + a = rmp_ptr->d_attr; + if (rmp_ptr->d_char != MEGO_CHAR_ANY) + c = rmp_ptr->d_char; + } if (player_char_health) { int percent = p_ptr->chp * 10 / p_ptr->mhp; @@ -2007,6 +2021,22 @@ /* Get the "player" char */ c = r_ptr->d_char; + + /* Mega-Hack -- Apply modifications to player graphics XXX XXX XXX */ + if (player_symbols && p_ptr->body_monster == 0) + { + player_race *rp_ptr = &race_info[p_ptr->prace]; + player_race_mod *rmp_ptr = &race_mod_info[p_ptr->pracem]; + + if (rp_ptr->d_attr != MEGO_CHAR_ANY) + a = rp_ptr->d_attr; + if (rp_ptr->d_char != MEGO_CHAR_ANY) + c = rp_ptr->d_char; + if (rmp_ptr->d_attr != MEGO_CHAR_ANY) + a = rmp_ptr->d_attr; + if (rmp_ptr->d_char != MEGO_CHAR_ANY) + c = rmp_ptr->d_char; + } /* Save the info */ *ap = a; --- src/init1.c.orig Sun Jul 20 17:10:16 2003 +++ src/init1.c Mon Jul 21 21:35:15 2003 @@ -2313,6 +2313,36 @@ continue; } + /* Process 'g' for "graphics" (one line only) */ + if ((buf[0] == 'R') && (buf[2] == 'g')) + { + char sym; + int tmp; + + /* Paranoia */ + if (!buf[4]) return (1); + if (!buf[5]) return (1); + if (!buf[6]) return (1); + + /* Extract the char */ + if (buf[4] != '*') sym = buf[4]; + else sym = MEGO_CHAR_ANY; + + /* Extract the attr */ + if (buf[6] != '*') tmp = color_char_to_attr(buf[6]); + else tmp = MEGO_CHAR_ANY; + + /* Paranoia */ + if (tmp < 0) return (1); + + /* Save the values */ + rp_ptr->d_char = sym; + rp_ptr->d_attr = tmp; + + /* Next... */ + continue; + } + /* Process 'N' for "New/Number/Name" */ if ((buf[0] == 'S') && (buf[2] == 'N')) { @@ -2720,6 +2750,36 @@ if (buf[4] == 'A') rmp_ptr->pclass[z] |= choice[z]; else rmp_ptr->mclass[z] |= choice[z]; } + + /* Next... */ + continue; + } + + /* Process 'g' for "graphics" (one line only) */ + if ((buf[0] == 'S') && (buf[2] == 'g')) + { + char sym; + int tmp; + + /* Paranoia */ + if (!buf[4]) return (1); + if (!buf[5]) return (1); + if (!buf[6]) return (1); + + /* Extract the char */ + if (buf[4] != '*') sym = buf[4]; + else sym = MEGO_CHAR_ANY; + + /* Extract the attr */ + if (buf[6] != '*') tmp = color_char_to_attr(buf[6]); + else tmp = MEGO_CHAR_ANY; + + /* Paranoia */ + if (tmp < 0) return (1); + + /* Save the values */ + rmp_ptr->d_char = sym; + rmp_ptr->d_attr = tmp; /* Next... */ continue; --- src/types.h.orig Sun Jul 20 17:10:16 2003 +++ src/types.h Mon Jul 21 21:35:15 2003 @@ -1185,6 +1185,9 @@ u32b oesp[PY_MAX_LEVEL + 1]; s16b opval[PY_MAX_LEVEL + 1]; + byte d_attr; /* Default player race attribute */ + char d_char; /* Deafult player race character */ + char skill_basem[MAX_SKILLS]; u32b skill_base[MAX_SKILLS]; char skill_modm[MAX_SKILLS]; @@ -1263,6 +1266,9 @@ u32b oflags5[PY_MAX_LEVEL + 1]; u32b oesp[PY_MAX_LEVEL + 1]; s16b opval[PY_MAX_LEVEL + 1]; + + byte d_attr; /* Default player race mod attribute */ + char d_char; /* Deafult player race mod character */ byte g_attr; /* Overlay graphic attribute */ char g_char; /* Overlay graphic character */ --- lib/edit/p_info.txt.orig 2004-12-29 19:24:30.000000000 -0500 +++ lib/edit/p_info.txt 2005-01-05 21:12:32.000000000 -0500 @@ -865,6 +865,7 @@ # R:F:flags # R:k:value:modifier:skill name # R:b:level:ability +# R:g:char:attr I: @@ -878,6 +879,7 @@ R:M:14:6:72:6:180:25:66:4:150:20 R:E:1:1:1:2:1:1 R:C:Warrior | Archer | Mage | Rogue | Priest | Loremaster +R:g:*:* R:N:1:Half-Elf R:D:A crossbreed of elf and human, they get the best of the two races. @@ -895,6 +897,7 @@ R:k:+600:+000:Sneakiness R:k:-100:+000:Weaponmastery R:k:+500:+000:Archery +R:g:h:W R:N:2:Elf R:D:Elves are the first born, the Eldar. @@ -916,6 +919,7 @@ R:k:+800:+000:Sneakiness R:k:-500:+000:Weaponmastery R:k:+1500:+000:Archery +R:g:h:W R:N:3:Hobbit R:D:An old but quiet race related to humans. @@ -938,6 +942,7 @@ R:k:+1200:+000:Sneakiness R:k:-1000:+000:Weaponmastery R:k:+2000:+000:Archery +R:g:h:s R:N:4:Gnome R:D:Related to dwarves, Gnomes are between Dwarves and Hobbits in size. @@ -958,6 +963,7 @@ R:k:+600:+000:Sneakiness R:k:-800:+000:Weaponmastery R:k:+1200:+000:Archery +R:g:h:U R:N:5:Dwarf R:D:The children of Aule, a strong but small race. @@ -979,6 +985,7 @@ R:k:+700:+000:Sneakiness R:k:+1500:+000:Weaponmastery R:k:+500:+000:Archery +R:g:h:U R:N:6:Orc R:D:Quite strong but not very smart. @@ -998,6 +1005,7 @@ R:k:+000:+000:Sneakiness R:k:+1200:+000:Weaponmastery R:k:-500:+000:Archery +R:g:o:U R:N:7:Troll R:D:They can bear the light of the sun. @@ -1020,6 +1028,7 @@ R:k:-100:+000:Sneakiness R:k:+2000:+000:Weaponmastery R:k:-1000:+000:Archery +R:g:T:g R:N:8:Dunadan R:D:The greatest of the Edain, humans in all respects but @@ -1039,6 +1048,7 @@ R:k:+800:+000:Sneakiness R:k:+1500:+000:Weaponmastery R:k:+1000:+000:Archery +R:g:*:* R:N:9:High-Elf R:D:Elves are the first born, the Eldar. @@ -1061,6 +1071,7 @@ R:k:+300:+000:Sneakiness R:k:+1000:+000:Weaponmastery R:k:+2500:+000:Archery +R:g:h:w R:N:10:Half-Ogre R:D:A crossbreed between a human and an ogre. @@ -1081,6 +1092,7 @@ R:k:-100:+000:Sneakiness R:k:+2000:+000:Weaponmastery R:k:+000:+000:Archery +R:g:O:o R:N:11:Beorning R:D:A race of men shapeshifters. @@ -1104,6 +1116,7 @@ R:k:-100:+000:Sneakiness R:k:+2500:+000:Weaponmastery R:k:+500:+000:Archery +R:g:q:u R:N:12:Kobold R:D:A weaker kind of goblin, related to orcs. @@ -1123,6 +1136,7 @@ R:k:+100:+000:Sneakiness R:k:+1000:+000:Weaponmastery R:k:-800:+000:Archery +R:g:k:G R:N:13:Petty-Dwarf R:D:A nearly extinct subrace of dwarves. @@ -1143,6 +1157,7 @@ R:k:+500:+000:Sneakiness R:k:+000:+000:Weaponmastery R:k:+000:+000:Archery +R:g:h:o R:N:14:Dark-Elf R:D:Elves are the first born, the Eldar. @@ -1168,6 +1183,7 @@ R:k:+800:+000:Sneakiness R:k:-500:+000:Weaponmastery R:k:+1000:+000:Archery +R:g:h:D R:N:15:Ent R:D:Guardian of the forests of Middle-earth, summoned by Yavanna before @@ -1199,6 +1215,7 @@ R:k:+500:+000:Sneakiness R:k:-300:+000:Weaponmastery R:k:-200:+000:Archery +R:g:#:G R:N:16:RohanKnight R:D:Humans from the land of Rohan, riding the great Mearas. @@ -1237,6 +1254,7 @@ R:k:+100:+000:Sneakiness R:k:+100:+200:Weaponmastery R:k:+500:+000:Archery +R:g:*:* R:N:17:Thunderlord R:D:A thunderlord is a Great Eagle of Manwe, ridden by a Maia of Manwe. @@ -1271,6 +1289,7 @@ R:k:+3000:+000:Sneakiness R:k:+1500:+000:Weaponmastery R:k:+500:+000:Archery +R:g:B:g R:N:18:DeathMold R:D:A pure mass of evilness, DeathMolds cannot move, but they have much more @@ -1294,6 +1313,7 @@ R:k:+000:+000:Sneakiness R:k:+2500:+000:Weaponmastery R:k:+2500:+000:Archery +R:g:m:D R:N:19:Yeek R:D:The weakest of all the races, bad at everything except gaining levels quickly. @@ -1310,6 +1330,7 @@ R:k:-500:+000:Sneakiness R:k:-500:+000:Weaponmastery R:k:-500:+000:Archery +R:g:y:u R:N:20:Wood-Elf R:D:Elves are the first born, the Eldar. @@ -1333,6 +1354,7 @@ R:k:+800:+000:Sneakiness R:k:-2500:+000:Weaponmastery R:k:+4000:+000:Archery +R:g:h:G R:N:21:Maia R:D:An old race, dating from before the creation of Arda, the Maiar were @@ -1372,6 +1394,7 @@ R:k:+000:+000:Sneakiness R:k:+000:+000:Weaponmastery R:k:+000:+000:Archery +R:g:*:* ############################################################################## ############################################################################## @@ -1392,6 +1415,7 @@ # S:F:flags # S:k:value:modifier:skill name # S:b:level:ability +# S:g:char:attr # Make the parser actually work :) I: @@ -1407,6 +1431,7 @@ S:A:Orc | Troll | Dunadan | High-Elf | Half-Ogre | Beorning | S:A:Kobold | Petty-Dwarf | Dark-Elf | Ent | RohanKnight | Thunderlord | S:A:DeathMold | Yeek | Wood-Elf | Maia | +S:g:*:* # Just a place holder, the actualy setting are done with corruptions, see # corrupt.lua and player.lua @@ -1424,6 +1449,7 @@ S:C:A:Mage S:O:70:0:5d3 S:O:70:32:2d3 +S:g:V:* S:N:2:Spectre S:D:B:Spectres only partially exist in the mortal world and so they can @@ -1449,6 +1475,7 @@ S:k:+200:+000:Sneakiness S:k:-500:+000:Weaponmastery S:k:-200:+000:Archery +S:g:G:* S:N:3:Skeleton S:D:B:Yet an other kind of undead. Their physical 'body' is not very vulnerable @@ -1475,6 +1502,7 @@ S:k:-100:+000:Sneakiness S:k:+800:+000:Weaponmastery S:k:+000:+000:Archery +S:g:s:* S:N:4:Zombie S:D:B:Strong and dumb is a zombie. @@ -1501,6 +1529,7 @@ S:k:-100:+000:Sneakiness S:k:+500:+000:Weaponmastery S:k:+000:+000:Archery +S:g:z:* S:N:5:Barbarian S:D:A:Hardy members of their race, they are strong fighters but poor spellcasters. @@ -1520,6 +1549,7 @@ S:k:+000:+000:Sneakiness S:k:+1200:+000:Weaponmastery S:k:+500:+000:Archery +S:g:*:* S:N:6:Hermit S:D:A:Through years of isolation hermits can manage to increase their mana @@ -1540,6 +1570,7 @@ S:k:+400:+000:Sneakiness S:k:-500:+000:Weaponmastery S:k:-500:+000:Archery +S:g:*:* S:N:8:LostSoul S:D:A:In some very rare occasions souls can come back from the Halls of Mandos. @@ -1557,6 +1588,7 @@ S:A:DeathMold | Yeek | Wood-Elf | Maia | S:O:70:32:25d2 S:O:70:12:25d3 +S:g:*:* # Used for corruptions that can change your subrace S:N:9:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx @@ -1566,6 +1598,12 @@ S:P:0:0:0 S:M:0:0:0:0:0:0:0:0:0:0 S:E:0:0:0:0:0:0 +# Gross, Evil and Disgusting Hack(TM): This depends on the assumption that +# the only subrace that can be changed to is Vampire. Ideally, the info +# stored in the save file about this special subrace should include the +# d_attr and d_char fields copied into it by switch_subrace(), but that +# would change the save file format. +S:g:V:* ##############################################################################