1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860
|
Version 3.40 Changelog
Note:
This file documents the progressive development of Crawl 3.40. Much
of it discusses specific changes to the codebase that may prove
uninteresting to non-programmers. The devteam has made no great
effort to clean up our comments.
Do you seek a more accessible overview of the latest changes? Those
answering "yes" should read the versions.txt entry for Crawl 3.40
instead.
=============
Contributors:
=============
Gordon Lipford (lipford@ca.ibm.com)
Linley Henzell (linley.henzell@student.adelaide.edu.au)
Jesse Jones (jesjones@halcyon.com)
Daniel Ligon (makmorn@qis.net)
David Loewenstern (loewenstern@home.com)
Brian Robinson (bcr19374@pegasus.cc.ucf.edu)
Brent Ross (bwross@csclub.uwaterloo.ca)
Josh Fishman (fishman@cs.nyu.edu)
Don Brodale (lar@bway.net)
Oct 30, 2000 (Brent Ross)
-- add macro/function for Control('A') and such.
-- remove "move[0]" (struct dist)
-- remove "&beam[0]" (struct bolt)
-- fixed some problems with elemental resistances
-- added "easy_confirm" to rc file
-- improved vampire's spell selection
-- added merfolk race
-- added wanderer class
-- split out the monster speaking function from monstuff.cc
-- fewer param monam() => ptr_monam()
-- restore abilities potion gives no message
-- move monster spells out of mon-util and into mon-spls
-- added inv_randart_wpn_properties()
-- fix berserk for mutations and others (paralyze too strong).
-- make pandemonium gates rarer, special named demon pandemonium levels too
-- does exp_needed require the species param -- removed
-- returned Swords as "Orbs of Fire"
-- returned quokka (added to low level regular dungeon monsters)
-- easy_open is now an option
-- added show_uncursed and easy_butcher options.
-- slight modifications to divine retribution
-- make weapon classes depend on different stats (USE_NEW_COMBAT_STATS)
-- added/move startup messages to the new block after initialise()
-- option to safeguard accidentally auto-removing and dropping armour
-- added starting message describing chacter race/class
-- make yesno() take a flag for "safe" cases... and option
-- fixed the file locking mechanism
-- moved some SOLARIS defined stuff (which really isn't Solaris dependant)
to MULTIUSER.
-- write player_title() as interface to skill_title() which will do the
best calculating and call skill_title (which is still needed for ghosts)
-- fixed bug: runes were being generated in the hive
-- fixed bug: examined clouds wrongly identified
-- added Simulacrum spell (creating a new Ice spell... I'm surprised
that Ice/Necromancy aren't very closely related... this will help
fix that).
-- added Ball Lightning spell (replacing Electric Orb).
-- fixed best_skill to use skill_points and species difficulty, instead
of just the base level (which gave preference based on the order of
the skills... this will only have that happen if the skill points
are also equal, which is much less likely).
-- adjustments to the spellbooks, and spellbook aquirement
-- Warp adjustments
- removed bend, warp/distortion brand from play
- warp brand was raised in level and the miscast effects were
added to the spell start and end (to limit the spell should it
ever be brought back).
- translocations also doesn't help with the miscast effects of
distortion brands (it was reducing the terror wielding one, and
these weapons easily outclass other brands for bonus damage and
powerful effects... they should never be anywhere near usable
as a reliable swap weapon, player's should have to seriously think
before deciding to use one... and have to risk some real damage
or banishment if they use them frequently).
- reduced frequency of summoning "spatial vortices" as a miscast
effect -- people were reliably getting them by dropping warp
branded weapons (and it's random movement makes it much less
a threat to the player, who will sit back and watch it mow down
the other monsters in the room (who won't see it as a threat))
- added Far Stike as a level one spell (the other spells were very
overpowered (distortion weapons are gross and dangerous, using
that code as "balanced" is wrong unless you're bringing over the
danger as well... all three of warp attacks were also range 1, which
is silly for Warpers, who should be world-class plinkers, not close
combat munchkins). It's a much limited spell that allows the player
to "hit" a monster in LOS (yes, that means like striking/airstrike
so it's not really another magic missle) with their weapon
(limits being: no magical special effects, no enchantment bonus,
slow to cast (weapon swing is part of it, but it's also a spell
so it will never take less than 10), max damage limited by
translocation skill and weapon, with strength bonus/penalty
applied, can be resisted (maybe change this to evaded?)). This
should probably be the only translocation combat spell... let them
go elsewhere for strong offensive.
- made it so that blink will at least teleport the player to a square
two squares away (makes blink a bit more usable, because it removes
the annoying "I could have walked here" feelings).
- added Swap, which allows the player to swap places with an
adjacent monster. Isn't really that abusable as it uses the
same swap code that's used for friendly monsters and that
doesn't currently have insta-kill potential... that can be
fixed later, but right now I'm calling it a "feature". Should
it be fixed, this spell could be changes to give a higher resist
and in insta-kill situations the monster could be allowed to
"scatter" to any of the immediate surrounding squares as a
save against death (player could get this too).
- added Apportation, a simple utility spell that will move light
objects to the player
- added Evocation a high level teleport surrounding monsters
away spell (even if resisted the monster still might be blinked)
-- fixed BUG: nagas gaining breathe fire mutation (twice in this case) seem
to lose the spit poison ability
-- made it so that MULTIUSER will look for ~/.crawlrc (Un*x-type standard)
-- pain, disrupt, far strike do a minimum of 1pt of damage to make up
for the monsters saving throw (that 1pt is only really good early
on when the character can use it to help stay alive, later on it
means almost nothing... so it helps out begining characters, and
makes the fact that the spell is going to be resisted fairly often
at those levels a little less painful).
-- made sure stabbing had a point of starting damage (it's silly to apply
multipliers to zero or negative damage).
-- returned "Toxins" to "Envenomations"
-- spider form now makes spell casting slightly more difficult.
-- changes "book of Assassinations" to "book of Stalking" (less confusing)
-- fix for "buggy helmets"... normal helmets with item_dam == 0 were not
being handled in the code (before they defaulted to nothing)... might
still exist, but should be rarer (there is a chance that the high
values of item_dam also occur).
-- fix for "buggy potions"... potions ids were being generated in a wider
range than there was descriptive words.
-- lowered the magic resistance of the really low level monster to allow
first level characters to deal with them better.
-- enums for item_descriptions
-- enums for monster bands
-- added enums for monster spell templates (still need to be applied)
-- fixed enchant_monster() so that slow and haste will work through it.
-- changed player_fast_run() into player_movement_speed() and got rid
of ATTR_WALK_SLOWLY as well... player_movement_speed() returns the
movement rate so it's no longer "have running == 6".
-- modified swap_monsters to handle habitats.
-- tweaked failure rate for Trog Haste (which was in with the other haste
and using Invocations).
-- power level caps for spells (checks for most spells to verify that
the effect is limited in some way as protection against potential
extremely high power casting). Adjustments to spell damages/to-hit
to work with the lower caps (that the play will run up against).
-- added wizard command for filling up skill experience pool
29.july.2000 (Jesse Jones)
* Changed NUM_SPELL_TYPES to 14 (from 32767!).
* Misc very minor CodeWarrior tweaks.
* Moved the source files into a new "Source" directory.
* Switched to using bounds checked array classes for most arrays.
* Fixed several places that were indexing past the end of arrays.
* Renamed environ::sh_x, sh_y, sh_greed, sh_type, and sh_level so they start with shop.
* Renamed MNG NON_MONSTER, MNST MAX_MONSTERS, ITEMS MAX_ITEMS, ING NON_ITEM,
CLOUDS MAX_CLOUDS, CNG EMPTY_CLOUD, and NTRAPS MAX_TRAPS.
* Fixed end_game so that it works with filenames longer than 6 characters.
* Disabled USE_WARPER_BETTER_WEAPON.
* Fixed misspelled "jewelry".
* Removed SPELL_SWARM from the Book of Summonings.
* Added Josh's "pick appropriate conjuration spellbook" code.
* Added Gordon's Manticore fix.
* Added the lnchType fix to the monster throw code.
* Added Gordon's revised title changes.
28.july.2000 (Gordon Lipford)
all changes are GPL'd by Gordon Lipford (c) 2000
in the event that the original Crawl license is found to be non-GPL,
special permission to use the changes with Crawl is hereby granted.
Bug Fixes:
* Manticores will now use their spikes. They weren't being given any
inventory in place_monster(), and then the throwing routine checked
for inventory before letting them throw..
* Player::level_change(): fixed up hit point penalty for halfings and
gnomes (incomplete coding of HP adjustment). Rewrote hp and mp gained
due to level so that it couldn't happen again.
* item_use::wield_weapon(): smoothed out Translocator 'save' vs distortion
effects when wielding/unwielding.
* smoothed out hp bonus for fighting skill (in integer math, always
divide _last_).
* enchant weapon scrolls will affect missiles now (no branding though),
if they aren't already heavily enchanted - same as weapons.
Changes:
* Completely reworked throwing for players _and_ monsters. Monsters are
not nearly as good as players for the most part, but can still be
rather scary. Hit Dice are (approximately) substituted for player skill,
and monsters of high intelligence are much better shots now.
- targeting any missile weapon benefits from high dex and throwing skill.
In fact, effective bow/xbow/sling skill is limited to twice one's
throwing. A warning is given on the skills screen if this limit is
hampering the player.
- darts, slings, and crossbows are easy to use. Bows and thrown weapons
are harder, but bows improve a _lot_ with skill.
- thrown weapons generally suck, but not horribly badly - they're still
useful in a pinch if you have decent strength and throwing skill.
- Strength has a different effect on the damage done from missiles:
- Slings and bows benefit from strength, up to a point determined by
the launcher's magical damage bonus. The launcher damage bonus is
_not_ added into the damage calculation.
- Thrown weapons benefit directly from strength, albeit at a lower rate.
- Crossbows do not benefit from strength at all.
- Crossbows benefit directly from magical launcher damage bonuses.
* changed some of the class titles
* updated display_mutations() so that more than 20 mutations will
cause a -more- prompt and screen clear.
28.july.2000 (Michal Valvoda)
Changes in mutations::void display_mutations(void)
- added innate abilities and weirdness to "Mutations & Other weirdness"
screen and renamed it to "Innate abilities, weirdness & mutations".
Innate abilities are colored LIGHTBLUE
22.july.2000 (Josh Fishman)
all changes are GPL'd by Josh Fishman (c) 2000
in the event that the original Crawl license is found to be non-GPL,
special permission to use the changes with Crawl is hereby granted.
* AppHdr.h:
added #defines:
USE_SKILL_POOL_DRAIN
- comment out to remove LRH's old skill-pool drain code, which makes the
xp-pool drain faster when it is very full
USE_WARPER_BETTER_WEAPON
USE_WARPER_SPELL_BEND
- start warpers with a {dagger/quarterstaff} of Distortion, or with the
spell Bend, depending on which is commented out. the former is
particularly evil for ogre-mages, since their default weapon can't dissect.
* abl-show.cc:
- Changed some `you breathe foo's to `you exhale foo's.
Made transformation, species & mutation breath weapons mutually exclusive
(so a naga with the `breathe flame' mutation can't spit poison). THIS IS
NOT TOTALLY DONE, but somewhat better than before.
+ Added failure probabilities for some (not yet used) Invocations.
* beam.cc:
+ Added BEAM_LAVA for player spell Bolt of Magma
+ N.B.: in some places hellfire and lava were conflated; I tried to
separate them, but may have introduced bugs.
* describe.cc:
+ Many changes to monster descriptions.
+ Chunk-of-flesh description now depends on your race, but not enough.
For example, carnivores ought to like non-rotten meat.
+ Spell descriptions:
- added Bolt of Magma
- changed Freeze, Sleep and Mass Sleep to reflect new `Slow Snakes' code
- Shadow Creatures has old description, to reflect its school
- Summon Large Mammal -> Call Canine Familiar
+ Some changes to god descriptions
* dungeon.cc:
+ Fixed "Entering..." bug (line 7215 or so)
* it_use2.cc:
+ Added ZAP_MAGMA (for Bolt of Magma)
+ Fixed POT_MIGHT effect
* it_use3.cc:
+ Fixed staff_spell() (wasn't letting player pick first spell sometimes).
+ STAFF_SMITING no longer gives you a one-choice menu, it just does it.
+ Non-Spell Staves no longer say "This staff has no spells in it." when
(I)nvoked, they say "Nothing appears to happen.".
+ Less abusive message for putting on non-jewellery (with free spelling
error!)
+ Jewellery messages now feature "put on" in some places where "wear" was.
* mon-data.h:
+ Added flags M_COLD_BLOOD and M_WARM_BLOOD where IMO appropriate.
* mon-pick.cc:
+ Removed MONS_RAKSHASA_FAKE from generateable monster lists.
+ Added Wargs, Wolves and Bears to generateable monster lists.
- Wargs in Orc Mines
- Wolves & Bears in the Lair
+ Moved mon_entry[] from within function to outside; made init code
into its own function.
* monstuff.cc:
+ Monster wounds messages: mon HPs left: was 1/4-1/3 => "horribly", now 1/6-1/3
+ (Glowing) Shapeshifters are no longer allowed to use Mage and Priest
special powers, but still get their shape's physical abilities. So a
shapeshifter in the form of an orc priest can't smite you, but one in
dragon form could breathe fire.
+ Some spelling & grammar fixes to mon_speaks; MUCH MORE WORK NEEDED HERE!
* newgame.cc:
+ Implemented USE_WARPER_BETTER_WEAPON and USE_WARPER_SPELL_BEND
+ Stalkers:
- skills: no more THROWING or DARTS, now SPELLCASTING and ENCHANTMENTS
- book: Book of Assassination
+ Draconians:
- No longer allowed to be Enchanters -- they so suck at Enchantments
- ... but now allowed to be Transmuters, since they're good at Transmigrations
+ Kobolds now allowed to be Death Knights.
+ Halflings now allowed to be Crusaders.
+ Removed strange random 1st level spell code -- now always give players the
1st spell in their spell-books.
* player.cc:
+ Players transformed into Dragons and Air now protected from poison
(as monsters of those types are immune).
+ Players transformed into Air no longer get air-magic boost, but still do
get earth-magic penalty.
+ Centaurs and Spriggans don't lose their fast-running w/ BLADE_HANDS any more.
* religion.cc:
+ simple_god_message() simplified
+ Reduced number of colors in god_speaks().
+ Changed some gain/lose piety messages to reflect what power was gained/lost.
+ Changed penence messages to reflect that gods don't summon, they send.
* skills.cc:
+ Sludge Elves now bad at Enchantments, good at Transmigrations, worse
at all forms of Elemental Magic (was experimental, not sure if it
was discussed on crawl-dev). FIXME: change back?
* spell.cc:
+ Added SPELL_BOLT_OF_MAGMA.
+ Spell type code now uses bitfields.
* spells.cc:
+ Spell type code now uses bitfields.
* spells2.cc:
+ Weapon branding code now works (brand_weapon()).
- er, except for what may be a bug at the end: `power << 1' => `power * 2'
+ Ozocubu's Refrigeration and Freeze can now slow cold-blooded creatures.
+ summon_things now correctly pluralizes.
* spells4.cc:
+ Added case TRAN_AIR to your_hand().
+ apply_area_one_neighboring_square() no longer gives unlimited trys.
+ cast_summon_large_mammal() no longer generates hogs or sheep, now just
Jackals, Hounds and War Dogs.
+ cast_sticks_to_snakes() gives MONS_SNAKE for low-level large object snakes
(as opposed to MONS_BROWN_SNAKEs).
+ sleep_monsters() is now only called from hibernation-spells:
- Now cold resistance negates.
- `Slow Snakes' (cold blood => may be slowed as well as put to sleep)
+ Fragmentation & Shatter:
- Statues and magic traps no longer destroyed
+ Shuggoth Seeds: seed now requires MH_NORMAL, warm-blooded host
* spl-book.cc:
+ Books of Minor Magic changed, hopefully for the better!
- BoMM-II man still need some help; Ozocubu's Armour replacement?
+ Book of Flames loses BOLT_OF_FIRE, gains BOLT_OF_MAGMA
+ Book of Frost gains SLEEP, loses FREEZING_CLOUD
+ Book of Ice gets MASS_SLEEP and FREEZING_CLOUD
+ Changes to Enchantment books
+ New Book of Assassination
+ spellbook_template() copying loop used to count from 1 to SPELLBOOK_SIZE,
I made it count from 0 (to fix the "can't-get-to-first-spell-in-staff" bug).
* spl-data.h:
+ Spell structure now has one field for "level" (instead of 3 identical ones).
+ Spell schools are now encoded as bits in an unsigned int instead of in a
special structure.
+ Some spells moved back to their old schools (from my (bad) recent changes).
* spl-util.h & spl-util.cc:
+ Changes to use new, simple spell structure.
* view.cc:
+ Removed "if (do_updates) mpr("Stealth checks...");" from DEBUG builds
(it's too annoying).
+ Enum'd monster noises.
21.jun.2000 (Michal Valvoda)
Changes:
monstuff.cc
- completely reworked mons_speak routine
- removed silence check required to call mons_speak (line 749)
- lowered chance to speak to one_chance_in (7) (line 749)
describe.cc
- added many new monster descriptions (deep elves, unique monsters
like Sigmund, Terence etc., killer bee larva ...)
- changed some existing descriptions - made them more detailed
- in case of some "smell" message add MUMMY check
19.jun.2000 (Gordon Lipford)
Changes:
* replaced old losight() function with new one. It doesn't quite
match the old one, but it's close enough.
* externalized setLOSRadius() and added normal_vision and current_vision
fields to the player structure. We have variable light sources, voila!
- Note that using a radius of 0 screws up map memory and looks really dumb.
I am not going to try to fix this.
- In a similar vein, bumping into something should draw it on the map
if you didn't know it was there already (ie you fumble blindly into a
wall). I'm not going to do this either. :)
* changed all level 1 'handle' references to level 2 'FILE *' for better
portability. Whenever a function needs a File Descriptor, I have
substituted fileno(handle) for just 'handle'.
* added Windows 32 bit Console support. Screen redraws, loading, saving,
and highscore updates are now VERY fast on Windows machines, even playing
from a shared network drive. The NT DOS VDM, at least, was !@$#* crap.
17.mar.2000 [Josh Fishman]
Bug Fixes:
* ability.cc: ABIL_BREATHE_FIRE gained power if player had MUT_SPIT_POISON
-- changed to bonus if player has MUT_BREATHE_FIRE
* beam.cc: poison_monster: fixed so TSO only gets pissed if it's YOUR
poison (my broken code had him angry if ANY poisoning occured)
* spells.cc: changed many miscast messages to passive "You are caught in"
(rather than "You conjure up") because miscast_effect is called for all
sorts of stuff (particularly divine punishments).
Structural Changes:
* moved much spellbook code to new file, spellbook.cc
* removed a host of DUR_<BRAND_TYPE> entries; replaced with
DUR_WEAPON_BRAND
* cast_selective_amnesia(bool): was (void); bool used to determine if
failure (and memory loss) is allowed. Sif Muna's invocation guarentees
success.
New Functions:
* Confined to spells4.cc
17.03.2000 [Don Brodale]
BugFixes:
* damage taken by player (misc.cc) for CLOUD_MIASMA was wrong --
operator precedence at fault;
* SPWPN_FROST changed to RING_SUSTAIN_ABILITIES in
player::player_sust_abil() for EQ_LEFT_RING conditional (noted by
Jukka);
* misc::itrap() MI_AXE -> WPN_HAND_AXE and mstuff2::mons_trap()
MI_SPEAR -> WPN_SPEAR, MI_AXE -> WPN_HAND_AXE to fix inappropriate
item generation (noted by Brent);
* newgame::new_game() stairs to Hall of Blades now
"you.branch_stairs[STAIRS_VAULT] + 4" not
"you.branch_stairs[STAIRS_CRYPT] + 4" to fix overmap inconsistency
described by Jukko and confirmed by Linley;
* dungeon::items() recoded to fix generation of skill manuals of
SK_GREAT_SWORDS but not of SK_POISON_MAGIC and SK_INVOCATIONS
(noted by Brent);
* MS_STING was cased in mstuff2 to be BEAM_FIRE causing it to set
scrolls afire (noted by <kathomps@julian.uwo.ca>) -- changed to
BEAM_POISON, as it should have been all along;
* CMD_LIST_WEAPONS in acr::input() '(' -> ')' (noted by Brent);
* CMD_LIST_WEAPONS in liblinux::init_key_to_command() '(' -> ')' to
match above change; and
* half a bugfix: in food::eat_meat() Amulet of the Gourmand no
longer renders contaminated or poisonous flesh clean -- now have
to apply the other half enabling eating of rotten food as though
it were [presumably] underlying corpse effect type.
Structural Alterations:
* commented many many of the header files -- need to comment and
check rest, but can we keep these up to date, please?;
* cleared out all tabs (some 500+ of them);
* *massive* checking of function declarations in most of the source
files and resulting clean-up of #includes and *.cc versus *.h
declaration -- too many to list here, if anyone wants to see it,
let me know;
* #ifdef/#defn protection added to overmap.h, preventing multiple
inclusions;
* version.h -- BUILD_DATE advanced to "17 mar 2000" and VERSION
changed to "3.40pr30";
* standardized ordering of #includes atop files, alphabetized last
set of #includes within each file, removed of duplicate entries
where found;
* duplicate #includes for message.h removed from files already
#include-ing externs.h (which in turn #includes message.h);
* removed setting you.redraw_hunger to 1 immediately prior or after
calls to food::food_change(), as the function sets this value
itself; and
* replaced (here and there) the sum of "n calls to random2(a)" with
"random2avg( (n*(a-1))+1, n )" -- for low values of n,
distribution of returned value is analogous and this approach
offers option to tweak distribution of value returned, too.
New Functions:
* food::can_ingest() added and inserted where appropriate -- option
to suppress message included in case we want to tie routine to
inventory list command to display whether something is edible by
player.
Changes to Existing Functions:
* message added for change in burden state *to* unencumbered --
don't know why there wasn't one in the first place, but actual
message may require tweaking
* acr.cc variable newc changed from type int to char to match value
returned from newgame::new_game()
* monplace::create_monster() automatic variable "int pets" removed
-- didn't do anything except sit there and retain zero valuation
* effects::lose_stat() recoded to use STAT_RANDOM (see below)
* food::food_change() coding simplified as it was really far more
complex than it had to be and confused, to boot
* food::is_carnivore() removed -- replaced by food::can_ingest()
(see above)
* food::eat_from_floor() automatic variable "int gloggj" removed,
all it held was returned value of eating(), but was never used
* mutation.cc redundant codings replaced with calls to
player::increase_stats() -- look for the comments: nulled-out
gain/loss message strings for mutations affected by change
* spells0::undead_can_memorize() -> undead_cannot_memorize() and
recoded for more reasonable usage, to permit restriction of
certain spells solely to the dead, and to allow the 'true' undead
to use spells that the 'hungry' dead cannot (not possible before),
etc.
* view::losight() variables see, see_section, and behind are now
bool and not (int / short int / char) -- some clean-up called for
but I wasn't up for it
* barehand_butcher added to food::butchery() to clarify coding
* spells1::cast_fire_storm() variable summd its association with
monster_place() removed
* player::how_hungered() recoded so as to avoid need for goto:
statement -- the accursed goto
* standardized (to some extent) the way in which mons_lev.cc f(x)'s
are coded
* mutation::perma_mutate() rewritten for clarity, taking advantage
of left-right evaluation of && conjoined conditionals
* effects::recharge_wand() clean-up / clarified
* spells1::cast_revivification() clarified a little bit
* monstuff:mons_in_cloud() cleaned-up, optimized, and enumerated --
no longer relies on (env.cloud_type[cl] % 100)
* view::cloud_grid() cleaned-up
* ouch::lose_level() lost some code that simply called random2() to
no particular end
* mons_lev::mons_level_abyss() -> mons_lev::mons_abyss(), to be more
in line with mons_pan() as both simply check whether a monster
"belongs"
* functions that now return bool instead of char:
+ effects::forget_spell();
+ effects::lose_stat();
+ effects::recharge_wand();
+ fight::monsters_fight();
+ food::butchery();
+ food::eat_from_floor();
+ misc::scramble();
+ mons_lev::mons_level_abyss();
+ monstuff::curse_an_item();
+ monstuff::mons_speaks();
+ mstruct::mons_pan();
+ mutation::delete_mutation();
+ mutation::give_bad_mutation();
+ mutation::give_good_mutation();
+ mutation::mutation();
+ mutation::perma_mutate();
+ player::you_resist_magic();
+ transfor::can_equip();
+ transfor::transform(); and
+ monplace::empty_surrounds().
* functions that now return bool instead of int:
+ transfor::remove_equipment();
+ monstuff::wounded_damaged() -- this may have to change if we
add more types of monster hurt than wounded and damaged;
+ dungeon::treasure_area(); and
+ view::check_awaken().
* functions that now return unsigned char instead of int:
+ player::player_energy();
+ player::player_fast_run();
+ player::player_spec_air();
+ player::player_spec_cold();
+ player::player_spec_conj();
+ player::player_spec_death();
+ player::player_spec_earth();
+ player::player_spec_ench();
+ player::player_spec_fire();
+ player::player_spec_holy();
+ player::player_spec_poison();
+ player::player_spec_summ(); and
+ player::player_sust_abil().
* spells2::burn_freeze() now returns char instead of int;
* dungeon::place_monster() parameter "char allow_bands" changed to
"bool allow_bands" to clarify how this parameter is, in fact,
used;
* dungeon::place_monster() parameter "int type_place"
changed/renamed to "bool is_summoning" to clarify how this
parameter is, in fact, used;
* dungeon::spotty_level() takes bool instead of char for first and
third parameters (seeded and boxy);
* food::eating() returns void instead of int -- always returned 0
and the returned value never used elsewhere;
* food::ghoul_eat_flesh() takes bool instead of char for only
parameter;
* item_use::wield_weapon() takes bool instead of char for only
parameter;
* misc::dart_trap() takes bool instead of int for first parameter;
* misc::down_stairs() takes bool instead of char for first
parameter;
* misc::fall_into_a_pool() takes bool instead of char for first
parameter;
* misc::handle_traps() takes bool instead of char for third
parameter;
* monplace::empty_surrounds() takes bool instead of char for fourth
parameter;
* monplace::mons_place() parameter "int type_place" changed/renamed
to "bool is_summoning" to clarify how this parameter is, in fact,
used;
* mstuff2::monster_abjuration() takes bool instead of char for
second parameter;
* mstuff2:monster_teleport() takes bool instead of char for second
parameter;
* player::increase_stats() takes unsigned char instead of char for
only parameter, extended to handle random stat boost;
* spells1::ice_armour() takes bool instead of char for second
parameter; and
* spells3::dancing_weapon() takes bool instead of char for second
parameter.
Enumerations and Defines:
* MONS_MOLLUSC_LORD (255) added to enum MONSTERS -- deprecated but
still referenced;
* NUM_WANDS added;
* STAT_RANDOM and NUM_STATS added;
* NUM_DURATIONS added and kept at 30 (rather than true value)
because setting it lower (I think) would cause savefile
compatibility problems -- not fully useful unless we wish to break
savefile compatibility;
* MI_AXE (9) and MI_SPEAR (11) removed from enum MISSILES (see
above);
* enum MAP_SECTIONS added for dungeon.cc / maps.cc interaction --
not fond of how maps are applied, so this may be temporary;
* enum MONSTER_CATEGORIES and mstruct::monster_category() added to
clarify certain conditional tests and keep comparison on
MONS_foobar to equality or inequality for ranges -- this will be
expanded and attached to similar entries in m_list.h (I ran outta
time!);
* enum CORPSE_EFFECTS added -- members mimic C_foo #defines and add
a few new ones and another for rotting [see food::eat_meat()] --
again, I ran outta time to extend application;
* misc::in_a_cloud() fully enumerated out, no longer relies on
switch (env.cloud_type[cl] % 100); and
* much more general enumeration across codebase.
06.03.2000 [Brent Ross]
* removed strength loss from berserk penalty (acr.cc);
* added Trog code to berserk (fight.cc, acr.cc);
* reverted Berserkers and Paladins to their original weapons/skills
-- actually, Paladins changed to sabres on Linley's suggestion
(newgame.cc);
* removed learning from stave combat (fight.cc);
* made vorpal weapons less common, other egos more common?
(dungeon.cc);
* changes to makefile.sol;
* increased armour penalty for spellcasting, lowered the reduction
to penalty for armour skill (spells0.cc);
* armour changes: elven armour is better for spellcasting, dwarven
armour for AC from skill -- for everyone (player.cc, spells0.cc);
* paralysis leaves player easier to hit (player.cc);
* reduced Xom's prayer reponse rate (religion.cc);
* added penance and gift timeouts for gods (files.cc, extern.h,
religion.cc, newgame.cc, ability.cc):
+ divine_retribution() (religion.cc, decks.cc, spells.cc); and
+ added god_speaks() so that the other gods can use colourful
text.
* indented code;
* improved the demonspawn AC mutations by boosting the number of
levels for the lower ones;
* extended spellbooks to 8 spells maximum ... restored levitation to
Air, removed "Summon Elemental" from Ice (their "elemental" is
really an Ice Beast, not benefitting from summoning Water
Elementals); and
* added Confusing Touch as a first level spell for enchanters and
Sure Blade as a second level spell -- removed wand and gave them
some enchanted darts.
23.02.2000 [Don Brodale]
BugFixes:
* implemented Linley-suggested bugfix in misc.cc:down_stairs() to
fix "Abyss bug" that was actually a/the "Pandemonium bug";
* copied over new makefile.sol posted by bwross;
* typo in dungeon.cc limited weapon given to elven mage-types to
whips and sabres *only*;
* item descriptions added to itemname.cc for BOOK_PARTY_TRICKS and
BOOK_CANTRIPS (jmf/bcr forgot to do so?);
* spells2::summon_elemental() would create sleeping elementals when
summoned hostile to spellcaster; and
* spells2::summon_things() -- apparent reversal of
MONS_ABOMINATION_SMALL and MONS_ABOMINATION_LARGE [jdf flagged it
first] fixed by correcting improper enumeration (see below).
Gameplay Changes:
* stalkers, assassins, and venom mages begin the game with knowlege
of Poison Potions (c.f., Paladins/Healers possessing knowledge of
Healing Potions).
Structural Alterations:
* externs.h now #includes enum.h -- already de facto standard, now
openly the case;
* moved files not directly related to current build into subfolder
labeled "misc";
* moved files removed from or "left behind" by the current build
into subfolder labeled "unused";
* proper #includes for decks.cc now in place;
* redundant #include defines.h in invent.cc and mstruct.cc removed,
already #include'd by externs.h;
* changed some formulas resembling "menv[bk].type =
MONS_ABOMINATION_SMALL + (random2(2)) * 26;" to conditional on
coinflip(); and
* flipped many conditional clause orderings to place function calls
last to take advantage of short-circuit logic.
New Functions:
* stuff::coin_flip() to replace random2() when desired result is
simply true or false -- does not use rand() or random() for return
value, getting around "iffy" rand() implementations for low order
bits (from *Numerical Recipies in C*);
* stuff::one_chance_in() to clarify conditionals like ".. &&
random2(foo) == 0 .." -- !one_chance_in() more intuitive than
!random2(), too;
* stuff::stepdown_value() to replace [and generalize] repeated
conditional chains in spells2.cc;
* stuff::table_lookup() to randomly return a value from an unbounded
value list and associated probabilities; and
* food::is_carnivore() to handle set conditional evaluation in
food.cc and itemuse.cc.
Changes to Existing Functions:
* item_name::initial() -> item_name::clear_ids() to clarify what
task this function performs;
* extended random22() to accept any number of 'dice' for averaging,
renamed to random2avg();
* extended random40() to accept any limit, renamed random2limit();
* "fixed" item_use::drink_fountain();
* "fixed" spells2::cast_twisted() a bit -- needs more fixing still;
* nested [in place of stacked] strings of conditional statements in
player::you_resist_magic(), beam::check_monster_magres(),
skills2::clac_ep() to eliminate needless value checking;
* changed create_monster() call in spells2::summon_butter() to
duration 22 [from 21] to match other summoning spells;
* altered staff description routine in describe.cc to prepend "This
staff";
* dungeon::box_room() optimized for efficiency -- lopsided odds for
placement of one (and only one) additional door reflects original
algorithm [I cannot explain why it should be this way];
* dungeon::city_level() clarified and optimized;
* dungeon::place_shops() optimized a bit;
* dungeon::plan_4() optimized a bit -- removed variable boxy_type,
as it was useless;
* dungeon::prepare_swamp() optimized slightly;
* dungeon::generate_abyss() logic clarified;
* it_use2::zappy() -- changed func_pass[5] for ZAP_ICE_STORM to
BEAM_ICE (23) from BEAM_COLD (3) in accordance with comment and
spell description;
* shopping::shop_getch() removed entirely and replaced by
stuff:get_ch() -- differed only in that the former returned char
and the latter unsigned char [variable ft in shopping::in_a_shop()
changed to unsigned char as a result];
* spell::surge_power() -- replaced successive tests with one complex
conditional to reduce number of tests required;
* spells2::summon_swarm() cleaned-up to make creature selection
clearer; added giant mosquito; red wasp -> wolf spider
[reversion]; killer bee larvae -> scorpion [as commented];
* spells2::summon_undead() cleaned-up by replacing successive
conditional calls to rand2() with one switch call to rand2() per
loop-through -- if odds look funny, it represents evaluation of
original coding;
* removed double assignment of numsc from spells2.cc:summon_swarm()
and spells2.cc:summon_undead();
* newgame::class_allowed() cases now uniformly list >disallowed<
species for all classes [except hunter];
* newgame.cc:init_player() -- eliminated redundant you.level_type
initialization, general clean-up;
* recoded describe::describe_potion() and describe::describe_food()
to handle redundant wordings -- more cases involved, but fewer
textual chunks duplicated;
* functions that now return bool instead of int:
dungeon::place_specific_trap(), fight::jelly_divide(),
spells::which_spellbook(), and spells0::spell_type();
* functions that now return bool instead of char:
item_use::drink_fountain(), monstuff::random_near_space(),
player::wearing_amulet(), spells::learn_a_spell(),
misc::go_berserk(), spells2::brand_weapon(), and stuff::see_grd();
* invent::invent() is now takes bool instead of char for second
parameter;
* overmap::print_level_name() now returns bool and takes bool as
third parameter, which also means that already_printed is now type
bool, too;
* player::player_see_invis() now returns unsigned char instead of
int; and
* spells3::you_teleport2() now takes bool instead of char.
Changes to Variables:
* nulled out Great Swords array entries in skills2.cc -- no longer
used;
* uncommented the last four entries to the skills[][] array and
deleted the fourth -- entries now match size of array as declared
elsewhere;
* converted some integer constants (foo = 59) to single-quoted
characters (foo = ';') where appropriate; and
* int item_sacr in religion::altar_prayer() deleted, as it was
unused;
Changes to In-Game Messages and Textual Elements:
* VERSION set to "3.40pr" so people know this is not the final
release;
* BUILD_DATE set to "23 Feb 2000" -- I think we should use month
abbreviation to avoid numerical confusion;
* minor tweaking of messages relating to undead players;
* special statue transformation message for gnomes added;
* grammatical clean-up and rewording of all spell descriptions in
describe.cc -- all checked, some changed a little;
* "book of Useful Magic" -> "book of Practical Magic";
* "book of Poisonings" -> "Young Poisoner's Handbook" (movie
reference);
* "book of Envenomations" -> "book of Toxins";
* "book of Storms and Fire" -> "book of the Tempests";
* "Anita" ->"Snorg" within its m_list.h entry;
* "Sneaker" -> "Sneak" for stealthy types (did one become an old
tennis shoe?);
* "Assassin" -> "Blackguard" for stabbing to avoid confusion with
character class;
* "Thief" -> "Covert" for stealthy types to avoid confusion with
character class;
* "Axe Maniac" -> "Halberdier" for polearms -- category includes
more than axes, so this is a better fit and avoids repetition of
another "top level" skill name;
* "Bombardier" -> "Flinger" for slings, as it is more descriptive of
a slinger's actions;
* "Crazy Person" -> "Whirler" and "Really Crazy Person" -> "Crazy
Person" for slings -- the joke still remains, but some dignity is
restored to slingers everywhere; and
* "Igniter" -> "Firebug" and "Burner" -> "Arsonist" for Fire Magic.
Enumerations and Defines:
* COLORS #define applied to numerical values still present in
m_list.h;
* COLOR #defines applied to it_use2::zappy() for ZAPs not switched
over from value numbers;
* COLOR #defines applied to remaining codebase, where I could find
references still using numerical values -- I think I overdid it a
bit and need to go back and fix a particular set of replacements;
* #define NO_MUT (in mutations.cc) replaced by last member in
MUTATIONS: NUM_MUTATIONS;
* #define NO_EQUIP replaced by last member in EQUIPMENT enum:
NUM_EQUIP;
* removed #defines (and references to them) for Tome of Destruction
and Manuals in dungeon.cc -- superceded by BOOKS;
* replaced 501 with ING where appropriate -- only scattered
instances of bare 501's left in the source code;
* MLAVAfoo and MWATERbar #defines restricted to use only in certain
header files [m_list.h monsstat.h newmonst.h], with the exception
of MLAVA4 used in monstuff.cc (what is it?) -- I'll clean these up
later, but other than this, they are no longer used in the
remainder of the codebase;
* CLOUD_ENERGY -> CLOUD_PURP_SMOKE;
* CLOUD_STICKY_FLAME -> CLOUD_BLACK_SMOKE;
* MONS_SMALL_ABOMINATION -> MONS_ABOMINATION_LARGE and
MONS_LARGE_ABOMINATION -> MONS_ABOMINATION_SMALL -- mistakenly
reversed in enum sometime before;
* MONS_ANITA -> MONS_SNORG -- regenerates and described as being a
hairy troll, so must be Snorg;
* MONS_FAKE_RAKSHASA -> MONS_RAKSHASA_FAKE;
* MONS_SMALL_ZOMBIE -> MONS_ZOMBIE_SMALL;
* MONS_BIG_ZOMBIE -> MONS_ZOMBIE_LARGE;
* MS_SUMMON_LESSER_DEMON -> MS_SUMMON_DEMON_LESSER -- I like
hierarchies;
* MS_SUMMON_DEMON_1 -> MS_SUMMON_DEMON_GREATER -- _1 too similar to
_I = potential typos;
* MS_GERYON -> MS_SUMMON_BEAST -- more descriptive of actual
function;
* MS_SLOW_DUP -> MS_CONFUSE -- what it is according to
monstuff.cc:handle_wand() - removed deprecate comment from enum.h;
* NWPN_VAMPIRE_S_TOOTH -> NWPN_VAMPIRES_TOOTH -- just too awkward as
it was;
* added BURDEN_STATES -- applied to you.burden_state;
* added DEMON_CLASS -- applied throughout;
* added HUNGER_STATES -- applied to you.hunger_state;
* added SPELLBOOK_CONTENTS -- applied throughout;
* added UNDEAD_STATES -- applied to you.is_undead;
* added SHOPS -- applied to env.sh_type[];
* expanded CLOUD_TYPES: _SMOKEs, _MIASMA, _DEBUGGING, and most _MONS
variations;
* expanded DUNGEON FEATURES to include elements 208,209,210 (Dry
Fountains VII and VIII and the PermaDry(tm) Fountain,
respectively);
* expanded OBJECT_CLASSES to include OBJ_GEMSTONES;
* expanded SYMBOLS to include SYM_DEBUG;
* expanded ZAPS to include added ZAP_ISKS_CROSS -- current use
commented out in zappy(); and
* mass enum'ing all over the codebase -- you name it, I tried to
enumerate it.
10.01.2000 [Brian Robinson]
* From Josh Fishman:
+ lots of enumming, mostly spells;
+ Paladins get a long sword and long sword skill to start;
+ Spriggans may now be stalkers;
+ poisoning something already poisoned gives extra naughty;
+ more powerful staves added;
+ armour skill no longer affects penalty to spellcasting for
wearing armor;
+ summon small mammals spell improved; and
+ Vehumet will protect against spell failures and preserve
intelligence.
* large characters receive a smaller spellcasting penalty for
bearing large shields;
* easy crawl bug in wizard mode fixed;
* wiz commands for controlled blink and create up staircase added;
* wiz help fixed so that all wiz commands now have help;
* subspecies selection in newgame.cc changed to prevent duplication
of information -- see the newgame.cc for details;
* Ogre berserkers now start with Club skill level 3 and Maces skill
level 1 -- the reverse of all other races, because they begin with
clubs rather than axes;
* Troll berserkers start with Unarmed skill level 3 and Dodging
skill level 2, but no weapon skills -- because they start without
weapons;
* Halflings may now be assassins and warpers; and
* Thieves start with more gold: random2(10) * 6 + random2(10) * 4.
30.12.1999 [Brian Robinson]
* linuxlib.* axed
* versions.txt updated to reflect new release
* version and build date #defines in version.h updated
* a little more explanatory info added to init.txt
* some completed tasks eliminated from todo.txt and bugs.txt
* disclaimer added to this file
27.12.1999 [Linley Henzell]
* USE_NEW_RANDOM tuned to reasonable pace when an FP coprocessor is
absent
* many minor tweaks
09.12.1999 [Linley Henzell]
* new berserk code works with ctrl+direction attacks
* savefiles deleted after death (under DOS, at least)
* xp no longer awarded for killing creatures created friendly
* a few new low-level monsters
* new init.txt options:
+ colour-code play-screen map, like the 'X' map
+ remove monsters and clouds from map
* horned characters can wear caps and hats
* class names switched back into lower case (where appropriate)
* informed when a monster's enchantments wear off (if in view)
* more information provided when looking at a monster
* monsters no longer cast animate dead when corpses aren't in sight
* most abilities can be used while hungry (not starving)
* monster invisibility can now wear off (it couldn't before)
* deflect/repel missiles enchantments now affect missile traps
* dexterity affects shield use
* monster AI improvements:
+ strong monsters only pick up missiles if already carrying
some
+ some improvements made to monster path-finding
* USE_NEW_RANDOM rand() removed -- randart code relies on random()
* ghosts deal 2/3 as much damage; xp value reduced
18.11.1999 [Daniel Ligon]
* shop prices right-justified
* yellow Xom patch fixed
* Xom will sometimes answer prayers
* evasion strengthened
* killed-by list enumerated; added "killed by an exploding spore"
* many calls to 'random() % x' replaced with 'random2(x)'
* calls to random3() and random4() eliminated
* Makhleb's minor destruction toned down
* amulets placed in the discovery listing
* beginning spells fixed for kobold summoners
* invisible undead referred to as "it"
* Spriggan assassins permitted -- speed/low food requirements
(Spriggan) greatly complement hand crossbow (assassin)
15.10.1999 [Brian Robinson]
* can acquire() food: royal jellies given to non-ghouls; royal
jellies or chunks to ghouls (attempted a variety of foods; proved
too big a pain)
* '#define XOM_ACTS_YELLOW' added to AppHdr.h
* acr.cc:srand() added for USE_NEW_RANDOM to work properly
14.10.1999 [Brian Robinson]
* fixed: problem where some super-long strings in describe.cc got
cut up, causing a compiler error (where possible, please try to
keep lines < 80 characters)
* describe_god() enumerated in describe.cc
* makefile.sgi option added to Makefile (doesn't work)
* fixed bugs culled from bugs.txt
* EasyCrawl(tm) door opening: walking into door opens it, running
into door opens the door and stops player
* GOD_NO_GOD case added to describe.cc:describe_religion() (it was
an acr.cc special case, but that's gone now)
* '#include <stdio.h>' added to fight.cc and spells2.cc because both
call sprintf() (would compile/link properly without it under Linux
but not DOS)
* makefiles .dos, .emx, and .sol tweaked
12.10.1999 [Brian Robinson]
* version string changed to "3.40" and '#define BUILD_DATE' added to
version.h for output alongside version number
* '#define USE_NEW_RANDOM' added to AppHdr.h
* duplicate/completed items removed from todo.txt (may have missed
some -- only cut those marked "done")
* inspect item command (in shops) changed to 'v'
* contents of oldmakefiles directory archived as oldmake.zip
* make distclean now deletes *.sav, *.lab, core, and *.0* (DOS and
Linux)
* fixed: some class names in newgame.cc were not capitalized
* new random number generator added -- should be a little better
than old RNG; uses rand() rather than random() to generate number
(#define USE_NEW_RANDOM to enable)
* wizmode fixes:
+ some creatures (e.g., necrophage) reduce max_hp (NAB:
reduction to zero normally means death) -- in wizmode,
negative max_hp results, triggering "you died, but its okay"
message every turn; added "you.max_hp = abs(you.max_hp)" to
the 'h' wizard command to correct negative max_hp
+ stethoscope unmapped from 's' key -- terribly annoying for
me, since I can't rest with '5' under Linux (can still
stethoscope by targetting or looking)
+ WIZARD compiled binaries append "Wiz" to any scores they
generate
+ help screen added, accessed by keying in '&' then '?' (lists
wizard commands in a fashion similar to normal help screen)
+ bugfix: Daniel's command code blocked wizard command
* Daniel's patches:
+ '#define XOM_ACTS_YELLOW' to render Xom's messages in yellow
+ bugfix: Abyss crash bug
+ new wizmode commands: "banish" and "Xom acts"
* 'v' and 'V' commands swapped -- examining an item seemed more
likely (to me) than version check, so "examine" now lowercased
* wizard option added to Makefile (same as debug but includes
-DWIZARD)
* weapons of reaching used to attack one monster behind another may
instead hit the monster inbetween
* giant races penalized less for using large shields; normal-sized
monsters may be penalized slightly more, but only by one or so
* debug.cc:error_message_to_player() added to output:
"You have encountered a program bug.
Please exit the level and save."
(previous instances of this message replaced with calls to this
function)
* haste and slow counters in acr.cc changed to take into account
amulet of resist slow: haste subtracts random2(2) each turn
(rather than one -- which could have led to infinite haste, but
let's not worry about that) and slow subtracts five (one
previously) each turn
02.10.1999 [Brian Robinson]
* help screen reformatted to spot entries more readily (at a
glance); added "more" capability so that [command summaries >
screen size] prompt user for more, preventing screen overflow
* amulet of maintain speed changed to the amulet of resist slowness:
old item description mentioned both resist slow and a speed bonus,
but the code only implemented resist slow -- wearing the amulet
now grants +10 to any hasting and also to maximum possible hasting
* some silly messages involving hasting and slowing changed
* messages indicating spell-casting failure added to the raise dead
functions, but I'm not sure they work (coding very confused here;
may only work some of the time)
* '#ifdef LINUX'-ed the acr.cc code [lines 663 - 676] which uses
variables declared in another '#ifdef LINUX' block (something may
be screwed up because I'm not sure what's going on here)
29.09.1999 [Brian Robinson]
* highscore() fixed so that it doesn't take so long
* scores output padded with some whitespace to improve appearance
* bugfix for 'a' being in scores (see bugs.txt and ouch.cc)
* comments added to enum.h showing where unique monsters are
* first argument removed from view.cc:draw_border() (same value
always passed)
* bugfix: player's score not always saved
* some problems with the new makefiles noticed while compiling under
DOS: any platform with its own library (e.g., liblinux) should be
+='ed to OBJECTS in appropriate system-specific makefile
* Makefile: noopt (no optimization) added to allow me to compile
under DOS without headaches
28.09.1999 [Daniel Ligon]
* linuxlib.* renamed to liblinux.*
* keypad for ncurses (Linux port) enabled
* liblinux.cc:kbhit() will always return 0
* big lookup table added to liblinux.cc to convert keypresses into
commands
* enumerated commands added to both enum.h and big switch statement
in acr.cc
* Brian's makefiles added
24.09.1999 [Brent Ross]
* bugfix for evasion
* macro.cc:getch_mul() reverted
* red devils have probablistic chance for (trident|demon trident|no
weapon)
* demon tridents correctly coloured
* xp spending cap/MAX_SPENDING_LIMIT
* broad axe, spiked flail, and great flail less common
* floating point operations in update_corpses() reduced
* all demonspawn scales/plates can be given at one or two levels
* max_hp ceiling displayed when player's max_hp reduced
* from Linley:
+ portal fixed so that it doesn't go below level 27
+ fixed checks for translocating in the Abyss
+ added fix for going to Pandemonium or the Abyss from Hell
+ note about using '+' for targeting added to various prompts
+ ghosts fade away only if they have fewer than half their hp
12.09.1999 [Linley Henzell]
* "Over-map" added
* messages can be coloured -- just call set_colour() before mpr()
* wild magic effects do more harm; increased likelihood of higher
levels of effect
* blink may not work and teleport takes longer in the Abyss
* a few unrandarts tweaked
* rewrote part of dungeon.cc weapon generation function; added
weapon rarity function
* some monsters receive a wider range of weapons
* many high-powered demons have greater speeds
* several changes to skills.cc; having many xp in the pool increases
the cost of exercising
* threshold values increased for special "you hit" messages and some
grammar patched -- see fight.cc
* three 'silly' monsters removed: dorgi, sword, and guardian robot
* haste has a direct effect on time_taken, rather than being treated
separately -- see player_speed()
* boots of levitation allow permanent hovering
* random events in Hell are much nastier
* clouds can be overwritten by other clouds, sometimes -- see
place_cloud()
* monster mutation spell affects monsters as polymorph
* new init.txt variable [verbose] determines level of detail about
randarts and other magical items in character dump
* monsters can cast 'direct' spells (e.g., smiting) over other
monsters if targeting player
* giants given the correct number of rocks
09.09.1999 [Brent Ross]
* damage lowered for some new weapons; tridents made heavier
* some changes from Dustin Ragan added to the newgame screens
* spellcasting reduced by weapon size [weight and/or speed]
* from Linley:
+ verified helmet/helm colour initialisation to LIGHTCYAN
+ swapping item letters outputs both items affected
+ '=' fixed to '==' in randart.cc line 1515
+ bugfix: more scrolling problem under DOS
+ bugfix: problem with the ctrl-direction keys under DOS
+ subspecies selection made into compile time option
+ horns mutation removed as a possibility for minotaurs
* Great Swords skill removed -- great swords/triple swords treated
as long swords
* Trolls + troll leather changed to no effect
* gdbm stuff removed -- makes things simpler; better security can
wait for new savefile implementation
* hand-and-a-half weapons:
+ no bonus if weapon is cursed
+ 1-1/2 hand weapons don't get the speed bonus past 10
+ two-handed weapons can get as fast as speed 7 with skill
+ +random2(3) to hit
+ +random2(3) to dam [all two-handed weapons] applied after
skill multipliers (i.e., with the dwarf and orc modifiers)
* multiple shield blocks in a turn becomes increasingly difficult
* fighters get dodging or armour skills on basis of starting armour
* shields and large shields slow down attacks
27.08.1999 [Brent Ross]
* character dump includes '*' for level 27 skills
* removing the "skill_change /= 2" line from spell skills was a bit
hard on early spellcasters (it seems reasonable to give to
low-level characters and phase out by mid-game, when it isn't
needed)
* bugfix: "Crush" required conjurations (hold over from Throw
Pebble)
* bugfix: having 1 xp in the pool permitted a lot of free practising
* penalty increased for heavy armour, now more in line with the new
shield penalty (are these values high enough?)
* Linley's new weapon suggestions added: axe, spiked flail, great
mace, great flail
* damage increased for some maces and flails (swords are quick and
accurate, maces and flails hit harder)
* "Boots" changed to "Barding" in centaur/naga equipment lists
* crystal plate mail somewhat resistant to corrosion
* +/- markers added to skills screen for benefit of monochrome
displays
* bugfix: labyrinth problems
* bugfix: LOS corner problem
* bugfix: can now make with -DWIZARD
* spellcasting/invocation interference removed
* weapon additions: broad axe [rare, 15, +3, 17], trident [9, -2,
16], and demon trident [evil -- wielded by red devils: 15, -2, 16]
* polearms/whips of reaching added
* gladiators given choice of starting with trident
* '#define USE_NEW_BERSERK' removed
* bugfix: incorrect display of barding AC value
* quite a bit of cleanup (converting ints to enums in the old code)
* draconian AC gains clean-up; removed level four increase and gave
two AC at start
* knife added; guaranteed on the first three levels
* bugfix: memorizing spells was impossible on some terminals
08.08.1999 [Brent Ross]
* bugfix: Orange Brains could hang game (MS_SUMMON_LEVEL spell in
Abyss)
* bugfix: monsters should no longer occur "under" the player
* bugfix: portals weren't closed on way out, but hell gates were
removed (now all are closed)
* bugfix: cannot unlearn spells outside the array bounds
* bugfix: manuals should auto-identify on the first read
* bugfix: Healing book was available from acquirement/Sif Muna
* missile launchers no longer train/use associated skill when used
as melee weapons (bows/xbows will train/use maces/flails, slings
use no skill)
* Zot traps will no longer message their effects on monsters unless
monster within LOS
* bugfix: liquid flame could wrap around and last a long time
* bugfix: whatever caused "program bugs" to occur in the Abyss
* bugfix: number of cards in Decks of Power defaulted to 0 and thus
gave 255 cards
* Nemelex fixed to give cards instead of Bone Lanterns and Geryon
Horns
* bugfix: food was not updating with cards
* bugfix: quick blades were getting free actions
* spell points update when Invocations gained
* granularity of skill gain upped to reduce "stage three":
+ number of learns from manuals upped to accommodate
+ monster xp values reduced to limit "stage two" effect
* power of smiting again reduced (seems reasonable now)
* teleport control restrictions (some areas will not allow
controlled teleport)
* runes may be stacked
* invocations and spellcasting learning interfere with one another
(like elemental magic)
* increased rate of skill cost per level
* removed division by two for cost of spellcasting skills
* greater rarity for unique artefacts (all seem to enter quickly
into any game, except the Sword of Power, for which the 50% chance
against creation probably kept it out of my last game for a while)
* evasion/shields were too good:
+ shield blocking difficulty raised a bit (from base 10 to 15)
+ player's evasion rolled in the monster to-hit check (so that
a player with an EV of 30+ can still be hit)... added a 1/15
chance of hitting regardless (players already got this
advantage).
* *.h guards moved to after the headers (cosmetic)
30.07.1999 [Brent Ross]
* bugfix: visiting Abyss from Hall of Blades resulted in an Abyss
populated by blades
* bugfix: problems with highscore entries running off end of the
line
* electrical and poison resistances no longer absolute -- 1/3 damage
taken on successful resist (still no poisoning for those with
poison resistance)
* storm dragon breath can be resisted
* draining will drain available xp pool, too
* spell levels moved to a function to prevent amassing a large
number of negative spells (forgot spell that didn't exist)
* spellcasting more difficult to get
* bugfix: plants stalking stairs
* dragon armours reverted to original values -- resistances and
benefits given are good enough (basic heavy armours were the ones
in real need of improvement)
* bugfix: distortion weapons (from Jesse)
* bugfix: deflect missiles status wasn't listed on '@'
* slime pit runes are only "possible" runes -- unlikely to get four
of them now
* stats added to "elf" dummy monster to allow elf zombies to live
* added redraw after projected noise
* bugfix: objects (runes, orb) were clobbered by items given to
monsters.
* monster descriptions with huge gaps in them were fixed
* bugfix: shapeshifters shouldn't polymorph into dancing blades
(numbers for names)
* acquirement() better than before for jewelry
* skills screen can handle more than 26 skills
* levels of poisoning shown for '@'
* traps more difficult to disarm as dungeon level increases
* traps might trigger during attempts to disarm
* all traps handled by handle_traps()
* are the new traps too hard on monsters? (probably yes, so they
take old damage amounts for now)
* player_light_armour() added, which returns true if the player is
in light or no armour
* bugfix: non-flying monsters were flying over traps
* polymorphed monsters not much of an easy xp trick anymore
* xp calculation takes into account a monster's speed
* plant learning capped (no more than first two levels of fighting
skills)
* some support added for explosions destroying potions/food on
ground are only the correct things being destroyed? -- check
bang.cc and destroy_item()
* wearing heavy armour provides a minium percentage of damage
reduction:
+ percent = (skill + base AC of body armour)
+ still needs application to monsters, but monsters don't
convieniently know whether they possess hard armour (let
alone armour skill) so this can probably wait
* extra protection from shrapnel attacks provided by heavy armour
only
13.07.1999 [Brent Ross]
* entrance to the Labyrinth blocked until debugged
* wizmode code in acr.cc fixed; changed some commands to more easily
remembered letters; added an identify
* fixed some cases where cursed jewelry plusses are assumed to be
based off 100 (creation code and many other cases suggest that
it's 150)
* random weapons, armour, and jewelry from acquirement() are now
uncursed
* demonspawn horns smoothed out so it's possible to get two levels
* ranger changed to hunter
* some gmon_use values changed (from Linley)
* life protection descriptions changed
* hunger_inc and ATTR_LIGHTNING_RESIST moved to functions in
player() -- the attribute is now replaced with
ATTR_DIVINE_LIGHTNING_PROTECTION (used to denote Makleb or Xom
protecting player from a lightning attack)
* checks added for the curses keypad enums
* learning curve for throwing skill lowered
* hand crossbows reduced in power
* learning curve for traps and doors skill lowered
* played with spellcasting staff identification
* player ghosts fixed:
+ monsters regenerate hp while player is off level
+ ghosts regenerate and teleport away when player leaves the
level
* assassins changed from ninja to hand crossbow types; given
enchanted dagger as well to help hand-to-hand
* throwing exercise added to darts, hand axes, daggers, and spears;
throwing skill bonus added for them, as well -- see item_use.cc
* scythes, halberds, and glaives given a chance to be weapons of
speed
07.07.1999 [Brent Ross]
* breath from ice-breathing dragons won't destroy walls
* life protection now a (level/3) chance
* bugfix: the 120/150 hp ghost thing
* anticheat code and security db added for multiuser systems
(requires gdbm)
* only picking up items has associated delay with autopickup,
walking over uninteresting stacks shouldn't cost any extra time
* berserk players fail the check_awaken() test with monsters and do
not spend experience on stealth
* dexterity added to stealth
* ogre magi given short swords instead of daggers
* stabbing stun effect toned down
* stabbing dex bonus toned down -- now limited by stabbing
* assassins start with a dagger; thieves start with short sword and
dagger
* stat mods reversed for thief and assassin; assassins given unarmed
combat
* wizard stat mods changed to +7 int/+3 dex, making them smarter
than other spellcasters
* draconian rangers no longer start with leather armour
* stealth toned down a bit (and again) in player.cc:check_stealth()
* to-hit reduced for throw fire/frost and sting -- see
it_use2.cc:zappy()
* bugfix: repel/deflect missiles problem -- changed bad REPEL
reference in acr.cc
* message added to unwielding vampiric weapons
* new keypad support hacked up for Unix
* shots used up 1 in 3 times
* bonus for crossbows' to hit and dam (item_use.cc)
* magic resistance for elves (player.cc)
* autopickup delay upped to 3 (one and two seem to be no delay at
all)
* opposing elemental staves can be identified (items.cc, spell.cc)
* zipfile removal added to ouch.cc to prevent cheating
* bugfix: view.cc STABBING check should be STEALTH for the no-yell
check; lowered to a straight percentage check
* Dwarven/Orc rangers given Dodging 1 (they were a bit short on
skills)
* HOrs get orcish bolts (newgame.cc) -- added MISSILES check in
HILL_ORC check
* gladiator/fighter modifications: (newgame.cc)
+ fighters: skills -- fighting 3, weapon 2, dodging/armour 2,
shields 2, stabbing/stealth 1, throwing 2; stats -- str +7,
dex +3
+ kobold/troll/ogre fighters: same as before
+ gladiators: skills -- fighting 3, weapon 3, dodging/armour 2,
shields 1, unarmed combat 2; stats -- str +6, dex +4
+ comparision to previous values:
o fighters: lost unarmed combat; +1 shields and +1
throwing
o gladiators: -1 dodging/armour and -1 shield; +2 unarmed
combat
o stat bonuses swapped
o armor for gladiator/fighter switched
22.06.1999 [Brent Ross]
* new ranger weapon variations (halfling slingers, dwarven
crossbowers)
* Ranger/Reaver problem fixed -- 'R'angers are now 'r'angers (so
capital letter R used only once)
* stealth improvements:
+ monsters don't yell (2 * skill) % of the time -- see
view.cc:monster_grid()
+ large races lose *2 modifier, small races receive *5/2 -- see
player.cc:check_stealth()
o Huge (x1): Troll, Ogre, Ogre Mage, Centaur
o Awkward (x3/2): Minotaur, Draconians
o Normal (x2): Everyone else
o Small (x5/2): Halfling, Gnome, Kobold, Spriggan, Naga
(Naga's aren't small, but they're good)
+ BEH_CHASING_I set for sleeping monsters who are stabbed
+ now a (skill + dex)% chance of stabbing fleeing or confused
monsters -- see fight.cc
+ backstab effectiveness depends on the monsters behaviour:
o sleeping monsters are easy targets -- lots of damage
potential
o fleeing and confused monsters -- not as much damage
potential
o other cases have even less damage potential
+ backstabbing more effective for daggers: daggers add dex/3
damage before the multipliers -- see fight.cc
* fight.cc:monster_dies() modified so that *any* summoned creature
killed by player/pet won't call done_good()
+ Elivion/TSO/Zin have to be passed through (not a problem
because they can't abuse summoning, anyway)
+ this could use a better fix (i.e., tracking who summoned
which monsters would help a lot)
* (Linley's suggestion) monster polymorph fixed to avoid NO_EXP
monsters: added "mons_flag(targetc, M_NO_EXP_GAIN)" to do-while
loop
* (Jesse's suggestion) teleport control/blink spell combo removed:
CONTROL_TELEPORT check removed from random_blink()
* racial bonus added to worn armour in player_AC()
* patched hunger status display bug: added food_change() and redraw
to down_stairs
17.06.1999 [Brian Robinson]
Note: I've tried to annotate all my changes in the code with my
initials [BCR] so you can grep for them to find my changes.
* some small cleanup here and there
* new makefile written for Linux
* changes to the make process which should spare us future
headaches:
+ OS_TYPE variable in the makefile that is automatically made
into a #define during make process (should make it easy to
keep the makefiles straight on the OS)
+ moved OBJECTS variable containing the list of the *.o files
to a file called make.obj which is included into the makefile
(should save a little space and keep all makefiles consistent
on object requirements)
* defines.h indented and added a header
* some newgame.cc oddness fixed: various system dependent name
checks were all messed up in a bunch of nested #ifdef stuff
(sorted it out)
* '#define MACROS' now does something: if defined, macros.h and
macros.cc files will be used, otherwise they won't (right now,
Crawl will not work correctly under Linux with MACROS defined --
see bugs.txt)
14.06.1999 [Brent Ross]
Some changes I added from Linley:
* bugfix for the Geryon bug
* message added for berserkers chopping up corpses in rage
* some incorrect enums in it_use3.cc (for Asmodeus's staff) changed
* demonspawn xp penalty lowered to 140%
* Elyvilon sacrifice code fixed to limit abuse
* priest.cc and priest.h renamed to abyss.*
* spellcasting penalties for wearing shields upped to +5/+15/+30
from +0/+5/+15 [buckler/shield/large shield]
* random stat increase added for Draconians
13.06.1999 [Brent Ross]
* Spriggans fully separated from the giant races, creating a
separate block for tiny races in the armour wearing code
* cursed rings identify themselves as "sticky cursed" when put on
* weapon slot updates if player eats food that is being wielded
* bugfix: black and grey scales reversed for demonspawn (with
regards to number of levels gained)
* for spells1.cc, blink() and random_blink(): weapons check removed
because scan_randarts should be only requirement
* bugfix: teleport control now works properly on blink (dependent on
order of includes and target compiler/system)
* #ifndef checking added around all *.h files to avoid problems
similar to those above
* full spell listing line added to character dumps
* creaky doors are [DEX + (Stealth + Traps) / 2] checks; check added
on closing doors, as well
* base values of heavy armour upped by 1 or 2 points
* spells3.cc:you_teleport() was another case of only checking the
weapon slot for a property (hopefully, I've changed all these into
scan_randarts)
* mutation.cc:demonspawn() had MUT_FAST twice; changed the second to
MUT_SHOCK_RESISTANCE (as the comment claimed)
* strength damage bonus had an ugly discrete nature to it;
multiplied the dammod values by 6 to get a smoother version of the
same function
* bugfix: screen needed to be refreshed after spell slot changes
* new equipment listing commands:
+ ')' lists current, swap a, swap b, and default 'f'ire weapons
+ ']' lists worn armour
+ '"' lists worn jewelry (NB: '=' already used elsewhere)
* bugfix: "shoot_skill = you.skills[SK_THROWING]" in item_use.cc was
wrong (should clearly be CROSSBOWS when using a crossbow)
* bugfix: handle_traps in misc() used env.trap_known instead of
trap_known (env.trap_known doesn't seem to be referenced anywhere
else)
* bugfix: Vehumet's gift was still not quite correct
* magical staves detection: staves may be detected over time or
whenever appropriate magic is cast, depending on skill levels
* Call Imp raised to a level three spell (too powerful for level
two)
* a little checking code added to dungeon.cc for monster armour
plusses
* bugfix: more line was misplaced on the recognized item screen
* mix of my/DML's improvements applied to the temp file purging
system
02.06.1999 [David Loewenstern]
* Makefile.dos added
* define.h updated for compatibility with DJGPP
* items.cc, monstuff.cc, mstuff2.cc, and spells.cc cleaned up
(mostly corrected misassignments, unsigned<->signed, unused vars,
etc.)
* enums added to monstuff.cc, mstuff2.cc, beam.cc
* enum.h updated as per above
* autopickup added
* '&' command functions only in debug mode
* remove_ring() now uses inventory letter
* fight.cc features more colourful "hits" (should be useful later to
differentiate weapons)
* bugfix: displaying top scores when no scorefile previously had
existed
30.05.1999 [Jesse Jones]
* highscore() will print more scores on larger windows
* worn cloaks no longer prevents wearing or removing body armor
* worn armor can be dropped if it's uncursed
* armor can be worn without removing the old armor
* missing ponderous armor message added
* from Brent:
+ bugfix: weapon line didn't always redraw after casting Blade
Hands
+ detect_items() uses '~' instead of '*'
+ char_dump.cc dumps failure rates
* wear_armour() changed to allow Spriggans to wear bucklers
* quit only pops up save changes dialog if game_has_started is true
(Mac)
* AppHdr.h replaces config.h
* all *.cc files include their header immediately after the AppHdr
file
??.05.1999 [Brent Ross]
* GNU indent 1.91 [-bad -bli0 -i4 -npcs -npsl] applied to get the
intended BSD indentation style into the code; sorted through some
things indent won't fix (more cleanup needs to be done -- notably,
vertical whitespace and breaking up big lines -- but should be
more readable now; no more column 0 code!)
* various changes to make code work with NUMBER_OF_LINES instead of
25
* compile-time option to change default view to non-ibm graphics
* ^R redraw screen command; screen redraws added to appropriate
places
* query added for normal saves (^X doesn't ask)
* ^Y works now; ^Z suspend for Unix systems
* refresh call added to beam.cc so beams are always visible
* various things to deal with multiuser environment:
+ compressing save files
+ permissions handling
+ global lib directory for game files
+ changes in name validation and file name structure (added
uid)
* adjust item letter function now swaps items (instead of failing)
* Selective Amnesia spell description is less confusing
* targeting more intuitive for Angband players (t/space accepts
targets), behaves better about canceling spells (added better
abort)
* unarmed combat fixed to the correct amount of time
* bugfix: hunger/noisy wield bug where effects were not removed
* bugfix: air staffs didn't grant resist lightning, yet took it away
(i.e., left the resist with a value of 255, quite good unless you
put on something of resist lightning later)
* rings/wands/scrolls and such output a message when they are
identified by use
* fixed several cases where wielded object changed but the screen
didn't update
* bugfix: a triple level of a demonspawned mutation was never
granted
* patched bug where the inventory is full yet the count is wrong
(this entire thing should be cleaned up)
* curses attributes fixed so that alternate character sets aren't
used under Solaris (this is probably good for any *nix not on a
IBM alternate character set box)
* water and earth elementals fixed for same
* stone lined the finishing room so you can't dig through?
* some rather silly ways of clearing areas of the screen (under
curses) removed; proper curses functions used instead (much
faster)
* bugfix: going up or down stairs would clear the food status
* bugfix: incorrect substitutions of new enums (i.e., "AC +=
SP_HIGH_ELF; /* troll */")
* bugfix: stat increases where comment noted "/* str or dex */", but
"str or int" given instead
* Troll's food consumption increased to better balance the race
* Vehumet's gift giving code fixed to actually do what is intended
* experience pool information added to front page
* some of the duplicated titles (traps and doors) changed
* stairs leading out of sub-dungeons changed to '<' character, to
reflect the key required
* portals coloured on the level map; all portals in Pandemonium are
intentionally the same colour
* kobolds receive stat increase every five levels
* bugpatch: Demonspawn sometimes don't receive their mutations
* Armour skill a bit better: get more in combat, a little more
frequently otherwise; EV penalty is now recovered at skill/2
* Sword of Power reduced in power (now +20 cap, HP/13 - 3)
* creaking doors partially depend on skills (dex + traps + stealth,
with benefits of last two dropping after a total of 10) instead of
simply luck; levitation isn't a sure way to avoid this now
* wield update inserted after reading scroll of recharging
* high score file extended to SCORE_FILE_ENTRIES items (currently,
only the first 15 are ever displayed)
* USE_NEW_BERSERK:
+ berserk counter decrements faster when not attacking
(currently using triagular progression)
+ butchery is not penalized (in fact, it resets penalty
counter); eating isn't either (no reset, though)
+ exhausted counter added to count berserk fatigue
+ hopefully this will become part of a new, better standard
berserk
* skills fit onto screen by wrapping the first column (if required)
* bugfix: RAP_PREVENT_TELEPORT and the like didn't do anything
because they checked only the weapon, instead of using
scan_randarts (hopefully, all the cases of this are fixed now)
* bugfix: wield-amulet-that-you're-wearing bug
* redraw for weapon when Blade Hands expires
* #defines:
+ CRAWL_NAME -- auto sets player's name
+ CRAWL_PIZZA -- string describing player's choice of pizza;
greater likelihood of incidence than others
+ USE_BSTRING_H -- handles the bstring.h/string include problem
+ NUMBER_OF_RUNES_NEEDED (defaults to 3) -- allows compiled
games to limit entrance to Zot's domain only to those with a
certain number of runes
+ USE_CURSES -- for things specific to curses and not just
PLAIN_TERM.
+ USE_TCHARS_IOCTL, USE_UNIX_SIGNALS, USE_SELECT_FOR_DELAY --
to solve various *nix variant problems should people need or
want them
+ USE_ASCII_CHARACTERS -- sets the default to non-IBM character
set
+ SAVE_DIR_PATH -- useful for setting a global lib directory
for save files, bones files, and the score file
+ SHARED_FILES_CHMOD_VAL -- useful with SAVE_DIR_PATH on
multi-user systems
+ SAVE_PACKAGE_CMD, LOAD_UNPACKAGE_CMD, PACKAGE_SUFFIX -- for
people who want to use a program to compress and bundle their
save games when they're not playing (not pretty, but good
enough until we invent a better save file system)
* "(q to drink)" added to fountain description when player steps
over one
* Greater Healings base upped to 50
* Demonspawn transmuters added
* Spriggans and Halflings consume less food (-1)
* wizard's hats and caps are randomly coloured
* carrying capactiy less dependent upon strength; pulled
carrying_capacity code into a single function (as it's called from
various different places); encumberance levels represent fractions
of carrying capacity instead of earlier constant values
* named artefact weapons slightly rarer; Sword of Power has 1 in 2
check
??.05.1999 [Jesse Jones]
* bugfix: appeared to be three bugs involving extra semi-colons
* file names can be longer than six characters and can include
spaces
* some debugging macros added
* bugifx: dragon() wasn't handling fire drakes, which meant beam
color was uninitialized.
* getstr() only adds printable characters to the buffer (Mac)
* mons_spells() now returns a struct instead of using an int array
-- affects mstuff2.cc, mstuff.h, and handle_wand()
* mons_near() now returns a bool. I've changed code like
"mons_near(o) == 1" and "mons_near(i) != 0" to "mons_near(o)" and
"!mons_near(i)"
* print_description() no longer indexes past the end of the string.
* minor changes made to the code to allow compilation with the
"require function protypes" warning
* UNUSED template function added to config.h
* rewrote describe.cc and describe.h:
+ reformatted
+ string objects used in place of hard-coded char arrays
+ ten new functions split out from describe_item()
+ get_item_description() and is_random_artifact() added
* rewrote chardump.cc
+ reformatted
+ string objects used
+ seven functions split out from dump_char
+ dumps artifact info
* reformatted viewwindow2(); added some ASSERTs; split out
get_ibm_symbol()
* reformatted monster() and split out ten(!) new functions
* reformatted mons_spells() and mons_cast(); mons_spells() case 49
uses RED instead of (bogus) 20 for color
* some ASSERTs added to seekmonster()
* DEBUG renamed to WIZARD
* DEBUG_BUILD renamed to DEBUG
* manage_corpses() renamed to handle_time()
* code changed to use new CORPSE_BODY and CORPSE_SKELETON enums
* struct.h deleted
* player::elapsed_time added (holds the total amount of elapsed time
in the game)
* level and game save routines tweaked to include a variable sized
chunk of extra data
* save level code saves a timestamp; load level code uses timestamp
to update corpses and chunks
* many player struct members renamed
* all of the monsters, item_struct, and ghost_struct members renamed
* comment blocks added to the top of all files
* TRACE debug function added
* you and env are no longer arrays
* bugfix: display_char_status() displayed the wrong message if the
player had magic contamination
* look_around() no longer prints a prompt (so things like blink and
open door no longer prompt "Press '?' for a monster description.")
* show_map() accepts '\r' along with '.'
* Cekugob no longer conveys resistances to fire and cold
* spellbook_contents() prints unknown spells in light blue
* show_map() draws shops in yellow
|