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 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 9138 9139 9140 9141 9142 9143 9144 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10670 10671 10672 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 12014 12015 12016 12017 12018 12019 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 12450 12451 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 14238 14239 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14268 14269 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 14297 14298 14299 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 14324 14325 14326 14327 14328 14329 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 14354 14355 14356 14357 14358 14359 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 14384 14385 14386 14387 14388 14389 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 14414 14415 14416 14417 14418 14419 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 14444 14445 14446 14447 14448 14449 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 14480
|
Changes in top level SVN tree. A few notes when putting entries in this
file:
1) Please include a date in the form yyyy-mm-dd (yes, us americans are
screwed up relative to most the world, but some consistent date format
is needed for this file.)
2) You don't need to go into exacting detail of the changes. This file
is mostly meant to give an idea to others what has changed - you don't
need to recreate the code here. If you change fixes a reported bug
on the mailing list, please provide a brief description of the bug
fixed. But please do try to include a useful description of
what changed. Saying something like 'General cleanup - just whitespace
changes' is much more useful than 'misc edits' or 'code cleanup'.
3) Please include your name with the changes you make.
4) Whenever making an update, please update this file, no matter how
small - this just lets others know that the file has changed if nothing
else. With this, include the file(s) that you changed.
------------------------------------------------------------------------------
Changes for 1.11.0:
------------------------------------------------------------------------------
Fix for bug 1850524 - SDL clients crash when entering boat. Bogus scroll
values were being sent on mapscroll, but only the SDL client did anything
with the mapscroll variables, so only it saw problems.
---
server/apply.c: Store away player x and y positions so we
can do proper comparisions. Move update of applier values out of
if coordinates are different, since those need to get updated in all
cases.
MSW 2008-01-27
Fix buffer overflows in get_ob_diff(). Introduce a new module stringbuffer
which implements a buffer that can hold variable-sized strings.
Andreas Kirschbaum 2008-01-12
Make 'player quits the game' in the same style as entered/leave messages.
server/player.c
Nicolas Weeger 2008-01-07
Handle invalid file descriptors more gracefully.
socket/init.c: reset a file descriptor when closing it.
socket/loop.c: try to look up bad file descriptors and drop them.
Nicolas Weeger 2008-01-04
Win32 compilation fixes.
common/logger.c: typo.
include/win32.h: #define sleep.
plugins/cfanim/include/cfanim_proto.h: missing CF_PLUGIN.
plugins/cfpython/cfpython_object.c: variables must be declared before any instruction.
plugins/common/hashtable.c: header fixes.
random_maps/floor.c: variables must be declared before any instruction.
Nicolas Weeger 2008-01-03
Add Object.NoDamage and Object.RandomMovement to Python Crossfire Object.
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
Nicolas Weeger 2007-12-16
Fix 0 destination coordinates warning for final exit of random maps.
random_maps/exit.c
Nicolas Weeger 2007-12-02
Fix bug #1828785: Possible false positive in the alchemy formula list.
common/recipe.c: don't warn of same index id if not same cauldron.
Nicolas Weeger 2007-12-01
Fix bug #1825685: "Got no region..." when creating weather.
server/init.c: delay weather initialisation after other ones.
Nicolas Weeger 2007-12-01
Fix some nrof issues when many items. Always return real money value.
server/c_object.c: divide before multiply to avoid some overflows.
server/c_wiz.c: nrof is uint32.
server/shop.c: nrof is uint32. Money we know the real value.
Nicolas Weeger 2007-12-01
Fix bug #1827100: Curse dection not working or problem with containers ?
server/alchemy.c: ensure cursed items can be identified.
server/skills.c: cauldrons are always checked for curse status, it is important to know it.
Nicolas Weeger 2007-12-01
Fix bug #1841391: Item Power and pickup bug.
common/object.c: check item_power for merging test.
Nicolas Weeger 2007-12-01
Fix bug #1833943: Buffer overflow in item power calculation.
include/define.h: MAX_WEAPON_ITEM_POWER set to 100.
server/apply.c: change enchant logic to not enchant already powerful items.
server/gods.c: make god refuse to enchant an already powerful item.
Nicolas Weeger 2007-12-01
Update the treasure list so the different types of Potions
of Life show up in shops.
lib/treasures
Rick Tanner 2007-11-08
Display information for weather even if turned off.
lib/weather.c
Andreas Kirschbaum 2007-11-07
Fix collect script to not insert editor_folder lines into nested inventory
objects.
lib/collect.pl.in
Andreas Kirschbaum 2007-11-03
Adapt alchemy formulas to changed archetypes.
lib/formulae: rename "shoes" to "pair of shoes".
Andreas Kirschbaum 2007-11-03
Fix for bug #1693250: loader.c isn't correctly generated.
configure.ac: remove AM_MAINTAINER_MODE macro, no one remembers
why it was set.
Nicolas Weeger 2007-10-27
Fix for bug #1815251: Multiple 'the' displayed in party who.
Moved player listing code to own function, call it from command_who and party who.
Move 'who' format checking to load_settings().
include/sproto.h
server/c_misc.c c_party.c init.c
Nicolas Weeger 2007-10-20
common/map.c: Add misisng call to unlink() empty unique maps. Fixes bug
1799361 - Permadeath corpse reproduction. Bug is more general - any unique
object could be duplicated, so long as it was the only unique object on
the map.
MSW 2007-10-03
server/pets.c: Add missing call to get_map_from_coord() - summoned big
creatures on tiled maps end up having incorrect map/coordinate data set,
resulting in crash. Fixes bug 1800719
MSW 2007-10-02
server/c_object.c: Add call to fix_player() in pick_up_ob() - this causes
player weight & speed to be recalculated - fixes bug 1799411 where this
wasn't happening.
MSW 2007-10-01
server/plugins.c: fix wrong #define leading to crashes.
Nicolas Weeger 2007-09-28
common/map.c: Move update_buttons() from ready_map_name() to
load_original_map() - in this way, button state is not reset when
swapping a map back into memory, but button state is still verified
at first load. Fixes bug 1706075.
MSW 2007-09-27
server/gods.c: modify god_enchants_weapon() to increase item_power of weapon
by 1 each time god improves it. This make sense, but also fixes bug
1696807 - if the weapon has item_power 0, when player logs on, game
will calculate new item power, which may be quite surprising to
character. If item_power is set, new item_power won't be calculated.
MSW 2007-09-27
Fix some hiscore changes - some functions were not passing in quiet flag
when they should have been, etc.
--
server/apply.c: Remove some code that sees if player can save - update_score()
does this, so no reason to have it in both places.
server/hiscore.c: Add check not to save 0 scores.
server/login.c: Be quiet for backup saves.
server/server.c: Be quiet for backup saves.
---
MSW 2007-09-27
Bug fix for 1803265 - archetype conflict. Made required updates for the
Potion of invulnerability to potion of shielding name change.
--
server/branches/1.x/lib/formulae
server/branches/1.x/lib/treasures
--
RJT 2007-09-27
Face/animation related plugin functions.
---
Enable a plugin to find a face, and change face or animation. Make property
name coherent with others.
include/plugin.h sproto.h
plugins/cfanim/cfanim.c
server/plugins.c
---
Add wrapper for find_face().
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
---
Add Object.AnimSpeed and Object.Anim, fix face handling.
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
---
Add Crossfire.FindFace() and Crossfire.FindAnimation()
plugins/cfpython/cfpython.c
---
doc/Developers/python.ps: updated
Nicolas Weeger 2007-09-27
Couple bug fixes related to 1713188 - dropall performance issues.
---
include/config.h: Increase SOCKETBUFSIZE - should help reduce premature
dropped connections.
server/c_object.c: Improve dropall logic - instead of calling fix_player() for
each object dropped, call it just once for the entire stack - should
improve performance considerably. This also fixes sending updated
weight information to the client for each object dropped (player weight
1000, player weight 995, player weight 992, etc), so may help on dropped
connections.
MSW 2007-09-26
common/object.c: Modify can_pick() so you are not allowed to pick up
multipart objects. insert_ob_in_ob() doesn't let it happen, but
this way, at least the player gets a message. Also cleaned up function
so it is easier to read.
MSW 2007-09-26
Adding the minor, medium and major Potions of Life to the treasure list so
they can be found in shops, dungeons, et al.
--
server/branches/1.x/lib/treasures
--
RJT 2007-09-26
Renamed "potion of invulnerability" to "potion of shielding." Hopefully this
will remove player confusion as to why one takes damage from all attack types
(except physical) when drinking this potion.
--
arch/trunk/potion/potioninv.arc
maps/trunk/pup_land/begin/adv
server/trunk/lib/treasures
---
RJT 2007-09-26
common/loader.l: Add artifact_init check to check_loaded_object() - if set
don't do processing. This has been in the trunk for 9 months, without
any problems observed. Fixes bug 1727944 - horn of plenty shoots bullets -
what happens now is the artifacts are 'fixed' in check_loaded_objects(),
with magic bullet getting added to them.
MSW 2007-09-25
Add support for periodic updating of hiscore information for players - fixes
bug 1735262. Main change was to modify check_score() to take a flag that
determines if messages related to high score placement should be displayed
or not.
--
include/sproto.h: Rebuilt because of change to check_score()
server/apply.c: Change calls to check_score() to take quiet flag.
server/c_wiz.c: Change calls to check_score() to take quiet flag.
server/hiscore.c: Modify check_score to take quiet flag, update function
not to print messages if it is set.
server/login.c: Change calls to check_score() to take quiet flag, remove
some meaningless code at end of emergency_save()
server/player.c: Change calls to check_score() to take quiet flag.
server/server.c: Add calls to check_score() when doing autosaves as well
as when player connection is unexpected terminated.
--
MSW 2007-09-25
Always destroy projectiles having no_drop when they stop being a
projectile. This prevents arrows and weapons fired from summoned monsters
to stick to the ground/into the victim's inventory.
--
common/objects.c: Remove static modifier from free_object2().
server/attack.c: In hit_with_arrow() destroy no_drop arrows.
server/time.c: In stop_item() and fix_stopped_arrow() destroy no_drop
projectiles. Add new function free_no_drop() to check for and destroy
objects having no_drop.
Andreas Kirschbaum 2007-09-20
Fix bug 1763098 - wrong key placement in random maps. The key placement breaks
if there is a normal door next to the locked door, so modify code to remove
normal doors next to locked doors. On broken test map, this change results
in key being placed in right area.
--
random_maps/treasure.c: Update some comments on keyplace(), since the comments
did not go into limitations on what keyplace does. Add
remove_adjacent_doors() to remove the doors, and call to function from
lock_and_hide_doors()
MSW 2007-09-18
Fix bug 1790456 - dropall with count drops more than 'count' of each
object.
server/c_object.c: in command_dropall(), after each call to drop(),
set op->contr->count back to original value - drop() sets it to 0.
MSW 2007-09-17
Add ability to specify port that crossfire listens to in settings file.
Handy when you want to run 2 servers on same host and don't want to
mess with command line options.
--
lib/settings: Add port variable and comment on its usage.
server/init.c: Add code to handle port value in settings file.
MSW 2007-09-17
Fix chaos attacktypes when used from a weapon - Fixes bug 1795875.
Problem was target of attack was getting attacktype changed, and
attacker was never getting chaos attacktypes.
--
include/attack.h: move ATTACKS array and Chaos_Attacks structure
here. server/attack.c now needs that data, so having it only in
server/spell_util.c no longer works.
server/attack.c: Remove call to shuffle_attack(), instead just update
the local type (attack type) variable.
server/spell_util.c: Remove ATTACKS array - moved to include/attack.h.
MSW 2007-09-16
Fix problems with player updating client with spell handling - should all
work now.
--
server/login.c: Move esvr_add_spells() and fix_object() to after
esvr_new_player() - when client gets new player protocol from server,
it purges all info it has, including spell data.
server/player.c: Remove the line that clears the monitor_spells in the
socket structure. With the clear there, if you play a new character on
the same server (savebed, a to play again), this second character
doesn't get any spells.
socket/request.c: Check to see if pl->spell_state is non null in
esrv_update_spells() - in this way, server doesn't try to update
spells on client before the first add_player_spells() is called.
--
MSW 2007-09-16
server/pets.c: Always mark inventory objects as FLAG_NO_DROP, not only
objects created from randomitems attribute and having nrof=0. Always
expand randomitems; do not omit it for player summoned monsters or
golems.
Andreas Kirschbaum 2007-09-16
Add a message when explore mode is disabled. Add help file for this command.
lib/Makefile.am
server/c_misc.c
Added file:
lib/help/explore
Nicolas Weeger 2007-09-16
Add an 'empty' command, that puts all contents of a (or all) container either
on ground or in player's opened container.
include/sproto.h
lib/Makefile.am
server/c_object.c commands.c
Added file:
lib/help/empty
Nicolas Weeger 2007-09-09
Server support for Metaserver2 - brought back from trunk:
acinclude.m4: Add LIBCURL_CHECK_CONFIG macro, used by configure.
configure.ac: Add check for pthread, LIBCURL. Extra
logic to display if we will build with metaserver2 support
lib/Makefile.am: add metaserver2 to list of files to install.
*/Makefile.in: rebuilt
lib/metaserver2: Settings file for metaserver2 support.
server/init.c: Add call to metaserver2_init() during startup.
include/metaserver2.h: Header file include metaserver2 related data.
include/autoconf.h.in: Rebuilt
include/sockproto.h: Rebuilt with new metaserver2 functions.
socket/metaserver.c: metaserver2 update logic added.
MSW 2007-08-31
Fix mistake in check logic, preventing from building connected items.
server/build_map.c
Nicolas Weeger 2007-08-23
Fix bug #1779574: can destroy outer walls in lone town apartment, level 2.
server/build_map.c: fix can_build_over(), add missing check.
Nicolas Weeger 2007-08-23
lib/help/{fire,fire_stop}: Add help for "fire" and "fire_stop" commands.
Andreas Kirschbaum 2007-08-22
Remove duplicate void esrv_update_item() that breaks make from top of server
on fresh autogen.sh && make.
test/unit/common/stubs_common.c
Kevin Bulgrien 2007-08-21
Don't display an evil error message when trying to reset a map with a player on.
server/c_wiz.c
Nicolas Weeger 2007-08-20
Fix item update on ground. Factorize code. Add increase_ob_nr() function.
include/libproto.h
common/object.c
Nicolas Weeger 2007-08-18
Partial fix for #1772759: Too much alchemy causes client crash.
common/object.c: correctly send/remove object when in container the player is
looking into.
Nicolas Weeger 2007-08-12
Fix plugin documentation, add some .ps version made from the wiki.
This fixes bug #1537236: cfpython 2.0 - documentation missing.
doc/plugins
doc/Developers/Makefile.am plugins python README
Added files:
doc/Developers/plugins.ps python.ps
Nicolas Weeger 2007-08-12
Save maps into a .savefile first, then rename if success. Flush files.
This should fix bug #1542893: Full disk destroys player's apartment.
common/map.c
include/map.h
server/c_wiz.c swap.c
Nicolas Weeger 2007-08-12
Don't delete (partial) map from memory in case of save error, warn DMs.
include/libproto.h map.h sproto.h
common/loader.l map.c
server/c_wiz.c login.c swap.c
Nicolas Weeger 2007-08-11
Add new NDI_ALL_DMS to send a message to all connected DMs. Used in case of errors.
include/newclient.h
socket/info.c
Nicolas Weeger 2007-08-11
server/plugins.c: sanity checks on parameters for usual crashing culprit.
Nicolas Weeger 2007-07-25
Add support for using png files for html handbook and spoiler - png support
is common enough in browsers now days that don't need to convert to gif.
Reduces tool requirements to build documents (as it is a simple copy
for the png, vs actual conversion), and speeds up building the files
dramatically.
--
doc/scripts/makeps.pl: Add png output handling. What this amounts to is
doing a hard link to the original png file.
doc/playbook-html/Makefile.am, doc/spoiler-html/Makefile.am: Use png
output for images now, not gif.
MSW 2007-07-16
plugins/cfpython/cfpython_object.c: don't try to insert a NULL object.
Nicolas Weeger 2007-07-16
lib/Makefile.in: Rebuilt
server/skills.c: Fix crash - using incorrect map pointer in call
to get_map_ob
common/object.c: Add some debugging to maybe help track down a crash
on metalforge.
MSW 2007-07-11
Tentative fix for bug #1746208: Critical crash with 'printlos'.
common/los.c: use safe string functions. Use 0/100 for view instead of 0-100.
Nicolas Weeger 2007-07-11
Update face information below player if it changes. Add P_PLAYER mapflag
field, as well as pointer to player on space making it easy to find
players on a space. Fix for bug 1735459. Change merged from trunk.
---
test/unit/common/stubs_common.c, crossedit/stubs.c, random_maps/standalone.c:
Add esrv_update_item() stub
common/map.c: Modify update_position() to look for player and
update MapSpace accordingly.
common/object.c: update_object(): If player is object, update map
attributes immediately. Add handling for face or object changes.
include/map.h: Add SET/GET_MAP_PLAYER, player * to MapSpace, P_PLAYER
flag
---
MSW 2007-07-08
server/c_range.c: don't lose golem if only consulting the spell list.
Nicolas Weeger 2007-07-05
Hopefully fix invalid player count on map. Now handled by remove_ob() and
insert_ob_in_map() directly. Also handled by leave() as the player leaves badly
the game in this case. Remove now unused leave_map() function.
common/object.c
include/map.h sproto.h
server/apply.c login.c player.c server.c
Nicolas Weeger 2007-07-04
Fix bug #1735283: shining amulet of repulsion behaves strangely.
common/object.c: remove stacking logic for blockview items, obsolete with map_layer.
Nicolas Weeger 2007-07-02
lib/help/skills, lib/Makefile.am: Add help for skills command.
Andreas Kirschbaum 2007-07-02
Change behavior of shop mats: do not fail if the destination shop mat is
blocked. This prevents players from being trapped inside shops if the outside
shop mat has been blocked with earthwalls.
---
server/move.c: In teleport() place player on destination shop mat even if
it is blocked.
Andreas Kirschbaum 2007-06-27
server/attack.c: don't say '(pk)' if duel, makes it easier to check for real pk.
Nicolas Weeger 2007-06-22
server/c_party.c: fix mistake in party removal.
Nicolas Weeger 2007-06-22
server/time.c: make detectors able to find players (slaying set to 'player').
Nicolas Weeger 2007-06-20
server/plugins.c: add PLUGIN_DEBUG to log plugin activity, off by default
(log gets filled with debug info which is not usually relevant).
Nicolas Weeger 2007-06-18
server/skills.c: correctly copy spell's path_repelled field when inscribing a
scroll, so casting from said scroll works with MOVING_BALL.
Nicolas Weeger 2007-06-18
server/login.c: Fix crash at login if player is set to rejoin party, and that
party does not exist - shouldn't try to use partyname from null structure.
MSW 2007-06-17
Fix bug #1735464: Reset command does not accept relative names.
server/c_wiz.c
Nicolas Weeger 2007-06-16
Partial fix for #1735275: Server sends incorrect spell info data.
server/login.c: send spell before calling fix_player() which updates spells.
Nicolas Weeger 2007-06-10
Tentative fix for #1735272: Server sends invalid item tags
server/plugins.c: don't send invisible objects, they're never sent to the client.
Nicolas Weeger 2007-06-10
Fix bug #1729829: Server using access to check for file existance.
Also remove obsolete old player directory mode support.
server/login.c
Nicolas Weeger 2007-06-09
Fix bug #1730874: +dam on bracers not working.
common/living.c: bracers can give damage too.
Nicolas Weeger 2007-06-09
common/utils.c: don't try to decay a non head object, this leads to abort() from remove_ob().
Nicolas Weeger 2007-06-04
Add Crossfire.Object.Skill property.
plugins/cfpython/include/cfpython_object_private.h
plugins/cfpython/cfpython_object.c
plugins/common/plugin_common.c: fix a crash when a NULL value.
Nicolas Weeger 2007-06-04
common/living.c: don't ignore exp gained in a skill you don't know yet.
Nicolas Weeger 2007-06-04
Apply patch #1638868: Ident skills cover larger area with exp courtesy Aaron Baugher.
server/skills.c
Nicolas Weeger 2007-06-03
Fix uninitialized memory / invalid memory access.
common/arch.c treasure.c
Nicolas Weeger 2007-06-01
Fix bug #1729192: Writing any spellscroll requires positive grace.
server/skills.c
Nicolas Weeger 2007-06-01
Implement feature request #1724356: logging improvements.
Apply modified patch from Wart.
New settings log_timestamp and log_timestamp_format to control behaviour.
Log player creation.
common/init.c logger.c
include/global.h
lib/settings
server/c_misc.c init.c
Nicolas Weeger 2007-05-30
Fix bug #1726632: After useing a # of times on the forge..
server/alchemy.c: item may change, so its weight too. This leads to invalid carrying.
Nicolas Weeger 2007-05-30
lib/formulae: fix bug #1726561: formulae for potion_heal needs supreme potion of life.
Nicolas Weeger 2007-05-28
server/apply.c: food/drink can't be eaten if no_pick is set.
Nicolas Weeger 2007-05-26
Implement feature request #1653768: Pants/legs
common/item.c
include/object.h
Nicolas Weeger 2007-05-24
server/time.c: allow plugins to override the usual move process.
Nicolas Weeger 2007-05-24
Add party rejoin at login. New command 'party_rejoin' to control the behaviour.
include/player.h sproto.h
server/c_party.c commands.c login.c player.c
lib/help/party_rejoin
lib/Makefile.am
Nicolas Weeger 2007-05-21
Fix bug #1713140: sustenance overflow.
include/player.h: change digestion from sint8 to sint16. Change other fields
the same to avoid potential overflows.
Nicolas Weeger 2007-05-20
server/disease.c: Add check to make sure symptom was not destroyed
when victim dies - otherwise we get double remove/free.
MSW 2007-05-19
server/skill_util.c: fix wrong 'skills' display when no god is worshipped.
Nicolas Weeger 2007-05-10
server/disease.c: fix bug #1713112: rabies infects audience of the arena.
Nicolas Weeger 2007-05-09
server/c_wiz.c: fix multipart object creation.
Nicolas Weeger 2007-05-09
server/plugins.c: fix wrong parameter order.
Nicolas Weeger 2007-05-08
Add 'Crossfire.Object.Race' attribute.
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
Nicolas Weeger 2007-05-08
server/plugins.c: fix plugin unloading which didn't call the closePlugin function.
server/c_wiz.c: document.
Nicolas Weeger 2007-05-07
doc/Developers/objects: Mark 'flying' attribute as obsolete.
Andreas Kirschbaum 2007-05-06
Apply patch #1713563: Reopen log file on SIGHUP, courtesy Kari Pahula.
common/logger.c
include/global.h
server/init.c
Nicolas Weeger 2007-05-05
Apply patch #1713564, Open log file only once with -detach, courtesy Kari Pahula.
include/sproto.h
server/daemon.c init.c
Nicolas Weeger 2007-05-05
Implement feature request #1657735: Server setting for handling 'incorrect' converters.
New server setting, 'allow_broken_converters', that controls what to do.
common/init.c
include/global.h
lib/settings
server/apply.c init.c
Nicolas Weeger 2007-05-05
Fix some type issues in plugin. Wrap change_abil(). Add set_resist(). Add duration property.
include/plugin.h sproto.h
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
plugins/cfpython/include/cfpython_object_private.h
plugins/cfpython/cfpython_object.c
server/plugins.c
Nicolas Weeger 2007-05-05
random_maps/random_map.c: initialize random map's reset time, so town portal works
correctly there too.
Nicolas Weeger 2007-05-04
server/c_misc.c: ensure you can't harvest items already harvested, or skills and such.
Nicolas Weeger 2007-04-30
server/monster.c: fix bug #1709618: Text message is too long/truncated.
Nicolas Weeger 2007-04-30
Partially implement feature request #1668158: Better nethack implementation.
Random maps now have a new 'multiple_floors' parameter that, if set, will
make the different rooms of the map have different floors.
All floors are still taken from the same floor style, for coherence.
doc/Developers/random-maps
random_maps/floor.c reader.l random_map.c random_map.h
Nicolas Weeger 2007-04-29
random_maps/wall.c: walls should always block, even if they sometimes allow
some movement.
Nicolas Weeger 2007-04-29
server/rune.c: trap's message can be NULL (random maps for instance).
Nicolas Weeger 2007-04-29
Return result of cf_object_move(). Add missing property getter.
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
Add 'Crossfire.Object.Move' method.
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
Nicolas Weeger 2007-04-29
Give read-only access to map->unique to plugins. Add Crossfire.Map.Unique property.
include/plugin.h
plugins/cfpython/include/cfpython_map_private.h
plugins/cfpython/cfpython_map.c
server/plugins.c
Nicolas Weeger 2007-04-29
server/plugins.c, plugins/cfpython/cfpython_object.c: Fix type mismatch in
varargs function parameters.
Andreas Kirschbaum 2007-04-28
server/disease.c: fix bug #1706986: Rabies can infect a DM. DMs are now immune
and non contagious.
Nicolas Weeger 2007-04-28
socket/loop.c: fix unitialized variable.
Nicolas Weeger 2007-04-28
plugins/cfpython/cfpython_object.c: fix wrong property set (value is int).
Nicolas Weeger 2007-04-28
server/player.c: No need to copy faces_sent - just use the data already
there, and set ns->faces_sent to NULL so we know there is no data there.
socket/init.c: Allocate ns->faces_sent if not there.
MSW 2007-04-25
server/disease.c: In move symptom() stop processing if victim dies. This
prevents access to freed objects.
server/gods.c: In tailor_god_spell() do not pass NULL value to add_string().
server/disease.c: In move_symptom() fix possible buffer overflow when creating
symptom names.
Andreas Kirschbaum 2007-04-25
socket/init.c: Change free calls with FREE_AND_CLEAR - were getting double
frees - since pointer wasn't reset, was no way for program to know not
to have the data cleared again.
MSW 2007-04-24
server/spell_effect.c: In polymorph_item() fix possible access to freed
object.
common/los.c: In update_los() fix array out-of-bounds access for clients using
25x25 map size.
Andreas Kirschbaum 2007-04-24
Clean old code related to single player directory.
include/sproto.h
server/login.c player.c
Nicolas Weeger 2007-04-23
Implement feature request #1560389: improve inscription logic.
New server command, "inscribe", that makes it easy to send spell and scroll information.
'setup inscribe 1' will return 'inscribe 1', so client know they can use this command.
doc/Developers/protocol
include/sockproto.h
socket/item.c loop.c request.c
Nicolas Weeger 2007-04-23
Add background music support to maps, change 'socket.sound' field signification.
Add SockList_AddString helper function.
common/map.c
include/map.h newserver.h sockproto.h sounds.h
server/c_misc.c server.c
socket/lowlevel.c sounds.c
Nicolas Weeger 2007-04-22
server/apply.c: remove legacy spellbook handling.
Nicolas Weeger 2007-04-22
Second and last part of feature request #1543553: Inventories in artifacts/archetypes.
It's now possible to put "arch" in archetypes, they'll be correctly handled.
Like any other object, you can customize it.
common/arch.c loader.l
Nicolas Weeger 2007-04-22
server/server.c: Add some debug to see if objects are on swapped out
maps in process_objects()
socket/loop.c: Hopeful fix for old bug - can be rare cases where
next player gets freed, so code tries to process garbage player
and crashes.
MSW 2007-04-21
lib/artifacts: fix bug #1673804: Items "of Occidental Mages" use obsolete
event_xxx fields.
Nicolas Weeger 2007-04-21
Partially implement feature request #1543553: Inventories in artifacts/archetypes.
It's now possible to have items in artifacts, they'll be inserted in object.
Doesn't yet work with archetypes, since you could possibly reference an archetype
defined *after* the current archetype.
common/arch.c: do a deep object copy instead of a partial one
common/loader.l: handle inventories during artifact load
common/object.c: put copy_object_with_inv
common/treasure.c: add inventory from artifact
include/libproto.h: updated prototypes
random_maps/random_map.c rproto.h: moved copy_object_with_inv to common lib
Nicolas Weeger 2007-04-21
Implement EVENT_TELL.
plugins/cfpython/cfpython.c
plugins/template/plugin_template.c
server/c_chat.c plugins.c
Nicolas Weeger 2007-04-21
server/apply.c: potions of life now won't affect player if their level is too low.
Nicolas Weeger 2007-04-20
server/attack.c: enable plugins to prevent attacks.
Nicolas Weeger 2007-04-18
server/plugins.c: fix wrong return type.
Nicolas Weeger 2007-04-18
plugins/cfpython/cfpython_object.c: don't insert hooks in 'more' parts of items.
plugins/cfpython/cfpython.c: player list (GetPlayers()), activate 'clock' event.
---
Give access to player list to plugins. Fix mishandling of multipart objects.
include/plugin.h
server/plugins.c
Nicolas Weeger 2007-04-17
common/region.c: don't crash if no regions file found.
Nicolas Weeger 2007-04-15
server/swap.c: fix crash with map reset (parameter is map, not path).
Nicolas Weeger 2007-04-15
Merge all plugin changes from trunk.
This includes defining sstring (can be useful anyway), and generate_random_map
definition.
server/plugins.c server.c
include/plugin.h sproto.h
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
plugins/cfpython/cfpython.c cfpython_map.c cfpython_object.c
plugins/cfpython/include/cfpython.h cfpython_object_private.h
cfpython_proto.h cfpython_map_private.h
plugins/cfanim/cfanim.c
plugins/cfanim/include/cfanim.h cfanim_proto.h
random_maps/random_map.c rproto.h standalone.c
Nicolas Weeger 2007-04-15
Correctly clear god information.
common/holy.c
Nicolas Weeger 2007-04-14
Remove unused godlink::pantheon field.
common/holy.c
include/god.h
Nicolas Weeger 2007-04-14
Remove unused (and obsolete) current_weapon_script field.
Remove now unused find_best_weapon_used_match().
common/loader.l object.c
crossedit/Attr.c
include/libproto.h object.h
server/apply.c skill_util.c
test/unit/common/check_arch.c check_object.c
Nicolas Weeger 2007-04-14
server/monster.c: make monsters use the same 'say' format than players.
Nicolas Weeger 2007-04-12
Add 'Object.Enemy' and 'Object.Count' properties.
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
Nicolas Weeger 2007-04-12
server/init.c: add -conf documentation to help.
Nicolas Weeger 2007-04-12
server/skill_util.c: In init_skill() do not crash for SKILL objects having
incorrect subtype.
Andreas Kirschbaum 2007-04-11
Fix bug #1696810: skill items autoapply. Now skilltool will be used even if
skill can be used without, to benefit from its bonuses.
server/skill_util.c
Nicolas Weeger 2007-04-10
Fix parameter for Doxygen, no functional change.
plugins/common/plugin_common.c
plugins/common/include/plugin_common.h
Nicolas Weeger 2007-04-09
New skill: "harvesting", get something from some place - example: fishing.
(merge from trunk, revisions 5923 and 5933).
include/skills.h sproto.h
server/c_misc.c skill_util.c
Nicolas Weeger 2007-04-08
common/init.c: abort() if first map doesn't exist. Better than crashing later on.
Nicolas Weeger 2007-04-08
Fix bug #1695764: Charm monsters - shared experience broken.
Add new share_exp() function, working like change_exp() but party-aware.
common/living.c
include/libproto.h
server/attack.c
server/spell_attack.c
Nicolas Weeger 2007-04-07
Fix bug #1672117: elves etc don't fire over move_allow flying tiles.
Logic for monster_use_bow() was changed to make monsters fire only
horizontally/vertically/in diagonals, and also fire over terrain
they can't cross but which lets an arrow go over.
server/monster.c
server/player.c: note about move_type
Nicolas 2007-03-31
Implement feature request #1560387: DM follow command.
include/player.h sproto.h
server/c_wiz.c commands.c
server/server.c: also fix wrong player count with hidden DMs.
Nicolas Weeger 2007-03-25
Fix broken banish command: loop logic was weird (skipping one file?).
server/ban.c
Nicolas Weeger 2007-03-25
Fix Win32 compilation.
common/player.c: don't declare variables in the middle of the code
lib/collect.pl.in: use binmode for files
socket/item.c: idem
Nicolas Weeger 2007-03-24
server/c_wiz.c: fix missing treasure generation for create command in some cases.
Nicolas Weeger 2007-03-24
Changes for 1.10.0:
------------------------------------------------------------------------------
Fix 'make distclean':
acinclude.m4: Use -I./${srcdir} for crossedit check - otherwise, when
building in alternate directory, doesn't fine files correctly.
configure.*: Add new makefiles.
check-fragment.am, test/unit/crossedit/Makefile.am,
test/unit/common/Makefile.am,test/toolkit/Makefile.am: Add support for building in alternate directory, which
make distclean does - using relative directories to find files
does not work. Some files should also be in the buildir, not srcdir.
Have Makefiels remove .autrun.xml with distclean
Makefile.am: Remove to config files on make distclean
test/include/Makefile.*, test/templates/Makefile.*: Add missing Makefiles
test/unit/random_maps/Makefile.am,test/unit/socket/Makefile.am,
test/unit/Makefile.am: remove .autorun.xml file as part of distclean
test/unit/server/Makefile.am: Remove LDFLAGS from Makefile.am - automake
says don't mess with those - use AM_LDFLAGS instead. Remove
.autrun.xml file with distclean
test/Makefile.am: Add include, templates to subdir list. Have
make clean remove log files, .autorun.xml file.
crossedit/Makefile.am: Fix indentation of stubs.c (use tab, not spaces)
other files: Rebuilt as part of running autogen.sh
MSW 2007-03-25
Implement feature request #1528522: Initial items should be applied/worn.
server/player.c
---
server/apply.c skill_util.c: keep the AP_NOPRINT flag for subcalls.
---
server/c_wiz.c: update DM's view when using nodm.
---
server/apply.c: update player's view when turning on/off a lamp.
---
Implement feature request #1680229: dmhide - glowing things.
common/map.c: totally ignore hidden DMs for map update.
---
Implement feature request #1669464: Need new command - dmtell.
include/sproto.h
server/c_chat.c commands.c
---
server/c_wiz.c: enable 'teleport' to use a partial name.
server/c_misc: 'listen' should be positive.
---
Fix bug #1668283: Crossfire.CreateObjectByName is faulty, by applying
patch (feature request) #1682802: CreateObjectByName fix/change.
Code by Yann Chackhoff.
Also fix a crash when teleporting a newly created object.
server/plugins.c
---
Fix bug #1671102: Generic destroy can remove permanent buttons. The code was
doing a wrong check related to marked item/destroyer.
Fix bug #1657675: multi-tile buildable object bug (note: one .x11 image though).
code now uses multi-tile aware function to generate object, and correctly
checks all relevant spots for building.
server/build_map.c
Nicolas Weeger 2007-03-17
Fix bug #1673713: event_attack in (sword etc) weapon doesn't work.
server/attack.c: fix EVENT_ATTACK weirdness.
---
Implement feature request #1560416: give warning when spell is about to expire.
Player will be warned when left duration is one fifth, then one twenty-fifth.
Two new functions are introduced, check_spell_expiry() and store_spell_expiry().
include/sproto.h
server/spell_effect.c spell_util.c time.c
---
Implement feature request #1675158: dmhide - "detect monster" will reveal DM.
spell_effect.c: detection doesn't concern DMs.
Ryo 2007-03-06
Add Object.Owner (read/write) and Crossfire.GetFriendlyList.
plugins/cfpython/include/cfpython_object_private.h
plugins/cfpython/cfpython.c
plugins/cfpython/cfpython_object.c
---
Add cf_friendlylist_get_first / cf_friendlylist_get_next to browser friendlylist.
Add cf_object_set_object_property.
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
---
Give access to friendlylist to plugins, through cfapi_friendlylist_get_next().
include/sproto.h
server/plugins.c
---
common/object.c: let set_owner accept owner NULL (-> clear_owner()).
---
Implement request feature #1669443: dmhide - players can still send 'tell.
server/c_chat.c: DM are now shown as not logger with regard to tell/reply.
---
server/c_object.c: call EVENT_PICKUP which was forgotten somewhere along the way.
server/plugins.c: don't remove/free removed/freed objects, log mistake. This closes
bug #1670465: server doesn't have check to see if it is removing removed
Ryo 2007-03-04
Add cf_object_set_float_property.
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
---
Add SpeedLeft to Python plugin. Fix wrong type for speed.
plugins/cfpython/include/cfpython_object_private.h
plugins/cfpython/cfpython_object.c
---
Fix wrong type for speed.
server/plugins.c
Ryo 2007-02-28
plugins/cfpython/cfpython.c: fix crash when Python and server are compiled with
different versions of MS's DLLs.
Ryo 2007-02-24
Fix uninitialized variables (merge from trunk).
server/weather.c: wrong temperature initialisation.
Ryo 2007-02-18
Fix mishandling of weapon/shield/armour restriction. Fix crash with NULL value.
(merge from trunk)
server/gods.c
Ryo 2007-02-18
New server settings: allow_denied_spells_writing, for inscription.
common/init.c
include/global.h
server/init.c skills.c
Ryo 2007-02-15
server/shop.c: handle "no money" case when player tries to exit shop.
---
Fix a crash with object handling by plugins.
cfpython/cfpython_map.c: don't assume op exists after inserting in map.
Ryo 2007-02-15
Make armour handling coherent between gods, monsters and such.
Cloaks and bracers are not armour. Merge from trunk.
common/item.c utils.c: fix tests with macros.
include/define.h: update macro, new IS_SHIELD.
server/apply.c monster.c player.c: use macros.
Ryo 2007-02-15
Invalidate player's view if teleporting. Call update_ob_speed when changing speed.
server/plugins.c
Ryo 2007-02-12
lib/smooth updated in conjunction with arch update (revision 5421).
Kevin Bulgrien 2007-02-11
Fix a few compiler warnings. Most were just unused variables, but
some in server/c_object.c had returns without values.
Files: server/c_object.c server/monster.c server/player.c server/weather.c
MSW 2007-02-08
Implement feature request #1652066: Python: get user's savebed location and x,y coords.
---
New properties for player:
server/plugins.c
include/plugin.h
---
Python properties:
plugins/cfpython/include/cfpython_object_private.h
plugins/cfpython/cfpython_object.c
Ryo 2007-02-06
plugins/cfpython/cfpython_object.c: Fix missing braces.
Alex Schultz 2007-02-03
lib/formulae: Fix formula for "low boots of steel".
Andreas Kirschbaum 2007-02-26
server/gods.c: Clean up follower_remove_given_items()
Alex Schultz 2007-01-10
server/gods.c: Apply patch #1627442 by Aaron Baugher, to fix bug #1551735. Works
by using a key_value of "divine_giver_name" to objects that are given by a god.
Alex Schultz 2007-01-04
Fix a logic mistake: code should be called unless cursed and good only, not if good
only set (since t->item is never NULL). This would make empty spellbooks and crash.
common/treasure.c
Ryo 2007-01-03
Check len of client-sent commands.
socket/item.c: a few checks.
Ryo 2007-01-02
Implement feature request #1443844: Lock in 1.9.0 is ethernal.
Added new 'lock' command, locking/unlocking specified item.
include/sproto.h
server/c_object.c commands.c
Ryo 2007-01-02
server/{player.c, gods.c, apply.c, monster.c}: Fix bug #1543130 and make
handling of can_use_armour and can_use_shield consistant.
Alex Schultz 2006-12-31
Implemented proposal #1497089: fix for some random items.
lib/artifacts, lib/formulae
Changed the title of several treasures from Gaea to Vitality, and from
Ruggilli to Blazing Fires, to match better the personality of those gods.
Yann Chachkoff 2006-12-30
Fix for bug #1539120: talisman of Evocation grants wrong skill.
Changed the name of the "Talisman of Evocation" artifact to "Talisman of Creation",
so there is no confusion with the skill name.
Last part of the fix for bug #1612838
common/treasure.c: Changed the formula used to compute the item_power of a
generated artifact treasure.
Yann Chachkoff 2006-12-30
Partial fix for bug #1612838: Problem with item_power code
server/apply.c
Now armours get +3*magic increase to their item_power field.
Corrected stupid mistakes made when fixing bug #1528525
Yann Chachkoff 2006-12-30
Fix for bug #1573294: Flesh displays speed +x and gives lot identification exp.
common/item.c
Patch initially submitted by Aaron Baugher
Yann Chachkoff 2006-12-30
Fix for bug #1528525: Sometimes "bad" initial items are created.
common/treasure.c
Changed the behavior of create_one_treasure, that will now not generate a
treasure whose base object is cursed or damned when the GT_ONLY_GOOD flag is set.
Yann Chachkoff 2006-12-30
common/c_misc.c lib/settings
Fix for bug #1622609: Specific flags no longer displayed with 'who command
Replaced [] by <> in the who output command, as [] are reserved for the various
formatting tags.
Yann Chachkoff 2006-12-29
Fix for bug #1622575: Range attack switches to punching on contact,
applied patch courtesy Aaron Baugher
server/skill_util.c: use good flag to not switch.
Ryo 2006-12-27
Fix some crashes observed on metalforge:
common/treasure.c: When generating flesh items from custom monsters,
update other_arch of the flesh item to point back to the original
base archetype, not the custom archetype.
random_maps/treasure.c: Create the key object before we reference it
in find_first_free_spot()
MSW 2006-12-26
Make method/property coherent for Python objects.
plugins/cfpython/cfpython_archetype.c cfpython_party.c cfpython_region.c
plugins/cfpython/include/cfpython_archetype_private.h cfpython_party_private.h cfpython_region_private.h
Ryo 2006-12-26
Fix for bug #1527978: summon fog spell is somewhat broken.
Summon now occurs either randomly around (when casting on oneself),
or around, either clockwise or anticlockwise.
server/pets.c
Ryo 2006-12-26
Implement feature request #1617446 :add "glow radius" to perceive self
server/spell_effect.c
Ryo 2006-12-26
Add "Crossfire.Object.LastEat. More return fixes.
plugins/cfpython/include/cfpython_object_private.h: add "Subtype".
plugins/cfpython/cfpython_object.c: add "Subtype".
server/plugins.c: fix wrong return values.
Ryo 2006-12-26
Fix wrong return values for plugin calls. Add "Crossfire.Object.Subtype" property.
plugins/cfpython/include/cfpython_object_private.h: add "Subtype".
plugins/cfpython/cfpython_object.c: add "Subtype".
server/plugins.c: fix wrong return values.
Ryo 2006-12-26
server/player.c: Added a supplementary check on attacked objects, so that an
alive object that has its FLAG_MONSTER set is always a preferred target over
an alive object without that flag.
Fix for the bug mentioned in #1551404
server/skill_util.c: Corrected the flags passed to change_exp when failing
to properly write a spell scroll, which resulted in loss of experience in
the wrong skill.
Fix for the bug mentioned in #1530000
Yann Chachkoff 2006-12-26
lib/{Makefile.in,adm/map_info,collect.pl.in,Makefile.am}: ignore .svn rather
than CVS.
Andreas Kirschbaum 2006-12-24
common/loader.l: Fix some problems related to curse spell monster
handling. Specifically, coordinates of custom monsters was not
being saved (always set to 0,0), which caused crashes for multipart
monsters upon load. Also, speed was being set to 0, resulting in
customized monsters not having any speed.
MSW 2006-12-21
Fix a crash due to non-checking of parameters.
socket/item.c
Ryo 2006-12-13
Tentative fix for bug #1551398: Curse spell breaks customized monsters.
The server will now create a "temporary" archetype when loading a customized monster.
This archetype will have the same name, but not be part of regular archetype list.
It'll be removed when last object using it is removed.
A new field "reference_count" is added to archetype structure, to store how many
objects reference that temporary archetype (think of item duplication with customized archetype).
This fix has been roughly tested, but could certainly use more tests.
Modified files:
common/loader.l: handle customized monsters
common/object.c: increment reference_count if copying a temporary archetype. Decrement it when freeing an
object, and free archetype if needed
common/treasure.c: add "artifact_init" to signal start/end of artifact loading, required for temporary archetypes handling.
include/object.h: new "reference_count" field
Ryo 2006-12-09
Tentative fix for bugs
#1605033: Random map gets blocked
#1522796: Random map, locked door(s) and no key
Random map generator will try harder to put keys, and not lock if no spot found
(can happen if chest is surrounded by locked doors blocking the corridor).
Modified files:
random_maps/rproto.h
random_maps/treasures.c
Ryo 2006-12-03
Cosmetic fixes only, before bugfix.
random_maps/treasures.c: fix indentation.
Ryo 2006-12-03
Fix for bug #1556723: Broken Show invisible - scrolls, wands, staves and rods
server/spell_effect.c: use the item's level, and not computed level, to see if should be shown.
Ryo 2006-12-03
Fix for bug #1569017: Healing gives grace cost to target.
Information sent to client is now stored in a special structure, to not
conflict with spell fields. Note that this doesn't fix player files.
common/player.c: free spell information, new function for spell state.
include/libproto.h: new function.
include/player.h: new structure, new field in player structure.
socket/request.c: use spell information instead of spell fields.
Ryo 2006-12-02
Merge patch #1558073: newpickup flesh courtesy bencha
include/define.h
server/c_object.c player.c
Ryo 2006-11-29
Implement feature request #1555887: Thief player - should have bargaining as default skill
lib/treasures: add skill to class items.
Ryo 2006-11-26
Fix bug #1539207: "Max speed" attribute does not work
common/living.c: armor's max_speed should always be taken into account.
Ryo 2006-11-26
include/newclient.h: Grab/merge copy from 2.x head - some code brought
back from the 2.x head in the build_map.c file is using the MSG_TYPE
declarations.
MSW 2006-11-19
Fix bug #1599307:
server/shop.c: In pay_from_container() handle non-standard MONEY objects when
buying items.
Andreas Kirschbaum 2006-11-19
server/rune.c: If skill is NULL in dispel_rune(), just return as server
will otherwise crash in trap_disarm()
server/spell_util.c: Fix bug in that runes that hold other spells (glyphs,
firetraps, magic runes, etc) do not find a skill object, and thus
player doesn't get exp. Instead, for runes, try to find owner, and
then the relevant skill object.
MSW 2006-11-18
Fix bug #598649: Building apartments use multiple materials per tile
server/build_map.c: don't redo same floor.
Ryo 2006-11-18
Tentative fix for bug #1519089: item cannot afford in container can be taken from store.
server/shop.c: do a real recursion in can_pay.
Ryo 2006-11-16
include\{treasure.h path.h face.h commands.h win32.h shstr.h timers.h
config.h funcpoint.h object.h loader.h attack.h race.h newserver.h
re-cmp.h living.h book.h plugproto.h player.h artifact.h material.h
plugin.h spellist.h skills.h spells.h recipe.h god.h sounds.h map.h
tod.h newclient.h}: Clean up anti-double-include mechanisms.
----
include/arch.h: Removing unused file.
include/Makefile.am: Remove reference to arch.h
common/arch.c: Remove reference to arch.h
Alex Schultz 2006-11-14
Fix bug #1573296: arena : spells with "target" doesn't works
server/spell_util.c: spell_find_dir should consider players when on battleground.
----
Fix bug #1594696: Altar created with creator - consecration
server/time.c: copy creator's level, as per behaviour before function rewrite.
Ryo 2006-11-13
doc/Developers/protocol: Add documentation about exp_table requestinfo
addition
socket/loop.c: Add call to send_exp_table() in request_info_cmd()
socket/request.c: Add send_exp_table() to use a replyinfo exp_table to
send data to client.
MSW 2006-11-03
socket/loop.c: Fix replyinfo, in that it was using incorrect length parameter
when replying to unsupported requests.
MSW 2006-11-02
Fix for bug #1547517: DM issue with containers
server/apply.c: move_apply shouldn't exit if opened container.
Ryo 2006-10-29
Implement feature request #1551406: Add player's name to disease symptoms
server/disease.c: add player's name.
Ryo 2006-10-28
/plugins/cfpython/{cfpython.c, cfpython_map.c, cfpython_object.c}: Remove
redundent checks in values passed to Crossfire_Foobar_wrap() functions.
Alex Schultz 2006-10-27
Fix for bug #1573381 (death attacks does works on skull)
server/attack.c: check for undead when no slaying set for hitter in deathstrike_player.
Ryo 2006-10-22
Fix for bug #1553636 (Crashbug: reset/swaped map after use of "overlay_save").
Make command coherent with ingame command (command_overlay_save since overlay_save).
Add 'overlay_reset' command to reset a saved overlay.
common/map.c: if flag is 2, map is still valid (non destructive save).
include/sproto.h: rename function, new function.
server/c_wiz.c: no need to save and reload the map for overlay. Rename function. New function.
server/commands.c: rename function, new function.
Ryo 2006-10-22
common/loader.l: Make it so that long msg/endmsg won't overflow temp buffer
by using safe_strcat. Will result in long messages being truncated, but
better than crashes.
server/pets.c: Check for existance of object existance after call to
follow_owner() in remove_all_pets(). Can be cases where put is killed
when moving to new map.
MSW 2006-10-18
server/apply.c: If the captain of a transport exits the transport, make the
next player on the transport the captain.
server/server.c: Like change to apply.c to make player another player captain
if one leaves the game. But in addition, in all cases, we need to clean
up the transport->contr pointer, which will otherwise cause crashes.
MSW 2006-10-12
common/readable.c: Rewrite god_info_msg() - a buffer overflow crash was seen
on metalforge, and the old code had lots of dangerous string operations
(non safe strcats, sprintf with overlapping buffers). No code is
functionally equivalant, just uses safe string funtions.
MSW 2006-10-12
doc/Developers/objects updated to better describe @match use in objects. Many
objects contain useless case handling keys like @match Hello|hello because
mapmakers do not know how @match works. Also add mention of the limited
regular expression support that applies to match keys.
Kevin R. Bulgrien 2006-10-08
Make converters inside shops work again.
---
server/c_object.c: Sell item after dropping because converters do not accept
unpaid items.
Andreas Kirschbaum 2006-10-08
Fix bug where in players could unequip cursed weapons by switching to a hand
to hand skill (punching, karate, etc).
--
include/define.h: Add AP_NOPRINT flag.
server/apply.c: Modify the apply_special() code to take AP_NOPRINT option,
which as implies, causes messages not to be printed. Used in change
to skill_util.c, since the code thre prints better message about uequipping
of weapon.
server/skill_util.c: Do some cleanup of unused vars in do_skill(). Modify
attack_hth() to call apply_special() to unequip weapon (that takes care
of checking cursed status, etc).
--
MSW 2006-10-05
server/rune.c: Fix mistake in revision 4979, causing get_rangevector to be called
with an uninitialized env.
Alex Schultz 2006-10-04
server/c_misc.c: Fix incorrect use of FMT64 in commant_statistics().
Alex Schultz 2006-10-02
server/monster.c: Revert message formatting of NPC responses back to the
two-line format. Fix a possible buffer overflow when players talk to
certain NPCs.
Andreas Kirschbaum 2006-10-02
server/rune.c: Cleanup spring_trap() and clean some questionable logic.
server/attack.c: Cause spell traps to be triggered when containers with traps
are destroyed by a spell effect.
Alex Schultz 2006-09-25
server/plugins.c: Change cfapi_object_say() to use either command_say() or
npc_say() depending on if the object is a player. Fixes bug #1534889.
server/monster.c, include/sproto: Move code for NPCs to talk from the code that
handles NPC replies into npc_say().
server/spell_effect.c: Implement proposed alchemy changes from the mailing list.
Make value of nuggets given range from 5% to 40%. Depends on archetype
changes to the alchemy spell and nuggets. (Without archetype changes will
give obscenely low value.)
server/spell_util.c, include/sproto.h: Make min_casting_level() non-static.
Alex Schultz 2006-09-16
server/alchemy.c: Make shadow alchemy and random alchemy failures ignore the
'cauldron' type being used. Fixes bug #1551385.
Alex Schultz 2006-09-15
lib/README: Large update to the ancient readme file describing the files in lib.
Alex Schultz 2006-09-12
common/treasure.c, include/treasure.h: Add MAX_SPELLITEM_LEVEL set to 110.
include/living.h: Set MAXLEVEL to 115.
doc/settings: Document create_home_portals outside of comments in lib/settings.
server/player.c: Comment cleanup. No code changes.
server/apply.c: Add check to auto-dropping of applied transports to not
drop in shops.
common/treasure.c: Make fix_flesh_item only run when the donor is a
monster. Fixes bug #1555569.
Alex Schultz 2006-09-10
server/apply.c, server/c_object.c, server/player.c: Use is_in_shop() to
check if it's in a a shop.
server/shop.c, include/sproto.h: Add is_in_shop() and coords_in_shop()
based on addition of is_in_shop() in cf+ by elmex.
server/apply.c: When applying a transport which is in an inventory, drop
the transport.
server/c_object.c, include/sproto.h: Make drop_object return a pointer to
the dropped object, NULL otherwise.
Alex Schultz 2006-09-09
common/treasure.c: add exp and other_arch to flesh; more info about
the original monster, to be used in spells or scripts.
Lalo Martins 2006-09-10
doc/Developers/protocol: Fix off by one on how many layers are currently
defined.
server/swap.c: When loading up temp maps, make sure timeout is set to 0 -
fixes bug 1539203.
MSW 2006-09-06
lib/collect.pl.in: Explicitly ignore backup files (*~), just because they
really annoy me.
Lalo Martins 2006-09-06
server/gods.c: Make get_god_for_race() safe for gods of no race.
Alex Schultz 2006-09-06
server/shop.c: Make (real) sure shops won't give amber/jade
Lalo Martins 2006-09-06
Apply patch #551467 (type mismatch in surround_flag3() can cause SIGSEGV)
courtesy Mark Kidder.
random_maps/rproto.h wall.c
Ryo 2006-09-04
Bulk of this change is updating some files to use draw_ext_info() - all
future code should use this, since there is no real reason not to and
it provides additional features. One notable change - reversed the
order of the new and old formats in draw_ext_info_format() - the
order was different than that of draw_ext_info(), which leads to confusion.
draw_ext_info_format() wasn't used in many places, so easier to change
that than all the draw_ext_info() calls. Only another 1200
new_draw_info calls left in the server.
--
doc/mediaTags: Fix some typos, clarify some behaviour (the way it works
now so that there will not be confusion in the future).
include/define.h: Remove MSG_ tags - moved to newclient.h
include/newclient.h: Synchronize with client version. Add MSG_ defines
include/newserver.h: Move some defines from here to newclient.h
server/apply.c: Reverse format parameters to draw_ext_info_format() calls.
server/c_misc.c: Rewrite to use draw_ext_info{_format} - this allows nice
formatting of tables, etc. Also general style cleanups, clarify some
messages. in help_topics(), don't do linewrap - let the client
handle it. remove bug_report() function - no longer used. Remove
explore_mode() - wasn't used. Move command_style_map_info() to
c_wiz.c since it is a wiz only command.
server/c_wiz.c: As per above, move command_style_map_info() to this file
since it is a wiz command.
server/player.c: Reverse format parameters to draw_ext_info_format() calls.
server/shop.c: Update to use draw_ext_info{_format} instead of new_draw_info()
socket/info.c: Reverse format parameters in draw_ext_info_format().
Update va_start() to use new last parameter. Remove call to
strip_media() if the client supports the tag - that should only be
used if the client does not support the tag.
socket/request.c: remove commented out MSG_TYPE values.
MSW 2006-09-03
plugins/common/hashtable.c: make Win32 define of uintptr_t more correct.
Alex Schultz 2006-09-03
plugins/common/hashtable.c: fix Win32 compilation.
server/spell_effect.c: missing return value.
----
Potential fix for bug #1551307 (crash in python plugin). If event_destroy is
not found, set del_event to NULL. And don't dare you call remove_ob on it! :)
plugins/cfpython/cfpython_object.c
----
Fix for bug #1551371 (No-magic prevents monsters from casting spells)
server/skill_util.c: ignore no_spell/no_magic for monsters.
----
Fix for bug #1551386 (Alchemy with unpaid items).
include/sproto.h: new function declaration.
server/alchemy.c: check for unpaid items/cauldrons in new function.
server/skill_util.c: move alchemy code to other function.
Ryo 2006-09-03
server/attack.c: Store away victim_map in hit_with_arrow() - what could
otherwise happen is that victim is a player, and killed and ends up
on new map, so that victim->map points at the wrong map.
MSW 2006-09-02
server/swamp.c: swamp will now kill players with woodsman, but slower than
players without that skill. Feature request #1539125 by Andreas Kirschbaum.
socket/lowlevel.c: apply patch #1550716 (Frequent crashes after client disconnects)
courtesy Mark Kidder
Ryo 2006-09-02
server/attack.c: Move kill_player() after we set up the pl->killer string.
Needed just so right message is on grave stone - also prevents crashes,
as if the hitter is poison or disease, kill_player() will remove those.
MSW 2006-08-30
lib/attackmess: Fix missing space in a 'type 17' attack message.
Alex Schultz 2006-08-30
server/player.c: Fix logic error in fire_bow and avoid unnecessary messages.
Fixes bug #1547699.
Alex Schultz 2006-08-28
Add plugin access to move fields. Add sint64 type to plugin. 'AddExp' wrapper.
include/plugin.h
plugins/common/plugin_common.c
plugins/common/include/plugin_common.h
server/plugins.c
-----
Add 'object->env' and move_xxx wrappers to Object.
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
-----
Add constants for many things. Note that they aren't real constants and can
be changed from a Python script. But it's the case for everything, so...
plugins/cfpython/cfpython.c
Ryo 2006-08-27
Removed obsolete 'event' field from object struct, and associated functions.
common/living.c
common/loader.[cl]
common/object.c
common/treasure.c
include/libproto.h
include/object.h
server/apply.c
test/unit/common/check_arch.c
Ryo 2006-08-26
server/weather.c: change spurious logic in weather_avoid function.
Ryo 2006-08-26
Hopefully fix weather-related bug.
common/object.c: tentatively fix insert_ob_in_map weird behaviour when
both INS_MAP_LOAD and INS_ABOVE_FLOOR_ONLY are set.
Ryo 2006-08-26
common/object.c, server/time.c: Make generators work properly with multi-tile objects.
Fixes bugs #1543220 and #1546835 and also allows generators themself to be multi-tile.
Alex Schultz 2006-08-25
check-fragment.am: Add some quotes to avoid problems with spaces appearing
in macro expansions.
Raphael Quinet 2006-08-25
configure, aclocal.m4, utils/config.guess, utils/config.sub,
utils/ltmain.sh, include/autoconf.h.in, */Makefile.in: regenerated using
slightly newer versions of libtoolize, aclocal, automake and autoconf.
Raphael Quinet 2006-08-25
configure.ac: add option to disable unit tests, fix incorrect usage of
AC_ARG_ENABLE for dmalloc, fix some typos.
Raphael Quinet 2006-08-25
common/map.c: static buffers are evil. This resulted in name weirdness, and
strange results with overlays.
Ryo 2006-08-25
server/server.c: fix a weird name change. Basically, function path_combine_and_normalize
was called twice while first result was still in use, resulting in weird names.
Ryo 2006-08-23
Fix for bug #1528636 (Invisible player disappears from map view).
socket/request.c: special case for view's center.
Ryo 2006-08-22
Fix/improve login procedure such that if a player is trying to log in with
the name & correct password of character already on server, terminate old
connection and let them log in.
---
server/login.c: Remove name check for players on server in check_name().
Make wrong_password() to handle error message handling for wrong password
In check_login(), iterate over players on system to see if there is a
match - if mismatched password, print error. If correct password,
terminate old connection. Move wrong password logic from check_login()
to wrong_password().
MSW 2006-08-21
server/attack.c: Call kill_player() from the kill_object() code. Fixes bug #1539192.
Alex Schultz 2006-08-21
server/spell_effect.c: Make counterspell not effect permenant spell effects.
Fixes bug #1539220.
lib/adm/getfaces.pl, lib/adm/README: Add 'getfaces' script that I had on the tracker and
forgot about.
Alex Schultz 2006-08-20
Fix timers not working properly and potentially crashing.
include/timers.h: use tag instead of pointer to avoid crashes.
server/init.c: init timers.
server/timers.c: wrong check for EVENT_TIMER.
-----
Add timers to functions a plugin can call.
include/sproto.h: new functions.
server/plugins.c: callbacks to timers.
-----
Add Python wrappers to timer, Object.CreateTimer(delay,mode) and Crossfire.DestroyTimer(id)
plugins/cfpython/cfpython.c
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
plugins/common/plugin_common.c
plugins/common/include/plugin_common.h
Ryo 2006-08-20
common/object.c: Scatter objects dropped from a multi-tile object being freed.
Fixes bug #1542884
server/c_wiz.c: Make DM 'free' command safe on multi-tile objects.
Alex Schultz 2006-08-19
Fix for bug #1540158 (Broken spells - Face of Death)
server/attack.c: death attack always kills, no escape from it.
-----
Fix for bug #1460251 (Big monsters generated by generators broken). The generators
didn't correctly create the other monster parts.
common/map.c: move stuff out of link_multipart_objects to object.c
common/object.c: add fix_multipart_object function, taken from link_multipart_objects
include/libproto.h: new function.
server/time.c: call new function when adding big monster.
-----
Fix for bug #1523571 (Diseases work only on "head" part).
server/spell_attack.c: the "more" part doesn't always have all the right flags,
so get head before testing.
-----
common/object.c: add "more", "head" and "env" values when dumping an object.
server/spell_util.c: DMs can cast denied spells.
Ryo 2006-08-19
Recollected archetypes in order to integrate fix for bug #1530006:
lib/smooth, lib/faces, lib/bmaps.paths, lib/bmaps, lib/archetypes,
lib/animations, lib/crossfire.1, lib/crossfire.0, lib/treasures.bld
Raphael Quinet 2006-08-18
Added a plugin function to get time. Add Python wrapper.
include/plugin.h sproto.h
plugins/cfpython/cfpython.c
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
server/plugins.c
Ryo 2006-08-15
common/map.c, include/plugin.h, plugins/cfpython/{cfpython.c, include/cfpython_map.h,
include/cfpython_map_private.h}, server/plugins.c, server/server.c,
server/swap.c: Add EVENT_MAPLOAD and EVENT_MAPUNLOAD, add support to cfpython.
Modify EVENT_MAP* to send the map object (in place of the path for
MAPRESET). Impliment wrapper invalidation for cfpython map wrapper objects.
crossedit/stubs.c, include/funcpoint.h, random_maps/standalone.c,
test/unit/common/stubs_common.c: Allow execute_global_event() to be called from
common.
Alex Schultz 2006-08-12
lib/artifacts: Add artifact descriptions, courtesy of Raphael Quinet. Applies patch
from tracker item #1538983
Alex Schultz 2006-08-12
server/c_object.c: Corrected a mistake in examine that would display the
content of a message prefixed by @match to the player.
Fix for the bug mentioned in #1539227
server/spell_effect.c, common/map.c, common/map.h: Added a field in the map
structure to store the timestamp of the last original map loading, and
modified the Town Portal spell so that it now cannot lead to a map that
was marked before a reset, after a reset.
Fix for bug #1539155
server/apply.c: changed the comparaison code between the weapon's name and the
player's, so that a weapon created by "gro" cannot be used by "gros.
Fix for bug #1539150
server/c_object.c: modifier command_take so it is less noisy about no_pick items
when doing a "get all" request.
Fix for bug #1539122
server/c_object.c: modified command_drop so it is less noisy about locked items
when doing a "drop all" request.
Fix for bug #1539121
server/pets.c: added filling of inventory for monsters magically created that
didn't come from a player caster, and aren't golems.
Fix for bug #1529980
server/spell_effect.c: fixed incorrect behavior of the create missile spell,
that couldn't find a proper archetype when a bow or a crossbow was wielded.
Fix for bug #1532403
Yann Chachkoff 2006-08-12
server/apply.c: keep converters from accepting unpaid items
Lalo 2006-08-12
lib/addexp: update help text.
server/c_wiz.c: update addexp's help text.
Ryo 2006-08-11
server/c_wiz.c: fix create command with some artifact fun. Update player inventory if removing
an item.
Ryo 2006-08-10
server/apply.c: Tell the client the map has scrolled when applying transports. Fixes bug #1528565.
Alex Schultz 2006-08-10
lib/regions, common/region.c: Move regions file to map files.
server/player.c: Set default listen level to 10.
Alex Schultz 2006-08-09
common/loader.l, include/object.h, include/plugin.h, server/plugins.c: Add no_save attribute.
Prevents object from being saved to disk. Add plugin support for the attribute.
plugins/cfpython/{cfpython.c, cfpython_object.c include/cfpython_object.h,
include/cfpython_object_private.h}: Add cfpython support for no_save, and have cfpython
"invalidate" object wrappers when the object is destroyed. Add "Exists" property to python
object wrappers.
Alex Schultz 2006-08-08
Feature request #1465397 (improved feedback in character creation for existing names).
Made message more explicit.
server/login.c
Ryo 2006-08-08
Implement feature request #821645 (change password command). This introduces 3 new
player states, "entering current password", "new password", "confirm new password".
include/define.h: new states.
include/player.h: add new_password field.
include/sproto.h: new command prototype.
server/c_misc.c: new command.
server/commands.c: bind command.
socket/request.c: handle new states.
Ryo 2006-08-08
Implement feature request #1528641 (consecrate should change face of altar). This simply
removes the altar, and add the god's altar. Note that the name of the altar should be
altar_<god's name>, which seems to be the case everywhere.
server/spell_effect.c
Ryo 2006-08-07
Tell player whether she's the transport's captain or not.
server/apply.c
Ryo 2006-08-07
Commit patch #1389033 (Large-value coins) courtesy Lalo Martins
server/shop.c: accept jade & amber coins, never give'em back.
Ryo 2006-08-07
Fix bug #1534727 (create_home_portals TRUE doesn't work)
server/init.c: wrong variable changed.
Ryo 2006-08-05
Committed patch #1389432 (Per-race HallOfSelection) courtesy Lalo Martins.
Modified files:
include/global.h
common/init.c
server/server.c player.c
Rebuilt archetypes and treasures.
Ryo 2006-08-05
plugins/cfpython/cfpython.c, plugins/cfpython/cfpython_object.c,
plugins/cfpython/include/cfpython_object_private.h: Modify
Crossfire_Object_wrap() to use the hash tables provided by hashtable.c
to avoid creating more python wrapper objects than is needed.
Alex Schultz 2006-07-29
common/object.c: fix bug #1526364 (stacking Royal Guards). Use find_free_spot
to place dropped items if living. Also fix indent of function free_object2.
server/c_object.c: fix bug #1529969 (shop floor not working in random maps).
Ryo 2006-07-29
server/c_wiz.c: fix addexp not working on skills.
server/time.c: don't crash if duplicator doesn't have other_arch set.
Ryo 2006-07-28
plugins/common/hashtable.c, plugins/common/include/hashtable.h,
plugins/common/Makefile.am, plugins/common/include/Makefile.am,
plugins/cfpython/Makefile.am: Add hashtable.c, to add ptr-to-ptr hash tables
for plugins to use. (Useful to use a cf object as a key for the table)
plugins/cfpython/include/cfpython.h: Include compile.h which Python.h doesn't
include on it's own in versions of python older than 2.4.
include/plugin.h, common/object.c: Add EVENT_DESTROY, a local event triggered when
an object is freed.
include/funcpoint.h, crossedit/stubs.c, random_maps/standalone.c,
test/unit/common/stubs_common.c: Allow execute_event to be called from common
and add appropriate stubs.
Alex Schultz 2006-07-28
common/item.c: In describe_item() correct capacity description of large
(>1000 maxsp) Glowing Crystals.
Andreas Kirschbaum 2006-07-28
plugins/cfpython/cfpython.c: Added compilePython() function to split the compiling
of python bytecode from the execution of it. Add support for caching the
bytecode for a fixed number of scripts (default of 16) to increase speed.
Alex Schultz 2006-07-27
server/c_wiz.c: prevent a DM to reset a random map if (s)he is on that map.
Workaround for bug #1528173.
Yann Chachkoff 2006-07-26
server/c_wiz.c: call update_ob_speed if removed object is animated.
server/spell_attack.c: stop generating swarm/bullet if player moved. This
fixes bug #1528194.
server/spell_util.c: don't report blocking if caster is not player. It then
is a swarm spell or equivalent, so position is random, no need to warn.
Ryo 2006-07-25
server/server.c: Select op->facing instead of op->direction in process_events
for players and monsters as the direction reference for the face to display.
Fix for bug #1528182. (*few* ! that's a lot of bugs ! :))
server/spell_util.c: Make the search for a friendly target for some spells also
browse transports located in the square from which the spell was cast.
This is a fix for bug #1528018
server/c_wiz.c: Prevents the use of reset on self-map while in a transport.
Work-around for bug #1528172.
server/skill_util.c: Make dragons prefer clawing over anything else as unarmed
combat technique. Fix for bug #1528197
Yann Chachkoff 2006-07-25
common/treasure.c: Added explicit item_power calculation for generated items that
got an item_power of 0 - should solve bug #1460354.
Yann Chachkoff 2006-07-21
scommon/map.c: Add check to block_linked() to make sure things never block themself.
server/spell_attack.c: Target the head of monsters diseases are cast at.
Alex Schultz 2006-07-18
Fix player count reporting to the metaserver. It now excludes connections with
not-yet-logged-in players and AFK/WIZ/BOT players.
---
socket/metaserver.c: In metaserver_update() use the same conditions as for the
who command.
Andreas Kirschbaum 2006-07-16
server/spell_effect.c, include/global.h, common/init.c, server/init.c: Add
setting "create_home_portals" which allows server admins to allow town
portals to be created in apartments. Based on a patch by pippijn in the
cf-ext project.
lib/settings: Set default create_home_portals to FALSE
Alex Schultz 2006-07-12
lib/regions: Fix typo in region "portjoseph". Bug #1518392 (Port Joseph
region spelling inconsistent with map directory) by Kevin R. Bulgrien.
Andreas Kirschbaum 2006-07-07
acinclude.m4, configure: Fix last fix which discarded any passed in
CFLAGS or if that is set in the environment.
MSW 2006-07-05
common/button.c: Fix for sourceforge bug common/button.c - harpsicord crashes
client. The problem is that the trigger code presumed that the object
would be animated, and blindly set teh face to the second animation frame.
harpsicords are not animated, so this could amount to garbage. So add
check for trigger objects to see if they are in fact animated before
blindly setting the face.
MSW 2006-07-05
server/daemon.c: Patch by wart, tracker 1489902 - open a file like /dev/null
to then dup - this fixes -detach crash problem. Might be better to use
some other file, but in theory, shouldn't be much going here, and I
don't think we can safely use a file that is already opened by the
server.
MSW 2006-07-05
common/region.c: wrong order for memset call.
Ryo 2006-07-04
common/object.c: revert my previous fix, it's actually a feature :)
Ryo 2006-06-27
------------------------------------------------------------------------------
Changes for 1.9.1:
acinclude.m4, aclocal.m4, configure, configure.ac: Fix crossedit header
detection - even when passed --with-x to configure and having all the files,
it wouldn't find the headers because it didn't pass in the correct -I
options for where they sit. Also, update for 1.9.1 release.
MSW 2006-06-29
server/rune.c: Undo last patch - breaks summoning runes.
server/skills.c: Change disarm logic - after first failure, don't continue
to disarm traps (makes sense anyways - can really only disarm one thing
at a time) - this fixes the problem that last change to rune.c tried
to fix.
MSW 2006-06-27
server/rune.c: Patch from schmorp - when dealing with traps, don't put them
underneath the player when a disarm failure happens, instead, update the
direction to hit the player - prevents a recursion problems causing
hundreds of objects.
MSW 2006-06-25
common/object.c: don't consider FLAG_INV_LOCKED for can_merge.
Ryo 2006-06-24
common/object.c: in insert_ob_in_map() don't stop processing flying objects
if the object also has floor set. This fixes crashes when an object
is both flying and has floor set.
MSW 2006-06-06
Add commands rules and news to display the rules/news files.
---
include/sproto.h: Add prototypes for new commands.
lib/help/{motd,news,rules}: Add help files.
lib/Makefile.am: Add new help files.
lib/Makefile.in: Rebuilt.
server/c_misc: Add functions to implement the commands.
server/commands: Add new commands to commands list.
Andreas Kirschbaum 2006-06-06
Fix problem with create food when used on transports. Rather than put a
specific check in the create food code, modify insert_ob_in_map to
check to see of the passed in originator is on a transport, and if so,
find out the right info - this probably fixes the same type of bug that
happens from other areas of the code.
common/object.c: Above change, as well as #if 0 out some unused functions.
MSW 2006-06-04
Clean up some compiler warnings. Most of the changes are related to replaced
%lld with FMT64 defines so that the format will be correct, no matter if
the 64 bit type is a long, long long, or if this is windows. #if 0 out a
bunch of code that isn't used.
--
common/exp.c: Replaced lld with FMT64
common/holy.c: #if 0 out baptize_altar(). Add banner copyright at top of file.
common/info.c, common/item.c, common/loader.l, common/loader.c, common/map.c:
common/porting.c Replaced lld with FMT64
common/time.c: Replace a bunch of variables declared as longs to be uint32.
Update various sprintf appropriately.
include/global.h: Add FMT64 and FMT64U as appropriate for different systems.
Change max_time to be a uint32
include/sockproto.h, include/sproto.h: rebuilt
server/apply.c: #if 0 out monster_apply_special
server/c_range.c: Add != 0 in assignment if statement - same meaning, clearer
on intention and avoids compiler warning.
server/c_wiz.c: Update command_kick() to take const char. Update command_speed()
to operate properly based on max_time being a uint32. Update various lld
to FMT64. Clarify ambiguous if/if/else statement in command_insert_into()
server/commands.c: Add cast to command_kick for new function prototype. #if
0 out find_command(), parse_string(), parse_command()
server/disease.c: #if 0 out find_disease(), reduce_symptoms()
server/egoitem.c: #if 0 out create_artifact(). Add copyright at top of file.
server/gods.c: #if 0 out get_god()
server/hiscore.c: Replace lld with FMT64
server/login.c: #if 0 out create_savedir_if_needed()
server/resurrection.c: Replace lld with FMT64. #if 0 out dead_character() and
dead_player_exists()
server/server.c: Remove info_keys() - hasn't been used in a long time. #if 0
out process_active_maps()
server/skill_util.c: Replace lld with FMT64
server/spell_util.c: #if 0 out check_spell_effect()
server/weather.c: #if 0 out feather_map(). Fix what I suspect is an error
in worldmap_to_weathermap() to skip over starting slashes.
socket/image.c: Add a fair number of char * casts to suppress warnings.
socket/init.c: Change buflen in init_connection() to socklen_t to match
function prototype. Add some char * casts.
socket/loop.c: Add some char * casts.
--
MSW 2006-06-04
Add a name 'dungeon_name' for random maps, and put it in the random key's name.
This implements feature request #815622 (keys in random maps should note map they are from)
https://sourceforge.net/tracker/index.php?func=detail&aid=815622&group_id=13833&atid=363833
random_maps/random_map.c: fix a memory leak. Add random name.
random_maps/reader.[cl]: read 'dungeon_name'. Use strncpy instead of strcpy.
random_maps/random_map.h: add new field, use a #define instead of hardcoded constant.
Do not merge renamed items with differing custom names.
---
common/object.c: In can_merge() check for differing custom_name field.
server/c_object.c: In command_rename_item() try to merge the affected item.
Andreas Kirschbaum 2006-06-02
Do not merge locked and unlocked items.
---
common/object.c: In can_merge() do not ignore FLAG_INV_LOCKED anymore.
socket/item.c: In lock_item_cmd() try to merge the affected item.
Andreas Kirschbaum 2006-06-01
lib/artifacts: Fix typo to not anymore generate "boots of of steel".
lib/artifacts: Fix typo to make bows of Sorig work.
lib/archetypes, lib/treasures.bld: Rebuilt.
Andreas Kirschbaum 2006-06-01
Various bug fixes, related to the new map display code.
common/loader.c, common/loader.l: Add map_layer attribute so object can
override what layer it should go on (fix for levitation boots).
common/map.c: Add support for map_layer to override layering. Fix bug
where if there were more objects than would fit on a layer, not all
would be drawn (same object was duplicated onto multiple layers).
common/object.c: Add check for ob->map_layer in can_merge()
include/map.h: Add extern declaration for map_layer_name[]
include/object.h: Add map_layer to object.
socket/request.c: In map1 compatibility mode, make sure we always
send the player.
MSW 2006-05-29
server/monster.c: Only call animate_object() if object is animated -
otherwise, animate_object() spews bunch of error about being called
with non animated object.
MSW 2006-05-29
Monsters now cannot anymore see through earthwalls/monsters. This restores the
behavior to what it was before the new movement code. For players this
basically means that monsters will not anymore cast spells though earthwalls or
other monsters.
---
server/player.c: In path_to_player() consider tiles with P_IS_ALIVE set as
blocking.
Andreas Kirschbaum 2006-05-27
Make attacking with melee in 'fire command work again. Now attacking with
<shift>+<direction> works again.
---
server/skill_util.c: In skill_attack() also attack if the destination tile has
P_IS_ALIVE set.
Andreas Kirschbaum 2006-05-27
Make swarm spells work again. These spells did not work anymore on tiles which
had a move_block type set (for example cobblestones).
---
server/spell_attack.c: In move_swarm_spell() remove check for blocked
movement. This check was incorrect since it did check the SPELL object
instead of the SPELL_EFFECT object. Also, this check is not necessary since
it is also present in the called functions fire_xxx().
Andreas Kirschbaum 2006-05-25
Fix monster not changing direction when attacking adjacent object.
server/monster.c: update facing/direction according to enemy.
Ryo 2006-05-25
common/item.c: Skip some processing if NEW_MATERIAL_CODE is undefined.
common/holy.c, include/libproto.h: Declare some functions as "static".
Andreas Kirschbaum 2006-05-21
Make socket handling more robust.
---
include/newclient.h: Split MAXSOCKBUF into MAXSOCKRECVBUF and MAXSOCKSENDBUF.
Increase the receive buffer size to be able to handle all valid packets;
decrease send buffer size to 10239 to not overflow the receive buffer of old
clients.
socket/{image.c,info.c,init.c,item.c,loop.c,lowlevel.c,request.c,sounds.c}: Use
renamed constants.
socket/image.c: In send_image_sums() prevent buffer overflows. Reject the
command instead.
socket/request.c: In send_skill_info() and send_spell_paths() prevent buffer
overflows. Instead send only as much information as fits into the buffer.
socket/loop.c: In handle_client() prevent possible array out-of-bounds access.
Andreas Kirschbaum 2006-05-21
Added a 'cf_log' function for plugins. Replace printf in plugins with correct call.
---
include/plugin.h: include required header for log level definitions.
include/sproto.h: new function.
plugins/cfanim/cfanim.c: replace printf with calls to cf_log.
plugins/cfpython/cfpython.c: replace printf with calls to cf_log.
plugins/cfpython/cfpython_map.c: replace printf with calls to cf_log.
plugins/common/plugin_common.c: new cf_log function.
plugins/common/include/plugin_common.h: new cf_log function.
server/plugins.c: new hook.
Ryo 2006-05-20
This adds a "bot" flag for players. Such players won't be counted when
sending information to metaserver. To enable it, just send "bot 1"
through the "setup" command.
---
include/newserver.h: add new is_bot flag.
lib/settings: add %b to default formats.
server/c_misc.c: add %b to who options, for [BOT] flag.
socket/init.c: init is_bot.
socket/metaserver.c: don't count bots.
socket/request.c: new "bot" setup command.
Ryo 2006-05-20
This commit adds support for the map2 protocol command (10 layer map).
This changes how the data is stored and sent to the client. This also
implements the idea of client handling map animations, so adds some object
flags so that the server knows if it should let the client handle animations
or not. Support for the original map protocol command is removed.
---
aclocal.m4: rebuilt
configure.ac: Add checks for zlib.h, libz - not used right now, but will
probably be used in the future, so no reason to remove it.
common/loader.l: Add client_anim_sync, client_anim_random FLAGS.
common/map.c: Add add_face_layer() to set face for a layer. Redo/simplify
update_position to store faces away based on layering criteria.
common/time.c: Replace long pticks with a uint32, since size of a long will
vary, and we now send pticks to the client as a 32 bit value.
crossedit/CrEdit.c: Update the draw logic based on the fact there are more
layers now.
crossedit/Edit.c: Comment out some code that probably should be fixed.
Replace calls of SET_MAP_FACE with SET_MAP_FACE_OBJ
doc/Developers/protocol: Updated with map2, tick protocol additions.
Reorganize the parameters in the setup protocol command so they are now
listed in alphabetical order.
include/autoconf.h.in: Add HAVE_ZLIB_H define.
include/define.h: Update for the FLAG_CLIENT_ANIM values.
include/face.h: Remove MapLook structure - no longer used.
include/global.h: change extern type for pticks from long to uint32
include/map.h: Change MAP_LAYERS to 10. Add definitions for what each
map layer is. Remove GET/SET_MAP_FACE macro - no longer used,
GET/SET_MAP_FACE_OBJ replaces it. Add GET_MAP_FACE_OBJS which
returns pointer to all the object info for the space. Remove
faces from MapSpace structure.
include/newclient.h: Update with new defines used for map2 protocol
command.
include/newserver.h: Change type of faces in map_cell_struct to be
uint16 to be consistent. Change 'count' to 'darkness' to more
accurately describe what it represents. Add MAP2_COORD_OFFSET
define. Add Map2Cmd to MapMode enum. Add map_scroll_x/y
to socket structure so we send those as part of map2 command.
Add tick field to socket structure to know if we should send
tick data to the client.
server/login.c: Remove extern long pticks declaration - declared
in global.h - don't need to declare it again locally.
socket/info.c: Rewrite magic map code to use GET_MAP_FACE_OBJ
instead of GET_MAP_FACE macros.
socket/init.c: Initialize new fields in socket structure to 0.
socket/loop.c: If client wants tick data sent, send one each tick.
socket/request.c: Add setup responses for tick, map2 requests. Remove some
extra code in Map1a setup. Send error message to client if not using
at least Map1 protocol level. Modify map_newmap_cmd() to clear
scroll information when using Map2. Remove original (map0) protocol
logic. Update map_clearcell() to clear all 10 layers. Replace
MAX_LAYERS with MAP_LAYERS. Add add_head() to remove some of the
complication from update_space(). Add code in draw_client_map1()
to find which 3 layers to send to the client from the 10 we now have.
Add map2_add_ob(), map2_delete_layer(), check_space_for_heads(),
draw_client_map2() to handle map2 protocol. Add send_tick() -
sends tick to client, but also forces flush of data to reduce lag.
utils/config.guess.utils/config.sub,utils/ltmain.sh: rebuilt
MSW 2006-05-15
Fix server crash when sending addspell command(s).
---
socket/lowlevel.c: Do not abort if output buffer is completely filled. (Was
off-by-one, so if addspell did fill the complete buffer, the server did
detect an buffer-overflow error.)
socket/request.c: Update comments.
Andreas Kirschbaum 2006-05-13
server/spell_effect.c: Disallow town portal while in transports (caused
map corruption, crashes and other nasty things)
Alex Schultz 2006-05-12
Fix for bug #1473941 (damnation bug)
server/apply.c: wrong parenthesis for cursed/damned logic
Ryo 2006-05-05
Applied patch #1453869 (code-cleanup) courtesy Stefan Huehner (shuehner).
Modified files for first patch:
include/funcpoint.h sproto.h
server/alchemy.c apply.c attack.c commands.c disease.c egoitem.c gods.c init.c login.c
main.c monster.c move.c pets.c player.c resurrection.c rune.c skill_util.c skills.c
spell_attack.c spell_effect.c spell_util.c swap.c time.c timers.c
Modified files for second patch:
crossedit/stubs.c
include/sockproto.h
random_maps/standalone.c
socket/info.c item.c request.c sounds.c
test/unit/common/stubs_common.c
test/unit/random_maps/stubs_random.c
Modified files for third and last patch:
common/item.c
include/libproto.h sproto.h
server/c_chat.c c_object.c c_wiz.c daemon.c hiscore.c main.c shop.c
Ryo 2006-05-05
Commit patch #1456016 courtesy schmorp.de development team.
server/pets.c
Add Map.Insert(object,x,y) and Player.CanPay( ) to Python plugin.
include/sproto.h
plugins/cfpython/include/cfpython_object_private.h
plugins/cfpython/include/cfpython_map_private.h
plugins/cfpython/cfpython_object.c
plugins/cfpython/cfpython_map.c
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
server/plugins.c
Ryo 2006-05-05
include/config.h: Increase Archtable to 8192, the new hashing algorithm
works better with a table size that is a power of 2, and the current value
is very close to being exceeded anyway. Suggested by Crossfire+ Development
Team http://cf.schmorp.de
Brendan Lally 2006-04-06
server/swamp.c: Use the object name for swamp messages. Allows custom swamp
names to work better
Alex Schultz 2006-04-04
Fix exploit with alchemy spell. This effectively removes the improvement
implemented at 2006-03-07.
---
server/spell_effect.c: Use query_cost() to determine value of nuggets.
Andreas Kirschbaum 2006-03-22
Apply patch by Stefan Huehner: add const where appropriate.
---
Affected files: include/sockproto.h, socket/{loop.c,lowlevel.c}
Andreas Kirschbaum 2006-03-19
Use const when possible. Patch courtesy Stefan Huehner.
common/item.c map.c porting.c readable.c shstr.c utils.c
crossedit/Attr.c CrEdit.c
include/global.h libproto.h
random_maps/rproto.h treasure.c
server/c_new.c commands.c
Ryo 2006-03-18
Removed unused header file version.h.
include/version.h: removed.
include/win32.h: don't include that file.
Ryo 2006-03-18
Add 'add_key' parameter to object.set_key for plugins.
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
plugins/cfpython/cfpython_object.c
server/plugins.c
Ryo 2006-03-18
Massive code cleanup. Changed FunctionsInCamelCase to conform to conventions.
Changed comments to doxygen syntax. Made function/variable/structure names more
coherent.
There shouldn't be any functional change.
Modified files:
common/anim.c image.c loader.[cl] object.c
crossedit/xutil.c
include/commands.h global.h libproto.h newserver.h object.h player.h sockproto.h /sproto.h
plugins/cfpython/cfpython.c
server/apply.c attack.c c_misc.c commands.c init.c main.c move.c player.c plugins.c spell_effect.c time.c
socket/image.c info.c init.c item.c loop.c request.c
Ryo 2006-03-18
Apply patch #1450408 (Improved hash table) by cf.schmorp.de development team.
The new hash function seems to produce fewer collisions than the previous
function. This especially holds for strings that share a common prefix: the
old function did use only a small fraction of the available slots; the new
function uses all slots with a fairly equal distribution.
---
common/arch.c: Replace algorithmn implemented in hasharch().
Andreas Kirschbaum 2006-03-16
Apply patch #1439143 (code-cleanup: crossedit) by Stefan Huehner: Remove
unused code, add static/const where appropriate.
---
Affected files:
crossedit/{App.c,App.h,Attr.c,CrEdit.c,CrFace.c,CrList.c,CrUtil.c,Defines.h},
crossedit/{Edit.c,Str.h,crossedit.c,png.c,proto.h,xutil.c,Cnv/Cnv.h},
crossedit/include/{Makefile.am,Makefile.in,util.h}
Andreas Kirschbaum 2006-03-16
common/utils.c: apply patch #1445892 (transmute_materialname crash) courtesy
the cf.schmorp.de development team.
include/spellist.h: disable big unused arrays, legacy of spell code.
server/c_object.c: merge find_best_apply_object_match and find_best_object_match
which are really the same.
server/init.c: fix memory leak.
server/monster.c: fix a monster/scroll related crash, based on patch #1447242 by
the cf.schmorp.de development team.
server/player.c: fix monitor_spells not initalized (before InitConnection()).
server/skills.c: fix merging bug with inscription.
socket/init.c: fix monitor_spells not being initialized.
Ryo 2006-03-14
Fix bug/exploit in setup command. We were strcat'ing back data provided
by the client.
---
socket/request.c: Modify SetUp() to use safe_strcat() - eliminates buffer
overflow issues. Add some char* casts to spell/skill requestinfo
to eliminate compiler warnings. Add IP address to log for incoming
connections.
MSW 2006-03-13
Fix possible exploit with shadow alchemy. Also improve the alchemy spell to
yield more nuggets.
---
server/shop.c: In query_cost() apply the hack (to multiply non-GEM/non-MONEY
values by four) also if no player object is present.
Andreas Kirschbaum 2006-03-07
Add settings permanent_experience_percentage, death_penalty_percentage and
death_penalty_levels to the settings file.
---
common/living.c: don't hardcode exp calculations
common/init.c, include/config.h, lib/settings: set defaults for new values
doc/settings: document new values
include/global.h: change settings struct to hold the new values
server/init.c: parse new values in the settings file.
server/skill_util.c: reference new value
Brendan Lally 2006-03-07
Apply modified parts of patch #1439490 (Fix in random map generation) by CF
Development Team Schmorp.de <crossfire@schmorp.de>.
---
random_maps/exit.c: In place_exits() check for a valid exit path before
dereferencing it.
random_maps/treasure.c: In find_closest_monster() include monsters at map
border. In find_enclosed_spot() prevent access to out of map tiles.
Andreas Kirschbaum 2006-03-04
Apply patch #1436833 (Patch for forked lightning crash at map borders) by CF
Development Team Schmorp.de <crossfire@schmorp.de>.
---
server/spell_attack.c: In forklightning() prevent access to out of map tiles.
Andreas Kirschbaum 2006-03-04
common/loader.l: Prevent excess whitespace while saving objects.
common/loader.c: Rebuilt.
Andreas Kirschbaum 2006-02-27
Apply patch by Marc Alexander Lehmann to improve server performance.
---
include/map.h: Move path field to end of struct. Since this field was huge it
pushed all other fields to large offsets in the struct. Moving it to the
end of the struct mapdef should not break anything but will improve
performance and reduce the server code by >3500 bytes.
Andreas Kirschbaum 2006-02-27
------------------------------------------------------------------------------
Changes for 1.9.0:
lib/collect.pl.in: Again fix generation of 'editor_folder' field to make
sub-folder selection work again.
lib/archetypes: Rebuilt.
Andreas Kirschbaum 2006-02-26
*/Makefile{in.am}: Fix plugin makefiles so that 'make distcheck' works. Using
relative path names for files to include in distribution does not work -
need to have a makefile in each directory.
configure{.ac}: Updated as result of new Makefiles.
MSW 2006-02-24
Apply patch #1428057 courtesy Pippijn van Steenhoven: fix to a crashing bug in plugins
(incoherent order of parameters).
Also use plugin_common.h in CFAnim instead of having separate definitions.
Modified files:
plugins/cfanim/cfanim.c
plugins/cfanim/include/cfanim.h
plugins/cfanim/include/cfanim_proto.h
plugins/common/plugin_common.c
plugins/common/include/plugin_common.h
Ryo 2006-02-23
Remove object type CONFUSION since it was not used anymore.
---
common/item.c: Remove CONFUSION entry from item_types[] array.
include/define.h: Uncomment #define CONFUSION.
Andreas Kirschbaum 2006-02-22
lib/collect.pl.in: Fix generation of 'editor_folder' field. It did not work
too well for .arc files in deep subdirs.
lib/{archetypes,bmaps.paths,crossfire.0}: Rebuilt.
Andreas Kirschbaum 2006-02-21
random_maps/random_map.c: Cause the random map generator to skip certain
elements if the style is set to "none".
doc/Developers/random-maps: Document above change
Alex Schultz 2006-02-20
socket/request.c: Don't crash on trying to send a spell which doesn't have an
associated skill
Brendan Lally 2006-02-20
Do not allow to dimension door into monsters or earthwalls.
---
server/spell_effect.c: In dimension_door() do not allow destinations that are
P_IS_ALIVE.
Andreas Kirschbaum 2006-02-19
random_maps/style.c: In find_style() fix access to uninitialized variable.
Andreas Kirschbaum 2006-02-19
Prevent crossedit from stripping out 'maplore' map header field.
---
common/map.c: Add code to load/save/dump maplore information.
include/map.h: Add new maplore field to map struct.
Andreas Kirschbaum 2006-02-19
Apply patch #1433271 (code-cleanup) by Stefan Huehner: Add const and static.
---
Affected files: common/{loader.l,los.c,map.c}, include/{libproto.h,sproto.h},
plugins/cfanim/{cfanim.c,include/cfanim.h}, server/{apply.c,skill_util.c}
common/loader.c: Rebuilt.
Andreas Kirschbaum 2006-02-17
common/map.c: Modify ob_blocked() to properly handly objects with a 0
ob->move_type. Fixes infinite loop from random map code when trying
to place exits.
MSW 2006-02-16
Commit forgotten file for yesterday, which have the CFAPI_INT16 define...
include/plugin.h
server/plugins.c
Ryo 2006-02-15
Minor bugfixes:
server/apply.c: Fix apply_transport ->contr checks to actually
check against correct values.
server/plugins.c: Replace CFAPI_INT16 with CFAPI_INT - there is no
declaration anyplace for CFAPI_INT16 so compiles fails.
server/swamp.c: Fix swamp code so that only objects that can be
picked up disappear - this way, transports don't disappear into
oblivion.
MSW 2006-02-15
Swamps don't affect DMs anymore. Also, swamps don't remove items with
FLAG_IS_FLOOR or FLAG_IS_OVERLAY_FLOOR.
server/swamp.c
----
Fixes to plugin system. Added "SINT16" as return type.
server/plugins.c: resistances are sint16, not int.
plugins/cfanim/include/cfanim_proto.h: fix cf_object_get_resistance declaration.
plugins/cfpython/cfpython_archetype.c: fix comparison function, which should return 0 or +-1.
plugins/cfpython/cfpython_map.c: fix comparison function.
plugins/cfpython/cfpython_object.c: fix broken GetResist, fix comparison function.
plugins/cfpython/cfpython_party.c: fix comparison function.
plugins/cfpython/cfpython_region.c: fix comparison function.
plugins/common/plugin_common.c: object resistances are sint16.
plugins/common/include/plugin_common.h: object resistances are sint16.
Ryo 2006-02-14
Apply modified patch #1428048 (make the log line buffered) by Marc Lehmann.
---
common/init.c: In init_globals() switch the log file to line buffer mode.
Andreas Kirschbaum 2006-02-11
server/apply.c: In apply_scroll() do not identify the scroll if the player
lacks the literacy skill.
Andreas Kirschbaum 2006-02-10
Apply slightly modified patch #1428309 (code-cleanup: const, static) by
Stefan Huehner: add const/static to functions/variables. Remove some type
casts.
---
Affected files: common/{arch.c,glue.c,image.c,init.c,readable.c,time.c},
crossedit/stubs.c
include/{attack.h,libproto.h,object.h,sockproto.h,spells.h,sproto.h},
random_maps/{door.c,rproto.h,standalone.c,style.c},
server/{alchemy.c,apply.c,c_chat.c,c_misc.c,init.c,player.c,shop.c,spell_effect.c},
socket/{info.c,loop.c,request.c}
Andreas Kirschbaum 2006-02-10
server/c_wiz.c: make dm stats command print Int and damage. Rearrange output
to match the stat ordering.
lib/wizhelp/stats: document the stats command
lib/Makefile.am lib/Makefile.in: install the new help file
Brendan Lally 2006-02-10
Apply modified patch by Marc Alexander Lehmann to fix get_rangevector
functions on tiled maps.
---
server/map.c: Add helper function adjacent_map() to check if two maps are
adjacent. Modify get_rangevector(), get_rangevector_from_mapcoord(), and
on_same_map() to use this function.
Andreas Kirschbaum 2006-02-09
server/player.c: make a player's starting items be locked, so that they
can't accidentally drop and lose them without unlocking them first.
Brendan Lally 2006-02-09
Apply patch #1427979 (code-cleanup: add const, fix warnings) by Stefan
Huehner.
---
common/{anim.c,button.c,exp.c,friend.c,image.c,item.c,living.c,los.c,map.c,
object.c,player.c,quest.c,readable.c,recipe.c,region.c,treasure.c,utils.c},
include/libproto.h: Add "const" to pointer function parameters.
Andreas Kirschbaum 2006-02-09
Make create food spell work for all FOOD/DRINK objects. It used to fail for
objects where another object with the same name but type POISON does exist.
---
common/arch.c: Add new function find_archetype_by_object_type_name() to find
an archetype by item type and item name.
include/libproto.h: Add new prototype.
server/spell_effect.c: In cast_create_food() only search for objects of type
FOOD or DRINK.
Andreas Kirschbaum 2006-02-09
Added a "insert_into" command for DMs, to easily put items in other items.
Modified filse:
include/sproto.h
server/c_wiz.c
server/commands.c
Ryo 2006-02-08
server/main.c: Modify enter_exit() to see if player is in a transport,
and if so, remove him. Can happen if player uses word of recall
while in a transport.
MSW 2006-02-07
Regional jails.
---
common/region.c, include/libproto.h, map.h: parse jail entries, new function
get_jail_exit to return the exit to the local jail.
doc/Developers/regions: update
server/c_wiz.c, commands.c, include/sproto.h: add dm command, command_arrest
to jail players in the correct location.
lib/regions: add scorn and navar jails.
Brendan Lally 2006/02/08
Code that adds transports. Transports are described more in detail in
docs/Developers/objects.
---
loader.l: Add new move type ('boat'). Update move_name field to be aware of
this type.
common/object.c: Unrelated to transport, but more apparant with transports -
fix bug with insert_ob_in_map() and multipart objects - we now only
try to fix up map and coordinates if the provided coordinates are
out of the map. Before, function would always use the passed
map for multipart objects, which is incorrect if we have already
set valid coordinates.
doc/Developers/objects: Update notes for TRANSPORTS. Update move
information to include MOVE_BOAT.
include/define.h: Add type TRANSPORT. Add MOVE_BOAT.
include/player.h: Add transport field to player structure.
include/sproto.h: rebuilt.
server/apply.c: Add code to handle applying of transports. Update
apply_below to apply transport if player is on one.
server/attack.c: Update hit_map() to look for transports, and hit any
players with the damage.
server/c_object.c: Update put_object_in_sack() to also handle TRANSPORTS
so that code can be re-used.
server/move.c: Fix handling of multipart objects in move_object() -
old code didn't work right with multipart objects moving along seams
of tiled maps. Add code to move_ob() to update player map position
for all players in a moving transport.
server/player.c: Update move_player_attack() too check of player is
in tranport, and use that for map and location information. Update
move_player() to handle speed related issues with transports.
server/time.c: Add code to credit time back to TRANSPORT objects since
we remove time in move_player() for TRANSPORTS.
socket/item.c: Add add_object_to_socklist() so that same code isn't
reproduced in 3 different places in the file. Update draw_look()
to handle transports - send transport object itself, then objects
in transport. Update esrv_send_inventory() and esrv_send_item()
to use add_object_to_socklist(). Update esrv_get_ob_from_count() to look
for objects in transport if player is in transport.
socket/loop.c: Remove checking of pl->map status, since draw_client_map()
does that, and we need to handle if the player is in a transport.
socket/request.c: Handle map drawing if player is in a transport.
MSW 2006-02-06
movement type changes. Add move_allow field to explicitly allow certain
movement types on spaces. Add suppport for using string names instead
of numeric values to specify the MOVE_ values. Add code so when saving
data out, use string names instead of numeric value.
---
common/loader.l: Remove save_double(), as it isn't used by any code.
Add set_move() to set movement types from strings.
Add get_string_move_type, which takes integer movement type and
returns a string. Update load and save code to use these functions
respectively.
common/map.c: Change blocked_link() so that we only examine all the objects
on a space if there is something alive on the space or space is otherwise
blocked. There is no reason to examine all the objects on the space if
the object in question can move onto it.
Modify update_position() to use the move_allow field to clear bits
in the move_block field.
common/object.c: Add check in CAN_MERGE for move_allow. Add check for
move_allow in update_object to see if we should update the space or
not.
doc/Developers/objects: Update Movement code section to note use of using
strings to set movement types. Add note about move_allow. Section
about Transports added, but code isn't there yet.
include/object.h: Add move_allow to object structure.
MSW 2006-02-04
Fix attack messages containing random characters.
--
server/attack.c: In attack_message() always initialize variables.
Andreas Kirschbaum 2006-02-03
server/c_misc.c: fix bug 1413239 Server crash with "who" command output
using null map names
Brendan Lally 2006-02-03
include/newserver.h, server/login.c, socket/init.c, socket/loop.c:
drop any connection that fails to login successfully after
MAX_PASSWORD_FAILURES attempts (defaults to 5)
doc/Developers/protocol: document properly the byte counts of item flags,
and include documentation of the itemcmd setup option.
Brendan Lally 2006-01-30
Custom commands-related fixes.
plugins/cfpython/cfpython.c: fix custom command handling.
server/plugins.c: try all plugins for custom commands.
-----
Moved the global event 'LOGOUT' from when player actually disconnects to when
player logs out and is asked whether to play again or not.
Modified files:
server/apply.c main.c
Ryo 2006-01-15
socket/request.c: In ReplyCmd() make sure the reply does not cause a buffer
overflow.
Andreas Kirschbaum 2006-01-13
socket/request.c: add some better checks in addspell packet formation, fix a
crash bug.
Brendan Lally 2006-01-13
server/c_object.c: stop rename crashing if there is no name to rename to
when object is passed by number
--
server/c_object.c: allow the rename command to take tag of the item to be
renamed, so that clients can form rename commands properly.
Brendan Lally 2006-01-11
server/c_range.c: allow spells cast by number to also have options passed to
them
Changelog: Commit the changelog entry for the last commit.
Brendan Lally 2006-01-10
Spell listing support:
allow 'spell_paths' to be sent to requestinfo, reply with number:path
change return type of SP_level_spellpoint_cost to sint16
add spellmon as a setup value, if it is set;
send path attunement/repulsion/denial in stats
send data about spells in addspell packets
send updates to that data
Affected files:
common/living.c
crossedit/stubs.c
doc/Developers/protocol
include/funcpoint.h, newclient.h, newserver.h, player.h, sockproto.h,
sproto.h
random_maps/standalone.c
server/apply.c, login.c, spell_util.c, init.c, loop.c, request.c
--
server/c_range.c: allow cast/invoke and prepare commands to take item tags
as well as spell names
Brendan Lally 2006-01-09
Apply modified patch #1396303 (add setting to disable stealing from players)
by Terry Brown. It adds a new option "no_player_stealing" to the settings
file. If set, it prevents players from stealing from other players. It
defaults to ON.
--
doc/settings: Add documentation for new setting.
include/global.h: Add new field to settings structure.
lib/settings: Add new option no_player_stealing.
server/init.c: In load_settings() recognizes the new option.
server/skills.c: In attempt_steal() prevent stealing from PLAYER if option is
set.
Andreas Kirschbaum 2006-01-08
include/newserver.h, socket/{init.c,request.c}: Remove unused fields ext2 and
ext_title_flag from NewSocket structure.
server/skills.c: Fix/improve feedback messages for stealing skill.
plugins/cfpython/cfpython.c, server/plugins.c: Just whitespace changes to make
it conform to programming_guide.
plugins/cfpython/cfpython.c: Make sure context->options always is initialized.
server/main.c: Make code more readable; use snprintf where appropriate.
crossedit/Cnv/CnvPrompt.c: Make file compilable with Ansi C89 compiler.
Andreas Kirschbaum 2006-01-08
Global event Python scripts now are in subdirectories. This makes it easier to
distribute "Python packages". Modified file:
plugins/cfpython/cfpython.c
Ryo 2006-01-07
common/{item.c,treasure.c}, server/{apply.c,gods.c,spell_effect.c}: Use named
constants instead of numbers.
server/monster.c: Use correct field name in move_monster().
Andreas Kirschbaum 2006-01-07
Summon pets less often to the owner on tiled maps.
--
server/pets.c: In remove_all_pets() and pet_move() use on_same_map() to check
whether the pet is too far away.
Andreas Kirschbaum 2006-01-07
Change meaning of "items are on same map": for tiled maps now two objects are
also considered to be on the same map if they are on diagonally adjacent maps.
This solves the issue that a pet can be only one tile away from the owner but
still considered not to be on the same map.
--
common/map.c: In on_same_map() also consider diagonally adjacent maps.
Andreas Kirschbaum 2006-01-07
Added regions support for plugins. Affected files:
include/plugin.h sproto.h
server/plugins.c
--
Added regions to Python plugin. Affected files:
cfpython/include/cfpython.h cfpython_map_private.h
cfpython/cfpython.c cfpython_map.c cfpython_region.c Makefile.am Makefile.in
New files:
cfpython/include/cfpython_region.h cfpython_region_private.h
cfpython/cfpython_region.c
--
In Python's Object, Archetype is now a property and not a method. Affected files:
cfpython/include/cfpython_object_private.h
cfpython/cfpython_object.c
--
Cleaned obsolete include/plugproto.h.
Ryo 2006-01-07
Make teleporters hidden below the floor work again.
--
server/time.c: In move_teleporter() use object above floor instead above
teleporter to operate one.
Andreas Kirschbaum 2006-01-07
Fix issues with map tiling.
--
server/move.c: In move_ob() make sure inserting multi-part objects into tiled
maps work.
server/spell_attack.c: In cast_cone() insert spell effect at correct position
for tiled maps.
Andreas Kirschbaum 2006-01-07
common/map.c: Allow map tiling paths to be reletive.
server/main.c: Template maps: Impliment using fixed maps as templates, and
improve reletive path support for them.
Alex Schultz 2006-01-06
Make SIGNs (including Magic Mouths) trigger for DMs again. Does not reduce the
counter if in 'wizpass mode.
--
server/apply.c: In apply_sign() ignore DMs.
Andreas Kirschbaum 2006-01-04
server/spell_effect.c: Apply patch 1394861 - fixes magic walls. In conjuction
with archetype changes, look at the spell object (and not created wall)
to see if it blocks.
server/c_chat.c: Apply patch 1389113 - orcknuckle messages appear in
same window.
MSW 2006-01-01
Prefer marked item when throwing objects.
--
server/skills.c: In find_throw_ob() prefer marked item.
Andreas Kirschbaum 2006-01-01
Make EXITs affect DM players again.
--
common/object.c: In check_move_on() ignore only slow movement penalties for
DMs.
server/apply.c: In move_apply() ignore anything but EXITs for DM players.
Andreas Kirschbaum 2006-01-01
Make forked lightning correctly traverse tiled maps.
--
server/spell_attack.c: In forklightning() insert forked part into correct map.
Andreas Kirschbaum 2006-01-01
Properly unready forgotten spells. Prevents crashing the server if casting a
forgotten spell.
--
include/sproto.h: Add new prototype.
server/{apply.c,gods.c}: Call player_remove_range_ob() when forgetting a
spell.
server/player.c: Add player_remove_range_ob() to unready a given object.
Andreas Kirschbaum 2006-01-01
Improve the commands learn_spell and forget_spell: now these commands accept
partial spell names and print sensible error messages if they fail.
--
include/sproto.h: Remove prototype for now static function.
lib/wizhelp/{forget_spell,learn_special_prayer,learn_spell}: Update help files.
server/c_wiz.c: Add parameter op to get_spell_by_name() for printing error
messages to op. Allow partial matches for spell name. In
command_learn_spell_or_prayer() and command_forget_spell() report an error
to the player instead of an error message to the server log file.
Andreas Kirschbaum 2006-01-01
Fix reference-related crashes.
plugins/cfpython/cfpython.c
Ryo 2006-01-01
Apply modified patch #1391648 (FIX: new movement code and generators) by Lalo
Martins. This fixes bugs #1383398, #1383392, #1375643, #1372035, #1370409; all
bugs are related to objects stacking which should not stack.
--
common/map.c: In ob_blocked() consider tiles with living objects as blocked.
Andreas Kirschbaum 2005-12-31
Don't print "file not found" for global events.
plugins/cfpython/cfpython.c
Ryo 2005-12-31
Changed the way Python scripts are called. Now script don't share variables anymore.
Fix a memory leak.
plugins/cfpython/cfpython.c
Ryo 2005-12-28
Applied patch #1383359 (Fix death message) courtesy Anton Oussik
( https://sourceforge.net/tracker/index.php?func=detail&aid=1383359&group_id=13833&atid=313833 )
server/attack.c
Ryo 2005-12-27
server/skills.c: In steal() do not give exp for stealing from pets since this
can be exploited to gain exp over and over.
Andreas Kirschbaum 2005-12-23
server/c_party.c: fix crash with party obsolescence (->next on freed item). Added
get_firstparty() to get firstparty private var needed for plugin.
-------
Added party information to plugin functions. Plugins can change player's party
or marked item.
New files:
plugins/cfpython/include/cfpython_party.h cfpython_party_private.h
plugins/cfpython/cfpython_party.c
Modified files:
include/sproto.h: add new functions prototypes.
include/plugin.h: party-related defines
plugins/common/include/plugin_common.h: new party functions.
plugins/common/plugin_common.c: new party functions.
plugins/cfpython/include/cfpython.h: add new include.
plugins/cfpython/include/cfpython_object_private.h: marked item/party getter/setter.
plugins/cfpython/cfpython.c: add GetParties to Crossfire module.
plugins/cfpython/cfpython_object.c: MarkedItem setter, Party getter/setter.
server/plugins.c: new callbacks for party, marked item setter.
Ryo 2005-12-17
server/attack.c: Make spells destroy objects again.
Andreas Kirschbaum 2005-12-15
Moved natural dragon skin resistances from "statistics" to "resistances".
server/c_misc.c
Ryo 2005-12-13
Fix Windows compilation after Andreas's changes.
include/win32.h: define WIFEXITED and WEXITSTATUS.
Ryo 2005-12-11
Fix buffer overflows which can be triggered remotely.
--
common/porting.c: Re-implement open_and_uncompress(). The new implementation
should not contain any buffer overflows anymore. It also fixes possible
exploits due to funny characters in file names.
plugins/cfpython/cfpython.c: Use snprintf() to truncate long strings.
server/login.c: Reject invalid user names.
socket/loop.c: Make overflow detection work while reading from socket.
Properly re-allocate memory for listen command. Fix buffer overflow for too
long command names.
Andreas Kirschbaum 2005-12-11
lib/collect.pl.in: General cleanup - just whitespace changes.
Andreas Kirschbaum 2005-12-11
Prevent the map loader from crashing when loading maps with incorrect headers.
Changes are based on patch #1275563 by Kevin Rudat.
--
common/map.c: Do not dereference NULL value for map headers without parameter.
Andreas Kirschbaum 2005-12-11
Apply modified second part of patch #1275563 (Crossedit: fix map attributes
window) by Kevin Rudat: let crossedit save/load tiling paths as the mapmaker
entered them, rather than saving the normalized version.
--
common/map.c: Delay path normalization from map loading time
(load_map_header()) to access time (load_and_link_tiled_map()) if running
as editor.
Andreas Kirschbaum 2005-12-11
server/move.c: In move_ob() print error message instead of crashing: check
passed arguments before accessing them.
common/object.c, server/{pets.c,player.c,spell_attack.c,time.c},
socket/request.c: Properly check for P_OUT_OF_MAP after calling
get_map_flags().
Andreas Kirschbaum 2005-12-10
common/path.c: add missing global.h include.
make_win32/crossfire32.dsp: add path.c and some headers.
Ryo 2005-12-09
Apply slightly modified first part of patch #1275563 (Crossedit: fix map
attributes window) by Kevin Rudat: make the map attributes dialogs work again.
--
crossedit/Attr.c: Remove code to handle map attributes dialogs.
crossedit/Crossedit.ad, crossedit/Crossedit.ad.h: Update X11 resources.
crossedit/Defines.h: Add typedef for MapAttr.
crossedit/{Edit.c,Edit.h}: Remove/update code to handle map attributes
dialogs.
crossedit/Makefile.am: Add new files MapAttr.c and MapAttr.h.
crossedit/Makefile.in: Rebuilt.
crossedit/{MapAttr.c,MapAttr.h}: New functions containing code to handle the
main map attributes dialog.
crossedit/Cnv/CnvPrompt.c: Convert CnvPromptStr into char array.
Andreas Kirschbaum 2005-12-09
Remove a strange feature of normalize_path(): it did convert the path
"<path1>//<path2>" into "/<path2>". Also add a stand-alone application for
regression testing this function, and fix a few issues with ".." in path name.
--
common/path.c: New file containing the modified implementation and the
stand-alone application.
include/path.h: Prototypes for path.c.
server/main.c: Remove implementation; call renamed function.
common/Makefile.am, include/Makefile.am: Add new files.
common/Makefile.in, include/Makefile.in: Rebuilt.
Andreas Kirschbaum 2005-12-08
server/ban.c: General cleanup - whitespace changes, rename variable names.
Should not affect function.
server/apply.c: In player_apply() do not consider DM PLAYERs to be DM-created
items. This prevents the server from destroying the player object (and
crashing shortly afterwards).
Andreas Kirschbaum 2005-12-07
Apply slightly modified patch #1293744 (Inversed ban entries) by Thomas
Equeter.
--
server/ban.c: In checkbanned() recognize '~' prefix to allow entries. Also fix
possible buffer overflow.
Andreas Kirschbaum 2005-12-07
Apply modified patch #1293774 (Kick banned hosts at once) by Thomas Equeter:
disconnect new connection for banned host right after connecting. Also add
support for user name in ban files.
--
lib/ban_file: Update comments and examples to new syntax.
server/ban.c: Allow a NULL user name to check for host name only.
server/c_misc.c: In receive_player_password() check for banned user name.
server/player.c: In add_player() remove check for banned host - this was
already done if we reach this state.
socket/init.c, include/sockproto.h: Pass ip address as a string.
socket/loop.c: In doeric_server() check for banned host after a new connection
was accepted.
Andreas Kirschbaum 2005-12-07
Apply patch #1371956 (code cleanup patch) by Stefan Huehner: fix old-style
function declarations and prototypes to proper Ansi C syntax. This patch
allows the compiler to check function arguments and also removes some warnings
when compiling with -Wstrict-prototypes.
--
All affected files: Convert "void foo()" into "void foo(void)".
Andreas Kirschbaum 2005-12-06
Fix bug #1173563 (Creator created Bombs malfunction): Creators and Converters
now copy items from inventory. Fallback (for empty inventory) is the old
behavior to create the new item from other_arch. If the inventory contains more
than one item, a random one is picked.
--
common/loader.l: Mark inventory of CREATOR and CONVERTER as
FLAG_CONTENT_ON_GEN.
common/loader.c: Rebuilt.
common/object.c: Update x/y/map for non-head parts to make inserting multipart
objects via insert_ob_in_ob_at() work.
server/apply.c: In convert_item() consider inventory for item to create.
server/time.c: In move_creator() consider inventory for item to create. In
process_object() ignore item flagged as FLAG_IS_A_TEMPLATE. (Otherwise
bombs in inventories would explode prematurely.)
Andreas Kirschbaum 2005-12-05
New plugin property for player: marked item, added Python wrapper.
Modified files:
include/plugin.h
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
server/plugins.c
plugins/cfpython/cfpython.c: fix invalid reference management. Don't return NULL but Py_None.
Ryo 2005-12-04
Fix bug #1372194 (stairways now block movement).
--
random_maps/exit.c: In unblock_exits() check correct field move_block to find
blocking exits.
Andreas Kirschbaum 2005-12-03
server/apply.c: In move_apply() properly decrement recursion counter.
Andreas Kirschbaum 2005-12-02
server/spell_attack.c: Add some missing P_IS_ALIVE checks - these weren't
needed in the past because living objects would block movement -
with new movement code, isn't always the case.
server/time.c: Fix player movers so that if the victim doesn't have any
movement type, we move it.
MSW 2005-11-30
common/time.c: In move_teleporter() and move_player_mover() do not affect DMs
if FLAG_WIZPASS is set.
common/object.c: In check_move_on() do not affect DMs if FLAG_WIZPASS is set.
This prevents DMs from triggering traps when walking over them.
Andreas Kirschbaum 2005-11-30
common/map.c: Replace code with OB_TYPE_MOVE_BLOCK - effectively same as what
it was.
include/define.h: Update OB_TYPE_MOVE_BLOCK so that spaces that don't block
any type of movement doesn't block objects that also don't have movement.
This fixes cases of gates not pushing objects off them.
server/c_party.c: Remove double use of ->next pointer/loop in
confirm_party_password() - fixes crash and likely makes setting party
password work more reliably.
MSW 2005-11-29
common/object.c: Fix wrong comparision operator in free_object2() to make
monsters drop loot again.
Andreas Kirschbaum 2005-11-28
Basically added a parameter to 'skills' command to filter skills. And one char/const char* fix.
common/anim.c: use const char* for find_animation.
include/libproto.h: find_animation uses a const char*.
include/sproto.h: fix prototype.
server/c_wiz.c: send parameter to show_skills.
server/skill_util.c: add search parameter to show_skills command.
Ryo 2005-11-27
plugins/cfpython/cfpython_map.c: use wrappers instead of direct property access.
plugins/common/include/plugin_common.h: new wrappers for maps.
plugins/common/plugin_common.c: new wrappers for maps.
Ryo 2005-11-26
plugins/cfpython/Makefile.in: rebuilt.
Andreas Kirschbaum 2005-11-23
Plugins can now get archetypes. Added a check in cfapi_object_set_property to
prevent changing archtypes.
Fixed some Python bugs related to map properties.
Added Crossfire.GetArchetypes and Crossfire.GetMaps to get all archetypes/maps.
Modified files:
include/plugin.h sproto.h
plugins/cfpython/include: cfpython.h cfpython_map_private.h cfpython_object_private.h
plugins/cfpython/cfpython.c cfpython_map.c cfpython_object.c
server/plugins.c
New files:
plugins/cfpython/include/cfpython_archetype.h cfpython_archetype_private.h
plugins/cfpython/cfpython_archetype.c
Ryo 2005-11-20
server/shop.c: adjust minimum value that shop_specialisation_ratio can
return to 0.1. This should stop some prices being exceptionally high.
Brendan Lally 2005-11-19
Commit for new blocking code. Not going to dictate all the changes -
but will outline the broad points. Note also that the
doc/Developers/objects is updated and goes into more details also.
- check for P_WALL no longer used - instead, need to use GET_MAP_MOVE_BLCOK
and check against movement type of objects.
- arch_blocked() changed to ob_blocked(), now takes object. Needed because
just looking at archetype move_ values is no longer sufficient.
- find_first_free_spot() changed to take object, since it just calls
arch_blocked()
- FLAG_FLYING removed, now in move type.
- walk_on/walk_off/fly_on/fly_off removed - now based on move_on and
move_off fields.
- Map space structure extended to hold the move_on/move_off, etc
values so that we can shortcut some processing by not having to
check every object on the space when something enters it if
move_on isn't set.
- archetypes recollected - boulders needed move_walk to properly trigger
buttons.
- Note that the new plugin code has to be fixed up for the new movement
code. Look for FIXME in plugins/cfpython/cfpython_object.c
MSW 2005-11-15
Apply patch 1352485 newpickup rings/amulets courtesy anonymous user.
include/define.h: add PU_JEWELS
server/c_object.c: handle new type.
server/player.c: handle new type.
Ryo 2005-11-12
server/plugins.c: Properly update client view after removing objects.
Andreas Kirschbaum 2005-11-10
server/plugins.c: Properly update client view after changing object names.
server/plugins.c: Return an empty string if an object has no message. This
makes Object.Message() always return a string object, which removes the
need for special case code to handle empty messages.
include/sproto.h, server/monster.c: Declare parameter of communicate() as
"const".
Andreas Kirschbaum 2005-11-09
Implement new functions for the Python plugin: Object.WeightLimit,
Object.InsertInto(Object), Object.NamePl. Change Object.Name to set both name
and name_pl. This should prevents scripts from failing to set name_pl.
--
plugins/cfanim/include/cfanim_proto.h, plugins/common/include/plugin_common.h:
Add prototypes.
plugins/cfpython/cfpython_object.c: Add callback functions for new Python
functions.
plugins/cfpython/include/cfpython_object_private.h: Add prototypes for
callback functions. Add callback functions to Python object descriptors.
plugins/common/plugin_common.c: Add missing helper functions.
Andreas Kirschbaum 2005-11-09
server/shop.c: When we are counting unpaid items and their values, to check
if a player may leave a shop, make certain that we count all of them, and
don't stop when we have dropped into a container (such as a spellbook)
Brendan Lally 2005-11-09
plugins/cfpython/cfpython.c: Add missing 'PyType_Ready' calls for map and player,
failure to do so crashes with Python objects destructors set to 0.
Ryo 2005-11-07
server/spell_effect.c: fix WoR not executing on cursed ground with WIZCAST set.
Ryo 2005-11-06
server/skills.c: In do_throw() abort processing if the thrown object was
destroyed before it gets its first move.
Andreas Kirschbaum 2005-11-06
server/build_map.c: test FLAG_IS_FLOOR too, type == FLOOR is not always enough.
Ryo 2005-11-05
server/shop.c: In value_limit() return the unmodified item price if not in a
shop or not for a player.
Andreas Kirschbaum 2005-11-05
plugins/cfpython/cfpython.c: added GetPrivateDictionary and GetSharedDictionary
methods to keep data between runs and share data between scripts.
Ryo 2005-11-05
plugins/Makefile,plugins/cfanim/Makefile: Remove files to be generated by
configure.
server/main.c: Fix possible out-of-bounds array access.
Andreas Kirschbaum 2005-11-05
Fix case for [sg]etReturnValue. Add compare operator for object and map (of course
only == is relevant).
Modified files:
plugins/cfpython/include/cfpython_map_private.h
plugins/cfpython/include/cfpython_object_private.h
plugins/cfpython/cfpython.c
plugins/cfpython/cfpython_map.c
plugins/cfpython/cfpython_object.c
Ryo 2005-11-05
aclocal.m4, configure, utils/config.guess, utils/config.sub, utils/ltmain.sh,
*Makefile.in, plugins/cfanim/Makefile, plugins/Makefile: Rebuilt.
lib/Makefile.am: Add template-maps to list of directories to create while
install.
Andreas Kirschbaum 2005-11-05
lib/wizhelp/reset: document use of '.' as an argument
Brendan Lally 2005-11-05
random_maps/treasure.c: Fix out-of-bounds array access if place_chest() cannot
find a free spot to place a new chest.
Andreas Kirschbaum 2005-11-01
Fix bug #1082534 (monks with weapons): Now monks properly are denied from
using weapons. Only newly created monks are affected since it now relies on a
force named "no weapon force" in the player's inventory. The problem was that
become_follower() assumed it was the only means do allow/disallow weapon use.
--
server/gods.c: Do not let the god allow using weapons if a "no weapon force"
object is present in the player's inventory.
lib/treasures: add force to monk's treasure list.
Andreas Kirschbaum 2005-11-01
Fix bug #815620 (CFPython.SetQuantity() doesn't update client): now notifies
the client after changing nrof and/or weight.
--
server/plugins.c: Re-calculate player's weight and send item change
notifications in cfapi_object_set_property().
Andreas Kirschbaum 2005-11-01
Improve newpickup command: add new flag PU_NOT_CURSED to ignore cursed items.
--
include/define.h: Add flag #define.
server/c_object.c: Add "notcursed" option to pickup command.
server/player.c: Respect new flag in check_pickup().
Andreas Kirschbaum 2005-11-01
plugins/cfanim/cfanim.c: remove printf for properties. Export functions for DLL
for Win32.
plugins/cfanim/cfanim.h: remove obsolete definitions (see plugin_common.h).
plugins/cfanim/cfanim_proto.h: fix definition for exported functions.
plugins/common/plugin_common.c: add gettimeofday for Win32.
plugins/common/include/plugin_common.h: add gettimeofday for Win32.
Ryo 2005-11-01
server/plugins.c: Print error message for event_xxx objects with missing or
invalid parameters. Also remove the affected object to prevent multiple
error messages.
Andreas Kirschbaum 2005-11-01
Add new function object_get_env_recursive() to find the outermost environment
object for a given object.
--
common/object.c, include/libproto.h: Add function.
server/{rune.c,spell_attack.c}: Use function where appropriate.
Andreas Kirschbaum 2005-11-01
General cleanup of weather code.
--
server/weather: Declare many functions and variables as "static", add
prototypes for affected functions. Declare some variables as "const".
include/sproto.h: Remove prototypes for now static functions.
include/tod.h: Add "const" to strings.
Andreas Kirschbaum 2005-11-01
Fix bug #1102975 (Bronze items not keeping their + in alchemy): the problem
was that a formula for full_helmet did exist but not for b_full_helmet. Since
both helmet's names are "full helmet", the recipe was selected even if using
the ingredient b_full_helmet. This fix adds new formulae for alternative
archetypes with the same name as the base object, and makes the server code
select the matching formula from multiple arch names in the "arch" field.
--
common/readable.c: Use new fields to build messages.
common/recipe.c: Make alchemy work for recipes with multiple base archetypes.
include/{libproto.h,sproto.h}: Update prototype.
include/recipe.h: Split string field arch_name into string list fields
arch_name and arch_names.
lib/formulae: Add archetype names to formulae for all items with same name as
the base object. Also fix a few name mismatches that prevent any object
from matching, and change transmution formulae to normal formulae where
base name does not match archetype name.
server/alchemy.c: Disable debugging code. Make alchemy work for recipes with
multiple base archetypes.
Andreas Kirschbaum 2005-10-31
server/c_wiz.c: Don't crash on "create" a living thing that has some part
out of the map. Forbid removing a 'PLAYER' object.
Ryo 2005-10-31
random_maps/style.c: Pass correct sorting function to qsort(): the sorted
array contains pointers to strings, not strings.
Andreas Kirschbaum 2005-10-29
Fix bug #1236244 (Exp from scrolls): reading a scroll of charm monsters or
meteor swarm now gives exp for use magic item, not summoning or pyromancy.
--
server/spell_attack.c: In mood_change() use skill from scroll, not from spell.
In move_swarm_spell() use the spell "owner" as the object casting the
spell.
Andreas Kirschbaum 2005-10-29
include/config.h: DEBUG just been defined, no need to define it again.
include/win32.h: typedef for socklen_t.
random_maps/random_map.c: generate_random_map can use a const char*.
random_maps/rproto.h: fix generate_random_map definition.
server/plugins.c: EVENT_CRASH doesn't really need a parameter, especially if
not initialized :)
Ryo 2005-10-29
Prevent problems (crashes) for large item piles. Now limit nrof to less than
2^31.
--
common/object.c: In CAN_MERGE() pretend that the objects are not mergeable if
the nrof sum would overflow.
common/porting.c: Fix buffer overflow for large numbers in ltostr10(). Also
make n=1L<<31 work correctly.
plugins/cfpython/cfpython_object.c: In Object_SetQuantity() raise an exception
for negative nrof values.
plugins/common/plugin_common.c: Reject negative nrof values in
cf_object_set_nrof().
plugins/cfanim/include/cfanim_proto.h, plugins/common/include/plugin_common.h:
Update prototype.
server/plugins.c: Treat negative nrof as nrof=0 when setting
CFAPI_OBJECT_PROP_NROF property.
server/time.c: In move_duplicator() limit nrof of created items.
Andreas Kirschbaum 2005-10-29
Fix compiler warnings. Most changes do not change the program (remove unused
variables, convert "if(x = y)" into "x = y; if(x)"); a few actually fix
(possible) problems (fix uninitialized variables, fix printf format
specifiers, fix mismatches between signed and unsigned variables, add missing
return and default statements).
--
Affected files:
common/{arch.c,init.c,item.c,map.c,object.c,re-cmp.c,readable.c,region.c,
shstr.c}, crossedit/{Attr.c,Edit.c,Cnv/CnvPath.c}, include/sproto.h,
plugins/cfanim/cfanim.c, plugins/cfpython/{cfpython.c,cfpython_object.c},
plugins/cfpython/include/{cfpython_map_private.h,cfpython_object_private.h},
random_maps/{rogue_layout.c,special.c,square_spiral.c},
server/{apply.c,attack.c,build_map.c,c_misc.c,c_object.c,c_party.c,init.c,
main.c,monster.c,pets.c,player.c,plugins.c,shop.c,skill_util.c,spell_util.c,
weather.c}, socket/{loop.c,request.c}
Andreas Kirschbaum 2005-10-28
Fixes my previous commit. Should now properly allocate/deallocate the
faces_sent array.
--
common/player.c: Free faces_sent in free_player().
include/newserver.h: Add field faces_sent_len to NewSocket struct.
server/player.c: Allocate and copy faces_sent in add_player().
socket/init.c: Use faces_sent_len in InitConnection().
socket/loop.c: Initialize faces_sent_len in doeric_server().
Andreas Kirschbaum 2005-10-28
The archetypes now contain more than MAXFACENUM (5000) faces. The following
changes remove the fixed limit of the number of faces. The server now
allocates enough memory to handle all defined faces.
include/newserver.h: Remove MAXFACENUM since it is not used anymore. Change
NewSocket.faces_sent from array into pointer.
socket/{init.c, loop.c}: Allocate/initialize NewSocket.faces_sent.
socket/request.c: Remove safeguard/error message since it depends on
MAXFACENUM.
Andreas Kirschbaum 2005-10-24
Code improvements:
common/image.c: Declare some variables and functions as static or const; add
safeguards while loading config files; remove support for numeric face
names (no active archetype or map does use it); in free_all_images()
deallocate memory allocated for smoothing.
crossedit/xutil.c: Remove assignment to nrofpixmaps since ReadBmapNames()
already sets this variable.
include/{global.h, libproto.h, loader.h}: Remove now static variables and
functions.
Andreas Kirschbaum 2005-10-24
common/readable.c: Fix out of bounds access to max_titles[] in
init_book_archive().
common/image.c, include/define.h, include/global.h: Remove unused variables
potion_face and POTION_FACE_NAME.
common/image.c, include/global.h: Remove unused variable blank_look.
Andreas Kirschbaum 2005-10-24
Make shout command work in old socket emulation mode.
common/commands.c: Sort all command arrays in init_commands().
Andreas Kirschbaum 2005-10-23
common/item.c - fix spelling mistake
common/utils.c include/libproto.h - new function make_list_like that takes a
string of comma deliminated words, and puts an and in the right place.
include/sproto.h server/apply.c server/shop.c -new function can_pay - checks
that a player can pay for every unpaid item that they are holding before
starting to purchase them.
Brendan Lally 2005-10-21
plugins/cfpython/{Makefile.in, Makefile.am}, plugins/cfpython/include/cfpython.h:
Corrected improper regeneration of the function prototypes using
"make proto" for the cfpython plugin.
Gros 2005-10-20
plugins/cfpython/{cfpython.c, cfpython_object.c, cfpython_map.c},
plugins/cfanim/cfanim.c, plugins/common/plugin_common.c, server/plugins.c:
Added support for execution of python_init.py upon initialization of cfpython.
Reduced the console spam produced by various leftover debugging messages.
Gros 2005-10-19
plugins/common/include/plugin_common.h: add CF_PLUGIN macro.
plugins/cfpython/cfpython.c: add CF_PLUGIN to exported functions.
plugins/cfpython/include/cfpython_proto.h: fix prototypes.
Ryo 2005-10-19
plugin/*, plugin_logger/*, plugin_anim/*, plugins/*,
server/{apply.c, attack.c, c_chat.c, c_object.c, c_wiz.c, gods.c, main.c,
monster.c, player.c, skills.c, swap.c, time.c, timers.c}, include/{plugin.h,
sproto.h}: Replaced the old plugin interface by the 2.0 one.
Upgraded the Python and Animator ones to the new interface.
Removed obsolete Logger plugin.
Gros 2005-10-19
server/main.c: Template Maps: Allow %x, %y, and %n in the path to respectively be
replaced with, the x coord, the y coord, and the parent map name.
Alex Schultz 2005-10-18
server/{main.c, swap.c}, common/map.c, include/{libproto.h, map.h}: Add support
for random template maps (still need to document, and still need to add support
for template maps created from non-random templates)
Alex Schultz 2005-10-16
common/info.c: fix -m1 crashing (34 chars, not 32!), and -m2 crashing under Win32.
include/sproto.h: fix cast_change_ability definition.
server/gods.c: fix cast_change_ability to hide the 'can't recast' message.
server/spell_effect.c: don't stack word of recall forces. Add a 'silent' parameter
to cast_change_ability to not display 'can't recast xx while xx is in effect'
server/spell_util.c: fix cast_change_ability call.
Ryo 2005-10-16
include/{global.h, sproto.h, config.h}, server/init.c, common/init.c, lib/Makefile.in:
Add directory in preparation for template (where the template can optionally be
from the random map generator) maps.
Alex Schultz 2005-10-15
server/c_wiz.c: make reset command show the names of other players on the
map when it fails.
Brendan Lally 2005-10-14
server/c_party.c: fix another obscure party crash bug
Brendan Lally 2005-10-12
server/c_party.c: fix a couple of loops that could crash under certain circumstances
Brendan Lally 2005-10-11
common/object.c: use canonical_key instead of key, else == always fails.
server/apply.c: drop "on_use_yield" item if required when applying potion, food or poison.
This lets players get empty bottles/vials/... when using potions.
Ryo 2005-10-09
Added GetMarkedItem to Python, cleaned compilation warnings.
plugin/plugin_python.c
plugin/include/plugin_python.h
Moved gps code to Python script, thus cleaning relevant code from server core.
common/item.c: remove item description.
include/define.h: remove gps define.
server/apply.c: remove gps function.
Ryo 2005-10-08
Prevent objects from losing inventory when thrown.
include/libproto.h, common/object.c: Add new parameter "free_inventory" to
free_object(). Is set, free inventory as well instead of dropping it on the
ground.
common/object.c: In get_split_ob() prevent inventory of splitted object to be
dropped.
Andreas Kirschbaum 2005-10-07
common/object.c: Use object_create_clone in get_split_ob; Fixes things inside
of objects disappearing when throwing.
Alex Schultz 2005-10-7
Make damage done by area spells not depend on monster size.
include/sproto.h, server/attack.c: Add additional parameter "full_hit" to
hit_map() and hit_player(). If set, do full damage, if unset scale down by
monster size.
server/{apply.c, attack.c, disease.c, monster.c, player.c, rune.c,
spell_attack.c, spell_effect.c, spell_util.c, time.c}: Change callers to set
"full_hit" parameter according to the attack used.
Andreas Kirschbaum 2005-10-07
common/{arch.c, object.c}, crossedit/{Attr.c, Defines.h, Edit.c},
include/libproto.h, server/{plugins.c, time.c}: Rename functions with
mixed-case names to lower case only.
crossedit/Defines.h: Remove prototypes for nonexisting functions.
Andreas Kirschbaum 2005-10-07
server/apply.c: In prepare_weapon() do not lose a reference to the item name.
Andreas Kirschbaum 2005-10-06
include/sproto.h, server/shop.c - make value_limit static, change its
arguments to add some checking for NULL pointers
Brendan Lally 2005-10-06
server/monster.c: In move_monster() prevent hp/sp overflows for monsters with
very high maxhp/maxsp and very high regeneration rates.
Andreas Kirschbaum 2005-10-05
common/treasure.c - prevent crashes with some broken treasure lists.
Brendan Lally 2005-10-05
server/shop.c: convert val to sint64 - compilation issues with Win32. Checked with
patch author that it's fine.
Ryo 2005-10-04
common/map.c - fix output names in new_save_map
--
server/shop.c - don't assume that shop_specialisation_ratio only gets passed
items with valid types.
--
common/map.c - /actually/ fix pointer issue
--
common/map.c - fix potential issue with NULL pointer
Brendan Lally 2005-10-04
common/map.c - fix an inequality in for loop - not sure if this actually
fixes anything of note, but the previous form was definatly wrong.
common/item.c - big item type table, function to deal therewith
common/loader.l - add player_sold flag
common/map.c - shop related header parsing
include/define.h - define typedata, player_sold flag and some new shop flags
include/libproto.h - define typedata related functions
include/map.h - define new shop headers
include/sproto.h - define new functions in shop.c
server/apply.c - Change shop mat usage message
server/c_object.c - Change display of price estimates
server/shop.c - new functions describe_shop, value_limit, shopkeeper_approval,
shop_greed, shop_specialisation_ratio, substantially alter query_cost_string
and query_cost to make use of these
server/skill_util.c - make bargaining a directly usable skill
doc/Developers/shops - document the above
doc/Developers/maps-technical - add shopheader names, and reference to shops doc
Brendan Lally 2005-10-03
server/disease.c: check for value <= 0 as some diseases get dumped on a map
with value == 0 (negative values will eventually underflox, but it'll take time).
Apply patches courtesy quisar.
#1307880 Allow to add a param to the cast command
#1306987 Allow to summon lower level pet monsters
Modified files:
include/player.h sproto.h
server/c_range.c login.c pets.c player.c spell_util.c
Ryo 2005-10-01
common/button.c: explicit cast of stats.food to uint32 when used as sacrifice count.
common/image.c: strlen returns size_t. Remove unused FindFaceName.
common/object.c: obj::count is tag_t. Can't decrease item's nrof by a negative value.
include/libproto.h: fix prototypes.
include/player.h: weight and weight_limit are sint32, so last_ should be the same.
include/sproto.h: nrof is uint32, not int.
server/apply.c: nrof is uint32, can't eat a negative number of items. obj::count is tag_t.
server/c_misc.c: remove unused variable.
server/c_object.c: use uint32 instead of int to specify number of items to drop/put.
server/plugins.c: strlen returns size_t.
server/spell_effect.c: distances are uint32 and not int.
socket/loop.c: remove now obsolete cast of -1 to uint32 for last_weight.
socket/request.c: explicit cast of weight_limit to sint32 when comparing to last_weight.
Ryo 2005-10-01
plugin/plugin_python.c: added CF[SG]etWeightLimit.
plugin/include/plugin_python.h: function prototypes.
server/plugins.c: update player inventory if item teleporter from that.
Ryo 2005-09-30
lib/collect.pl.in: can now use lines like "attacktype fire electricity poison" instead
of hard to remember numbers. Numbers are still supported, you can even mix both.
Ryo 2005-09-28
server/spell_effect.c: In recharge() verify that the object to charge is in
fact a wand or staff.
Andreas Kirschbaum 2005-09-27
Changed quest behaviour, now uses its own archetypes. Can change npc/magic ear
text based on quest status.
Warning: not totally tested. Quest start/end works, rest needs some tweaks & fixes.
common/quest.c: new functions, some cleaning.
doc/Developers/quest: update (partially).
include/define.h: new item types.
include/libproto.h: new definitions.
server/c_misc.c: update.
server/monster.c: take into account quest overrides.
server/time.c: markers now start/end tasks if needed.
Ryo 2009-09-25
server/c_party.c - fix another party list corruption bug, and a couple of
possible infinite loops
Brendan Lally 2005-09-25
Clean some compilation warnings.
common/map.c: remove unused variable.
common/readable.c: strlen returns size_t.
include/object.h: objectlink id should be tag_t since it's the item's "count" field.
server/c_misc.c: strlen returns size_t.
server/c_object.c: strlen returns size_t.
server/c_party.c: remove_party returns void, value not used anyway. Fordward declaration.
server/c_wiz.c: settings.worldmaptiles[x|y] is uint32.
server/gods.c: strlen returns size_t.
server/hiscore.c: maxchar is const.
server/skill_util.c: strlen_returns size_t.
Ryo 2005-09-25
include/player.h sproto.h
server/attack.c c_party.c player.c
Fix several bugs in patch #1194964, including one that caused segfaults
one that corrupted the party list, and one that broke party password recognition
remove partyid from the party struct - use party pointers instead
remove functions find_party() and find_party_struct() - no longer needed or used.
make form_party a local function - it is only used by the party form command,
and can't easy be used safely elsewhere.
Brendan Lally 2005-09-25
server/build_map.c: remove unused variable.
--
Commit patch #1194964 (party obsoletion) by cavesomething.
Affected files:
include/player.h sproto.h
server/apply.c attack.c c_party.c login.c main.c pets.c player.c
skill_util.c skills.c spell_util.c
--
include/win32.h: turn off harmless warning.
Ryo 2005-09-24
Fix bug #744327 ('immortal' monsters): Prevent monsters from loosing hp or sp
if they have negative Con/Pow. For hp, this made some monsters unkillable
because they eventually had negative hp.
--
server/monster.c: In move_monster() do gain hp/sp only if Con/Pow is positive.
Andreas Kirschbaum 2005-09-24
Update client inventory view for players dieing in a shop with unpaid items in
inventory.
--
server/player.c: Send removed item to client in remove_unpaid_objects(). Do
not call remove_unpaid_objects() multiple times in kill_player().
Andreas Kirschbaum 2005-09-17
Allow directors/movers to specify a specific arch/name/race.
include/sproto.h: Add should_director_abort to here.
server/{apply.c, time.c}: Add should_director_abort for the logic code
for this change, and add checks for it in director/mover code.
doc/Developers/objects: Add documentation for directors including this
change, and update mover documentation.
Alex Schultz 2005-09-15
Make untriggered TIMED_GATEs work again.
server/apply.c: Clear object speed only for connected objects.
Andreas Kirschbaum 2005-09-13
This change is mostly cosmetic and a preparation for the new movement
type code. Basically, it just changes the old object movement_type
field to attack_movement. This makes sense because that is what that
field is called in saved and loaded objects/archetypes, and thus
frees up that name for the new movement code.
--
common/button.c: field name change
common/loader.{cl}: field name change
doc/Developers/objects: Add section on new movement types, update old
documentation to note it is attack_movement and not movement_type
field that is important.
include/object.h: field name change.
server/attack.c: field name change.
server/monster.c: field name change
server/pets.c: field name change
server/skills.c: field name change.
server/spell_attack.c: field name change
server/spell_effect.c: field name change
MSW 2005-09-12
Allow a DM to cast spells and prayers in no-magic/no-prayer areas. Add new
command "wizcast" to toggle this setting.
common/loader.l: Set/reset FLAG_WIZCAST for flag "wiz".
common/loader.c: Rebuilt
include/define.h: Add new flag FLAG_WIZCAST; remove unused flag
FLAG_NO_PRETEXT.
lib/Makefile.am: Add new help file for wizcast.
lib/Makefile.in: Rebuilt.
plugin_animator/plugin_animator.c: Set/reset FLAG_WIZCAST in animate_one().
server/apply.c: Always allow FLAG_WIZCAST to enchant weapons and armour.
server/c_misc.c: Add new function command_wizcast().
server/c_wiz.c: Set/reset FLAG_WIZCAST when entering/leaving DM mode.
server/commands.c: Add "wizcast" command.
server/spell_effect.c: Always allow FLAG_WIZCAST to use the spell probe.
server/spell_util.c: Always allow FLAG_WIZCAST to cast spells and prayers.
Andreas Kirschbaum 2005-09-09
server/monster.c: Set FLAG_READY_SKILL in monster_check_apply() for monsters
with skills. This fixes hill giants and trolls not throwing boulders
anymore.
server/monster.c: Add missing "break" statement in monster_can_pick(). It did
prevent some monsters from picking up scrolls.
Andreas Kirschbaum 2005-09-08
common/{anim.c, image.c, los.c, map.c, porting.c, treasure.c},
include/define.h, random_maps/treasure.c,
server/{apply.c, c_misc.c, c_object.c, c_wiz.c, commands.c, daemon.c,
hiscore.c, init.c, login.c, player.c, plugins.c, resurrection.c, weather.c},
socket/{init.c, item.c, loop.c, lowlevel.c}: Use LOG() for error messages and
debug output instead of stdout/stderr. Include filename in error messages.
server/resurrection.c: Fix error message in read_player().
Andreas Kirschbaum 2005-09-04
socket/item.c: Make selecting objects from ground view work again.
common/object.c: Fix update of player's ground view in insert_ob_in_map().
Previously the ground view was not updated after applying exits or after
being hit by a spell.
Andreas Kirschbaum 2005-09-03
Fix bug #1102991 (Duplicate grapical display of the same monster):
doc/Developers/protocol: Change semantics of map_scroll command to what the
server actually does: big faces outside the viewable area are cleared. Add
newmap command.
include/newserver.h: Increase MAX_HEAD_OFFSET to 8 (the size of a Greater
Demon).
socket/request.c:
MapRedrawCmd(): Disable mapredraw command; it is now just ignored.
MapNewmapCmd(): Clear map state before sending newmap command.
check_head(): Remove redundant code.
update_space(): Move invariant condition out of loop to speed it up. Fix
uninitialized variable. Remove redundant condition. Fix off-by-one array
access.
update_smooth(): Remove unused code. Properly send cleared big faces.
draw_client_map(): Remove duplicate check. Properly clear newly visible
area when scrolling the map.
Andreas Kirschbaum 2005-08-31
common/{loader.l, map.c, object.c}, include/{define.h, map.h, object.h}:
Accelerate map loading (a lot) and map saving (a bit) codes to improve map
transition experience.
common/loader.c: Rebuilt.
Add (slightly reformatted) patch #1276121 (Crossedit: handle big faces) by
Kevin Rudat:
crossedit/CrEdit.c: UpdatePosition(): Use new drawing subroutines.
crossedit/CrFace.c: DrawObject(): Use new drawing subroutine.
crossedit/CrList.c: Redisplay(): Use new drawing subroutine.
crossedit/CrUtil.c, crossedit/CrUtil.h: Remove FaceDraw(), add DrawFacePart()
and DrawPartObject().
crossedit/png.c: Upload the whole image, not just the top-left corner.
Andreas Kirschbaum 2005-08-30
Fix bug #1256173 (Magic drain not exploding head):
server/spell_effect.c: Prevent mana transfer to/from caster himself; also
create fireball for overcharges resulting from sucking mana.
Andreas Kirschbaum 2005-08-30
Fix bug #1059537 (Chainmail mutations):
common/loader.l: Remove code that "fixes" broken item names by removing a
leading material name. This effectively renames "mithril chainmails" into
"chainmails".
common/loader.c: Rebuilt.
Andreas Kirschbaum 2005-08-29
Fix player weapon speed/speed. There are a few bugs this fixes:
1) when player hit something, a has_hit field was set to true, to denote
they hit something and to use weapon speed. However, this was only
cleared when player issued a command. Thus, if you are running
and hit something, you'd continue at weapon_speed pace until you
needed to change direction.
2) Because has_hit was used, this basically put in a 1 tick lag - you'd hit
something, but not until objects were processed and speed given would
you get your extra speed. Likewise, after you killed something, you'd
get your burst of speed for the next tick also.
--
server/main.c: Clear has_hit, change function to only do bounds checking,
not actually do weapon_speed adjustments.
server/player.c: Give player speed boost when they hit something.
MSW 2005-08-28
Add patch #1274385 by Kevin Rudat to make crossedit draw floors on tiles with
items.
crossedit/CrEdit.c: Add call to update_position() in UpdatePosition().
Andreas Kirschbaum 2005-08-28
Add patch #1271417 by Kevin Rudat to stop crossedit losing regions. Patch is
slightly modified to properly handle all map fields.
crossedit/Edit.c: Copy all map fields in MapMoveScrollResize(). Do not add a
msg header to already existing maps.
crossedit/crossedit.c: Call init_regions() at program initialization.
Andreas Kirschbaum 2005-08-28
socket/init.c: Make setsockopt(REUSEADDR) work if using gcc in Ansi C mode on
Linux.
Andreas Kirschbaum 2005-08-28
common/map.c: Change default values for reset_timeout, enter_x, and enter_y
map headers to zero. In set_map_reset_time() use MAP_DEFAULTRESET if
reset_timeout is zero. This change prevents crossedit from adding these
headers by just loading and saving a map.
include/config.h: Add MAP_DEFAULTRESET.
Andreas Kirschbaum 2005-08-27
server/rune.c: Fix crash if casting disarm out of map bounds.
server/spell_effect.c: Fix crash if casting polymorph out of map bounds.
Andreas Kirschbaum 2005-08-25
Apply patch 1200555 - addition of key/value lists which allows arbitrary
storing of data in objects - see doc/Developers/key-value for more
information
---
loader.l, loader.c: Add add_key_value() function which parses the unknown
line in the object/archetype. Update get_ob_diff() to make differences
for the key/value lists.
common/object.c: Add functions for properly comparing the key/value lists,
setting and getting the vaues, clearing values upon freeing of object,
etc.
doc/Developers/Makefile.am: Add key-value file.
doc/Developers/key-value: Documentation of this feature.
include/libproto.h: Rebuilt
include/object.h: Addition of key_value struct, addition of key_values
field to object.
MSW 2005-08-22
socket/request.c: Fix range checking of toggleextendedtext parameters.
Andreas Kirschbaum 2005-08-17
The following fix code that basically does "for(x = pos-5; x < pos+5; x++)".
This is not correct because it includes "pos-5" but not "pos+5".
common/los.c: Make lighted distance equal in all directions.
server/disease.c: Make infection distance equal in all directions.
server/monster.c: Make lighted distance equal in all directions.
Andreas Kirschbaum 2005-08-17
Add patch by Kevin Rudat for applyable but non
pickable objects to have item items.
doc/Dvelopers/objects: Update item types.
socket/item.c: Use the head of any objects we send. Should generally
only be an issue for objects on the ground, as currently there is no
large objects players can pick up. Also fix up some of the formatting/
indenting in this file.
MSW 2005-08-16
server/attack.c, include/define.h, common/loader.l doc/Developers/objects:
Add a flag FLAG_IS_LIGHTABLE, to make lightable objects such as lanterns
able to work again
lib/archetypes: recollect archs
Brendan Lally 2005-08-16
server/build_map.c: Add support for buildable signs, and magic mouths/ears.
Alex Schultz 2005-08-15
lib/Makefile.am, lib/Makefile.in: Actually install help file for showpets.
common/living.c, include/living.h: Make global arrays really const.
Andreas Kirschbaum 2005-08-15
server/gods.c: Fix crash for monsters without appropriate god.
server/gods.c: Add missing braces around body of if statement.
Andreas Kirschbaum 2005-08-14
NPCs instead of being given a random god are for preference given the god that
likes their race. If one can't be found, then we fall back to a random god.
Affected files:
server/gods.c include/sproto.h
Brendan Lally 2005-08-12
String fields in structures using add_string are now const char*. Functions in
shstr (add_refcount, add_string, free_string, ...) now take/return const char*.
More argument replacing from char* to const char*.
Fixed a potential string corruption in recipe.c (when dumping) and readable.c (was
using strtok on a add_string-ed string, when strtok changes argument).
Fixed a few type mismatch on qsort calls.
Global char arrays (messages and such) are const char* too.
Removed unused typedefs / structures.
Affected files:
common/anim.c image.c info.c item.c living.c object.c quest.c readable.c recipe.c
shstr.c treasure.c
include/arch.h commands.h define.h face.h funcpoint.h global.h god.h libproto.h
living.h map.h material.h object.h player.h race.h recipe.h skills.h sproto.h treasure.h
random_maps/random_map.h reader.[cl] style.c
server/apply.c attack.c c_object.c c_range.c c_wiz.c gods.c
main.c monster.c pets.c player.c plugins.c resurrection.c shop.c skill_util.c skills.c
spell_attack.c spell_effect.c time.c timers.c
socket/item.c
Ryo 2005-08-12
Arguments are now const char* instead of char* when available. This ensures
the variable is not changed in random places.
Affected files:
common/porting.c quest.c readable.c recipe.c re-cmp.c shstr.c treasure.c
include/libproto.h sproto.h win32.h
server/c_misc.c c_object.c c_party.c c_wiz.c egoitem.c gods.c hiscore.c init.c login.c
main.c monster.c player.c resurrection.c rune.c shop.c skill_util.c skills.c
spell_effect.c spell_util.c win32.c
Ryo 2005-08-12
Add help for showpets, and update help for killpets
lib/help/{showpets, killpets}
Add a new command 'showpets' to give a numbered list of the pets that a player
controls. These numbers can be passed to showpets to give more detail about one
pet, or they can be passed to killpets to control which pets are killed.
Also allow killpets to take a name as an argument. Affected files:
include/sproto.h
server/{c_misc.c, commands.c}
Make random maps take the region of the map creates them. Affected files:
random_maps/{random_maps.h, random_maps.c}
server/main.c
Brendan Lally 2005-08-11
------------------------------------------------------------------------------
Changes for 1.8.0:
Update for release 1.8.0.
include/Makefile.am: missing quest.h file
Rest automatic rebuild
MSW 2005-08-10
Replaced "depletion" by ARCH_DEPLETION (defined in object.h). Affected files:
common/living.c
include/object.h
server/apply.c gods.c spell_effect.c
Ryo 2005-08-10
server/player.c: Set map for arrow as returned by get_map_flags -
otherwise when firing at edge of tiled maps, arrows could end up
in wrong place.
MSW 2005-08-09
include/config.h: Make DEBUG default - appears last commit changed this
as unrelated to actual changes in place.
include/sproto.h: Rebuild
server/player.c: fire_bow() - add checks for wall/out of map. fire_bow()
wasn't using right coordinates on check, which caused problems in
threewide mode at edge of maps.
MSW 2005-08-07
plugin_logger/plugin_logger.c: make it compile under Win32.
Ryo 2005-07-30
server/player.c: fix crash when news or rules > HUGE_BUF.
Ryo 2005-07-29
server/{monster.c, pets.c}: Fix bugs in arena petmode and clean up most of
it's logic into it's own function.
lib/help/petmode: Document the arena petmode in the "help petmode" output.
Alex Schultz 2005-07-28
server/skills.c: use correct sp/grace for inscription.
Ryo 2005-07-27
The following changes prevent spells in player's inventories from being
damaged by casting spells, using skills, or praying.
server/attack.c: Limit cancellation and acid attacks to visible objects only.
server/gods.c: Limit god granted remove curse/damnation to visible objects
only.
server/skills.c: Limit the skills sense curse and sense magic to visible
objects only.
server/spell_effect.c: Limit the spells detect curse and detect magic to
visible objects only.
Andreas Kirschbaum 2005-07-26
server/skill_util.c: don't try to send a message if monster killed/removed.
Ryo 2005-07-23
socket/init.c: settings values to 0 before using'em works better, usually ^_-
Ryo 2005-07-22
random_maps/random_map.h: Add prototype for set_random_map_variable().
server/main.c: Remove prototype for set_random_map_variable().
lib/Makefile.am, lib/Makefile.in, lib/help/whereabouts: Add help for
whereabouts command.
server/apply.c: Properly terminate destination string with '\0' in
apply_item_transformer(). Avoid clearing the string buffer multiple times.
Andreas Kirschbaum 2005-07-20
doc/Developers/item_transformation: fixed documentation.
server/apply.c: remove incorrect comment. Item transformer uses food for max use.
Replaced some hardcoded values with define. Modified files:
common/arch.c
include/object.h
plugin/plugin_python.c
server/apply.c attack.c build_map.c spell_attack.c spell_effect.c time.c
Ryo 2005-07-19
include/win32.h: add PLUGIN_SUFFIX definition.
Ryo 2005-07-18
server/plugins.c: Merge mostly identical code from #ifdef WIN32 and #else
blocks. Use opendir/readdir/closedir instead scandir for Unix because WIN32
probably does not have these functions. Prevent loading one plugin multiple
times.
include/sproto.h: Update prototypes for plugin functions.
server/c_wiz.c: Add success/failure messages to plugin and plugout commands.
Do not crash due to missing parameter.
Andreas Kirschbaum 2005-07-18
server/pets: Fix off-by-one error in follow_owner().
server/c_wiz: Allow the summon and teleport commands to place the summoned
player/DM north-west of DM/player.
Andreas Kirschbaum 2005-07-17
Use const char* instead of char* when possible. Remove unused variables in weather code.
Affected files:
common/map.c region.c utils.c
crossedit/stubs.c
include/funcpoint.h libproto.h sproto.h
random_maps/standalone.c
server/weather.c
Ryo 2005-07-17
server/apply.c: Make converters that increase value non-functional.
Andreas Kirschbaum 2005-07-17
server/{monster.c, pets.c}: Fixed bug in previous commit of arena petmode
that cause pets that should be friendly to eachother to fight.
Alex Schultz 2005-07-16
common/{map.c, readable.c, treasure.c},
crossedit/{Attr.c, png.c, Cnv/{CnvFiles.c, CnvPath.c}},
plugin_animator/plugin_animator.c,
plugin_logger/maps.c,
server/{alchemy.c, c_misc.c, c_wiz.c, init.c, main.c, monster.c, pets.c,
player.c, resurrection.c, rune.c, skills.c, spell_effect.c, time.c,
weather.c}:
Fix spelling errors in string constants.
server/c_misc.c: Remove superfluous trailing '\0' from strings.
Andreas Kirschbaum 2005-07-15
server/{c_misc.c, monster.c, pets.c}, include/player.h: Add new "arena"
petmode which allows pets to attack players and other pets while in the
arena.
Alex Schultz 2005-07-16
*Makefile.in, aclocal.m4, configure: Rebuilt generated files.
lib/Makefile.am: Update list of help files to install.
server/skills.c: Do not reveal a hidden DM in attempt_jump().
server/skills.c: Do not reveal a hidden DM in steal().
server/player.c: Ignore hidden DM in stand_near_hostile(). Formerly it always
returned false if a hidden DM was present.
Andreas Kirschbaum 2005-07-15
server/c_object.c: Improved pickup. You can now do pickup +bow, or pickup -shield.
Much simpler then fiddling with sums of 2^x values.
Ryo 2005-07-15
server/c_party.c: Make party passwords with a length of 8 characters work
again.
lib/artifacts: Fix type of lockpicks of quality/high quality.
Andreas Kirschbaum 2005-07-15
Those commits remove the dependency on the plugin towards the library. All functions
used from the plugin are hooked, instead of being called directly. This fixes bugs
under Windows, and simplifies compilation. Also, many new callbacks were defined.
Affected files:
include/plugin.h plugproto.h sproto.h
plugin/plugin_python.c
server/plugins.c
Note that at some point some functions could be moved out of plugin_python and put in
plugin_general to be shared between different plugins.
Ryo 2005-07-15
Those commits remove the whole "glue/callback" logic. Instead functions are just
defined as external, and should be implemented (even as dummy) by all programs.
Affected files:
common/arch.c button.c glue.c init.c item.c living.c logger.c los.c map.c object.c
time.c treasure.c
crossedit/stubs.c: new file with dummy functions.
crossedit/Makefile.[in|am]: add this new file.
include/funcpoint.h libproto.h sproto.h
random_maps/standalone.c: add dummy functions for those externals.
server/init.c: remove obsolete setup_library()
Added a wrapper function for check_trigger from plugins.
include/plugin.h: new function
server/plugins.c: wrapper for check_trigger.
Ryo 2005-07-15
plugin/plugin_python.c: (add|free)_string should *not* be called directly under Win32.
Therefore let's use the hooks. Also, when removing an object, better check it's not the
current object (CFPython.RemoveObject(CFPython.WhoAmI()) anyone?).
Ryo 2005-07-15
server/spell_util.c: use on_same_map instead of checking directly map pointers.
Ryo 2005-07-15
Those changes implement a quest tracking system. Check the doc/quests document for more info.
common/quest.c: new file with a few quests-related functions.
doc/Developers/mapguide: point to quests file for instructions on quests.
doc/Developers/quests: new file with instructions on how to use quests,
and implementation details.
doc/Developers/README: added quests file.
include/libproto.h: new functions in quest.c.
include/quest.h: new file with a few defines for quests.
include/sproto.h: new function command_quest, update talk_to_wall definition.
lib/help/quests: new help file for quests command.
server/c_misc: new command_quests function.
server/commands.c: link command_quests to "quests".
server/monster.c: update talk_to_wall and talk_to_npc to check for quests.
server/time.c: modify marker behaviour to handle quests.
Ryo 2005-07-14
common/{button.c, treasure.c, utils.c}, server/{c_wiz.c, login.c, shop.c,
skill_util.c, spell_effect.c}, socket/{image.c, item.c}: Fix printf like
format specifiers. At least one of them fixes a means to crash the server.
Andreas Kirschbaum 2005-07-14
Those changes introduce party spells. Casted spell should be defined through 'other_arch'
field. Note that this needs through testing to make sure it works as intended.
include/spells.h: new spell type, 'party spell'.
server/spell_util.c: new spell type, party spell.
Ryo 2005-07-10
server/{login.c, player.c}: Fix buffer overflow with pl->title. Based on patch
by Scott Kullberg.
crossedit/{Edit.c, Cnv/CnvPrompt.c}, server/{ban.c, hiscore.c, login.c,
player.c, shop.c, win32.c}: Properly terminate destination string of strncpy
with '\0'.
server/init.c: Fix error message.
Andreas Kirschbaum 2005-07-10
configure.ac, configure, aclocal.m4, Makefile.in: Add AM_MAINTAINER_MODE
macro to configure.ac - this should hopefully supress auto regeneration of
makefiles.in
MSW 2005-07-08
Add a --with-python option to configure. Also, update the python
detection script to check for 2.5 (not out yet, but might as well be prepared.)
Will try to commit files in proper order so that dependency checking is correct
and it won't try to rebuild makefiles or other files.
--
acinclude: Updated checks for --with-python
aclocal.m4: updated
configure.ac,configure: Updated checks for --with-python
config.sub, config.guess - update to latest versions
INSTALL: Updated build directions
MSW 2005-07-08
lib/Makefile.am, lib/Makefile.in: Remove map_check from normal distribution
due to different license on file.
random_maps/monster.c: Reduce monster density on random maps - take into account
size of monsters when calculating density.
utils/metaserver.pl.in: At a timeout value that limits how often clients can
ask for metaserver info.
MSW 2005-07-08
lib/settings: Turn of fastclock as default option.
socket/loop.c: Change behaviour of metaserver/flushmaps/watchdog
calls if fastclock is set - don't do those any faster than normal.
MSW 2005-06-22
Server can now be used as a Windows server, with command-line options
-regsrv (register server and exit), -unregsrv (unregister server and exit)
and -srv (should not be used directly, for the service control manager call).
server/init.c: add command-line options.
server/main.c: loop is no more infinite under Windows. Save and clean after it, too.
server/win32.c: add service routines.
Ryo 2005-06-22
common/living.c: Print correct message when (un-)wearing items with negative
luck.
Andreas Kirschbaum 2005-06-14
include/living.h: Patch from Kari Pahula to remove obsolete variable
declarations.
Andreas Kirschbaum 2005-06-01
server/skill_util.c: Print correct permanent experience ratio for experience
values >2 billion.
Andreas Kirschbaum 2005-05-22
server/apply.c: Do not unlock LAMP items when turning them on or off.
server/apply.c: Fix CONVERTER items with slaying "money" to trigger for MONEY
items only.
server/player.c: Generate proper plural name for player's gravestones.
Andreas Kirschbaum 2005-05-21
Ensure that object->msg always has a trailing \n character. This is necessary
to prevent corrupted map files.
plugin/plugin_python.c: Add trailing \n to message set by
CFPython.SetMessage() if not already present.
server/plugins.c: Add trailing \n to message set by HOOK_TELEPORTOBJECT if not
already present.
server/rune.c: Add trailing \n to rune messages.
Andreas Kirschbaum 2005-05-21
Apply qal21's patch [ #1205421 ]: Implement new Python functions:
GetArchType, GetFacing, GetLevel.
plugin/plugin_python.c, plugin/include/plugin_python.h: Add new functions.
doc/Developers/python: Describe new functions.
Andreas Kirschbaum 2005-05-20
server/monster.c: Fix monsters to cast spells from spellbooks.
Andreas Kirschbaum 2005-05-15
Fixed compilation issue.
server/apply.c: can't declare a variable after some function call.
socket/info.c: removed unused variable.
Ryo 2005/05/07
Corrected code to compile under -ansi gcc flag:
* correction of some non posix compatible calls around scandir
* changing configure to detect the absence of 'alphasort' prototype
* converted some '//' comment to /**/ one
* reran automake1.8/autoconf2.50/autheader2.50
Note even it it compiles with -ansi -pedantic, it still need cleanup to
get 64 bits experience code working!
Tchize 2005/05/07
Applied Casper1's patch [ #1193516 ] for Hurd support.
* socket/lowlevel.c: #ifdef some code part that won't work.
Change some char* to const char*, when values shouldn't be changed. Changed files:
* include/libproto.h
* common/arch.c
* common/living.c
Ryo 2005-05-03
Change some char* to const char*, when values shouldn't be changed. Changed files:
* include/sproto.h
* socket/info.c
* socket/item.c
Ryo 2005-04-30
Change some char* to const char*, when values shouldn't be changed. Changed files:
* include/sproto.h
* server/apply.c
* server/ban.c
* server/spell_util.c
Ryo 2005-04-27
server/skills.c: Change it so that jeweler skill is used to identify
amulets, not alchemy skill.
MSW 2005-04-27
Apply patch 1190107 so server compiles on HURD.
common/porting.c: Add define for MAXPATHLEN
socket/init.c: Add check for __GNU__ for setsockopt()
MSW 2005-04-27
Change to have objects generated by creator properly fixed up (material,
for potions, spell object, etc).
---
common/treasure.c: add GT_MINIMAL flag to change_treasure() to do minimal
processing for objects created.
include/treasure.h: Add GT_MINIMAL define.
server/apply.c: Add call to fix_generated_item() in convert_item()
MSW 2005-04-27
Various minor bugfixes.
common/los.c: Patch to fix negative lighting. Use isqrt instead of sqrt,
so we only want integer values anyways.
include/libproto.h, include/sproto.h: Rebuilt as there were some improperly
matching prototypes.
random_maps/rogue_layout.c: Replace sqrt with isqrt calls.
server/c_misc.c: Make name_cmp() a static declaration so it won't be put
in the sproto.h file.
server/init.c: Remove /* within comment string.
server/monster.c: Change sqrt to isqrt
MSW 2005-04-16
Those changes are just changing char* to const char* in some function
prototypes.
Affected files:
common/recipe.c
common/region.c
common/treasure.c
common/utils.c
include/libproto.h: match headers.
server/main.c
Ryo 2005-04-16
Those changes add the ability to transform items through 'item_transformer'
(163)-type items
See doc/Developers/item_transformation for more info.
common/item.c: don't display 'slaying' field for food.
include/define.h: add new 'ITEM_TRANSFORMER' type.
include/sproto.h: add new function 'apply_item_transformer'.
server/apply.c: new 'apply_item_transformer' function to handle that item type.
Ryo 2005-04-15
common/map.c: map pathnames are now const char*, no reason for something else.
common/region.c: remove unused variable.
include/libproto.h: update functions definitions.
include/sproto.h: weathermap_to_worldmap_corner now returns a const char*.
include/win32.h: define missing NAME_MAX as MAX_BUF.
server/c_misc.c: remove unused variable. Use const char* when possible.
server/weather.c: weathermap_to_worldmap_corner now uses const char* as
return type.
Ryo 2005-04-14
Random map code improvements - add support for subdirectories in the
style maps for random maps. Add difficulty_increase parameter for random
maps to control how fast they get harder.
doc/Developers/random-maps: Add notes about difficulty_increase parameter.
random_maps/Makefile.am: Update proto directive to use cproto, not cextract.
random_maps/random_map.c: Update to use difficulty_increase when figuring
difficulty of maps. Add code to save it in list of parameters.
random_maps/random_map.h: Add difficulty_increase field to structure.
random_maps/reader.l, reader.c: Add code to find difficulty_increase parameter.
random_maps/rproto.h: rebuilt.
random_maps/special.c: Pass in difficulty increase to
write_parameters_to_string()
random_maps/style.c: Remove old scandir - replaced by our own load_dir() -
necessary because we need to check type of files, which scandir doesn't
easily let us do. Since it is now our own routine, just return
array of file names instead of dirent structures.
MSW 2005-04-13
utils/Makefile.am: Add cfmeta-rrd to list of files to add to distributions
utils/cfmeta-rrd: Example of sample script that takes data and stores it into
rrd file and draws graphs (new file).
utils/metaserver.pl.in: Add recording of useful stats to external file so they
can be processed by other external scripts.
MSW 2005-04-13
server/shop.c: Pass in player object to pay_from_container() - code was
trying to deref pouch->contr which was null. Only occurs when player
has 2 different money objects of the same type, but 2 crashes observed
on metalforge.
MSW 2005-04-13
socket/image.c: Change esrv_send_face to check for <=0 instead of <0 on face
number.
socket/request.c: Change if statement that acted improperly to determine when
to send faces.
MSW 2005-03-27
include/sproto.h: get_who_escape_code_value is void, not void*.
server/c_misc.c: move local function outside the function.
server/c_wiz.c: remove sleep( 1 ) that would cause whole server to sleep one
sec.
Ryo 2005-03-23
common/living.c: Allow luck to drop back to zero. Limit bad luck object to
+/-100 to prevent overflows.
Andreas Kirschbaum 2005-03-22
common/living.c: When randomly adjusting luck, change both op->stats.luck and
the applied bad_luck object.
server/attack.c: Do not decrease luck if a player kills himself with a spell
or pet.
Andreas Kirschbaum 2005-03-20
server/c_wiz.c: change command_free() and command_remove() to always
process the head of the object - doing this operations on the non head
will typically always cause problems.
MSW 2005-03-19
This change makes it so that the smoothing information is pushed to the client
(if the client is using smoothing) instead of a process were we tell the
client the smoothlevel and the client then has to request the face info for
smoothing. If we know the client wants the info, much easier to push it to
the client. This simplifies the client code (doesn't have to keep track
of what is requests). It also fixes the 'problem' that when you join the
game, you get a few frames with no smoothing and then the smoothing shows
up, which seems a bit odd. My testing shows that old clients that want
smoothing use this new logic withouth any problems.
--
common/image.c: add smooth_face default so that we don't have to look it
up everytime.
include/define.h: Add SMOOTH_FACE_NAME used by image.c
include/global.h: Add smooth_face extern declaration.
include/newserver.h: Update comment on what faces_sent is used for,
add NS_FACESENT_* values which determines what info for the face was
sent.
socket/image.c, socket/init.c, socket/item.c: Update faces_sent checks/set
to check against NS_FACESENT bitmask.
socket/request.c: Update faces_sent as mentioned above. And SendSmooth(),
rewrite AskSmooth() to use SendSmooth(). Modify update_smooth()
to send smoothing information to the client.
MSW 2005-03-19
common/map.c: Clean up if statement ins blocked_link() which caused warning
messages - broke it apart to make it a little clear. Add check for
premature end of map header - make code more resilent in case of truncated
saved maps. Fix saving of region name in new_save_map() - saving the
pointer to the region isn't what the loader is expecting, and is highly
non portable even if it was.
MSW 2005-03-18
Applied patch:
* #1145089 (cavesomething): Region support.
common/Makefile.am: add new 'region.c' file.
common/init.c: add 'REGIONS' setting.
common/map.c: add 'region' map key.
include/config.h: add regions file default name.
include/global.h: add 'first_region' global variable and settings.
include/libproto.h: add region.c functions prototypes.
include/map.h: add region structure.
include/sproto.h: add new region-related command.
lib/Makefile.am: add 'regions' file.
lib/regions (new): regions definition file.
server/c_misc.c: add region information to current_map_info. Add new 'whereami' command.
server/commands.c: add 'whereami' command.
server/init.c: add regions settings, and load data.
Ryo 2005-03-15
Applied patches:
* #1119366 (salathar): wiz food, DMs don't use food anymore.
* #1161816 (cowboyatheart) : Add wands/staves/rods/horns to new pickup.
* #1119762 (salathar): afk command.
common/loader.[lc]: add 'FLAG_AFK'.
include/define.h: add 'PU_MAGIC_DEVICE. Add 'FLAG_AFK'.
include/sproto.h: add 'command_afk'.
server/c_misc.c: add 'AFK' to who display, add command_afk.
server/c_object.c: add new flag to dump.
server/commands.c: add command_afk.
server/player.c: wiz don't use food. Check for rod/wand/horn for new pickup flag.
Ryo 2005-03-13
*Makefile.in, aclocal.m4, configure, utils/config.guess, utils/config.sub,
utils/ltmain.sh: Rebuild generated files.
acinclude.m4: Check whether Python supports the "L" format specifier. Do not
build python plugin if not.
Andreas Kirschbaum 2005-03-09
common/{map.c, readable.c, treasure.c}, crossedit/Attr.c, server/{apply.c,
attack.c, c_wiz.c, init.c, monster.c, pets.c, shop.c, skill_util.c, skills.c,
spell_attack.c, spell_effect.c, time.c}, socket/{info.c, request.c}: Add
missing newline character to LOG() messages.
common/living.c, include/living.h: Change type of weight_limit to uint32.
socket/request.c: Remove non-portable assignment to rvalue.
doc/{README_PLUGINS.doc, README_PYTHON.txt, plugins}, doc/Developers/{README,
plugins, python}: Update plugin documentation.
plugin/plugin_python.c, plugin/include/plugin_python.h: Whitespace changes,
remove obsolete comments.
plugin/plugin_python.c: Only set WhoAmI when running the command registered by
CFPython.RegisterCommand. Set default result value to "success".
plugin/plugin_python.c: Fix memory leaks by freeing old strings before
assigning a new value.
plugin/plugin_python.c: Use correct format specifiers for item values and
experience values.
plugin/plugin_python.c: Make CFPython.IsCanBePicked return whether the object
can be picked up. (Did return whether the object cannot be picked up.)
plugin/plugin_python.c: Do not return a pointer to a variable on the stack.
server/plugins.c: Fix pointer type mismatch while processing
CFPython.RegisterCommand.
plugin/plugin_python.c: Change second parameter of CFPython.CheckMap to use
a map object instead of a map name. Now it works for tiles maps.
acinclude.m4: Add check for python 2.4 to match this file with aclocal.m4.
Andreas Kirschbaum 2005-03-06
plugin/plugin_python.c: Increase limits of values the Python script may set
to the ranges given by objects in the archetypes file.
Andreas Kirschbaum 2005-02-28
common/object.c, include/libproto.h: change nrof parameter of get_split_ob to
uint32 type.
server/c_object.c, include/sproto.h: change nrof parameter of drop_object to
uint32 type.
plugin/{plugin_python.c, include/plugin_python.h},
plugin_animator/{plugin_animator.c, include/plugin_animator.h},
server/{apply.c, attack.c, gods.c, monster.c, player.c, skills.c, time.c,
timers.c}: Change type of CFParm.Value[5] and StackParm1[] to uint32 to be
able to pass an "nrof" value.
plugin/plugin_python.c, plugin/include/plugin_python.h: Remove spell wrapper
functions.
plugin/plugin_python.c, plugin/include/plugin_python.h: Replace skill-IDs by
skill names. Remove skill-ID wrapper functions.
Andreas Kirschbaum 2005-02-20
------------------------------------------------------------------------------
Changes for 1.7.0:
configure, configure.ac, include/autoconf.h.in: Update for
version 1.7.0. Add check for libz - needed by libpng (at least on my
system), which is needed for the editor.
MSW 2005-01-23
common/object.c: Change CAN_MERGE() from an inline function, since
it calls itself and inline functions are not supposed to do that.
Update type check in insert_ob_in_map() to check against defined
type (EXIT) instead of hardcoded integer value (66).
crossedit/xutil.c: Update to just include Defines.h, which then includes
all the other necessary files, including global.h.
include/global.h: Add #ifdef checks for the UINT*_MAX types, as some
systems already define these values, which results in a redefinition
error. Also fix up // style comment.
include/shstr.h: Include proper cast in TOPBIT definition.
server/main.c: Don't display 'xyz left the game' messages if the player
is only at the get name or get password prompt. Prevents possible
spoofing of that message.
server/player.c: Clean up formatting of check_pick() function. If player
is using newpickup to pick up booze, also pick up poison unless
they know it is cursed.
socket/request.c: AskSmooth() - change buffer type to uint8 so that
it matches what the SockList structure wants.
utils/scores.pl.in: Use skill_praying to find players god, and not the
deprecated experience_wis object.
MSW 2005-01-23
aclocal.m4, configure: Add check for python 2.4.
common/re-cmp.c: Fix improper comparison *(str+1) instead of str+1
server/login.c: don't allow null names.
server/main.c: Disable logging of removed objects - filling up log
files on archmage of all the errors.
server/player.c: Fix improper initialization of attacktype in
for loop. Give players max grace, sp when they die - also, if they
are near starvation, give them a bunch of food.
server/spell_effect.c: Put cap on duration of godly retribution - it
can otherwise last so long that if a player is killed by it at
their savebed location, spell could still go on after players
temporary immunity ends. Retribution as increases in damage,
so no need to really increase damage and duration to really high
amounts.
server/spell_util.c: In fire_arch_from_position(), and check that
player isn't casting spell on top of wall - fixes for many
spells, including ball lightning.
server/time.c: Change comparsion on return of get_map_flags() from
== P_OUT_OF_MAP to & P_OUT_OF_MAP - keeps syntax consistent.
MSW 2005-01-11
plugin/plugin_python.c, plugin_animator/plugin_animator.c,
plugin_animator/plugin_animator.c: Use script return value set by
CFPython.SetReturnValue(): access to stack was off by one. Do not return a
pointer to a local variable on the stack.
plugin/plugin_python.c, plugin_animator/plugin_animator.c: Handle all defined
events.
Andreas Kirschbaum 2005-01-10
server/spell_attack.c: apply patch #1096921 courtesy Salathar.
Charmed monsters now lose the 'generator' flag, to prevent
things like mice outbreak in bigworld maps.
Ryo 2005-01-07
plugin/plugin_pyhton.c, plugin/include/plugin_python.h: Remove obsolete
functions: SetGender, SetRank, SetAlignment, SetGuildForce, GetGuildForce,
CreatePlayerForce, CreatePlayerInfo, GetPlayerInfo, GetNextPlayerInfo,
SetPreviousObject, SetNextObject.
plugin/plugin_python.c, plugin/include/plugin_python.h: Add missing attack type
wrapper functions, function CFPython.SetDamned(), wrapper functions for
missing cost flags, and wrapper functions for event types.
plugin/plugin_python.c: Add an optional parameter to CFPython.SetName() to
specify name_pl as well. Always set name_pl.
plugin/plugin_python.c: Fix a buffer overflow in CFPython.RegisterCommand():
allocated memory was not sufficient to hold the trailing '\0'.
plugin/plugin_python.c: Use #define constants.
plugin/include/plugin_python.h, plugin/plugin_python.c,
plugin_animator/plugin_animator.c, server/plugins.c: General cleanup - merge
duplicate code, remove debugging code, rename variables, rename C function
names to match the Python function name, use hook functions where
appropriate.
include/sproto.h, plugin/plugin_python.c, server/plugins.c, server/shop.c:
Use uint64 type for variables holding money. Use Python long integers to
pass these variables to/from the Python plugin.
Andreas Kirschbaum 2005-01-07
plugin/plugin_python.c: Check values passed in from the Python code; generate
proper Python exceptions for invalid values.
plugin/plugin_python.c, plugin_animator/plugin_animator.c: Make sure all
fields on the stack are initialized. Prevent stack overflow: check was one
off, causing a buffer overflow. Decrement stack pointer in error case.
Andreas Kirschbaum 2005-01-06.
common/regexp.c: Fixed couple flaws in regexp handling. First, there was an
off by one error in the handling of matches (if the match was for example
eureca, player could just say eurec, and it would treat that as a valid
match). Second case was that the regular expression logic would not
try comparing the rest of the passed in string after a partial match -
In the eureca case above, if the passed in string was 'where is eureca',
after matching the first e (in where), it then fails to match the
next letter and would give up. It now tries comparing the rest of
the passed in string with the regex (so after that failure, it
will try to match 're is eureca'.
server/apply.c: Add missing 'return 0' to shop_mat code that is needed
to prevent unpaid objects from teleporting out of the shop. Also
extend code so that non living objects can't use shop mats.
server/player.c: Insert force into the player when they die making them
immune to any spells on the space they reappear on - this prevents
multiple deaths if there is large spell effect going on in the
savebed location. Duration of force should be long enough for most
spells to run their course, but no so long that the player can use
it for much of an advantage (plus, killing yourself to get such
an advantage seems odd, and the force only makes the player immune
to the attacktypes currently on the space)
server/spell_effect.c: Fix spell casting walls (lighting wall,
firewall, etc) in that the spell object they cast was not being
inserted, resulting in the walls not doing anything.
MSW 2004-12-28
Applied patch (bug misc/zoo2) by Lalo
server/time.c: creators can now create multi part objects.
Applied patch 1086102 by Salathar:
server/attack.c: If player kills another player, add (pk) to the death
message.
Applied patch 1086103 by Salathar:
server/move.c: If player pushes another player, send message to both players
that pushed happened. Previously, when pushing another player, the pusher
wouldn't get any notice.
MSW 2004-12-28
Applied patch 1001079 - make alchemy books say what skill & equipment
is needed - by Kevin Rudat.
common/readable.c: Update code that generates book title, contents
to denote what skill and equipment is needed.
random_maps/{random_map.c, reader.l, reader.c}, server/main.c:
Remove generate_treasure_now as an option
for random maps - none are using delayed treasure, and IMO, if someone
did, it would horribly break things, so it should never be used - given
that, no reason to leave the code there.
server/main.c: Add additional debugging for process events on removed
objects - trying to track down occasional disease crash.
server/time.c: Fix crash in move_player_mover() - it was never map tile
aware, but even more so, appears to have always been broken if the
player move tried to push the player off the edge of a map. Check
for out of map condition, as well as make it map tile aware.
MSW 2004-12-28
Applied patches #1086095 and 1088385 courtesy Salathar:
common/map.c: hidden DM is non blocking
server/c_chat: can't do emotions towards hidden DMs. Player's emotions
always displayed in split window.
server/c_wiz.c: add an extra player leave message when DM hides
server/main.c: don't display leave messages for hidden DM when connection timeout
server/c_party.c: party password max length is 7, due to buffer size.
(i think it was a patch from Casper?)
Ryo 2004-12-25
server/c_wiz.c: Remove item when 'free' by DM if not removed, avoiding crash.
Ryo 2004-12-22
server/c_party.c: Make party passwords of 8 characters work, disallow longer
passwords. Based on patch #1080096 from Casper.
Correct help message for party commands.
Andreas Kirschbaum 2004-12-10
plugin/plugin_python.c: change 'long long' so 'sint64' (typedef).
Ryo Saeba 2004-11-29
common/object.c: apply patch #1066665 courtesy Salathar for exits with
blockview 1.
lib/formulae: apply patch #1064643 courtesy Salathar to fix broken formulae.
lib/wizhelp/speed: remove file, command changed name.
lib/wizhelp/server_speed: updated 'speed' command help.
server/c_wiz.c: apply patch #1063051 courtesy Salathar to update muzzle message.
server/commands.c: apply patch #1052224 courtesy Casper to change
'speed' to 'server_speed' as name is ambiguous.
Ryo Saeba 2004-11-25
common/loader.l: Fix passed size in FAST_SAVE_LONG() - was one too long,
causing truncated diffs after "dam_modifier" entry.
Andreas Kirschbaum 2004-11-15
This commit adds the functionality of patch 991916, although the patch
as submitted was used as a baseline to start from.
include/sproto.h: rebuilt
server/c_chat.c: Rename command_chat() to command_tell_all() which takes
a few more optional parameters. Add command_shout() and command_chat()
that invoke command_tell_all() with the appropriate changes.
server/commands.c: Add chat to list of command table.
MSW 2004-11-08
plugin/plugin_python.c: Run the script python_init.py right after
initializing the interpreter.
Andreas Kirschbaum 2004-10-21
server/c_party.c: actually warn party members of password change. Notify when
someone joins party.
Ryo 2004-10-21
plugin/plugin_python.c, plugin/include/plugin_python.h, server/plugins.c:
Fix comments, change whitespace.
Andreas Kirschbaum 2004-10-19
Fix some bugs I introduced in my last commit.
common/map.c: Add back in call to sum_weight that got removed when removing
the object checking code.
common/treasure.c: Have fix_generated_item() blank out the randomitems
field after it has created treasure.
server/apply.c: Only clear randomitems after create_treasure() - don't
presume it should get blanked out for other reasons - with change
to treasure.c above, this should be more reliable and fix starting
skill issue, as randomitems was getting blanked out for CLASS object.
server/main.c: Change processing of players a little - found crash where
autosave was called for a removed player (map had got swapped out) -
don't do autosave logic if player is removed. Move the autosave code
to after the players action, so that can just have a single check of
removed status.
MSW 2004-10-17
include/sproto.h, server/egoitem.c: Change create_artifact() to return whether
the artifact was created.
server/plugins.c: Change CFWCreateArtifact()/HOOK_CREATEARTIFACT to return
whether the artifact was created.
plugin/plugin_python.c: Define new function create_object() to create
objects. Use this function to fix CFPython.CreateObjectInside() and
CFPython.CreateObject(): creation of artifacts does work now.
plugin/plugin_python.c: Fix CFPython.GetNextPlayerInfo() to work with long
force names. Remove duplicate variable initialization.
server/plugins.c: Remove the use of malloc() in initOnePlugin().
Andreas Kirschbaum 2004-10-18
plugin/plugin_python.c, plugin_animator/animator_box.c,
plugin_animator/plugin_animator.c, plugin_logger/arena.c,
plugin_logger/plugin_logger.c: Use HOOK_FREEMEMORY to free memory allocated
by HOOK-functions. Fix memory leaks.
plugin/plugin_python.c, server/plugin.c, plugin_animator/animator_box.c: Fix
some more mismatches between plugin interface and implementation.
CFPython.Get/SetSkillExperience() use 64-bit exp values now.
CFPython.CastAbility() works again.
Andreas Kirschbaum 2004-10-16
plugin/plugin_python.c, server/plugin.c: Fix type mismatches between plugin
interface and implementation.
plugin/plugin_python.c, server/plugin.c: Add/remove "static" to/from some
variables. Fixes a memory leak in CFPython.SaveObject().
plugin/plugin_python.c: Fix reference counting for Python objects.
Andreas Kirschbaum 2004-10-15
common/living.c: Fix exp functions to use the player objects expmul
value when determining level gains, and not the skills. Also,
fix bug where players last hp/sp/grace gain I think was being
re-rolled when player gained level in skill.
common/loader.l, loader.c: Add better recording of non existant objects
(no archetype for them) in maps. Also, handle such objects in
players inventories properly (which is to just discard them)
common/map.c: Add better logging about discarded archetypes. Since the
loader now deals with objects without archs in inventories, that
code doesn't need to be in the server.
common/object.c: copy_object() was not properly nulling out the
next field in the event object, pointer to event list was also
incorrect, causing events to not be copied properly.
doc/spoiler-html/spoiler.html: Rebuilt.
server/apply.c: Apply patch by MT that fixes problem of entire inventory
not being copied properly. Fix problem that objects in creatures
were not having any sub treasure created (eg, put a pyro_book in
a monster on the map, and the pyro_book wouldn't have a spell in
it) - now we make sure we process inventory objects as well as map
objects, creating treasure as needed.
server/monster.c: Reverse order of cast_spell() and drain_rod() in
monster_use_range() - drain_rod() should go first, because
case_spell() can in rare cases destroy the rod.
MSW 2004-10-14
server/c_misc.c: Add natural skin resistances to 'statistics' output for
dragon players.
Ryo 2004-10-10
common/readable.c: Apply patch by Kevin Rudat to add some alchemy book names.
common/readable.c: Apply patch by Kevin Rudat to fix buffer overrun while
generating book titles.
Andreas Kirschbaum 2004-10-09
include/sproto.h: Add function prototype.
server/c_wiz.c: Add 'command_stack_clear' to clear DM item stack.
server/commands.c: Link function to function array.
Ryo 2004-09-26
server/player.c: Allow to 'reply' to players that logged out but did not yet
drop the connection. Now reply works like other communication commands.
common/utils.c: Fix random_roll() and die_roll() to not return out of range
values.
include/define.h: Add parentheses around arguments of FABS macro.
Andreas Kirschbaum 2004-09-19
server/rune.c: Prevent creation of level 0 runes. Re-enable runes to cast
multiple spells.
Andreas Kirschbaum 2004-09-14
include/config.h: fix Win32 log path so there actually is a log.
plugin/plugin_python.c: uint doesn't exist under Win32, use uint32 instead.
Patches from tracker, courtesy Kurtat:
patch 1022942: Random documentation updates
doc/SurvivalGuide
doc/Developers/programming_guide
doc/Developers/protocol
lib/settings
lib/help/cast
patch 1022973: Words for numbers in spellbook description
server/c_object
Ryo 2004-09-12
server/attack.c: Pass in skill (string) to change_exp instead of skop->skill -
skop can be null, resulting in a crash here. In addition, other calls
to change_exp in this function use the skill string, so it is good to
be consistent.
MSW 2004-09-09
server/c_wiz.c: Don't forget to skip blanks after reading item number or stack
position. Works better for commands like patch :)
Ryo 2004-09-06
common/object.c: Fix insert_ob_in_map so right coordinates and map
value are used on GET_MAP_OB call - was using values before changes
for tiling were applied.
MSW 2004-09-02
server/player.c: allow to 'talk' to players with ambiguous names: use a
perfect match even if other partial matches exist.
Andreas Kirschbaum 2004-08-30
include/define.h
server/shop.c
add new flags F_IDENTIFIED and F_NOT_CURSED to query_cost() to pretend
the item to be identified/not cursed or damned.
server/alchemy.c
fix possible abuse of shadow alchemy: do not allow the generated items
to be more valuable than the ingredients when using alternate recipes.
Andreas Kirschbaum 2004-08-24
common/map.c: Add extra check to make sure variable is set before calling
strcmp - this can happen if the map file that is being loaded is
0 bytes - without this, the server would crash.
MSW 2004-08-23
server/disease.c: fix crash when casting diseases on tiled maps.
server/move.c: fix problem with multi-tile monsters and pass thru walls.
server/spell_effect.c: fix magic walls sometimes appearing in wrong place.
Andreas Kirschbaum 2004-08-20
common/loader.l, loader.c: in check_loaded_object() - don't give spell
objects inventory if we are in the arch_init phase. When loading objects
in common loader routine, if object doesn't have arch, set the object
name to the arch name so that it is more meaningful than 'singularity'.
common/map.c: If object has inventory, check to make sure the inventory
objects have an archetype set - if not, remove and free the object -
objects without archetypes causes crashes.
MSW 2004-08-17
server/apply.c: fix_auto_apply() - add some debugging statements, as I've
seen crashes caused by monsters with scrolls with no spells - need to
figure out how those are showing up.
server/c_wiz.c: command_kick() - fix occasional crashes when player isn't
on any map when kicked. command_create() largely rewritten so it doesn't
crash the server on any malformed values passed in, add some more features
so it should be easier to create objects.
MSW 2004-08-16
server/apply.c: better to not create a treasure for spellbooks that already have
something in inventory. Else you get 2 spells in the book, which then
mutates when loading (first spell is the book's spell, and order changes every
load/save...)
Ryo 2004-08-16
Those changes mostly add an item stack for DMs. It makes it easier to dump & patch &
manipulate items without having to copy numbers all the time.
Basically, you can use '$x', meaning item at position x on stack. Or even
omit argument, defaulting to stack top.
When using an object number, it gets stacked automatically (up to 50 items).
Also add a 'diff' command, letting the DM see the result of 'get_ob_diff' on items,
to spot differences easily.
common/player.c: free item stack when freeing player structure.
include/player.h: add item stack to player structure.
include/sproto.h: new functions for stack.
include/win32.h: missed commit for 1.6.1 version.
server/c_misc.c: push item dumped with 'deumpbelow' on dm stack.
server/c_wiz.c: add stack functions. Use'em on patch, create, remove, free, and such.
Add 'diff' command.
server/commands.c: add new stack & diff commands.
Ryo 2004-08-15
server/spell_attack.c: fix mood_change when spell has no attacktype.
In this case, do a specific saving throw, to ensure a level 1 player
can't charm a level 125 monster.
Ryo 2004-08-14
random_maps/exit.c
random_maps/random_map.c
random_maps/random_map.h
random_maps/reader.l
random_maps/rproto.h
random_maps/special.c
random_maps/wall.c
added fix for random maps with single arch walls,
added level indicator on random map signs
added new parameter 'exit_on_final_map'- see documentation
TM 2004-08-07
include/plugin.h
plugin/plugin_python.c
server/c_wiz.c
server/plugins.c
add event hooks for Kick and Muzzle(toggle_shout) commands.
fix CFSetQuantity by changing the int to uint and remove 100000 item limit.
pythonplug now looks for event scripts in maps/python/events.
TM 2004-08-02
server/skills.c: xp for writing is now multiplied by skill level, to
make it possible to level.
Ryo 2004-07-17
common/loader.c: add #ifndef for non-existant Win32 header
include/win32.h: #define vsnprintf _vsnprintf to fix linking issue
Ryo 2004-07-03
server/skill_util.c: Fix skills command so that it properly displays
percentage of permanent exp.
server/time.c: Modify move_arrow() so that it removes thrown objects
with no inventory.
MSW 2004-06-22
socket/info.c: Replace sprintf() calls with snprintf() - got metalforge
crash with apparent buffer overun - going to snprintf should prevent
the problem in the future.
MSW 2004-06-21
server/c_wiz.c: for command_create() - check to see if 'of' parameter
is a spell archetype name, and do the right thing if it is. This
allows things like 'create rod_heavy of spell_large_lightning'.
Note that the command_create is still a seriously broken function
in many regards.
server/rune.c: Fix write_rune() when trying to find the spell in encase
in the rune - assignment was incorrect, so it always took the last
matching spell in the players inventory, not the best matching spell.
server/spell_util.c: Change the call to prayer_failure() so that its
potency is based on how badly short the player is short of grace. Eg,
if only 1 point short, potency of 1. This changes from before where
the potency was always the difference in mana.
MSW 2004-06-17
server/attack.c: Fix hit_with_arrow() so that it uses the proper map
when inserting the arrow.
server/c_wiz.c: Add note about brokeness of command_create()
server/spell_effect.c: execute_word_of_recall() - don't attempt recall
if player isn't on any map.
MSW 2004-06-15
common/object.c
include/define.h
include/player.h
include/sproto.h
server/attack.c
server/c_object.c
server/player.c
server/shop.c
socket/item.c
socket/loop.c
socket/request.c: Remove explicit calls to
esrv_update_item(UPD_WEIGHT, pl, pl) for player objects. Instead
send the new weight whenever it changes.
Andreas Kirschbaum 2004-06-13
server/spell_attack.c: cast_destruction() - have it change the skill
for the caster so that exp is properly awarded.
common/object.c: insert_map_in_ob() - remove CAN_MERGE checks after the
map translation - otherwise, we can have bogus coordinates
that are used for GET_MAP_OB.
random_maps/style.c: pick_random_object() - have it return null object
(and probably crash) instead of getting into an infinite loop.
server/c_wiz.c: command_kick() - check FLAG_FREED of player. Remove all
the broken skill/exp object granting code in command_possess() - this
is probably still a broken function.
common/item.c: describe_monster() - if the creature/player is stealthy,
mention it when the object is described.
common/loader.l, loader.c: Fix passed in size to get_ob_diff() - was one
to long, causing string corruption.
server/spell_attack.c: mood_change() - fix get_map_ob call - wasn't using
correct coordinate variables, resulting in crash.
MSW 2004-06-10
server/c_party.c: gsay improvements, courtesy Katia.
Ryo 2004-06-09
server/commands.c: Disable 'possess', that crashes server.
server/monster.c: Make monsters use wands/horns/... again. Also make'em
ignore DMs all the time (even when not invisible).
server/skill_util.c: Fix the change_skill when called for monsters.
Ryo 2004-06-06
server/c_misc.c: Add sum_weight() call to fix_me command so that players
weight is properly recalculated.
server/skills.c: Fix up attempt_steal() so that it doesn't improperly
remove object from target when person doing the stealing can't pick
it up.
server/spell_attack.c: Set maxhp properly, so multipled fireballs, etc
can be going off at the same time.
server/spell_effect.c: Fix up cast_create_missile() so more esoteric
missiles can be created.
MSW 2004-05-31
include/sproto.h: new 'dmhide' command.
server/commands.c: new 'dmhide' command.
server/c_wiz.c: added 'dmhide' command. Player becomes DM, and 'hide's immediately. Others
only see him/her leave the game, they don't know s/he's DM.
Ryo 2004-05-24
include/book.h: Increase the size of BOOK_BUF, so inscribed books can hold
more informatin.
lib/Makefile.am, lib/Makefile.in: Add the 'rename' to the list of help
files.
lib/archetypes: update the glyph/rune spells to have proper face.
lib/bmaps, lib/crossfire.* - add glyph.111 image.
server/gods.c: Modify tailor_god_spell() to look harder to find a god -
necessary for glyph spells.
server/spell_attack.c: Give players 50% of exp for monsters they charm.
MSW 2004-05-19
common/object.c: Correct get_search_arr() to return a proper permutation.
Andreas Kirschbaum 2004-05-18
server/main.c: Have process_events display information from dumped object.
also, more refinement on checking of object status.
MSW 2004-05-16
server/build_map.c: change 'player' variable to 'pl', since a player
structure already exists. Also fix disappearing pedestals on non-unique
maps (put'em over floor, they are visible but hey, can't have everything :p)
server/c_wiz.c: fix learn_spell.
Ryo 2004-05-16
server/main.c: freeing removed objects appeared to have more of a
consequence than expected - only remove the object if it was on a map
(op->map). It turns out that the artifact code uses objects that
are removed to store what the new object is.
server/spell_effect.c: Fix cast_create_food() to call
find_archetype_by_object_name() instead of find_archetype(). In this
way, players can use invoke without having to know the archetype name.
server/c_wiz.c: Modify command_banish() to record dm name, player name,
and date of command.
server/acinclude.m4: Patch by acinclude.m4 to add python 2.3 support.
Rebuilt files (Makefile.in, aclocal.m4, configure, configure.in). add
config.guess, config.sub since automake now includes them in the Makefile.in
file.
MSW 2004-05-15
Added a new item type: ground positioning system (GPS).
This lets a player know his/her location in the world.
Only works in 'world_xxx_xxx' maps.
include/define.h: add new item type, 'GPS' (162).
include/sproto.h: add new function, 'apply_positioning_system'.
server/apply.c: handle new item type.
Ryo 2004-05-15
server/spell_util.c: SP_level_spellpoint_cost() - never have a spell
cost 0 spellpoints due to attunement or other bonuses - spell always
cost at least 1 sp/grace.
server/main.c: Fix process_events() so it doesn't purge removed players
from the list - players get in the removed state at play again
prompt.
server/apply.c: Fix fix_auto_apply() so we don't generate additional
spells for spellcasting objects that already have them (regression
from fix from 5/11 below)
MSW 2004-05-13
server/pets.c: Fix summon golem, summon pet monsters so that the summoned
monsters are not worth any exp. Fixes bugs were players could
summon monsters and then kill them.
server/skills.c: Fix do_skill_detect_curse() and do_skill_detect_magic()
so that they don't process objects the player is incapable of picking
up (eg, floors). Fixes experience exploit.
server/apply.c: modify fix_auto_apply() so that it properly generates
items for creatures that start with objects in their inventory.
MSW 2004-05-11
server/spell_util.c: Fix cast_spell() so that failed spells (due to
encumberance or other penalties) still cost some random number of grace/
mana points.
MSW 2004-05-10
common/treasure.c: Change the loading of the artifacts file to actually
calloc() the object - reset_object() doesn't clear all the values,
like active_next, active_prev, so better to just do it there.
server/main.c: Add code in process_events() that checks for removed objects -
have seen occasional crashes caused by them.
MSW 2004-05-08
Armor enchantment now uses setting values.
common/init.c: new values to init in settings.
include/global.h: new setting values.
include/config.h: new default values for settings.
lib/settings: explanation for those new values.
server/apply.c: change armor improvement code to use setting values.
server/init.c: read new settings.
Ryo 2004-05-08
common/init.c: there's a #define LOGFILE, use it instead of hardcoded value.
include/config.h: change default logfile path to previous value in init.c.
server/c_wiz.c: Fix 'nodm' displaying incorrect messages, and forgetting to
update player count on map.
Ryo 2004-05-08
server/apply.c: Fix apply_special() to properly deal with LAMP objects - it
wasn't dealing properly with the split off lamp compared to the one it
was supposed to deal with - was crashing server.
MSW 2004-05-04
common/item.c: describe_monster() - print luck when describing players (fixex
perceive self not showing luck)
server/attack.c: kill_object() - don't give player exp if he kills himself -
compare owner against what was killed, not the hitter.
server/pets.c: summon_object() - move breaking out for last treasurelist
after we set the last valid treasurelist - otherwise, the list entry for
the treasurelist was never used. Change summoned creatures so that
the items they have are god given, and thus disappear when they
are killed - prevents players from summoning and then looting their pets.
server/spell_attack.c: explode_bullet() - Get owner of the spell so that we
can properly tailor the explosion portion of the spell for the god
of the worshipper.
MSW 2004-05-03
server/shop.c: patch from Andreas Kirschbaum for Windows compilation.
server/spell_effect.c: patch from Andreas Kirschbaum for Windows compilation.
Ryo 2004-05-03
common/porting: changed open_and_uncompress to use const char* instead of
char*, since value shouldn't be changed (and isn't).
include/libproto.h: changed prototype for open_and_uncompress
Ryo 2004-04-28
------------------------------------------------------------------------------
Changes for 1.6.0:
configure, Makefiles: Rebuilt for 1.6.0 release
doc/*/Makefile.am: Modified to use one makeps.pl utility in scripts directory.
doc/scripts/makeps.pl: Make this the definitive copy - fix problem with it
trying to combine big images when it doesn't need to. Remove other copies.
doc/playbook/chap1.tex, doc/playbook/chap5.tex: Fix some obvious errors,
but overall, the playbook is still quite out of date.
doc/playbook/treas2-extract: Have it not include abilities in given items,
have it properly deal with multiple underscores in arch names.
doc/spoiler-html/spoiler.html, doc/spoiler.ps: Rebuilt
MSW 2004-04-26
server/apply.c: apply_savebed() - make call to terminate_all pets before
call to remove_ob() so that pets are properly removed.
common/item.c, server/c_object.c: Fix code so that skill tools (talismans,
holy symbols, etc) are properly describe. Clean up formatting of long_desc()
MSW 2004-04-25
Change most shop buy/sell functions to use 64 bit values. Problem arises
where player would sell valuable item, and if they wanted to buy them back,
it would overflow a 32 bit value, so they could buy them back for free.
Note quite as odd when you consider the buy/sell price for really valuable
items to be very different.
include/global.h: Add UINT32_MAX and other max type defines for our typedef
values so that we have standard setting of what the cap is.
server/apply.c: Change get_payment call to take second argument.
server/plugins.c: Add note about bug in handling of query_cost in this
function.
server/shop.c: query_cost() now returns 64 bit. Many other functions
updated to also take/return 64 bit cost values. Have cost_string
nicely deal with values that are beyond affordability. Rename get_payment2()
to get_payment(), and remove the later, which was just a simple wrapper
function that called get_payment2.
server/spell_effect.c: Update alchemy code. Remove some suspect use of
static values.
MSW 2004-04-24
server/apply.c: fix check_weapon_power() so it operates on overall character
level and not skill level - this matches up what the out of skills
displays.
MSW 2004-04-20
common/button.c: Patch by Bernd Edler to have proper speed set for items
activated by buttons.
server/apply.c: Apply the 'special prayer' marker stuff, since it wasn't
used anymore.
server/gods.c: Check for FLAG_EQUIP on spells and not for a special prayer
marker to guess if a spell is a god given spell or not.
server/spell_util.c: Patch by Bernd Edler so that firewalls are immune
to casting time.
MSW 2004-04-17
server/shop.c: Decrease adjustment limit for expensive items to 10000 to get a
continuous adjustment function. That is you will get much less when selling
items with a value between 800pp and 2000pp.
Andreas Kirschbaum 2004-04-16
common/map.c: Change blocked_link() to take a map parameter. Also, change code
in blocked_link() to assume that the caller has set up appropriate map and
coordinates related to tiling (in all functions that currently call
blocked_link, this is the case)
include/libproto.h: Rebuilt.
server/move.c, server/player.c: update call to blocked_link to include the map.
MSW 2004-04-15
common/object.c: Change CAN_MERGE() so that it compares the stats structure of
the objects being merged. Fixes problems of rings improperly merging with
other rings that have different stat values.
server/monster.c: Modify check_earthwalls() and check_doors() to take a
map structure as an option parameter, and use that structure when
calling get_map_ob. Fixes a crash in cases where earthwalls/doors
were at the edge of a tiled map, and creature was on other map moving into
it.
server/move.c: Change move_ob() to adjust coordinates for tiling, and
pass in these adjusted coordinages (and map) to the check_() functions
in monster.c
random_maps/treasure.c: Apply patch by Andreas Kirschbaum so that it does
more work in trying to place keys on maps.
MSW 2004-04-13
common/living.c: Patch by Bernd Edler to remove cap on exp for players.
MSW 2004-04-09
common/item.c: If potion wasn't given a random spell, use the archetype
name when it is identified.
common/treasure.c: Fix potion codes so that healing and magic power potions
get the proper spell inserted into them. Also fix line termination issue.
server/skill_util.c: Add check in skill_attack() to make sure current_weapon
is not null - there has been some crashes here, but I can't figure out
how it gets to this state, so better to at least handle it.
MSW 2004-04-07
server/player.c: In flee_player(), make sure the enemy to the player is
on an actual map - fixes crashes.
MSW 2004-04-06
common/potion.c: Fix up change_abil() to more properly deal with potions -
characters could get 0 stat values. Also, messages were not being properly
displayed. Patch is slightly modified from one sent in by Bernd Edler.
MSW 2004-04-05
server/main.c: Add extra checking for valid map coordinates after we grab
them from the destination map itself - if a map is broken and has
default enter_ coordinates outside the maps range, this previously
resulted in a crash.
server/pets.c: Pass the correct map object into insert_ob_in_map().
MSW 2004-04-03
server/monster.c: fixed wiz's hidden mode not working on monsters.
Ryo 2004-03-28
common/porting.c
include/libproto.h
include/win32.h: added 'const' specifier to str-related functions.
Ryo 2004-03-26
common/exp.c
common/living.c
common/loader.[cl]
common/porting.c
server/c_misc.c
server/c_wiz.c
server/hiscore.c
server/resurrection.c: fixed %lld to %I64d for Windows.
Ryo 2004-03-26
server/attack.c: Add scare_creature() function, which sets FLAG_SCARED
and also sets up appropriate enemy. Clean up some formatting in
other functions, and fix friendly fire - move it out of the loop for
all attacktypes (can be after we have figured out max damage). Also,
has a bug where if an attach wasn't doing any damage, friendly fire could
actually make it do damage (eg, fear spell).
server/player.c: Fix up flee_player() to be map tile aware. Also, add
call to flee_player() in handle_newcs_player() so player will run away.
MSW 2004-03-24
server/attack.c: Add missing skill=NULL in kill_object() - can be rare
cases where the proper skill can't be found.
server/move.c: Fix push_object() so that it also updates the pushers/
pushees map - should only happen in tiled map cases.
server/pets.c: Fix summon_object() so that if a summon cult monsters was
cast, we try to find the god from the owner. If still can't find the
god, just return instead of crashing.
server/rune.c: Change trap_disarm() to call destroy_object() on the
trap object, so that all the trapss inventory is also destroyed
and not dumped on the ground.
server/skills.c: Only players without arms to steal.
server/spell_util.c: Change cast_spell to set up the skill pointer for the
caster even if the caster is the wizard.
MSW 2004-03-22
server/treasure.c: patch from Bernd Edler to enable multiple
'allowed' lines in artifacts.
Ryo 2004-03-12
Those fixes make DMs more 'stealthy' (when hiding/unhiding).
Also use yet unused colors for player join/leave, and DM join/leave.
This way those messages appear in a different window in split window
mode, to make the messages easier to spot.
server/apply.c: change color for player leave message.
server/c_misc.c: let DMs see hidden DMs.
server/c_wiz.c: make DMs more stealthy.
server/login.c: change color for player joining message.
server/main.c: change color for player joining/exiting message.
Ryo 2004-03-12
common/item.c: Fixed calc_item_power() to return valid item power for
items with high enchantments.
Andreas Kirschbaum 2004-03-07
server/spell_effect.c: small patch by Karla Stenger to put player's name
in the 'race' field of marking runes. This way, a DM can know who wrote
a rune, in case it has some bad vocabulary :)
Ryo 2004-03-06
server/spell_attack.c: change check_cone_push function to use arch weights.
move function up for resuability and change to check_spell_knockback
include/sproto.h: change function name
TM 2004-02-28
common/image.c: removed unused variables.
common/item.c: conditionally remove unused variables.
common/map.c: conditionally define variables, unused under Windows.
include/global.h: turned off a conversion warning under Windows.
Ryo 2004-02-28
common/living.c: changed 'signed char' to 'sint8' for set|get|change_attr_value.
common/map.c: map size is sint16, for arch_blocked.
include/libproto.h: update prototypes for set|get|change_attr_value and arch_blocked.
random_maps/rproto.h: changed prototype for surround_flag3.
random_maps/wall.c: changed surround_flag3 to use sint16 instead of int for map
coordinates.
server/apply.c: attribute values are sint8 in eat_special_food and
apply_changes_to_player. Some explicit casts.
server/player.c: map coordinates are sint16, in hideability.
server/spell_attack.c: map coordinates are sint16, not int.
server/spell_effect.c: stats are sint8 in cast_change_ability. Map coordinates are
sint16 in move_aura.
server/time.c: generate_monster doesn't return a value.
Ryo 2004-02-27
common/living.c: Have give_skill_by_name() update the skill pointers in the
player object.
server/spell_attack.c: Properly set maxhp in the cone spell - this is used
in ok_to_put_more() to make sure one spell doesn't hit a single space
too many times.
MSW 2004-02-23
common/object.c: Change CAN_MERGE() so that we never merge applied objects -
whether or not they are rings.
lib/*: different spell for dragons vs players for firebreath - update
treasures so monsters use ability version.
server/gods.c: Add missing call to link_player_skills(), resulting in players
having multiple praying skills.
server/skill_util.c: Change learn_skill() so we don't create a skill pointer
for the player if they didn't learn the skill (even if they can't use
such a created skill, it is still a bit confusing). Fix finding of
hand to hand skills to make sure the player can in fact use the skill
in question.
server/spell_attack.c: Fix cast_cone() so that it properly hits all directions.
MSW 2004-02-22
include/define.h,server/shop.c: Apply patch by Bernd Edler that gives
bargaining experience based on the amount of money a character saves.
Higher the bargaining skill, the more money they can save.
MSW 2004-02-16
doc/Developers/spells: Update type on casting_time - include suggested value
for times so that results are hopefully more coherent.
lib/archetypes, treasures.bld: rebuilt.
lib/treasures: Change some of the 'spelldirect' types to just the actual spells,
so that two seperate archs don't have to be maintained.
server/c_wiz.c: Add some basic sanity checking to command_remove() so that
we don't unnecessarily crash.
server/skills.c: write_scroll() - have it reset value of the scroll so that
the scrolls so inscribed by players have better chance of merging.
server/spell_attack.c: cast_cone() - if the caster is a trap, have it hit
the center space, so that characters who detonate cone traps will get hit
by the effects. Also, reduce range of cone spells if they are going
in all directions, compared to being targetted in a speciifc direction.
server/spell_util.c: cast_spell() - put lower limit on player speed_left value
when casting spells - since higher up the calling stack, the player speed
is also reduced, we need to set the lower limit here so that the player
isn't out of action longer than they should be.
MSW 2004-02-16
include/map.h: removed unused fields from wmapdef..
include/object.h: removed unused field from object.h. Changed glow_radius to sint8 to be
coherent with struct MapSpace.
include/player.h: removed unused fields from player structure.
server/apply.c: removed unused known_spell field.
Ryo 2004-02-16
common/object.c: change get_owner() so that it also returns no valid owner if
the owner is removed. This fixes a crash if a player quits but is still
sitting at the play again prompt when something he owns kills something.
server/skill_util.c: Fix show_skills() so that if the character has too many
skills for whatever reason, we don't crash, and instead print an error
to the player.
server/spell_attack.c: Fix typo - not sure actual effect, but probably nothing
good. '+ +' should just have been '+'
MSW 2004-02-12
common/Makefile.am: Clean up proto - lex seems to toss some new symbols in
now days.
common/map.c, common/object.c, server/player.c, socket/item.c,
socket/request.c: change parameters of get_map_from_coord from int to
sint16, so the op->x,op->y can get passed directly in. Update callers of
this function.
lib/archetypes: Add damned 1 to the shop floors.
server/pets.c: Fix problem with big (multisquare) pets following the owner
across tiled map boundaries.
socket/item.c: Fix problem of players being able to see everything within
containers by just looking at them.
MSW 2004-02-10
common/treasure.c: add_abilities(): For potions and horns (spell casting
objects) convert the other_arch into a spell and put into the object -
otherwise, the spell casting object casts the wrong spell.
common/object.c: Clean up formatting of copy_object. Only real code change
is to fix events - copied event data wasn't getting malloc'd, and thus
when another object of that event was freed, it freed the event data
for all objects derived from it.
common/treasure.c: Fix fix_generated_item() so that books generated by
monsters with no_pick set don't inherit that for the book itself.
Still do it for other objects of the creator type.
MSW 2004-02-08
server/c_object.c: fixed sack_can_hold for the 'won't fit' cast,
missing 'return 0'
server/gods.c: applied Karla Stenger's patch, making sure 'praying' is
applied when becoming fellower of a god
Ryo 2004-02-08
Changed map-building to work on non-unique maps too.
server/build_map.c: removed check for unique map.
Ryo 2004-01-19
Added map-building code. This lets players change unique maps,
adding & removing walls, doors, stuff like that.
New item types BUILDER & MATERIAL. New item flag FLAG_IS_BUILDABLE.
New range attack (builder).
----
Changelog: change prescribed date format to be coherent with usage :)
common/loader.l: added 'is_buildable' flag.
include/define.h: added defines for item types & subtypes, and item flag.
include/player.h: new range type 'builder'.
include/spropo.h: new function apply_map_builder.
server/apply.c: handle new range type.
server/build_map.c: new file, handles all build-related code.
server/c_object.c: added 'buildable item' to examine function.
server/Makefile.am: added build_map.c to compilation.
server/player.c: handle new range type.
socket/info.c: handle new range type.
Ryo 2004-01-18
Fix a crash related to plugin hooks
common/object.c: clear_object(): object's event's hook/plugin/options
are initialized with FREE_AND_COPY, so they are shared strings.
Better to release'em with FREE_AND_CLEAR_STR instead of
FREE_AND_CLEAR, else nice crashes...
Ryo 2004-01-16
Fix writing not inserting correctly item in inventory, and Windows-
specific stuff too
server/skills.c: write_scroll(): Better to insert spell in scroll,
and not the other way around
server/skill_util.c: fix Windows-specific int64 stuff.
Changelog: fix Mark's 2003 to 2004 :)
Ryo 2004-01-16
Fix a bunch of crashes observed on metalforge:
server/player.c: do_hidden_move(): Move call to find skill so that it is
always called.
server/skills.c: write_scroll(): Fix freeing of spell object in
scroll - newscroll->inv isn't valid after calling remove_ob, so
need to copy object to temporary pointer first.
server/spell_effect.c: cast_detection(): Pass in skill to use. If no
skill in use, use the caster object - fixes pointer derefence
as op->chosen_skill wasn't always set.
server/spell_util.c: modify caster_level() to always return at least 1.
Fixes pointer potential divide by zero problems - also guarantees
that players will be able to cast first level spells even if
repelled to that spellpath. ok_to_put_more() - Fix to use correct
map pointer variable. find_target_for_friendly_spell() - make it
so it handles tiled maps OK.
MSW 2004-01-15
common/object.c: fix the monsters on tiled maps bug that I may have
mentioned a while ago. Seems that the server assumed that all
parts of a multi part monster are on the same map as the head
while moving.
DVS 2004-01-12
common/living.c: fix fix_player() so that character gets benefits/penalties
for sp/hp/grace/etc regen bonuses as related to the god they worship.
server/player.c: dragon_ability_gain(): Modify so that character now gets
attacktype of new ability that they gain. Also, add code so that
the characters face/animation can change (getting set to values the bonus
ability).
MSW 2003-12-27
common/object.c: Set op->events=NULL in reset_object(), and move the
clearing of the op->events structure to be before the memset in
clear_object() - this was otherwise resulting in a memory leak,
as memset would clear the pointer without actually freeing the data.
server/attack.c: Fix indentation of hit_map(), modify it so that attacks
won't destroy items with no_pass set.
server/login.c: set op->speed=0, call update_ob_speed() before calling
reset_object() - fixes problem with players not moving with recent
changes to initting the active lists to NULL.
msw 2003-12-20
server/skills.c: changed NDI_UNIQUE to NDI_BLACK for the meditation
message (so that messages can correctly be grouped, also makes it
coherent with praying).
Ryo 2003-12-20
Those fixes deal with gcc3.3 infinite loop.
Fixes (except sizeof/memset) courtesy Bernd Edler.
---
common/item.c: use right buffer size for safe_strcat.
common/object.c: clear active_next and active_prev when cleaning an object.
include/define.h: fixed *curlen=maxlen-1; instead of *curlen=maxlen=1;
socket/init.c: initialize whole ns->inbuf.buf, instead of setting first
element only to 0. Also allocated with a sizeof( unsigned char ) * size,
in case size changes one day. And initialize some more fields.
Ryo 2003-12-18
Those changes deal only with warning cleaning under Windows.
Mostly, using the right type at the right place, or doing explicit casts.
---
common/object.c: changed free_arr_[xy] to short[] instead of int[].
include/global.h: changed free_arr_[xy] to short[] instead of int[].
Changed Windows-specific comments to C-style comments, not C++-style.
include/sockproto.h: play_sound_player_only takes sint8, not int, for
coordinates. play_sound_map takes a short for the sound number.
socket/image.c: some type fixing, explicit casts.
socket/init.c: Windows-specific type fixing.
socket/lowlevel.c: explicit casts to char for SockList_AddInt64
socket/request.c: fixed types to match function parameters, or added
explicit casts when needed.
socket/sound.c: play_sound_player_only takes sint8, not int, for
coordinates. play_sound_map takes a short for the sound number.
Ryo 2003-12-14
server/rune.c: Fix it so that players won't be hit by traps if they are
not next to them when set off (firing arrows at a door for example).
server/spell_util.c: Fix spell_failure() to properly damage player if they
fumble. Fix cast_spell() to not complain about not having enough
grace if the spell doesn't take grace. Add same check for mana, but that
is much less likely, as harder to get negative mana.
socket/request.c: Fix problem where map sending code was not properly avoiding
duplicating the head of a big image on multiple layers. This bug most often
manifested itself of player standing on lower right corner of large building,
and something else standing on other portion of building - player would seem
to disappear.
MSW 2003-11-30
lib/adm/collect_images.pl: forced binary mode for written files.
This lets the script work correctly under Windows.
Ryo 2003-11-29
server/apply.c: correctly display learned skill's name, and not the
scroll's.
server/skills.c: make 'sense curse' and 'sense magic' check items
on the ground too.
Ryo 2003-11-25
common/loader.l, loader.c: Fix firewalls so that their spell is properly
initialized - uses 'dam' and not sp for those objects
server/apply.c: Fix check_weapon_power so that it finds proper wc object.
Fix unapply_for_ob so that it won't unequip cursed/damned weapons if
player switches objects.
MSW 2003-11-11
bulk of this is to fix exp loss when changing gods if you have more than
2 billion exp, removal of spells when you switch levels, and not giving you
all new spells when you switch religions.
--
common/living.c: Update exp functions to be fully 64 bit aware. Don't
take away from player total exp if SK_SUBTRACT_SKILL_EXP is passed in.
common/utils.c: Add 64 bit version of random_roll(), called random_roll64()
lib/treasures: Make indentation consistent for some treasures.
server/apply.c: Use the FLAG_STARTEQUIP to denote god given spells, instead
of using special prayer markers. This simplifies the spell learning
and removal code.
server/gods.c: Make exp loss for changing religions 64 bit compliant.
Fix become_follower() so that it doesn't give all the new gods special
spells if you switch religions. Fix code so that it properly removes
all special prayers from previous god, and also print out message on what
spells you lost. Don't set the prayer skill as applied in various
areas - this results in two skills being applied, which isn't proper.
MSW 2003-11-09
common/living.c: Win32 compilation fix (levels is sint64, not uint64)
include/plugin.h: new hooks for free & fix_player. Required for Win32.
include/plugproto.h: new prototypes for CFWFreeMemory and CFWFixPlayer,
wrappers for free( ) and fix_player( ). Required for Win32.
include/sproto.h: added prototypes for new plugin hooks and improved tell
command helper.
plugin/plugin_python.c: wrap calls to fix_player, free and free_object
with plugin ones when memory allocated by CF's main exe. Required for
Win32 to work correctly.
server/c_chat.c: improved 'tell' command to accept first letters of player
name only, case-insensitive. If 2+ players match, returns with a failure
message.
server/player.c: new function find_player_partial_name. Returns player whose
beginning of name matches specified string, NULL if more than one matches.
Fix move_player to check specified direction's validity.
server/plugins.c: added wrappers for free( ) and fix_player( ). Required for
Win32 compatibility.
Ryo 2003-11-07
common/treasure.c, doc/Developers/spells: Fix generation of rods so they have
enough charges to cast the spells. Update documentation on what maxhp for
the archetype of rods means.
MSW 2003-11-01
server/player.c: Fix crash in stand_near_hostile when it is called on
tiled maps with player near edge.
MSW 2003-11-01
Various bug fixes:
common/arch.c: Fix item_matched_string() so that it only passes in the length
of the pssed in name in the strncasecmp(), and not the shorter of the
passed in string or item name. Otherwise, if player does a 'drop wand of',
unidentified wands (name just wand) would match. Similarly, if a player
did 'drop ringmail', unidentified rings would match, etc.
common/living.c: Fix fix_player() to always process the praying skill with
respect to resistances and whatnot. This is necessary because the
god give abilities are put in this skill, and those shouldn't go away
depending on if the skill is in use or not. Also fix bug in add_exp
routines which wasn't multiplying permanent exp by PERM_EXP_GAIN_RATIO
common/object.c: Fix find_obj_by_type_subtype() - had extraneous semicolon
after the for loop, so the if code that was supposed to be for each object
was never called and instead would crash as it would get called with tmp
was null.
server/attack.c: Fix problem with kill_object() not finding proper skill -
it would use the skill object instead of the skill. Fix problem of
poisoning not setting up proper skill name in poisoning object.
server/c_range.c: If player is invoking a spell, don't update their
range_magic value.
server/skill_util.c: Fix divide by zero problem if improperly passed
skill object.
MSW 2003-10-26
TRIGGER_MARKER:
common/glue.c, common/button.c, include/define.h, funcpoint.h, libproto.h
server/init.c: Add trigger_marker (type #52) which is a Marker that can be
triggered. Useful for placing forces in player when connected trigger is tripped.
TM 2003-10-26
common/glue.c, common/object.c, common/player.c, include/funcpoint.h,
server/init.c, server/monster.c, server/shop.c, server/skill_util.c: add
find_skill_by_number() function - this replaces find_skill. Locate new
function in skill_util.c, which is more a proper place than
common/player.c - this change necessitated adding glue function pointers
so the other common files can call it.
server/spell_effect.c: Fix cast_heal() so if the spell is not one that heals
hit points, don't process the code that checks for that and sets
a false success value.
socket/metaserver.c: Clean up formatting - no code changes.
MSW 2003-10-25
server/apply.c: small fix to apply_spellbook in the rare case when
the spellbook contains no spell (happens when DM issues a bad
'create' command for instance :).
Ryo 2003-10-04
server/c_new.c: fix command_run and command_fire so they check
the given direction is [0..8]. This enabled weird things like
hitting non-adjacent monsters.
Patch by Karla Stenger on cf-devel, slightly modified by me.
Ryo 2003-10-21
common/arch.c: fix item_matched_string() so that matching makes sense -
the ordering was wrong, so that we would match something with a low
priority, and skip over looking to see if that same object would get
a better match. Order the function so that we look for the best
matches first.
MSW 2003-10-08
socket/request.c: Clean up some compile warnings. Improve big face
handling - there were cases where data wasn't being sent when
it should have, and vice versa. Basically, do better checking
to see if we should send a big face for a particular layer, and
also better checking to make sure we don't send the same face more
than once for the same layer. Also, change esrv_map_scroll()
to clear out spaces that appear into view - adds a little extra bandwdith,
but necessary because otherwise the fact there is a big face on the edge
doesn't always get sent.
MSW 2003-10-07
TODO: various updates.
common/button: Old patch by David Seikel: change inventory checkers so that
the monster/player is also checked against. And do more proper for checkers
that check against slaying or race - if the trigger doesn't have
those set, we don't want to compare a null against another null and
get success).
server/apply.c: Change apply_shop_mat() so that it removes unpaid objects from
monsters (or thrown containers for that matter). Old patch by Bernd Edler
to improve messages dragons get for eating various food types.
server/player.c: Add another missing call to fix_player(). Modify
move_player_attack() so that the target player doesn't hit back if
they are the WIZ or on a battleground
MSW 2003-10-06
utils/player_dl.html utils/player_dl.pl.in: New files - scripts for allowing
character directories to be downloaded over the web.
configure.ac: Add check for 'tar', so that we can put it in the script above.
Makefile.in (All of them): Changed because TAR variable propogated to them.
MSW 2003-09-30
server/time.c: Real change is to add a missing call to fix_player - without
this new players would be getting messed up maxsp/maxgrace values. Cleaned
up formatting in move_player_changer() while doing the other change.
MSW 2003-09-28
common/living.c, include/libproto.h: Update some functions to take 64 bit int
values for exp usage.
random_maps/random_map.c: Don't ever make rogue maps symmetric -
creates unconnected maps. Clean up layoutgen() to not have a bunch
of duplicated code.
MSW 2003-09-25
server/skill_util.c: Call esrv_send_inventory on the cauldron if we
performed alchemy. Needed for cauldron's contents to get updated.
MSW 2003-09-23
Modified files:
TODO common/anim.c common/arch.c common/button.c common/exp.c
common/init.c common/item.c common/living.c common/loader.c
common/loader.l common/logger.c common/object.c
common/re-cmp.c common/readable.c common/recipe.c
common/treasure.c doc/Developers/objects
doc/Developers/protocol doc/Developers/python
doc/Developers/skills doc/Developers/spells
include/Makefile.am include/Makefile.in include/attack.h
include/config.h include/define.h include/global.h
include/includes.h include/libproto.h include/living.h
include/map.h include/newclient.h include/newserver.h
include/object.h include/player.h include/plugin.h
include/skills.h include/sockproto.h include/spells.h
include/sproto.h include/timers.h lib/Makefile.am
lib/Makefile.in lib/animations lib/archetypes lib/artifacts
lib/bmaps lib/bmaps.paths lib/collect.pl.in lib/crossfire.0
lib/crossfire.1 lib/faces lib/formulae lib/settings
lib/treasures lib/treasures.bld lib/adm/collect_images.pl
plugin/plugin_python.c plugin/include/plugin_python.h
server/Makefile.am server/Makefile.in server/alchemy.c
server/apply.c server/attack.c server/c_misc.c server/c_move.c
server/c_object.c server/c_party.c server/c_range.c
server/c_wiz.c server/commands.c server/disease.c
server/gods.c server/init.c server/login.c server/main.c
server/monster.c server/pets.c server/player.c
server/plugins.c server/resurrection.c server/rune.c
server/shop.c server/skill_util.c server/skills.c
server/spell_effect.c server/spell_util.c server/swamp.c
server/time.c server/weather.c socket/info.c socket/init.c
socket/item.c socket/loop.c socket/lowlevel.c
socket/metaserver.c socket/request.c socket/sounds.c
Added Files:
server/spell_attack.c
Removed Files:
include/skillist.h lib/skill_params lib/spell_params
Updated code for skill + spell code. skills and spells are now objects.
tuning these now means changing the archetypes. New spells can now
be added just by making a new archetype. Lots of code cleanup
also done.
MSW 2003-09-12
TRAPS:
include/define.h
common/object.c, treasure.c
server/attack.c, skill_util.c, skills.c, rune.c, time.c, player.c,
apply.c Established new type traps distinguished from runes. Traps
are more mechanical in nature, not impacted by detect magic or
counterspell (maybe in future once skills are settled out more fine
tuning changes in detecting and disarming these too...). Traps also
can now trigger connected objects if they are detonated. Migrated
traps to new type and made new generic trap archetype for more complex
trapping (ye olde red shaded tile...) TM -2003-09-04
friendly_fire:
Added friendly_fire to attack.c, called from hit_player.
Will put a cap on maxdam that is a percentage (1-100%) of damage (min
1) based on SET_FRIENDLY_FIRE value when players attack in peaceful
mode. Changed who, statistics to show this setting better and added
help file for peaceful. It would be nice to have a indicator in the
client for this as well. TM - 2003-08-25
protocol/doc/code:
Changed the way smoothing is done. Switched the smooth
command to binary mode, rebuild archetype files, added doc
on smoothing, updated protocol file.
Changed a the "togglemapextended smoothing" to "togglemapextended
smooth" to prevent problem of compatibilities with previous cvs
smoothing releases.
Tchize 2003-07-08
protocol:
Added new command to send extended map informations to the
client. Mainly used for now to send smoothing informations.
Also commented the modifications in the protocol file ind doc/
lib/Makefiles:
Changed to install the smooth file too. Needed by smooth code
common/loader.l and loader.c
completly reworked get_ob_diff to improve speed at mapsave time.
For now function is interlaced with commented old code. Will clean
up when code will be proved working. (hope middle of july)
Tchize 2003-07-03
server/apply.c: Fix auto_apply - missing else, causing extra
treausres to be generated inside of shop tiles.
server/monster.c: Fix npc_call_help to be map tile aware.
MSW 2003-06-18
lib/collect.pl.in: Modify it so that it will collect .trs (treasure) files and
build a treasures.bld from that as well as the existing treasures file. In
this way, treasure information for objects can be put in the arch
directory.
lib/Makefile.am, Makefile.in: Modified so that it copies over the
treasures.bld to treasures in the destination directory. Have
the collect directive also build the images, so that a double
make isn't necessary.
lib/treasures.bld: Added file - like the archetypes, this is the pre-
build treasure file. Until .trs files are added, this will just
match the treasures file with some additional comments.
MSW 2003-05-26
common/map.c: Fix bug causing unnecessary crashes - ok for the map
to match if the object has been removed.
socket/loop.c: Only make call to draw_client_map() if we have a valid
map to draw.
MSW 2003-05-26
common/anim.c: Patch by AV to make sure multipart monsters animations
stay in sync. MSW 2003-05-25
server/apply.c: Fix bug in that we weren't calling esrv_map_scroll()
when player used a shop map but lacked sufficient funds to pay
for his items.
MSW 2002-05-23
common/item.c, common/utils.c, include/config.h: Add #define NEW_MATERIAL_CODE
and checks in the other files for this - if this is commented out
(default), then the new material naming code is disabled - material
names won't be put in the items names as shown in the inventory
(can still see material by examining an object), and objects that are
created will be created with the default material (eg, iron for
most armor/weapons, eg, brass, bronze, copper items won't show
up anymore).
lib/settings: Add comments from the old config.h file that describes
what the options already does. Having no comments in this file
or in config.h anymore is very unfriendly.
MSW 2003-05-20
server/player.c: Have players start at max hp/grace/sp.
MSW 2003-04-14
server/c_range.c: Add check to make sure we are actually removing a
golem and that the object hasn't been freed/recycled and the
player not updated. Fixes crashes.
MSW 2003-04-13
acinclude.m4: Update path to find python includes, since aclocal.m4 gets
derived from this file.
configure.ac, configure: Add utils/scores.pl to list of files to substitute on.
common/loader.l, loader.c: Add subtype for objects - will be used in future work.
common/object.c: Add subtype diff check in CAN_MERGE()
common/porting.c: Have it use SAVE_DIR_MODE when doing the mkdir, and not have
hardcoded 777 permissions.
doc/Makefile.in, doc/Makefile.am, doc/Developers/Makefile.am,
doc/Developers/Makefile.in: Move some of the spell docs around and merge
them together
doc/Developers/objects: Add notes about subtype.
doc/Developers/spells: New file, contains preliminary work on spell objects.
include/config.h: Remove command about DM_MAIL and LIBDIR from file, as they
are options no longer present. Update comment about SAVE_MODE, and add
SAVE_DIR_MODE
include/object.h: Add subtype field to object.
server/login.c: Have it use SAVE_DIR_MODE when doing the mkdir, and not have
hardcoded 6700 permissions.
utils/Makefile.in: Updated to know about scores.pl
utils/scores.pl.in: New file - reads player file to generate HTML score
file.
MSW 2003-04-04
TODO: Various update
aclocal.m4,configure: Update path to find python (fix again)
common/image.c: Minor update to a ocmment in the code.
common/los.c: Add missing P_OUT_OF_MAP checks that resulted in some incorrect
LOS calcuations.
include/funcpoint.h: Remove draw_func function pointer.
lib/Makefile.am, in: Remove bmaps.paths to from being installed or being part
of distribution - bmaps.paths is only needed when collecting the image
lib/*: Rebuilt
server/c_object.c: Patch by Bernd Edler to have the apply functions take into
acount if the item is equipped or not when looking for good matched items.
server/commands.c: Move printlos to normal commands. I don't think it reveals
any information that is in any way harmful. And since it dumps the
output to the players screen, no concern of it filling up log files.
Also, when doing LOS debugging, it is pointless to have it as a DM command
because LOS is ignored for DM's.
server/disease.c: Modify remove_symptoms to remove all symptoms the player
may have a disease. Modify infect_object() to not allow a creature to
have more than one instance of the same disease.
socket/info.c: remove draw() - instead, draw_client_map() can be used,
as that is most the only thing draw() did anyways.
socket/loop.c: Update draw() calls to draw_client_map()
socket/request.c: Remove special handling for darkness==4 cases (first
space that is in full darkness) - this is extra complications and causes
display problems. Update draw_client_map() to include the little bit
of logic that draw() had that this function did not have.
MSW 2003-04-01
common/glue.c, include/funcpoint.h: remove draw_func() pointer - no longer
needed, so code that sets up pointer removed.
lib/*: rebuilt - facings added to old player animation information.
ruined_temple archetype added.
server/init.c: remove set_draw() function
server/player.c: remove call to draw() - socket code takes care of this.
MSW 2003-03-24
server/spell_effect.c: Some code cleanuip to cast_change_attr - mostly
to combine the processing of the stat improving spells together.
The actual change to playability is that bless and holy possession
don't stack if cast multiple times.
server/spell_util.c: Modify create_aura so that player can't have more than
one aura (of the same type) active at a time.
MSW 2003-03-20
server/apply.c: Change weapon improving code to only use up the number of
potions that it needs, and not all on the ground. Required adding
another arg to eat_item() which is the number of items to consume.
include/sproto.h: Rebuilt for new eat_item() (actually, a static, so no
longer shows up in this file)
server/attack.c: Change did_make_save to strip out magic attacktype when making
saves for objects - otherwise, things like poison cloud destroy objects.
server/time.c: deal with player animations special in process_object - need to
pass in the facing value, and not direction, since direction gets reset.
MSW 2003-03-19
common/anim.c: Pass direction to animate_object() - needed for player
animations as player's facing may not match direction.
crossedit/Attr.c, server/main.c, server/time.c: Update calls to animate_object()
include/libproto.h: rebuilt
include/newserver.h, plugin_animator/animator_box.c, socket/init.c,
socket/request.c: Remove newanim field from socket structure - not needed -
how to animate is determined by object, not by socket.
server/move.c: Add check to P_OUT_OF_MAP in teleport function.
server/player.c: change move_player to call animate_object, so it gets full
power of functionality it supports instead of 4 way hardcode animation
information.
server/spell_effect.c: When altars are consecrated, don't look to arch name
for first portion of name - always call them Altar of %s - fixes problem
where altar is special god altar that has god's name in archetype, resulting
in altar of .. of ...
MSW 2003-03-18
Patch for 64 bit experience total, as well as flexible number of levels.
Basically, max level is now dynamic, set in exp_table file. Experience
is now a 64 bit value, so much higher totals now allowed. To
allow for flexible levels, add new function - did_make_save() which is used
for players/monsters to see if they make their saving throw - this is
necessary because the savethrow[] array may not be as large as max level -
did_make_save takes this into account.
NOTE: If your updating a server, you will need to copy over/set up a
new exp_table file that has max_levels defined and at least one of the
tables uncommented. There are no longer any compiled in defaults
--
configure, configure.ac: Add AC_CHECK_SIZEOF calls for long and long long
so we can know which one to use for 64 bit support (other checks
may need to be added)
common/exp.c: Remove levels table, replace it with a 64 bit pointer.
Change init_experience to allocate appropriately sized table, have it
read max_level value from exp_table file. Replace atoi calls with
atoll to get 64 bit value. Update dump_experience to properly
print 64 bit values.
common/info.c: Update dump routines that dump exp to properly print
64 bit values.
common/init.c: Add initializing for settings.max_level value.
common/item.c: Update sprintf's to handle 64 bit output of exp (speed)
value in objects.
common/living.c: change MAX_EXP define, update MAX_EXP_IN_OBJ define,
add MAX_SAVE_LEVEL which corresponds to how large the savethrow
table is. Change MAXLEVEL to settings.max_level. Change level_exp()
to return 64 bit value, other updates in functions to use 64 bit
values. Add did_make_save() function.
common/loader.l, common/loader.c: Update load/save routins of exp to
deal with 64 bit values.
common/map.c: Update calculate_difficulty to use 64 bit values when
storing exp - unlikely to make a difference, since unlikely any map
will get to a point where it has that much exp on it.
common/porting.c: Remove dead code from save_long(), add save_long_long()
to save 64 bit values.
include/autoconf.h.in: SIZEOF_LONG and SIZEOF_LONG_LONG values added.
include/global.h: Add code to typedef sint64/uint64 types based on what
type gives us those values. Add max_level to settings array.
include/libproto.h: rebuilt.
include/living.h: Replace exp field with 64 bit value.
include/player.h: Update party kill log exp tracking to have 64 bit
values.
lib/exp_table: Udpate comments about max_level, uncomment what
was the default table so new installs have working table.
Add 5 levels to all the tables.
random_maps/monster.c: Update place_monsters to use 64 bit when storing
exp total for map/per square.
server/apply.c: Replace MAXLEVEL with settings.max_level, add
did_make_save calls where appropriate
server/c_misc.c: have statistics command properly print 64 bit
exp value.
server/c_wiz.c: Have stats command properly display 64 bit value.
server/hiscore.c: Replace exp values with 64 bit values, update to
properly load/display them.
server/player.c: replace savethrow[] reference with did_make_save()
server/skill_util.c: Update skills command to properly show 64 bit exp values.
server/spell_effect.c: replace savethrow[] reference with did_make_save(),
allow players to cast directors right beneath themselves, but other
walls must be on empty space.
MSW 2003-03-07
Various bug fixes.
crossedit/Attr.c: Minor cleanup to eliminate some compile time warnings.
plugin/plugin_python.c: Remove some unused variables, thus fixing up some
compiler warnings.
random_maps/random_map.c, random_maps/random_map.h, random_maps/special.c:
Add MIN_RANDOM_MAP_SIZE values instead of hardcode constants.
server/monster.c: Fix communicate - odd bug can be map gets swapped out
just after player is transferred to another map, causing crashes as
map that was originally spoken on is no longer in memory.
server/rune.c: add missing free_object call when erasing runes.
server/skills.c: Change write_on_item to determine type of writing based
on content of mesage, or lack thereof, and not the marked object.
Fix problem of buf not being initalized.
MSW 2003-03-06
Various bug fixes.
Makefile.am, Makefile.in: Put crossedit as the last directory, so any build
errors for crossedit doesn't effect anything else.
README: Update ftp site listing.
TODO: More things aded.
aclocal.m4, configure: Add missing / when checking in /usr/local for
python headers.
common/map.c: Add some debugging in free_all_objects that checks to make sure
there are not objects remaining that belong to the map just freed -
only active if MANY_CORES is set.
random_maps/random_map.c: Increase minimum random map size to 10x10 - this
is need for square spirals to work properly I think.
server/spell_effect.c: Have perceive self tell dragon players what they are
currently focused on. Fix town portal to remove force objects from
players if destination is no longer available.
server/swap.c: Reset maps reset_time when loading them in in read_map_log() -
this is only used if recycle temp maps is on. Also, do sanity checking
on reset_time value - bogus values were observed on metalforge.
socket/request.c: Update map timeout in draw_client_map() - in this way,
we don't swap out a map within a players view only to swap it back
in.
MSW 2003-03-01
------------------------------------------------------------------------------
Changes for 1.5.0:
*/Makefile.in, related files: Updated for 1.5.0
server/attack.c: Don't change weak wall image if no damage was actually done.
server/c_object.c: Include math.h - needed for pow()
server/spell_effect.c: fix infinite loop in town_portal
MSW 2003-02-24
common/anim.c: Fix for 8 way facing animations.
lib/treasures: Add sheep treasures
lib/* (rest) - rebuilt
server/spell_effect.c: Fix up counterspell - mainly fix a bug in that if
counterspell hit a multipart magic that used magic as an attacktype,
it would also crash. However, code also woudln't work properly on
tiled maps, and I'm dubious if it would work properly if there was more
than one effect on a space.
MSW 2003-02-23
server/skills.c: Fix jump so that it updates the clients map properly.
server/spell_effect.c: insert town portals below the player so it
works better with apply.
MSW 2003-02-20
server/move.c: Fix transfer_ob so that it sends newmap command to client
if we're moving a playing - otherwise fog of war displays bad
information on the client.
MSW 2003-02-19
More bugfixes:
server/c_wiz.c: Fix reset command - while it deleted the maps, it made things
so that it never got removed from the map listing - instead, just let
flush_old_maps do most of the work.
server/main.c: If player tries to enter a random map that has been reset
and that we have no informatino about (eg, going up in a dungeon),
just say the exit is closed instead of making a completely random map
that usually isn't in keeping with the dungeon (and still won't lead
outdoors)
server/move.c: In move_teleporter(), change it so that if a player uses
a shop map yet there is no place to put the player, just drop him on
top of a monster - this fixes problem of players getting trapped inside
of shops in random dungeons.
MSW 2003-02-16
random_map/random_map.c: Include parameters used to make map in msg of map -
this can hopefully be used to debug what is really happening when bad
maps are made.
server/rune.c: Modify dispel_rune function (called from disarm spell)
to erase marking runes. While at it, fix it so that it does the right
thing with respect to tiled maps.
MSW 2003-02-15
include/sproto.h, server/move.c: Modify try_fit() to take mapstruct parameter
for which map we are trying to fit this on - fixes problems with rolling
boulders accross map (only function that currently uses this).
MSW 2003-02-14
common/item.c: make item_power stop showing up in ring short descriptions.
fix some of the items that were double-displaying materialnames, like
mithril mithril chainmail.
common/loader.l: add tooltype
common/utils.c: Unless the object is armour or weapons, pick the first
materialname we find. Now, newly generated diamonds will stack.
Fix name_to_material to return NULL if it finds nothing, fixes
navar_city/museum crash.
Change set_materialname to take a materialtype_t argument, allowing
functions to manually set the materialname, rather than let the
randomizer pick for them.
include/define.h: Add TOOL and BUILDFAC for item building.
include/object.h: add tooltype for item building.
include/materials.h: add M_SPECIAL. Set this in an object, to prevent things
like mithril mithril chainmail. This is primarily only needed in
artifacts, because they change the base material of the arch. Also
useful in things like the demonspawn shield, and on maps.
lib/artifacts: sprinkle M_SPECIAL around.
server/player.c: remove auto_heal. This never should have been
committed, and was never referenced by any code.
server/c_object.c: add item building, but add it disabled. Too many
bugfixes were tied in with this code to cleanly add them. When
enabled, this code will add player item building, similar to
create to take place. Requires a host of graphics and arches
to be useable.
garbled 2003-02-13
random_maps/special.c: Fix possible bug with placement of special maps.
Add lore/endlore to object structure to hold general information about objects:
common/loader.c, common/loader.l: Add loading and saving of lore field.
common/object.c: handle lore field for copy/free/other object operations.
Also, update CAN_MERGE to look at materialname also.
doc/Developers/objects: Add notes about lore.
include/object.h: add lore field to object.
server/apply.c: Fix bug in that cursed weapons were not equipped/
unequipped.
MSW 2003-02-11
doc/Developers/objects: Add nodes about shared strings in objects.
server/c_misc.c: Remove check for name length - check_name takes care
of that for us.
server/monster.c: store return value from get_map_flags - seen some
crashes traced back to this area, want to see what it returned.
Allow objects with no msg to still use scripts that listen.
server/player.c: Fix potentional issue of freeing/adding players name
when they enter play again - seen some crashes attributed to
odd names.
MSW 2003-02-08
More bugfixes:
server/player.c: Fix permadeath without resurrection - wasn't deleting
player save files as it was supposed to. If permadeath +
resurrection was in use, I believe it all worked as expected.
include/shop.h: remove _SHOP_H after endif, causing compiler warnings.
include/skills.h: Add check to USING_SKILL to make sure chosen_skill
is not null.
server/c_chat.c: Add some missing return values, resulting in compiler
warnings.
server/skill_util.c: Remove unused variable. compiler warnings again.
server/spell_effect.c: Change dimension door so that you can't go
through spaces that block passsage and also block view (eg walls).
This goes back to the more traditional behaviour. Remove
some unused variables.
server/spell_util.c: Add missing P_OUT_OF_MAP to move_missile, resulting
in crashes.
server/time.c: if generator is not on a map, don't have it generates.
Fixes crashes.
MSW 2003-02-02
New materialtype system for crossfire. Based in concept on my original
design, but rewritten from scratch to make it easily extensible.
In a nutshell:
Each of the old materialtypes (metal, glass, stone, wood) are now a class
of materials. When an item in the game is created, if it does not have a
specific materialname of it's own, a materialname is generated randomly
from the matching entries in the "lib/materials" file. This file
contains all of the saving throws, and other material specific
modifications for each of the expanded materials.
Materials can be manually specified in the arch with the "materialname"
directive. Such as the gold coins, which are specified to be made of,
you guessed it, gold.
Saving throws have been slightly rewritten to use the new materialtypes,
and a few other minor details associated with materialtypes have been
patched up.
Adding a new type of stone or wood, is as simple as adding a new entry in
the lib/materials file. The game will automatically start distributing
them around randomly.
garbled 2003-01-29
Various bug fixes:
common/item.c: If nrof of an item is 0, have it print singular name and
not plural name.
server/c_object.c: Fix typo when printing value of optoins - had an
extra 'the' in place. Also, don't print value of objects with
no pick flag set.
server/login.c: Enforce maximum name length for new characters.
server/monster.c: Change parsing code for messages/@match code -
new code is simpler, and should also be simpler and less bug
ridden, but otherwise functionally equivalant. Also fix up
communicate to work properly on tiled maps.
server/spell_effect.c: fix up move_aura to not crash hopefully.
MSW 2003-01-26
More bug fixes:
common/item.c: Add missing braces - was resulting in some items getting
display like 'gauntlets of strength (Str+1)(Str+1).
include/map.h: Add MAGIC_MAP definitions to the file.
server/shop.c: Put back in code that uses magic_mapping_mark to determine
what items to display in inventory. Update for new one magic mapping
code stores information away.
server/spell_util.c: Add missing P_OUT_OF_FLAG check, which resulted
in crashes.
socket/info.c: Move MAGIC_MAP definations to map.h. Add check for
P_OUT_OF_MAP. Remove code that stops on P_NO_MAGIC - with that
it wouldn't search the shops.
MSW 2003-01-16
server/move.c: fix try_to_fit and roll_ob to work properly on tiled maps.
Also some performance improvements to those functions.
MSW 2003-01-12
Bulk of this commit is to improve code for tiled maps - replace
wall/blocks_magic/blocks_cleric, etc with get_map_flags which
also does map tiling translation as needed. This should fix a lot
of the bugs related to map tiling (there are sure to be more out
there - all the get_map_ob still need to be checked).
Other changes - many spells stopped progressing on spaces that
blocked view - that is now removed - didn't make a lot of sense.
Other fixes - some cleric spells (eg, word of recall) checked to
see if magic was prohibited, didn't check to see if cleric
was prohibited.
Clean up some bugs in the lighting code that would cause erroneous
results. Also, allow players to see immediately around them on
outdoor maps no matter how dark the map really is - behaviour
on indoor maps is the same.
Lots of code reformatted, and lots of obsoleted/dead code removed.
Add max range to dimension door.
Fix magic map - got broken when the layer stuff was redone - was
not showing proper colors. IT also works sensibly on tiled maps
now - rather than display based on the map, it gives the player a
50x50 area centered on where the player is.
Change fire_bow - move special player fire modes into own function -
makes code much cleaner.
Hopefully this fixes more bugs than it introduces.
common/los.c, common/map.c, common/object.c, crossedit/Edit.c,
include/libproto.h, include/sockproto.h, include/map.h,
include/spellist.h, include/sproto.h, random_maps/treasure.c,
random_maps/wall.c, server/attack.c, server/c_misc.c,
server/c_wiz.c, server/disease.c, server/main.c, server/monster.c,
server/pets.c, server/player.c, server/rune.c, server/shop.c,
server/skill_util.c, server/skills.c, server/spell_effect.c,
server/spell_util.c, server/time.c, socket/info.c: See note above
server/apply.c: Limit number of times weapon can be enchanted so
that it won't overflow item_power. Modify enchant armor
to enchant as normal armor is enchanted, also only allows one
item to be enchanted.
MSW 2002-01-07
common/item.c: Add 'unidentified' to display of examined items if the
item has not been identified. Only display spell regen penalty
for armour if there is in fact a penalty.
lib/archetypes: rebuilt for updated demon speed, pick up other new archs.
lib/animations, lib/bmaps lib/bmaps.paths lib/crossfire.0 lib/crossfire.1
lib/faces: rebuilt
server/main.c: Name random maps based on final map component (if available)
or map they are spawned from - this gives so clue in 'who' command
where the players really are.
server/monster.c: Fix code that would cause monsters to ignore golems/
avatars.
server/pets.c: Clean up a few warnings, fix bug in pet_move that caused
crashes - owner of a pet isn't always a player.
server/player.c: Remove on_same_map check - can_detect_monster also
performed check, so no need to have extra call.
server/spell_effect.c: modify alchemy to properly deal with tiled maps,
change behavior for spells that block view - they no longer block
alchemy, but spaces that block magic will.
MSW 2002-01-05
TODO - add notes about item damage - clear it out of my mailbox.
common/loader.l, loader.c: Add check at load time to see if monsters
hp is higher than its maxhp and print a debug message if so.
devel/Makefile: Remove - makefiles shouldn't be in CVS, only .in versions.
server/attack.c: Fix calculation of max_damage in kill_object - this
was being done incorrectly, resulting in fired spell objects causing
incorrect amounts of damage, resulint in some monsters ending up with
a lot of hp. Fix call to kill_object to pass in correct damage value.
server/monster.c: Put in check so that monster won't regen to more hp
than they should have.
server/spell_util.c: Removed unused variable from move_missile.
server/weather.c: fix bug that causes crash if empty space is encountered
on map.
MSW 2003-01-03
socket/request.c: Fix buffer (malloc) overrun in esrv_send_stats - more
stuff has gotten to be added, without ever increasing the size of the
buffer to hold it.
MSW 2003-01-01
server/time.c: Fix bad code in stop_arrow that caused crashes/improper
freeing of data.
MSW 2002-12-30
common/treasure.c: Fix initialization of treasure structs to use calloc.
server/player.c: Fix infinite loop.
socket/loop.c: Make sure we put in null terminator for socket data.
MSW 2002-12-26
New Arrow and Pet Code:
Add bowmode and petmode commands. Allowing the player to change the firing
style for bows to one of either threewide, or spreadshot.
Allow players to change the operating modes of his pet with petmode. Can be
either seek and destroy, defend, or normal historical behavior.
Change bows to impart speed to arrows based on damage and other magical
plusses. Damage decays over distance, to stop arrows from flying forever.
Very fast moving arrows will pierce multiple targets. An arrow moving at a
speed greater than 10.0 will go straight through a target, losing 1.0 of
speed in the process.
Change magic missile to use spell_find_dir instead of find_dir to stop it
from flying in a circle and hitting the caster, and to make it stop
flying into walls to hit creatures behind the walls.
Various bug fixes:
common/living.c: Reset glow_radius for players, so they stop glowing
after they snuff out their torch or whatever.
server/apply.c: Fix message about improving armour so that it is now
accurate.
server/monster.c: Add some debug lines that may show cause of excess
monster hp.
server/spell_effect.c: fix compile warning in summon_pet(). Clean up
indentation of alchemy functions, but functional changes is to
insert gold nuggets below player (so more of the actions work),
as well as to reset the view position, so that it won't have the
'previous 50' object selection. Add suggested parens in
cast_detection.
server/weather.c: Fix crash in weather code if snow was only object
on space.
MSW 2002-12-20
+++
server/weather.c:
More weather routines:
Now the game will attempt to completely reformat the world, and modify it
with the weather and elevation. When dynamiclevel is set to 5 or above,
the game looks at each tile, and the weather conditions present in that
tile. It then consults a table of different terrain types, and what
conditions they prefer to grow under. If the conditions match the spot,
and there is nothing special about the spot (like a house, or a road),
then we drop the new tile type on the overlay map on that location.
Tuning of this can be done at the top of weather.c, by changing the
weather_tile array.
Also.. add a feather_map() routine which tries to break up the blockiness
of some of the weather effects by spreading the tiles around.
This code works.. but needs tuning, and probably a little more testing.
Some of the conditions for the various tiles really need to be looked at,
and fiddled with.
garbled 2002-12-08
+++
common/exp.c: Fix bug were drain attacks added exp.
MSW 2002-12-05
server/player.c: Change move_player_attack() so that we look for monsters
to attack even after finding a rollable object - there can be non
blocking rollable objects with monsters on top - we want to attack
the monster, not roll the object.
MSW 2002-12-03
TODO: Move more items from my mailbox to the TODO list.
common/living.c: Init item_power in player to zero in fix_player() -
bogus results were getting generated as it just kept getting incremented.
common/porting.c: fix remove_directory so it works properly - checking
for . and .. entries too late, calling unlink instead of rmdir.
include/sproto.h: rebuilt
lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.0,
lib/crossfire.1, lib/faces: Rebuilt - new archs added, catch is_thrown
addition to thrown rock/boulder archs.
server/c_move.c, server/c_range.c: Add another parameter to do_skill() - part, which
is closest part of creature to target object - current only used
for the throw code. Update calls to this function to add additional
parameter.
server/c_object.c: Remove the NDI_UNIQUE from the 'item is too heavy
to pick up' so that it won't flood the client with them if players
goes onto space with lots of objects.
server/main.c: Minor cleanup to fix compiler warning about ambigous
if/else.
server/monster.c: Pass closest part of monster when having it use
a skill so that it doesn't throw rocks into itself. Update calls to
do_skill as described above.
server/player.c: Cal delete_player() when player quits - this properly
cleans up any per player unique maps they have. Also, check for
any such maps currently in memory, and delete those so that unique
maps don't get 'gifted' to the next character of the same name.
Update calls to do_skill as described above.
server/shop.c: Combine items of the same name together in the output
of the shop listings. Include the number of items, remove special
casing of some objects so that query_base_name is used for all item
types.
server/skill_util.c: Modify do_skill() to take additional param as
described above. Also, have do_skill return 1 on success,
0 on failur to use skill, and not return exp - otherwise,
monster code has no idea if skill was successfully used, as throw
doesn't grant exp, and this caused monsters to move into the
object they just threw. Update calls to do_skill as described
above.
server/skills.c: Clean up skill_throw function to return meaningfull
value. Also, pass along extra part of closest monster part
to target. Modify do_throw to return value, use closest
part of body as origin point for thwon object.
server/spell_effect.c: Use isqrt function instead of definining
ISQRT that used float version. Cleans up compile warning - most
likely not seen before as spell was #ifdef SPELL_ENCUMBERANCE out.
server/time.c: Put sanity checking for players speed_left in
move_player_mover() - got some reports of infinite negative speed
on metalforge, and this is the only place in the code where I could
see that happening given the description of the events.
utils/arch2xml.py, utils/cfarches.xsl: New script (and template) by
Todd Mitchell. Script can convert archs to xml, and the template
is usuable with mozilla to look at the output.
MSW 2002-12-02
common/object.c, include/object.h: Add INS_BELOW_ORIGINATOR flag to
insert_ob_in_map - this is used for treasure chests so the
treasure is put below the player. Also fix insertiong of items
on spaces that block view - put them in proper order, and not just
directly above the floor
server/apply.c: Tell player what level they need to be if they are not
of sufficient level to improve armor. Modify apply_treasure to
use INS_BELOW_ORIGINATOR flag, clean up some of the other logic
in apply_treasure.
server/c_object.c: Modify command_take to use the container inventory
when doing a pickup, and not the container itself.
MSW 2002-11-30
TODO: Updated with dm 'follow' command.
common/loader.l: Rebuilt.
common/map.c: Fix up some formatting - no code change.
include/player.h, server/apply.c, server/player.c, socket/info.c: Remove
chosen_item_spell field - isn't needed anymore as that information
is determined each time player fires wand/rod/horn. This fixes
those items firing magic bullets if they were equipped when player
saved and rejoined. Some additional cleanup done in rangetostring() -
mostly formatting changes, but minor code changes.
MSW 2002-11-29
include/shstr.h: Update REFCOUNT_TYPE to be an int - seems to at least fix
the bug of server crashing when running around the bigworld - given the
size of the maps, quite possible that enough objects of the same name
would be in memory to overflow the size size of a short.
MSW 2002-11-19
Changed a ton of #ifdefs into settings:
convert #ifdef NOT_PERMADETH into settings.not_permadeth.
SET_TITLE and RESURRECTION are now settings.
#ifdef SEARCH_ITEMS -> settings.search_items
#ifdef SPELL_ENCUMBRANCE -> settings.spell_encumbrance
#ifdef SPELL_FAILURE_EFFECTS -> settings.spell_failure_effects
#ifdef CASTING_TIME -> settings.casting_time
#ifdef REAL_WIZ -> settings.real_wiz
#ifdef RECYCLE_TMP_MAPS -> settings.recycle_tmp_maps
#ifdef SPELLPOINT_LEVEL_DEPEND -> settings.spellpoint_level_depend
#ifdef EXPLORE_MODE -> settings.explore_mode
make explore mode actually *work*.
#define MOTD -> settings.motd
#define DM_MAIL -> settings.dm_mail
garbled 2002-11-12
New alchemy code, as discussed on the developer list. Now recipies include
two new tags: skill and cauldron. With skill, you can set which skill
activates this recipie, and the cauldron, corresponds to the arch name of
the facility you will use when creating the item. In this way, item
creation is now more generalized than just alchemy, and specific formulae
can be written to utilize different skills, or perhaps special formulae
would require a hard-to-find cauldron.
Functionally, the alchemy, or alchemy-like-skills are now activated by
the use_skill command. The secondary use of the alchemy spell has been
withdrawn, so now it functions in the way it was originally intended again.
garbled 2002-11-11
socket/loop.c: add a setting fastclock. This makes the server's clock run
*really* fast. For now, it's good for debugging purposes, but in the
future it will allow a dm to ravage a world with weather quickly.
include/define.h: add FLAG_IS_WATER
include/global.h: add fastclock to settings
include/map.h: add water to weathermap structure
include/sproto.h: add tons of new functions in weather.c
common/init.c: update for FLAG_IS_WATER
common/loader.l: update for FLAG_IS_WATER
server/init.c: add code to read fastclock setting
server/weather.c: Complete update, largely rewritten. Now the world is
cut into a 100x100 matrix of weathermaps. Each one of these maps is
computed at initial boot, and written to disk, following which, they are
simply read from disk at boot. For each of the main weather types
(pressure, humitidy, base temperature, wind direction, wind speed) the
game recomputes the entire weathermap, applying smoothing algorithims, or
derriving each map from it's predecessor. Weathermaps are only used if
you have set your dynamiclevel to 1 or greater, and, are using the bigmap
set. At this time, there is still no functional change to the game,
bigmap, or not.
utils/maps.c: This program will generate ppm files from each of the
weathermaps. Mostly for debugging, but curious DM's might find it useful
to see the weather.
garbled 2002-10-27
server/c_chat.c: Fix some buffer overflow issues - use snprintf or
use new_draw_info_format instead.
lib/artifacts: Update some cloaks not to require a minimum magic level,
since that will never be met.
MSW 2002-10-16
Minor bugfixes:
common/living.c: Fix it so that if you die, you won't _gain_ exp in any
skills - could happen if new table is harder - 3 level loss could still
mean having higher exp total.
common/map.c: Fix on_same_map so check to see if either object has null
map value - prevents crashes.
MSW 2002-10-13
Experience cleanup - the main functional change is that no upper limit of
exp in an individual skill, save for the limit that there is an upper
limit of total exp a player can have. Thus, if a player concentrates
complete in one skill, he could get to level 110 in it. A lot of
code cleanup was done - so much had gotten added to the exp code that it
was a real mess.
common/living.c: re-arrange some of the code, so all the exp related
functions are together. remove adjust_exp(), change check_dm_add_exp_to_obj()
to check_exp_adjust. Add new functions add_player_exp(), check_exp_loss(),
check_exp_add(), subtract_player_exp().
include/libproto.h: rebuilt.
server/c_wiz.c: Update command_addexp() to use new exp functions.
server/gods.c: Update lose_priest_exp() to use new exp functions.
MSW 2002-10-11
configure, configure.ac: Remove --enable-old-layout option - that is more than
3+ years old now. Add --enable-dmalloc option so code can be compiled
with dmalloc debugging without needing to change/rebuild the configure
files.
common/porting.c: Add stdarg.h to list of included files.
include/autoconf.h.in: rebuilt, HAVE_LIBDMALLOC undef added.
random_maps/square_spiral.c: fix bound checking value.
MSW 2002-10-07
common/item.c: Fix bug with identified potions not getting set to proper name.
MSW 2002-10-03
Bugfixes: Add golem_count element to player structure so we can properly
detect when golem is destroyed. This fixes a crash in some places as the
code tried to remove this already removed golem.
Fix crash when null player maps.
include/player.h: Add golem_count element to player structure.
server/player.c: Add code in handle_newscs_player() that checks status of
golem, clears op->contr->golem is value is bogus
server/spell_effect.c, server/spell_util.c: Initialize golem_count
value when golem is created.
socket/request.c: Check for null map value.
MSW 2002-10-02
Mostly bugfixes, but the addition of a wiz 'hide' command which makes the
wiz out of sight so to speak.
--
common/loader.l, common/loader.c: Fix bug where flag values were being saved
with actual value of the flag (eg, 32768, 16, etc) instead of 1/0 value -
Code effectively worked the same, just was a bit odd looking at save files.
include/player.h: Add hidden element to player structure.
include/sproto.h: Add command_hide(), update proto for players_on_map()
lib/Makefile.am, lib/Makefile.in: add wizhelp/hide file.
server/apply.c: Add error checking to converts so it doesn't crash if the
converter doesn't have a proper other_arch. Modify shopmats so that they
don't transport spell effects, like fireballs an burning hands.
server/attack.c: Modify code so players can drain other players exp.
server/c_misc.c: Modify various functions to not show info on hidden DM.
server/c_wiz.c: Add command_hide(), clean up command_invisible() a bit.
server/commands.c: Add hide command to dispatch table.
server/main.c: Add code to not update players on map for hidden dm.
server/player.c: Give hidden dm perpetual invisiblity.
server/skills.c: Only get exp if you actually stole an item - fixes abuse
whereby players who couldn't carry item could continually 'steal' it from
monster and just gain exp.
server/swap.c: modify players_on_map() to take addition arg to determine if
real players on map should be shown, or if we shouldn't count hidden dms.
socket/info.c: Modify code so that oldsockets don't get reports on high verbose
messages.
socket/metaserver.c: Modify metaserver update to not include hidden dms.
utils/Makefile.in: update datestmp.
MSW 2002-09-27
server/pet.c: Add check to pet_move() to make sure the space we are
checking is within the map, and handle map tiling.
MSW 2002-09-23
Various updates:
NOTE - You need to install the updated archetypes (included below)
if you run this code without the updated archs, you will likely find
many things do not work.
acinclude.m4 aclocal.m4 configure: more refinements for libpython detection.
common/button.c: Two push_button() changes - have it check for ACTIVATE_ON_
PUSH/RELEASE to determine if the object should get activated. Also,
change behaviour of TIMED_GATE so that multipart timed gates work.
common/loader.l, loader.c: Update with acttivate_on_push/release
doc/Developers/objects: Add notes about how to add flags to objects.
include/define.h: add new FLAG_ values
include/win32.h: update by pstolarc so it compiles on Win32.
lib/archetypes: rebuilt
MSW 2002-09-17
common/map.c: Fix problem with ordering in check_linked() - checking
for NO_PASS was before checks for inventory checkers, resulting in
inventory checkers that require the player to have an item not working.
MSW 2002-09-15
------------------------------------------------------------------------------
Changes for 1.4.0:
server/disease.c: Change move_disease() somehwat - before, if you were
not susceptible to a disease, it would never run its course. Yet you
would still get stuck with the symptoms. there was a case on
metalforge where a character had a symptom with no disease, and
had immunity, yet was still getting stuck with the symptoms. Not sure
if this change will help prevent that in the future or not.
include/player.h: Change item_power in player structure to be 16 bits -
8 bit values were getting overflowed.
MSW 2002-09-14
INSTALL: Update directions with new automake method.
common/Makefile.am, common/Makefile.in: Fix code for building the libproto.h
file - it was including loader.l and not loader.c
common/exp.c: Add init_experience() and dump_experience() functions -
init_experience() loads the experience table from a file. Add default
experience table into this file
common/init.c: Add call to init_experience()
common/living.c: Remove experience tables - players can select the one they
want by changing the exp_table file. Remove reference to new_levels[] -
only levels[] is used now for the formentioned reason.
include/config.h: Update notes about SIMPLE_EXP system.
include/libproto.h: rebuilt.
lib/Makefile.am, lib/Makefile.in: Add exp_table to list of files.
lib/exp_table: New file that contains experience information.
server/c_object.c: Modify command_take() to look for objects above the player
to pick up, then objects below. This fixes the bug with not being able
to use the take command on items from a chest the player opens without
moving off the space.
server/init.c: Add -mexp dump switch to dump the experience table. Allow
the simple experience system to be set in the settings file.
server/skill_util.c: Fix oddness in calc_skill_exp() which could result
in add amounts of exp given.
MSW 2002-09-10
include/sproto.h: rebuilt
lib/help/killpets: New file
lib/Makefile.in: Add help/killpets file.
server/c_misc.c: Add command_kill_pets().
server/commands.c: add killpets command which kills your pets.
server/monster.c: Add some code in check_enemy so that the enemy
has to be a monster/generator/player to be considered valid -
I was seeing things like arrows ending up as target enemies.
MSW 2002-09-07
More bugfixes:
common/loader.l, loader.c: Fix up the handling with speed with respect
to style maps - the objects were still getting put on the active
list.
common/map.c: Fix up blocked_link() to behave more like the
blocked_two() function - inventory checkers and door handling.
Comment out blocked_two since it isn't used anymore. Modify
load_objects to remove objects on style maps from the active
list. Remove some of the debug messages about map loading.
common/object.c: Add remove_from_active_list() function for use
in map.c to remove objects from active list.
common/porting.c: Comment out debug message if open_and_uncompress()
can open a file - caller of the function should print out messages,
and it really isn't much of an error in any case.
include/libproto.h: rebuilt.
random_maps/special.c: Modify place_special_exit() - this should fix
bug of very large treasure maps - problem was if the generated map
size was too small, when generate_random_map was called, it would
generate a newly sized map that was much larger. Code was also
re-arranged some to make it a little more readable.
server/attack.c: Fix crash when creature may not have an owner and
it kills something else.
server/move.c: comment added - no code change.
socket/request.c: Fix off by one error in esrv_send_animation() -
rare condition as it only showed up when trying to send the last
animation (zombie) - only an issue if the player is put on top of
a zombie for some reason (no other space for them) - observed when
leaving the random dungeon in the undead church in scorn without
clearing out all the zombies first.
MSW 2002-09-06
CHANGES: Update build instructions for the plugin.
random_maps/square_spiral.c: Fix bug that could cause the search
function to go off the edge of the map looking for a clear space.
Doesn't happen often, but one crash did happen here.
server/monster.c: Fix some bugs with monsters and wakeup - remove
check for friendly that could never be true, and also fix
logic so that monsters will now find the players.
MSW 2002-09-05
common/button.c: Fix do_mood_floor() to look at all objects on space for
something to effect, not just things above the moodfloor.
server/attack.c: Add missing check to make sure the plugin exists before
we try to access the plugin function.
common/readlable.c: Fix crash caused by passing null value to mon_desc -
check for non null was at end of { } do loop - check should be at the
start.
server/monster.c: Make it so that monsters with see invisible are not
immune to blind - monster can be given appropriate resistance to make
it so it is not effected by blind.
MSW 2002-09-04
server/main.c: Move #endif in crypt_string to more proper place.
server/monster.c: Fix bad if statement that may have been waking up
monsters when they shouldn't have been.
MSW 2002-09-03
This change mostly deals with improving behaviour of pet monstes.
Most of the code is from K. Reinert - however, I did some code cleanup/
fixes related to pet monsters, so it is difficult to note where
each piece of code came from. One thing this does fix is handling of
multipart pets - these now work properly.
common/map.c: Update comment for get_rangevector() - no code change.
common/object.c: Add get_search_arr() which is used in pet monster code.
This returns a semi random scrambling of the freearr array.
doc/Developers/protocol: Update documentation about map1a protocol command.
include/libproto.h, include/sproto.h: rebuilt.
server/attack.c: Have drain attacks return 1 damage so that it is clear
that you are actually hitting your opponent. Otherwise, you would
get messages that 'you missed xyz', even though you are draining it.
This extra point of damage shouldn't change balance in any significant
way.
server/monster.c: Update hnadling of enemies for pet monsters. It should
more intelligently choose the monsters and not switch/clear the
enemy field for no reason anymore. Change find_nearest_living_creature to
use the get_search_arr() to more randomly choose direction of target -
before, there was a proclivity to always look in the north direction.
Modify can_hit() to look for closes part of enemy - otherwise, monsters
may not attack opponents even if they were right next to them because
they couldn't get to the enemies head. Remove move_object from
this function - merged with move_ob in move.c
server/move.c: Fix move_ob to use 'cleaner' code of move_object, but
also have specific features that move_ob had (player handling).
Before move_ob didn't handle multipart objects correctly, and the
two functions were largely the same. Now move_object() just calls
move_ob - the only difference in the functions is that move_ob()
takes 3 parameters instead of 2 of move_object() (added
parameter is originator). I think this should now mean multipart
player objects may now work.
server/pets.c: get_pet_enemy enhanced to be much smarter about
selecting/finding things for the pet to attack.
server/player.c: Remove commented out line of init_beforeplay
MSW 2002-08-31
server/attack.c: Modify drain attack code so that if some agent of the
player is doing the drain (eg, avatar, summoned monster, or even spell),
player gets exp added to his total. Otherwise, the agent could suck all
the exp out of the monster, resulting in no gain for the player.
Also, fix bug in drain code where uninitialized value was being used
if enemy had 0 protection to drain.
MSW 2002-08-30
Various bugfixes:
common/map.c: Change so that same logic is used to determine pclose/fclose
that is used to determine popen/fopen - otherwise, compressed map
files probably don't work properly.
common/treasure.c: Do a memset to make sure entire treasureslist is
set to sane values.
lib/archetypes: Fix 'slaying' field (which determines spell name) in
god_spelldirect_face_of_death and god_spelldirect_finger_of_death
server/apply.c: Fix infinite loop if the player had cursed items
that needed to be unapplied to apply an item - setting up next
item iteration was inside if check when it shouldn't be. Also,
print message to player if this is the case.
server/monster.c: Better format some of the code for improved readability.
Fix indentation of can_see_enemy. Clean up invisiblity check - may
have fixed a bug - old code should have worked, but wasn't very
readable.
server/move.c: Fix some bad code from last checkin - didn't fix
the crash on no floor for door type, and instead removed
check type from next line by accident.
server/player.c: Remove call for init_beforeplay - this is already
properly called, and re-calling it resulted in some things being
redone when they shouldn't be.
server/skills.c: Add message if there is nothing to steal form the monster.
server/spell_effect.c: Improve message when invisiblity duration is
maximized.
socket/init.c: change O_NDELAY to O_NONBLOCK of fcntl.
MSW 2002-08-25
doc/Developers/objects: Update with new (better) information from
Todd Mitchell. Doc is more complete, and now has an index which
should make it easier to find things.
server/move.c: Fix dereferencing NULL problem - was looking at op->above,
but op could be NULL if the map had no objects on a space (typically
not the case, but...) No reason I can see that we care about the object
above - just process in normal order.
MSW 2002-08-21
server/time.c: Possible fix for bug seen on metalforge -
in move_player_mover, make sure we are working with the head of the
monster.
MSW 2002-08-13
More spoiler-html fixes - was not including attacktype information, but
also fixed some formatting issues.
common/item.c: Include attacktypes in describe_monster.
doc/scripts/Makefile.in: Add monsters-extract.pl file.
doc/spoiler-html/Makefile.in: Update to use ../scripts/monster-extract.pl
file, remove monster-extract file.
doc/spoiler-html/spoiler.html: rebuilt.
MSW 2002-08-11
Fix spoiler-html generation to show resistances. Need to do normal spoiler
next. Add a new docs/scripts directory to hold the common scripts,
instead of spoiler, spoiler-html, playbook, and playbook-html each having
their own copies.
configure, configure.in: Add doc/scripts directory.
doc/spoiler-html/Makefile.in: Update build directions to use
../scripts/items-extract.pl
doc/spoiler-html/spoiler.html: Rebuilt with updated information.
doc/scripts/Makefile.in: Makefile for directory.
doc/scripts/items-extract.pl: perl version of the items-extract file.
doc/spoiler-html/items-extract: awk version - no longer used.
MSW 2002-08-02
common/item.c: Have describe monster show resistances of monsters - useful
for spoiler output, as well probe spell.
server/disease.c: Fix typo.
MSW 2002-08-02
include/global.h: add FREE_AND_CLEAR_STR macro, relocate DELETE_STRING
by the other macros.
server/c_misc.c: Fix string printout in applymode function.
server/disease.c: Update name_pl in diseases.
server/player.c: replace FREE_AND_CLEAR with FREE_AND_CLEAR_STR - was
freeing data that shouldn't be freed.
MSW 2002-08-01
Various fixes:
INSTALL: Update with note about --with-includes configure option.
common/loader.c, common/loader.l: Add comment about flag_invis_undead
include/define.h: Add FLAG_INVIS_UNDEAD
lib/adm/map_info: Modify to not follow symbolic links.
server/monster.c: Modify can_detect_enemy to be a bit more straightforward
in its logic. Also, modify detection of invisible creatures - don't
reduce duration, just return that the monster can detect the player.
There were also spurious messages about the player being seen.
Modify can_see_enemy to check FLAG_INVIS_UNDEAD, also fix broken
comparison
server/player.c: Clear FLAG_INVIS_UNDEAD when invisibility ends. Fix
action_makes_visible() - had reverse logic on FLAG_MAKE_INVIS check,
and a typo in the printed message.
server/spell_effect.c: cast_invisible() to use FLAG_INVIS_UNDEAD -
also check for maximum duration, and only search active objects when
clearing enemy.
server/weather.c: Fix off by one on comparision when intializing maps
darkness when loading map from disk. In dawn_to_dusk, don't do
further processing if the light hasn't changed.
MSW 2002-07-29
Various bug fixes, add glyph spell:
TODO: Updated
common/map.c: Fix change_map_light() - if darkness was reduced to zero,
it wouldn't properly notify the players or update the maps they are
on. Also, make it more robust to handle changes by more than one.
include/define.h: Increase NROFREALSPELLS
include/spellist.h: Add glyph spell.
include/spells.h: Add SP_GLYPH entry.
server/attack.c: Fix up kill_object() - it has had some many various
additions that it was difficult to follow the logic. It should also now
do better check on skill objects when awarding experience.
server/player.c: Add some checks/addition to properly deal with freeing the
name_pl in the player object. Fix it so that if you are braced, you
still won't attack friendly creatures.
server/rune.c: Add cast_generic_rune() to handle the glyph and rune spell.
server/spell_effect.c: Fix up some pointers in cast_cause_disease() -
needed so that it works properly when embedded in a glyph. Have it
return 1 even if no one caught anything - you still cast the spell, so
you should lose the grace for it.
server/spell_util.c: Fix some formatting. Break out the code dealing
with rune into cast_generic_rune()
socket/loop.c: Add flag to player command mapping, and update structure -
if flag is set, command can only be issued when player is in play,
and not when waiting at the quit or login prompt - fixes crashes where
players could wait for the map to get swapped out (after quitting), and
then looking at a space.
socket/request.c: Fix map2cmd so that invisible players are drawn.
MSW 2002-07-24
Add dm command 'freeze' which freezes a player from doing anything for some
amount of time.
include/sproto.h: rebuilt.
lib/Makefile.in: Add freeze to wizhelp files.
lib/wizhelp/freeze: New file.
server/c_wiz.c: Add command_freeze(). Also, break out
get_other_player_from_name() - several functions need the same logic
of getting a player named X that is not us - making it a function
reduces the duplicate code. Fix some formatting for some functions.
server/commands.c: Add command_freeze to the dispatch table.
MSW 2002-07-17
lib/Makefile.in: add a 'archonly' directive that only collects archetypes
and doesn't collect images.
lib/archetypes: rebuilt for fixes made to arches.
lib/collect.pl.in: modified to take second parameter -ARCHONLY, that causes
it not to save out animation, bmaps and faces file.
server/apply.c: Change order of print when applying/unapplying - print out
the 'you apply/unapply' before we print out the changes that applying
the item does. It seems odd for it to be 'you feel stronger. you apply
xyz'. Fix can_apply_object() so that if a player needs to unapply
several items, the right return code is returned and we don't say
the player has a choice.
server/player.c: Fix missing clearing of player->next.
MSW 2002-07-15
-- Start body commit notes --
Major commit. This adds body locations which is used for equipping items.
Equipment has information which body part it gets equipped to, and monsters
have information on how which body locations they can have.
As part of this work, I also did a lot of code cleanup.
To use this, you must use up to date archetypes - the ones included
in this commit are fine - just make sure you install them. If
you don't, players will not be able to equip items.
common/arch.c: Initialize body_used to be same as body_info for
archetypes - this way when monsters are created, they can
start equipping items right away.
common/exp.c: update new_exp() - some flags it checked for before no longer
exist or have new names.
common/info.c: describe_item() now takes second parameter - update
dump_abilities to use new calling convention.
common/item.c: Add table that describes the body_info locations and
their names. Add functions that calculate item power for objects
that don't have it set. Update display functions to show
item_power in items. Update describe_monster() - use_horn/wand/rod
merged into just use_range. Modify describe_item() to take second
paramater - who the item is being described for. Show item_power
in describe_item.
common/living.c: Pull out MAXLEVEL from being defined in this file -
define in in define.h, since other files use it. Add NUM_STATS
define - replace hard coded values of having just 7 stats with it.
Update change_abil to not display that the player has a new
attacktype when equipping a bow that has it - fix_player() ignores
the attacktype of the bow, so it was incorrect information.
fix_player(): Initialize player ranges structure to null -
will get filled in by code in function, updated to deal with
updating the body_used data from body_info in the objects.
Replace instances of last_heal with gen_sp_armour. Rearrange
some code to make function more readable.
common/loader.c, common/loader.l: Remove the variable_const information - no
longer needed and confusing for new people when adding in new object
elements. Add set_body_info() - parses the string from the load file and
sets the appropriate array element. Add check_loaded_object() - does
sanity checking for an object after finished loading - replaces need for
long processing directive in the actual rules by having seperate function.
Remove unused flags from load directives (apply_once, no_pretext,
can_apply), add some new ones (item_power, gen_sp_armour), update others
to can_use_range. Replace flag_links with simple array that contains the
name for each corresponding flag. Update get_ob_diff to not use the V_
values and just include the actual string name - all recent changes have
done this, just updated for old stuff. Update get_ob_diff to save new
values that have been added.
common/object.c: clear_object: Modify to use memset to clear
the structure to zero - this is less error prone than listing
all the specific values, and probably faster. Also, makes it
easier to add new elements - no need to update object.c in most
cases.
common/player.c: Remove get_player_ob routine - this is now merged
in with get_player_ob in server/player.c. Remove generate_ext_title -
not used.
common/readable.c: Update to pass second argument to describe_item.
common/treasure.c: Update to calculate item_power of generated items.
Clean up a lot of code formatting. Update add_abilities
to use gen_sp_armour values, not last heal (note, it appears
the last_heal values weren't being used before). Update
calls to describe item to take second parameter.
doc/Developers/objects: Update will_apply notes, add note about
item_power, body location.
include/define.h: Comment out unused flags (flag_apply_once, flag_paralyzed,
flag_no_pretext, flag_ready_rod, flag_read_horn). Add flag_use_shield.
rename flag_use_wand to flag_use_range. rename flag_ready_wand to
flag_ready_range. Add flag_ready_scroll. Update ARMOUR_SPELLS access
macro. Add AP_PRINT flag to apply flags. Add CAN_APPLY_.. return types
for can_apply_object function.
include/includes.h: add strftime, mktime checks to this file.
include/libproto.h: rebuilt.
include/living.h: Add NUM_STATS define, update extern declarations
to use it for sizing.
include/loader.h: remove the V_.. info and xbm_.. externs that were not
used.
include/newserver.h: Remove ext_tile information.
include/object.h: Add Body_Locations structure, NUM_BODY_LOCATIONS define.
Add definitions for WILL_APPLY values. Clean up object structure -
formatting is now consistent, ordering of values groups values
together more logically. Update all types to use the int8/int16/int32
types. Several unused fields removed.
include/player.h: Update rangetype enum. Add unapplymode enum.
Clean up player structure - type updates, unused fields removed,
formatting fixed up.
include/spells.h: remove range_name extern. Update SpellTypeFrom
field to combine wand/rod/horn into spellMisc - none of the
spell casting code was differentiating these.
include/sproto.h: rebuilt.
lib/Makefile.in: Add new help files (applymode, bind, brace)
lib/archetypes: rebuilt for body_info, gen_sp_armour, item_power,
can_use_shield information.
lib/artifacts: updated for item_poer and gen_sp_armour changes.
lib/treasures: remove unused _force for player treasure.
plugin/plugin_python.c: Change FLAG_USE_WAND to FLAG_USE_RANGE.
server/apply.c: Move stftime, mktime to include/includes.h. Remove
draw_find() - one line function can just as easly be in the
code itself. Update calls to long_desc to pass second parameter.
move gravestone_text() to player.c file. Add direction parameter to
apply_scroll() - in this way monsters can use it properly.
Remove dead code. Update apply_special function. Add
unapply_special(), get_item_from_body_location(), unapply_for_ob(),
and can_apply_object() functions.
server/attack.c: Remove SET_FLAG(op, FLAG_PARALYZED) line - no code
was ever checking status of FLAG_PARALYZED.
server/c_misc.c: add command_body() which dumps body information for
player. Update who as idle element in player structure removed -
was not being used by anything. Add command_applymode() to
set players prefered unapply method. Remove calls to unlock_player()
in various functions - unlock_player() has not done anything
meaningful for a while.
server/c_object.c: Modify long_desc to take a second parameter
which is who is examing the object. this is needed so that we
can pass it down to some of the lower level functions.
Update calls to describe_item to pass this second parameter.
remove FLAG_NO_PRETEXT code - no archetyps were using it. When
examining objects, also tell player where to put them on.
server/c_range.c: Update legal_range() - we now store the object that
is responsible for a range in the player object, so code is
much simpler. Update change_spell() to not destroy golem
just by readying another spell - we now let players regain control
of golems after switching to another range. Update change_spell
to use item name of object for range description.
server/c_wiz.c: remove reference to count_left from player object -
field removed from structure.
server/commands.c: add new commands (applymode, body) to command dispatch
table.
server/login.c: Remove unlock_player() and lock_player() and calls to it -
current checking of names at login should be sufficient to
prevent duplicates. Remove dead code from check_name. Update
load/save code for unapply mode value. Add set_flag(op,
FLAG_USE_SHIELD) if player is allowed to use armor - needed since
flag_use_shield is really a class feature and so is not automatically
updated for old player files.
server/main.c: Remove references to count_left. memset marker object to
NULL - seems to increase stability on metalforge server.
server/monster.c: Many updates related to the body info - monsters follow some
rules as players. Add monster_should_cast_spell function - monsters will
use this for all spellcasting related actions (abilities, scrolls, wands,
etc). Update for merged rod/horn/wand ranges. Update bow use by monsters
- they don't actually need to equip it to fire - this way we don't need to
constantly swap the monsters weapons between the bow and melee item. Use
fire_bow from player.c for most of the work. Modify scroll usage -
monster will use it when player is near, not when it first picks it up.
Add FLAG_READY_SCROLL to denote the monster has a scroll to use. Also,
monster now casts it in appropriate direciton. Merge the
monster_use_wand/rod/horn into monster_use_range. Modify
check_good_weapon and check_good_armour to just look at the stats of the
two items without needing the monster to apply it first.
server/player.c: Print motd in green so it is more noticable. Update
get_player function to do work it did before as well as that of
get_player_ob. Have get_player take a parameter which is the object of
the player if he has one. Modify to use memset to clear the player
structure - more sure fire than explicitly listing values to initialize.
Remove calls to unlock_player. Modify fire_bow so that monsters can also
use the function. Add fire_misc_object() to fire_wand/rod/horn - removes
code from fire(). Add gravesetone_text() to this file.
server/shop.c: Update to pass second parameter to describe_item().
server/skill_util.c: Update check_skill_to_fire since there are fewer
rangetypes now. change range_scroll name to range_golem, as that is
a bit more accurate for what it actually does. Modify show_skills()
to show player his item power and total of items he has equipped.
server/skills.c: Add second paramater to long_desc, remove references to
count_left.
server/spell_effect.c: Add second paramater to long_desc, remove references to
count_left. Update range_scroll to range_golem
server/spell_util.c: remove references to count_left. Update messages
if player trying to cast where he can't with new range names.
socket/info.c: Update range information and how we display what it is -
we will use the object name of the range if available. Remove
reference last_known_spell, last_shoot, last_spell, last_value
player structure fields.
socket/init.c: Remove ext_title information.
socket/request.c: Add element for life_stealing in the resistance array.
Remove references to idle, count_left in player structure. remove
ext2 title information.
MSW 2002-07-14
-- End body commit notes --
common/anim.c, common/button.c, common/friend.c, common/glue.c,
common/init.c,common/logger.c, common/los.c, common/porting.c,
common/time.c, common/utils.c, crossedit/png.c, crossedit/xutil.c,
include/attack.h, include/config.h, include/map.h, include/material.h,
include/newclient.h, include/skills.h, include/treasure.h,
random_maps/decor.c, random_maps/door.c, random_maps/floor.c,
random_maps/monster.c, random_maps/special.c, random_maps/standalone.c,
random_maps/style.c, random_maps/wall.c, server/alchemy.c,
server/c_chat.c, server/c_party.c, server/gods.c, server/hiscore.c,
server/init.c, server/pets.c, server/resurrection.c, server/rune.c,
server/time.c, socket/metaserver.c: Update banner copyright
with proper contact information.
MSW 2002-07-14
server/disease.c: Fix propogation of diseases with negative damage (these
do a percent of the creatures damage). The new disease was getting
a damage rating of 1 in all cases because we were passing a negative
value to random_roll for the top end of the range.
MSW 2002-07-08
common/arch.c: Add 'unlocked' match for item_matched_string.
lib/help/drop, lib/help/dropall: Help files for these commands.
lib/Makefile.in: Update to include help commands above.
server/spell_effect.c: Fix formatting of summon_pet() function. Modified so
that it no longers sucks player spellpoints when casting it via scroll -
scrolls should not cast the player spellpoints. No idea why that code was
there - in fact, casting off a scroll used more sp than casting from
memory. Modify cast_cause_disease() function so that if the passed
direction is 0, we refer to the facing and cast in that direction - this
means spells of cause disease now work. Also perform some minor formatting
changes in the function.
TODO: Add not about inscription.
MSW 2002-07-05
common/arch.c: Fix bug in item_matched_string which was matching all
values (inverse in fact) when passed with count > 1 in matching
string - missing ! operator.
README: Update - remove note about windows client, since it is currently
unsupported and could stop working in some future release.
MSW 2002-07-05
------------------------------------------------------------------------------
Changes for 1.3.0:
socket/request.c: If players were using the original map command with
an even map size, server would try to send too much data to client -
checking in server would result in an abort. Modify code to now properly
send right number of spaces.
lib/Makefile.in: remove extraneous / in front of motd entry in file list.
include/version.h: Update for version 1.3.0
Makefile.in: Update for version 1.3.0
lib/archetypes: rebuilt.
MSW 2002-07-01
doc updates: Rebuild the doc files, but most of this is fixing some of the
doc build stuff to correctly working with the new image set naming
scheme and fixing some bugs. Some doc is certainly out of date - the
playbook doesn't mention the classes for example.
doc/handbook.ps, doc/spoiler.ps: rebuilt
Note: all the doc/playbook changes also apply to the same files in
doc/playbook-html.
doc/playbook/Makefile.in, doc/playbook/makeps, doc/playbook/makeps.pl:
replace the awk makeps script with the perl one.
doc/playbook/items-extract: Don't show invisible items.
doc/playbook/levels-extract: Update so that it properly finds the declaration
of the levels in living.c
doc/playbook/treas1-extract: Clear type when we get a new Object header. was
resulting in duplicate entries for the characters.
doc/playbook/treas2-extract: Don't include forces of the no_class_face_change
as part of characters treasures
doc/playbook-html/chap1.html: Update ftp site information.
doc/spoiler/Makefile.in, doc/spoiler/makeps.pl, doc/spoiler/makeps:
replace the awk makeps script with the perl one.
doc/spoiler/items-extract: Add a space after the name match so that it won't
match on the name_pl field.
doc/spoiler-html/items-extract: Add a space after the name match so that it won't
match on the name_pl field.
doc/spoiler-html/makeps.pl: Update to handle new naming scheme for images.
doc/spoiler-html/spoiler.html: rebuilt.
lib/Makefile.in: Fix error in variable not being surrounded by parens.
MSW 2002-06-30
server/rune.c: Fix bug that allowed players to use marking runes to create
arbitrary objects by embedding a endmsg in the string.
MSW 2002-06-26
lib/ban_file: Update comments to describe how it actually works.
server/commands.c: Add some time cost to shout, say, and tell commands. This
prevents abusive players from issuing huge number of these commands.
MSW 2002-06-20
doc/playbook-html/Makefile.in: Remove some superfluous blank lines
in the file.
configure, configure.in, plugin/Makefile.in: Modify configure script to
subtitute PLUGIN_TARGET, have plugin/Makefile not build/install
plugin if necessary support libraries are not in place.
common/item.c, include/material.h: Move the declaration/initialization
of materialtype from material.h to item.c
server/main.c: Modify crypt_string so that on Freebsd systems, it will
use des_crypt if available, if not, won't encrypt.
MSW 2002-06-18
TODO: Additional updates.
Add support for loading the EMERGENCY_.. locations from a .emergency file in
the map directory. This makes it easy to switch map distributions without the
need to recompile. The emergency information is now stored in the settings
structure.
common/init.c: add EMERGENCY_ defines to default values in setting. Add
init_emergency_mappath which loads the information.
include/config.h: Remove NEW_WORLD_MAP definition, as it is no longer
needed. Update some of the EMERGENCY_.. information as we don't need
to include the information for the new world map.
include/global.h: Add emergency_.. fields to settings structure.
server/login.c, server/main.c, server/player.c: Update references from
the EMERGENCY.. values to settings.emergency values.
MSW 2002-06-15
lib/Makefile.in: modified so that it doesn't overwrite commonly customized
files (eg, motd, dm_file, ban_file). These files will get installed
on new installations.
MSW 2002-06-14
common/item.c: break out monster description into describe_monster
function from describe_item - the later was a really long function.
Reveal weapon speed for identified weapons, spell point regen
penalty and max speed for identified armor - this was discussed about
6 weeks ago. Clean up the code to reduce the number of redundant
if statements and otherwise confusing code in describe_item.
MSW 2002-06-14
configure.in, configure, plugin/Makefile, plugin/Makefile.in,
plugin/Makefile.old: Modify the plugin module to gets its needed
information from configure. configure.in modified to look for Python.h and
to find the python library. plugin/Makefile.in is a new file.
plugin/Makefile.old is the old plugin/Makefile (removed) - may be useful
for sites where configure does not work for some reason. The use of
--with-includes=-I/usr/include/python2.2 (or the like) will likely be
needed for configure to find the Python.h file. Note - if you
are doing a CVS update, you will need to re-run configure with the
appropriate options for this change to take effect.
MSW 2002-06-13
server/main.c: If on freebsd system, don't crypt the password.
Crypt on freebsd behaves diferently, and since there is little reason
to encrypt passwords, easier to just leave them decrypted.
Fix for sourceforge bug 469017
MSW 2002-06-13
More minor changes, including a fix for the disappearing object bug -
this was caused by the flag_links not getting updated the last
time new flags were added. Problem probably only showed up now
because loader.c wasn't rebuilt until recent changes.
--
common/loader.c, common/loader.l: add extern to arch_init, when
loading and get an object from a file, complain and ignore it if
arch_init is not set (only time we should get object (vs arch) for
names is when we load the archetypes file). Add missing entries
to flag_links array.
common/treasure.c: Fix code so that proper plural names are generated
for custom items (potions, flesh items, etc).
include/define.h: Add note about updating flag_links when NUM_FLAGS is
increased.
server/skills.c: don't let players steal from players with FLAG_WIZ set.
MSW 2002-06-09
Mostly bugfixes. I'm not sure if this will fix the disappearing arch problem-
none of the changes made in the original multiple name would seem to
cause it, so hard to say if any of these changes may fix it.
--
common/arch.c: Change get_archetype_by_name to be more efficient and
not leak memory. Modify code that frees all archetype data to free
the name_pl information. Make sure the clone.name_pl is set to
NULL. When singularites are created, set the name_pl for them.
common/loader.l, common/loader.c: Modify code that fixes up name_pl
to be more correct when it fixes up name_pl for old objects.
common/map.c: Modify load_map_header so that tile_paths will be normalized -
need for editor to be able to load maps that have a multipart object
that spans the maps.
crossedit/Edit.c: Modify some calls of out_of_map to OUT_OF_REAL_MAP, since
tiling code really isn't fully in place for the editor. Modify
EditPerformFill so that it actually works and doesn't crash the editor.
include/global.h: Move FREE_AND_COPY macro from loader.l to here so that
all source code files can use it.
lib/adm/map_info: Modify to actually be able to examine just a sub
portion of the map directories, and not all of them. Don't always
show the unused objects - information isn't very interesting if only
a portion is being examined. Modify the exit examining code to properly
deal with random maps (if there is a finalmap component, make sure
that does exist.) Loade the bmaps file and not the faces file to
find valid faces.
plugin/plugin_python.c: Add missing %s that described what script
was actually loaded.
random_maps/special.c, server/alchemy.c, server/c_misc.c, server/gods.c,
server/login.c, server/player.c, server/spell_effect.c: Set up proper
name_pl value for code that changes the name of objects.
server/apply.c: Use FREE_AND_COPY to set up names. Set up proper
name_pl values for cases that change name. In apply_lighter, call fix_player
if player is lighting an object in his inventory - necessary for the
players glow_radius to get updated so the change actually takes effect.
socket/request.c: Modify esrv_map_scroll so that it properly clears cells
that are moving out of view - failure to do this was resulting in the
map1a updating these spaces with empty faces. This was causing
fog of war wackiness with the client.
MSW 2002-06-06
common/button.c: Fix mood floor code - before, it was changing the moods
of all sorts of objects (luggage, itself, etc). Now, it only
changes objects above the floor, and only monsters.
MSW 2002-05-31
Main change is the addition of name_pl and client_type to object
structure. The name_pl contains the proper plural name instance - fixes
problem of '2 tooths'. client_type is sent to the client so that client
doesn't need to figure out sorting on its own. Client_type is an object
attribute, so can be modified in maps to hide the real type.
--
common/arch.c: item_matched_string() modified to use the name_pl field
when trying to match names, and not to try to make the name plural
itself.
common/item.c: query_short_name(),query_base_name() modified to
use name_pl instead of trying to make the name plural.
common/loader.c, common/loader.l: Add code to load and save the name_pl
value and client_type. Add logic when object is finished loading
to set name_pl value to same as name or arch name if no name_pl
is specified - this supports old maps/characters in which the objects
dont have a name_pl field yet. Disable logic for need_an and need_ie
flags since they are no longer needed. Fix bug that caused
elevation not to get saved.
common/object.c: Add client_type check for CAN_MERGE function. Add
appropriate logice in functions to handle setting, clearing, and
copying of name_pl values. Remove unused anim_... fields
initialization.
doc/Developers/objects: Add information about the name_pl field and
client_type.
doc/Developers/protocol: Remove item protocol command info - it has
been obsoleted. Add information about item2 protocol command.
include/define.h: Remote ST1_* values - they were not being used.
comment out FLAG_AN and FLAG_NEED_IE values.
include/newserver.h: Add itemcmd to socket structure - this is the
version of the item protocol command that will be sent to the client.
include/object.h: Add name_pl and client_type field to object structure.
Remove unused anim_* values.
lib/archetypes: rebuilt with new archetypes that contain client_type
and name_pl information.
lib/bmaps, lib/bmaps.paths, lib/crossfire.1, lib/crossfire.0, lib/faces:
rebuilt.
server/monster.c: Remove anim_ references that were not being used.
socket/init.c: Initialize itemcmd version in the socket to 1.
socket/item.c: Remove special handling for clients of old versions - all
clients now have to be at least sc_version 1024 (which has been around for
a long time). This simplifies a lot of the object code that deals with
sending or not sending plural names to the client - now always send them.
Change code that sends item to client to use the item revision (currently
1 or 2) that the client wants. If version 2, send along client_type
information.
socket/request.c: Handle 'itemcmd' parameter in setup command. Make
sure it is in proper range. If client is very old (sc_version < 1024)
tell them so.
MSW 2002-05-30
crossedit/png.c, crossedit/xutil.c: Increase size of temporary buffers that
are used when loading images - necessary to allow the editor to run without
crashing.
include/newserver.h: Remove quick_pos from the MapCell structure.
server/main.c: Add code to set the coordinates to the EMERGENCY_X/Y
values if using the EMERGENCY_MAP.
socket/request.c: Fix code that was causing darkness to get repeatedly
sent for some spaces.
MSW 2002-05-19
The bulk of this commit is to modify the server to only send the lower
rightmost part of multipart archetypes that use the same head. This allows
support of big images in the client.
common/arch.c: Modify first_arch_pass to figure out the tail_x/y values for
multipart archs. Rename the prev variable to head, as that it really what
it is. Remove quick_pos info.
common/object.c: remove quick_pos info from object.
doc/Developers/images: Add notes about using merged images.
doc/Developers/protocol: Add information about the map1a command, which
is used to for big image support. Remove map2 documentation.
include/map.h: Add MAP_LAYERS define instead of using hardcoded value of 3.
include/newserver.h: Change the MapCell to use MAP_LAYERS - saves
considerable memory. Add defines for MAX_CLIENT_ map sizes.
Remove map1cmd, map2cmd elements from socket structure - instead use enumeration
of mapmode - only one map type will be used at any time by the client, so
no reason to have individual elements - it also makes it easier to add new
mapmode commands.
include/object.h: remove quick_pos, update_tag from object structure.
Add tail_x, tail_y values to archetype structure.
include/player.h: Remove some now unused values from the player structure
(drawn, floor, floor2, darkmask). These have been superseded by the
map cells in the socket structure for quite a while.
include/sockproto.h: rebuilt
server/player.c: Remove code that initialized the drawn values in the player
structure since they no longer exist.
socket/init.c: Replace map1cmd, map2cmd elements in socket structure with
mapmode element. Modify init_ericserver so that it properly passes an
int when setting the SO_REUSERADDR field.
socket/request.c: Modify code in SetUp function to use the new mapmode
enumeration in the socket structure. Add support for map1acmd setup
option. Throughout map code, replace MAXMAPCELLFACES with MAP_LAYERS.
modify map_clearcell to take options for values to clear the cell to.
Add have_head, check_head, and update_space commands - used with the
map1 command to store and find head information.
draw_client_map1 modified to support map1a extensions, as well as added
logic for checking for heads in blocked and out of viewable map spaces.
Some of the code is simplified by using the update_space function, since
the logic for processing each layer was otherwise the same. remove
draw_client_map2 function. esrv_map_scroll has same logic - some
variables and code formatting changes.
MSW 2002-05-18
server/login.c, server/c_misc.c: Don't save characters with 0 experience.
This apparantly fixes some abuses. MSW 2002-05-18
server/attack.c: Don't generate PLAYER_KILL_PLAYER messages if kill
happened on battleground. Also, datestamp the messages.
MSW 2002-05-13
server/attack.c: Generate log message when a player kills another player -
include the ip address of the killer to make it easier to add them to
ban files. MSW 2002-05-06
------------------------------------------------------------------------------
Changes for 1.2.0:
Makefile.in, include/version.h: Update for 1.2.0 release
lib/Makefile.in: have it make an archive for the archetypes.
MSW 2002-04-28
doc/Developers/protocol: Add documentation about the map2 protocol command.
socket/request.c: Fix bad indentation for the map2 function. No actual
functional code changes, but some comments updated. Running diff with the
-w option will make the changes, or lack thereof, more viewable.
MSW 2002-04-28
crossedit/xutil.c: Update to use name of png file.
lib/archetypes: collected - pl_dragon arch changed a while back, with no
new collect.
lib/collect.pl.in: Add some notes about usage if no option is given or
if --help is given.
server/gods.c: Fix that resulted in weapon/armor restrictions not working.
MSW 2002-04-23
Various minor bugfixes. Note the changes may appear larger than they
really are due to formatting/indentation changes. Run diff -w to
supress those:
make_win32/installwin32.bat: Update for new image files.
server/c_object.c: Fix SAVE_INTERVAL #ifdef block. It failed to compile
as it was written. Simplify code, but it should have the same effect.
server/move.c: Modify push_object so that if a player swaps position
with his pet, we send a esrv_map_scroll. This should save bandwidth,
and also prevents display corruption when fog of war on the client
is in use. Add some new comments, adjust some formatting.
server/player.c: Fix minor typo in comment.
server/skills.c: Modify new_draw_info that is responsible for the
"You pray" messages to not have the NDI_UNIQUE flag so that
they can get batched up, depending on users value of output-count
server/swap.c: Remove swapped out per player unique maps from the list
of maps. Reduces cpu and memory consumption by a minor amount, and
results in a cleaner 'maps command output.
server/weather.c: Add standard crossfire banner to top of file.
Modify long long declartion to just be a long.
MSW 2002-04-20
socket/item.c: Add checks to esrv_move_object - before it just trusted
the client that the destination target to move items into was a container.
Now do valid checking that the object can be picked up, that the container
can hold it, etc. MSW 2002-04-18
Add utils/crossloop.web.in script. This script is used on metalforge -
it generates the backtrace file, compresses the core, and sends out
mail.
configure.in, configure: Rebuilt to make the crossloop.web script.
utils/Makefile.in: Install the crossloop.web script. Include the
crossloop.web.in script when making the archive.
utils/crossloop.web.in: New file.
MSW 2002-04-14
Update to improve image caching and faceset support in the client.
The main change is adding the 'requestinfo image_info' and
'requestinfo image_sums' commands.
common/image.c: Checksum the bmaps file when we load it - we send this as
part of the image_info data.
doc/Developers/protocol: Document the requestinfo data.
include/global.h: Add extern for bmaps_checksum, and the define for
ROTATE_RIGHT which is used for checksumming.
include/newserver.h: Update SC version to 1027 so that clients can
know if they can issue requestinfo commands.
include/sockproto.h: rebuilt
lib/adm/collect_images.pl: Add support for it to make a crossfire-images
distribution that the client can use to bootstrap its image set.
socket/image.c: Change SendFaceCmd to take a NewSocket parameter instead
of a player parameter - in this way, it can be used before the
AddMe command - this allows the client to download images before
issuing that command. Add send_image_info and send_image_sums
function which send the requestinfo data to the client.
socket/loop.c: Move the askface command from the player commands to the
newsocket commands. Add RequestInfo functino that determines the
type of request and calls the specific function to deal with it.
MSW 2002-03-25
------------------------------------------------------------------------------
Changes for 1.1.0:
Updates for 1.1.0 release - pretty much all minor bug fixes, like
compiler warning messages, invalid ANSI C constructs, missing files to
include in the distribution.
Makefile.in, include/version.h: update version.
include/Makefile.in: Add some missing files
include/libproto.h, sproto.h: rebuilt to prevent compiler warnings
lib/Makefile.in: Include the wizhelp files in the archive.
server/apply.c, server/skill_util.c: fix invalid code (function parameter
names can't match structs/typedefs), add a missing return value.
server/c_move.c, server/c_new.c, server/c_object.c, server/commands.c,
server/daemon.c: Don't include the sproto.h if CEXTRACT is defined.
server/plugins.c: fix printf command that was printing wrong value type.
doc/spoiler-html/Makefile.in: Remove extraneous newline
server/player.c: modify play_again to remove the player object if not done so
already. This fixes a crash observed on metalforge when a player quit at the
roll/swap stats prompt (undocumented that you can use 'q' then to do so). It
looks like this should also fix crashes that may be associated with the kick
and shutdown wiz commands.
MSW 2002-03-12
Added new dragon race to crossfire.
Players of this dragon race can gain resistances
by eating the flesh of their defeated foes.
They can also specify in a certain resistance-type
and gain various abilities when increasing levels.
This "focus" can be switched by eating very special
As announced on cf-devel, this is the patch which
adds a new dragon-race to Crossfire.
Players of this dragon race can gain resistances
by eating the flesh of their defeated foes.
They can also specify in a certain resistance-type
and gain various abilities when increasing levels.
This "focus" can be switched by eating very special
flesh, which will be available for sale.
Dragon players gain special titles which cannot
be overwritten by manually set titles.
AndreasV 2002-03-01
lib/collect.pl.in: Modified so that it uses the image.base.xyz.png to make
sure each listed face in objects has an image, and not the old xbm images
for that task. Also, ignore all files that end in .png, .xpm, or the
face extension - consider them legitimate files for the arch directory.
MSW 2002-02-25
socket/image.c: Change type of image data to be uint8 from char. Checksums
were being incorrectly calculated when using the char type. MSW 2002-02-25
server/main.c: If exit is damned, update players death & WoR home-position
and delete town portal.
server/apply.c: Fix bug in move_apply. return was used instead of goto
leave, so recursion_depth wasn't decremented.
mids 02/13/2002
server/spell_effect.c: Fix bug in summon_cult_monster that would result
in crash if monster was killed when inserted. MSW 2002-02-10
common/map.c: load_map_header: If the map message is empty, don't copy
uninitialized data as the message. This fixes various crashes.
lib/Makefile.in: Remove the adm/*xpm* utilities, as they are no longer
needed or distributed.
server/apply.c: set the player speed to zero after they use a savebed.
Fixes crashes with players that have constant image animation (fireborns)
when they apply the savebed and the map then gets swapped out.
server/plugins.c: Fix some serious memory leaks. Some still remain, with
my comments included.
server/skills.c: Removed unused variable.
MSW 2002-02-05
include/player.h include/sproto.h server/c_chat.c server/player.c:
New player command 'reply', replies to the last person who told you
something.
server/c_wiz.c: New DM command 'teleport', lets a DM teleport next
to target player, it is an inverse summon.
server/commands.c: Add hooks for 'reply' and 'teleport'.
mids 2002-01-16
TODO: updated with bugs, remove things that have been done and are no
longer TODO's.
configure.in, configure: Remove lib/xpmtopix.pl file form those to be
built, as that file has been removed.
common/object.c: Fix bug in check_walk_on which would result in spell
objects not being properly processed - the intention is not to process
spell objects - we should stop going up (in previous loop) when we
get such an object, not on the way down. This fixes directors not
working really well.
MSW 2001-01-13
Add the concept of overlay maps to the code. An overlay map is a map which
is loaded on top of another map, replacing values in the header, and placing
objects on top of other objects. This is the fundamental part of the new
weather code, but also can be used to allow dynamic editing of the worldmaps
by DM's eventually.
garbled 2002-01-01
server/spell_effect.c: fix animate_bomb so that if the bomb is in a container,
it does not crash the server - the problem was that it was calling
drop, which would then drop it right back into the container. also, the
x and y coordinates were not being properly set.
MSW 2001-12-31
This change lets the server have multiple image sets. The client
can then request which image set to use, and the server will use
that image set, falling back to other sets as necessary. I have tested
this with CVS client, and works fine at least in terms of old functionality.
=
doc/Makefile.in: Add images file which describes image guideline.
doc/Protocol: Various updates - some things missing, added other notes
about facesets.
doc/images: New file, describes guidelines for image sets, as well
as some of the internals
include/newserver.h: Update for multiple image set - redid most of the
image definitions as they were out of date with only png being supported.
include/sockproto.h: rebuilt
lib/Makefile.in: remove crossfire.png, add crossfire.0, crossfire.0. Update
build directions to use crossfire.0 instead of crossfire.png
lib/adm/collect_images.pl: Modified to collect all the image sets, remove
support for collect xpm and xbm images.
lib/crossfire.0: new file, base images
lib/crossfire.1: new file, alternate images
lib/image_info: New file, describes image sets.
lib/crossfire.png, lib/xpmtopix.pl.in: Removed - no longer needed.
socket/Makefile.in: add image.c file.
socket/image.c: Moved all image related data in this file - this includes
loading the image files, as well as the protocol commands.
socket/init.c: move read_client_images to image.c file. set ns->faceset
and ns->facecache to 0. Move freeing of image data to image.c
socket/request.c: fixed some indentation inconsistencies.add setup commands
for faceset as facecache. Move SetFaceMode,SendFaceCmd,esrv_send_face
to image.c file.
MSW 2001-12-31
common/loader.l, common/loader.c, common/object.c, include/object.h,
socket/item.c:
Remove sub_type and sub_type2 information -
these were poorly named fields and not properly implemented.
common/treasure.c: Add missing return type to change_treasure function.
crossedit/Edit.c: Add SET_MAP_FLAGS macro to set P_NEED_UPDATE flag
before calling update_position.
include/config.h: Add NEW_WORLD_MAP selection which results in proper
emergency save paths if you are using the maps-bigworld distribution.
server/c_wiz.c: Fix the formatting (indentation) of the command_create
function. No actual changes in how it runs, but the old
formatting was really terrible and inconsistent.
server/main.c: remove call to send_mapstats_cmd
server/monster.c: Update the comment style to be proper, as well
as the comments themselves.
socket/request.c: Fix up improper indentation in esrv_update_stats.
remove send_mapstats_cmd function.
MSW 2001-12-23
Lots of changes here. Basically implement a night and day system, as
well as tracking of game time. A clockdata file is now created and
updated by the server to increment time. Time increases by 1 hour,
approximately every 2 minutes of real time. Right now this code has
virtually no effect, but as maps are updated with outdoor settings,
nightfall will occur automatically. The time command has been modified
to show the current game time, and the clock objects have been changed to
show the game time as well.
garbled 2001-12-18
common/map.c: Fix some bugs relating to map tiling. MSW 2001-12-16
common/object.c random_maps/Makefile.in
server/c_wiz.c server/player.c server/plugins.c server/timers.c
socket/request.c: Most of the changes are to just fix compiling warnings
or errors so that it compiles on sparc solaris with the workshop
compiler (things like }; should just be }). Declaration for alphasort
was missing in plugins.c. random_maps/Makefile.in had the wrong order in
linking - the system library needs to be linked in after the crossfire
libraries.
crossedit/App.c: Fix for running on 8 bit color - colormap was not being
initialized to usuable default value.
crossedit/xutil.c: Broken code when duplicating faces for undefined
images. That code should never really be used, as pixmaps currently
are always contiguous.
MSW 2001-12-15
Include mapstats cmd for extended clients (sdl iso). Cmd is needed for automaps
ambient media infos, map name and map parameter infos. Paramter infos are used
for "fire & forget" animation tags inside the map2 cmd (next patch).
server/main.c: include a automatic mapstats cmd every time the player enters a new map.
Its the "default" mapenter cmd. The script event should used for special cases.
include/sockproto.h and socket/request.c: include the mapstats cmd function.
MT 2001-12-03
This checkin for the most part removes support for xpm and xbm graphics -
now the only image supported is the png.
common/arch.c: comment out printing on warning of object having no type -
getting 300 meaningless messages at startup is annoying.
common/image.c: Remove X11 color information from colorname array. Remove
processing of color_fg and color_bg information from face file - only
use color_fg if no magicmap information is available - foreground
and background infoformation was only needed for bitmap graphics.
common/loader.c, loader.l: Add elevation element, comment out some logging
messages that are excessive and only really relevant for people
who want to fix them (really should be in the collect script
anyways). Remove some unused code.
common/map.c: add outdoor field to map structure - add support for loading
and saving it.
crossedit/App.c,crossedit/CrUtil.c, crossedit/Defines.h, crossedit/crossedit.c
crossedit/xutil.c: Remove support for non png graphics.
crossedit/Attr.c: Add support for elevation variable, remove code for non
png graphics.
doc/map-technical: Add note about outdoor field.
include/face.h: remove fg, bg fields from face struecture.
include/global.h: Update colorname array definition.
include/loader.h: Add V_ELEVATION field.
include/map.h: Add outdoor field to map structure.
include/newserver.h: Update types so it only loads/knows about png information.
include/object.h: Add elevation field to object structure.
lib/Makefile.in: Remove support for building crossfire.xpm and crossfire.xbm
files.
lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.png,
lib/faces: Rebuilt. Main difference is a few sea types, and the fact
that it hadn't been collected for a while.
server/spell_effect.c: Modify dimension door so that it calls MapNewmapCmd
so that fog of war does not get confused. Also, removes call to
draw as functions further up will do that.
server/spell_util.c: Remove color information from attack information that
shuffle_attack uses.
socket/init.c, socket/request.c: Remove support for non png images.
MSW 2001-12-02
Various minor bugfixes -
common/loader.c: rebuilt
include/map.h: Change width,height,enter_x,enter_y to be 16 bit instead
of 8 bits.
lib/treasures: change skull treasure to tooth instead of skull_tooth since
the later is not currently in the distributed archetypes file
server/monster.c: Optimize some code, remove some other that is not used.
server/plugins.c: Fix un initialized value in initPlugins that would
cause crash at startup if plugin directory does not exist.
MSW 2001-11-13
common/object.c: Modify copy_owner so that if a player is passed in
as the object to copy, we properly set that player as the owner of the
object instead of returning. This fixes the lack of exp when poison
inflicted from a weapon kills something. MSW 2001-11-05
common/map.c: Fix bug in get_rangevector which was causing reverse
of documented procedure. This also resulted in monsters not attacking
adjacent creatures with physical attacks. MSW 2001-11-03
Add weapontypes to the game. These are currently used for nothing other
than messages, which are not fully written yet. Players should not see them
appear yet.
Fix the bug where you opened a door with a key and saw "You ."
Fix a bug in the PLUGIN code where current_weapon wasn't set when the
player loaded from savefile.
Take the setting of current_weapon out of #ifdef PLUGIN
garbled 2001-10-31
server/spell_util.c: Add out_of_map check to can_see_monsterP. Fixes
crash when casting ball lightning/divine shock (and likely other events)
on maps not surrounded by walls. MSW 2001-10-07
New attacktype messages for damage. Now it gives you the message for the
damage type you actually did. So if you are attacking with stormbringer,
you get electrical or drain-based messages. Also added special messages for
the attack-based skills like punching, karate, etc.
garbled 2001-10-06
common/map.c: Add INS_ON_TOP flag to insert_ob_in_map calls to preserve
stacking order. Modify update_position to generate map spaces with
more proper order.
common/object.c: Modify insert_ob_in_map so that it preserves stacking
if INS_ON_TOP is set.
crossedit/CrEdit.c: Add missing code that would draw third face on a space.
include/object.h: Add INS_ON_TOP flag/define.
random_maps/exit.c: Modify code so that if the random maps leading to
a special map are reset, they will properly link in with an already loaded
final map (and update exit from final map back up) as needed. Also fix
bug in that if the final map has been reset, a new one will now be properly
loaded.
random_maps/random_map.c:Update minimum size to be 7 (up from 6) - fixes
bug which caused crashes when square_spiral maps of 6x6 would fail to
generate.
random_maps/random_map.h,random_maps/room_gen_onion.c: move OPT_values from
room_gen_onion to random_map.h since the square_spiral code uses them.
random_maps/square_spiral.c: Update call to map_gen_onion to use
OPT_.. values instead of constant integer.
random_maps/treasure.c: Add some casts to sprintf statements to eliminate
some compiler warnings.
server/main.c: Modify enter_exit code such that a random map has
reset, we generate a new random map. This can happen when the random_map
resets before the map that leads to them resets.
MSW 2001-10-06
Add a new command category called communications commands. Place tell,
shout and say in here. Also create emotion functions. These functions
have no real effect on the game, but make communications between players
more colorful and fun. They are mostly fluff. Included with this patch
are two new convenience functions, new_info_map_except, and
new_info_map_except2, which allow the programmer to write to an entire
map, except for certain individuals.
garbled 2001-09-27
Add complete processing code for luck. This new code removes all
previous instances of luck, and adds a few new convenience utilities.
Now, every die roll in the game is affected by luck in some small way.
This causes luck to be an intangible benefit to the player, without
totally unbalancing the game. The new functions are random_roll,
die_roll, and rndm, which should be used in place of RANDOM() whenever
possible.
garbled 2001-09-26
This checkin mainly fixes multipart teleporters - they should now
work properly. Also a minor fix to make the new pickup code work.
server/apply.c: apply_shop_mat rewritten to be more 'presentable'.
Minor changes were needed in any case to pass the player/creature
a a second object to teleport.
server/c_object.c: change the sscanf to be unsigned when getting value
for new pickup mode. At least on my system, if the value in the
string was larger than the max signed value, sscanf set it to the
max value.
server/move.c: teleport function largely re-written. Instead of the
third arg being the 'originator', it is now the object to teleport.
This allows the head of the teleporter to get passed to this function
even if the object to teleport is not on the head.
server/time.c: move_teleporter modified to also check for objects on the
other parts of multipart teleporters. Also, pass the head object
to the teleport function so that proper destination is used.
MSW 2001-09-02
Add Nils Lohner patch that new selections to the pickup mode.
include/define.h: Pickup type defines added.
include/player.h: Change mode (pickup mode) to 32 bits.
server/c_object.c: command_pickup function modified to support all
the new pickup options.
server/player.c: Fix for path_to_player to prevent crashes. Add check
in move_player_attack just in case. check_pick function modified to
support new pickup options. do_some_living modified to eat flesh
items if player is starving and they don't have any food.
server/spell_effect.c: cast_detection modified so that detect magic/curse
will not show objects beneath the floor. Change so that detect_monster
and detect_evil spells copy the face of what they detected - gives better
appearance on client.
socket/item.c: fix bug LookAt that ws checking blocked_los on wrong
offset.
MSW 2001-08-28
Enhancements to make monsters 'do the right thing' with relation
to tiled maps (ie, will detect players and attack them if on an adjoining
tiled maps). This involved a rewrite of path_to_player - I've tested this
out, and if anything, it seems that monsters may be more aggressive on
spellcasting.
++
common/map.c: blocked modify to make sure it is checking valid coordinate
value. blocked_link,blocked_two modified to translate for tiled maps.
Add load_and_link_tiled_map which loads a tiled map and links in all
pointers relative to adjoining maps. out_of_map modified to use
this function instead of doing the work itself. Add get_rangevector
function that returns offset, direction, and distance between two
objects, taking into account tiled maps. get_rangevector_from_mapcoord
added which is similar to get_rangevector, but takes a map and coordinates
instead of a second object. on_same_map function added which returns
true if the two objects are on the same logical (ie tiled) maps.
doc/crossfire.doc: Add note about what Int does for monsters.
include/map.h: Add some comments, and add structure for rangevector
function return values.
server/attack.c: add calls to on_same_map instead of doing op->map
comparisons.
server/monster.c: Many functions modified to properly handle tiled
maps properly.
server/pets.c: get_pet_enemy modified to know about tiled maps.
server/player.c: get_nearest_player modified to know about tiled maps.
path_to_player rewritten to know about tiled maps - I think some other
bugs were also fixed in return values. Split player_attack_door
from move_player attack to keep functions a more reasonable size.
move_player_attack, player_can_view modified to know about tiled
maps.
server/skills.c: can detect_enemy modified to take another parameter -
call in steal updated to pass this parameter.
server/spell_util.c: ok_to_put_more, can_see_monsterP modified to
handle tiled maps properly.
socket/item.c: look_at modified to return proper results when player
looks at something on an adjoining tiled map.
++ End of checkin
common/object.c:decrease_ob_nr modified to correctly update client when
player uses item from container that is on the ground (bookshelf for
example)
server/time.c: move_teleporter modified to skip over wall/floors and
teleport whatever is above them.
MSW 2001-08-05
common/map.c: modify link_multipart_objects to preserve name and title of
head when making the more parts. modify update_position so that it should
never show an invisible face to the player.
common/object.c: fix check_walk_on so that spells will now properly get
affected by spinners and directories.
include/sockproto.h: Rebuilt to include MapNewmapCmd
server/hiscore.c: Fix crash if player savebeds map on map which does not
have a name. Use the path instead.
server/move.c: modify teleporter function to send MapNewmapCmd to client
if player got teleported. Needed for fog of war code.
server/time.c: modify move_teleporter so that it will not teleport walls.
socket/Makefile.in: Modified to use cproto to generate proto files.
MSW 2001-08-04
common/Makefile.in crossedit/Makefile.in doc/Makefile.in
doc/playbook-html/Makefile.in doc/spoiler/Makefile.in
doc/spoiler-html/Makefile.in lib/Makefile.in lib/crossfire.png
random_maps/Makefile.in socket/Makefile.in utils/Makefile.in: Fix up
so that distclean now clears out all appropriate files - MSW 2001-08-01
common/map.c free_map Set in_memory status to MAP_SWAPPED - fixed bugs of maps
not getting reset properly
common/object.c: insert_ob_in_map - was passing wrong value to check_walk_on,
resulting in some things not working as expected.
doc/Protocol: Clarify how the sending of the version command works.
server/move.c: move_ob redone. It should hopefully be more efficient (only'
remove objects after verifying they can in fact move). IMO, code is
also simpler, and hopefully has fewer bugs.
socket/init.c: InitConnection - modified to set faces_sent[0] to one
so that we will never send any information about face 0 to the client.
facecode 0 is sent in the map1 command to clear spaces/layers.
MSW 2001-07-30
Added support for the newmap cmd needed for the fog_of_war code
in the gtk client.
include/newserver.h: added newmapcmd:1 to NewSocket struct
server/main.c: added call to MapNewmapCmd in enter_map()
socket/init.c: init code for new newmapcmd value in NewSocket
socket/request.c: deal with "newmapcmd" value in client setup string
Added MapNewmapCmd( player* pl) function.
SMACFIGGEN 2001-07-21
common/object.c: remove_ob - set P_NEED_UPDATE before calling update_position
to prevent warnings from update_position being called with P_NEED_UPDATE
being set. MSW 2001-07-19
socket/request.c: Fix bug in map1 command which resulted in it sending
too much data with even maps. For example, if the client requested
a 16x16 map, the server would effectively send a 17x17 map to the client.
MSW 2001-07-19
+++
Major redo of map code:
1) Remove encounter map support (with the much better random map code,
I don't see much reason for it)
2) Remove map_ob from map structure, and instead store relevant information
in map structure itself. Remove strange meanings (stand_still meaning
fixed reset time for example)
3) Redo internal structure of map and how information on each space was
stored - this should make future extensions much easier, as well
as making debugging easier.
4) Make USE_LIGHTING standard part of game.
5) Redo how lighting objects are handled - instead of making a linked list
of the light giving objects, at field to mapspace that contains
lightsource for the space.
6) Rewrite insert_ob_in_map to take optional parameter that determines
other behaviour. This replaces insert_ob_in_map_simple.
Function now does sorting of some objects, so performance for lots of
spell objects on one space should be much better.
7) Change how multipart objects are saved. Now only save the head, and
link in the rest of the parts when map is loaded. Additional parts
linked in are put just above floor level when linked in, so things like
shops won't hide items that someone drops on them. For monsters, this
linking shouldn't be a problem - once they start moving, they will get
relinked as normal (on top).
8) Modify update_object to only call update_position when necessary
(ie, space attributes change). Otherwise, let the map transmission
code call update_position when necessary (ie, in players view) - this
saves cpu time as time will not be spent updating spaces that no one
will see (before, how the space looks was updated whenever a space
had an object added or removed).
TODO: remove some things that have now been done.
common/Makefile.in: Remove ltostr.c and sqrt.c from list of files
common/ltostr.c, common/sqrt.c: Moved into porting.c
common/anim.c, common/button.c, common/item.c: Update calls to update_object
common/living.c: have fix_player calculate light value for player/monster.
common/logger.c: Remove code that has server exit if too many LOG messages
happen too quickly. This was not a reliable mechanism, and it should
really be up to the functions doing the logging to know if they can
continue or not.
common/los.c: Changes on how it deals with lighting on maps - get light
value from map space array instead of using the linked list. Functions
that managed the light list have been removed. Change logic of
line of sight function to be more efficient (before, we may examine
the same space multiple times). rename update_all_los to
update_all_map_los, and change update_all_los to take coordinates
so that we only have clients within view of the change recalculate
los. Also, have update_all_los check for tiled maps that may have
clients that need to get updated.
common/map.c: remove refresh_map - this used to be used to try to recover
from map errors if many_cores was not set - IMO better to core and
just restart and really fix the error than try to deal with possible
corruption that may otherwise result.
Move open_and_uncompress and close_and_delete functions to porting.c -
they are 'common' functions that are not related to the map code.
Remove some lighting related code, as that is no longer done with
a list. Many modifications because of new map structure. And
logic to load and save the new map structure format. Modify
many of the functions to take map tiling into account. Change
way multipart objects are saved, and add logic to relink objects
when maps are loaded up. Remove some functions that are only
used by the editor into the editor. Move update_position from
object.c to map.c as it is better placed in map.c. Modify
function to figure out light for a space. Make out_of_map a
function that knows about map tiling. New function - get_map_from_coord
which knows about map tiling and does coordinate and map translation.
common/object.c: Have update_object take another parameter which tells
update object what has changed about the object. This lets the function
know if it should call update_position right away or if it can just
mark the space as needing an update at a later time. move update_position
to map.c.
insert_ob_in_map: now takes another parameter that describes actions not
to do. modified to know about map tiling and do appropriate translation.
Does some object sorting so it should handle spell objects more
efficiently.
insert_ob_in_map_simple is now replaced by
using appropriate flag to this changed version of insert_ob_in_map.
Clean up remove_ob - seemed to have done things in a more complicated
fashion that is no longer necessary. Modify check_walk_on to look
at all objects on space, not those below the object - with changes to
insert_ob_in_map, new object won't always be on top.
common/porting.c: functions from ltostr.c, sqrt.c, as open_and_uncompress
close_and_delete, make_path_to_file from map.c
common/treasure.c: Modified to use updated insert_ob_in_map
crossedit/Attr.c: Rename Layout to AppLayout so other files can use it.
crossedit/CrEdit.c: Modified to use new map header. Modified drawing
routines, as face values could be null
crossedit/Edit.c: Move many functions from common/map.c that are only
used here and thus don't need to be in common/map.c. Modify to use
new map structure.
crossedit/Makefile.in: Change to use cproto to make proto.h file.
crossedit/png.c: change user_read_data to be static so proto doesn't pick
it up.
doc/Makefile.in: add map-technical to list of files.
doc/crossfire.doc: remove map information that was in this file.
doc/map-technical: new file. Describes inner workings of how the maps work.
include/config.h: remove RANDOM_ENCOUNTERS (no longer available) and
USE_LIGHTING (now standard part and always on).
include/define.h: move P_... values to map.h
include/global.h: add definition for compression externals, as they
are used in a few files. remove map macro functions - moved to map.h
as appropriate. Add FREE_AND_CLEAR macro that frees data and then
sets the pointer to NULL.
include/map.h: Largely redone - many new macros, new map structure.
include/object.h: remove lights object link pointer from objects.
At some #defines that are the flags for update_object and
insert_ob_in_map
include/player.h: Add a few comments.
random_maps/decor.c,random_maps/door.c, random_maps/exit.c,
random_maps/floor.c,random_maps/monster.c,random_maps/special.c,
random_maps/standalone.c, random_maps/style.c,random_maps/treasure.c,
random_maps/wall.c:
modified to use modified insert_ob_in_map function,
use new macros to access map structure related data
server/Makefile.in: Remove encounter.c file. Use cproto instead of
cextract to create proto file.
server/alchemy.c,server/attack.c,server/c_object.c,server/c_wiz.c,
server/disease.c, server/login.c, server/main.c, server/monster.c,
server/move.c, server/pets.c, server/player.c, server/resurrection.c,
server/rune.c, server/shop.c,server/skill_util.c, server/skills.c,
server/spell_effect.c, server/spell_util.c, server/swap.c, server/time.c
modified to use modified insert_ob_in_map function,
use new macros to access map structure related data.
change calls to update_all_los, remove lighting related code.
server/apply.c: modified to use new insert_ob_in_map function. Update
calls to update_object. remove RANDOM_ENCOUNTER code.
for exits, modified to use the head for valid coordinates since the
other parts may not have valid values since they are not saved out to
disk anymore.
server/c_misc.c,server/hiscore.c: modified to use new map
structure/information.
server/commands.c: remove dumplights command.
server/encounter.c: removed - code no longer used
server/init.c: remove RANDOM_ENCOUNTERS code.
server/script.c: change Script_getMapObject to return NULL since there
is no longer a map object. Modify to use new insert_ob_in_map and
update_object functions.
socket/info.c: Modified to use new map structure/macros
socket/request.c: Modify draw_map_routines to use get_map_from_coord so
that it properly deals with tiled maps. Modified to deal
with potentially NULL face values. Modified update routine to
call update_position for spaces within player view which need an
update
MSW 2001-07-13
+++
common/object.c, common/player.c, include/object.h, server/skill_util.c:
Remove the unused LINKED_SKILL code.
common/Makefile.in: Use cproto to make prototypes - cextract fails for
some reason and now seems unsupported. Cproto generates a bunch
of warnings, but does do the job.
common/arch.c,server/apply.c, server/main.c, server/monster.c: cleanup some
compile warnings (unusued variables, returns without value
doc/playbook/Makefile.in: Create proper dependencies for files.
doc/playbook/treas2-extract: Add player_force to value to ignore.
doc/spoiler-html/spoiler.html: rebuilt
server/skill_util.c: Remove the unused LINKED_SKILL code. Prevent
characters that have meditation skill from learning melee weapon skill.
MSW 2001-06-28
doc/Protocol: Add 'darkness' setup option documentation.
include/newserver.h: add darkness element to socket structure.
include/script.h,server/script.c: remove static declaration from script.h,
move it to script.c
socket/init.c: init darkness element in socket structure.
socket/request.c: Add support in setup command for client to set if it
wants darkness information or not. Modify map update functions such
that if the client does want darkness information, server does not
send it. Improve darkness handling so that if using the map1
protocol command, send darkness for first blocked space due to
darkness - this makes it possible for client to interpolate results
better.
MSW 2001-06-16
common/item.c: Add boots and gloves to items which are not magical just
because they have resist physical. This bug resulted in most all boots
and gloves being shown as magical, even though they had no special
properties.
socket/request.c: remove some dead code. Memset entire map cell
to zero when scrolling and the map is cells is one that was not in
view. This fixes redraw problems when using large viewable maps.
MSW 2001-06-11
doc/Protocol: update information for the mapcmd, add map1cmd to
section of setup commands.
include/newserver.h,socket/init.c: add map1cmd element to socket structure that
determines which protocol (map,map1) will be used for sending the
map.
socket/request.c:add 'map1cmd' to list of setup options. when sending
the map, use the map1cmd element to determine what protocol command
to use to send it.
MSW 2001-06-07
server/shop.c: Fix bug that resulted in items in shop being paid,
as well as not generating proper listing. MSW 2001-06-06.
Checkin of code that supports larger map sizes (configurable in
config.h).
common/los.c: update los code since it only handled 11x11 maps. Now
uses formulatic approach so any map size should be supported. This
does result in a few more spaces getting blocked around corners,
but it doesn't seem that bad - certainly not compared to the ability
to have larger viewable maps.
common/map.c, crossedit/CrEdit.c, crossedit/Edit.c, include/global.h,
include/map.h,random_maps/monster.c,random_maps/special.c,
random_maps/standalone.c, server/apply.c,server/c_misc.c,
server/spell_effect.c,socket/info.c:
change mapx,mapy to what they really point to,
as it prevented using those as variable/structure element names.
common/object.c: update_position - if faces for different layers are
duplicate, set the duplicates to be blank to increase client
update efficiency.
doc/Protocol: Add map1 command description, update setup command to
describe setting of mapsize.
include/config.h: add MAP_CLIENT_X/Y to set maximum map size we can
send to the client.
include/newserver.h: add mapx, mapy values to socket structure
include/player.h: Use MAP_CLIENT_X/Y for sizing arrays that hold
map related information in player structure.
server/player.c: As per player.h above, use appropriate sizing when
initializing player stucture.
server/shop.c: Update mapx,mapy like above, but re-do shop listings code as
it was doing a lot more work than necessarily (I think some changes
got put in for sorting, and the old object manipulation was never
removed when that got done)
socket/init.c: set default client map size to 11x11 in the socket.
socket/item.c: LookAt - change checks for position checking (such that
you can only look at things in bounds) use max viewable map size.
socket/request.c: Make setup commands a little more forgiving if there are
extra spaces. Add 'mapsize' command to setup command. Update
old map sending code to use socket map sizes (to support even
smaller than normal maps, or 13x13 or 15x15 maps). add draw_client_map1
command which implements the map1 protocol command.
MSW 2001-06-03
random_maps/treasure.c, wall.c: fix a problem where hidden doors
surrounding a treasure could destroy exits. --PeterM 5/31/2001
Make ALLOW_SKILLS standard part of game (remove #ifdef's for it)
Files affected: common/living.c common/object.c common/treasure.c
include/config.h include/player.h server/apply.c server/attack.c
server/c_move.c server/c_range.c server/c_wiz.c server/commands.c
server/init.c server/login.c server/monster.c server/player.c
server/rune.c server/skill_util.c server/spell_util.c
Make MULTIPLE_GODS standards part of game (remove #ifdefs for it)
Files affected: common/readable.c include/spellist.h include/config.h
server/attack.c server/gods.c server/skills.c server/spell_effect.c
server/spell_util.c
doc/Makefile.in, doc/Protocol: Add protocol description file here instead
of in the client distribution.
include/global.h: Move declaration of MAX_EXP_CAT near top of file
so it is set before player.h is included.
include/newclient.h: Add CS_STAT_SKILL* values for sending skill
experience information to client.
include/newserver.h: Add skillexp value to socket struct which determines
if client wants skill experience informatiion.
include/player.h: Add skill information tracking to player structure
so we can easily know when to send updates to client.
random_maps/expand2x.c: remove unused variable to prevent compiler warnings.
random_maps/square_spiral.c: Include prototype information on all systems,
not just win32 to prevent compiler warnings.
server/skill_util.c: Initialize skill pointers to make it easier to
find skill information when we want to update client.
socket/init.c: Init socket->skillexp to 0.
socket/loop.c: Fix indentation of table - whitespace change only
socket/metaserver.c: Minor fix to prevent compile warnings (on the sprintf
that composes the data to send to the metaserver)
socket/request.c: Redo SetUp function to be more compact and IMO simpler as
wll as easier to read (functionality remains the same).
VersionCmd modified to warn users of on dxclients (code on MT)
StatsCmd added to send skill information if client wants it.
The sending of skill experience is by MT, rest of the changes by me.
MSW 2001-05-28
common/readable.c: When making recipe books, give the recipe that they
are for in the title. Makes it more worthwhile to buy them.
lib/treasures.c: Increase the chance of readables in chests some (in fact,
add a chance.)
MSW 2001-05-25
lib/artifacts: Reduce potency of Poison artifact foods.
server/apply.c: When eating poison artifact foods, hit player with poison
attacktype instead of just subtracting hp. This way people with
poison resistance get proper benefit. MSW 2001-05-24
doc/metaserver, doc/Makefile.in: Add metaserver file which describes
working of metaserver and format of data fields.
socket/metaserver.c: Add reporting of inbytes, output bytes, and uptime in
seconds to notification of metaserver
MSW 2001-05-24
server/player.c
common/living.c
include/libproto.h: New experience loss on death policy implemented.
(As per consensus.) 3 levels or 20%, whichever is less.
--PeterM 5/24/2001
server/spell_util.c: Fix typo in polymorph code (when enabled in config.h)
MSW 2001-05-24
server/disease.c: replace disease->owner check with get_owner.
MSW 2001-05-24
server/pets.c: pet_move - fix formatting to be 4 space indentation.
if we remove the monster, free it here instead of having move_monster
do it. Add check for was_destroyed after first call to move_ob -
crashes have been observed in that function, and I believe that is the
cause.
server/monster.c: move_monster: let pet_move free the pet if necessary.
server/spell_effect.c: Clear sleeping flag of monsters when casting
summon pet monster (or other creatures). Some archs have this
value on by default, so the monsters don't follow the player until
an enemy is found.
MSW 2001-05-22
socket/item.c: Don't raise player to top of stack when they look at
something. I think this may be causing server crashes in some
circumstances - plus its not really needed anyways.
socket/loop.c: block_until_new_connections: Add call to flush_old_maps
so maps are reset while waiting for a new player.
MSW 2001-05-22
configure.in, configure: Fix png and Xpm library detection. Suggested
patch by Yann Chackhoff, applied by MSW 2001-05-20
------------------------------------------------------------------------------
Changes for 1.0.0:
common/living.c: Fix AC wrapping problem - now limit ac to +/- 120.
MSW 2001-05-12
include/config.h: Add NO_POLYMORPH feature selection
include/spellist.h: If NO_POLYMORPH is set, make it so that polymorph will
not show up in wands/rods
server/spell_util.c: Handling for NO_POLYMORPH selection
MSW 2001-05-11
server/rune.c: Make sure rune message is newline terminated. Fix map
corruption problem. MSW 2001-05-10
Various improvements to make finding memory leaks easier.
common/anim.c: Add free_all_anim function
common/arch.c: Modify free_all_arch to free more data
common/init.c: If running under MEMORY_DEBUG, don't pre-allocate objects.
common/map.c: Add free_all_maps functiion.
common/object.c: Modify object allocations if using MEMORY_DEBUG to only
malloc one object at a time, and not pre-allocate objects.
common/readable.c: Fix memory leak.
common/shstr.c: Include autoconf.h so it can pull in dmalloc.h file.
include/config.h: Remove notes of what was removed a long time ago.
Add MEMORY_DEBUG option.
include/libproto.h, include/sockproto.h, include/sproto.h: automatic rebuild
server/c_misc.c: Fix 'malloc info command so it reports right memory total
for maps. Add command_style_map_info which sums up memory used by
style maps.
server/commands.c: Add style_info wiz command which dumps memory usage
for style maps.
server/init.c: Have sighup handler call cleanup function.
server/main.c: Fix clean_tmp_files which could result in crash if one
of the maps in memory has 0 reset time. Modify cleanup function
to free more data.
server/player.c: op_on_battleground: Fix compile warning about unuused variable.
socket/init.c: Change name of free_all_ericserver to free_all_newserver,
have it free all face data.
MSW 2001-05-08
socket/item.c: Modify look_at to not stop when it finds the first invisible
object.
server/monster.c: Modify monster_check_pickup to check to see if the
next object got destroyed. I'm not sure the exact way this happens,
but I've seen one crash where this did happen - I'm guess some
function further down in the monster_check_apply look may call
this or destroy the item.
MSW 2001-05-01
common/object.c: Add clear_owner function.
include/libproto.h: rebuild.
server/player.c: Modify op_on_battleground to look for battleground
anyplace on space. Temp for for wall of thorns on space - as long
as maps don't try to abuse the use of battlegrounds, should be OK.
server/time.c: Add clear_owner call to stop_arrow. Fixes problem of
thrown objects not getting saved.
MSW 2001-04-28
common/object.c: Have update_object map the look window for redraw if
the object is not something the client normally animates (like a lever).
MSW 2001-04-27
server/apply.c: Modify apply_id_altar check for player - had a && instead of
a ||.
socket/item.c: Modify ApplyCmd so a removed player can not apply objects.
Fix crashes caused by players applying savebeds after they have
used the bed. MSW 2001-04-26
server/spell_util.c: have put_a_monster generate random monster
abilities.
TODO, doc/mapguide: Various minor updates.
MSW 2001-04-25
server/c_object.c: Pass right object to query_cost_string so that
if you pick up an unpaid object into a container, it generates
the correct price. MSW 2001-04-22
server/c_wiz.c: fix shutdown and reset_map wizard commands/function
so they no longer crash the server. MSW 2001-04-22
server/monster.c: add check to was_destroyed when monster fires an
arrow. Call was certainly missing, and appears to be responsible for
crash. MSW 2001-04-20
server/player.c: Clear op->chosen_skill when we get to the play_again
prompt. Otherwise, the server may try to use this later on, and it
no longer points to a valid object, so it results in a crash.
MSW 2001-04-19
server/skill_util.c: Add missing call to out_of_map in skill_attack which
could result in crashes if player is at edge of maps and decides to attack
in direction off map. MSW 2001-04-18
server/attack.c: Remove error message about golem without owners,
also add better checking before clering the op->contr->golem field.
common/map.c: set status flag on maps to MAP_SAVING so remove_ob does
not do extra work when we are deleting a map (ie, immediate reset)
from emory.
server/skills.c: If someone is stolen from a player, send an esrv_delete_item
to the client so the clients inventory remains correct.
MSW 2001-04-16
common/re-cmp.c: Modify re_cmp functiion so that it properly matches
strings not at the start 'ie, dude chain will now match against
the chain value'.
server/monster.c: Properly alter direction monster moves if they are
feared or confused. It was properly altering direction when monsters
were using range attacks, but not if they were just wanting to move.
MSW 2001-04-12
common/living.c: Don't use the last_heal object in experience objects as
sp regen penalty. This should fix the problem of inconsistent sp regen
rates - last_heal is used in experience objects if the permanent experience
option is turned on. MSW 2001-04-11
PeterM:
server/spell_util.c: fix peace so it gives experience
common/button.c: change the "error" to a "debug" message
to reduce server crashing.
------------------------------------------------------------------------------
Changes for 0.98.0:
server/skills.c: Modify inscription so that when inscribing cleric spells,
it reduces grace. Before, reduced mana no matter the type of spell.
server/c_object.c: Fix bug in pick_up where it was not using the right
count for picking up objects if the player did not specify one. This
allowed players to put objects into containers that should not really
fit.
server/player.c: Don't let players shoot arrows at themself. Also,
minor changes to use new_draw_info_format.
server/swap.c: If recycle temp maps, don't save out random maps to
get recycled. MSW 2001/04/07
PeterM 2001/04/06:
include/libproto.h common/object.c server/apply.c server/spell_util.c
Added a new function: instead of stacking many burnout or firetrail
objects, only 1 per square is added. Real reduction in server overhead.
No reduction in cosmetic effect.
common/porting.c: Fix compile warnings/bugs introduced by Win32 changes.
server/time.c: Modify move_player_mover so that it determines direction
of the mover and then process accordingly, as well as formatting
changes.
server/c_object.c: modify examine so that it properly shows info about
magic bullet spell books. MSW 2001-04-05
common/item.c: Modify identify function to clear the NO_SKILL_IDENT
flag so objects will now merge. Also, once the object has been
identified, the no_skill_ident doesn't have meaning anymore.
MSW 2001-04-03
server/c_object: Modify examine command to only be able to examine
valid objects, and not whatever is on top of the space, which may be
insivisible. MSW 2001-04-01
include/sproto.h, server/c_wiz.c server/main.c server/player.c socket/loop.c:
Modify leave function to take a second parameter that determines if it
should print a message about the player leaving the game or not. Proper
use of this prevents duplicate XXX left the game messages. MSW 2001-03-29
common/image.c, include/define.h, include/global.h: Add empty_face structure
and appropriate code to initialize it. This is used for the server side
look selection.
include/newserver.h: Add NUM_LOOK_OBJECTS to control number of look objects
to send at any one time. add look_position field to the newsocket
structure.
server/move.c: clear look position as player moves.
server/player.c: initalize look_position element in structure.
socket/item.c: modify esrv_draw_look to sne NUM_LOOK_OBJECTS at any one
time, and to also send pseudo objects that lets the player scroll up and down.
modify ApplyCmd so that if it detects the application of one pseudo objects
to adjust the look_position.
MSW 2001-03-29
common/readable.c: Name spellbooks based on level of spell, and not
just randomly. Patch by Preston Crow, applied by Mark Wedel 2001-03-29
configure, configure.in, include/autoconf.h, includes.h: add check for
time.h and include it if we find it.
socket/item.c: esrv_move_object - have it check to see if the object is
already on the ground before we try to re-drop it. Likewise, check
to see if it is already in players inventory before we try to pick
it up.
common/object.c: Don't send face updates to the client or make
the space as needing to be redrawn. Client now deals with animation
of the look window on its own.
utils/(metaserver.pl crossloop add_throw.perl crossloop.pl)
lib/(Makefie.in, checkarch.pl collect.pl xpmtopix.pl) - - deleted
from CVS - '.in' versions of these files now exist and the real
versions are created as part of the configure process. Update
Makefile.in to reflect this change.
MSW 2001/03/28
common/object.c: have update_position just update the flag that the
server needs to send the look window to the client and don't send the
item at this point, as sending the look will do that.
server/main.c: process_players1: Remove call to draw (which updates
the client map) - the handle newclient in socket/loop.c already
does this and there is no reason to send multiple instances of the
same map.
MSW 2001/03/23
server/c_object.c: drop_object function: send delete item to client as
item is dropped. This fixes a problem of phantom objects in the
inventory. Unrelated change to not call esrv_send_item for objects
that are dropped - esrv_draw_look will get called later on and will
update this at that time. MSW 2001/03/23
server/c_object.c: Update the return value for some matches - they
function was returning immediately when it got a match, but did not give
them a high match value, so searching for 'key ring' used to return a
match value of 6 or so on the key ring, but a 14 on a key.
common/object.c: Modify find_free_spot to call arch_out_of_map so that
it properly deals with multipart objects.
server/main.c: Fix enter_map so that we first use the golem (and not player)
when calling find_free_spot. Also, modify code so that it properly
updates coordinates of the multipart golem.
MSW 2001/03/20
server/skills.c: Fix orate so that we check for a positive chance (and just
not nonzero chance) for successful oration. Due to adjustments, at low levels,
the oratory chance can be negative. MSW 2001/03/20
server/spell_effect.c: Change cast_change_attr to find an enemy (and not
friend) when casting the curse spell. MSW 2001/03/20
server/apply.c: Increase size of buf to be a HUGE_BUF to very
long item names don't cause a stack overflow. MSW 2001/03/20
common/object.c: Modify update_position so that we don't show invisible
players to other players. MSW 2001/03/20
------------------------------------------------------------------------------
Changes for 0.97.0:
MSW 2001/03/18:
common/init.c: add RESET_LOCATION_TIME initializer to settings structure.
include/config.h: Add RESET_LOCATION_TIME value. If nonzero and the save was longer than
the specified time in seconds, player will be returned home upon login from
save.
include/global.h: Add reset_loc_time field to settings structure.
server/login.c: Remove some unused variables, add support to return player
home as described above.
server/spell_effect.c: Fix for crashes when casting control undead and your
god does not have an enemy. Now properly check to make sure we are not
dereferencing null pointers.
MSW 2001/03/16:
Change code so that if player dies and loading the players savebed map does
not work, return player to EMERGENCY_MAPPATH instead. New function added
to server/main.c called enter_player_savebed which does the work,
Files changed: include/sproto.h server/main.c server/player.c
server/spell_effect.c (comment added)
Unrelated change: Remove messages about multiple resist types set.
Files changed: common/loader.l common/loader.c
MSW 2001/03/15:
server/spell_effect.c: Add physical attacktype when casting holy possession.
Otherwise, characters who use karate end up not being able to damaage
anything.
MSW 2001/03/09:
crossedit/App.c: Move the loading of images to later in the editor
startup state. In this way, the client can allocate the colors it
needs for its windows before the the png images use up all the colors.
crossedit/png.c: New png loader implementation. New version is much
faster (50 times faster). As part of this, only 8 bit displays,
a private colormap will be allocated, and after that gets filled
up, a color mapping routine will be used - this makes the png
images loadable on an 8 bit system in addition to the speedup.
crossedit/xutil.c: Adding timing information for loading of images.
call init_pngx_loader before starting to load png images. Pass
colormap to png_to_xpixmap by pointer and not value so that
the loader can change the colormap.
AV 2001/03/09:
common/button.c: Added new attribute to altar triggers: "last_sp 1".
If set, the altar trigger will push the connected value only
by dropping the sacrifice, NOT by altar reset. If unset ("last_sp 0")
it will work like it used to (push by sacrifice and by reset).
MSW 2001/03/06:
server/spell_effect.c: Fix message when consecration fails - use the ob->name
field and not the ob->title field. Also fix broken logic that checked
for the floor.
server/init.c: Related to 3-4 change which changed the default name of
the logfile to "" so we know to use stderr. This doesn't work for
daemon mode, so if the name is "", we use the default logfile instead.
MSW 2001/03/04:
TODO: add re-connecting player to new client if client logs in with
right name/password.
common/init.c: Open up the logfile with the provide filename when given
the -log option.
server/init.c: Make set_logfile a first pass option so the init_library
has the right logfile name to work with.
server/main.c: Fix crash if map has an exit path yet that file does not
exist. Give proper error message.
MSW 2001/03/01:
server/main.c: Modified random_map code so the server will not
crash if the exit object has no message (and thus variables to set
for the random map).
Modified so that golems move away from player when player
changes map. Values were reversed before, causing the golem to move
towards the player.
MSW 2001/02/25: General player login cleanup. This should fix the crash
when players re-roll stats too often. So far, it also seems to
have the additional effect that calculated players on map now appears
to be correct.
common/player.c: No longer allocate the player object structure in
get_player_ob (function is really misnamed). Callers to this function
were not using the allocated function.
server/login.c: Add leave_map call when player is loaded.
server/main.c: Add leave_map function.
server/player.c: Move get_player function to start of file - can declare
it static that way. Move some initialize from add_player to get_player.
Add set_first_map function. Add appropriate calls to leave_map
and set_first_map when players join and leaves the game.
MSW 2001/02/22:
TODO: Add some items, remove some others, remove outline of future versions,
since it was out of date.
common/loader.l,loader.c: Declare msgbuf a static outside the lex_load function.
lex_load was otherwise clearing it each time it was called, which resulted
in empty messages for the random artifacts (since the call lex_load one
line at a time). Instead, we just zero this at start of load_object.
Original reason of this change was due to purify errors - as I look at the
code, it appears even before these changes that it was clearing the buffer
properly.
common/map.c: removing pending field from map objects.
common/re-cmp.c: Comment out some code which was resulting in too many
false compares.
include/config.h: increase default for MAX_OBJECTS. 6000 is a bit small
on current systems.
include/map.h: Remove pending field from map structure.
random_maps/treasure.c: Increase size of doorlist. Fixes crash, in that
if a random map could place 8 doors around the treasure, the list
was not terminated, so the problem would eventually try to read/dereference
random memory after the array.
server/c_misc.c: Remove pending field from maps, so remove functions
and other places that referred to it (like the maps command)
server/c_wiz.c: fix up wiz map reset command. Not really tested, but
old code had some definate problems just from visual inspection.
server/main.c: Further fix for unique exits - relative paths to unique maps
from non unique maps should now work.
server/monster.c: Various fixes - one is that should get more reliable distance
values for multipart monsters. Second, modify dist_att to calculate from
closest part of monster, and not the head of the monster.
server/pets.c: Remove code dealing with pending objects.
server/player.c: Don't remove invisible objects in players inventory when
playing with permadeath mode.
server/spell_util.c: If you try to cast denied spell, it no longer costs any
spellpoints.
socket/item.c: Fix bug where it was using 'item' protocol command instead of
'item1'
End of MSW 2001/02/22 checkin.
------------------------------------------------------------------------------
Changes for 0.96.0:
MSW 2001/01/11:
include/rproto.h: Rebuilt for new random map code.
server/player.c: remove player insert in key_roll_stat - player is already
inserted.
server/swap.c: When swapping out map, see if it has already reached reset time,
and if so, just delete it and not save it. In flush_old_maps, now have
it check for maps that have no timeout set - this sometimes happens when
players save/die on maps.
MSW 2001/01/11:
Other than various general cleanups, the main change this code does is
that style maps (for random maps) get loaded special now - they objects
they contain are not put on the active list, and they use a private map
list so they do not appear in the output of the 'maps command.
common/arch.c, common/treasure.c,server/login.c: Update calls to load_object
common/loaderl.l,loader.c: Update lex_load to take an optional flags option.
This is currently only used so that the loader can decide if it should
call update_ob_speedto put objects on the active list or not.
Calls to lex_load updated. load_object modified to take another option
common.map.c: remove PROCESS_WHILE_LOADING and CHECK_ACTIVE_MAPS ifdefs.
update calls to load_object. Remove some dead code.
include/config.h: Remove CHECK_ACTIVE_MAPS and PROCESS_WHILE_LOADING flags.
Those options did not work, and in all likelihood, this would be done
via threading now days and not what code was there.
include/libproto.h, sproto.h: updated or various function changes.
include/map.h: Add MAP_STYLE flag.
random_maps/exit.c: Call set_map_timeout after we load the final map
so it will get swapped out.
random_maps/standalone.c: Add dummy set_map_timeout function so it compiles.
random_maps/style.c: Add load_style_map function which does the job of
actually checking to see if a style map is in memory, and if not,
loads it up. Updates the pointers so it appears on a map style map list
and not the general map list.
server/main.c: create set_map_timeout function that deals with setting the
map timeouts. Fix bug so server doesn't crash if two players kill each
other on hall of selection.
server/monster.c remove dead code.
socket/loop.c: If realloc fails, catch it and exit with meaningful
error message.
End of MSW 2001/02/11 checkin.
MSW 2001/02/08:
server/login.c:Fix that would prevent maps from getting swapped out properly -
we would try to swap out a map the player is in the process of leaving - move
swap out code until after we have moved the player to the new map. MSW
2001-02-08
MSW 2001/02/06:
common/porting.c: relocate clean_path from this file to server/main.c
server/main.c: relocate clean_path from porting.c. Add unclean_path.
Modify enter_unique_exit so it supports relative maps on unique maps.
Modify enter_exit so word of recall (or other forcelike fields), work
when the return point is a swapped out unique map.
MSW 2001/02/05:
server/attack.c: Fix blind and paralyze - logic for reducing duration was
broken, resulting in zero duration for most characters. It should now
work properly, reducing according to the amount of protection.
MSW 2001/02/02:
common/item.c: Don't have armour item types get returned as magical if they
have an armour value - that is to be expected. This eliminates the false
positives that you otherwise get on armor when you cast detect magic.
include/newserver/h: and checksum field to FaceInfo struct. Update
version_sc to 1026.
socket/init.c: calculate image checksums as we load the images.
socket/request.c: If client is at least version_Sc 1026, use face1 protocol
command that includes the checksum.
MSW 2001/01/31:
common/object.c: Fix that that spells cast on spaces with no floors get
set properly after the spell expires.
common/player.c: Use skill tools first (lockpicks, talismans, etc) before
using native skills. In this way, an object with bonus automatically
gets used.
common/living.c: Fix so that negative con bonuses work properly - fixes
bug where a higher con could result in lower total hp due to improper
calculation.
MSW 2001/01/30:
Complete rewrite of the exit handling code. Hopefully as an effect, this will
fix the player appearing in the middle of the oceans. I think the code
should also work better in many other areas. Main enhancements is a 3x3
area for pets to follow player to new map, as well as golems now following
players to the new maps.
include/sproto.h, random_maps/rproto.h - rebuilt.
random_maps/random_map.c: Change generate_random_map to take a structure
with the random map paremeters.
random_maps/reader.l, reader.c: Add set_random_map_variable function that
reads the map parameters from a char buffer. Also, remove some leftover
comments that were from the common/loader.l file.
random_maps/rogue_layout.c: Change some functions to be static so make proto
doesn't collect them.
random_maps/standalone.c: Add opening of parms file into main function since
it ws removed from the random_map.c file.
server/apply.c: Don't display the message of random maps to the players
as they enter them, as this message is random map parameters, and not
a real message.
server/login.c: #if 0 out using of the player loading element in the structure.
this isn't used right now.
server/main.c: Bulk of the changes. main changes are to break apart the
old enter_exit function into smaller functions that more logically do
the needed function (random maps, unique maps, and transferring the player
to the new map). random map code now passes the parameters via
structure instead of file in /tmp. Code is much more understandable now
and hopefully bugfree.
server/pets.c: minor changes/bugfixes. Search full SIZEOFFREE array, use
real owner variable when print out messages.
server/player.c: Remove usage of the loading variable in the player structure.
End of MSW 2001/01/30 checking.
MSW 2001/01/23:
Various cleanups/fixes as detected by purify:
common/anim.c: animation[0] was given a null pointer as the name, but
bsearch/or comparison function will try to de-reference it.
Give it a unique name.
common/loader.l: msgbuf was being used initialized in the main loading
function. loader.c also regenerated.
common/object.c: find_free functions were not checking to see if the
spaces they were examining were out of the map. Added checks
to do so.
server/apply.c: buf was being used uninitialized in the function.
socket/init.c: input buffer needs to be initialized as we do a
strncasecmp against the buffer which may not have any data in it.
MSW 2001/01/18:
server/skill_util.c: add change_skill_to_skill function to be used when
we already know the skill object we want to use. This is more efficient
than change_skill which takes a skill number and then searches the
inventory for the object.
remove extra esrv_send_item from do_skill_attack - don't need to send
skills to player.
do_skill_attack: remove call to hth_damage - that function does not take
into account objects in the player inventory that increase damage,
and since that is called each attack, it is not feasible to have it
search the players inventory. Instead, we just rely on damage generated
by fix_player - only think hth_damage did was adjust damage based on
level difference.
PeterM 2001/01/16
Added randomly-generated nethack-style maps to crossfire's
random map generator.
MSW 2001/01/15:
Change blindness and paralyze so that duration is reduced based on protection
the player has. file server/attack.c
MSW 2001/01/15:
Various fixes for friendly object code:
common/button.c: Add missing call to remove_friendly_object
common/friend.c: Pretty much completely re-written. add_friendly_object now
checks to make sure the object being added isn't already on the list,
remove_friendly_object will remove objects whose tags don't match,
and added clean_friendly_list.
common/object.c: No reason to use the function pointer to
remove_friendly_object since that function is in the lib.
common/time.c: Make DEBUG_TIME always on (no longer compile time option).
other areas use the global var pticks, so if it was turned off, compile
would break anyways.
common/treasuer.c: No longer print debug messages on artifacts created.
Cluttered log file making it hard to see more important errors.
include/config.h: Remove DEBUG_TIME define.
include/libproto.h: Rebuilt for clean_friendly_list function.
server/main.c: rewrote do_specials to do things based on pticks variable.
This allows various specials to be spread out across multiple ticks
easier. Also, added clean_friendly_function to part of what this does.
server/skills.c: add missing call to remove_friendly_object. Also, removed
from #if 0 .. #else .. #endif code.
End of MSW 2000/01/15 checkin.
PeterM 2001/01/08: Wrathful Eye spell implemented.
MSW 2000/12/26:
Checkin of Jan's new god intervention code. I haven't played around with
it much, but I haven't seen any really obvious problems.
common/living.c: remove learn_prayer_chance
common/treasure.c: Various changes to treasure generation - mostly to
deal with starting equipment and putting it in the inventory.
doc/crossfire.doc: Update docs on god intervention.
include/define.h: GT_... flags removed.
include/treasure.h: GT_... flags added. Addition flags added from
what was in define.h before.
lib/archetypes, lib/crossfire.png, lib/treasures: Updated with new
archetypes and treasures.
random_maps/standalone.c,server/rune.c,server/time.c: Calls to
create_treasure updated
server/apply.c: New functions for god intervention added, update calls
to create_treasure, other god related changes.
server/c_wiz.c: Calls to create_treasure updated, various functions to
allow DM's to learn/unlearn spells added.
server/commands.c: Various commands added to the wiz set of commands.
See commen for c_wiz.c
server/disease.c: Changes to reduce_symptoms
server/gods.c: Numerous updates for god intervention code.
server/player.c: Modifications for starting player equipment.
server/skill_util.c: Display the god the character worships when they
issue the skills command.
server/skills.c: Minor cosmetic change made to message when praying on altar.
server/spell_effect.c: Changes related to gods, cure spells, and
generation of treasures & items.
End of MSW 2000/12/26 checkin.
MSW 2000/12/23:
include/define.h: Add SIZEOFFREE1 and SIZEOFFREE2 values to use instead of
arbitrary constants in the code.
server/monster.c: change communicate function to use above values. Before
it was stopping one short of the full 2 space array, so one particular
space (-1, -2 relative to player) would not hear players speech.
server/attack.c: Don't exit hit_player function if damage is reduced to 0
in magical attacks. This was preventing face of death and probably a lot
of effect only spells from working.
server/spell_util.c: modify check_cone_push to use move_object to blow
the objects. Before, multisquare monsters were getting sliced
into their individual components - move_object deals with multisquare objects
properly.
PeterM 2000/12/18: Re-add the conflict spell (various files)
attack.c: fix a bug which could easily have led to seg fault,
and did when I was testing under efence.
MSW 2000/12/17: Various changes. Note that the scope of files in this checkin
make it appear that a lot was changed, but in fact it was mostly just
re-orginization - very little code has actually changed.
include/autoconf.h.in: Add HAVE_LIBDES to file.
include/config.h: Remove comments after defines for MAP_MIN/MAX timeouts.
This just removes some warnings during compile. comments are now
on lines by themselves.
include/player.h: remove shootstrength for player structure. It was unused.
server/Makefile.in: remove input.c file, add c_range.c file.
server/c_chat.c: remove command_last, add command_shout and command_tell
from input.c to this file. Also fix bug in command tell which
would let players crash server at will.
server/c_misc.c,server/c_object.c: Relocate many functions
from input.c into these files.
server/c_move.c, server/c_new.c: Add standard crossfire banner comment.
server/c_range.c: New file - contains range related commands,
including spell casting (relocated from input.c)
server/c_wiz.c: move command_invisible from input.c into this file.
server/commands.c: Remove unused commands (bell, last, strength)
server/input.c: removed file.
server/main.c: Change HAVE_DES_H to HAVE_LIBDES
server/player.c: When choosing a race, draw it facing south for best
presentation of image.
server/spell_util.c: Remove dead code (#if 0 shootstrength related
code)
socket/loop.c: remove unused variables.
NOTE: Due to the addition/removal of files, you will need to do
'config.status; make depend; make' from the top level directory for
everything to be compiled properly.
End of MSW 2000/12/17 checkin.
PeterM: 2000/12/17: Various problems fixed in
random_maps/*.c: endless loop removed,
exit leading to blocked area of spiral fixed.
PeterM: 2000/12/17: Stat max bug fixed.
server/apply.c
MSW 2000/12/16:
server/player.c: If the player race archetype has a message, print that out.
This allows a descriptive message about what the different races will
get. The message is removed from the player once they decide on the
race.
common/living.c: Add some parens around some PR resistant checks - eliminates
warnings from gcc.
server/disease.c: have cure_disease remove all diseases a player is infected
with. The code suggested it was attempting to do so, and the
messages it printed out certainly suggested that the character
was disease free.
PeterM: 2000/12/14: Added spiral map layout
PeterM: 2000/12/14:
Restructuring of the random map code. Functionally, it
should be identical. All global variables moved into the
functions.
MSW 2000/12/10:
utils/metaserver.pl: Various improvements. Main one is that tcp
connections to port 13326 of the metaserver will dump the information
in a easily parsable format for the client or other applications.
include/config.h: Set ARCHTABLE size to correct value.
server/player.c: Have server send update item to client for players face
while select class. Added esrv_new_player in Roll_Again, because
without it, the client had yet to receive information on what tag
the player was so could not make sense of the updated face.
server/spell_effect.c: Balance issues for polymorph. Reduce maximum
value for high valued objects, remove ability to polymorph generators,
put maximum level on polymorphed monsters and give them saving
throws against the effects.
MSW 2000/12/5:
server/player.c: Move location of where it sets the player has_hit variable
until after we have confirmed that the player has actually attacked a monster
and not that the space is blocked. Fixes various problems and make
behaviour more predictable.
common/button.c: Do not set path_attuned when loading connected objects from within
the editor. This is normally done for random map code/glue logic.
common/player.c: When trying to find a skill to use, use a native skill
first before going off and returning a skill object like a talisman.
MSW 2000/12/4:
common/treasure.c: Make it so resistances from artifact files are absolute
adjustments.
Makefile.in configure configure.in: Fix check for libdes to see if des_crypt
exists in libdes before setting HAVE_LIBDES
crossedit/Makefile.in: Add Cnv/libCnv.a before LIBS - should fix
linking error on irix systems.
utils/metaserver.pl: modified so it ignores entries from hosts that
report their name as put.your.hostname.here
MSW 2000/12/3:
crossedit/Attr.c: Add the new resist names to set of variables one can set.
MSW 2000/12/3:
Misc changes. Main one is adding PNG support to the editor.
TODO: Remove outdated things to do (like partial resistance code)
configure, configure.in, include/autoconf.h.in: Add check for libpng.
include/global.h: Remove displaymodes - moved to crossedit/Defines.h
crossedit/App.c, crossedit/App.h crossedit/CrEdit.c crossedit/CrFace.c
crossedit/CrList.c crossedit/CrUtil.c crossedit/Edit.c crossedit/crossedit.c
crossedit/xutil.c, crossedit/png.c (new file): Add support for png display
in crossedit.
crossedit/Makefile.in: Add png.c file.
server/c_misc.c: Change who command to only display real players, and not
players in process of connecting/unconnecting. Also, remove code to display
old sockets, since those are not supported anymore.
MSW 2000/12/3:
Checking for partial resistance code. Various minor errors also fixed
(compiler warnings, unused variables, Makefile.in changes, etc).
PR code also includes support to send protections to the client.
Files changed:
common/Makefile.in common/button.c common/exp.c
common/friend.c common/holy.c common/info.c common/init.c
common/item.c common/living.c common/loader.c common/loader.l
common/object.c common/player.c common/re-cmp.c
common/readable.c common/treasure.c crossedit/App.c
crossedit/crossedit.c crossedit/proto.h doc/crossfire.doc
include/define.h include/global.h include/libproto.h
include/newclient.h include/newserver.h include/object.h
include/player.h include/sproto.h lib/Makefile.in
lib/archetypes lib/artifacts lib/crossfire.png
lib/crossfire.xbm lib/crossfire.xpm random_maps/rproto.h
random_maps/special.c random_maps/style.c server/Makefile.in
server/apply.c server/attack.c server/c_misc.c
server/c_object.c server/commands.c server/disease.c
server/gods.c server/input.c server/monster.c server/player.c
server/resurrection.c server/rune.c server/spell_effect.c
server/spell_util.c server/swap.c socket/metaserver.c
socket/request.c
Added Files:
include/attack.h
------------------------------------------------------------------------------
Changes for 0.95.8:
MSW 2000/11/26:
utils/metaserver.pl (added), utils/Makefile.in: Add metaserver.pl script.
MSW 2000/11/25:
include/patchlevel.h (removed), doc/spell-docs/Makefile (removed),
include/Makefile.in, include/version.h, server/init.c, server/main.c,
socket/metaserver.c: remove patchlevel.h - include the patchlevel in the
version.h file, update other files to use version as a single string.
MSW 2000/11/25:
socket/metaserver.c: If on FreeBSD systems, do not attempt to connect to
the metaserve. FreeBSD seems to have a problem using sendto on a connected
soccket.
MSW 2000/11/25:
configure.in, configure, include/autoconf.h.in, server/main.c: Update
to check for libdes.a and des.h and use those for password decryption - fixes
a problem on freebsd if it is using md5 crypt. Hopefully it doesn't break
anything. main.c was also checking for HAVE_CRYPT_H too early.
include/sproto.h: Needed updating. Unrelated to above changes.
MSW 2000/11/22
server/main.c: Modify enter_exit so that it properly uses per player
unique maps that are only in memory and not on disk. Remove unused
variable from process events (unrelated change).
PeterM 2000/11/18:
New spells added:
1) Sanctuary (aura of counterwall)
2) Peace (make monsters unable to fight)
3) Spiderweb (create spider webs)
4) rage (heroism, armour, haste, regenration combined)
5) forked lightning (lightning which forks and strikes )
6) flaming aura (aura of fire)
7) vitriol combined ball/cone/pool acid attack spell
8) vitriol splash (spell for internal use only)
9) ironwood skin (clerical version of armour spell)
Not implemented: 10) poison fog
MSW 2000/11/17:
socket/metaserver.c: More changes - use fcntl to set O_NONBLOCK. Don't
close socket if connect fails, since with sendto it is not required
that the connect works.
PeterM: 2000/11/17
define.h spells.h spellist.h spell_util.c spell_effect.c:
windstorm spell implemented.
attack.c: saving throw behavior modified. Items take a bit
of DAM to destroy now instead of being destroyed with 1hp attacks.
MSW: 2000/11/16:
socket/metaserver.c: Add #ifdef MSG_DONTWAIT into metaserver.c for systems
that lack that definition.
random_maps/style.c: alphasort was not properly de-referencing pointers
when doing name comparisons, and thus returned garbage results,
resulting in a crash when entering random maps. This only happens
for systems which lack scandir in normal libraries (like Solaris).
BSDs and linux have scandir built in, and did not have a problem.
server/disease.c: fix infect_object - server would crash if player did
not have praying skill and was infecting someone else.
end of changes, MSW 2000/11/16
PeterM : 2000/11/14
PeterM: Made some changes so that non-disease effects may be done without
being labelled as a disease. Also, fixed a bug in which we'd kill something
and then try to insert something in the killed thing's map.
metaserver update:
common/init.c: Add meta_ fields to settings structure initialization.
include/global.h: Add meta_ fields to settings structure.
include/sockproto.h: Updated for new meta_ functions.
lib/Makefile.in: Have it install settings file.
lib/settings: Default settings file with some metaserver default value.s
server/init.c: Add load_settings file. Add call to metaserver_init.
server/main.c: Add call to metaserver_update in do_specials.
socket/Makefile.in: Add metaserver.c to list of files.
socket/metaserver.c: File that deals with metaserver related data.
socket/item.c: Remove some unused variables. Unrelated to metaserver changes.
socket/loop.c: Add calls to metaserver_update in block_until_new)connection. Change
function so that if there are no active players, it still timeouts and
does metaserver update. Basically changed to do it the way the
WATCHDOG code did it.
End of metaserver update. MSW 2000-11-13
server/player.c: removed unused tmp2 variable from move_player_attack.
modify depletion in kill_player so the maximum depletion for a stat is -50. This
should preven stat wrapping from -126 to 127. MSW 2000-11-08
==============================================================================
MSW 2000-11-07
common/item.c: query_base_name was not return plural version of items
with 'of' in name. Also, much of the function was not using safe_strcat,
which could result in buffer overlow problems.
common/object.c: Change update_position so that we always generate
3 images per space. This fixes players standing on top of dragon transports,
but generally works for things like monsters standing on objects.
insert_ob_in_map: change 'return' statement to 'return NULL'. Also
remove unused map pointer.
decrease_ob_nr: Fix bug for client updates when player drops item that
is then consume. It was using op->above after object was removed to
find the player. Store above pointer before we remove the object.
socket/item.c: Don't terminate pointer as returned by query_base_name -
instead, terminator buffer after we copy it. For simple object,
query_base_name may directly return a pointer to the objects name
which is only long enough to hold the name itself.
socket/lowlevel.c: Abort if we are trying to send the client a packet
longer than supported by the protocol. Since that buffer is static,
overflowing it will just create memory corruption - easier to stop
then than try and debug it later.
End of MSW checkin 2000-11-7
==============================================================================
PeterM: 2000-11-06
server/spell_util.c crash bug removed from move ball lightning:
ball lightning mover improved in general. --PeterM
--------------------------------------------
--- BEGIN stop_item() / attack fix patch --- Jan Echternach 2000-11-06
--------------------------------------------
Summary of this patch: Provide new stop_item() function for properly
handling "moving" items on a map (flying arrows, thrown objects,
active cones); obsoletes the workarounds. Fix some attack bugs (with
possible server crashes) - many attackers attacked while being
removed, even though much code could only handle the attacker being on
the same map as the victim (not even the attacker being in the
victim's inventory, e.g. poison).
common/object.c: insert_ob_in_map(): Call check_walk_on() after
update_object() because the latter needs to update some very
important flags used by a lot of code before this code is called
by check_walk_on().
common/object.c: get_split_ob(): Completed support for splitting
removed objects.
common/object.c: decrease_ob_nr(): Rewrote this function: Added
support for removed objects. Removing an object completely didn't
always update the environment's weight properly. Removing an amount
of 0 from an object with nrof == 0 destroyed the object. Improved
performance a bit (don't need to update the player's weight if an
object below the player is modified).
server/apply.c: move_apply(): Added recursion limit.
server/apply.c: move_apply(): THROWN_OBJ and ARROW: Use new
hit_with_arrow() function.
server/apply.c: move_apply(): FBULLET and BULLET: Call
check_fired_arch() only when the victim blocks the square (FLAG_NO_PASS
or FLAG_ALIVE).
server/attack.c: save_throw_object(): Use new stop_item() function
before trying to modify an object. Added originator to all
insert_ob_in_map() calls.
server/attack.c: hit_map(): Added log message if the hitter is not on
a map. Added was_destroyed() check after calling save_throw_object().
server/attack.c: get_attack_mode() and abort_attack(): New functions
to determine the type of attack (simple or full attack).
server/attack.c: attack_ob(): Now only attack_ob_simple() with default
damage and weapon class values.
server/attack.c: attack_ob_simple(): Contains most of old attack_ob(),
but takes damage and weapon class as parameters, needed for
hit_with_arrow(). Uses get_attack_mode() and abort_attack() to
support new "simple" attack mode.
server/attack.c: stick_arrow() and hit_with_arrow(): Moved those parts
of old stop_arrow() and move_arrow() that dealt with attacking a
victim over here.
server/attack.c: hit_player(): Uses get_attack_mode() and
abort_attack() to support new "simple" attack mode.
server/attack.c: paralyze_player(): Use insert_ob_in_map_simple()
instead of insert_ob_in_map() because the callers are not prepared for
this function triggering any complex machinery, and
insert_ob_in_map_simple() should be enough for plain visual effects.
server/attack.c: thrown_item_effect(): Don't need to deal with thrown
objects, hit_with_arrow() already does everything necessary.
server/attack.c: adj_attackroll(): Added log message if hitter and
victim are not on the same map.
server/c_object.c: Fixed two typos in "can't pick up xxx" messages.
server/c_object.c: pick_up_object(): Removed can_pick() check because
pick_up() already checks this. Added support for picking up removed
objects because the stop_item() in pick_up() can now call us with
removed objects. Moved FLAG_STARTEQUIP check to pick_up(). Fixed
weight limit lookup for monsters that have strength > MAX_STAT.
server/c_object.c: pick_up(): Use new stop_item() function.
server/player.c: fire_bow() and server/skills.c: do_throw(): Removed
FLAG_NO_PICK workaround for flying objects. stop_item() now handles
this correctly.
server/rune.c: spring_trap(): Fix unlimited trap recursion. Since
traps are triggered by move_apply(), the result of triggering a trap
may trigger the trap again before it is deactivated.
server/rune.c: spring_trap(): Runes that don't cast spells can only be
triggered by living objects.
server/spell_effect.c: move_cancellation(): Don't call hit_map() with
a removed attacker.
server/spell_util.c: cast_cone(): Only print warning message about
cones that don't have FLAG_FLY/WALK_ON if the cone does any damage.
server/spell_util.c: move_cone(): Removed workaround for cones in ice
cubes. stop_item() now handles this correctly.
server/spell_util.c: explode_object(): Rewrote this function: New
interface - exploding object must not be removed when the function is
called, it must have an other_arch (i.e. it must be able to explode),
and it will be gone for sure when the function terminates. Removed
some code with no effect. Don't call any attack functions with
removed attackers.
server/spell_util.c: check_fired_arch(): Rewrote this function.
server/spell_util.c: move_fired_arch(): Rewrote most of this function:
Don't attack with removed attackers. Call check_fired_arch() instead
of duplicating its code.
server/spell_util.c: move_ball_lightning(): Don't attack with removed
attackers. Rewrote the movement algorithm to simplify this task.
server/time.c: stop_item() and fix_stopped_item: New functions.
server/time.c: fix_stopped_arrow(): Contains most of the old
stop_arrow() function. Unlike stop_arrow(), it takes an arrow that is
not removed. Removed FLACK_NO_PICK workaround.
server/time.c: stop_arrow(): Stops arrows and thrown objects and puts
them on the map. Sticking objects into targets is no longer handled
by stop_arrow(), but by hit_with_arrow().
server/time.c: move_arrow(): Don't attack with removed attackers.
socket/item.c: esrv_move_object(): Removed misleading comment.
------------------------------------------
--- END stop_item() / attack fix patch --- Jan Echternach 2000-11-06
------------------------------------------
server/time.c: Add call to esrv_update_item to update the face for
the client after the player chooses a class. MSW 11/3/2000
server/c_object.c, socket/item.c: Fixed for long item support. pick_up_object
in c_object was overwriting a fixed length string, causing server crashes.
item.c was not properly terminating plural version of object name, resulting
in corrupt packets being sent to the client. MSW 11/2/2000
PeterM:
ball lightning made stronger, strikes larger area, never
hits player.
divine shock spell added.
include/sproto.h: Removed prototype of obsolete make_gravestone()
function.
server/apply.c: Put back gravestone_text() function that was removed
accidently a while ago, needed by NOT_PERMADEATH.
server/player.c: Don't use the dead player as the originator of object
movements. Fixed string handling for NOT_PERMADEATH.
- Jan Echternach 10/30/2000
Major race/class change by PeterM:
BEGIN:
*****************
apply.c: new function, apply changes to player. If the change is a CLASS,
player receives certain attributes from the class.
login.c: make sure people using the old race/class archetypes in their
player files can still use them.
player.c:
1) give_initial_items modified for greater flexibility: you
can pass in a treasurelist.
2) Also, initial forces are applied to the player.
3) Comment added on the stat roll function.
4) Word of recall into the new class-choice map (unfortunately hard-wired.) for newly-rolled players.
5) gen_sp and gen_hp and gen_grace now allowed to go negative to slow down player
regen.
skill_util.c
1) Don't give out basic skills anymore. This interferes with the class code.
spell_util.c
1) Praying failures moderated in frequency.
2) Summoned creatures enhanced in wc, speed, depending on casting level.
3) Word of recall allowed to work in no-magic areas if a flag is set.
time.c
1) Move player changer function added.
2) Marker object expiration added.
living.c: cleric fail chance array modified.
map.c: bugfix for random map/recycle tmp map problem.
define.h: defines added for playerchangers and class types
base 10 numbers added for the spell paths.
spellist.h: fixed up summoning spells a little
sproto.h: new prototypes
config.h: hate RECYCLE_TMP_MAPS, turned it off
maps/HallOfSelection: new map for class choice.
lib/treasures: classs/race stuff heavily modified
lib/archetypes, animation, bmaps, bmaps.paths, crossfire.png faces
crossfire.xbm New faces, etc.
END race/class stuff 10/16/2000
apply.c: bugfix for random map/recycle tmp maps interaction. --PeterM 10/16/200
include/skill* server/skill_util.c: levitation skill added.
9/26/2000. --PeterM
common/map.c server/apply.c: Fix an interaction between
RECYCLE_TMP_MAPS and random maps which would cause crashing.
peterm: 10/12/2000
disease.c spell_effect.c: peterm: 10/5/2000
1) Diseases moderated in power by ~1/2 and randomized.
Now monsters can have a mild/moderate/serious/fatal case
of a particular disease.
2) cause disease spells modified to NOT go through objects
spells ordinarily couldn't go through.
------------------------------------------------------------------------------
Changes for 0.95.7:
README: Add crossfire.csua.berkeley.edu server.
TODO: Remove entry about setable behaviour for keyrings, since that has now
been done.
include/patchlevel.h, Makefile.in: Update for 0.95.7 MSW 9/20/2000
lib/maps: got rid of the stuff that was there. Useless stuff.
the maps dist. is the thing to use. --PeterM
common/living.c, server/skill_util.c: Patches by Garth Denley:
Fixes divide by zero crash, sets up perm exp when a new player is loaded,
seperates permanent exp code/calculations into another function.
checked in by MSW, 8/24/2000
lib/crossfire.png: ground/sea*png - remove transperancies from png images
since they should not be transparent. MSW 8/23/2000
doc/spoiler.html/(Makefile.in,empty.pbm, makeps.pl, spoiler.html): Modify
to make gif images from png source instead of xpm images. A valid question
to ask is why convert to gif at all and not just keep in PNG format. The
answer right now is that png support in netscape at least still is not very
good, and it displays gifs better. MSW 8/8/2000
Add/Remove some LOG calls:
common/living.c: Remove log messages about gen_sp values on armor
server/login.c, server/main.c: Add messages about player logins/logouts with
IP address. Useful for tracking potentially troublesome players and where
they are player from. MSW 8/7/2000
The following change basically does the following: When the server sends an
item name to the client, this item name is now two pieces - the first piece
of the name is its singular form, the second piece is the plural name. This
now makes items in the inventory appear more proper in terms of pluralization
and just normal English. I did notice that the server does not know how
to properly make 'torch' plural - it turns it into torchs. A matching
check in for the client has also been done.
include/newserver.h: Update VERSION_SC to 1024
common/item.c: Change query_base_name to take a second option on whether
we should generate a plural version of the name or not.
socket/item.c: Modify functions to use second argument on the query_base_name
function. Update item commands to send two part names (singular & plural).
Modify esrv_send_look to use item1 protocol command instead of item command.
server/c_object.c: Update item_matched_string to use second option to
query_base_name. Modify function to check against both singular and
plural versions of name.
server/shop.c: Modify shop_listing command usage in query_basename to use
second option. It will also generate the singular name, but that is only
used on sorting, so I don't think it will generally cause any problems.
include/libproto.h: rebuilt because query_base_name has an addition opt.
Mark Wedel 8/6/2000
include/config.h, include/global.h, common/init.c, common/living.c,
server/init.c, server/player.c, server/skill_util.c: Add permanent
experience and balanced stat loss features (code by Garth Denley).
Permanent experience make some experience in the skills permanent. Balance
stat loss makes stat loss less likely/costly at low level and more costly
at higher levels. These features are by default off, but can be turned
on either in the config.h file or via command line options. Code checked
in by MSW 8/1/2000
server/time.c: Update the change_object function such that if the object
is in a players inventory, send a delete & send_item for the object that
has changed (the delete + send_item is necessary due to the ways objects
change, so we just can't sent a update_item). This fixes the 'torches
go dim & then out but client inventory not updated' bug, and likely fixes
some other problems - I am not sure how many other objects out there
change. MSW 7/28/2000
random_maps/treasure.c: potential crash bug fixed. Only applied
when a bad archetype was given as a wallstyle. I will also put
in a redundant archetypes fix. --PeterM 7/26/00
lib/adm/map_info, lib/adm/map_check: Update to use new layout of installed
files (share/crossfire), know about random exits (it doesn't do any checking
to make sure the values are sane, which it probably should, but at least it
won't complain about them), update to use /usr/bin/perl. MSW 7/25/2000
server/resurrection.c
include/spellist.h: PeterM: fixed a few unintended things about
resurrection: experience removal was wrong, spellpoints/levels
changed. --PetrM
lib/archetypes: Update to keep in sync with arch tree. Changes to
about a dozen arch's to remove the 'a' in their name. MSW 6/27/2000
server/c_object.c: Fix command_drop which was doing incorrect check for
invisible object - it was supposed to skip over them and only do visible
objects, instead it was doing the reverse. Fixes the 'drop command.
MSW 6/27/2000
server/input.c: Make the inventory command more robust for very long
object names - specify a maximum number of characters we will take from
the name. Without this, you could get buffer overruns that cause crashes.
No normally generated items would ever likely have names long enough to
exploit this bug however. MSW 6/27/2000
INSTALL, README: Update mailing address to real-time address. MSW 6/27/2000
server/login.c: Load and save usekeys value in player save file. MSW 6/27/2000
Patch by Jeffry Hantin which fixes glow objects in map.
insert_ob_in_map_simple now will call the appropriate light updating code.
Applied by MSW 6/26/2000
server/player.c: check_pick(): Rewrite of this function to consistently
skip items that can't be picked up, and to only use a single loop over all
items on the map square. - Jan Echternach 6/23/2000
------------------------------------------------------------------------------
Changes for 0.95.6:
server/monster.c: Patch by Neil Muller so that corrupt/bad @match entries
will not cause the server to crash. Applied by MSW 6/21/2000
lib/archetypes: rebuilt for 0.95.6
lib/collect.pl: Modify to search the archetypes directories in alphabetical
order - before I believe they were collected in basically inode order.
This should make it easier to multiple people to run the collect script
not have basically an entirely new archetyeps file. MSW 6/21/2000
server/commands.c; server/c_object.c: dump_object_from_tag(): Removed
broken command. Fixes server crashes very easily triggered by players.
- Jan Echternach 6/21/2000
server/attack.c: deathstrike_player(): Check for def_lev == 0 very early
(and print error message if we find such an invalid level). Should fix
server crash in case archetypes or maps get broken again in that an
alive object has level < 1. - Jan Echternach 6/21/2000
Makefile.in: Update version to 0.95.6
include/patchlevel.h: Update to .6 for 0.95.6 release
common/porting.c, include/config.h, include/loader.h, include/skills.h,
include/spells.h, include/treasure.h, include/version.h, random_maps/style.c:
Update my mail address and copyright date. Mostly committed to sync
up my data with the CVS repository - MSW 6/20/2000
random_maps/treasure.c server/apply.c: made containers able to
have more than one treasure in them, made a fix to treasure.c, which would
change the options given to it in an unintended way. --PeterM 6/20/2000
common/living.c: fix_player(): Bugfix: Don't reset FLAG_FLYING,
FLAG_REFL_SPELL, FLAG_REFL_MISSILE and FLAG_SEE_IN_DARK if the archetype
has these flags. - Jan Echternach 6/19/2000
random_maps/* Numerous changes improving random maps, including
two crash-fixes, a new type of 'special', ability to copy inventory
of monsters when putting them into maps... --PeterM 6/19/2000
New naming scheme for random maps: they won't grow in size
indefinitely anymore. --PeterM 6/17/2000
server/input.c: command_cast_spell(): Bugfix: Call check_skill_to_fire()
even for wizards because this function has the important side effect
of setting the current skill and experience objects.
- Jan Echternach 6/19/2000
server/apply.c: apply_treasure(): Bugfix: We need to trigger runes as
they are found in the treasure chest, because move_rune() will no longer
trigger them for us. - Jan Echternach 6/18/2000
Updated the INSTALL directions. MSW 6/16/2000
Modified the editor to make certain objects (teleporters, creators,
markers) more easily editable. --PeterM 6/16/2000
Modifed how firewalls worked. They can now be triggered by
handles as well as turned. Ones which are turned by handles
cannot be triggered by handles. PeterM 6/15/2000
fixes to random_maps:
exit.c: won't crash if named final_map doesn't exist
room_gen_onion.c: reordered the options more sanely
special.c: fixed a crash-bug: nuke_map would nuke parts of monsters, but
not the whole monster. --PeterM
server/skill_util.c: Fix type in change_skill - was doing an == operation
when it should just have been an =. MSW 6/13/2000
common/anim.c: animation_object() - return if object does not have a valid
animation after logging error. Before, we logged the error and would
promptly crash. MSW 6/13/2000
server/apply.c: apply_treasure(): Bugfix: Set FLAG_NO_APPLY before
moving object to the top. - Jan Echternach 6/13/2000
server/time.c: move_marker(): Bugfix: Call update_ob_speed() after
changing force->speed. - Jan Echternach 6/13/2000
server/spell_util.c: move_swarm_spell(): Improved distribution of
fired objects. Fixed starting position of fired objects to be able to
hit targets immediately in front the caster. - Patch by Jeffrey Hantin,
applied by Jan Echternach 6/13/2000
server/disease.c, sproto.h, rune.c Fixes from jhantin@derringer.net for diseases:
Reversed strstr calls, force argument added to infect_object,
diseases in immune carrier last forever, needles use infect object,
cast_cause_disease won't fail. --PeterM 6/9/2000
common/loader.l: Fix handling of objects with no animation. Fixes server
crash if object's archetype has an animation, but object doesn't.
- Jan Echternach 6/9/2000
common/loader.l: get_ob_diff(): Bugfix: Issue a "is_animated 0" line
if the object has an animation, but doesn't have FLAG_ANIMATE.
- Jan Echternach 6/9/2000
server/apply.c: manual_apply() and monster_apply_special(): Don't check
for FLAG_UNPAID if object is applied. This should make the code more
robust if an unpaid item get's applied accidently.
- Jan Echternach 6/9/2000
server/apply.c: apply_special(): New optional flags AP_NO_MERGE and
AP_IGNORE_CURSE. - Jan Echternach 6/9/2000
server/monster.c: find_mon_throw_ob(); server/skills.c: find_throw_ob():
Bugfix: Use AP_NO_MERGE flag to prevent unapplied object be merged with
other objects. - Jan Echternach 6/9/2000
server/spell_effect.c: animate_weapon: Bugfixes: Correctly unapply
weapon. Don't set FLAG_APPLIED directly on weapon in golem, but use
apply_special(). Don't call esrv_send_item() when caster is not a player
(fixes server crash if monster casts this spell).
- Jan Echternach 6/9/2000
random_map/<various> Fixes in the map code for various things, including:
1) crash bug on
multi-square monsters. 2) no treasures in final_map, 3) new feature of doing
walls only, .... --PeterM 6/9/2000:
common/button.c: do_mood_floor(): Bugfixes: Only players can have pets.
Call add_friendly_object() for friendly monsters.
- Jan Echternach 6/8/2000
server/spell_effect.c and server/spell_util.c: Several functions: Only
add a pet if there really is a pet's owner, and it's a player.
- Jan Echternach 6/8/2000
server/spell_effect.c: cast_charm() and cast_charm_undead(): Bugfixes:
Only players can cast these spells. This fixes server crash if
a monster casted a charm spell, and the charmed pet was killed.
Call add_friendly_object for friendly monsters.
- Jan Echternach 6/8/2000
common/friend.c: remove_friendly_object(): Use llevError for error
messages. - Jan Echternach 6/8/2000
common/living.c: fix_player(); server/gods.c: tailor_god_spell();
server/spell_effect.c: summon_avatar() and animate_weapon(): Bugfix: Set
a string to NULL after calling free_string(). This fixes a nasty bug
that caused the string's reference count drop below 0, which resulted
in corruption of malloc()'s internal data structures (and possibly
server crashes). - Jan Echternach 6/8/2000
server/time.c: move_creator(): Bugfix: Call free_string() to free old
values of op->name and op->title before overwriting them with new values.
- Jan Echternach 6/8/2000
common/object.c: insert_ob_in_map_simple() and insert_ob_in_map():
Check that we don't insert freed objects. - Jan Echternach 6/8/2000
server/attack.c: hit_player_attacktype() and hit_player(): Bugfix: Check
that find_god() really found a god, and that 'god->slaying' is not NULL.
Fixes crash if a monster casted turn undead and actually hit something.
- Jan Echternach 6/8/2000
server/attack.c: hit_player(): Check that a pet's owner is a player.
Prevents server crashes if a monster has a pet monster due to a bug
somewhere. Use llevError for error message. - Jan Echternach 6/8/2000
server/time.c: move_arrow(): Use llevDebug level for "Arrow had no
map" message. - Jan Echternach 6/8/2000
server/c_object.c, server/spell_effect.c, server/spell_util.c: Bugfixes:
Added some missing checks for destroyed objects. Use was_destroyed()
or return value of insert_ob_in_map() to check for destroyed objects,
not FLAG_FREED or FLAG_REMOVED. Don't use op->count of destroyed objects.
- Jan Echternach 6/8/2000
server/shop.c: get_payment2(): Type of tag is 'tag_t', not 'long'.
- Jan Echternach 6/8/2000
server/spell_effect.c: animate_bomb(): Fix environment checks.
- Jan Echternach 6/8/2000
server/spell_util.c: fire_bolt(): Bugfix: Set level of bolt.
- Jan Echternach 6/8/2000
server/spell_util.c: explosion(): Bugfix: Set FLAG_NO_APPLY before
moving the exploding object to the top. - Jan Echternach 6/8/2000
server/spell_util.c: put_a_monster(): First create the monster
completely, then just insert its head. - Jan Echternach 6/8/2000
server/time.c: generate_monster(): Bugfix: Don't free generators that
are used up in this function. process_object() already does this.
This fixes steambolt (which is a generator but must not used up here -
generate_monster() wasn't looking at FLAG_IS_USED_UP) and all generators
which should really be used up (because process_object() didn't expect
generate_monster() to destroy the object). - Jan Echternach 6/8/2000
server/rune.c: trap_disarm(): Bugfix: Use SK_level() to determine
disarmer's level. Fixes server crash if multisquare monster casts
"disarm". - Jan Echternach 6/8/2000
server/attack.c: hit_map(): Use was_destroyed() to properly check for
destroyed next object. Use llevError for error messages. Skip all
objects that are (no longer) at the specified map position.
- Jan Echternach 6/8/2000
server/map.h server/main.c Increased buffer sizes for map paths.
Needed for random map code. --PeterM 6/6/2000
6/4/2000: Fix done to disease.c which causes diseases to
put experience into the appropriate category. --PeterM
6/4/2000: Added race fields to a lot of monsters. Modified
disease arcs so that they'll be specific to races. Changed
include/spellist.h to re-enable the disease spells. --PeterM
6/4/2000 (disease.c) Added a self-limiting parameter to diseases so
that their power can be tuned to be reasonable. --PeterM
lib/crossfire.png: Some floors modified to no longer have transperencies.
include/newserver.h: Add Send_Face_Png made, also update versions of
the protocol
include/newclient.h: Add CF_FACE_PNG constant.
socket/request.c: Add support for receiving PNG facemode request,
ad final logic to send png images to the client.
Changes by Mark Wedel, 6/2/2000
lib/checkarch.pl: Check for archetypes with type FIRECHEST but no level.
- Jan Echternach 5/29/2000
server/apply.c: move_apply(): Added handling of THROWN_OBJ, CANCELLATION
and BALL_LIGHTNING.
server/spell_effect.c: cancellation(): Traverse inventory of objects
with type THROWN_OBJ.
- Jan Echternach 5/29/2000
server/player.c: fire_bow() and server_skills.c: do_throw(): Bugfix: Don't
use op->count of freed objects. Use was_destroyed() to check for freed
objects instead of QUERY_FLAG (FLAG_FREED). - Jan Echternach 5/29/2000
server/spell_util.c: fire_a_ball(): Bugfixes: Use op->other_arch as
the archetype to fire, not FBULLET. (-> Firechests now cast fire balls
again, not snowballs.) Set level of fired archetype. Check if object
was destroyed after insert_ob_in_map(). - Jan Echternach 5/29/2000
server/time.c: move_firewall() and move_firechest(): Do nothing if
object has no map. Fixes server crashes if a dm creates such a thing
in the inventory. - Jan Echternach 5/29/2000
lib/collect.pl: Modify so that it does not complain about png files in the
arch directory MSW 5/28/2000
common/item.c: Fix query_short_name - wasn't generating all item names
properly because of changes made a few days ago - some areas manipulate
the string being worked on and was not updating the length properly.
MSW 5/26/2000
doc/mapguide: Fix some typos. MSW 5/26/2000
include/define.h: Add MIN_ACTIVE_SPEED value to determine what threshold
something will be put on the active list or not instead of using
varying values throughout the source code.
common/item.c, common/object.c, server/monster.c, server/pets.c,
server/spell_effect.c: Updated to use the MIN_ACTIVE_SPEED instead of
hardcoded values. MSW 5/26/2000
include/define.h,include/global.h, common/image.c: Remove following old
face information: INV_*_FACES, BLOCKED_FACE, STIPPLE[12]_FACE. This
is just a general cleanup - the server has not used these since the
X11 code was pulled from the server. MSW 5/26/2000
common/living.c: Add entries for the attack type AT_INTERNAL in description.
include/material.h: Update to include saves against INTERNAL attacktype.
include/living.h: Remove defunct objects_saves external referance.
The additions of internal to the tables should not really be needed, as
internal attacktypes should not be used publically, but these also act as
placeholders for future attacktypes. MSW 5/26/2000
* server/attack.c: hit_map(), hit_player(); server/spell_effect.c:
move_cone(); server/rune.c: spring_trap(); server/spell_util.c:
move_missile(): Bugfix: Added missing was_destroyed() calls.
* server/rune.c: spring_trap(): Bugfix: Call trap_show() before the rune
has a chance to be destroyed.
* server/attack.c: hit_map(), hit_player(): Check for freed objects
right at the beginning of the function. Removed check that hitter has
a name from hit_player().
* server/spell_util.c: move_cone(): Bugfix: Remove cone objects in
inventories from active list, this fixes the cone without map problem when
a flower was hit with ice and put into an icecube.
* server/spell_util.c: move_missile(): Bugfix: Don't call hit_map() while
missile is removed from the map.
* server/apply.c: manual_apply(): Handle MMISSILE.
- Jan Echternach 5/26/2000
* server/spell_effect.c: animate_weapon() and server/spell_util.c:
summon_monster(): Bugfix: Set FLAG_FRIENDLY for friendly objects.
- Jan Echternach 5/26/2000
* server/attack.c: hit_player(): Bugfix: remove_friendly_object()
was called always after an object with type GOLEM had been killed,
but friendly objects are objects with FLAG_FRIENDLY, not objects with
type GOLEM. This fixes some "Remove_friendly_object(): Can't find
object" errors. - Jan Echternach 5/26/2000
-----------------------------------
--- BEGIN apply() cleanup patch --- Jan Echternach 26/5/2000
-----------------------------------
* player specific code moved from apply() to player_apply() and
player_apply_below().
* apply(): null pointer check removed
* (bugfix?) print message if scroll is unusable because of invalid
spell number
* bugfix: if the altar casted a spell, the message was sent to the
(destroyed!) sacrifice, not the player
* split apply() -> move_apply() / manual_apply()
* move_apply(), check_walk_on(), insert_ob_in_map() and other functions:
New parameter 'originator' that is the object that caused another object
to be inserted into the map. This removes the need to look through all
map objects above an altar to find the player who dropped the sacrifice.
* always check FLAG_UNPAID in manual_apply()
* don't check FLAG_UNPAID in apply_special(), new function
monster_apply_special() which checks FLAG_UNPAID and calls apply_special()
* many new functions like apply_altar() and apply_spellbook() to make
the switch statements in move_apply() and manual_apply() shorter
* changes to actual apply() code:
ALTAR:
spell casting altars should work now if not operated by a player
common/button.c, operate_altar(): altar's message is sent to altar's
map, not player's map
bugfix: if sacrifice was accepted, apply() didn't tell the caller
that it has been destroyed
ARROW, CONE, FBULLET, BULLET:
now returns 'victim destroyed' if victim was killed by the attack
TRAPDOOR:
play sound only if something fell through the trapdoor
print trapdoor message _before_ falling into trapdoor
TRIGGER_ALTAR (in check_trigger()):
don't check for sacrifices if called from animate_trigger()
don't call check_trigger() from fix_auto_apply() anymore (this change
breaks maps with altars that have their sacrifice already stored on
them)
DEEP_SWAMP:
deep_swamp() -> walk_on_deep_swamp() / move_deep_swamp()
when deep_swamp() (now move_deep_swamp()) is called from
process_object(), assume that state (swamp->stats.food) is already 1
EXIT:
removed support for multisquare players
don't print 'is closed' message when moving on an exit, only print this
message if exit is applied manually
SIGN:
only increment last_eat if it hadn't reached the limit yet
SPELLBOOK:
removed partial support for applying by monsters
BOW, WAND, ROD, HORN:
moved code to apply_special()
CLOCK:
bugfix: Monsters must not apply a clock, they would crash the server.
POWER_CRYSTAL:
Bugfix? Don't call esrv_update_item() if not applied by a player.
LIGHTER:
Bugfix? Just return 0 if not applied by a player.
* changes to apply_special():
BOW:
remove double check_skill_to_apply()
ROD, HORN:
change message from "you apply ..." to "you ready ..."
BOW: FLAG_READY_BOW is now set by apply_special(), but that seems
redundant because monster_check_apply() also sets this flag. Remove
setting of this flag from apply_special() because it could have a
more complex meaning in monster.c or remove setting of this flag from
monster_check_apply() because such stuff should be handled in apply.c?
FLAG_READY_BOW is also unset in apply_special() if a bow is unapplied.
CONE:
don't multiply damage by 20
SIGN:
you can hear magic mouths even if you are blind
however, now you can also read signs with FLAG_WALK_ON/FLAG_FLY_ON if you are
blind
(different object types or a new flag would be required)
RUNE:
detonation moved from move_rune() to move_apply() -> runes will now always
detonate if somebody steps on them
allow runes with FLAG_FLY_ON
completely removed GRAVE and MONEY_CHANGER
common/object.c: was_destroyed(): new function
include/object.h: new typedef tag_t
move_apply() returns void, check_walk_on() uses was_destroyed()
lib/checkarch.pl:
check for archetypes with walk_on, walk_off, fly_on or fly_off and without
a type
check for archetypes with type FIREWALL (type 62) and without a level
* server/apply.c: Bugfix: Don't skip calls to change_skill() if wizard -
calc_skill_exp() requires change_skill() to set the current experience object.
* server/monster.c: find_mon_throw_ob(): Bugfix: Unapply applied object even
if heaviest object was choosen.
Bugfix: Use monster_apply_special() to unapply, clearing FLAG_APPLIED isn't
enough. -> Should fix the "HAS_READY_BOW without bow" errors.
* server/skills.c: find_throw_ob(): Bugfix: Use player_apply(), clearing
FLAG_APPLIED isn't enough.
Replace redundant check for FLAG_INV_LOCKED with error message at end of
function if the first check failed somehow and we have choosen an object with
FLAG_INV_LOCKED.
make_throw_ob(): error message if object is applied
* lib/checkarch.pl: check that potions (type 5, POTION) have a level
* server/apply.c: apply_special(): Handle all cases of applying and unapplying
skill objects.
* server/apply.c: manual_apply(SKILL): Just call apply_special().
* server/skill_util.c: change_skill(): Rewrite to simply use apply_special()
for changing skills.
* server/apply.c: apply_special(): Bugfix: Fixed return values.
* server/skill_util.c: link_player_skills(): Bugfix: Don't set exp_obj for
(visible) skill tools.
* server/skill_util.c: link_player_skills(): Bugfix? Reset op->chosen_skill
and FLAG_READY_SKILL because we have unapplied all skills.
* server/input.c: legal_range(): Bugfix: range_skill is valid only if
op->chosen_skill != NULL, not when there is some (unapplied) skill somewhere
in the inventory.
* server/login.c: check_login(): Bugfix: call legal_range() after
init_player_skills() - we can't handle range_skill correctly if skills haven't
been initialized.
* server/login.c: check_login(): Bugfix: Check return value of legal_range(),
and reset op->contr->shoottype to range_none if range was invalid.
* server/login.c: check_login(): Bugfix: Don't call fix_weight() - fixing
the weight of _all_ players isn't necessary. Just initialize op->carrying
directly with sum_weight() instead. This also removes the problem of
updating the weight of an object that hasn't been sent to the client yet.
* server/login.c: check_login(): Bugfix: We need to call fix_player()
(init_player_skills() needs this, and it also makes the code more robust).
* server/apply.c: apply_altar(): Bugfix: Print altar's message before
casting the spell.
* server/spell_util.c: move_cone(): Use copy_owner() instead of set_owner()
and manually correcting the skill and experience object pointers.
* server/spell_util.c: cast_cone(): Don't set FLAG_FLYING - the archetype
needs to have this anyway for move_cone() to work properly. Instead, print
error messages if FLAG_FLYING, FLAG_WALK_ON or FLAG_FLY_ON are missing.
* server/apply.c: move_apply(): TRAPDOOR: Bugfix: Multiply by op->nrof when
calculating the weight.
* randommaps/standalone.c, server/apply.c: fix_auto_apply(): Bugfix: Don't
call check_trigger() for objects of type TRIGGER. For other trigger types,
call check_trigger() only if there is an object above the trigger.
This can be used to implement doors that are only open shortly after the map
has been loaded.
* common/button.c: check_trigger(): Many changes. The triggers should now
behave as described in crossfire.doc. -> This breaks maps that rely on old
buggy behaviour.
* server/monster.c: monster_apply_below(): will_apply & 1 now also applies
TRIGGER objects, not only HANDLE objects. Allows an interesting solution for
/asyvan/gate9 if there is no second player who can open the middle grate.
* common/button.c: check_trigger(TRIGGER_PEDESTAL) and update_button(PEDESTAL):
Bugfix: Handle objects with heads correctly.
* server/c_object.c: drop_object() and socket/item.c: look_at(): Bugfix: If a
player is moved on top with remove_ob()/insert_ob_in_map(), FLAG_NO_APPLY must
be set temporarily.
* common/object.c: remove_ob(): Bugfix: Don't call move_apply_func() if
FLAG_NO_APPLY is set.
* server/apply.c: manual_apply(): Don't call apply_special() for objects
that are not in the inventory. Return 2 in this case.
* server/apply.c: player_apply_below(): Skip objects for which manual_apply()
returned 2.
* server/apply.c: apply_spellbook(): Bugfix: Don't give experience for items
with FLAG_STARTEQUIP.
---------------------------------
--- END apply() cleanup patch --- Jan Echternach 26/5/2000
---------------------------------
server/input.c: modify examine_monster to use the maxhp field instead of
the arch hp field to determine healthiness of the monster. Also, give
this information for all creatures, not just monsters or players.
MSW 5/23/200
socket/item.c: Add MAXITEMLEN define at top of file and use that to determine
at what point item commands should be broken up. Prior hard coded value
was not always large enough. MSW 5/23/2000
include/define.h: add safe_strcat inline/static function. Add
DESCRIBE_ABILITY_SAFE and DESCRIBE_PATH_SAFE which use the safe_strcat
to prevent buffer overuns.
common/item.c: Have query_name use HUGE_BUF for its buffer - query_short_name
uses that buffer size, and we call the same thing. have quer_name and
query_short_name use the safe_strcat function. Increase buffer size
in ring_desc to be a VERY_BIG_BUF and also use safe_strcat along with the
DESCRIBE_*_SAFE macros.
server/input.c: Modify examine.c to not get buffer overruns for very long/
complicated items. Modify long_desc to also handle long names/descriptions
without buffer overruns.
socket/item.c: Modify the functions that prepend the length to the name
of the object to handle very long (>255) object names properly - now we
just truncate it and only send the first 255 bytes. add function
add_stringlen_to_sockbuf to make this task easier.
With the above changes, very long named items/items with very long
descriptions works properly in both the server (no crashes) and the
client (no crashes/protocol errors) MSW 5/22/2000
common/item.c: Modify query_short_name to avoid buffer overflow on long
ring descriptions. Also, increased size of buffer in this function so
that longer ring descriptions will not get truncated. MSW 5/22/2000
server/c_chat.c: Add standard banner to top of file. Fix say command so
that it does not crash the server if something beyond 256 characters is
spoken - extra data is just truncated. MSW 5/22/2000
common/object.c: Splitted set_owner() into set_owner_simple() and
set_owner(). copy_owner(): New function.
server/spell_util.c: explode_object(): Use copy_owner() instead of setting
skill and experience objects manually. Bugfix: Don't use op->owner
directly (fixed by using the caster in call to SP_level_dam_adjust(),
not the owner, which was wrong anyway).
server/spell_util.c: fire_arch_from_position(): Use copy_owner() instead
of set_owner() if 'op' isn't the real owner but only a spell object
owned by somebody else.
server/spell_util.c: move_swarm_spell(): Use the swarm spell object as
the owner in call to fire_arch_from_position(), which now handles this
case correctly.
server/spell_util.c: fire_swarm(): Call tailor_god_spell().
server/gods.c: determine_god(): op->type==SWARM_SPELL is a spell.
server/gods.c: tailor_god_spell(): op->type==SWARM_SPELL is a spell.
Always abort function if we couldn't find a god. Always add god's
attacktype if the spellop's attacktype has AT_GODPOWER.
- Jan Echternach 22/5/2000
common/init.c, common/loger.c, include/logger.h, server/init.c: New
log level llevInfo which is the new default log level.
Many other files: Use llevInfo instead of llevError where appropriate.
Use 'settings.debug >= llevDebug' instead of 'settings.debug'.
- Jan Echternach 21/5/2000
server/main.c: Use a marker object to track current position in the list
of active objects. Using a pointer didn't work because all objects on
that list can be removed from it by process_object(). One of the things
this fixes is bogus "Free object on list" errors.
- Jan Echternach 21/5/2000
crossedite/Makefile.in: Modify to use $(MAKE) instead of make when
descending into subdirectories - fixes compilation on FreeBSD - MSW 5/17/2000
socket/init.c: Fix incorrect check on return value from fread when
loading xpm images. MSW 5/17/2000
Fix server/spell_effect.c - was assigning altar->other_arch to an object
and not archetype MSW 5/16/2000
server/spell_effect.c: magic_wall(): Duration of darkness spell now
implemented with op->stats.food. This avoids problems with very low
speed values that were interpreted as infinite duration.
lib/spell_params: Changed duration parameters of darkness spell to
give a reasonable duration with the new formula.
- Jan Echternach 16/5/2000
common/living.c: drain_stat(): There are 7 stats now, not 6.
- Jan Echternach 15/5/2000
server/rune.c: rune_attack(): Check that victim still exists after
hit_player() was missing. This fixes server crashes if monster applied
a chest, found a diseased needle and was killed by it.
- Jan Echternach 15/5/2000
server/spell_effect.c: cast_charm(): out_of_map() check was missing.
This fixes server crashes when a player casted this spell near the
edge of a map. - Jan Echternach 15/5/2000
Make image files and code more generic. This was largely done to make
adding support for png files easier, but in reality, it means adding support
for any new file format is now trivially easy. Format of the image
file is:
IMAGE <image num> <datalen> <image name>\n
followed by the image data.
This allows support for binary image formats (png), but also means that
the server doesn't need to know anything about the image format - rather
it is all just data as far as the server is concerned. I think this
actuallyy loads the xpm data a little faster - it would make sense that
it should, since it just reads all the data in with one fread instead
of parsing it line by line waiting for the end image delimeter.
Note: While png images are loaded, they are currently not supported
in the client nor will the server send them - that is the next step
in the work, but that will require just a few minor changes to the
server - most of those change will be in the client.
crossedit/xutil.c: Merge bitmap & pixmap load routine into one called
ReadImages, function modified to use above format.
crossedit/App.c: Call ReadImages to load images.
include/newserver.h: Change FaceInfo structure to have arrays of data
and datalength instead of explicity entries for pixmap vs bitmap data.
lib/adm/make_xpm_file.pl, lib/crossfire.cfb, lib/xbmtobdf.c: Removed -
either note needed or replaced by new naming scheme.
lib/adm/collect_images.pl: Replacement/improvement of make_xpm_file.pl
above - this handles all image formats (xbm, xpm, png). This is
also more intelligent in that it will not try to rebuild the image files
if there is not a valid arch directory.
lib/crossfire.png, lib/crossfire.xbm (new files): .png file is for png
images. xbm is to keep with the new standardized naming convention used
and is for the bitmaps.
lib/crossfire.xpm: New format used in file.
lib/Makefile.in: Modified to collect via new script as well as new
directives to collect (png files).
socket/init.c: Modified to load with the new format and data structures.
socket/request.c: Modified to send data with the new data structures
provided.
End of image changes, MSW 5/13/2000
configure.in, configure: Add check for perl so that we can call scripts
properly - MSW 5/13/2000
common/re-cmp.c: Add some tolower calls in the comparisons so most
regular expressions should not be case insenstive (makes matches & says
work better). Note that I did not change the behaviour on range matches
(Z-f for example), as I thought there may be side effects in that case.
MSW 5/8/2000
socket/request.c: Add length checking to NewPlayerCmd so that if the client
sends us a really long command, we just truncate the end of it and not
overwrite our internal buffers causing crashes. MSW 5/8/2000
server/player.c: add out_of_map check to stand_near_hostile function. This
fixes a server crash if the player uses a hiding skill near the edge of a map.
MSW 5/8/2000
common/arch.c, common/loader.l (loader.c): Modify the load routines
to strip off trailing whitespace in object names and other_arch fields -
I believe this is why altars to Sorig did not generally work, and while
generally that white space should not exist, doing a little extra checking
for it is not a bad idea - MSW 4/26/2000
Add HOLY_ALTAR type, and use that for praying over for gods and the
like.
doc/crossfire.doc: Add description of HOLY_ALTAR type and meaning
of fields.
common/map.c: Disable consecration code for altars.
include/define.h: Add type for HOLY_ALTAR
include/sproto.h: Update for change of some functions below.
server/c_wiz.c: Modify setgod command to call become_follower with
proper second arg.
server/gods.c: Change become_follower to take object pointer to god instead
of name, since the holy_altar has the pointer in its other_arch.
Modify pray_at_altar to use the new fields, as well as fixed
what seemed to be numerous bugs in that function.
sever/skills.c: Change check from ALTAR to HOLY_ALTAR, also change
check to see if HOLY_ALTAR is consecrated by looking at the
other_arch field.
server/spell_effect.c: Update consecrate so that caster must be
higher effective level than the altar, also update for
differing fields.
maps/thomas/sisters/shrine0, map/thomas/sisters/tower0: Remove
title from altars on these maps - these were the only two maps
using old style altars consecrated to a god. Since it appears the
real purpose of the altars on these maps was to trigger something
else, they were kept as old style altars.
arch/gods/altars (relocated from arch/indoors, as I think the new
location makes more logical sense): Update for new fields/format.
This also affects lib/archetypes, lib/bmaps.paths, lib/crossfire.xpm,
lib/crossfire.cfb
lib/adm/archsearch.pl: Modified to hunt out old archetypes - some of the
changes could be useful in general cases.
MSW 4/26/2000
server/spell_util.c: Fix move_golem so that multi square avatars (golems)
don't hit themselves. Remove will_hit_self function (only used in
move_golem), since it did not work. Change structure & indenting of
move_golem function so it isn't quite so nested - functionality
remains the same. When we do find something to kill in move_golem,
call attack_ob against it instead of hit_map - hit_map is not save
for multi object hitters. MSW 4/24/2000
Key usage change: Add new command 'usekeys' that specify how keys
are searched for. The three options are inventory, keyrings, and containers.
These options apply to both standard keys and special keys. If the player
has a key for the door but it is in a container that will not be used,
print a friendly message of the key name and container name. Files
affected:
help/usekeys: Added describing options
lib/Makefile.in: Addition of help/usekeys above.
include/player.h: Add new enumeration and entry into player structure
include/sproto.h: New function prototype
server/apply.c: change of Find_Key to new function with slightly
different options
server/c_misc.c: add function to support 'usekeys command.
server/commands.c: addition of usekeys command
server/player.c: rewrite & rename of find_key command, as well as changes
to move_player_attack
Mark Wedel 4/21/2000
server/spell_effect.c: create_bomb(): New spell_type parameter, merely
for consistency with itself and with other spell casting functions.
- Jan Echternach 4/19/2000
server/spell_effect.c: create_bomb(): Set level of created bomb.
Fixes the problem that the splints were casted without a level.
- Jan Echternach 4/19/2000
lib/checkarch.pl: New perl script to check the archetypes file for
obvious bugs (like object that is alive but doesn't have a level).
- Jan Echternach 4/17/2000
include/spellist.h: "meteor swarm" is now a missile spell (PATH_MISSILE)
just like "comet". - Jan Echternach 4/17/2000
server/spell_util.c: path_level_mod(): Rewrote to fix countless bugs.
New interface with explicit base level parameter.
server/spell_effect.c: finger_of_death(): Call path_level_mod() with
correct base level.
server/spell_util.c: casting_level(): New function that combines
SK_level() with path_level_mod().
- Jan Echternach 4/17/2000
server/spell_util.c: Several cosmetic changes (spell type parameter name
is spell_type, arch_to_object(get_archtetype(...)) is equivalent to
get_archetype(...), use casting_level() if applicable).
- Jan Echternach 4/17/2000
server/spell_util.c: fire_swarm(): New 'caster' parameter because
owner and caster can be different. Level of the swarm object is casting
level of the caster, not overall level of the owner.
server/spell_util.c: fire_arch_from_position(): Set level of fired
arch to casting level of caster.
server/spell_util.c: cast_cone(), cast_smite_spell(): Set level of spell
object to casting_level() and not SK_level() to honour path_attuned and
path_repelled of the caster.
server/spell_util.c: move_cone(): Just copy the level for new cone
objects.
Missing level meant AT_DEATH didn't work, missing call to
path_level_mod()/casting_level() meant path_attuned/path_repelled was
ignored. - Jan Echternach 4/17/2000
server/player.c: fire_bow(): Set level of fired arrow. Arrows with
AT_DEATH are now working. - Jan Echternach 4/17/2000
server/player.c: fire(): Call check_skill_to_fire() even for wizards
because this function has the important side effect of setting the current
skill and experience objects. - Jan Echternach 4/17/2000
server/skills.c: do_throw(), server/time.c: stop_arrow(), server/player.c:
fire_bow(): Flying arrows and thrown objects have FLAG_NO_PICK set because
picking these objects is currently broken (and maybe it shouldn't be
possible anyway - picking up a _flying_ arrow?). - Jan Echternach 4/17/2000
server/c_wiz.c: set_god(): Didn't work at all because it was trying to
set the current player as his own god. - Jan Echternach 4/17/2000
server/map.c: check_path(): Return value was wrong if the name did not
refer to a regular file. A symptom of this bug was that the server crashed
if a wizard tried to enter a directory with the 'goto' command.
- Jan Echternach 4/17/2000
server/map.c: open_and_uncompress(): Check that the file we have opened
is (still) a regular file, fail if it's not. This is the right place
for such checks if we want to avoid race conditions (e.g. file replaced by
directory while trying to open it). - Jan Echternach 4/17/2000
c_party.c commands.c daemon.c disease.c gods.c spell_effect.c spell_util.c:
Cosmetic fixes - updates to rcsid string to include right file name as well as
updates to mail address and/or additions to top banner. Mark Wedel 4/13/2000
Various files: Updated my mailing address to be accurate - Mark Wedel
4/13/2000
doc/playbook/handbook.idx: Automatically generated file removed. This
is not something normally included in packed up distributions, so no reason
to have it in CVS - Mark Wedel 4/13/2000
doc/include_html.pl, doc/playbook/make_index.pl, doc/spoiler-html/makeps.pl,
lib/adm/make_xpm_file.pl:
Change to use /usr/bin/perl instead of /usr/local/bin/perl - real change is to
find perl in configure.in and call the scripts with that. Mark Wedel
4/13/2000
server/input.c: Don't try to calculate spellpoint costs for denied spells,
because these are undefined and are now causing lots of BUG messages. Also
improved formatting: spellpoint costs can be > 99, and don't fill everything
with zeros, use spaces instead. Patch by Jan Echternach, applied & checked in
by Mark Wedel, 4/12/2000
server/skill_util.c: Fixed some log messages that were lacking a newline at
the end. SK_level(): Rewrite of this function to simplify its structure.
Print error message if we find an invalid level. Add top copyright/contact
banner (msw) Patch by Jan Echternach, applied & checked in by Mark Wedel,
4/12/2000
server/apply.c, server/monster.c: Fix in apply.c for encounter maps
so that proper message is generated, and differentiate behaviour if it
is a floor vs not a floor. Also, change to both files in that apply_below
stops at the floor object. Patch by Jan Echternach, applied & checked in by
Mark Wedel, 4/12/2000
server/apply.c, doc/crossfire.doc: Fix to prevent server crashes when monster
applies poison object. doc file is updated to include accurate information on
values in poison object. Patch by Jan Echternach, applied & checked in by
Mark Wedel, 4/11/2000
CREDITS, server/main.c: Add Peter Gardner to list of credits.
Mark Wedel 4/4/2000
server/apply.c, improve_armour():
Maximum armour value reduced to 90. Items can now always be improved up
to this value. For armour x you need level x, not level x + 1 as before.
esrv_send_item() and fix_player() also called if only magic value was
improved. Patch by Jan Echternach, applied & checked in by Mark Wedel,
4/4/2000
server/attack.c, attack_message():
More messages. "grind to dust" is more damage than "shred to pieces".
Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
server/spell_effect.c, magic_wall():
Fix calculation of duration of darkness spell. Before, you could get
huge negative speed values with high experience levels, which meant very
short duration.
Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
server/spell_util.c:
1) New argument of fire_swarm() to specify whether it's a magic attack.
All swarm spells except meteor swarm are now magic (just as the
underlying basic spell).
2) New function fire_arch_from_position() which doesn't use the owner's
position as the starting position of the fired arch.
3) move_swarm_spell(): Correctly set owner and magic in call to
fire_arch_from_position().
4) Above changes fixes "cause many wounds" spell
Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
common/map.c: Change calls in file to use insert_ob_in_map simple.
This fixes bugs with buttons not being applied correctly when the map
is loaded - the cause is that push_button is getting called for the
button before all the objects the button is linked to have been loaded.
Then when the map finishes loading, the call to update_button is called
and they are not in sync. This change should make loading slightly faster,
mostly because it does not call check_walk_on during the loading, so that
buttons don't get pushed/changed around. Mark Wedel 3/28/2000
server/player.c: If player is using pickup mode 6, only have them pick up
the item if they know it is magical. Prior to change, items would be
picked up if they are magical, but not if the player knew that, so the code
was giving extra knowledge to players. Bug reported by Kurt Fitzner,
checked in by Mark Wedel, 3/26/2000
common/map.c: Code fix by Kurt Fitzner so that unique maps will get
compressed if so needed. Fixes problem of unique maps not being
able to get reloaded as they are saved with the compress suffix but
not in compressed form. Code checked in by Mark Wedel, 3/26/2000
server/skills.c, server/spell_effect.c: Improve behaviour when identifying
items - the identify routine already updates the client if it is
in the players inventory, so only send update to client if the item is
on the map. Also, do full item update, as many fields may change, and
that is what the identify function does. Standard top of
file banner also added to skills.c file. Fixes problem of
objects in inventory being displayed with two numbers in from
(ie, two two bows +1).
Bug and initial fix of item updates by Kurt Fitzner,
implemented in a bit different way by Mark Wedel. 3/26/2000
Makefile.in, doc/Makefile.in: Modified so that making the docarchive
now works. The make must be done from the top level for it to work, since
some values are passed, but the doc/Makefile.in was missing some declarations
and had some other fixes that needed to be done. msw 3/22/2000
------------------------------------------------------------------------------
Changes for 0.95.5:
Makefile.in: comment out the EXTRA_FLAGS (which contains the -Wall
entry) - the presumption that everyone is going to use gcc to compile
crossfire is a poor one, and -Wall is only supported on gcc. I would
rather have it compile on the maximum number of systems without it
needing changes than to require the end user to make the customizations.
A better long term solution is to have configure.in check for gcc or
if -Wall is supported it and have it add it in. msw 3/21/2000
server/c_object.c: Fix pick_up_object function to deal with non players
picking up objects - prior to fix, program would crash when monsters
pick up objects. Also, add standard banner at top of file about
copyright, contact, version information. msw 3/21/2000
CREDITS, README: Updated to contain my new mailing address. In reality,
almost all the files have an out of date address for me, but these
are probably the ones people will look at most. README also updated
with new ftp location. msw 3/20/2000
include/Makefile.in: Update files to include material.h - need when
packing up new releases - msw 3/20/2000
doc/hanbook.ps, doc/spoiler.ps, doc/spoiler-html/spoiler.html: Rebuilt with
latest version of crossfire - not sure if there are any content changes, as
the tools to build the file have been updated on my system, causing many
changes to the prologue and outputted data. - msw 3/20/2000
Change doc/spoiler-html/Makefile.in and doc/playbook-html/Makefile.in to use
$(datadir) instead of $(C_LIBDIR). Other add AWK and INCDIR lines so that it
properly builds with autoconf setup. msw 3/19/2000
Change spoiler.tex, handbook.tex to build properly with later versions
of tetex - added language specifier when using the babel package.
msw 3/19/2000
Add missing doc/playbook/fig directory to the CVS reposistory -
msw 3/18/2000
Change summon_cult_monster code so that it will no longer summon big monsters
on top of walls or the player. Also, if there is not space for a big
monster, try to find another pet monster that will fit in the space.
File affected: server/spell_effect.c - msw
Change gorokh.arc to use anim devil instead of anim Lucifer - fixes crash
when using avatars of gorokh - msw
Split off kill_player function from do some living, and check for player
death upon player login. This splits up an otherwise very large function,
but more importantly, the second point allows NOT_PERMADEATH to work as
expected when the player is dead when logged out. Previous, the if the
player was dead when they logged out, it would just kill off the character
permanently (without grave marker or anything), even in NOT_PERMADEATH
mode. Also, cleaned up player load code to remove code that supported
very old style save files.
Files changed: server/login.c server/player.c include/sproto.h - msw
Change NO_STAT define in living.h,skillist.h,skill_util.c to NO_STAT_VAL
to remove conflict on AIX systems. - msw
Fix error in configure.in - was referancing BZIP2, when it should have
used BZIP - msw 2/7/2000
server/skill_util.c: Fixed spelling of unwield
configure.in: Update -z checks to not use eval, double quote the variable.
This seems to be needed on solaris and probably other systems.
Both changes commited by Mark Wedel, 2/7/2000
---SMALL BUGFIX--- John Cater 5/11/1999
server/attack.c:
- changed the logic in hit_player to attack enemy races with holy word
playtested
---BEGIN BATCH UPDATE--- DAMN 9/17/1999
server/alchemy.c:
- minor cleanup
server/apply.c:
- split multiple lighters
server/attack.c:
- vulnerability gives -4 to saving throw against non-damage attack effects
- immunity to acid reduces the probability of corrosion
- immunity and protection and not vulnerability to acid prevents corrosion
- magic bonus improves item's saving throw against acid
- vulnerability to drain doubles rate of exp loss, protection halves rate
- holy word slaying is checked in hit_player, no need to double-check
in hit_player_attacktype
- prot:magic and vuln:magic affect all magical damage, not just raw magic
- Holy Word and Turn Undead affect undead at half strength if they're not
listed as an enemy race
- Holy Word and Turn Undead have no effect on undead if they're listed as
a friendly race
- minor bugfix/cleanup
server/gods.c:
- minor bugfix/cleanup
- luck slightly improves chance of divine intervention
server/input.c:
- fixed typo
server/main.c:
- trivial bulletproofing, probably no effect
server/player.c:
- sp regen penalty from armour calculated in fix_player instead of being
recalculated for each spell point gained.
server/shop.c:
- payment will come from open pouches if you don't have enough in your
top-level inventory
- money for sold items will go into open pouches until they're full,
then overflow into top-level inventory
server/skills.c:
- minor bugfix in throwing
- writing in one of a stack of books seperates one book out first
server/spell_effect.c:
- generalized staff_to_snake to animate_weapon
server/spell_util.c:
- Staff to Snake, Dancing Sword, and Animate Weapon spells now all use
animate_weapon function
- holy golems avoid damaging their owners
- raw mana spells
common/living.c:
- minor bugfix
- fix_player now calculates sp regen penalty from armour
common/readable.c:
- spelling fix: grimore -> grimoire
doc/crossfire.doc:
- minor edits
include/defines.h:
- moved object type numbers to object.h
- moved flag numbers to object.h
- moved NROFREALSPELLS to spells.h
- moved path numbers to spells.h
- moved DESCRIBE_PATH macro to spells.h
- moved ARMOUR_ and WEAPON_ macros to player.h
- moved player state numbers to player.h
- moved monster movement numbers to living.h
- moved NROFSKILLS to skills.h
include/global.h:
- #defines from spells.h and material.h loaded early
include/object.h:
- now has the #defines for object type numbers
include/skills.h:
- moved NROFSKILLS here
include/player.h:
- added gen_sp_armour variable
include/spellist.h:
- added mana spells, Dancing Sword, and Animate Weapon
include/spells.h:
- moved NROFREALSPELLS here and updated it
- now has the #defines for spell path nummbers
- added mana spells, Dancing Sword, and Animate Weapon
include/sproto.h:
- added animate_weapon and pay_from_container prototypes
include/material.h:
- new
lib/spell_params:
- added entries for mana spells along with their fire equivalents
lib/formulae:
- minor spelling fixes to match minor spelling fixes in artifacts
lib/artifacts:
Weapons
- Sanwe -> Gnarg (any weapon)
chance 5, value x10, magic 0, dam 120%
- Lythander (any weapon)
chance 5, value x20, magic 0, luck +1, weight 90%
- Gwormi -> Gaea (wooden weapons only)
chance 20, value x50, magic 2, regen +1, dam 110%
- Slay Demon -> Valriel (any weapon)
chance 15, value x30, magic 2, weapon speed 120%, slaying demon
- (new) Gorokh (any weapon)
chance 15, value x30, magic 2, weapon speed 120%, slaying angel
- (new) the Devourers (any weapon)
chance 8, value x30, magic 1, attacktype: physical, cold, depletion
- (new) Mostrai (axes and hammers only)
chance 10, value x12, magic 1, dam 140%, weight 115%
- (new) Sorig (metal weapons only)
chance 5, value x15, magic 1, weight 95%, weapon speed 125%
attacktype physical, electricity
- (new) Ruggilli (metal weapons only)
chance 5, value 15, magic 1, weight 85%, weapon speed 110%
attacktype physical, fire
Helmets (moved to after weapons, with the rest of the armour)
- Lordliness -> Valriel (full helm only)
chance 20, value x50, magic 2, Wis +1, Cha +1
- Uriel -> Sorig
chance 10, value x20, magic 1, ac +1, armour 120%, prot electricity
Shields
- Theodin -> Mostrai
chance 8, value x24, magic 1, prot fire
- Gnarg
chance 8, value x12, magic 1, ac +1, armour 180%, Cha -1
Gauntlets
- (new) Sorig (gauntlets only)
chance 15, value x75, magic 2, armour 10, weight 125%, attack: electricity
- (new) Sorig (gloves only)
chance 10, value x10, magic 1, armour 5, weight 125%, prot: electricity
Armour
- (new) Valriel (plate and scale only)
chance 6, value x20, magic 1, armour 120%, weight 110%
- (new) Gorokh (plate and scale only)
chance 6, value x15, magic 1, ac +2, armour 110%, weight 105%
- (new) Ruggilli (plate, scale, or dragon armour)
chance 10, value x55, magic 3, ac +1, armour 120%, weight 90%, prot: fire
- (new) Gaea
chance 10, value x25, magic 2, ac +1, armour 120%
Cloaks
- (lesser version of cloak of the Underworld) the Devourers
chance 3, difficulty 3, value x50, magic 3, weight 50%, material 0, Cha -2,
prot: acid, drain, ghosthit, depletion
Bows
- (new) Valriel
chance 10, value x15, magic 1, weight 110%, damage 200%
- (new) Gorokh
chance 15, value x15, magic 2, damage 160%, attacktype: physical, acid
- (new) Lythander (not crossbow)
chance 10, value x22, magic 1, weight 75%, wc +1, speed 150%
- (new) Ruggilli (crossbow only)
chance 10, value x18, magic 2, weight 85%, wc +1, speed 110%,
attacktype: fire
- (new) Sorig
chance 12, value x20, magic 2, weight 95%, wc +1, speed 125%,
attacktype: electricity
- (new) Mostrai (crossbow only)
chance 5, value x50, magic 3, damage 140%, speed 75%,
attacktype: weaponmagic
- (new) Thunder
chance 10, dificulty 5, value x10, magic 2, weight 90%, damage 150%, wc +2
attacktype: physical, slow, paralyze
...and a few minor spelling fixes
---END OF BATCH UPDATE--- DAMN 9/17/1999
Add crossfire.oc.humbug.org.au server information to README file - msw
Change compress method definitions from being determined by checks
on system type to having autoconf find the utilities for us. Also, add
bzip2 support. Files affected: Makefile.in configure.in common/map.c
server/init.c server/login.c include/config.h include/define.h
include/autoconf.h.in - msw
Fix in server/rune.c - if the victim of a trap/rune is not on a map
and the object has a disease, it would crash the server. Temporary
fix put in to make sure there is a map, and if not, use a predefined
difficult of 1. I think the real issue is how can an object not on a map
be setting a trap (in this particular bug, reported by Klaus Elsbernd,
the victim was a thrown object) - msw
Change by dragonm@absolut.tegris.org - improve crossedit so that if you
try to load a map you alreay have in memory, it will raise the window -
it will also give you the option to forget, save changes, or just raise
the window if the in memory version of that map has been modified. Checked
in by msw. (crossedit, App.c, Edit.c, Edit.h)
Bugfix in server/apply.c - apply_container()
When checking for keys to locked containers, only searched player's
inventory, not keyrings. Changed to use FindKey function in player.c,
which does search keyrings.
--DAMN
Bugfix in server/main.c - enter_exit()
Unique maps were using their actual location as a path for moving to
a new map. They need to use the location of the original map, not
the character's individual copy of it. This is re-constructed from
the individual map's filename, which is based on the original path.
--DAMN
Remove xbmtobdf man page - since it is run automatically and it is likely
that people will not run it manually (and it appears to be innacruate - or
at least imcomplete), may as well remove it. - msw
Change install location of man pages to section 6 instead of section 1 - msw
New man page submitted by Egbert Hinzen that is actually correct and
accurate as the options now relate to crossfire. - msw
This one is a suggested fix for the alchemy bug that grants obscene
amounts of experience for certain formulas. Those formulas are the ones
that create items with a high fixed level, because those items are
pretty worthless otherwise. Dust of Repelling Undead, for example, is
level 30.
The fix I implemented here is to base the chance of success largely
on the level of the product, so it's very difficult to produce
something like Dust of Repelling Undead, and therefore worth the
extra experience. The chance of success is now based on the
following factors:
1) level of product
2) number of ingredients in formula
3) rarity of formula as listed in "formulae" data file
4) number of batches being made
5) Alchemy skill (if present)
6) enchantment of cauldron
7) luck
patch from DAMN
This one makes a couple things level dependent that used to be fixed:
1) time it takes Word of Recall to take effect
2) amount of energy transferred by Transferrence spell
3) percentage of energy drained by Magic Drain spell
Also, the following effects have been modified:
1) Followers of a cult that considers undead enemies have a penalty to
Command Undead.
2) Magic Drain gives back to the caster a small portion of the energy
drained from the victim.
And a bug was fixed:
1) SP_level_dam_adjust used and SP_level_strength_adjust used the
player's level, where they should have used the caster's level.
--Patches from DAMN, applied by PeterM
Marker object added, alchemy modified so that recipes
can require keycodes and MARKS to execute, detectors modified
to be able to detect MARKS, and all of this documented in
crossfire.doc --PeterM
server/gods.c -- changing gods now costs players their special
prayers. --PeterM
server/alchemy.c -- levels less than ten no longer produce
cursed items, but only slag or nothing. --PeterM
server/shop.c -- unidentified stuff is worth at most 60gp or so.
---PeterM
random_maps/style.c - fix type in the scandir function which cause
compilation problems for those systems that actually need it. - msw
Change command_cast_spell so that it preserves a return value from
find_spell. This re-enables partial spell matching (ie, cast prot
will show all spells that start with that.) - msw
------------------------------------------------------------------------------
Change for 0.95.4:
Add better comment in config.h about the DM_MAIL option - msw.
Fixed and doc/playbook/Makefile.in doc/spoiler/Makefile.in so it works with
autoconf setup.
Updated to properly generated handbook.ps when needed - msw
doc/crossfire.doc: Updated with disease code notes, detector notes.
crossedit: Fix in edit.c to ensure map objects (mainly is_floor objects)
are actually removed visually as well as from a pure object standpoint.
Change to save_throw_object: If object is in players inventory and
is destroyed, send update to client. This can happen when trying to
ignite something in the inventory with flint and steel - msw.
In apply_lighter, do more accurate check when seeing if the attempted
object was actually destroyed. Also, cache the item name so that if
it is destroyed, we have a proper name to print out. - msw
fireborns changed to have Pow stat bonus instead of Wis
stat bonus. --PeterM
Some problems in the random map code fixed: specificially,
1) fountains no longer attempted placement outside map
2) Ignore files/dirs named CVS when looking for styles.
I changed a few of the maps to have exits to random maps.
I made one random house in Scorn, one random exit in the Hall of Bones
to an undead maze, another exit to a random map in the hole SE of
Scorn, and one in the bottom of the Tower of the Stars. --PeterM
Update lib/Makefile.in to create empty bookarch and temp.maps files as
part of install process. - msw
Change configure.in script so that by default, files will be put in
installdir/var/crossfire and installdir/share/crossfire instead of
just installdir/var and installdir/share. This allows crossfire to be
installed more cleaning without it having its own top level directory.
Old installation behaviour can be gained by using --enable-old-layout when
running the configure script. - msw
Patch by Carsten Pluntke that fixes a problem with unique maps not being
properly reloaded after being swapped out (main.c) - msw
Fix so that when picking up objects from a container, the client gets
an update to remove the object display from the container (ie, if
you pick up all the gold coins from a container, the total in the players
inventory always got corrected, but the client still displayed some in the
container even if there should not be.) The change is in c_object.c - msw
Check that hitter has a valid name before it attacks - fixes some
crashes (attack.c) - msw
Enhance lib/collect.pl to ignore CVS directories - msw.
Improve auto_apply functions so that it will create treasures (random_*
items) inside other objects. There is still a limit in that it will only
look for these objects inside other top level objects - a random potion
inside a chest inside a monster will not be processed. But that
should be a rare case, and nesting containers very deep has never been
well supported in the code. The code affects is in the apply.c file. -msw
Add Xaw to start of libraries when linking crossedit - fixes focus problem.
File affected configure.in - msw
Fixed a bug in the "depletion on death" code. The depletion
never had any stat removal specified. --PeterM
Remove berzerk code/variable from player structure. The code had
no effect - whatever functionality it once had has been removed in the
past. - msw
Add flag save information for FLAG_CLIENT_SENT that was otherwise
missing (loader.l). This fixes the disappearing archetype bug - msw
Fixed buffering bug in lowlevel.c
--David
------------------------------------------------------------------------------
Changes from Crossfire 0.95.2 to 0.95.3:
Fixed missing god animations in the archetypes.
SIMPLE_EXP option added. From config.h:
* Define this if you want to use the new (0.95.3) experience system.
* The system has the following changes:
*
* 1) 2000 exp need for second level. All additional levels are shifted
* accordingly.
* 2) Your stats in your skill categories don't affect the amount of
* exp you get.
* 3) Your level difference doesn't affect the exp you get for killing
* monsters.
*
* If this commented out, you get the old system.
*
* This can also be set by using -simple-exp/+simple-exp as a run
* time option.
Change treasure lists so that stat improving potions won't show up in
shop. They should still show up on the ramdom_potion spaces on the
maps (may in fact be slightly more common there than before)
Move socket related code out of server directory and into socket directory
and re-arrange cod so that what is in what file makes more sense.
Code from Peter Mardahl to have death result in stat depletion and
not actual stat loss. Setable by via STAT_LOSS_ON_DEATH option in config.h
or -stat_loss_on_death/+stat_loss_on_death command line
options.
Patch by Peter Mardahl to change immunity spells from PATH_PROT to PATH_NULL
- this will stop gods from giving out these spells.
Patch by Peter Mardahl so that players will never fumble the reading
of scrolls. You only get half as much exp for reading the scrolls now
however.
Update the README file - the list of public servers was grossly out of date
and mostly removed. The instructions for running/playing were out of date,
containing information for servers with the old X11 code.
Change CAN_MERGE so that identified items with different been_applied
will merge (this is currently done by just setting the been_applied flags
for the object in CAN_MERGE if they have been identified)
Temporary fix for disease code - I was seeing endless loops in weight
contributions because an disease object op->env points back at itself.
In do_symptoms, we check to see if the victim matches the disease we
are about to infect them with, and if so, don't proceed further. The
cause of this pointer recursion needs to be found instead of
this current fix.
Change daemon.c so that hpux systems can also use ioctl (.., TIOCTTY, ..)
call in addition to SYSV systems.
players and logs command added. players show all current player names
currently in use, logs show sockets that are currently listening for
kill log information. Add limited support for some commands from
the socket (hiscore, logs, maps, motd, players, version, who).
After socket has been authenticated to have valid server, shout and tell
also available. To switch socket into old style mode, first command
entered should be 'oldsocketmode'. Server code then knows not to
prepend packet length information, so most functions work on this new
socket without any changes.
Add verify_player function to login.c (takes name and password and verifies
they are ok - used for old socket emulation). Also notify all
players when a player joins the game (this must have gotten removed
at some point).
change prototype for cs_write_string to take a constant string. In
readpacket, have it read in 100 bytes even if length information looks
incorrect (allows easier initial switching to oldsocketmode). If
the length of the input buffer is for some reason negative, call abort.
Clean up nconns in socket.c - it was being increased 2 times when
a socket was added, and decreased by 2 when a socket was removed.
Add newline to initial version command so people telneting in for
old socket compatibilty get something a little more presentable.
command char pointer added to newsocket structure - used for player
name or listener html address. Fix in memory overrun/corruption when
freeing the last allocated socket - it would write data beyond the allocated
data.
if new_draw_info is called to notify everyone, also notify sockets
running in old mode if it isn't a kill log listener.
Update commands.h file so that it won't declare various values if included
multiple times - only the first time it is included will it declare the
values.
Add extern declaration for init_sockets to global.h since other functions
now need to access them.
Who command extended to also show active socket connections without a player
attached.
Kill log (watchable from socket) added.
Add support to use old socket commands on the new port.
Fix by Seikoh Nishita for weapons that slay multiple creatures - before
fix, they would not slay anything (args to strstr were reversed)
Don't give out exp for orating to monsters owned by another player - fixes
abuse since 2 players could quickly orate back and forth and gets lots of
exp. The orate function was also cleaned up a bit to be more efficient
(presumption is made that there is only 1 monster on any one space, so once
we find one, there is no need to do further processing)
If door is passable, print a message to the player if he tries to
pick the lock and don't let them pick it (examples here are the
doors which you can walk through)
Fix by Seikoh Nishita that should prevent some crashes when exiting
shops - appears that there could be circumstances when i was trying
to referance a null pointer in an error message.
Add popen_local for sgi systems - without this, sgi can only open one
compressed map before it fails to open further compressed maps.
Fix by Timo Kokkonen so that resurrection works with the new player
save method. This should also fix the problem that dead players when
using PERMADEATH being able to log in after dying.
Allow FORCE objects to increase digestion/hp/sp/grace regeneration.
Remove style.h file, since we now have an automatically generated proto file
from random directory source. Also fix in makefine to use proper ar
when creating the archive.
Add 'race *' to maps/styles/misc/fountains - this fixes a crash when
entering random maps.
If use presses an incorrect key at the play again prompt, reprint the
play again question.
Change find_free_spot to return -1 if no spot available, update calls so
check for this return value instead of 0 (value = means current spot
available)
Change pet movement so that pets should no longer jump walls.
Update configure, makefiles, and code to use proper locations of installed
files (no longer $prefix/lib, instead $prefix/share for read only,
and $prefix/var for read/write.
When using a special key to open the door, print a message informing the
player what key was used to open the door.
Minor map cleanups/changes. Some improper exits changed to point the
right place, extraneous style maps removed due to new gods, other maps
updated to replace now missing altars with their replacements.
Change gate code logic so instead of using speed to determine if the object
can move itself, we instead check the ALIVE flag (this fixes problems for
animated objects, and is a more accurate method in any case.)
Fix by S.Nishita so that containers on the ground get properly unapplied
when player moves off them.
Fix by S.Yoshioka's so that damage for cone spells is calculated properly
as they propogate.
Remove server side referances to INFOLINES and INFOCHARS, since that is now
controlled by the client.
Code cleanup to random map generator to prevent compiler warnings.
Also, change comparision of val == 0x1 to val-1 = null, since the
later is more portable.
added some missing newlines to log messages in the newsocket.c file.
fix pickup modes some - mode 4 appeared to work ok (pickup all), but mode
5 wasn't working right (pickup all and stop). I have tested the modes
with the X11 client, and they all appear to work properly.
House of Healing map (with link from starting city) added by Peter Mardahl.
Change player move code so you will no longer swap spaces with a pet
monster/other friendly object is you are braced.
Fix off by one error in the buffering socket buffering code - this would
cause buffer overflows if the data being added equaled exactly the buffer
size+1. Similar fix when reading in packets
Increase NROFATTACKS to 24 in define.h so the AT_INTERNAL attacktype
work properly.
Patch by S.Yoshioka so that godpower/holyword spells are not magical.
Fix in attack.c by S.Yoshioka to call free_object instead of free for
splitting monsters.
Fix by S.Yoshioka so that magic bullet or other pure magic spells do
damage to other parts of multisquare monsters.
Fix by S.Yoshioka so that you can not get exp in other skills with cone
spells.
Fix by Seikoh Nishita so that magic walsl can not be placed on top of
other walls/monsters.
Fix by Seikoh Nishita so that we don't clear the NO_STEAL flag on
insert_ob_in_map - this makes singing/stealting from the same monster
multiple times impossible.
Patch by Seikoh Nishita so that boulders will roll off gates.
Have server send updated weight of container when dropping all items from
a container.
New random map decore styles for new religions added.
Patches from James Cameron to fix compile errors/warnings.
Fix missing animations for some of the gods.
Remove *.orig files from maps/picks directory.
Maps updated wtih dtabb 2.60, navar_city 2.40 maps from John Cater.
------------------------------------------------------------------------------
Changes from Crossfire 0.95.1 to 0.95.2:
speed_left values should not be changed when loading/saving maps with the
editor.
Map updates from Anthony Tyson and others (990128 version)
Note: I was unable to reproduce the staff to snake killing the client bug.
If still in this client/server release, please let me know.
Set player->count in esrv_move_item when picking up objects. This fixes
a bug introduced in 0.95.1 for the improved pickup code which only allowed
picking up of all the objects on the ground.
lifesaving items should now disappear from client inventory after they
are used.
Improve decrease_ob_nr so that items dropped on the ground will get removed
from the players inventory if they are used up (fixes bug where you drop
the last of some item on an altar but it would not disappear from your
inventory)
Add check to add_exp so that we don't add experience to non living creatures.
This should fix the thrown objects getting lots of speed bug.
Random map code by Peter Mardahl added. Various changes made so it will
compile on non gcc systems as well as non bsd systems.
Another fix for pits (holes) so objects should drop through. The fix
in the last release made fixed a possible infinite loop, but also made
it that once an object on the pit could not drop through, no other objects
on the pit would drop through. The change made will attempt to drop all
objects through the pit, but also not run into a problem with infinite loops.
Update pedestal and detector code to also match on the lockcode of the
special keys.
Change detector function to call push_button instead of update_button.
The later would only change the state of buttons, which doesn't do much
good when you want to open a gate. push_button will cause gates and
other connected objects to open.
Change move_gate so that it won't roll off things like grass or other
immovable objects.
Update configure script to check for scandir function (needed by disease
code) - if not found, then check in -lucb.
Disease code from Peter Mardahl added.
add break value in while loop in generate artifact message (readable.c) so
we eventually break out if no match is found.
reduce minimum supported map size in crossedit to 1x1
Don't let characters be easily saved on unholy ground. Player can't issue
'save' command when on unholy ground, and we don't autosave if on unholy
ground.
Improve pickup code mode 6 (pickup magic item) - call is_magical to
determine if an item is magical instead of relying on known_magical flag.
If the player has a marked item in need of identifying, identify that
specific item first when an apply altar is used. This allows a player
to selective choose what to identify.
Fix in apply code between server and client. Containers on the ground
now work properly. Server side simplified a bit, and updated to be a bit
more bandwidth efficient (use update item to open/close containers.) Client
updated to handle updating its container status via the update commands.
Fix in pay_for_item in that it will not mistake kobans or other coins for
gold coins when making change (or converting the older coins into new
coins with the same arch but with a different value)
Have player swap places with pet monster even if player no longer has peacful
set.
At confirmation when player quits, inform them that quitting will delete
the chararacter.
When a weapon is improved by the god, if it had no prior attactkype set,
give it physical attacktype in addition to what the god gives it.
By default, make new players peaceful.
Fix up the fire cancellation function - it seems some of the code wasn't
quite right (inserting in map vs setting the owner.) The fix should
prevent some core dumps this could have caused.
Fix for main loop in socket.c that should prevent infinite loops when
a socket dies in some improper way. It should now drop the connection
properly and continue with processing.
Autoconf fixes - check for canonical system, specail check for
alpha-dec-osf to add -std1 to cflags, add check for latex, add check
for BOURNE_SHELL (this is used in hte makefiles, as some os's will use
the users shell, but some constructs we use require bourne type shell),
add check for number of args gettimeofday uses, change order when
we create the makefiles to be proper.
Use autoconf check above to get correct number of args for gettimeofday.
Fix from Anthony Thyssen for the editor - should hopefully fix problem with
delete not deleting the correct object.
Remove font displaymode from editor - since we are not distributing any
fonts anymore, doesn't make a lot of sense to support it.
When connection is lost from player, save off the character - prevents
items being dropped on the floor or the players duplicating the items.
However, some additional logic will need to be added to prevent players
from saving their characters in treasure rooms.
Improvements in save_player which should better prevent saves from
happening at inopportune times (like after they have mostly exited).
Add stat_loss_on_death option (yes/no if stat is subtracted when you die.)
Default can be set in config.h, and can also be changed with run
time flags.
Add / behind -I@x_includes@ in crossedit/Makefile.in. This should prevent
the includes from being reset if there are no x_includes.
Extend draw_look to send multiple item commands - this should only happen
if there are a lot of items on one square. Fix should prevent crashes/memory
corruption in that case.
------------------------------------------------------------------------------
Changes from Crossfire 0.95.0 to 0.95.1:
Fix server crash if player ran into friendly object.
Strip extra spaces that may be between the command and option (ie,
"use_skill disarm" would result in " disarm" getting passed to the appropriate
command function. Some functions could deal with this, others did not,
and it makes sense to strip them out.
Send update to client to remove item from players inventory when it
disintegrates (demon ichors for example).
Change load code so that player handling on unique maps should work better
(I believe there were various strange cases if the player saved on a
per player unique map and that map was or was not in memory, it might not
load the per player unique map)
Removed player file lockin during login. Extra lock files get left
laying around in aborted login attempts. And in retrospect, I don't
think it is ever really needed.
Some excessive/annoying debugging messages removed.
Some general cleanup in some functions that were previous setting
automatic variables. If the variables are none changing, we now declare
them static, otherwise we don't set the value as the initialization
area - this prevents warnings with some compilers. Some casts added for
some functions to also prevent warning messages.
Remove HAVE_SAVE_UID in config.h - no longer any code using it.
In free_player, only call remove_ob on pl->ob if it is not already removed.
This fixes crashes when a player kills there login session before
it is completed.
Instead of calling draw_look (which causes all data on that space being
sent to the client) each time the space changes, instead mark that we
need to send that change, and have code higher up (top processing loop)
send the data each tick if it needs to be send. This should result in less
data being sent, and is easier to process.
Add flag_client_sent for debugging purposes - makes it much easier to
trace down cases where server was sending updates without actually having
sent the object yet. Most all of those cases are fixed with the new draw_look
logic mentioned above. Add dump_object_from_tag to figure help figure out
the objects generating messages. dumptag command is available from within
the game if compiled with DEBUG to use this fucntion.
Pup land maps updated to version 1.3.
Fixes in configure script to autodetect X11 libraries better. Fixes
also in Makefiles so all rules should work and all needed variables should
now be expanded. Add checks for a few more header files. Makefile fixes
also include changes so that archive is packed in proper order that it should
not try to rebuild pregenerated files. Master makefile now set to
make bzip2 archives in addition to gzip archives.
Added watchdog code from Christian Stieber - periodically sends out UDP
packets so other programs can watch for them and restart the server if it
doesn't see them (hung or down server).
Added ISQRT macro to spell_effect.c - seemed that the code was changed
a while back but that function wasn't added. It was only needed of
SPELL_FAILURE_EFFECTS is compiled in as an option.
Simplify checking of MAXNAMELEN in crossedite/include/Posix.h
Updated list of options you get when you do -help - removed old options that
are no longer around and added new ones.
Dropping an active container will now result in all the items in the
container being dropped, and not the container itself. It could be argued
this should be a client issue (client send a move for each item in the
container). However, dropping everything in the container should be faster
than individually dropping (ie, you turn the container upside down), and
client dropping them one by one would result in that many commands of the
player being used.
Change esrv_move_object to use the pick_up function instead of pick_up_object.
The difference here is that pick_up will look for matching containers, so
players manually picking stuff up in the client will have items go into
active containers as appropriate. However, this can also cause problems
with smarter clients that really want the object to go into the players
inventory and not a container (I don't think any will have that problem
currently)
Fix in apply for holes - return 0 if we can not move the monster through
the hole - this prevents an infinite loop in move_hole in time.c
Added internal buffering for sockets if the OS's buffers fills up. This
greatly improves reliability in the client. Size of buffering is
setable in config.h
Fixed makefile dependancies - make install should now depend on the
actual programs it plans to install.
Fix some bugs in the animation code - most notable is animations with
just 2 facings like the quetcoutal. Changes to archetypes is to
change the half orc to have 4 facings the quetzalcatl to have 2 facings.
Fixed animations to always use the direction value for determing object
animations.
Change examine code so that if the first thing in an object message field
is @match, don't display the message.
Fix map update code that wasn't calling update_los before sending the
map to the client.
Fix from Timo Kokkonen for socket code - check to see if we got an
interrupted system call (EINTR) on a read/write - if so, loop until it
clears or we get a real error. Apparantly greatly improved reliability
of the server.
------------------------------------------------------------------------------
Changes from Crossfire 0.94.3 to 0.95.0:
Added diagnostic message if you try to use a skill and it can't find a match
Fix in send item command to better handle objects with a huge number of
items in its inventory.
Shop listing code simplified - send all data to the client at once instead of
havign to store it and wait for the player to hit a keypress.
Fix bug in ghosthit which would cause server to crash (patch for 0.94.3
was released for this bug)
Some general code cleanup - fixing/removing unreachable statements, removing
unused variable.
Build/configuration now done by autoconf (run ./configure). This cleans up
a lot of special checks throughout the program, and hopefully should be
more portable.
Cleaned up/rearranaged the include/.h files. Prior, most all structures
where included in structs.h. Structures and support values now in unique
header files (ie, player structure and support enums and like in player.h,
object structure and support in object.h, etc.). This doesn't change the
working on the code, but is just easier to maintain. global.h takes care
of including these is the correct order.
Many options now removed from config.h file. Options removed either relate
to X11 code/old server support or machine specific details which we can
now pick up via autoconf.
Better speed checking in update_object_speed.
When improving a weapon, client should now get updated (code was updating
the incorrect object)
Improve apply below to be more bug free (that is to say, we preserve
the pointer to the next object - I think there were cases where the
last of an object was applied, and thus removed, but the apply function
did not return a code specifying something was applied, so the code would
then try to apply an object with an invalid pointer)
Fix for collect.pl script to fix problem traversing directories.
(note for 0.95.0, there were many large scale changes, so many of the
entries below are more of just an overview of what changed, and not a highly
detailed account of the changes.)
Fix/improvement in player movers so that players trying to run in the
direction they move don't move incredibly fast. They will still seem to
move faster (I am guessing roughly player speed + mover speed now). I am
not sure of the original bug, but my guess is that the mover moves the
player to the next mover (which has a low speed). But now the player still
has his own action left, and moves to the next mover which has high speed,
so wisks the player to the next mover, which has low speed, so he
effectively moves 3 spaces in one tick when he should just move one.
Changed save player method so that a directory is created for each
player.
Added per player unique maps (new apartments). Maps from Christian
Stieber, however the implementation is a bit different - if an exit is
marked as unique, it will lead to a unique maps. The unique maps are
stored in the new player save file directories as above.
Removed all X11 support from the server code. Change crossedit so that
it can read in the pixmaps as they are stored in for the client/server
support (so that only 1 copy needs to be kept). This method of reading them
in is slower than the montage method unfortunately.
Changed socket handling. Port 13326 has been removed from active service.
Socket information is now part of player structure, which cleans up a lot
of the old code which had to do with find the player that correlates to
a socket and vice versa.
Fix bug so that if invaliad variable is given to dm 'patch' command, program
no longer crashes.
Fix bug so that containers that have a huge number of items don't crash
the server (a container needed to have more than 250 items for this to
happen). The real problem is containers that allow an infinite amount of
junk to be stored in them (Lepreds bag, but this item/map isn't part of the
standard distribution). Even with the fix, there still becomes some point
where problems will occur (around 2000 items, the amount of data that
needs to be sent would exceed the size of the output buffer). In any
case, with that many items in place, the player will see a noticable
performance hit when such containers are opened.
Fix bug that caused the program to crash when attacking ghost or other
creatures with ONE_HIT flag set.
Print out message to player if they have old keybindings.
Some map fixes by Christian Stieber - eliminate ability to bypass
quest and typo fixed in other map.
Fix so that perceive spell (off of rods/staves/scrolls) properly finds
the god of the player.
------------------------------------------------------------------------------
Changes from Crossfire 0.94.2 to 0.94.3:
Fixes to some recipes - before some had non existant ingredients.
As part of this, a treasurelist for ogres added.
archsearch.pl function added to lib/adm. Useful little perl script that
can do object context searches (ie, immune to X and attacktype of Y)
Old loader code removed - only lex loader supported now (no bugs reported,
so it seems to be OK)
Debugging output improved in various areas to be easier to read/better
inform what is happening.
Hopeful fix in place to prevent player movers causing players to have
-infinite in speed_left. Fix right now is to just limit speed_left
to -50 - I believe the real problem is that some player moves have
speed=0.0, and it is diving by that value.
Fix so that if a player dimension doors onto a player mover, he no longer
gets stuck in an endless loop - he will now move along the movers as
expected.
When a player dies in NOT_PERMADEATH mode, clear the braced flag.
In the case of spell failure, don't cast mana storm in no magic areas
(instead, just kill the player)
Only write out an updated bookarchive if data has actually changed and needs
to be written out.
Don't print out new client server usage logging if nothing has changed.
Reduced power of 'loose mana' (it appears this only happens when a spell
is failed really badly). It seemed to me that the area of affect and
damage could be many times deadlier than anything else out there.
Hopeful bug fix for thrown objects getting very fast speed (I am unable
to reliably reproduce this, so am not sure.) Basically, I believe the
problem was that set_owner was only being set for the wrapper in the
thrown object, but it is the actual internal object that gets used at
some point in the attack sequence. As such, I believe that the knife,
spear, whatever was getting the exp for the kill (exp = speed in
weapons). To hopefully fix this, I have also added a set_owner call
on the real object so when it goes to grant exp, it should find a
valid place for it and credit the player and not the weapon.
Changed spell parsing so 'of' is not needed in some complex
spells (ie, create food or marking rune). From kfitzner@nexus.v-wave.com
Fixed bug in which you could kill multispace monsters with paralyze or
slow attacktypes.
Added ncom and comc commands to client and server. These commands allow
client command queing/dropping (note that server will only send a comc if it
gets a ncom first, so old clients should still work just fine). The
protocol numbers increased to 1021.
Added more objects to the show invisible list - hopefully the pupland
maps should now be fully playable.
RPLAY_SOUND definitions changed to RPLAY_SND - should make for cleaner
compilations for those using that.
Fixed #ifdef for NetBSD in common/time.c to use proper symbol.
Fix so that counterspell should no longer kill monsters with magic
attacktype (ie, jessys and probably others)
Added debugging in deathstrike code to hopefully be able to better track
down face of death problems. My guess is that it is a problem with level
comparisons.
Fixed/clarified many nexted if/else statements that were ambiguous. Now
braces are properly in place (From Klaus Elsbernd)
Hopeful bug for disappear objects when emptying bags. I believe the
problem was that invisible objects ended up showing up in the containers
somehow - this by itself is not a problem. However, the empty bag
function calls drop with the object to drop and keeps the next value -
however, drop would forward past the invisible object so the calling functions
next value is no longer accurate. Drop function now does not skip over
invisible objects in containers (will skip over them in player inventory) -
it instead removes the invisible object since I believe it is garbage
anyways. I am not sure if this will fix the problem, but there was
certainly some problem in the code here.
Fixed bug with multipart monsters & pits. Before, they got split into
a few parts like a magician trick. Now they stay in one piece. At
current time, the logic probably isn't great, as all that is currently checked
for is the head of monster being on a pit - in reality, probably all the
monster parts need to be on a pit.
-m9 and -mt options added (Code from Raphael Quinet). Formulas have
been fixed such that all are now creatable (none missing archetypes). However,
the output still shows some formulas out of balance in terms of costs.
Changed AT_GHOSTHIT meaning and added ONE_HIT flag. GHOSTHIT is now treated
like any other attacktype (monster will not be removed just for having
ghosthit). ONE_HIT flag now means the monster will disappear. This fixes
the acid sphere deadliness (before, they did have ghosthit as an
attacktype). All the objects with ghosthit have been updated. However,
there are probably some other undead which could now have ghosthit added
to their attacktypes since it won't cause them to disappear now.
Updated the programming_guide doc. Hopefully, it is a bit easier to read
and a little more accurate.
Improved polymorph. Invisible objects should no longer appear. Also improved
so that all objects of a type would be possible results (before, it would
be the first 80 weapons would be chosen from, or the first 80 monsters, etc.)
Now it is unlimited. Smarter initial selection should also result in
a few less meltdowns from it now being able to find an acceptable object.
Also, possible fix that could cause crashes on rare occasion (monster
polymorphed into something else, and when inserted into the map, something
on that space kills it) Also, we stop processing a space once we hit the
floor - I don't recall floor types ever changing anyways, but there could
be other problems processing subfloor items.
------------------------------------------------------------------------------
Changes from Crossfire 0.94.1 to 0.94.2:
Changed calls to send_query on server side to include the string on what
the query is for. This is to make clients be able to do smarter/nicer
things when it receives a query.
Bug fix in check_walk_on which would cause crashes when objects are put on
spaces with multiple destructive forces (ie, earthwall cast on top of
a double pool of chaos). Once check_walk_on finds that the item has
been freed, it stops doing any further processing on it.
Animation code cleaned up. Animations are now object properties, and not
archetype properties (and thus can be changed in maps). Also cleaned up so
that the is_turning flag is removed - more complex animations available via
the num_facings. Below is the section from the TODO file. Note that there
is still potential to improve animations (many 1 frame animations could take
advantage of the new code to have multi frame (ie, players can now have
images for all directions, and animations for each of those) New code is in
common/anim.c:
Clean up animation code and make it more general purpose (instead of
is_animated and is_turning flags, instead add a value that
states how many animations/direction there are. For example, right
now the big dragon has 8 animations and 2 facings (left & right), with
4 animations/facing. Something like num_facings could be added so we
know there is 2 facings. For arrows, num_facings would be 8, so we
know that it shouldn't be animated (since there are only 8 images in its
animation.) This would make the code a little cleaner, and allow better/
more complex animations (an object that faces 8 directions could have
animations for all directions, were as right now, that is not possible.)
collect.pl changed to handle generation of animation file.
Wipe below added to crossedit by Steven Unruh
removed non NEW_HIT_PLAYER in attack.c (ie, old attack code removed)
Added hitback code (looks like it was missing from the NEW_HIT_PLAYER
code)
dm commands will now be accepted from the new client (provided they
have dm priveledges of course)
Add AT_INTERNAL attacktype used only for internal calculations (ie,
does that amount of damage). Actual damage section of poison now
uses this.
Fix spoiler generation - don't convert monster archetype names to
lowercase - images generated properly for them now. Also, fixed problem
with some images (dragon) being rotated when they shouldn't.
Clear INV_LOCKED flag when stealing objects.
Fixed couple of bugs in throw code. First, players remaining speed
calculation seemed incorrect. Second, you can now specify an object
name to throw (ie, throw ring, throw chair). Third, the client now
gets properly updated with the new/changed item.
Make UNIQUE_ITEMS standard feature. Removed LOCK_ITEMS as a secondary
feature - running multiple servers against the same set of files is no
longer supported. Note for compatibility reasons of both methods, it will
look for unique files starting at v00 and will write new ones with the .v00
extensions. If you have .v01 files, these will be read in the first time
through (provided you also don't have a .v00), but all new files will be
written with the .v00 extension. Referances to ITEMS_DIR changed to
be UNIQUE_DIR - I think that is more descriptive. This includes
the environmental variable.
Change ok_to_put_more to do more complete checking and also not to stop
spells because of a monster with certain immunities being on a space.
If hit_player is called with the 'tail' of a monster, it would previously
just exit if the attacktype included slow or paralyze functions (must
hit the head with those.) Changed hit_player so we just remove
the slow and paralyze, and still hit with any remaining attacktypes.
change explode_object so it only hits the monster once with the bullet/
meteor. Previously, it called hit_map, which then hit the player, and
then called hit_player again. This effectively doubled the amount of damage
caused by the bullet - it now does the correct amount of damage. As
best as I can tell, meteor/meteor swarm does properly damage the monster
even if the tail was hit.
Bug fix in singing so exp should now be granted the first time singing
is used on a monster.
Changed so that server can be compiled with new client/server support but
without old (port 13326) support. Various sections of code updated to
work/compile in such a setting.
Fixed premature freeing of map->tmpanme. Now in delete_map instead.
Added checking in free_object to see if we are called on a non removed
object. IF many cores is defined, will dump core here. I believe there
is some section of code calling free_object on a monster without calling
remove_object, which is causing a lot of error/warning messages when it
happens (very infrequently.) With this test in, it should become quite easy
to track down when it happens.
Added free bsd & net bsd to those systems whose gettimeofday takes 2
arguments (common/time.c) -lcompat added to libraries needed for
FreeBsd. Include unistd.h on freebsd. Don't include malloc.h in
xbmtobdf.c on freebsd.
Sample ban_file added to lib. Read in of ban_file will now
ignore lines that start with #. Also, animations file (used for new
animation code) included.
Config file rearranged to hopefully be in better sections and easier
to edit. NEW_IMPROVE_WEAPON and SIMPLE_PARTY_SYSTEMS removed from options -
now always selected. NO_LOG, ONE_PLAYER_PR_UID, CHRFONT removed from
sections - these can never be valid. NO_ADD added to prevent players
from adding others
Server updated to send full lines of text with query commands to client
so for clients that pop up a dialog box, they can print meaningful data
on what the request is for.
Bug fix so that you can no longer apply multiple objects of the same
type with apply -a
Give better messages when attempting to light something.
New client/server statistic gathering added - will periodically dump
usage stats to the log file. Server will now longer crash if
client/supposed client sends bad data - will now just close the connection
instead.
Server will not longer crash when player runs into a door.
Can now longer polymorph objects into items that are invisible.
Removed client directory from main archive. Too many people thought that
was the new client creating confusion, and I don't see a big need to have
it around (it will go away when the X11 code is yanked from the
server anyways0. If you still like it, the old version of it will work just
fine (no changes have been made to it in a very long time0
Map changes:
color_ removed from map files.
library card cost decreased some.
oldcity maps updated to take full advantage of XPM mode..
Lake_Country/DA map changed - exp reduced, sp increased.
------------------------------------------------------------------------------
Changes from Crossfire 0.94.0 to 0.94.1:
in artifacts file - moved some settings of difficulty before Object line.
(difficulty after the Object line have no effect)
In low level socket code, retry read/write again if we get a EWOULDBLOCK
in addition to EAGAIN errors. Some systems return EAGAIN, others EWOULDBLOCK
Fixed possible crash in move_monsters. I believe the problem was that
the monster got killed by a door, and the function was not expecting
it, and would use the invalid object. Not sure if the code I put in will
really fix the problem, or just migrate it to a higher level calling
function (have not seen the crash myself)
If on linux, include crypt.h in main.c
Various minor memory leaks fixed.
Better error message for non wiz people trying to use shutdown command.
Shutdown command actually added to command structures and is now usuable.
Internal animations changed from explicit defines to use SET_ANIMATION
macro. Much easier to read, and better supports client side animations.
Include sounds.h/sound calls no matter what RPLAY is set to. Only
rplay special code is in sounds.h. This way, client can still get sound
information without rplay being defined.
removed NPC_PROG code - not used at all - only thing there was a few
#ifdefs setting values.
Moved typedefs for function pointer stuff from structs.h to funcpoint.h.
No outside affect on code, just makes more sense internally.
Disable default selection of DEBUG_DMALLOC on crosssite.def
Removed old/unused charisma bonus values from common/living.c
Minor fix so that a space is properly added between item number and name.
Added a lex loading routine. Performance seems to be roughly the same,
but ease of maintenace/readability seems better to me. Modifications to
loader.c should not be done - instead, they should be done to loader.l
Loader directive flags and loader return flags added to loader.l - those
are now used instead of arbitrary integer values.
Fix c_wix.c dm goto command to set the destination object/map name. Otherwise,
if an invalid map was entered, the enter_exit would try to print a null
string - some systems handle this OK, others will crash.
Changed common/time.c to use GETTIMEOFDAY macro defined once at top
of file instead of having #ifdefs throughout the file.
Fix so that items of differing values will not be merged. Also, when
merging objects, do not clear startequip flag.
Fix in doc/playbook-html so all include directives are handled properly
with the include_html.pl script.
More details printed about improved weapons (how many improvements done,
max number of improvements.) Also, skills will show how many improvements
the character can handle.
Bargaining skill will be auto applied when in shops.
Change teleporter code so the teleporter does not have to be the first
or second item on the space - teleporter can be any object on the space.
-a, -u apply options added (always apply/unapply instead of toggling).
Internally, apply and apply_special have been changed to take one more option
which is this flag.
Applied rings will not be merged - instead they will remain seperate. Fixes
problems with getting full bonuses, and also makes it easier to apply/unapply
one item.
Increased frequency of generation for strange ring (nodrain ring). This
should make it appear probably roughly as often as the ring of life,
or maybe even more often.
Put maximum carry limit in - beyond the limit, a character can carry no more.
This limit is fairly high right now, but should improve playbalance and
prevent characters from getting a negative weight or carrying so much
stuff it takes forever to move (session appears hung to them)
Added CS_STAT_WEIGHT_LIM to newclient.h, so client can know how much
the player can handle (only used for GUI, so it can do a carry/limit
type of thing)
Title information now used in hiscore displays.
Show invisible spell will now make handles visible.
New server code won't crash if player does nothing when it prompts for the
name. Also, include necessary dummy functions so server will compile
of ERIC_SERVER is not set.
Will now search keyrings when running into special doors for matching
keys (players can protect keys by putting them in other containers.)
Change jump skill so that any spaces with FLY_ON set will affect
the jumping player. This prevents the character from jumping over
player movers.
In create_wall - if insertion if the initial wall fails (new all is destroyed),
don't extend the wall. Fixes the earthwall on top of pool of chaos which
creates strange map problems.
Map fixes:
Lake_Country/ebony/masterlev altar should now accept fragment
of chaos.
Put no magic areas in apartment so it should no longer be able
to dimension door and get keys.
/city/houses/wizz.entry should now be entered at the correct position.
/city/misc/library - library cards are now identified, so it should
no longer be able to buy then sell at a profit.
/city/houses/wizz* maps: removed ./ from start of some map paths -
causes apparant problems.
Lake_Country/Butakis/blacksmith - can no longer get free dragon mails
or other items - have to pay for them now.
Remove pup_land/rainbow/Lv4/\nkey (\n was an embedded newline). Map
doesn't look to be needed.
Archetype changes:
Added blocksview to gwall so you can no longer see through them.
Fixed up castle animation in bitmap mode (212/312 images needed to be swapped)
Increased exp for skulls from 3500 to 5000, reduced exp of deathtrees from
1400 to 1000.
fixed typo in gauntlets which meant title was set right.
aggressive 1 values changed to unagressive 0 values in some archetypes
(no such value as agressive)
------------------------------------------------------------------------------
Changes from Crossfire 0.93.7 to 0.94.0:
Added outline of future versions in the TODO file.
a mana storm should now hit with godpower attacktype.
The spell create_food will now create food with 0 monetary value, and
be marked as starting equipment, so can not be dropped.
Player titles with spaces should now load properly.
Updated command times for use skill, ready skill, and stay commands so
when client executes them, proper amount of time is subtracted.
drop_object now preserves the freeze inv/look window, which prevents
slowdowns when picking up a lot of objects/dropped.
Added yield to water of diamond, fixed typo for dust of frost recipe.
If a recipe doesn't have a yield, recipe should still be properly
generated.
Hiscore savefile now stores maxgrace and seperates player title from
player name.
Option added to only swap out maps when MAX_OBJECTS is exceeded
(MAX_OBJECTS_LWM)
Changed internal definition from SOUND_EFFECTS to RPLAY_SOUND to properly
reflect what it actually enables (sounds for the client are always
enabled)
No longer put a 'a' for single objects.
Changed ring generation so rings of power can be generated.
Change can_merge so that more objects are mergable, add nrof 1 to some
objects.
Improved set_owner which can fix getting into endless loops.
Change insert_ob_in_map_simple so it doesn't call check_walk_on. fixes
player being slowed way down when dropping objects on slow move space.
Animations moved out of archetype and into seperate array. This is necessary
for the client as it makes a unique referance number for each animations.
Also, in future, this would make it easier to be able to change aminations
in objects/maps.
Print out level gain messages in red so they are more noticable.
Change can_pick so that invisible objects can not be picked up.
Change singing so you can calm a monster multiple times - you only get
exp once however.
Change show invisible so it only makes monsters and players visible, and not
things like magic mouths and ears.
Patch so that if peaceful is set, you will not attack other players even
if they have attacked you.
Auto apply woodsman/mountaineering benefit when in the appropriate terrain.
Fix get command so it takes from a container if appropriate.
shutdown and kick wizard commands added.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Client/Server changes for 0.94.0
Updated protocol version to 1010
Server debugging statements in ericserver can be enabled/disabled by
define at top.
Client can lock/unlock items on the server.
Client can now look at spaces now.
Send update of item to client when it is identified.
Send update command to client from decrease_ob_nr to update players
overall weight.
Now send animation information to the client.
Now send sound information to the client, client can send setsound
to server to enable/disable sounds.
Client side image caching fully supported.
Added updates when picking up objects/dropping objects so that players
weight and container weight is updated if necessary. Also, if object merges,
make sure we then send a delete of the original object that is now gone
to the client.
Update object changed to send floor animations to the client.
Send update when power crystal changes speed.
Send update of player object after player is loaded.
Change server so that only send map update and player stats once a tick -
should be more efficient and equally sufficient.
Added LOCKED flag to item transmission command so client can no which items
are locked.
Added item1 command which superceded item command - sends more informatin.
Added update command to protocol, and function in server - only sends
portions of an object that need to be updated.
Server now properly handles repeat fire on.
------------------------------------------------------------------------------
Changes from Crossfire 0.93.6 to 0.93.7:
set_god wiz command added.
Changed call to 'index' to 'strchr' in commands.c - keeps with what
the rest of the program does.
Pupland archetypes and maps added (v1.2 of pupland distribution).
Changed get_random_mon to be more random when a monster of a specific level
is requested.
Casting transferrance spell on another playing and having their head explode
will no longet get the recipient of the spell exp - instead, the caster
of the spell will get the exp for any kills.
change put_a_monster function so it properly handles multi-square monsters
(put_a_monster is called by summon_evil_monsters, at probably others)
Changed alchemy so you no longer get exp for failed/random mixtures
If a container on the ground that the player is using (ie opened) is
somehow removed, update the players view to now be the ground and not
the container.
Player titles will now be loaded properly from save files.
Can no longer sing and make the same monster unagressive multiple times.
The implementation is actually borrowing the NO_STEAL flag, which means
you can't steal after you sing, and after a failed steal, you can't sing
and calm it down. Also, make sure that only the 'head' of a monster is
sung to.
Fixed up CSword_116 xpm file (too many chars on one line)
Added note/option in config.h for systems lacking O_NDELAY.
Fixed up some of the quests in Lake Country - can no longer just run and
get the dragonbane or buy the armor with a lot of scales.
New Client/Server changes:
changed esrv_send_face to take the client_num instead of client_id
(should be slightly more efficient). This does not affect the protocol
in any way - it just makes the handling on the serverside more efficient.
Changed item command to calculate objects total weight before sending
it to the client (total weight = weight+carrying). This is needed because
there are many times that the client does not know what is in the container
and thus can not properly calculate the weight.
Change server so it sends updates for the parent
items that the object is being moved from/to (ie, when removing something
from a sack, send an update for the sacks weight). For the client
to properly handle the player being re-updated, some special handling
had to be added so the inventory list would be updated and so that
we don't try and add another player object (client search routine for
tags didn't look at the player)
Fixed server so it now properly updates the original item from which a
portion of it is being dropped.
Fixed bug in server handling which kept the -1 return code from a
blocked socket and decreased amount to send by that - reset to zero
so amount to be sent remains the same.
askface and mapredraw commands added to Protocol by Phil.
Changed load player function so it calls fix_player before sending
initial data to client.
Removed some printf/debug statements from pickup code for newcs in
player.c
------------------------------------------------------------------------------
Changes from Crossfire 0.93.5 to 0.93.6:
If we fail to save a map, all objects on that map should now be properly
deleted from memory.
Fix possible crash when score is being generated if player is on
swapped out map.
Default output buffer for new clients is now 64k.
Partial code in place for client side image caching.
Alchemy changes from Peter & Brian. Main change is that multiple recipes
can be made at once.
Bad grammer in messages printed out when readable object is beyond players
comprehension.
ethreality recipe commented out in formulae file.
Some playbalance issues on maps fixed by Samuli Tursas.
Internal handling of shop menus changed - instead of a list of objects,
change it to an array of strings.
Minor changes in porting.c to hopefully make that file compile properly on
more systems.
doc/experience updated with some more notes from Brian.
CAN_MERGE changed from a macro in define.h to an inline function in
object.c (only file it is used.). It makes it a bit clearer, and hopefully
a little safer. There is an option at the top of config.h for handling
of the INLINE function declaration.
Possible fix so that altars should not be re-concecrated if god is
set in the editor.
Undead monsters can now see in the dark.
Fixed bug in parse_command which would cause crashes if a socket connection
entered a string with a ; in it.
Increased string size in new_draw_info which prevents crashes/stack
corruption when really ling strings from a socket is entered.
Changed spell level/costs between invisibility and improved invis such so that
the improved version is now a higher level and more sp.
Now possible to steal from a creature more than once as long as character
remains unseen. Each steal attempt will become harder in any case.
Remove some special player checking in get_nearest_player - I think it
caused some crashes, and wasn't necessary (in fact, clever players could use
it to get it such that monsters would not target them.)
When characters stop levitating, call check_walk_on so they will fall
through pits or other applicable effects.
Fixed up some archetypes which could be picked up when that should be
set (trapdoor, bullet, meteor). The last 2 cases can not be picked up,
but clever casting of alchemy could have nuetralized them. collect.pl will
now print warning if an object has walk_on set but does not have no_pick set.
Added new map from Bjoern Helfesrieder to starting town (Yarin's House)
Fix in item matching code that could cause core dumps.
Fixed clearinfo command so that it still works even if player is using
scroll mode (only if player issues the clearinfo command - other uses
of clearinfo in function won't clear in scroll mode.)
Improved shop listings so they are sorted by type, then sorted by name.
Fixed bug in backspacing the to the front of the first line of an
extended command - it now works properly and puts you back in normal
command mode (this got broken in the addition of extended line input.)
Player should still be able to save if they were the wizard. However,
wizard status will be stripped for save, but the fact they were a wizard
will not be stripped.
Imp made even wimpier by Peter M.
If you set of traps, open doors, push a player, or roll a boulder,
you now become visible.
Change it so that when something/someone reads a scroll, only inform
the other people on the map (perhaps this is still overkill?)
------------------------------------------------------------------------------
Changes from Crossfire 0.93.4 to 0.93.5:
Replaced handbook make_index script with perl version. Much faster, and
also fixes problem with echo command doing different things on different
systems.
Minor change in crossedit such that if it is not compiled with XPM
support, it will give an error message if run with the -xpm option.
Changed code so that experience objects no longer change stats (reverses
'fix' made in 0.92.9) Fixes problem of characters getting extra
stat points from the experience objcts.
Fix bug that could cause infinite recursion loop in spellpath_msg. From
cameron@ripper.stl.dec.com (James Cameron)
Fix bug in complex keybindings in which all the commands in the keybinding
were executed that tick. Thus, if you bound a key to north;north;north;north
and pressed that key, you would move 4 spaces north no matter what your speed
was. It now works properly, and you move at proper speed (keybinding is
copied into buffer in player structure, and removed as we go along.) Note:
This buffer could also be used to hold keypresses not yet processed, but
that hasn't been done yet.
Added ability to enter lines longer than the info window is wide. This
allows for longer keybindings or say commands. It isn't the most
sophisitcated thing (the extra lines show up with a 1> and 2>, etc for the
extra lines, and we just redraw the previous line if you backspace that
far. After you complete the command, it does end up redrawing the entire
command, which can take a few lines, which gives some confirmation on what
you typed in. This feature was added to both the standard server code
and the new client.
Change use of tempnam to tempnam_local which we supply. Standard tempnam
will look at the TMPDIR environmental variable, and use that to override any
other value for the directory - this causes problems if different people
runn the program and using the temporary maps accross runs. tempnam_local
will not look at the TMPDIR variable, and will instead always use the value
we pass it. This can be changed if we were not compiled in SECURE mode by
changing the CROSSFIRE_TMPDIR environmental variable. Code was also changed
so the CROSSFIRE_TMPDIR variable will not be used if compiled in SECURE mode.
Fix so that you can no longer move really fast or fire really fast by using
the mouse buttons in the game window. Using the mouse buttons in the game
window should now result in the same speed as using the keyboard.
Patches from Peter Mardahl:
Dusts now cast as ability and not spells. This mean that they will not
have magic as part of the attacktype.
Spells that are cast on oneself now ignore direction. Thus, healing and
protection potions can not be cast on something next to the player using
the object.
Detector object added. Similar to inventory checkers, but only
periodically samples what is in the space, and doesn't look at the
inventory, only objects actually on the map.
Creators can now cause objects they create to inherit names. They can
also periodically create items.
Arch diffs: imps weakened, cold dragon spews forth cold, creator modified
to have default speed 0.
New FireTemple set of maps. These have been onto the Volcano in the
southeast area of the continent. The maps that were there were moved to
world_e2, under the crater.
Gradual light/darkness code put in place. I fixed a few of the bugs
that were in peters orignal version, so it works flawlessly for both
server and new client.
------------------------------------------------------------------------------
Changes from Crossfire 0.93.3 to 0.93.4:
Inventory checkers can now act as doors. If no_pass is set in an
inventory checker, player can not move onto that space unless they meet
the match requirements.
Signs that are usuable only a fixed number of times added.
Fix for pedestals & buttons so they are only activated once when a player
moves onto a space (previously, they were being activated twice.)
Fix for connected objects so that they will not be sacrificed on altars.
This fixes a case where you might want to put a check_inv and altar with
the same sacrifice on the same space. Before, the inventory checker would
be sacrificed on the altar, causing the linked button list for
inventory checker to be corrupt.
Many maps updated to look better in xpm mode or just better in general.
Change in crossedit so that if you set the randomitems variable for an object,
it only sets the value at the head of the object, and not all parts of the
object (it would be nice to allow non head parts to have this set, but I am
not sure how to get what part was clicked on in the editor, since it seems the
head is passed to the function.).
xpmtopix.pl script added. Eventually, I hope this will replace the
C version. For now, all it is good for is to verify that the XPM images
are using the proper colors. Numerous XPM images were not using the proper
colors (a lot were using brown, which is not an official color - see
the xpm template for what is.)
Cleanup of proto directive to turn __signed into signed. Also, change
#if __STDC__ to #ifdef __STDC__ in proto files.
Fix so it should now compile if SECURE is defined.
Ability to more easily added needed libraries in crosssite.def -
Extra_Libraries option added.
Assume Linux has a prototype for tempnam (at least my version does.)
Many objects added, and many XPM images updated/improved.
Change in new CS code - don't send the version string until after we fully
set up the structure.
Change so crossfire will compile if SAVE_HOMEDIR is set.
Reverse actions of -m8 and -m9 (Believe they were doing the wrong thing
relative to the scripts and what the docs say.)
Change in hiding code and detection by monsters.
------------------------------------------------------------------------------
Changes from Crossfire 0.93.2 to 0.93.3:
Added a fill below function in crossedit. This make filling in backgrounds
for maps much easier. Basically, it just puts whatever object you select as
the bottom object of the bounding box. If the bottom object on the map
matches the object being inserted, the object is not inserted. As a side
effect of some code in GetMapObjectZ, if it matches the top object, it won't
be inserted either. This makes things much easier to update map backgrounds
for XPM mode.
Hiding made easier for players.
Stealing is made easier for players, but harder beyond the first item.
Many image colored and perspective corrected David Sundqvist. Also, several
new objects added (specialized altars, some more indoor furniture/more
orientations, some sliding secret doors, and new wall types.) Barn image
naming conventioned changed to follow what is considered proper.
A few maps added by David (two temples in starting village, along with
a mercenary recruitment building.) Also, some maps fixed to look better
in XPM made.
Party kill option added by Rauli Ruohonen. IT lets you see who has killed
what recently in your party.
Saving throw for objects cleaned up. Previously, an objects immunities/
protections were not being used correctly to determine if it made its saving
throw (that is why icecubes could be destroyed by ice). It is now set up
properly.
Gods will no longer improve weapons that have been enchanted by other gods
(Or I believe by yourself.)
Fix memory overrun (1 entry) when initializing values for the images.
Program will not recover properly when it attempts to load a temporary
map. This means that load_temporary_map returns the map object to use,
since it might change.
When setting the owner of a monster, clear its ability to use skills
Fix in decrease_ob_nr so it should now work on 64 bit systems.
Mapguide updated with various suggestions made on the mailing list.
Linux systems assumed to have at least random available (change in the config.h
file.)
't' is now bound by default to 'ready_skill throw'
missing demon types (imp, big_demon, Greater_Demon) added to the list
of demon races.
xpmtopix will print a warning if it detects and XPM file using a tab character
in the color name - makes it easier to track possible image corruption.
Check for power of improved weapons now in its own function. Also, we
now properly check weapon power when improving one (before, you could
improve it one level more than you could actually use.)
When a container is applied, make sure it is a player applying it before
checking for new client/server information - otherwise an invalid pointer
is dereference.
Complex keybindings added - thus, you can bind several commands seperated
with semicolons to one key.
Fix in encounter.c so if compiled with RANDOM_ENCOUNTERS, the new
settings structure is used for map location.
Added check fot out_of_map in various places that needed them - prevents
some more core dumps.
skill identifications will now look on objects on ground in addition to
those in the inventory.
perceive self should now tell you what god you worship.
map reset times on maps (temporary maps accross multiple runs) will not be
altered if there is no map reset time.
------------------------------------------------------------------------------
Changes from Crossfire 0.93.1 to 0.93.2:
New argument parsing routine - we now parse arguments in phases. With this,
I have moved many of the global settings into a settings structure, and
allowed highscores to be displayed by class/name. The man page and -h
option have also been updated. Also, all the files that could
previously be specified via environmental variables can now be specified
with command line options.
The temporary directory can now be specified via -tmpdir command line option or
CROSSFIRE_TMPDIR environmental variable.
If you cast word of recall and then save before it takes effect, it will
no longer corrupt the character (and will in fact take effect when you
restart).
Don't let players throw starting equipment. At the same time, don't mark
throwable items as starting equipment - instead, just give it zero
value.
Fixed inscription - now properly writes scroll when passed no string instead
of crashing.
Artifact monsters now possible (monsters whose abilities are changed based
on the artifacts file.) Top of the artifacts file has more information on
this. For now, I have only set up the orc, ogre, and goblin to get
special leaders.
Temp maps can be reused across multiple runs. See config.h for more
notes.
Bug fix in inscription: If you inscribed a scroll and already had
one like it in your inventory, the game would crash after they
merged. Also, if you failed in inscribe a scroll, the game would
also crash (object it was using to calculate experience had never been
initialized). For now, I just changed it to return -10*spell level
as the exp award.
Items will now be merged with other items even if one has been inventory
locked. This way, if you have some torches that are locked and you pick up
some more, they will merge in instead of showing up seperately.
Bug fix for saving throw on objects hit by cold. There could be cases
where an object being processed is no longer on the map and would cause
a crash.
Change find_first_free_space to return -1 if there are no free spaces.
Calling function should check this and then do the 'right thing'. This
fixes problems with runes creating monsters on top of monsters (or
below the player).
Magic map cleanup. Now have magicmap field in NewFace structure. This
field holds the color to use for magic map in low 4 bits, and various
flags in high 4 (right now, only floor bit is used, since drawing may
differ on bw systems with that value.) magicmap filed is now supported
in .arc and faces file. collect.pl modified to automaticaly put
magicmap into the faces file, will also copy is_floor into faces file.
magicmap takes a color name. This seperation allows magic map colors
to be set independant of foreground and background colors, and simplifies
the code a good deal. Also, it makes new client magic map support easier.
Now all the archetypes need to be updated (I have already done the armour,
connect and construct directories.)
Magic map for client now implemented. Definition of protocol added to
Protocol file. Only limitation implementation has over direct server is
it only flashes the position of the player who cast the spell. This
seems perfectly reasonable to me (use color or other attribute to know
where other players are.)
Old client (telnet front end) changed so that it no longer requires
libcross.a.
save object should do a better job if it gets an object without an
archetype.
buffer size for LOG increased - there were cases where this buffer
was not large enough and was causing crashes (sending large amounts of
garbage data to the socket was one way.)
Load map will now reload the original map if the temporary map is for some
reason no longer around.
Fix bug where randomitems may not have been properly initialized for now
objects (was inside an #ifdef for CASTING_TIME)
strerror_local added to porting.c. Lets up give up more reasonable
error descriptions for certain errors.
If an object is cursed, set its vulnerable values to its protected and
immune fields, adn clear those fields. Fixes 'problems' with finding
cursed rings which are not really cursed (pro fire/vuln cold rings.)
If trying to switch to private colormap in XPM mode, check to see if
we are successful.
Fix crossedit so that if you have a map loaded and you then try to load
an invalid file, it no longer crashes (now reverts back to old file)
Archetype changes: Golden unicorn horn now has its own set of images.
Editable field updated for the gods archetypes (they were showing up in all
the menus.) living_chaos object added (need for Brian Thomas's maps.)
Update the editor/picks map so that all archetypes are included in at least
one of the maps. Modified the map_info script to print out unused
archetype.
New server: Only increase buffer size of socket if it would increase
overall size.
fix in skill experience calculation to use magic field properly.
Alchemy spell changed. If there is a cauldron in area of effect, only
do cauldron alchemy. Otherwise, do item to gold nugget conversion.
Added a few more notes/thoughts to the mapguide/
------------------------------------------------------------------------------
Changes from Crossfire 0.93.0 to 0.93.1:
change race initialization functions to to fix cases where race is specified
in race file but no race is specified in the arch it points to - before it
would not be added to the proper race list.
include handbook.ps in the standard distribution.
Client server rewritten to no longer use eutl package. Other bugfixes for
client server: server now properly sends delete item command to client,
client now properly adds up a containers (and hence players) weight, pixmaps
are now supported.
Snowball spells added - these are the same idea as the fireball spells. (by
peterm)
Magic wall will consume several squares now.
spells array (in spellist.h) updated - was missing a spell (cure blindness).
splitter.pl (by peterm) added to arch/dev directory - takes a larger xpm
file and splits it into 24x24 chunks.
icestorm and small snowball added to possible list of starting spells.
Only set minimum speed of 0.01 for players. This fixes the bug introduced
in 0.93.0 where multisquare monsters moved too slow.
Only print out a creature lost a spell if it is in fact a player. Only
applies for casting time.
fix_me command added - basically just calls the fixme function. Can be
useful if you that your characters weight is for some reason incorrect.
Fixed sprintf that was copying over static character data if you tried to
form a party that already matched a name. Also, fixed a possible buffer
overrun situation.
More memory leaks fixed by Rupert Goldie - also fix to prevent orated monsters
from attack themselves.
New xpm images for woods and some buildings by David Sundqvist. The new
buildings have a bit more texture and 3-d look, the new woods look a little
bit more in scale and mesh together better. The old images are in the
xpm_pref directory if you prefer those.
More code added to free memory when server shuts down (useful for
trying to track down some memory leaks).
------------------------------------------------------------------------------
Changes from Crossfire 0.92.9 to 0.93.0:
Minor map changes: Some maps cleaned up to look better in XPM mode.
Removed no magic areas from around the demilichs in lord ramsdre mansion.
map_expand perl script added (located in lib/adm)
Cleaned up use of externs and declarations of many structures. Depending
on the linker, these would not be merged into one value, and thus not be
initialized/set properly (fixes 'mark pushed you bug'). This was a problem
at least on SGI systems, probably others.
If on a sun and not using sun's acc, assuming Stupid Sun Headers, even
if on a Solaris system.
Changed change_abil so it returns true if a value actually changed (useful
for printint out information when apply objects like potions.) A lot of
return checking of this function in apply.c is removed - that checking
now seems obsolete.
Set visibility to zero at first stage initialization.
Put a lower limit of 0.01 for player speed. This still gives an action
every 12 seconds if you pick up way too much junk.
When praying at altars, have gods grant out spells only if it is a spell
they are attuned to.
Cleaned up some memory leaks, courtesy of Rupert G. Goldie.
Cleaned up the cast command code. Also, if you do something like 'cast p', it
will now show all spells you know that start with p, instead of casting the
first one it finds.
Shift middle button in the inventory window should now mark an item.
Fix button handling for look and message window so that only if it is clicked
with the right 30 pixels do we consider it a scrollbar event (before, anything
more than 270 from the left was considered scrollbar - works fine for
default sizes, but if you resize, it would cause problems.
If on SGI systems, don't default to using rand - it should now pick up
lrand48 or random instead.
Change spell casting such that if you aren't high enough level, it more
obviously states it (previously it said you 'lack the skill', which can lead
to confusion.)
Fix so that the first recipe is now accessible when performing alchemies.
Added many thoughts/ideas to the TODO list.
Increase buffer size for examine command - some object could overflow the old
buffer.
remove no_magic from all monsters - immunity values should be used instead.
am not sure
Made changes for strcasecmp detect - was checking as defined(sun), now is
defined(__sun__) - this is proper and what the rest of the code uses.
define MAXNAMLEN in crossedit/Posix.h - needed for ultrix systems.
Made it so that boots are not always considered magical (since there are
now many plain boots out there.) Also, removed the always_magical function -
is_magical should now handle it all.
Allow items of type BOOK to be identified, since you can now find non
identified readable items.
Change loot_object so it doesn't remove experience objects - this way skills
don't get removed when a player dies.
------------------------------------------------------------------------------
Changes from Crossfire 0.92.8 to 0.92.9:
Make sure all skills are unapplied when changing the class.
When generating a spell listing (cast with no options), display the
level of the spell (or den if it is denied.) Also, display mage spells
in one batch, priest spels in another group - I think this is more
relevant now since these are seperate exp objects and draw on different
power sources. Still no pause key (doing those is a real pain) - that
is really a client issue or we should just add a scrollbar to the text
window.
Removed level 20 from artifact 'sword of Beserkgang' - was preventing
characters from using it.
Put cause many wounds spell in PATH_WOUNDING. Book chance for holy word
increased.
Let experience objects change stats.
Many debugging messages added or updated to print out more useful/
detailed information.
Changed usage and set_protocol function names in client/client.c. This
prevents name collision with libcross.
Web site locations added to the README file.
Load and save window positions even if split windows is not set. This way,
window posititions are lost if you run the game in non split mode (and I
don't see any reason to discard these values.) Also, -split can
be used in addition to -w to get split mode.
Changed check inventory objects to recursively search through containers,
and cleaned up the code. Also, added notes on crossfire.doc on using it,
and made basic archetype to use. When using inventory checkers in
crossedit, have the attributes by default come up with connected and
lockcode fields.
Made change to unique items: If the object is a floor and has unique items
set, then all objects above and including the floor get saved as unique
objects. Also, when merging maps and freeing old unique items, make sure we
remove them from the button links. Made an apartment map which characters can
buy permanent apartments and also store equipment in. When exiting the
program, save off all maps so the unique items get written out.
Xpm fixes: Moved floor setting from map loader to update_object. This
makes it so that crossedit will display the map properly in XPM mode as
you make updates. Also, made default visiblity 0 - this makes the double
floor work properly. There still seems to be some bug when pasting objects
in the editor with respect to updates.
Change made to goths taverns and tavern in lake country. Change is so
that some of the wimpier informants don't have really good stuff to take.
Periodically write out the book archive during play, and not just when the
program exits.
Bug fix so 'drop x items' should no longer crash. Also, 'drop 1 item'
should now only drop 1 item of 'item', and not all of 'item'.
Bug fix so 'unlock item' should now work OK.
When throwing objects, clear the APPLIED flag before the throw.
Prayer granting from praying at altars changed around - you will get more
unusual prayers, and a Wisdom of 25 is not a yes/no cutoff - value of
sucess depends on wisdom.
Archetype changes: remove no_magic flag from demon lord - I don't think
this should be set in any monster - instead, immune should be set properly.
Added damned flag to gates that are no magic (probably not necessary,
but I think it makes sense.) Added check_inv object. Removed some
duplicate skill types (same skill, different arch names.)
Have get_pointed_target return the head of the monster if it is a multi
part monster.
Change smite and finger of death spell so they have no effect if creature
reflects spells.
Fix to prevent bug crashes with magic rune spell.
Fix in spring_trap to correctly target the victim. Also,
fix in find_traps which prevented the gaining of experience.
If character has bonus grace, display it with percieve self. Also, load
and store the last_grace value properly.
Changes from Brians hide/attack patch: Adjustments for attacking based
on varying factors, monsters wake up & call for help if it, can't remain
hidden if you attack, changes for monster detection of hidden/dark/invisible
players, players no longer remain invisible if attacking, adjustment in
exp for stealing, stealing and hiding chances changed based on terrain
and other modifiers, when generating flesh items, set no_steal, give
chinese dragons some treasure, giants a little more gold.
------------------------------------------------------------------------------
Changes from Crossfire 0.92.7 to 0.92.8:
races file changed, a bit more flexible.
Additional dump flag (-m8) to dump god information.
If attacktype is holyword, creature must be in slaying field of holyword.
Better handling for items that remove/add protections,immunities,
vulnerabilities. Only print changes if there is an actual change.
holy power, blinding attacktypes added.
Add poison to list of items that might not be identified.
Two when windows are killed: 1) data is freed properly without causing
crash now. 2) If player has saved but window is still active, will
no longer make a save of the player. This save would be a no-item save
that the character had been playing.
Bug fix to prevent crashes if clicking a button in the message window
and show_Buttons not enabled. Also, moved button handling in message
window into its own function.
Bug fix for pet monsters that should prevent cores if cycling through many
maps very quickly.
appendix for god information added to handbook (both latex and html versions.)
gods2 patch applied from Brian Thomas. The main thrust of the patch is
to make gods objects/archetype, and not array entries in the source code. A
lot of code needed to be changed to support this difference.
God patches so that game doesn't crash if no gods are set.
Hopeful change for FreeBSD so it automatically pulls in the crypt
library.
Can no longer cast spells which are beyond your skill level.
More powerful spell failures added.
Can no longer read scrolls/other readable if blind.
Fix bug that if a weapon had slaying, it slayed all monsters, not just
the ones it was supposed to.
Don't add the bows attacktype in when figuring out the attacktype of this
player. This pretty much always gave the character a physical attacktype
in addition to everything else.
Fix 'peaceful' when using buttons so it doesn't crash the game.
path_to_player changed to work better on diagonals.
Spell choosing by monsters a bit more intelligent.
No longer get experience for disarming/finding your own traps or those
of other players.
Add NO_STEAL flag, with obvious meaning. If a monster notices you stealing
stuff, all his items are set to this, so nothing more can be stolen. Flag
is automatically cleared when items are dropped.
Add run and fire messages to message (stat bar) window.
Make USE_BUTTONS playable setable item instead of compile time item.
Don't insert heavy (>5 kg) missile objects into player when they hit - have
them drop to the ground instead.
--
Made more general object matching routines. item_matched_string sees if
an object matches a string (which can be comma seperated list of many
things.) find_best_object_match finds the best match in the players
inventory.
item_matched_string gets used for for matching multiple items. It is
used in drop, get, take, lock/unlock
find_best_object_match is used for apply, examine, mark, search-items.
Also changed code so that certain actions are in sync with what display
mode is set (mostly drop.)
--
If levitating, you can now remove items from containers in your inventory
(after all, they are levitation with you.)
Clear is_changing flag if object is being thrown.
Changes made to inscription code to work better.
Changes mode to experience awarding for player skills.
Fixes made to Peter Mardahl's dragonquest maps.
Big Wizard, Belzebub, and Demon lord xpm versions colored.
Minor bug fix to container in Thomas map.
Some new archetypes/images for peterm/dragonquest maps.
Make food creation spell more dynamic - food names/values no longer hard
coded in.
Additional demons added by Peter Mardahl
Bug fix to prevent crashes with improve armor/weapon scrolls.
Bug fix to prevent crossedit from crashing when exiting with edit windows
open.
Fix to prevent monsters from throwing certain good objects.
Make sure praying over an altar only gets cleric spells.
Increase saving throw array to correspond with max level.
Monster hp/sp regeneration method changed some - more accurately tunable
for low regeneration values.
------------------------------------------------------------------------------
Changes from Crossfire 0.92.6 to 0.92.7:
Monsters now tend to be more agressive about firing spells. Several
changes - now monsters will fire along diagonals. For multisquare monsters,
we check to see if any part of the monster has a good shot at the player,
not just the head. This changes tend to make it more likely that a monster
will cast a spell and hit other monsters (makes a pack of wyverns more
dangerous, as many will cast spells at you.) I am not sure if this is a bad
thing - all it means is that you can't mix fire using creatures with
monsters that will be damaged by fire.
Let archetypes in the races file have spaces (for Arch Angel)
Throwing code added - players and monsters can now throw objects. Some
new throwable archetypes added. You need to add throwing_skill to any
old players - you can run the utils/add_throw.perl <playerfile> to do this
crossedit: If a object have editable of 0, make it so it doesn't appear in
any of the menus.
Max yield added to recipes.
Better checks for insert_ob_in_ob to make sure we really have a player
before calling some of the update functions.
Weight limit for custom containers is now saved.
If we load an object and find it has no archetype, just drop the object.
This shouldn't happen, but can prevent core dumps for maps with missing
objects or players from a different version.
Add 5 static buffers to query_name - it is now safe to call it a few times
in a sprintf or the like without losing the old value.
Added 'statistics' command. Shows useful information about the
character (none that can't be found in the docs.) Also changed
'skills' to show how much exp you need in each category for the next
level.
change_abil changed so that it only prints out what values/attributes
have changed. Ie, if you remove a ring that gives protection from
fire, but have other fire resistance, it won't say you are more vulnerable
to file (since you are not.)
Charisma bonus/mechanism changed (again.) Values in living.c are more
easily/directly translated into what it means for buy/sell cost. Curve
also balanced out some more. Query_cost changed so the value
mechanism is a bit different (unfortunately, we need to multiply the value
of objects by 4 to keep them roughly the same price as before.)
Added 'mark' command. You use this to mark objects that are used for
other objects (ie, torches with flint & steel, weapon with improvement
scroll, etc.) This removes the necessity that the item you want to apply
be the first thing in your inventory (in fact, that is no longer supported.)
This should also make things easier for the client.
Bug fix that prevents crashes on spaces which have a teleporter and sacrifice
altar on the same space (/Lake_Country/DA).
Some minor changes to lighting code, some maps also updated to
use lighting code.
Added halfling and half orc character to the game (From Brian Thomas)
Changed valuation for FLESH items. Before it was value*level of creature.
Now it is value*sqrt(level*2). For low level, this keeps roughly the same
value, but for high levels, it keeps things more reasonable (drops the
value of zombie corpses to about half previous value)
Bug fix for monsters that have attacktype of ghosthit along with
others (main fix ghasts, for Lake County, REtower/tower3, but
this could happen for any monster.)
Fix for attacks doing no damage against monsters they should.
Bug fixes to readable code - should no longer core dump (At times) when
books are created, should also be more robust and fix some other bugs. Also,
give more detailed messages on how many levels beyond your comprehension
a book is.
randomitems now stored in object, not archetype. This means that treasure
types can be changed in the map - a new archetype doesn't need to be added.
However, the treasure to set must still be in the treasures file (or you
can use none so treasure is not generated.)
Removed color_fg and color_bg variables from game - these have long been
obsoleted, but code to handle them has never been completely removed.
Changed code so that best wc possible is +/-120 - should now prevent
overflows.
------------------------------------------------------------------------------
Changes from Crossfire 0.92.5 to 0.92.6:
If player deletes window and we can't save, delete player objects instead of
dumping them on the map.
Make NEW_PROCESS_EVENTS standard - remove old proces code and ifdefs.
Remove temporary object from cast_spell - pass along both spellcasting
and owner objects. Seems to fix some bugs and increase reliability (also
is a better way to deal with it.)
Change made so that converters are also knowledge about 'money' psuedotype.
change spellcasting altars so they also push the button. Fixes altars
on some old maps.
Some minor tweaks made to the artifact file - mostly clarification of names
or setting values correctly.
spellcasting skill renamed to wizardry.
Fix made so that 'old' potions (strength, int, etc) use correct price.
If you examine food/flesh items, you now get detailed information (food
value, protections, etc.)
Code by brian thomas so that book titles will remain constant across
different program runs.
Bug fix for crashes caused by multisquare monsters stepping on
deadly objects. Basically, fully insert the object, then start doing the
check_walkon's one at a time to see if the creature dies.
Brian Thomas' valley of the sisters quest added. Additional archetypes
and treasures added to handle this.
'sort_inventory' option added (player setable.) IF set, when items are
picked up, they will be inserted by type, then alphabetical. Very handy
for scrolls and rings.
Some fixes made to the kundi maps.
Flesh/alchemy fixes by Brian Thomas. Flesh type now inherit properties
from parent creature (weight, and possibly protections/vulnerabilities are
added).
Change made for alchemy - you can't toss a bunch of junk in a cauldron and
get a good item out unless you sucessfully use alchemy.
handbook added to the doc directory (tex/postscript.) And html version is
also there, along with an html version to the spoiler. Tex version of
spoiler also fixed so it is generated properly with new Latex.
------------------------------------------------------------------------------
Changes from Crossfire 0.92.4 to 0.92.5:
Som bug fixes made dealing with cursed improvement potions.
Always let players learn spells if they are in their starting spellbook.
New attack methodology put in palce. To put in simply, if there is
only 1 attacktype, things remain the same. If there are multiple attacktypes,
we cycle through them one by one, and take the one that does the best
damage and use it. Some attacktypes no longer do damage - they are effects
(ie, paralyzation, slow.) In the case of of these, the effect will always
be applied if appropriate. Code looks to behave pretty much the same,
but is easier to follow. IF new code is buggy, or you don't want it,
there is a define at the top of attack.c you can change.
If god blesses you, lets actually remove the depletion object from the
player inventory.
Other god related fixes put in place - look to also deal with blessed
weapons.
Additional dump flag added.
fix bugs with USE_BUTTONS and the peaceful button.
Only allow write_rune to use objects of type RUNE
Bugfix in get_pointed_target if it can't find a target - prevents endless
loop
NRSPELLPATHS set to correct value.
Remove null terminator from gods array - not needed anymore.
Fix savethrow array size to match maxlevel properly (was 1 short)
remove damnation and remove curse now cleric spells.
Fix some header code to better work on solaris 2.5
Support for compilation with the dmalloc (debug malloc) package.
Allow altars and related items to match objects based on type. Use hp
field of altar object as the type to match.
Library patch by Brian Thomas.
Various skill fixes by Brian Thomas.
Alchemy patch by Brian Thomas. Here is a copy of his README:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
The amount of work I put into this was substantial; other than
new code -- I created new archetypes, revised archetypes, altered the
treasures file and created 2 new object types and a flag.
It therefore may be enjoyable to install this patch (incl code)
and *not* define ALCHEMY in define.h. In particular, this patch
does the following things:
1) more varieties of potions are available in shops.
2) new gems and types of food.
3) monsters will now leave behind body parts when you kill them.
4) if ALCHEMY is defined players may make potions/artifacts.
I have included instructions for installation in INSTALL.PATCH,
and a brief document for using the code (Alchemy.doc).
Finally, as always, feedback is appreciated.
b.t.
thomas@astro.psu.edu
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
------------------------------------------------------------------------------
Changes from Crossfire 0.92.3 to 0.92.4:
Various bug fixes to readable code.
Let altars be able to cast spells. sp field determine what spell to cast.
Fix obscure bug that an arrow can be 'killed' if a monster that has hitback
moves onto it while it is moving. Thus would then cause problems because
apply would try to remove the object after it had been killed.
Give quetzalcoatl melee attack skill.
Give experience for clawing attacks.
Include literacy skill with fighter skill - this should now give all starting
classes literacy skill. I think it improves play balance.
Don't mark a players starting money as being start equipment - otherwise
they can't drop it on identify altars and it can get merged with money
gained at a later date, yet still be marked as starting equipment.
Bug fix in keybindings so that we check return of XKeysymToString to make
sure we don't use a null value. Some keyboards have keys with no names,
and on some systems, passing a null pointer as a string causes it to crash.
------------------------------------------------------------------------------
Changes from Crossfire 0.92.2 to 0.92.3:
Removed ability to use unpaid objects for sacrifices.
Changed weapon improvement code to be based on skill levels (if skills
are used.)
Code in place to generate hit points by average of fighter and overall
level - to enable this, change the #if 0 to #if 1 at around line 1040
in common/living.c
Books hack by Brian Thomas. This mainly means that when emptry books are
created (or are otherwise on the map), that they will be filled with some type
of information. Some (like monster/spells/gods/artifacts) are generated via
the program itself. Information from a messages file that is stored in lib
can also be found. Experience can be gained by reading this information.
Read/write patch by Brian Thomas. This mainly encompasses the fact that
players can now write messages in books, that you must be literate enough (as
determined by literacy skill level) to read various books/scrolls. Scrolls
are now not identified, but literacy can be used to identify them. Players
can still read signs even if they are not literated (needed for game balance/
information)
------------------------------------------------------------------------------
Changes from Crossfire 0.92.1 to 0.92.2:
Give artifact Gram weapon attacktype physical|confusion. Before, it was only
confusion which would never actually damage anything.
If a player dies in a shop, remove any unpaid items from his inventory and
put them back in the map. Only applies in NOT_PERMADEATH mode.
Put in better DM security - now checks for name, password, and hostname (any
of those can be wildcarded out) - see the lib/dm_file for some demo. To
supply a password for dm mode, just use dm with the password (ie, "'dm
<fireball>")
Lighting code added (with various support objects, spells, etc). No maps
support this yet.
Don't baptize altars if we are in the editor. Leave altars the way they
are so that they will be baptized the crossfire loads the map instead.
Allow the title of and object to be set from within crossedit.
Allow individual players to set the inventory icon, now longer a compile time
option.
If we get a non critical error and do an emergency save just in case,
then don't remove any information/objects. This probably fixes the
disappearing inventory bug.
------------------------------------------------------------------------------
Changes from Crossfire 0.92.0 to 0.92.1:
Improved altar sacrifice code (actually, any object type that calls
check_altar) - treat a slaying field of 'money' as something special- don't
care what form the money is in (see docs for more details)
Improve identify table (in conjunction with altar code above) - now takes
any type of money, won't take money if nothing needs to be identified,
will identify as many things as money is dropped for (ie, drop 200 gold, it
will do 10 items)
In the map attributes in crossedit, you can select an option called
"ShowWeakWalls". If this is selected, weak walls will be shown in a partial
teardown state - makes working with some maps much easier.
New client updated to support Power and Grace stats.
Magic system broken into 2 forms of magic - clerical and mage (they are
now seperate). Power stat also added to the game - plays into mage
spellpoint (mana) total. Grace also added - used for cleric spell casting.
Skill system greatly expanded - different experience types with skills
associated with them (only has meaning if you are using the skill code) - thus
you gain experience for certain categories as you use certain skills - see
doc/skills.doc for more info
Multiple gods added (via config option in config.h) - basically, different
gods have different enemies, and the effects cleric spells have will depend
on this. Altars are created for different gods. See doc/Multigod.doc for
more information. Along with this, some new spells were added.
Fix a problem of some objects falling out of sight when they shouldn't.
Send delete item to client if decrease_ob reduces the items nrof to 0.
Weight should now be fixed up when transferring stuff to/from containers.
config option called NO_AUTO_SKILL_SWITCH added - it means range type
doesn't automatically get switched to skill type when using melee weapon.
Main effects is that it makes it easier to switch between melee and range
weapons (pretty much makes it like it was prior to the skill code.)
Sack code cleaned up - we don't need to split an object to see if it will
actually fit in a container - we can just say how many we want to try to
put in.
Actually put wimpy command back in (all code was there, just the link to
call the fucntion was missing.)
Increase max count from 9999 to 99,999. Wasn't that uncommen for high level
characters to have more than 10000 platinum coins.
When invoking spells, temporarily switch the range type to range_magic -
otherwise, a proper check for spellpoints is not done, and it then becomes
possible to go negative.
Modified crossloop so that it renames and compresses any core files created
while it is running - very handy for debugging (note that you could easily
modify it to remove the core files instead.)
------------------------------------------------------------------------------
Changes from Crossfire 0.91.9 to 0.92.0:
Make sure the weight a container is carrying can never go below 0.
Fixed fall below code, so that objects with visibility will not fall below
objects that otherwise blocks view.
Fixed colormap problems with xpm graphics on black and white displays.
ALLOW_SKILLS is now the default in the config.h file.
IS_SUMMON_SPELL macro fixed (= was supposed to be ==)
Artifact foods added by Brian Thomas. These are foods that can give some
nice benefits (stat improvements, etc), or be much nastier poisons.
Bug fix made to skill selection that would otherwise cause core dumps.
Bug fix made to query_cost that would cause core dumps if the alchemy spell
was used.
Fixed bug in dimension door that would cause core dumps if cast from a
wand.
find_target_for_friendly_spell fixed to use the get_owner call instead of
referring to op->owner (get_owner should always be used.) Fixed core dumps
that were caused when the owner would be killed, but still have a pet
monster (vampires as an example.) get_owner makes checks to make sure
the owner still exists.
Only set the windows colormap if on a color display.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.8 to 0.91.9:
Changed some parameter names from spell to spellnum. Some compilers don't
like parameter names that match structure names.
Alot of skill code added by Brian Thomas.
Assume that Suns running solaris have strncasecmp. Also, if using
Xpm_Pix, assume the strcasecmp is available (the Xpm library should
provide it.)
get_player_ob function now uses the CALLOC define, instead of just
calloc.
When dropping items onto objects that blocks view, they now fall below the
object that blocks the view.
XPM mode now works with private colormaps. It will also switch to a private
colormap if it runs out of color during the xpm creation (works for
crossedit also).
Don't let players put starting equipment into containers.
A bows weapon class (WC) is now used to determined hit probability for
arrows.
When a player dies (in NOT_PERMADEATH mode), the character is immediately
saved. Thus, if you die there is no advantage to crashing the server,
hoping for a copy of your character from before you died.
Set the value to 0 for arrows created with the create missile spell.
When transferrance is cast excessively, don't hit the person receiving the
spell with 9999 points of physical damage (otherwise, spell can be used to
kill many powerful monsters.)
Made some changes to make it compile properly under Solaris.
Fixed bug in dropall that would cause an infinite loop if the player had
an open container.
Exits can now inflict damage on players.
Fixed middle mouse button missle attack. Now clears the fire_on flag.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.7 to 0.91.8:
Messages about an objects speed no longer printed to the console.
When players exit maps, no longer inform all the other players.
install-same and install-font directives added to lib/Imakefile - used
if game is being installed to same font it was unpacked in.
Client now supports receiving bitmaps - server does not support
sending them, however.
Max experience achievable is based on max level, not a hard coded
value (although, at present time, max level is hardcoded to 100)
insert_ob_in_ob now returns an object - needed for client/server code.
check_inv function added to button.c. Trigger will be altered depending if
the character has a matching item (or lack of a matching item.)
Option added to config.h to make it so that backup saves will save the player
back at home, instead of the present map. Code adapated from code sent
by John Steven Moerk (jsm@axon.ksc.nasa.gov)
Minor bug in crossedit fixed that would cause it to exit if both
-p and -xpm is specified. Both can now be specified - it will effectively
ignore the -pix portion.
New skills added, with corresponding code to use these skills (from Brian
Thomas) Use of skill code is selectable in the config.h file.
Two new spells: summon fog and steambolt (from Brian Thomas)
Enchant armor code added (from Brian Thomas)
Fixed bug in crossedit that would cause it to core dump whenever a non exit
was selected and then the enter command run.
Fixed bug in attack.c that was using info_all if CASTING_TIME was
selected.
Made it so that decrease_ob_nr will never decrease the object number below
0. This fixes a bug in that remove_ob would calculate a negative weight,
and then call sub_weight with that negative value. This ended up resulting
in weight being added to the player instead of subtracted.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.6 to 0.91.7:
Item saving throw changed around - items are only invulernable to attack
types that they are protectected or immune to. For example, if an item is
protected from magic, and is is by AT_FIRE | AT_MAGIC, it still needs to save
against fire. Before, since it was protected from magic and the attack type
includes magic, it would not have been affected in any way.
insert_ob_in_map_simple function added. This is used in functions that what
to examine all the objects on a space, yet insert new objects as it goes
(polymorph). This function will not merge objects, so traversing the stack
will work fine. Should fix removing removed object bugs that used to happen
for polymorph (function should be used in other functions that do a similar
thing)
Damage field in objects is now 16 bits (signed). Needed because some
high level spells would do more damage than could be stored in signed
8 bits.
The 'old' client program no longer compares versions - there is no reason
to, since the client doesn't do anything that requires an exact version
match.
Better handling of the Eutl library added - selection is now done
in crosssite.def.
Large lake faces expanded - now set up like walls, where auto join works.
walls pick file expanded to include this image series and some other walls
that were not previously set.
Pacify spell added - code from Brian Thomas
Show invisible and X-ray spell added (code by Peter Mardahl)
Face data is static - that is to say the the color for any face can not be
changed. In order to do a face with a different color, a new face needs to
be created (or perhaps linked to the old). This change was made because for
client/server communication, having a known color for each image greatly
simplify things (also, on monochrome or XPM displays, color information
didn't have any effect). Related changes:
1) color information is no longer stored in the archetypes file,
but continues to be stored in the individual .arc files. collect.pl
has been modified to store this information in a faces file.
2) visibility variable added. This is a face value, and it is meant
to take the place of the DOUBLE_FLOOR_PATCH. System will work like
this if DOUBLE_FLOOR_PATCH is enabled: the floor and the object
with the highest visibility + the top object will be drawn.
3) color can not be changed in maps - in fact, since color is now
stored in a different file, the color handling for objects has been
removed. Note - when loading a map with crossedit, this information
is silently ignored. Thus, when then saving the map, the color
information will be lost. The maps should be updated with new faces
if this color information is imporant. The lib/adm/map_info perl
program now will print out warning messages for maps that are using
color changes. Also, the code in loader.c can easily be changed to
print out when it loads a color change (disabled because it is too
verbose for most uses)
PLAYER_COLORS config option and code support removed - with new static face
information above, this can not be supported in any real way.
Shop buildings no longer have is_floor set. This was a hack for the
DOUBLE_FLOOR_PATCH for XPM mode. However, enabling it can make it so
objects disappear beneath the shops (due to the way maps save.) Having
objects not disappear is much more important (IMHO) than having things look
just a little bit nicer for XPM mode. Archetypes exist for it, but are in
the dev/unused/0.91/7/mood_floor directory, since no maps presently use them
Mood floors added (code by thomas@nomad.astro.psu.edu). When activated,
these floors can change the mode/flags of monsters (make them aggressive,
make them unagressive, make them fall asleep, or charm them)
New output mode in place - this uses a much smarter buffering method - it
keeps track of several messages, and how often they are flushed is setable
with the output-sync and output-flush commands (a help file does exist).
All the various draw/write functions have been cleaned up, so that there now
exists only 1 front end function (new_draw_info), which takes flags,
priority, object, and the actual string. The flags are defined in
newclient.h, as NDI_* (in this file because client should use the color
flags sometime in the future, and it makes sense to keep all the flags in
one place). Priority corresponds to the listen level that the player has
set - the lower priority, the more likely it will be printed.
Certain runes/traps now work properly (things like create bomb and magic
draining would not work if the player is not on the same square as the rune)
When a player kills a window, the players objects will be destroyed
and not placed on the map.
Scrolls, rods, wands, and staves will always be at least level 1.
Beefed up demilich's. Previously, for the experience they were worth,
it was much to easy to kill them. Main difference is that now their
speed is 0.25 compared to 0.06
Fixed minor bugs with player movers - if the object to be moved had a
speed greater than 1, it was possible to avoid all affects of the mover.
Objects that slay are fixed up. Previously, only if the race matched the
slaying type did it work. Now, in addition, f the race of archetype name
matches the slaying, the object will slay. This fixes stakes, and probably
a lot of other items that weren't slaying creatures properly.
Changed some of the stat bonuses/penalties for all the classes. All the
'normal' races now have a net total of 0 (fireborn, wraith, and quetzalcoatl
are not considered normal races, so their totals are unchanged.)
Some of the items in the artifacts file have been fixed up - fixed
spelling errors and errors in placement of the difficulty.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.5 to 0.91.6:
When player stops attacking, make sure his speed_left is not larger than his
normal speed. Fixes a bug where you could attack a wall, then try to attack
in another direction, and move quite quickly for a short time, since weapon
speed would be used for that short burst of movement.
Drain attacks become attack type physical when the character reaches the
mininum experience possible.
Do not allow equipped weapons to be improved if they would make it too
powerful for the character to use.
errmsg buffer sized increased to HUGE_BUF. Should fix some bugs that
were causes when this was overflowed in dump_object2.
SOUND_EFFECTS (if selected) is now defined when compiling all files.
Previously, it was only set when compiling files in the server directory -
this had the effect that the player structure was different between the
server and common area.
speed+2 items now increase speed properly. Values in the computation were
not being cast to floats, so a speed+2 ended up giving the same amount of
speed as a speed+1 item.
Restoration changed around. The spell will no longer restore depleted stats
- this can only be done with the potion. The potion is now only generic
restoration - specific stat restoration potions removed. Also, perceive
self will now tell the player what stats are drained and by how much.
Reduce the amount of experience you get from killing other players to
1/10'th what it used to be. This should also discourage players from
killing other players.
SAVE_PLAYER removed from configurable options - it is always on. I can't
see why anyone wouldn't want to be able to use this, and if you really
don't want to use it, removing the save directory would pretty much
work.
Fixed dropall command. It wasn't dropping all items (seemed to
stop at first locked item.) Also, 'dropall armour' now drops
helmets in addition to shields and armor.
Fixed heroism potion. It was casting the incorrect spell (detect curse).
Now it casts heroism.
Fixed bug that would cause remove object to try and remove object. When
loading maps, an object in a container in a container would not be inserted
(this mostly happened with an object in a chest in an icecube.) Changed
code in load_objects to a recursive call, which can handle inventories any
number of layers deep.
Fixed bug in drop_all that would cause core dumps.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.4 to 0.91.5
Inventory icons are now updated properly. Also, the inv_name and look_name
arrays in the player structure have been redone - these are now arrays of
function pointers and use the shared string libraries to allocated and free
storage. This should take less space than the fixed size arrays that were
previously used.
When buying equipment, weight is now subtracted properly from the player
for the coins that are used.
Maps can now have a fixed reset time. This means that the map will reset
after a set amount of time, no matter whether it is accessed or not. Useful
for highly used maps that really need to be reset once in a while.
Bug fixed in get_ob_diff. The difference array would get overflow,
corrupting other data. Many core dumps were probably caused by this.
Fixed bug in legal_range routine where legal_range would only check to
first item of type BOW in a players inventory. This caused rotateshoottype
to not list the bow entry if it was not the first bow equipped.
Cloaks are not always turned into artifacts - normal cloaks can be found now.
Charisma bonus changed around some more. Penalties are not quite as harsh
for very ugly characters - with the change, a character will never pay
more than 10 times to buy something than to sell that same item.
Various functions changed around and some new ones added so things will
work properly with the new client (still under developement.) Most notable
changes were to common/xutil.c, with the newclient.c and newsocket.c
files added.
Unpaid items that are alchemied are now worth nothing.
TWO_BYTES_FONT is now a standard. I can't see crossfire ever going back to
having less than 256 images.
free map->tmpname when it is no longer needed (before setting it to NULL).
this pointer is assigned from a tempnam calls, which (on Sunos 4.1.x) uses
malloc to allocate space. Note - if this is not true for you system, let me
know, so I can put code in to handle this.
destruction spell (from scrolls) fixed. This was actually a problem
in that cast_spell was not setting the owner properly.
Magic mapping improved for bw systems. This actually makes it work like
it used to, with it doing stippling for object.
Casting of director spells changed. Placement away from characters and
underneath characters now possible
New potion type added - Improvement: This will raise level hit point or
spell point gain to the maximum value. It starts at the lowest level (ie,
first hit/spell points gained), and will raise one value to maximum.
Some patches added (From Manfred Weichel, manfred.weichel@mch.sni.de) which
should make compiles on SVR4 work properly.
New artifacts (in lib/artifacts file) added.
Configurable option: cone attacks no longer propogate through monster - it
will only hit the first row.
Remove curse/damnation changed so that it will not remove curses which
are a higher level than the spell caster.
Polymorph code changed around. Greater chance of items being destroyed,
value can never be greater than twice the original value, no mininum value.
Also, now the item value and not clone value is used, so things like
scrolls, wands, rods, etc should have the max price work correctly. magic
is not maintained, rather, magic*4 is used as the difficulty for creating
the new item, with max_magic of the new item never being greater than the
magic of the old item. The number of objects remaining after a polymorph
will be less than the original (10 arrows might become 8 bolts, for example.)
You will no longer attack players in the group you are in by running
into them.
Titles now restored properly from save files (only makes a different if
SET_TITLE is defined
When doing a save, check the return value of fclose when writing to tmp file
and the final file. If either of these writes file, use the backup file
instead (previous save file is renamed as a backup file.) Should prevent
problems when there are full filesystems of quotas in effect. The character
will not be saved, but at least an older save file exsists instead of the
character being totally gone (like before.) Patch from Laurent Wacrenier
<Wacren@Gin.ObsPM.Fr>
Plural names for items that have a 'of' in them is fixed/added. This mostly
deal with potions (so instead of potion of dexterys, you get potions of
dexterity) Patch from Laurent Wacrenier <Wacren@Gin.ObsPM.Fr>
query_cost changed around so that value for very low priced items are now
computed correctly. Before, the nrof of items was multiplied in very late,
and various divisions (for being unidentified) were done previously. For
low value items, this would result in a zero value. Zero values still
result for low priced items if you only have 1 or 2 of them, but if you
have 80 of them, a proper value is now generated.
Code to control golems (and in fact many summoned creatures) now fixed.
Help file added about golems. This also fixes a core dump that was caused
when a summoned creature was around, and another scroll was used.
Modified logger in common directory to no longer create a fatal error if you
get too many minor errors in and the editor is what is being used. Before,
occasional errors would be reported by the editor (mostly dealing with not
found archetypes in maps), which would eventually cause a fatal error. This
seemed erratic, because the editor never changes the tick, so loading one
map might result in the fatal error because of the error total from the
previous maps. Also, when using the editor, having missiong archetypes
probably should not be a fatal condition.
food value can be changed in artifact file. Food is mostly used to have
various meanings in different objects. The artifact file has also been
updated about everything that is changable, and what the values mean (ie,
docs are built into the top of the file as comments)
Weapons/armor no longer 'disappear' when a class that can not use such an
item tries to equip a group of them. That is, if a class that could not use
armor tried to equip 2 chain mails, one of the chain mails would disappear.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.3 to 0.91.4
FLAG_NO_FIX_PLAYER is set before saving the player, and cleared after the
player is loaded. Before, a character will full sp and hp could be save, and
when reload, not be at full strength. This is because fix_player was being
called during the load process, before all the characters items had been
loaded and equipped. This, the maxsp and maxhp values were that of the
character with no items.
Artifacts can now pass the various spell paths to the newly created
artifact. The values are or'd with the previous spell path values of the
object.
The artifact file now supports objects with name NONE. If this object is
rolled up when trying to generate an artifact, then no artifact is
generated. This allows for better tuning the chances of having certain
artifacts, by just reducing the chance of having an artifact at all. The
'type' field of the Object in the artifact field is still required, but any
other fields for the artifact object are not used.
Crossedit fixed so that all the images do not appeared inversed when being
used on a monochrome display.
Changed common/xutil.h so that XPM mode will work on monochrome systems. In
fact, XPM mode should now work on all systems, previously, the load process
tried to create a pixmap 8 bits deep. If the X server did not support it,
errors would result. So while playing in XPM mode on monochrome may be
pointless, this allows play on systems where it may have some use.
libproto.h and sproto.h only check that __STDC__ is defined. Previously,
__STDC__ had to be nonzero, and not all compilers set this. Also, in
global.h, if __STDC__ is not defined, return an error. Many compilers do not
allow _STDC__ to be redefined.
Updated changable variable in crossedit. Now the various spell paths can
be set in the editor.
SPEED_GAME now standard compile option, and not selectable. Having it as
an option seemed to create more problems than bugs non speed game found.
Crossfire man page updated. xledit.man changed to crossedit.man, to
reflect the name of the program it represents.
crossfire.doc updated with more information - mostly about new objects
added to the game.
More help files.
Objects with type CREATOR were added. The objects, when applied, create
other objects. Documentation in crossfire.doc.
Object that cast spells (rod, scrolls, wands, and horns) now have a level
associated with them. This level is used to determine at what level the
spell should be cast, instead of using the owners level, which was typically
used before (allows creation of super powerful wands/rods/horns, but having
them be a very high level.)
Bow, crossbow, bolt, and arrow code redone by Tero Haatanen. This cleans up
the code, and allows for magical arrows and bolts.
Race can now be changed in the artifacts file.
A spell of Banishment has been added.
Attacktype AT_DEATH is now more potent when if against a monster that
the item also has slayign capability against.
Bug fixed to prevent players from getting infinite experience for finding
the same trap. Also, experience changed for disarming traps.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.2 to 0.91.3
Changed artifact structure so that items with a chance greater than
255 are now possible.
Object now put into icecubes when hit by a cold spell, like before. This
probably got messed up in the saving throw re-write, where objects had to be
either immune or protected from cold to be put in icecubes. In fact, the
reverse was supposed (and now does) happen. IF an object is
protected/immune from cold, it is also immune from being put in an icecbub.
Fixed up is_magical and need_identify routines to handle more items. Rods,
scrolls, and spellbooks are always considered magical in nature. Wands and
staves are magical if they still have charges. Also, fixed up so that some
of the Artifact items are now detected as being magical.
If player lacks sufficient money to buy from shop, it now prints how much
short he is in standard english string, (ie, 2 platinum 3 gold,etc), instead
of gold.silver format (lacke 44.25 gold).
Inventory drawing changed. Should be a little more efficient, and be more
efficient on drawing. With auto pickup modes (that pick up more than one
item), inventory will be drawn after all applicable items have been picked
up, instead of after each one.
Item status is printed next to item image in players inventory if
SHOW_INV_ICON is selected in the config.h file. It would be nice if better
imagines were designed for the status (right now, just words are printed
out.)
When connecting to the server, a one line welcome message is printed.
Crossclient was modified to ignore this line if it starts with 'Welcome', so
changing it may cause problems with crossclient.
Potion of restorations are now handled by means of different archetypes and
treasure lists, instead of having special code in the program to handle
them.
If a RUNE is found in an object inventory when free_object has been called,
remove the rune instead of dropping it to the ground. This is so that traps
(runes) disappear when the object they are placed on is destroyed.
Doors are now trapped, and be detected & searched just like chest
traps.
Map difficulty can now be set in the map, and not be calculated at map load
time. Crossedit has been modified so that 'Attributes' now contains a
difficulty field, and if set, this will be used when loading a map (it is
stored in the level field of the map). If this value is 0 (default), then
the old formula for calculating the difficulty will be done. The advantage
of this is that map creators can now set the difficulty of the map more to
their liking, and certainly do a better job than the program can do.
Pickup by value density fixed. The number of items is now taken into
consideration (before it did not, so a lot of arrows would be picked up,
because the total value divided by the weight of 1 arrow was greater than
the pickup value.)
Bug fixed in query_cost. Before, for F_TRUE value, unless the item was
worth more than 10,000 sp, F_SELL value would be calculated instead of the
true value.
Merge several small files in common.c into one file called porting.c.
porting.c contains common functions that are called by crossfire. This
allows system dependent code by be in one file, instead of scattered
throughout the program.
-listen_port <num> command line option added. num is the port to use for
connections, instead of the default (13326)
Instances when a variable name is the same as a structure name have been
fixed (by changing the variable name). On some compilers, this is a
problem. I can not be sure that all such cases have been fixed, as I have
not found a way for gcc to create warnings in this situation.
Random happenings when a spell fails due to encumbrance has been added.
This option is configurable in the config.h file.
Trap code added. Chests and doors can now be trapped. 'search' and
'disarm' commands added. old 'search' command was changed to 'search items'
Inventory locking added. Makes it so that items can be locked in a players
inventory, and will not be dropped when a 'dropall' command is issued.
'inv-lock' and 'inv-unlock' commands were also added.
'gsay' command added for party mode.
Spellbooks can now have their slaying field set to the name of the spell
that the spellbook is of.
Debugging output disabled in crossedit. It produced copious amounts of data
that has little relevance except for the developers. It can easy be turned
back on by editing the crossedit/include/debug.h file.
Artifact gems (worth lots of money) and amulets added.
Invisible object now appear in crossedit. Fixes a problem, but now makes
use of the global 'editor' variable, making it likely it won't be obsolete
any time soon.
Artifacts (in artifacts file) can now have nrof field that will be used to
generated the number of items instead of the treasure list. If the nrof in
the artifact is 0, then the standard treasure list nrof is used instead.
Artifacts can now grant reflect missile and spell ability. Also, by setting
stand_still, the objects will not be animated.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.1 to 0.91.2
Some options now standard part of game (SHOP_LISTINGS, Line of Sight). The
config.h (for this release) contains these options, but they are commented
out with the note they no longer do anything.
Changed value pickup to pick up things based on true value, and not sell
value. True value is how much the item is worth without applying charisma
bonuses. Before, if two different characters used the same pickup mode,
different stuff could be picked up because of charisma differences (or even
if a character gained charisma, the same pickup mode may not work as it did
before). By using true value, pickup mode operates the same between all
characters,
Items of type TREASURE can now have their experience set, and this will be
used for the difficulty of the generated treasure instead of the map
difficulty (as was done with shops). If experience is not set, then the map
difficulty will instead be used (or 14 in the case of shop floors).
Cure poison actually cures it, instead of reducing the duration.
Don't use fseek when loading in map files. Some systems do not support
fseek on pipes (which are used for compressed files). Instead, just
set the variable with the data we read, instead of seeking back and
re-reading it.
Transferrance spell changed so that supercharging will have bad effects
(first confuses the player, then a large fireball is created (with player
losing all spellpoints)
Poisoning made more vicious - it does more damage based on the level of the
creature that uses it (level/2 in fact). This makes it so that very tough
creatures that poison someone will have the poison do serious damage.
Also, damage caused is no longer random.
Chests can now contain multiple items. Code changed to handle this
properly. Treasure is also always dropped on the floor (Even if the chest
is in an objects inventory.) hp field used in chests (and in fact all
treasures) to determine how many objects to create (thus, a chest with 3 hp
will have 3 objects created).
Crossedit now draws a rectangle around the selected area. Reversing the
color of the images did not work in XPM mode.
Have client.c include "includes.h". includes.h sets up all the name defines
properly (ie, __sgi__, __sun__)
SP_* functions changed (by Rupert Goldie) to take an object pointer instead
of a level value. This makes adjustments for spell costs (via stuff like
spell paths) easier to make, because now only the SP_* functions need to be
changed. With the object structure, checking for known paths (or perhaps
other things in the future) can easily be done.
Bombs will now be dropped before exploding.
New attack type (God Power) added. The cleric cause wound spells use this
attack type.
Charm monster spell added.
Party system re-written by Scott MacFiggen <smurf@soda.berkeley.edu>.
Characters will now only share experience if on the same map, and other
features were also added.
Modified check_item function (used in creating weapons with the improve
scrolls). The objects being sacrificed do not need to be in one group (ie,
two groups of 4 potions of dex will now be counted as 8 potions). This only
applies to potions, since some can be identified and others not identified.
Also, cursed or damned items will not count towards sacrifice count
(although, they will be consumed).
Changed way cancellation works on items. Before, if cancellation hit a
player and the player failed the saving throws, the items got no saving
throw versus cancellation (only if their absolute magic value was less than
RANDOM()%6 did they survive). Now each item gets a saving throw. Note that
if a container makes a saving throw, then the items inside do not need to
make saving throws and are unaffected.
A separate function did_make_save_item was split off from
save_throw_object. did_make_save_item justs checks to see if the item made
its saving throw based on the tables (and any protections or immunities
grants it an automatic save, as before) save_throw_item calls this function,
and in addition, does the appropriate actions (burns up items, turns them
into icecubes, calls cancellation, etc.)
Saving throw method changed. Before, each item got 5 chances to make a save
for each item it is composed of. Now, it gets one chance for material it is
composed of. Then, based on the number of saves it made, and the number
materials it is composed of, an overall made save/failed save is
determined. This change is to make it easier to figure out saving throw
values, and hopefully make adjustment easier.
Saving throw tables updated. In general, each item is +5 compared to what
it was before. This should hopefully make it so that items have about the
same success rate they did before.
Crossedit modified to preserve value of connected field when cut/copying and
pasting. Before, an object that was copied/cut would also have its
connected field reset to 0.
More XPM images colored. Filenames for the river directory have been
re-done, to actually make it a bit clearer of what does what. The archetype
names were not renamed however, to keep compatibility.
World expanded. Another row of maps was added to the southern edge. The
world maps were also renamed to a world_xy format, where x is a letter
and y is a number. This represents the x and y location of the map, making
it easier to figure out how maps related to each other.
Map spaces can prevent magic user spells, cleric spells, or both. Before,
an anti magic square prevented all types of spell casting.
Have monsters regenerate spell points even if they don't cast a spell.
Monsters have a 1:3 chance of casting spells, irregardless of any other
factors. Before, spellpoints would only be regenerated if it got past this
check. Also, some monsters (dragons, chinese dragons) have had their max
spellpoint and regeneration rates increased to correspond with the higher
cost of casting their breath weapons.
Altars now will also match on the slaying field of the object being
sacrificed. This is similar to how keys and special doors work. With this
change, it is no longer required to make a unique item that then needs to be
sacrificed (ie, the dagger, the cup, and the crown for the old city
quests). Instead, a cup, and crown can be used, with the slaying field set
appropriately (unfortunately, will not work for weapons, as it will think
that is the monster to do extra damage against.) However, the altar code
always did match item name, so calling it something special like 'The
Dagger' and have the sacrifice look for that should also work.
Spell encumbrance code added. More you are carrying the higher your
chance for failure.
------------------------------------------------------------------------------
Changes from Crossfire 0.91.0 to 0.91.1:
Fixed bug in the enchant weapon code. It was not allocing enough
space for the string, and thus would corrupt the heap.
Minor fix to spells.c. IT was using strdup instead of strdup_local,
which caused the compile to fail on some machines.
No longer gets errors when adding a player on a map that is not
loaded in a multi player game. Before, process_events would see that
the player has no object, and could get enough errors to cause the game
to quit. Now, it suppresses errors if it is only loading objects
for that map.
Default map difficult for treasure that is created in shops was changed from
9 to 5. In this way, the likelihood is higher that good items will be found
in dungeons, not in the shops (there are very few items with difficulty
above 9)
Archetypes cleaned up. All archetypes that were not being used in a map
were moved to dev/unused/0.91.1. Note: There are still a few archetypes
that are not used in any maps, but these are part of a collection (ie, one
section type of a wall). This was done really because there is no reason to
have archetypes that are not being used to be in the official distribution.
It could be misleading for people looking through the arch directory (ie, 'I
thought I looked at all the maps, but never saw this monster'). Also, I
have no problem moving these archetypes back in, once some maps actually use
them.
'grass' and 'sea' are no longer animated. There are a few reasons for
this: 1) The animations never really were that interesting, 2) being
animated put them on the speed list, and being that over all, they are the
second and third most used objects, this is a performance hit, and 3) With
pixmap and xpm images, re-draws are only done on squared the have changed
(really improves performance). However, with them being animated, they
often changed, so that more re-draws were needed. The old archetype and
image files are in dev/old (in arch distribution) if you actually want to
use the animated versions.
Put a limit of 70 on damage bonus for weapons.
Treasure lists expanded. The old treasure lists (in treasure.c) have been
removed, and treasure lists added to the treasures file added to take their
place. The treasure file has been expanded have list transitions, and
treasure lists in which 1 object on that list will be generated. Archetypes
(shop, random, and chest) updated to use the randomitems field to determine
what treasure list to use to generate the items. Advantages of the new
method: Ability to better tune treasure probabilities, re-compiling not
necessary in order to update treasures. the create_treasure function was
modified to add an extra argument - this is used to keep track of how many
times it has been called on this attempt to create a treasure. In this way,
infinite loops (with list transitions) are avoided. Generate treasure
replaced with a simpler function that calls create_treasure, and returns the
object. create_treasure takes a treasurelist instead of a integer
treasurelist number, like it did before. The crossfire.doc file has
been updated about the new treasures file capabilities.
Chests are now created with their treasure as their inventory (this mostly
happened because of the treasure changes above). Advantage is that when a
chest burns up, its treasure may remain (or may be burned up). Before, when
a chest was burned up, its treasure inside was not created.
Rolling multi-part objects should now work better (not perfect, however).
Carrying an open bag with a mode that picks everything up will no longer cause
an infinite loop.
Crossedit changed to draw selected areas as a black box. Fixes some problems
with display in XPM mode.
Fixed bug that would cause game to crash when pets were summoned. Problem
was an infinite recursive loop, that would then cause the system to run out
of stack space. Solution is to decrease the speed_left of the object before
one of the function calls. This makes it so that at some point, one of the
functions will not be called.
When a rune is cast, use the s->archname for the archetype name, and
not hard coded strings. Cured a bug with rune of transference. Also,
allowed several case statements to be merged. Really, no archetype names
should be used in spells.c, when casting spells. The archetype name should
be gotten from the spell structure.
If a button is being updated on a map that is being saved, just return
from the function. Prevents errors 'object has speed but is free'
Fixed bug that caused objects that got a speed_left of exactly 0 to
be frozen. This was because speed_left >0 to have the object be processed,
and <0 to have speed added. Now, speed is added if speed_left <=0.
Some minor changes made to hopefully make it compile on AIX systems without
any modifications.
process_active_maps now called when a map is being loaded. It should
hopefully work properly, since enter_exit was modified to not use any
static variables. Also, process_events was modified to take a map as
an argument, and if non null, only update objects on that map. That makes
process_map obsolete. process_active_maps was also changed to still process
even if there is only one player.
Crossfire should let players still perform actions when a map is being
saved. Problem is, handling a map that is in the process of it being
saved, and having a character enter it. Crossfire needs to finish
saving that map, then re-load it and insert the character. Large changes
to how player interact with loading & saving of maps would probably
be needed, and probably should be done.
You no longer lose luck if you kill yourself, and the player who kills another
player now loses the luck (before, the player killed would lose luck).
Now inventory display modes - unpaid, cursed, magical, nonmagical. All pretty
self explanatory.
------------------------------------------------------------------------------
Changes from Crossfire 0.90.5 to 0.91.0:
Some new maps added to the standard distribution (Magara and some of
the esben maps). Magara was added as a place to depart to by ship, the
esben maps were merged in as new buildings or towers on existing maps, not
as a new continent.
Keyboard buffering is now selectable via 'keyboard' command. Before,
an attempt to remove keystrokes from the X Events queue was made, but could
not always remove all of them. Now, it should remove all of them, or none
of them, depending on the keyboard buffer setting. The value will be
saved with the player.
Pickup mode value now saved and restored from the characters save files.
Inventory and look window should only be re-drawn once when selling
an item.
Calls to draw_stats in common/living.c will only be made if the object
type is a player (should prevent some warning messages)
Fixed create earth wall spell so that it uses bdur as the base hit
points of the wall (instead of bdam). This will prevent some core dumps,
because otherwise, the wall can have 0 hit points.
Program should not core dump when person quits that game and the map he
is on has been swapped out. (ie, person saves or quits the character,
but the map gets swapped out before they type 'q' to the play again
question)
Word activated teleporter code added (Peter Mardahl).
Who can become DM, based on their user id, can now be set in the dm_file
(assumed to be in lib.) (Tyler Van Gorder)
Tell should now work properly (Eric Mehlhaff)
Cloak code added (Peter Mardahl)
Objects can not grant invisibility, make_invisible variable added to
archetype files.
Added information to the crossfire.doc file (was missing several
attack types and materials). Added better information on what some of
the flags do. Noticed that will_apply 4 applied for both scrolls
and earthwalls, now only applies to earthwalls. To have a monster
use scrolls, can_use_scroll should be used instead.
Code added to deny users or sites from connecting. This is to prevent
users who intentionally crash the server to connect and start up a window,
which they then crash the server with. Patches from Tyler Van Gorder.
Two floors will can now be drawn when using XPM mode and this options
has been selected in config.h This allows for towers to sit on top of
grass to look proper. From Gregor Schmid <schmid@fb3-s7.math.tu-berlin.de>
Patches that modified 'create food' spell. Better food (ie, waybread)
will be created at higher levels, and the caster can also specify what
type of food to be created. From Peter Mardahl.
Spell paths added by Rupert G. Goldie <rgg@aaii.oz.au>. Simply put,
each 'spell path' contains a certain category of spells. Objects and
races can be attuned, repelled, or denied certain paths (objects would
apply the the person wearing them). Attuned allows casting of spells in
that path at lower cost and greater efficiency, repelled paths are cast at
a higher cost and lower efficiency, and denied paths can not be cast at all.
Thus, a wand of small fireball that is attuned to Fire would cast more
powerful fireballs. A character wearing a ring that is denied the path
of fire could not cast fire spells at all. Right now, no items will
be created using these features, and no characters have any of these, but
these might be added in the future. Look at the spell-paths file in the
doc directory for a little more information.
Pickup mode 6 (pick up magical items) will not pick up known cursed items.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Object structure and process_events changed. Now, a separate list
us used to keep track of active objects (objects whose speed is nonzero).
All objects on the active list are still on the normal list, but
process_objects only needs to go through the active_list for objects
to process, saving a lot of time. The cost is adding two
pointers (active_next and active_prev) to each objects. But the speed
gains are well worth the minor memory cost. the 'malloc command
was changed to display the number of objects on the active list -
note that there is zero memory usage for these, since these objects
are also on the normal object list.
Programming note: Any time an objects speed is changed (doesn't
happen too often), a call to update_ob_speed(object *) must be
made, so that the object can be added or removed from the active
list, as appropriate.
In testing, I first ran crossfire, with process events using the
normal object list, and printing out error messages if it found
objects that had speed but were not in the active_list. I cleared out
a couple warehouses in Navar without any errors.
Then, I switched to using the active_list, and printing out errors if
it found objects on that list with zero speed. I cleared out the
mages tower in Navar city without any errors.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Selling items now works properly (it only failed to work if
AUTO_SAVE was not set previously, and the value of the item was
beyond a certain amount.)
Look window code changed so that it does not erase the unused area
unless necessary. Also, when a player moves, freeze_look is set.
This was changed because the functions that move_ob calls update the look
window, and the window was being updated 3 times each time the player moved.
When poisoning ends, it no longer core dumps.
Inventory window updated if reading an unidentified spell book and you
already know that spell.
Casting rune spells now works properly.
Spells now (once again) sorted upon loading of characters.
------------------------------------------------------------------------------
Changes from Crossfire 0.90.4 to 0.90.5:
Bug fixed with window titles getting their names changed. (Tero Haatanen)
Container code changed around. Containers can be locked, they can be used
from the ground. FLAG_CONTAINER removed, since there is already a type
container, and bonus removed from object structure (Tero Haatanen)
insert_ob_in_ob sorts objects, so items with more magic are before those
with no magic bonuses even for unidentified. It also uses the absolute
value of the magic, so it should be a little more difficult to know if the
item is cursed or not.
Added unique-flag and UNIQUE_ITEMS define. All items which have unique flag
are saved to directory .../lib/unique-items. A filename is mapname + ".v" +
number, where number is normally 01, but if two or more server is running
same time it can be also greater. This feature can be used to banks and
inns to save permanently items. The code is one limitation: if map contains
unique item which can be carried away from map (e.g. an unique excalibur)
there must be at least one unique item on map which can't be carried away.
This is because unique items are loaded from original map only if unique
items file doesn't exit. If all unique items are carried away from map then
they are loaded back next time when someone enters that map. This should
not a problem if map makers remembers this. (Tero Haatanen)
Editor by Jarkko Sonninen. He added toggle button into attribute window and
made map's reset time and timeout so that they can be configured in maps. He
also fixed map archetype, so that map default stating coordinate is (2,2)
like before. This seems break a gatehouse map, where it use default value
on map (changed 0 to 2), but it's easy to fix.
Change check_walk_on (common/object.c) so it no longer calls the draw_func.
This eliminates a problem of seeing flashes of areas that should be blocked.
This is because the draw function it called would re-draw the game window
before the variable to re-calculate line of set was set. As I see it, this
function call was not needed in any case, because this is called during the
players movement. After the player moves, the draw function is called from
the process_events (now process_players1) function. This should also
conserver a little cpu time, and bandwidth.
Coin code in shop.c changed. Patch from Kjetil Torgrim Homme made it so
that coin value can be changed in archetypes and the shop code should still
work properly. I made changes so that the number of coin types is set with
a #define, making adding new coin types easier.
AUTOSAVE, SAVE_INTERVAL, and NO_EMERGENCY_SAVE should now work properly.
See include/config.h for more information on these options.
Changed it so that updates to other maps will not be performed while
loading a map. This caused a bug if two players entered exits
at the same time. One or both of the players may end up in incorrect
locations, all exits in that location may be closed, etc.
Saving throw table expanded to handle all materials and attack
types (Peter Mardahl)
Fixes so that Turn Undead does not do physical damage (Peter Mardahl)
Patch to make it impossible to prepare multiple weapons at the
same time (Peter Mardahl)
Added 'sea1' archetype. This is the same as the sea archetype, but allows
for walk on. Its purpose is to use for backgrounds behind boats and similar
objects. Because it will probably be needed in so many places, I decided to
make an archetype, instead of editing the variables inside crossedit for the
object.
Removed xbm_values array. This was used to map a face number to that face
location in memory. Since the bmaps file is created automatically without
any holes, this is not longer necessary.
Archetype for wonder spell now in place. This will prevent core
dumps when the spell is cast.
Pixmaps will now be freed upon exiting Crossfire. They will also be freed
after emergency saves are performed. This fixes the problem that some
X-Terminals would not free the memory used the the pixmaps otherwise, and
run out of memory. This fix pertains to both -pix and -xpm mode.
Patch to hopefully double death problem/core dumps with NOT_PERMADEATH
mode.
Changed the size of the temporary string that is used when loading
messages. For a few very long messages, 1024 bytes was not enought.
Patches put in Crossedit to allow for XPM mode. From Petri Heinil.
Cleaned up the code for look window. Now, everything agrees (ie,
when you click on something in the look window, it is actually
that object.) Likewise, invisible objects are not displayed
anywhere. This should also fix a bug of not being able to enter
some building by clicking the middle mouse button on them.
Added help file for pickup. Explains the 8 basic pickup modes
plus the value-density pickup mode.
Detect magic will detect magic on all items in a stack, not just the
top object.
Spells fixes (From Peter Mardahl):
1) Identify modified to identify items on the ground if inventory is
identified.
2) Detect magic spell finds magical runes and makes them more visible
3) AT_CHAOS and AT_COUNTERSPELL reimplemented so that they are not
treated as special cases by the move_cone function
4) Magical walls created by spells (firewall, frostwall, ....) are
fixed
If a map is reset, that map is then removed from the list of map objects
(what you see when you type 'maps ). This way, the 'maps commands only
displays maps that are reasonably active. This change should also save a
little memory.
make depend now descends into crossedit/Cnv to depend there.
Changed some of the colors in the xutil.c file. This is so that it uses
the same colors as the official colors for XPM files. It would have been
better to make those colors part of the official XPM colors to start
with, but it is a bit late to do that now. The change of the xutil.c file
was made so that crossfire would not use quite as many entries in
the colormap. The change in colors should be quite minor.
Two new pickup modes added - one picks up all money and gems, the other
all magical items.
Removed a lot of dead code from the various header files. removed
hiscore.h from distribution (wasn't declaring anything that was not
being declared elsewhere.)
------------------------------------------------------------------------------
Changes from Crossfire 0.90.3 to 0.90.4:
Many more XPM images now properly colored. NOTE TO COLORERS: A few minor
changes have been to the xpm.template file (palegreen has been replaced with
green3, and a more medium orange has been added.) I replaced palegreen
because it was very close to the 'green' color already present. And a
medium green was lacking. A medium orange was also lacking, so I added one
in.
New pickup modes, that can be based on value density (from
Peter Mardahl <peterm@soda.berkeley.edu>)
Spells now have a casting time. (From Matthew Zeher <matt@cs.odu.edu>)
Added libproto1.h file. This will be used for function prototypes
are affected by certain settings (ie, SPEED_GAME). This way, people
should not need to run 'make proto'
New XPM loading method. Creates montage of the xpm files,
so that not as many calls to XPM are needed. This has reduced loading
time to about 30% of what it was before. Note: This done mean it takes
some more memory at start up, as the montage has to be stored
temporarily.
Changed charisma bonuses. At 30 charisma, it will no longer be possible to
buy an item, and then sell it for more than you bought it for.
Graphic exposures turned off on the GC's that are used in the game window.
Should improve performance.
When a raise stat spell ends, the proper message (ie, You look ugly, you
feel less intelligent, etc) will now be printed out.
If player NOT_PERMADEATH mode, and you die, a stat will only be decreased
one. Before, that stat was decreased one, and the max stat was set to that
value. So if the player was poisoned, or a stat was lowered due to some
other reason, that loss would become permanent. Now, both the stat and
orig_stat only gets decreased by one.
invoke.c removed, cast_spell modified to handle what invoke.c did.
Keep old shoot type if reading a scroll, instead of it being set to none.
Raise stats spells should be progressively more costly (From Peter Mardahl)
Should now be able to handle broken pipes without problem (ie, telnet
session closing unexpectedly). Made it so that listen level 0 on a socket
means that draw_all_sockets will not write to that socket. Crossclient uses
this so that it does not get unexpected messages, and thinks that it failed.
Added 'set font' option. This basically unsets color pixmaps or xpm mode.
If crossclient was run without -xpm or -pix mode, it will send this command
to use fonts. What this means is that set (font,pix,xpm) should set that
display mode. Before, the display selection it defaulted to for crossclient
seemed unreliable at best.
Fixed memory allocation problem in commands.c (it was writing to more
bytes than it had allocated)
Draw message window almost complete re-written. In an effort to cut
down on flashing of the the status bars. ( Niilo Neuvo <anipa@guru.magic.fi>)
More bug fixes for spells (from Peter Mardahl)
Fixed some bugs for compiling on the Alpha running OSF/1 1.3
------------------------------------------------------------------------------
Changes from Crossfire 0.90.2 to 0.90.3:
Added -xpm command line option to crossclient.
All spells should not be handled in the switch statement in spells.c
Let players buy zero value items from shop. This really shouldn't be a
problem, the only zero value items of any use might be wands with very
few charges. If someone wants to buy poison or cursed items, they should
be able to.
Fix spelling error of command line argument 'detatch'. It is now
spelled properly (detach).
Change draw_color_pix in server/xio.c. It now draws the images to an
intermediate pixmap, and then draws that to the screen. May or may not be
quicker (XSetClipOrigin only needs to be set once), but it does prevent
flicker. Also add two more GC's to the player struct, to make these
operations faster.
Unless XPM_PIX is defined, draw_color_pix will note be compiled in the
code.
Fixes to make it compile on both Solaris and NeXT machines (hopefully)
Removed PLAYER_COLOR #ifdefs and lines they control out of login.c. Those
were not needed any more.
Added 'mapinfo' command to valid input commands.
Only have crossfire display -m as a valid command if it was compiled
with DUMP_SWITCHES set.
Changed install procedure to only copy those files necessary to playing
into lib. Also, don't install obsolete scripts into the bin directory
when installing.
-----------------------------------------------------------------------------
Changes from Crossfire 0.90.1 to 0.90.2:
Cleaned up the display from 'maps. Now things line up nicely. It
doesn't print the name anymore, and truncates the path at 18 characters.
But this doesn't make a difference for most maps, and now you can actually
see what variables are set to what.
Experience requirements changed. Initial values from Peter, but I changed
them to be more round numbers.
Change targets in server and crossclient from ComplexProgramTarget
to AllTarget, DependTarget, and NormalProgramTarget. This is because
ComplexProgramTarget expects man pages in those directories, which do
not exist.
Moved data initialization out of treasure.h and into common/treasure.h.
In theory, no data initialization should be done in the .h files, it should
all be done in the .c files, with the .h files declaring the appropriate
externs. Likewise, no .c files should have extern's for other data
functions, they should include the appropriate .h file to get those
externs declared. This would fix the problem of having to go through
the various .c files whenever one of the data structures change, to update
all the externs made to it. Since the compiler will check to make sure that
the extern in the .h file and the actual declaration in the .c file are
the same, it prevents errors of mismatched declarations (ie, having
something like char s[40][20], which at later point gets to
char *s[40], but some files still think it is supposed to be s[40][20].)
Changed doc/Imakefile so that make install.man will actually install
the man pages.
Characters that dies who were poisoned should have the poisoning
removed.
Changes from the Berkeley Folks:
What we've done that's in this server code that I know of:
--level dependency added to many spells.
--level dependency tunable on the fly by editing the spell_params
in the 'lib' dir and using the dm command 'spellreset' spellpoints
and spell level are also changeable on the fly.
--many new spells added
--protection spells can now superimpose, as can gain stat spells.
repeated applications of protective or stat spells yield diminishing
returns.
--runes added--an implementation of magical traps. any spell may
go in a rune. Read the documentation.
--new spell interface. invoke <spell> invokes that spell immediately. Some
spells can take parameters now. invoke magic rune <spell>
will store <spell> in a magic rune. invoke <spell> will not set the
range spell. cast and prepare are synonymous.
--Certain spells cannot be set as range spells now--less than 10 of these.
These are spells which no one would want to use more than once in a while,
like magic map.
--A hack to object.c in common dir which makes objects created by objects
with owners owned by the creating object's owner. (This allows players
to get credit for a kill with the meteor swarm spell, which creates a
'swarm' object, which in turn creates the meteor objects.)
-- End of Berkeley additions.
New maps and archetypes added.
Crossedit can now load maps that are compressed.
Add Solaris 2.x compile support.
Now prints out what the scroll name was that turned to dust.
Minor artifact changes (ring of ice is blue, ring of fire is red)
Horn range weapon now works properly, via using the + and - keys.
New input method (From Jari Vanhala <jam@modeemi.cs.tut.fi>). Looks like
it should now be possible to define keys to do most every command. Made
a few minor changes to default key file to make the present set up
act like the previous one.
Fixed triggers and magic mouth. These devices will now open gates
as would be expected. The problem was that the opening routine
expects to see the op->value of these to be one, in order to open the
gate or whatever. Changed routines to toggle value between 0 and 1.
Note: As I understand, trigger handles return to their original state, but
keep the same value. That is, you pull the trigger handle, the handle returns
to its original position, but gate opens. Pull handle again, handle returns
to same position, but gate now closes. Or at least that is how I implemented
the devices.
Make some more changes to the is_magical routine. Hopefully, it will now
detect all rings and amulets that are magical. Also, it should not
detect monsters (or any living object) as magical.
Fixed bug with Color Pixmaps (XPM). Would try to free the pl->pixmaps
area twice, causing core dump. Looks like the same thing should have
happened when using bitmaps also. In any case, only one free(pl->pixmaps)
is now performed.
Bug fixed with XPM code, in which 'floors' would appear to be
carried around with the player. This is because the players pixmap did
not change, and hence, it did not update that square. Now fixed.
Random encounter bug might now be fixed (patches from Frank)
New FLAG method used. flags in the object structure is now an array,
and SET_FLAG, CLEAR_FLAG and QUERY_FLAG functions are now used. This reduced
a lot of code in common/loader.c
Fixed bug in common/object.c in expand_objects function. Looks like
braces were missing from for statement, so the the prev and flag fields of
the new objects were not being set properly.
Fixed bug that could cause core dump if trying to print map message when
no message existed. (From Tero Haatanen <Tero.Haatanen@lut.fi>)
Starting character will have uncursed, undamned and identified items
at the start of the game. (From Tero Haatanen <Tero.Haatanen@lut.fi>)
-----------------------------------------------------------------------------
Changes from Crossfire 0.90.0 to 0.90.1:
Crossedit 0.7 was merged in with the 0.90.0 source. This once again creates
a common distribution.
I tried to retain the best features of both programs. This means that
the artifact code, and cursed/uncursed items (from CF 0.90.0) remain.
But I also used the filepaths for fonts, elimination of omaps for
internals use, and creation of partially processed bitmap file for
bitmap reading.
The general patch method was to keep the cf 0.90.0, and create a diff
file for crossedit 0.7 from crossfire 0.89.3. These patches were then
applied. Many had to be implemented by hand.
There are some exceptions. The crossedit program is almost the exact
same thing as in the crossedit 0.7 distribution. I made a few minor changes
to clean up compiling, but otherwise, no serious changes were made.
The archetypes (lib/arch) structure was also taken from crossedit 0.7, as
well as most of the archetypes themselves. I think the breakdown makes
things much easier to handle for changes or improvements. NOTE: it is
likely that directory (lib/arch) will not be in the standard distribution,
but will instead be a separate file (to keep the size down). The various
files (archetypes, bmaps, font, etc.) will be created for the distribution.
All new archetypes from cf 0.90.0 were merged into the structure, as well
as a few minor changes in the old archetypes I noticed.
The maps are from the crossfire 0.90.0-a-maps distribution. A few
simple programs (in lib/adm) were used convert them to use fontpaths
and to change some monster names that conflicted with character classes.
Note: Because in the old format, a 'food' field was used to determine the
map to link to, it is possible some of these fields were changed when
they were not supposed to be. This is because some other archetypes
(altars for one) also use the food field. If you notice any converted
by mistake, please let me know.
A few minor memory leaks and other patches have also been applied.
Other specific changes to this version:
'set' now gives better help message (like what can be set.)
XPM code added.
Fixed bug in 'who', which would cause a core dump if done when
another playing was still creating their character.
'who' also display the map path of the other players, and not
the map name. Map names seldom seem to be set.
The crossfire.cfb and crossfire.pix files (in lib) can be compressed.
Fixed bug that caused core dumps when pet monsters were summoned.
If restoring a saved game, and the map it was saved on does not exist,
start them on the standard starting level.
Added option in config.h, that allows full ring and amulet descriptions
to be printed in inventory and look window.
Hopefully fixed bug which caused game to dump core when player died,
if NOT_PERMADEATH was set on.
Add flag HAS_MAGIC, and use that for the detect magic spell. This way,
artifacts that have no magic, will still be shown as magical.
So will rings that change abilities, etc. Doesn't work
quite perfectly, but seems to work as well as the old method.
Fixed bug so that if it can not find a map, it just prints that
that exit is closed, instead of panicing.
Have it re-draw the look window when you middle click on something (ie
apply) in that window. This fixes a bug with bags/sacks, of it
not updating when an item is used directly from a sack.
|