File: ChangeLog

package info (click to toggle)
crossfire 1.75.0-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,168 kB
  • sloc: ansic: 83,169; sh: 4,659; perl: 1,736; lex: 1,443; makefile: 1,199; python: 43
file content (22932 lines) | stat: -rw-r--r-- 948,958 bytes parent folder | download | duplicates (4)
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
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527
14528
14529
14530
14531
14532
14533
14534
14535
14536
14537
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
14604
14605
14606
14607
14608
14609
14610
14611
14612
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625
14626
14627
14628
14629
14630
14631
14632
14633
14634
14635
14636
14637
14638
14639
14640
14641
14642
14643
14644
14645
14646
14647
14648
14649
14650
14651
14652
14653
14654
14655
14656
14657
14658
14659
14660
14661
14662
14663
14664
14665
14666
14667
14668
14669
14670
14671
14672
14673
14674
14675
14676
14677
14678
14679
14680
14681
14682
14683
14684
14685
14686
14687
14688
14689
14690
14691
14692
14693
14694
14695
14696
14697
14698
14699
14700
14701
14702
14703
14704
14705
14706
14707
14708
14709
14710
14711
14712
14713
14714
14715
14716
14717
14718
14719
14720
14721
14722
14723
14724
14725
14726
14727
14728
14729
14730
14731
14732
14733
14734
14735
14736
14737
14738
14739
14740
14741
14742
14743
14744
14745
14746
14747
14748
14749
14750
14751
14752
14753
14754
14755
14756
14757
14758
14759
14760
14761
14762
14763
14764
14765
14766
14767
14768
14769
14770
14771
14772
14773
14774
14775
14776
14777
14778
14779
14780
14781
14782
14783
14784
14785
14786
14787
14788
14789
14790
14791
14792
14793
14794
14795
14796
14797
14798
14799
14800
14801
14802
14803
14804
14805
14806
14807
14808
14809
14810
14811
14812
14813
14814
14815
14816
14817
14818
14819
14820
14821
14822
14823
14824
14825
14826
14827
14828
14829
14830
14831
14832
14833
14834
14835
14836
14837
14838
14839
14840
14841
14842
14843
14844
14845
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881
14882
14883
14884
14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909
14910
14911
14912
14913
14914
14915
14916
14917
14918
14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938
14939
14940
14941
14942
14943
14944
14945
14946
14947
14948
14949
14950
14951
14952
14953
14954
14955
14956
14957
14958
14959
14960
14961
14962
14963
14964
14965
14966
14967
14968
14969
14970
14971
14972
14973
14974
14975
14976
14977
14978
14979
14980
14981
14982
14983
14984
14985
14986
14987
14988
14989
14990
14991
14992
14993
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003
15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
15022
15023
15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056
15057
15058
15059
15060
15061
15062
15063
15064
15065
15066
15067
15068
15069
15070
15071
15072
15073
15074
15075
15076
15077
15078
15079
15080
15081
15082
15083
15084
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095
15096
15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
15143
15144
15145
15146
15147
15148
15149
15150
15151
15152
15153
15154
15155
15156
15157
15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
15171
15172
15173
15174
15175
15176
15177
15178
15179
15180
15181
15182
15183
15184
15185
15186
15187
15188
15189
15190
15191
15192
15193
15194
15195
15196
15197
15198
15199
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230
15231
15232
15233
15234
15235
15236
15237
15238
15239
15240
15241
15242
15243
15244
15245
15246
15247
15248
15249
15250
15251
15252
15253
15254
15255
15256
15257
15258
15259
15260
15261
15262
15263
15264
15265
15266
15267
15268
15269
15270
15271
15272
15273
15274
15275
15276
15277
15278
15279
15280
15281
15282
15283
15284
15285
15286
15287
15288
15289
15290
15291
15292
15293
15294
15295
15296
15297
15298
15299
15300
15301
15302
15303
15304
15305
15306
15307
15308
15309
15310
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
15331
15332
15333
15334
15335
15336
15337
15338
15339
15340
15341
15342
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353
15354
15355
15356
15357
15358
15359
15360
15361
15362
15363
15364
15365
15366
15367
15368
15369
15370
15371
15372
15373
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398
15399
15400
15401
15402
15403
15404
15405
15406
15407
15408
15409
15410
15411
15412
15413
15414
15415
15416
15417
15418
15419
15420
15421
15422
15423
15424
15425
15426
15427
15428
15429
15430
15431
15432
15433
15434
15435
15436
15437
15438
15439
15440
15441
15442
15443
15444
15445
15446
15447
15448
15449
15450
15451
15452
15453
15454
15455
15456
15457
15458
15459
15460
15461
15462
15463
15464
15465
15466
15467
15468
15469
15470
15471
15472
15473
15474
15475
15476
15477
15478
15479
15480
15481
15482
15483
15484
15485
15486
15487
15488
15489
15490
15491
15492
15493
15494
15495
15496
15497
15498
15499
15500
15501
15502
15503
15504
15505
15506
15507
15508
15509
15510
15511
15512
15513
15514
15515
15516
15517
15518
15519
15520
15521
15522
15523
15524
15525
15526
15527
15528
15529
15530
15531
15532
15533
15534
15535
15536
15537
15538
15539
15540
15541
15542
15543
15544
15545
15546
15547
15548
15549
15550
15551
15552
15553
15554
15555
15556
15557
15558
15559
15560
15561
15562
15563
15564
15565
15566
15567
15568
15569
15570
15571
15572
15573
15574
15575
15576
15577
15578
15579
15580
15581
15582
15583
15584
15585
15586
15587
15588
15589
15590
15591
15592
15593
15594
15595
15596
15597
15598
15599
15600
15601
15602
15603
15604
15605
15606
15607
15608
15609
15610
15611
15612
15613
15614
15615
15616
15617
15618
15619
15620
15621
15622
15623
15624
15625
15626
15627
15628
15629
15630
15631
15632
15633
15634
15635
15636
15637
15638
15639
15640
15641
15642
15643
15644
15645
15646
15647
15648
15649
15650
15651
15652
15653
15654
15655
15656
15657
15658
15659
15660
15661
15662
15663
15664
15665
15666
15667
15668
15669
15670
15671
15672
15673
15674
15675
15676
15677
15678
15679
15680
15681
15682
15683
15684
15685
15686
15687
15688
15689
15690
15691
15692
15693
15694
15695
15696
15697
15698
15699
15700
15701
15702
15703
15704
15705
15706
15707
15708
15709
15710
15711
15712
15713
15714
15715
15716
15717
15718
15719
15720
15721
15722
15723
15724
15725
15726
15727
15728
15729
15730
15731
15732
15733
15734
15735
15736
15737
15738
15739
15740
15741
15742
15743
15744
15745
15746
15747
15748
15749
15750
15751
15752
15753
15754
15755
15756
15757
15758
15759
15760
15761
15762
15763
15764
15765
15766
15767
15768
15769
15770
15771
15772
15773
15774
15775
15776
15777
15778
15779
15780
15781
15782
15783
15784
15785
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803
15804
15805
15806
15807
15808
15809
15810
15811
15812
15813
15814
15815
15816
15817
15818
15819
15820
15821
15822
15823
15824
15825
15826
15827
15828
15829
15830
15831
15832
15833
15834
15835
15836
15837
15838
15839
15840
15841
15842
15843
15844
15845
15846
15847
15848
15849
15850
15851
15852
15853
15854
15855
15856
15857
15858
15859
15860
15861
15862
15863
15864
15865
15866
15867
15868
15869
15870
15871
15872
15873
15874
15875
15876
15877
15878
15879
15880
15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
15900
15901
15902
15903
15904
15905
15906
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
15987
15988
15989
15990
15991
15992
15993
15994
15995
15996
15997
15998
15999
16000
16001
16002
16003
16004
16005
16006
16007
16008
16009
16010
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021
16022
16023
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
16069
16070
16071
16072
16073
16074
16075
16076
16077
16078
16079
16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094
16095
16096
16097
16098
16099
16100
16101
16102
16103
16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
16123
16124
16125
16126
16127
16128
16129
16130
16131
16132
16133
16134
16135
16136
16137
16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
16151
16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173
16174
16175
16176
16177
16178
16179
16180
16181
16182
16183
16184
16185
16186
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197
16198
16199
16200
16201
16202
16203
16204
16205
16206
16207
16208
16209
16210
16211
16212
16213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
16224
16225
16226
16227
16228
16229
16230
16231
16232
16233
16234
16235
16236
16237
16238
16239
16240
16241
16242
16243
16244
16245
16246
16247
16248
16249
16250
16251
16252
16253
16254
16255
16256
16257
16258
16259
16260
16261
16262
16263
16264
16265
16266
16267
16268
16269
16270
16271
16272
16273
16274
16275
16276
16277
16278
16279
16280
16281
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
16313
16314
16315
16316
16317
16318
16319
16320
16321
16322
16323
16324
16325
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336
16337
16338
16339
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
16390
16391
16392
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415
16416
16417
16418
16419
16420
16421
16422
16423
16424
16425
16426
16427
16428
16429
16430
16431
16432
16433
16434
16435
16436
16437
16438
16439
16440
16441
16442
16443
16444
16445
16446
16447
16448
16449
16450
16451
16452
16453
16454
16455
16456
16457
16458
16459
16460
16461
16462
16463
16464
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475
16476
16477
16478
16479
16480
16481
16482
16483
16484
16485
16486
16487
16488
16489
16490
16491
16492
16493
16494
16495
16496
16497
16498
16499
16500
16501
16502
16503
16504
16505
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516
16517
16518
16519
16520
16521
16522
16523
16524
16525
16526
16527
16528
16529
16530
16531
16532
16533
16534
16535
16536
16537
16538
16539
16540
16541
16542
16543
16544
16545
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
16581
16582
16583
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
16603
16604
16605
16606
16607
16608
16609
16610
16611
16612
16613
16614
16615
16616
16617
16618
16619
16620
16621
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634
16635
16636
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647
16648
16649
16650
16651
16652
16653
16654
16655
16656
16657
16658
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671
16672
16673
16674
16675
16676
16677
16678
16679
16680
16681
16682
16683
16684
16685
16686
16687
16688
16689
16690
16691
16692
16693
16694
16695
16696
16697
16698
16699
16700
16701
16702
16703
16704
16705
16706
16707
16708
16709
16710
16711
16712
16713
16714
16715
16716
16717
16718
16719
16720
16721
16722
16723
16724
16725
16726
16727
16728
16729
16730
16731
16732
16733
16734
16735
16736
16737
16738
16739
16740
16741
16742
16743
16744
16745
16746
16747
16748
16749
16750
16751
16752
16753
16754
16755
16756
16757
16758
16759
16760
16761
16762
16763
16764
16765
16766
16767
16768
16769
16770
16771
16772
16773
16774
16775
16776
16777
16778
16779
16780
16781
16782
16783
16784
16785
16786
16787
16788
16789
16790
16791
16792
16793
16794
16795
16796
16797
16798
16799
16800
16801
16802
16803
16804
16805
16806
16807
16808
16809
16810
16811
16812
16813
16814
16815
16816
16817
16818
16819
16820
16821
16822
16823
16824
16825
16826
16827
16828
16829
16830
16831
16832
16833
16834
16835
16836
16837
16838
16839
16840
16841
16842
16843
16844
16845
16846
16847
16848
16849
16850
16851
16852
16853
16854
16855
16856
16857
16858
16859
16860
16861
16862
16863
16864
16865
16866
16867
16868
16869
16870
16871
16872
16873
16874
16875
16876
16877
16878
16879
16880
16881
16882
16883
16884
16885
16886
16887
16888
16889
16890
16891
16892
16893
16894
16895
16896
16897
16898
16899
16900
16901
16902
16903
16904
16905
16906
16907
16908
16909
16910
16911
16912
16913
16914
16915
16916
16917
16918
16919
16920
16921
16922
16923
16924
16925
16926
16927
16928
16929
16930
16931
16932
16933
16934
16935
16936
16937
16938
16939
16940
16941
16942
16943
16944
16945
16946
16947
16948
16949
16950
16951
16952
16953
16954
16955
16956
16957
16958
16959
16960
16961
16962
16963
16964
16965
16966
16967
16968
16969
16970
16971
16972
16973
16974
16975
16976
16977
16978
16979
16980
16981
16982
16983
16984
16985
16986
16987
16988
16989
16990
16991
16992
16993
16994
16995
16996
16997
16998
16999
17000
17001
17002
17003
17004
17005
17006
17007
17008
17009
17010
17011
17012
17013
17014
17015
17016
17017
17018
17019
17020
17021
17022
17023
17024
17025
17026
17027
17028
17029
17030
17031
17032
17033
17034
17035
17036
17037
17038
17039
17040
17041
17042
17043
17044
17045
17046
17047
17048
17049
17050
17051
17052
17053
17054
17055
17056
17057
17058
17059
17060
17061
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085
17086
17087
17088
17089
17090
17091
17092
17093
17094
17095
17096
17097
17098
17099
17100
17101
17102
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113
17114
17115
17116
17117
17118
17119
17120
17121
17122
17123
17124
17125
17126
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137
17138
17139
17140
17141
17142
17143
17144
17145
17146
17147
17148
17149
17150
17151
17152
17153
17154
17155
17156
17157
17158
17159
17160
17161
17162
17163
17164
17165
17166
17167
17168
17169
17170
17171
17172
17173
17174
17175
17176
17177
17178
17179
17180
17181
17182
17183
17184
17185
17186
17187
17188
17189
17190
17191
17192
17193
17194
17195
17196
17197
17198
17199
17200
17201
17202
17203
17204
17205
17206
17207
17208
17209
17210
17211
17212
17213
17214
17215
17216
17217
17218
17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240
17241
17242
17243
17244
17245
17246
17247
17248
17249
17250
17251
17252
17253
17254
17255
17256
17257
17258
17259
17260
17261
17262
17263
17264
17265
17266
17267
17268
17269
17270
17271
17272
17273
17274
17275
17276
17277
17278
17279
17280
17281
17282
17283
17284
17285
17286
17287
17288
17289
17290
17291
17292
17293
17294
17295
17296
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307
17308
17309
17310
17311
17312
17313
17314
17315
17316
17317
17318
17319
17320
17321
17322
17323
17324
17325
17326
17327
17328
17329
17330
17331
17332
17333
17334
17335
17336
17337
17338
17339
17340
17341
17342
17343
17344
17345
17346
17347
17348
17349
17350
17351
17352
17353
17354
17355
17356
17357
17358
17359
17360
17361
17362
17363
17364
17365
17366
17367
17368
17369
17370
17371
17372
17373
17374
17375
17376
17377
17378
17379
17380
17381
17382
17383
17384
17385
17386
17387
17388
17389
17390
17391
17392
17393
17394
17395
17396
17397
17398
17399
17400
17401
17402
17403
17404
17405
17406
17407
17408
17409
17410
17411
17412
17413
17414
17415
17416
17417
17418
17419
17420
17421
17422
17423
17424
17425
17426
17427
17428
17429
17430
17431
17432
17433
17434
17435
17436
17437
17438
17439
17440
17441
17442
17443
17444
17445
17446
17447
17448
17449
17450
17451
17452
17453
17454
17455
17456
17457
17458
17459
17460
17461
17462
17463
17464
17465
17466
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
17480
17481
17482
17483
17484
17485
17486
17487
17488
17489
17490
17491
17492
17493
17494
17495
17496
17497
17498
17499
17500
17501
17502
17503
17504
17505
17506
17507
17508
17509
17510
17511
17512
17513
17514
17515
17516
17517
17518
17519
17520
17521
17522
17523
17524
17525
17526
17527
17528
17529
17530
17531
17532
17533
17534
17535
17536
17537
17538
17539
17540
17541
17542
17543
17544
17545
17546
17547
17548
17549
17550
17551
17552
17553
17554
17555
17556
17557
17558
17559
17560
17561
17562
17563
17564
17565
17566
17567
17568
17569
17570
17571
17572
17573
17574
17575
17576
17577
17578
17579
17580
17581
17582
17583
17584
17585
17586
17587
17588
17589
17590
17591
17592
17593
17594
17595
17596
17597
17598
17599
17600
17601
17602
17603
17604
17605
17606
17607
17608
17609
17610
17611
17612
17613
17614
17615
17616
17617
17618
17619
17620
17621
17622
17623
17624
17625
17626
17627
17628
17629
17630
17631
17632
17633
17634
17635
17636
17637
17638
17639
17640
17641
17642
17643
17644
17645
17646
17647
17648
17649
17650
17651
17652
17653
17654
17655
17656
17657
17658
17659
17660
17661
17662
17663
17664
17665
17666
17667
17668
17669
17670
17671
17672
17673
17674
17675
17676
17677
17678
17679
17680
17681
17682
17683
17684
17685
17686
17687
17688
17689
17690
17691
17692
17693
17694
17695
17696
17697
17698
17699
17700
17701
17702
17703
17704
17705
17706
17707
17708
17709
17710
17711
17712
17713
17714
17715
17716
17717
17718
17719
17720
17721
17722
17723
17724
17725
17726
17727
17728
17729
17730
17731
17732
17733
17734
17735
17736
17737
17738
17739
17740
17741
17742
17743
17744
17745
17746
17747
17748
17749
17750
17751
17752
17753
17754
17755
17756
17757
17758
17759
17760
17761
17762
17763
17764
17765
17766
17767
17768
17769
17770
17771
17772
17773
17774
17775
17776
17777
17778
17779
17780
17781
17782
17783
17784
17785
17786
17787
17788
17789
17790
17791
17792
17793
17794
17795
17796
17797
17798
17799
17800
17801
17802
17803
17804
17805
17806
17807
17808
17809
17810
17811
17812
17813
17814
17815
17816
17817
17818
17819
17820
17821
17822
17823
17824
17825
17826
17827
17828
17829
17830
17831
17832
17833
17834
17835
17836
17837
17838
17839
17840
17841
17842
17843
17844
17845
17846
17847
17848
17849
17850
17851
17852
17853
17854
17855
17856
17857
17858
17859
17860
17861
17862
17863
17864
17865
17866
17867
17868
17869
17870
17871
17872
17873
17874
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
17885
17886
17887
17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
17912
17913
17914
17915
17916
17917
17918
17919
17920
17921
17922
17923
17924
17925
17926
17927
17928
17929
17930
17931
17932
17933
17934
17935
17936
17937
17938
17939
17940
17941
17942
17943
17944
17945
17946
17947
17948
17949
17950
17951
17952
17953
17954
17955
17956
17957
17958
17959
17960
17961
17962
17963
17964
17965
17966
17967
17968
17969
17970
17971
17972
17973
17974
17975
17976
17977
17978
17979
17980
17981
17982
17983
17984
17985
17986
17987
17988
17989
17990
17991
17992
17993
17994
17995
17996
17997
17998
17999
18000
18001
18002
18003
18004
18005
18006
18007
18008
18009
18010
18011
18012
18013
18014
18015
18016
18017
18018
18019
18020
18021
18022
18023
18024
18025
18026
18027
18028
18029
18030
18031
18032
18033
18034
18035
18036
18037
18038
18039
18040
18041
18042
18043
18044
18045
18046
18047
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058
18059
18060
18061
18062
18063
18064
18065
18066
18067
18068
18069
18070
18071
18072
18073
18074
18075
18076
18077
18078
18079
18080
18081
18082
18083
18084
18085
18086
18087
18088
18089
18090
18091
18092
18093
18094
18095
18096
18097
18098
18099
18100
18101
18102
18103
18104
18105
18106
18107
18108
18109
18110
18111
18112
18113
18114
18115
18116
18117
18118
18119
18120
18121
18122
18123
18124
18125
18126
18127
18128
18129
18130
18131
18132
18133
18134
18135
18136
18137
18138
18139
18140
18141
18142
18143
18144
18145
18146
18147
18148
18149
18150
18151
18152
18153
18154
18155
18156
18157
18158
18159
18160
18161
18162
18163
18164
18165
18166
18167
18168
18169
18170
18171
18172
18173
18174
18175
18176
18177
18178
18179
18180
18181
18182
18183
18184
18185
18186
18187
18188
18189
18190
18191
18192
18193
18194
18195
18196
18197
18198
18199
18200
18201
18202
18203
18204
18205
18206
18207
18208
18209
18210
18211
18212
18213
18214
18215
18216
18217
18218
18219
18220
18221
18222
18223
18224
18225
18226
18227
18228
18229
18230
18231
18232
18233
18234
18235
18236
18237
18238
18239
18240
18241
18242
18243
18244
18245
18246
18247
18248
18249
18250
18251
18252
18253
18254
18255
18256
18257
18258
18259
18260
18261
18262
18263
18264
18265
18266
18267
18268
18269
18270
18271
18272
18273
18274
18275
18276
18277
18278
18279
18280
18281
18282
18283
18284
18285
18286
18287
18288
18289
18290
18291
18292
18293
18294
18295
18296
18297
18298
18299
18300
18301
18302
18303
18304
18305
18306
18307
18308
18309
18310
18311
18312
18313
18314
18315
18316
18317
18318
18319
18320
18321
18322
18323
18324
18325
18326
18327
18328
18329
18330
18331
18332
18333
18334
18335
18336
18337
18338
18339
18340
18341
18342
18343
18344
18345
18346
18347
18348
18349
18350
18351
18352
18353
18354
18355
18356
18357
18358
18359
18360
18361
18362
18363
18364
18365
18366
18367
18368
18369
18370
18371
18372
18373
18374
18375
18376
18377
18378
18379
18380
18381
18382
18383
18384
18385
18386
18387
18388
18389
18390
18391
18392
18393
18394
18395
18396
18397
18398
18399
18400
18401
18402
18403
18404
18405
18406
18407
18408
18409
18410
18411
18412
18413
18414
18415
18416
18417
18418
18419
18420
18421
18422
18423
18424
18425
18426
18427
18428
18429
18430
18431
18432
18433
18434
18435
18436
18437
18438
18439
18440
18441
18442
18443
18444
18445
18446
18447
18448
18449
18450
18451
18452
18453
18454
18455
18456
18457
18458
18459
18460
18461
18462
18463
18464
18465
18466
18467
18468
18469
18470
18471
18472
18473
18474
18475
18476
18477
18478
18479
18480
18481
18482
18483
18484
18485
18486
18487
18488
18489
18490
18491
18492
18493
18494
18495
18496
18497
18498
18499
18500
18501
18502
18503
18504
18505
18506
18507
18508
18509
18510
18511
18512
18513
18514
18515
18516
18517
18518
18519
18520
18521
18522
18523
18524
18525
18526
18527
18528
18529
18530
18531
18532
18533
18534
18535
18536
18537
18538
18539
18540
18541
18542
18543
18544
18545
18546
18547
18548
18549
18550
18551
18552
18553
18554
18555
18556
18557
18558
18559
18560
18561
18562
18563
18564
18565
18566
18567
18568
18569
18570
18571
18572
18573
18574
18575
18576
18577
18578
18579
18580
18581
18582
18583
18584
18585
18586
18587
18588
18589
18590
18591
18592
18593
18594
18595
18596
18597
18598
18599
18600
18601
18602
18603
18604
18605
18606
18607
18608
18609
18610
18611
18612
18613
18614
18615
18616
18617
18618
18619
18620
18621
18622
18623
18624
18625
18626
18627
18628
18629
18630
18631
18632
18633
18634
18635
18636
18637
18638
18639
18640
18641
18642
18643
18644
18645
18646
18647
18648
18649
18650
18651
18652
18653
18654
18655
18656
18657
18658
18659
18660
18661
18662
18663
18664
18665
18666
18667
18668
18669
18670
18671
18672
18673
18674
18675
18676
18677
18678
18679
18680
18681
18682
18683
18684
18685
18686
18687
18688
18689
18690
18691
18692
18693
18694
18695
18696
18697
18698
18699
18700
18701
18702
18703
18704
18705
18706
18707
18708
18709
18710
18711
18712
18713
18714
18715
18716
18717
18718
18719
18720
18721
18722
18723
18724
18725
18726
18727
18728
18729
18730
18731
18732
18733
18734
18735
18736
18737
18738
18739
18740
18741
18742
18743
18744
18745
18746
18747
18748
18749
18750
18751
18752
18753
18754
18755
18756
18757
18758
18759
18760
18761
18762
18763
18764
18765
18766
18767
18768
18769
18770
18771
18772
18773
18774
18775
18776
18777
18778
18779
18780
18781
18782
18783
18784
18785
18786
18787
18788
18789
18790
18791
18792
18793
18794
18795
18796
18797
18798
18799
18800
18801
18802
18803
18804
18805
18806
18807
18808
18809
18810
18811
18812
18813
18814
18815
18816
18817
18818
18819
18820
18821
18822
18823
18824
18825
18826
18827
18828
18829
18830
18831
18832
18833
18834
18835
18836
18837
18838
18839
18840
18841
18842
18843
18844
18845
18846
18847
18848
18849
18850
18851
18852
18853
18854
18855
18856
18857
18858
18859
18860
18861
18862
18863
18864
18865
18866
18867
18868
18869
18870
18871
18872
18873
18874
18875
18876
18877
18878
18879
18880
18881
18882
18883
18884
18885
18886
18887
18888
18889
18890
18891
18892
18893
18894
18895
18896
18897
18898
18899
18900
18901
18902
18903
18904
18905
18906
18907
18908
18909
18910
18911
18912
18913
18914
18915
18916
18917
18918
18919
18920
18921
18922
18923
18924
18925
18926
18927
18928
18929
18930
18931
18932
18933
18934
18935
18936
18937
18938
18939
18940
18941
18942
18943
18944
18945
18946
18947
18948
18949
18950
18951
18952
18953
18954
18955
18956
18957
18958
18959
18960
18961
18962
18963
18964
18965
18966
18967
18968
18969
18970
18971
18972
18973
18974
18975
18976
18977
18978
18979
18980
18981
18982
18983
18984
18985
18986
18987
18988
18989
18990
18991
18992
18993
18994
18995
18996
18997
18998
18999
19000
19001
19002
19003
19004
19005
19006
19007
19008
19009
19010
19011
19012
19013
19014
19015
19016
19017
19018
19019
19020
19021
19022
19023
19024
19025
19026
19027
19028
19029
19030
19031
19032
19033
19034
19035
19036
19037
19038
19039
19040
19041
19042
19043
19044
19045
19046
19047
19048
19049
19050
19051
19052
19053
19054
19055
19056
19057
19058
19059
19060
19061
19062
19063
19064
19065
19066
19067
19068
19069
19070
19071
19072
19073
19074
19075
19076
19077
19078
19079
19080
19081
19082
19083
19084
19085
19086
19087
19088
19089
19090
19091
19092
19093
19094
19095
19096
19097
19098
19099
19100
19101
19102
19103
19104
19105
19106
19107
19108
19109
19110
19111
19112
19113
19114
19115
19116
19117
19118
19119
19120
19121
19122
19123
19124
19125
19126
19127
19128
19129
19130
19131
19132
19133
19134
19135
19136
19137
19138
19139
19140
19141
19142
19143
19144
19145
19146
19147
19148
19149
19150
19151
19152
19153
19154
19155
19156
19157
19158
19159
19160
19161
19162
19163
19164
19165
19166
19167
19168
19169
19170
19171
19172
19173
19174
19175
19176
19177
19178
19179
19180
19181
19182
19183
19184
19185
19186
19187
19188
19189
19190
19191
19192
19193
19194
19195
19196
19197
19198
19199
19200
19201
19202
19203
19204
19205
19206
19207
19208
19209
19210
19211
19212
19213
19214
19215
19216
19217
19218
19219
19220
19221
19222
19223
19224
19225
19226
19227
19228
19229
19230
19231
19232
19233
19234
19235
19236
19237
19238
19239
19240
19241
19242
19243
19244
19245
19246
19247
19248
19249
19250
19251
19252
19253
19254
19255
19256
19257
19258
19259
19260
19261
19262
19263
19264
19265
19266
19267
19268
19269
19270
19271
19272
19273
19274
19275
19276
19277
19278
19279
19280
19281
19282
19283
19284
19285
19286
19287
19288
19289
19290
19291
19292
19293
19294
19295
19296
19297
19298
19299
19300
19301
19302
19303
19304
19305
19306
19307
19308
19309
19310
19311
19312
19313
19314
19315
19316
19317
19318
19319
19320
19321
19322
19323
19324
19325
19326
19327
19328
19329
19330
19331
19332
19333
19334
19335
19336
19337
19338
19339
19340
19341
19342
19343
19344
19345
19346
19347
19348
19349
19350
19351
19352
19353
19354
19355
19356
19357
19358
19359
19360
19361
19362
19363
19364
19365
19366
19367
19368
19369
19370
19371
19372
19373
19374
19375
19376
19377
19378
19379
19380
19381
19382
19383
19384
19385
19386
19387
19388
19389
19390
19391
19392
19393
19394
19395
19396
19397
19398
19399
19400
19401
19402
19403
19404
19405
19406
19407
19408
19409
19410
19411
19412
19413
19414
19415
19416
19417
19418
19419
19420
19421
19422
19423
19424
19425
19426
19427
19428
19429
19430
19431
19432
19433
19434
19435
19436
19437
19438
19439
19440
19441
19442
19443
19444
19445
19446
19447
19448
19449
19450
19451
19452
19453
19454
19455
19456
19457
19458
19459
19460
19461
19462
19463
19464
19465
19466
19467
19468
19469
19470
19471
19472
19473
19474
19475
19476
19477
19478
19479
19480
19481
19482
19483
19484
19485
19486
19487
19488
19489
19490
19491
19492
19493
19494
19495
19496
19497
19498
19499
19500
19501
19502
19503
19504
19505
19506
19507
19508
19509
19510
19511
19512
19513
19514
19515
19516
19517
19518
19519
19520
19521
19522
19523
19524
19525
19526
19527
19528
19529
19530
19531
19532
19533
19534
19535
19536
19537
19538
19539
19540
19541
19542
19543
19544
19545
19546
19547
19548
19549
19550
19551
19552
19553
19554
19555
19556
19557
19558
19559
19560
19561
19562
19563
19564
19565
19566
19567
19568
19569
19570
19571
19572
19573
19574
19575
19576
19577
19578
19579
19580
19581
19582
19583
19584
19585
19586
19587
19588
19589
19590
19591
19592
19593
19594
19595
19596
19597
19598
19599
19600
19601
19602
19603
19604
19605
19606
19607
19608
19609
19610
19611
19612
19613
19614
19615
19616
19617
19618
19619
19620
19621
19622
19623
19624
19625
19626
19627
19628
19629
19630
19631
19632
19633
19634
19635
19636
19637
19638
19639
19640
19641
19642
19643
19644
19645
19646
19647
19648
19649
19650
19651
19652
19653
19654
19655
19656
19657
19658
19659
19660
19661
19662
19663
19664
19665
19666
19667
19668
19669
19670
19671
19672
19673
19674
19675
19676
19677
19678
19679
19680
19681
19682
19683
19684
19685
19686
19687
19688
19689
19690
19691
19692
19693
19694
19695
19696
19697
19698
19699
19700
19701
19702
19703
19704
19705
19706
19707
19708
19709
19710
19711
19712
19713
19714
19715
19716
19717
19718
19719
19720
19721
19722
19723
19724
19725
19726
19727
19728
19729
19730
19731
19732
19733
19734
19735
19736
19737
19738
19739
19740
19741
19742
19743
19744
19745
19746
19747
19748
19749
19750
19751
19752
19753
19754
19755
19756
19757
19758
19759
19760
19761
19762
19763
19764
19765
19766
19767
19768
19769
19770
19771
19772
19773
19774
19775
19776
19777
19778
19779
19780
19781
19782
19783
19784
19785
19786
19787
19788
19789
19790
19791
19792
19793
19794
19795
19796
19797
19798
19799
19800
19801
19802
19803
19804
19805
19806
19807
19808
19809
19810
19811
19812
19813
19814
19815
19816
19817
19818
19819
19820
19821
19822
19823
19824
19825
19826
19827
19828
19829
19830
19831
19832
19833
19834
19835
19836
19837
19838
19839
19840
19841
19842
19843
19844
19845
19846
19847
19848
19849
19850
19851
19852
19853
19854
19855
19856
19857
19858
19859
19860
19861
19862
19863
19864
19865
19866
19867
19868
19869
19870
19871
19872
19873
19874
19875
19876
19877
19878
19879
19880
19881
19882
19883
19884
19885
19886
19887
19888
19889
19890
19891
19892
19893
19894
19895
19896
19897
19898
19899
19900
19901
19902
19903
19904
19905
19906
19907
19908
19909
19910
19911
19912
19913
19914
19915
19916
19917
19918
19919
19920
19921
19922
19923
19924
19925
19926
19927
19928
19929
19930
19931
19932
19933
19934
19935
19936
19937
19938
19939
19940
19941
19942
19943
19944
19945
19946
19947
19948
19949
19950
19951
19952
19953
19954
19955
19956
19957
19958
19959
19960
19961
19962
19963
19964
19965
19966
19967
19968
19969
19970
19971
19972
19973
19974
19975
19976
19977
19978
19979
19980
19981
19982
19983
19984
19985
19986
19987
19988
19989
19990
19991
19992
19993
19994
19995
19996
19997
19998
19999
20000
20001
20002
20003
20004
20005
20006
20007
20008
20009
20010
20011
20012
20013
20014
20015
20016
20017
20018
20019
20020
20021
20022
20023
20024
20025
20026
20027
20028
20029
20030
20031
20032
20033
20034
20035
20036
20037
20038
20039
20040
20041
20042
20043
20044
20045
20046
20047
20048
20049
20050
20051
20052
20053
20054
20055
20056
20057
20058
20059
20060
20061
20062
20063
20064
20065
20066
20067
20068
20069
20070
20071
20072
20073
20074
20075
20076
20077
20078
20079
20080
20081
20082
20083
20084
20085
20086
20087
20088
20089
20090
20091
20092
20093
20094
20095
20096
20097
20098
20099
20100
20101
20102
20103
20104
20105
20106
20107
20108
20109
20110
20111
20112
20113
20114
20115
20116
20117
20118
20119
20120
20121
20122
20123
20124
20125
20126
20127
20128
20129
20130
20131
20132
20133
20134
20135
20136
20137
20138
20139
20140
20141
20142
20143
20144
20145
20146
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161
20162
20163
20164
20165
20166
20167
20168
20169
20170
20171
20172
20173
20174
20175
20176
20177
20178
20179
20180
20181
20182
20183
20184
20185
20186
20187
20188
20189
20190
20191
20192
20193
20194
20195
20196
20197
20198
20199
20200
20201
20202
20203
20204
20205
20206
20207
20208
20209
20210
20211
20212
20213
20214
20215
20216
20217
20218
20219
20220
20221
20222
20223
20224
20225
20226
20227
20228
20229
20230
20231
20232
20233
20234
20235
20236
20237
20238
20239
20240
20241
20242
20243
20244
20245
20246
20247
20248
20249
20250
20251
20252
20253
20254
20255
20256
20257
20258
20259
20260
20261
20262
20263
20264
20265
20266
20267
20268
20269
20270
20271
20272
20273
20274
20275
20276
20277
20278
20279
20280
20281
20282
20283
20284
20285
20286
20287
20288
20289
20290
20291
20292
20293
20294
20295
20296
20297
20298
20299
20300
20301
20302
20303
20304
20305
20306
20307
20308
20309
20310
20311
20312
20313
20314
20315
20316
20317
20318
20319
20320
20321
20322
20323
20324
20325
20326
20327
20328
20329
20330
20331
20332
20333
20334
20335
20336
20337
20338
20339
20340
20341
20342
20343
20344
20345
20346
20347
20348
20349
20350
20351
20352
20353
20354
20355
20356
20357
20358
20359
20360
20361
20362
20363
20364
20365
20366
20367
20368
20369
20370
20371
20372
20373
20374
20375
20376
20377
20378
20379
20380
20381
20382
20383
20384
20385
20386
20387
20388
20389
20390
20391
20392
20393
20394
20395
20396
20397
20398
20399
20400
20401
20402
20403
20404
20405
20406
20407
20408
20409
20410
20411
20412
20413
20414
20415
20416
20417
20418
20419
20420
20421
20422
20423
20424
20425
20426
20427
20428
20429
20430
20431
20432
20433
20434
20435
20436
20437
20438
20439
20440
20441
20442
20443
20444
20445
20446
20447
20448
20449
20450
20451
20452
20453
20454
20455
20456
20457
20458
20459
20460
20461
20462
20463
20464
20465
20466
20467
20468
20469
20470
20471
20472
20473
20474
20475
20476
20477
20478
20479
20480
20481
20482
20483
20484
20485
20486
20487
20488
20489
20490
20491
20492
20493
20494
20495
20496
20497
20498
20499
20500
20501
20502
20503
20504
20505
20506
20507
20508
20509
20510
20511
20512
20513
20514
20515
20516
20517
20518
20519
20520
20521
20522
20523
20524
20525
20526
20527
20528
20529
20530
20531
20532
20533
20534
20535
20536
20537
20538
20539
20540
20541
20542
20543
20544
20545
20546
20547
20548
20549
20550
20551
20552
20553
20554
20555
20556
20557
20558
20559
20560
20561
20562
20563
20564
20565
20566
20567
20568
20569
20570
20571
20572
20573
20574
20575
20576
20577
20578
20579
20580
20581
20582
20583
20584
20585
20586
20587
20588
20589
20590
20591
20592
20593
20594
20595
20596
20597
20598
20599
20600
20601
20602
20603
20604
20605
20606
20607
20608
20609
20610
20611
20612
20613
20614
20615
20616
20617
20618
20619
20620
20621
20622
20623
20624
20625
20626
20627
20628
20629
20630
20631
20632
20633
20634
20635
20636
20637
20638
20639
20640
20641
20642
20643
20644
20645
20646
20647
20648
20649
20650
20651
20652
20653
20654
20655
20656
20657
20658
20659
20660
20661
20662
20663
20664
20665
20666
20667
20668
20669
20670
20671
20672
20673
20674
20675
20676
20677
20678
20679
20680
20681
20682
20683
20684
20685
20686
20687
20688
20689
20690
20691
20692
20693
20694
20695
20696
20697
20698
20699
20700
20701
20702
20703
20704
20705
20706
20707
20708
20709
20710
20711
20712
20713
20714
20715
20716
20717
20718
20719
20720
20721
20722
20723
20724
20725
20726
20727
20728
20729
20730
20731
20732
20733
20734
20735
20736
20737
20738
20739
20740
20741
20742
20743
20744
20745
20746
20747
20748
20749
20750
20751
20752
20753
20754
20755
20756
20757
20758
20759
20760
20761
20762
20763
20764
20765
20766
20767
20768
20769
20770
20771
20772
20773
20774
20775
20776
20777
20778
20779
20780
20781
20782
20783
20784
20785
20786
20787
20788
20789
20790
20791
20792
20793
20794
20795
20796
20797
20798
20799
20800
20801
20802
20803
20804
20805
20806
20807
20808
20809
20810
20811
20812
20813
20814
20815
20816
20817
20818
20819
20820
20821
20822
20823
20824
20825
20826
20827
20828
20829
20830
20831
20832
20833
20834
20835
20836
20837
20838
20839
20840
20841
20842
20843
20844
20845
20846
20847
20848
20849
20850
20851
20852
20853
20854
20855
20856
20857
20858
20859
20860
20861
20862
20863
20864
20865
20866
20867
20868
20869
20870
20871
20872
20873
20874
20875
20876
20877
20878
20879
20880
20881
20882
20883
20884
20885
20886
20887
20888
20889
20890
20891
20892
20893
20894
20895
20896
20897
20898
20899
20900
20901
20902
20903
20904
20905
20906
20907
20908
20909
20910
20911
20912
20913
20914
20915
20916
20917
20918
20919
20920
20921
20922
20923
20924
20925
20926
20927
20928
20929
20930
20931
20932
20933
20934
20935
20936
20937
20938
20939
20940
20941
20942
20943
20944
20945
20946
20947
20948
20949
20950
20951
20952
20953
20954
20955
20956
20957
20958
20959
20960
20961
20962
20963
20964
20965
20966
20967
20968
20969
20970
20971
20972
20973
20974
20975
20976
20977
20978
20979
20980
20981
20982
20983
20984
20985
20986
20987
20988
20989
20990
20991
20992
20993
20994
20995
20996
20997
20998
20999
21000
21001
21002
21003
21004
21005
21006
21007
21008
21009
21010
21011
21012
21013
21014
21015
21016
21017
21018
21019
21020
21021
21022
21023
21024
21025
21026
21027
21028
21029
21030
21031
21032
21033
21034
21035
21036
21037
21038
21039
21040
21041
21042
21043
21044
21045
21046
21047
21048
21049
21050
21051
21052
21053
21054
21055
21056
21057
21058
21059
21060
21061
21062
21063
21064
21065
21066
21067
21068
21069
21070
21071
21072
21073
21074
21075
21076
21077
21078
21079
21080
21081
21082
21083
21084
21085
21086
21087
21088
21089
21090
21091
21092
21093
21094
21095
21096
21097
21098
21099
21100
21101
21102
21103
21104
21105
21106
21107
21108
21109
21110
21111
21112
21113
21114
21115
21116
21117
21118
21119
21120
21121
21122
21123
21124
21125
21126
21127
21128
21129
21130
21131
21132
21133
21134
21135
21136
21137
21138
21139
21140
21141
21142
21143
21144
21145
21146
21147
21148
21149
21150
21151
21152
21153
21154
21155
21156
21157
21158
21159
21160
21161
21162
21163
21164
21165
21166
21167
21168
21169
21170
21171
21172
21173
21174
21175
21176
21177
21178
21179
21180
21181
21182
21183
21184
21185
21186
21187
21188
21189
21190
21191
21192
21193
21194
21195
21196
21197
21198
21199
21200
21201
21202
21203
21204
21205
21206
21207
21208
21209
21210
21211
21212
21213
21214
21215
21216
21217
21218
21219
21220
21221
21222
21223
21224
21225
21226
21227
21228
21229
21230
21231
21232
21233
21234
21235
21236
21237
21238
21239
21240
21241
21242
21243
21244
21245
21246
21247
21248
21249
21250
21251
21252
21253
21254
21255
21256
21257
21258
21259
21260
21261
21262
21263
21264
21265
21266
21267
21268
21269
21270
21271
21272
21273
21274
21275
21276
21277
21278
21279
21280
21281
21282
21283
21284
21285
21286
21287
21288
21289
21290
21291
21292
21293
21294
21295
21296
21297
21298
21299
21300
21301
21302
21303
21304
21305
21306
21307
21308
21309
21310
21311
21312
21313
21314
21315
21316
21317
21318
21319
21320
21321
21322
21323
21324
21325
21326
21327
21328
21329
21330
21331
21332
21333
21334
21335
21336
21337
21338
21339
21340
21341
21342
21343
21344
21345
21346
21347
21348
21349
21350
21351
21352
21353
21354
21355
21356
21357
21358
21359
21360
21361
21362
21363
21364
21365
21366
21367
21368
21369
21370
21371
21372
21373
21374
21375
21376
21377
21378
21379
21380
21381
21382
21383
21384
21385
21386
21387
21388
21389
21390
21391
21392
21393
21394
21395
21396
21397
21398
21399
21400
21401
21402
21403
21404
21405
21406
21407
21408
21409
21410
21411
21412
21413
21414
21415
21416
21417
21418
21419
21420
21421
21422
21423
21424
21425
21426
21427
21428
21429
21430
21431
21432
21433
21434
21435
21436
21437
21438
21439
21440
21441
21442
21443
21444
21445
21446
21447
21448
21449
21450
21451
21452
21453
21454
21455
21456
21457
21458
21459
21460
21461
21462
21463
21464
21465
21466
21467
21468
21469
21470
21471
21472
21473
21474
21475
21476
21477
21478
21479
21480
21481
21482
21483
21484
21485
21486
21487
21488
21489
21490
21491
21492
21493
21494
21495
21496
21497
21498
21499
21500
21501
21502
21503
21504
21505
21506
21507
21508
21509
21510
21511
21512
21513
21514
21515
21516
21517
21518
21519
21520
21521
21522
21523
21524
21525
21526
21527
21528
21529
21530
21531
21532
21533
21534
21535
21536
21537
21538
21539
21540
21541
21542
21543
21544
21545
21546
21547
21548
21549
21550
21551
21552
21553
21554
21555
21556
21557
21558
21559
21560
21561
21562
21563
21564
21565
21566
21567
21568
21569
21570
21571
21572
21573
21574
21575
21576
21577
21578
21579
21580
21581
21582
21583
21584
21585
21586
21587
21588
21589
21590
21591
21592
21593
21594
21595
21596
21597
21598
21599
21600
21601
21602
21603
21604
21605
21606
21607
21608
21609
21610
21611
21612
21613
21614
21615
21616
21617
21618
21619
21620
21621
21622
21623
21624
21625
21626
21627
21628
21629
21630
21631
21632
21633
21634
21635
21636
21637
21638
21639
21640
21641
21642
21643
21644
21645
21646
21647
21648
21649
21650
21651
21652
21653
21654
21655
21656
21657
21658
21659
21660
21661
21662
21663
21664
21665
21666
21667
21668
21669
21670
21671
21672
21673
21674
21675
21676
21677
21678
21679
21680
21681
21682
21683
21684
21685
21686
21687
21688
21689
21690
21691
21692
21693
21694
21695
21696
21697
21698
21699
21700
21701
21702
21703
21704
21705
21706
21707
21708
21709
21710
21711
21712
21713
21714
21715
21716
21717
21718
21719
21720
21721
21722
21723
21724
21725
21726
21727
21728
21729
21730
21731
21732
21733
21734
21735
21736
21737
21738
21739
21740
21741
21742
21743
21744
21745
21746
21747
21748
21749
21750
21751
21752
21753
21754
21755
21756
21757
21758
21759
21760
21761
21762
21763
21764
21765
21766
21767
21768
21769
21770
21771
21772
21773
21774
21775
21776
21777
21778
21779
21780
21781
21782
21783
21784
21785
21786
21787
21788
21789
21790
21791
21792
21793
21794
21795
21796
21797
21798
21799
21800
21801
21802
21803
21804
21805
21806
21807
21808
21809
21810
21811
21812
21813
21814
21815
21816
21817
21818
21819
21820
21821
21822
21823
21824
21825
21826
21827
21828
21829
21830
21831
21832
21833
21834
21835
21836
21837
21838
21839
21840
21841
21842
21843
21844
21845
21846
21847
21848
21849
21850
21851
21852
21853
21854
21855
21856
21857
21858
21859
21860
21861
21862
21863
21864
21865
21866
21867
21868
21869
21870
21871
21872
21873
21874
21875
21876
21877
21878
21879
21880
21881
21882
21883
21884
21885
21886
21887
21888
21889
21890
21891
21892
21893
21894
21895
21896
21897
21898
21899
21900
21901
21902
21903
21904
21905
21906
21907
21908
21909
21910
21911
21912
21913
21914
21915
21916
21917
21918
21919
21920
21921
21922
21923
21924
21925
21926
21927
21928
21929
21930
21931
21932
21933
21934
21935
21936
21937
21938
21939
21940
21941
21942
21943
21944
21945
21946
21947
21948
21949
21950
21951
21952
21953
21954
21955
21956
21957
21958
21959
21960
21961
21962
21963
21964
21965
21966
21967
21968
21969
21970
21971
21972
21973
21974
21975
21976
21977
21978
21979
21980
21981
21982
21983
21984
21985
21986
21987
21988
21989
21990
21991
21992
21993
21994
21995
21996
21997
21998
21999
22000
22001
22002
22003
22004
22005
22006
22007
22008
22009
22010
22011
22012
22013
22014
22015
22016
22017
22018
22019
22020
22021
22022
22023
22024
22025
22026
22027
22028
22029
22030
22031
22032
22033
22034
22035
22036
22037
22038
22039
22040
22041
22042
22043
22044
22045
22046
22047
22048
22049
22050
22051
22052
22053
22054
22055
22056
22057
22058
22059
22060
22061
22062
22063
22064
22065
22066
22067
22068
22069
22070
22071
22072
22073
22074
22075
22076
22077
22078
22079
22080
22081
22082
22083
22084
22085
22086
22087
22088
22089
22090
22091
22092
22093
22094
22095
22096
22097
22098
22099
22100
22101
22102
22103
22104
22105
22106
22107
22108
22109
22110
22111
22112
22113
22114
22115
22116
22117
22118
22119
22120
22121
22122
22123
22124
22125
22126
22127
22128
22129
22130
22131
22132
22133
22134
22135
22136
22137
22138
22139
22140
22141
22142
22143
22144
22145
22146
22147
22148
22149
22150
22151
22152
22153
22154
22155
22156
22157
22158
22159
22160
22161
22162
22163
22164
22165
22166
22167
22168
22169
22170
22171
22172
22173
22174
22175
22176
22177
22178
22179
22180
22181
22182
22183
22184
22185
22186
22187
22188
22189
22190
22191
22192
22193
22194
22195
22196
22197
22198
22199
22200
22201
22202
22203
22204
22205
22206
22207
22208
22209
22210
22211
22212
22213
22214
22215
22216
22217
22218
22219
22220
22221
22222
22223
22224
22225
22226
22227
22228
22229
22230
22231
22232
22233
22234
22235
22236
22237
22238
22239
22240
22241
22242
22243
22244
22245
22246
22247
22248
22249
22250
22251
22252
22253
22254
22255
22256
22257
22258
22259
22260
22261
22262
22263
22264
22265
22266
22267
22268
22269
22270
22271
22272
22273
22274
22275
22276
22277
22278
22279
22280
22281
22282
22283
22284
22285
22286
22287
22288
22289
22290
22291
22292
22293
22294
22295
22296
22297
22298
22299
22300
22301
22302
22303
22304
22305
22306
22307
22308
22309
22310
22311
22312
22313
22314
22315
22316
22317
22318
22319
22320
22321
22322
22323
22324
22325
22326
22327
22328
22329
22330
22331
22332
22333
22334
22335
22336
22337
22338
22339
22340
22341
22342
22343
22344
22345
22346
22347
22348
22349
22350
22351
22352
22353
22354
22355
22356
22357
22358
22359
22360
22361
22362
22363
22364
22365
22366
22367
22368
22369
22370
22371
22372
22373
22374
22375
22376
22377
22378
22379
22380
22381
22382
22383
22384
22385
22386
22387
22388
22389
22390
22391
22392
22393
22394
22395
22396
22397
22398
22399
22400
22401
22402
22403
22404
22405
22406
22407
22408
22409
22410
22411
22412
22413
22414
22415
22416
22417
22418
22419
22420
22421
22422
22423
22424
22425
22426
22427
22428
22429
22430
22431
22432
22433
22434
22435
22436
22437
22438
22439
22440
22441
22442
22443
22444
22445
22446
22447
22448
22449
22450
22451
22452
22453
22454
22455
22456
22457
22458
22459
22460
22461
22462
22463
22464
22465
22466
22467
22468
22469
22470
22471
22472
22473
22474
22475
22476
22477
22478
22479
22480
22481
22482
22483
22484
22485
22486
22487
22488
22489
22490
22491
22492
22493
22494
22495
22496
22497
22498
22499
22500
22501
22502
22503
22504
22505
22506
22507
22508
22509
22510
22511
22512
22513
22514
22515
22516
22517
22518
22519
22520
22521
22522
22523
22524
22525
22526
22527
22528
22529
22530
22531
22532
22533
22534
22535
22536
22537
22538
22539
22540
22541
22542
22543
22544
22545
22546
22547
22548
22549
22550
22551
22552
22553
22554
22555
22556
22557
22558
22559
22560
22561
22562
22563
22564
22565
22566
22567
22568
22569
22570
22571
22572
22573
22574
22575
22576
22577
22578
22579
22580
22581
22582
22583
22584
22585
22586
22587
22588
22589
22590
22591
22592
22593
22594
22595
22596
22597
22598
22599
22600
22601
22602
22603
22604
22605
22606
22607
22608
22609
22610
22611
22612
22613
22614
22615
22616
22617
22618
22619
22620
22621
22622
22623
22624
22625
22626
22627
22628
22629
22630
22631
22632
22633
22634
22635
22636
22637
22638
22639
22640
22641
22642
22643
22644
22645
22646
22647
22648
22649
22650
22651
22652
22653
22654
22655
22656
22657
22658
22659
22660
22661
22662
22663
22664
22665
22666
22667
22668
22669
22670
22671
22672
22673
22674
22675
22676
22677
22678
22679
22680
22681
22682
22683
22684
22685
22686
22687
22688
22689
22690
22691
22692
22693
22694
22695
22696
22697
22698
22699
22700
22701
22702
22703
22704
22705
22706
22707
22708
22709
22710
22711
22712
22713
22714
22715
22716
22717
22718
22719
22720
22721
22722
22723
22724
22725
22726
22727
22728
22729
22730
22731
22732
22733
22734
22735
22736
22737
22738
22739
22740
22741
22742
22743
22744
22745
22746
22747
22748
22749
22750
22751
22752
22753
22754
22755
22756
22757
22758
22759
22760
22761
22762
22763
22764
22765
22766
22767
22768
22769
22770
22771
22772
22773
22774
22775
22776
22777
22778
22779
22780
22781
22782
22783
22784
22785
22786
22787
22788
22789
22790
22791
22792
22793
22794
22795
22796
22797
22798
22799
22800
22801
22802
22803
22804
22805
22806
22807
22808
22809
22810
22811
22812
22813
22814
22815
22816
22817
22818
22819
22820
22821
22822
22823
22824
22825
22826
22827
22828
22829
22830
22831
22832
22833
22834
22835
22836
22837
22838
22839
22840
22841
22842
22843
22844
22845
22846
22847
22848
22849
22850
22851
22852
22853
22854
22855
22856
22857
22858
22859
22860
22861
22862
22863
22864
22865
22866
22867
22868
22869
22870
22871
22872
22873
22874
22875
22876
22877
22878
22879
22880
22881
22882
22883
22884
22885
22886
22887
22888
22889
22890
22891
22892
22893
22894
22895
22896
22897
22898
22899
22900
22901
22902
22903
22904
22905
22906
22907
22908
22909
22910
22911
22912
22913
22914
22915
22916
22917
22918
22919
22920
22921
22922
22923
22924
22925
22926
22927
22928
22929
22930
22931
22932
2020-01-11 Nicolas weeger
    * utils/cre/CREMainWindow.{h,cpp}: Add export of alchemy relationship to .dot file.

2020-01-08 Nicolas Weeger
    * server/quest.c: Use media tags for quest information.

2021-01-07 Daniel Hawkins
    * types/spell_effect/spell_effect.c: Drop unpaid items when word of recall triggers.
        This prevents abuse of balms of return home in shops.

2021-01-06 Daniel Hawkins
    * server/skill_util.c: Disallow use of unapid skill tools in use_skill()

2021-01-02 Nicolas Weeger
    * plugins/cfcitybell/cfcitybell.c: Add the bell of Valkyrie's temple.
    * server/player.c: Change message type for keys from 'attack' to 'item'.

2020-12-29 Nicolas Weeger
    * socket/item.c: Don't send item's animation if FLAG_ANIMATE isn't set.
    * server/quest.c: Add a client specific command to display quest information.

2020-12-21 Nicolas Weeger
    * common/readable.c,
      server/knowledge.c: Fix monster knowledge not correctly saved.

2020-12-15 Nicolas Weeger
    * server/monster.c: Fix invalid call to fix_object.
    * server/player.c: Fix reset of pickup mode at player death.

2020-12-14 Nicolas Weeger
    * common/map.c,
      common/path.c,
      server/c_misc.c,
      server/server.c: Use tilde (~) for player-unique map paths.
      Patch https://sourceforge.net/p/crossfire/patches/384/ by Kevin Zheng.

2020-12-13 Nicolas Weeger
    * server/monster.c,
      test/bugs/bugtrack/Makefile.am,
      test/bugs/bugtrack/check_883.c: Fix bug https://sourceforge.net/p/crossfire/bugs/883/
      "Monsters will not apply weapons in their inventory", add relevant unit test.

2020-12-12 Nicolas Weeger
    * common/artifact.c: Copy key-values from artifact to object.
    * server/alchemy.c: Apply patch https://sourceforge.net/p/crossfire/patches/349/
      by Daniel Ziem.
    * plugins/cfpython/cfpython_object.c, plugins/common/include/plugin_common.h,
      plugins/common/plugin_common.c: Mark 'CastAbility' as obsolete.

2020-12-10 Nicolas Weeger
    * socket/request.c: add speech bubble to NPCs.
Patch by Kevin Zheng, slightly adjusted.

2020-12-08 Nicolas Weeger
    * common/arch.c,
      common/loader.l,
      common/object.c,
      include/object.h
      server/attack.c: remove 'discrete_damage', unused.
    * common/loader.l: use a larger buffer when loading artifacts to not wrap long messages.

2020-12-02 Nicolas Weeger
    * random_maps/treasure.c: remove unused code.
    * random_maps/treasure.c,
    * include/random_maps/random_map.h,
    * random_maps/random_map.c,
    * random_maps/reader.l: allow style maps for chests found in random maps.

2020-12-01 Nicolas Weeger
    * types/spellbook/spellbook.c: Fix invalid array indice leading to crash.

2020-11-28 Daniel Hawkins
    * types/spellbook/spellbook.c: Make sure an unidentified spellbook at least tells you
        what you can already see in the viewport, rather than "That is: " without a name.
    * server/c_object.c: Prevent the flavor text for magic to appear when the item is not
        yet identified.

2020-11-27 Daniel Hawkins
    * server/skills.c: Make trapped doors detonate traps when lockpicked on the first attempt.

2020-11-23 Nicolas Weeger
    * common/anim.c: change function prototype.
    * server/attack.c: use a default "attack" anim_suffix for attacks. Apply
        anim_suffix to monsters too.

2020-11-11 Daniel Hawkins and Kevin Zheng
    * socket/request.c,
      server/player.c: Make the handling to prevent createplayer command abuse
         more robust. Also address some socket state issues while here.
         And fix a segfault from incorrectly removing pl->ob->contr in create_player_cmd.

2020-11-08 Daniel Hawkins
    * server/rune.c: Fix segfault when showing an unanimated trap.

2020-11-02 Daniel Hawkins
    * plugins/citylife/citylife.c: Fix an off-by-one in the number of NPCs to spawn on
        map load, and fix the location and inclusion of spawn points in northern Scorn.
        Fixed NPCs loaded on map load from having their inventory drop when killed.

2020-10-23 Daniel Hawkins
    * server/spell_util.c: Make no-magic tiles block magic before spells can be bungled.

2020-10-22 Daniel Hawkins
    * server/player.c: Refactor code to remove confusion, poison, and disease on death
        into its own function.

2020-10-21 Daniel Hawkins
    * socket/request.c: Make sure to remove player's object if they send
        createplayer for a character with a different name than the current one.
    * server/c_object.c: Fix a nullpointer dereference when a skill tool lacks a
        skill message.

2020-10-20 Rebecca Kelly
    * types/spellbook/spellbook.c, server/c_object.c: display the description of
        a spell or skill when examining an object that contains it such as a
        wand, spellbook, or skillscroll. These descriptions are sent with the
        SPELL_INFO message type so that clients can differentiate them from
        their surroundings when colourizing.

2020-10-20 Rebecca Kelly
    * types/spellbook/spellbook.c: spellbooks will now list their spell level,
        casting skill, and paths in the detailed object name, e.g. "grimoire of
        poison cloud (a fourth level sorcery) (paths: Missiles)", in much the
        same way equipment will list its stats.
        Since this information is now available in the object name, the message
        telling you what spell a spellbook contains when you successfully read
        it will appear only if you identified the book in the process of reading.

2020-10-18 Daniel Hawkins
    * server/server.c: Add a message stating when initialization finishes.

2020-10-14 Daniel Hawkins
    * server/shop.c: Add an event hook for when an item is bought.
    * include/plugin.h: Add an event descriptor for the new buying event.

2020-10-10 Daniel Hawkins
    * common/readable.c: Fix generation of book names for recipes whose product lack a title.
        While here, add some more book name combinations.

2020-10-10 Daniel Hawkins
    * server/spell_attack.c: Adjust handling of aggravation to prevent shenanigans and prepare it for
        use as a legitimate spell.

2020-10-03 Daniel Hawkins
    * server/c_wiz.c: Don't interpret blank lines in dm_file as malformed entries.
        Prevent buffer overrun in `plugin command.
    * server/c_misc.c: Use StringBuffer to fix buffer overflow from malicious/malformed bowmode command.

2020-10-02 Daniel Hawkins
    * plugins/cfpython/cfpython.c: Set context->event to NULL when running python-based commands.
        It was possible to segfault from it not being a valid address if malloc used
        recycled memory.

2020-09-30 Daniel Hawkins
    * server/player.c: Prevent check_pick() from processing on a non-player.
    * server/skills.c: Prevent stop_jump() from calling check_pick() for non-players.

2020-09-19 Preston Crow
    * server/commands.c,server/player.c: Add 'face' command to have the
	player face a given direction without taking any action.

2020-09-17 Daniel Hawkins
    * server/build_map.c: Disallow use of unpaid building materials.
          Mentioned by Titus on the Discord/IRC a few weeks back.

2020-09-17 Preston Crow
    * server/apply.c: Apply command: Pass through and honor '-a' and '-u'
	flags for containers and add a new flag '-o' to fully open a container
	in your inventory.

2020-09-17 Preston Crow
    * include/global.h,lib/config/settings,server/init.c,socket/request.c:
        Add a config option MIN_NAME to restrict very short account and
	character names.  It defaults to 1, and doesn't impact existing
	accounts or characters, so it can be changed on existing servers
	with no negative impacts.

2020-09-13 Rebecca Kelly
    * types/spellbook/spellbook.c: change the order of the messages when you
        successfully read a spellbook to make them read a bit better.

2020-09-10  Rebecca Kelly
    * server/player.c: use object_can_merge() to deduplicate starting inventory.
        This fixes an issue where all spellbooks of a given school were
        considered equivalent by the deduplicator, resulting in most caster
        characters only getting one spellbook when they should have gotten 2-3.
        Note that players may still get fewer spellbooks if multiple books were
        generated holding the same spell.

2020-09-08  Daniel Hawkins
    * server/apply.c: Refactor class face apply to allow for custom class faces on races that
        lack noclassfacechange.

2020-09-07  Daniel Hawkins
    * server/monster.c: Don't allow monsters to pick up items that are on their spaces while being thrown.
        This fixes an occasional "Thrown object had no map" error that resulted from monsters picking
        thrown items mid-flight and the item not being transitioned back to it's non-thrown form.

2020-09-06  Daniel Hawkins
    * common/button.c: Add check for an unpaid flag that matches the check_inv trigger's unpaid flag.
          This allows for us to optionally look exclusively for unapid items, but by default exclude
          unpaid items from the search.

2020-09-06  Daniel Hawkins
    * server/plugins.c: Fix invalid pointer dereference when calculating perm_exp.
        Turns out the other end of the plugin was expecting this, but I didn't do it right here.

2020-09-05  Daniel Hawkins
    * server/skill_util.c: Add check for not unpaid when searching an inventory for a skill tool.
        This makes it behave like it would it it were manually applied: it does not apply.

2020-09-05  Daniel Hawkins
    * server/player.c,
      include/libproto.h,
      common/object.c: Add a function to retrieve an item from inventory that is not unpaid.
          Used it to prevent unpaid keys from being used as if they weren't.

2020-09-01  Daniel Hawkins
    * server/plugins.c,
      plugins/common/plugin_common.c,
      plugins/common/include/plugin_common.h,
      plugins/cfpython/cfpython_object.c,
      include/plugin.h: Move a reference to settings struct instance into plugins.c,
          since it could not be seen on the plugin-side (at least when using GCC 9)

2020-08-30  Preston Crow
    * server/skill_util.c: 'skills' command output is fixed-width format
      with a '-l' option for long display with full perm exp information.

2020-08-30  Preston Crow
    * types/teleporter/teleporter.c: Use subtype or other_arch to restrict
      teleporters to specific object types.

2020-08-30  Preston Crow
    * common/living.c,
      common/loader.l,
      common/object.c,
      include/global.h,
      include/object.h,
      server/plugins.c,
      server/skill_util.c: Change from tracking perm_exp to total_exp, so any
	rounding is done when it is used, not as it is accumulated.

2020-08-15  Daniel Hawkins
    * socket/sounds.c: Adjust sound volume based on proximity to player.
        This makes things like the bullet squares in random maps more bearable.

2020-08-14  Daniel Hawkins
    * server/server.c: Partially revert fix, since assumption that all speeds would
        be positive did not hold for custom creatures on random maps.

2020-08-11  Daniel Hawkins
    * common/living.c,
      server/server.c,
      common/loader.l: Load speed as positive number, and then set a minimum speed
        for monsters. Fixes bug #854.

2020-08-06  Daniel Hawkins
    * plugins/cfpython/cfpython_object.c: Expose item_power to the python API as a R/W value.
    * common/living.c: Add code to handle giving experience to weapons, so that we can handle weapons that get stronger over time.

2020-01-16  Daniel Hawkins
    * socket/loop.c: Replace assertion of nonnull cmd in handle_cmd with a check
        that rejects the null command but keeps the server running.

2019-12-29  Daniel Hawkins
    * common/artifact.c: Reduce severity of artifacts with no chance to debug.
        There are use cases where no artifact chance makes sense.
        They can be obsoleted, craftable, quest items, or anything else that shouldn't
        appear in random loot.

2019-12-05  Daniel Hawkins
    * server/monster.c: Reduce calls to monster_compute_path.

2019-12-04  Daniel Hawkins
    * socket/request.c: Reduce dereferences in draw_client_map2.

2019-12-03  Daniel Hawkins
    * common/los.c: Reduce recursion overhead in set_wall() by checking to see if the tile has already been set.
    * include/sockproto.h: Remove draw_client_map2. It was only used in request.c
    * socket/request.c: Make draw_client_map2 a static function.

2019-12-01  Daniel Hawkins
    * common/los.c,
      server/player.c,
      server/c_wiz.c,
      include/libproto.h: Adjust some trivial cases of los calculations to use player structure directly.
    * socket/loop.c: Add detail to message indicating a tick took too long.

2019-11-30  Daniel Hawkins
    * lib/artifacts: Add an artifact for new kite shield arch. Requires r21039.

2019-11-29  Daniel Hawkins
    * lib/artifacts: Remove horn of sirens for artifact list, since it is a god-given item.
        Fixes Bug #861.

2019-08-11  Daniel Hawkins
    * lib/artifacts: Add artifacts for white/black leather cloaks.
    * lib/formulae: Add formulae to craft white/black leather cloaks and leather armour.
    * common/recipe.c: Add check handling for when one recipe is done with a cauldron and
      another using a tool and both use the same ingredients.

2019-04-22 Rick Tanner
   * server/spell_util.c: Patch #357 Balancing changes to the summoning branch
     Failed summons via Summoning skill no longer cost spell points.

2019-03-15  Daniel Hawkins
    * common/arch.c: Dynamically generate is_type_valid().
    * common/is_valid_types_gen.pl: Dynamically generate is_type_valid().
    * common/Makefile.am: Add build rules to dynamically generate is_type_valid().
    (Patched with a non-defective version on 2019-03-20)

2019-01-03  Daniel Hawkins
    * server/skills.c: Fix encumbered throw logic to penalize high encumbrance
      instead of reward it.

2018-12-31  Daniel Hawkins
    * utils/crossloop.web.in: Make SRCDIR be determined on the fly.
      This reduces the number of variables that need to be changed before use.
    * common/readable.c: Add more book titles.

2018-12-30  Daniel Hawkins
    * server/player.c: Simplify melee weapon pickup logic, since tables and chairs
      haven't been weapons since 2011.

2018-12-24  Daniel Hawkins
    * server/c_object.c: Fix "gods...retrieves" to agree in plurality.
    * plugins/cfcitybell/*: Refactor city temple bell event to be its own non-Python unit.
    * plugins/Makefile.am: Add the new independent citybell plugin to the build tree.
    * configure.ac: Add config rules to allow for the city bells to be disabled.

2018-12-23  Daniel Hawkins
    * common/links.c: Better utilize the calloc function to set the dynamic allocated
      lists to 0 as it is allocated.
    * socket/request.c: Rewrite spell_client_use to use a switch statement instead of ifs.

2018-12-22  Daniel Hawkins
    * server/hiscore.c: Adjust i+1 followed by i++ to be ++i;
        (Reverted due to out-of-bounds error w/ optimization by ryo_saeba on 26 Dec)

2018-10-28  Daniel Hawkins
    * common/living.c,
      common/artifact.c: Make items that have the confused flag set confuse the wielder.
    * lib/artifacts: Add a helmet of Confusion to utilize the new item-sourced confusion.

2018-10-24  Daniel Hawkins
    * common/readable.c: Make text from the messages file not get split at buffer boundaries.
    * server/player.c,
      common/living.c: Make dragon ability gain levels specified in magic field in treasurelist.

2018-10-23  Daniel Hawkins
    * common/readable.c: Add "illuminated text" as a religion book name.
    * server/c_object.c: Refactor a loop through the player's inventory to better use the op->contr->mark pointer.

2018-10-22  Daniel Hawkins
    * random_maps/style.c: Remove superfluous use of buffer and snprintf.
    * include/global.h,
      common/loader.l,
      common/init.c,
      common/arch.c: Remove ::warn_archetypes and make loader use try_find_archetype.
    * common/recipe.c: Refactor recipe creation to use calloc instead of malloc.

2018-09-24  Daniel Hawkins
    * types/Makefile.am: Add new mimic type file to build.
    * server/ob_types.c: Initialize the apply hook for mimics.
    * include/typesproto.h: Function prototype for apply hook initialization.
    * include/object.h: Add MIMIC type and update max type number.
    * types/mimic/mimic.c: Add code for MIMIC type.
    * common/item.c: Add new type to the table defined here. Make it like container.
    * random_maps/treasure.c: Make a very slim chance of a mimic replacing a chest when diffiuclty > 5.

2018-06-02  Daniel Hawkins
    * server/time.c: Simplify the code for determining the placement of a new object in change_object().

2018-05-31  Daniel Hawkins
    * server/attack.c: Fix double application of resistance for life stealing attacktype.
      Also, add more complex algorithm for slowness to reduce >1 speed sometimes.

2018-05-28  Daniel Hawkins
    * common/living.c: Simplification of bracer/force/armor AC/WC code in fix_object:
      if we don't replace the best value, don't waste time subtracting and adding the same
      value to the object.
      Also, fix bug #823 by directly applying bracer ac and wc for serpentmen players.
    * server/monster.c: Skip performance shortcuts in monster_compute_path for
      multitile monsters.

2018-05-23  Daniel Hawkins
    * server/attack.c: Make death attacks do no damage when the monster cannot
      be affected by that death attack. Also make the order of the strstr check
      work for multiple races defined on the creature, and only one on the weapon.
      Make the strstr reorder on triple-damage calc, too.
    * server/init.c: Change race loading logic so that a race defined in lib/races
      is added to an arch's race field, rather than replace it. This allows for
      "slay vampire" and other slaying fields that aren't a normal race to actually
      function while still preserving summon lists for summon cult monster.

2018-05-21  Daniel Hawkins
    * server/attack.c: Make death attacks relevant.

2018-05-19  Daniel Hawkins
    * server/player.c: Load background music when moving through tiled maps.

2018-02-12  Daniel Hawkins
    * server/monster.c: Refactor to reduce calls to ob_blocked by remembering prior blocked tiles from the same run.
      This causes a small but noticable (~5%) reduction in overall pathing cost.
      Do a quick check in monster_compute_path to ensure there are multiple ways the monster can move around
      before attempting to go through the whole pathing algorithm. This yields significant performance improvements.

2018-02-11  Daniel Hawkins
    * common/map.c: Refactor get_map_from_coord() to be iterative instead of recursive.

2018-02-03  Daniel Hawkins
    * server/time.c: Improve change_object to handle multi-tile monster changes.
    * test/unit/server/check_monster_change.c: Add unit test for changing monsters.
    * test/unit/server/Makefile.am: Add new unit test to the build instructions.

2018-01-24  Daniel Hawkins
    * server/login.c: Prevent memory leak of party_name on attempted login of a player with negative hp.

2018-01-23  Daniel Hawkins
    * common/anim.c: Reduce calls to realloc on animation load. Handle failed realloc gracefully.

2018-01-22  Daniel Hawkins
    * server/plugins.c: Fix redundant call to va_end in cfapi_object_move.

2018-01-21  Daniel Hawkins
    * common/init.c: Use strspn for finding the first non-whitespace character in attackmess,
      and allow for tabs to be used as whitespace.
    * socket/request.c: Reorder conditions to prevent segfault if pl is null in esrv_remove_spell.

2018-01-18  Daniel Hawkins
    * lib/artifacts: Fix boots/gauntlets that should posess a damage value that don't. Fixes bug #832.

2018-01-14  Daniel Hawkins
    * server/skills.c: Fix segfault from check for transport when monster uses
      jumping skill.

2018-01-13  Daniel Hawkins
    * lib/artifacts: Make goblin leaders generate facing forward and animate the
      artifact monsters so the versions that have animations use the animation frames.

2018-01-08  Daniel Hawkins
    * common/artifact.c: Expand identified face use of pre-identified items, even
      if the type otherwise need identifying. This makes gems appear with the correct face.

2018-01-07  Daniel Hawkins
    * common/artifact.c: Make artifacts of items that do not need identifying
      appear using their identified face and animation. In particular, this makes
      the randomly-generated tougher monsters (e.g. goblin leaders) differentiable
      from the normal monsters in the room.

2018-01-02  Daniel Hawkins
    * server/shop.c: Make shop pricing treat unidentified items as if they were
      the normal version of the item. Fixes Bug #812.

2017-09-02  Daniel Hawkins
    * random_maps/main.c: Expand test generator options to allow
      layout choice.

2017-08-26  Daniel Hawkins
    * types/spellbook/spellbook.c: Identify spellbooks of spells you already know
      when applying them. Also make the message name the spell.

2017-08-23  Daniel Hawkins
    * server/attack.c: Add message and set a new flag for indicating a player is paralyzed.
    * server/player.c: Add message for end of paralysis and disallow blindly eating
      while paralyzed.
    * server/monster.c: Make sure monsters unset paralyze flag when they can move again.
    * include/define.h: Creation of FLAG_PARALYZED flag.
    * common/loader.l: Allow for the paralyzed flag to exist in objects saved to file.

2017-08-15  Daniel Hawkins
    * server/skills.c: Disallow jumping while in a transport.

2017-08-13  Daniel Hawkins
    * server/c_wiz.c: Update error message for set_god.

2017-08-09  Daniel Hawkins
    * common/living.c: Fix incomplete totaling of equipped item power
      in fix_object(). Should fix bug #648.

2017-08-05  Daniel Hawkins
    * server/time.c: Make firewalls choose their direction to cast based on direction,
      not sp. Fixes bug #834.
    * common/button.c: Fix rotation of firewalls to also use direction.
      Fix the animation problem that caused a segfault, too. Solves bug #835.

2017-07-29	Rick Tanner
	* lib/help/statistics.en: Update statistics help file with information on
	  damage per second, and time played.

2017-07-27	Daniel Hawkins
	* server/c_misc.c: Add damage per second calculation to "statistics"
	  command.

2017-07-24	Kevin Zheng
	* server/attack.c: Play attack sounds on the map
	* server/commands.c: Allow players to forget spells

2017-06-17	Daniel Hawkins
	* server/attack.c: Update display for pk to only show when player kills a
	  player other than self.

2017-05-31	Rick Tanner
	* lib/help/nextkey.en: New help file for nextkey command
	* lib/help/prevkey.en: New help file for prevkey command

2017-05-20	Kevin Zheng
	* socket/sounds.c: Play region music if a map doesn't have music

2017-02-18	Daniel Hawkins
	* server/monster.c: Prevent monster_compute_path from being called for
	  confused monsters.

2016-06-03  Daniel Hawkins
	* common/map.c: Only check for null tile map if we tried to load;
	  if we didn't try to load, tile map was already non-null.

2016-05-23  Daniel Hawkins
	* common/map.c: Prevent a potential segfault in get_map_from_coord() and
	  out_of_map() if load_and_link_tiled_map() returns a null map. It was
	  used before it was verified in previous behavior. Updated the documentation
	  for each function to state the initial map passed to it must not be NULL.

2016-05-22  Daniel Hawkins
	* server/server.c: Move the static string reference into the condition
	  branch, since we only use it on that branch.

2016-05-21  Daniel Hawkins
	* common/los.c: Refactored set_wall() to recycle a couple variables to
	  reduce recursion overhead.
	* plugins/cfanim/cfanim.c: Refactored get_boolean() to not use strncmp(),
	  since it was only checking the first character anyway.
	* common/player.c: Changed a malloc() with a memset() to 0 into a calloc().
	* lib/attackmess: Change 'acrobaticly' to 'acrobatically'.

2016-05-18  Daniel Hawkins
	* common/map.c: Add new maps to the front of the mapstruct linked list
	  since there does not appear to be any order preference in the rest of
	  the codebase.
	  Remove a redundant memset to 0 after a calloc(). Also check for null
	  to prevent potential segfaults.
	  Optimize out newx and newy in get_map_flags(). x and y are already copies.
	  Optimize out check_dir in compute_monster_path().
	  Optimize the initialization of distance to use memset() instead of a loop.

2016-05-17  Daniel Hawkins
	* common/living.c: Change the depletion message for Con loss to differentiate
	  it from the permanent stat loss message.
	* server/monster.c: Additional optimizations in monster_compute_path().

2016-05-16  Daniel Hawkins
	* server/knowledge.c: Use malloc instead of calloc where all struct values
	  are subsequently set.

2016-05-15  Daniel Hawkins
	* server/monster.c: Remove redundant hp value check in monster_do_living().
	  Adjusted the run_away health check to use integers instead of floats.
	  This causes a 1-higher threshold for some maxhp values if run_away is
	  13, 21, 26, 39, 42, 52, 53, 59, 65, 71, 78, or 84.
	* server/attack.c: Made same adjustment to run_away calc as in monster.c.
	  In this manner, the rounding change occurs on both set and unset of FLAG_RUN_AWAY.
	* server/arch.c: Refactor some comparisons in is_type_valid() to use a switch statement.

2016-05-14  Daniel Hawkins
	* server/monster.c: Optimizations in monster_compute_path().
	* common/object.c: Reimplement the absdir() function to avoid loops.

2016-05-07  Daniel Hawkins
	* configure.ac: Change some of the "#" Comments to "dnl" comments.
	  They didn't need to go into the generated config file, so they won't be.

2016-05-02  Daniel Hawkins
	* doc/spell-docs/tome-of-magic.txt: Made some manual edits to effects of
	  spells. Still far from complete.
	* doc/spell-docs/Makefile.am: Tweaked the cleanfiles so that 'make clean'
	  cleans up all the generated PostScript files.

2016-01-11  Daniel Hawkins
	* doc/scripts/bonus_extract.pl: Refactor shop bonus to match actual implementation.

2015-12-25  Daniel Hawkins
	* configure.ac: Add check for librt and link it in if found.

2015-12-18  Daniel Hawkins
	* doc/spell-docs/spell-summary.ps: Removed. Replaced by a text file for
	  easier maintenance in the future.
	* doc/spell-docs/spell-summary.txt: New text file with the information
	  formerly stored in spell-summary.ps.
	* doc/spell-docs/create_ps.sh: Add a new command to generate spell-summary.ps.
	* configure.ac: Removed check for memcmp(), srand(), and size_t.
	  These should all be definied correctly in a C99 compiler, which we require.
	* include/win32.h: Removed reference to HAVE_SRAND macro from autoconfig.h.
	* include/define.h: Cleaned up RANDOM and SRANDOM macro definitions.
	  Since we require C99, there should not be a situation where not even srand is found.

2015-12-15  Daniel Hawkins
	* doc/spell-docs/create_ps.sh: Abstracted the PostScript generation
	  out of the perl script. Also add spell-info.ps to the generated
	  documents.
	* doc/spell-docs/Makefile.am: Adjusted make definitions to
	  accomodate for new script.
	* doc/spell-docs/spell-info.ps: Removed. Generated from spell-info.txt.
	* doc/spell-docs/spell-lists.pl: Removed PostScript output.
	* doc/spell-docs/tome-of-magic.ps: Removed. Generated from
	  tome-of-magic.txt.

2015-12-13  Daniel Hawkins
	* server/skill_util.c: Fix phantom miss messages that should occur only with [Fire]+attack.

2015-12-12	Daniel Hawkins
	* doc/Makefile.am: Add build target for making documentation archive
	  with new dynamically generated spell lists.
	* doc/spell-docs/Makefile.am: Add build target for dynamic generation of spell lists.
	  Also, clean up the EXTRA_DIST declaration.
	* doc/spell-docs/spell-lists.pl: Added a perl script to dynamically generate spell lists.
	* doc/spell-docs/README: Updated to mention effort to upgrade docs.
	* doc/spell-docs/prayer-list.ps: Removed. Now dynamically generated from spell-lists.pl.
	* doc/spell-docs/prayer-list.txt: Removed. Now dynamically generated from spell-lists.pl.
	* doc/spell-docs/spell-list.ps: Removed. Now dynamically generated from spell-lists.pl.

2015-12-11	Daniel Hawkins
	* doc/scripts/bonus-extract.pl: Refactor old bonus-extract,
	  replacing it with a perl script that gets the bonuses from
	  stat_bonus.
	* doc/playbook-html/Makefile.am: Change the bonus.html build target to run the new script.
	* doc/playbook-html/bonus-extract: Removed.
	* doc/playbook/Makefile.am: Change the bonus.tex build target to run the new script.
	* doc/playbook/bonus-extract: Removed.

2015-12-10	Daniel Hawkins
	* server/account.c: Add [ to the blocked characters.
	  It causes improper message printing on the client side.
	  This does not effect existing characters, only new ones.

2015-12-09	Kevin Zheng
	* socket/info.c: Log messages that are broadcast to all players

2015-12-07	Daniel Hawkins
	* doc/scripts/gods-extract.pl: Refactor old gods-extract AWK scripts into a perl script.
	  While we're here, also reimplement protections, immunities, and vulnerabilities.
	* doc/playbook-html/Makefile.am: Point to the new gods-extract script.
	* doc/playbook-html/gods-extract: Removed.
	* doc/playbook/Makefile.am: Point to the new gods-extract script.
	* doc/playbook/gods-extract: Removed.

2015-12-06  Nicolas Weeger
  * server/c_object.c: Display whether pickup is enabled or inhibited.

2015-12-06  Nicolas Weeger
  Display animations when a spell is blocked, bungled, or town portal failed.
  * include/object.h
  * server/spell_util.c

2015-11-25	Kevin Zheng
	* server/daemon.c: Remove server '-detach' flag

2015-11-21  Andreas Kirschbaum
	* common/artifact.c: Do not truncate face names.

2015-11-10  Daniel Hawkins
	* doc/scripts/levels-extract.pl: Created a new level extraction tool
	  for the documentation that works with modern server code and
	  is utilized for both html and latex outputs.
	* doc/playbook/Makefile.am: Point to the new perl script for level extraction.
	* doc/playbook/levels-extract: Removed. It was designed to find a hardcoded
	  exp table in living.c.
	* doc/playbook-html/Makefile.am: Point to the new perl script for level extraction.
	* doc/playbook-html/levels-extract: Removed. It was designed to find a hardcoded
	  exp table in living.c.

2015-05-31  Daniel Hawkins
	* common/living.c: Fixed a bug introduced in r19972 that made skill
	  experience based off total level instead of skill level.

2015-05-28  Daniel Hawkins
	* server/player.c: Tweak the starvation calculation to not use a loop.
	  Tweak the similar_direction calculation to use modulus instead of
	  a switch statement.

2015-05-25  Daniel Hawkins
	* configure.ac: Made the configure script exit if lex and flex are not found.
	* utils/cfarches.xsl: Refactored can_use_xxx to be displayed in a single
	  cell. Also completed the set of can_use_xxx options.
	  Added XSL Transformation output for body slots.

2015-05-24  Daniel Hawkins
	* common/living.c: Fixed a bug in which the player's experience would
	  endlessly loop in the level below maxlevel.

2015-05-22	Daniel Hawkins
	* utils/cfarches.xsl: Refactored resistances to be displayed in a single
	  cell for each arch. Also added the rest of the resistances to the
	  XSL transformation.
	  Added attacktype to the generated HTML table.
	  Added plural names to the name display.

2015-05-21	Daniel Hawkins
	* utils/arch2xml.py: Tweaked whitespace of tag output.
	  Then added HTML/XML escapes for &, <, and > inside comments and messages.
	  Fixed the arch tag writing mechanism to give each object its own arch
	   instead of each file getting its own arch tag.
	  Made empty comment lines be ignored instead of printed as [#].
	* utils/cfarches.xsl: Adjusted headings to be actual HTML table headings.

2015-05-20	Daniel Hawkins
	* lib/artifacts: Adjusted several item messages for clarity and grammar.
	* server/c_object.c: Don't show item story (msg) unless it has been
    identified.

2015-05-19	Daniel Hawkins (SilverNexus)
	* test/toolkit/toolkit_crossedit.c: Retired old crossedit test toolkit.
	It was never implemented, and crossedit has been gone for years.

2015-05-16	Daniel Hawkins (SilverNexus)
	* utils/scores.pl.in: Made experience table be dynamically
	read in from the server's installed exp_table file.

2015-05-15	Daniel Hawkins (SilverNexus)
	* random_maps/special.c: Fix fountain material to prevent fountains
	that are actually potions from being destroyed.

2015-03-24	Rick Tanner
	* lib/config/metaserver2: Add entries for additional metaservers, one
	in the US and the other in EU.

2015-03-18	Kevin Zheng
	* server/shop.c: Adjust item enchantment price bonus

2015-02-18	Kevin Zheng
	* server/shop.c: Prevent shops from claiming 'worthless' sold items
	* configure.ac: Ask for a C99 compiler

2015-02-17	Kevin Zheng
	* plugins/: Remove old shop functions from plugin interface

2014-12-21	Kevin Zheng
	* server/shop.c: Overhaul shop prices
	* server/shop.c: Skip shop price adjustment when approximating

2014-12-09	Kevin Zheng
	* server/shop.c: Change the value of unidentified items
	* common/object.c: Fix object_set_msg() to append missing newlines

2014-08-26	SilverNexus
	* lib/formulae: Added formulae incorporating leather from r19607.

2014-06-21	Kevin Zheng
	* utils/crossloop.in: This script now reads its configuration from a
	file. Changes should be made in the new file, not in the script itself.

2014-06-11	SilverNexus
	* lib/checkarch.pl: Rename old checkarch script, since it isn't
	part of the build process and isn't dynamically generated, either.
	* lib/Makefile.am: Remove checkarch script from makefile, since
	no references are made to it.

2014-05-27	SilverNexus
	* lib/formulae: Added smithery formulas to smelt ores into bars.

2014-05-27	SilverNexus
	* common/object.c: Fix inventory weight calculation bug from merging objects.

2014-05-20	SilverNexus
	* debian/cross-edit.files,
	* debian/control,
	* debian/rules: Retire crossedit construction from debian files.

2014-05-19	SilverNexus
	* utils/add_throw: Retire add_throw script, skills have been
	  with the newer system for a while now. I think it may have
	  been in excess of fifteen years.

2014-05-19	SilverNexus
	* socket/loop.c,
	* socket/request.c,
	* include/sockproto.h: Retire support for mapredraw command.
	  It hasn't been used since 1.10.0 client in 2007.
	  On the server side, its been an empty function since 2005.

2014-05-17	Andreas Kirschbaum

	* For all files being written: add error checks and retain the
	previous file contents if a write error occurs.

2014-05-15	SilverNexus
	* server/c_misc.c: Don't allow account-bound characters to change
	  character password. It did not affect the account password, anyway.

2014-05-13	SilverNexus
	* server/c_misc.c: Fix in-game version command. Previous behavior
	  displayed "Crossfire FULL_VERSION".

2014-05-10	Kevin Zheng
	* socket/loop.c: Implement 'heartbeat' to check client connection.

2014-04-19	Kevin Zheng
	* server/server.c: Improve server shutdown command.

2014-04-18	Kevin Zheng
	* utils/crossloop.in: Add crash notification to crossloop.

2014-04-17	Kevin Zheng
	* server/init.c: Remove outdated "-o" flag.

2014-04-12	Kevin Zheng
	* utils/cfmeta-rrd: Retire since it no longer works with new metaserver.
	* utils/checkInternalPrototype.sh: Retire in favor of compiler flags.
	* utils/crossfire-loop.c: Retire in favor of shell script.
	* utils/get_release.in: Retire since CVS is gone.
	* utils/update_rp: Retire since CVS is gone.

2014-04-07	Kevin Zheng
	* utils/crossloop.in: Remove flags related to non-default plugins.

2014-04-06	Kevin Zheng
	* server/init.c: Clean up and sort command-line arguments.
	* server/move.c: Clean up "start to attack" message.
	* server/server.c: Retire des_crypt(3) in favor of crypt(3).

==============================================================================
Changes for 1.71.0
==============================================================================

2014-03-29	Kevin Zheng
	* server/server.c: Fix emergency map.

2014-03-17	Kevin Zheng
	* devel/crossfire-config.c: Retire build parameter dumper.

2014-03-04	Kevin Zheng
	* configure.ac: Disable newspaper and logger plugin by default.
	* server/: Reduce unnecessary startup verbosity.
	* server/misc.c: Shorten log level messages.

2014-01-01	Nicolas Weeger
	* common/map.c: Ensure objects are on a valid map position.

2013-11-29	SilverNexus
	* server/attack.c: Added damage for when a player burns an equipped
	item (e.g. with flint and steel). Should help balance the utility of
	the flint and steel.

2013-11-10	SilverNexus
	Fix for bug #762: Permadeath segfault on dead character load.

	* socket/request.c: do not send dead characters' information to the client
	* include/account_char.h: add a flag for dead characters
	* server/player.c: add account name to dead player's slaying field
	* server/account_char.c: add handling for new flag for dead characters
	* server/resurrection.c: make resurrection reset the dead character
	flag on a successful resurrection

2013-09-07	Andreas Kirschbaum
	Properly track cast spells. Fixes infrequent server crashes due to 100%
	CPU load.

2013-07-18	Nicolas Weeger
	Fix for bug #755: Player 'freezes' after boarded wagon is destroyed
	server/attack.c: reset player's contr->transport to NULL.

2013-01-11	Karla Stenger
	* server/apply.c: Fixed wrong check for applied flag when closing
	container to open another one.

2012-11-27	Karla Stenger
	* common/item.c: Add "(glowing)" to rings and amulets' description.

2012-07-01	Nicolas Weeger
	Fix for bug #3536508: Broken firewall with missile swarm.

2012-06-26	MSW
	Modify handle_client() to process more than one socket command per tick.
	This chops about half a second off time spent in negotiate_connection()
	on local client/server - probably bigger difference for remote servers.
	Also, as code was, if using image caching, no further processing would
	happen after first askface, so this should improve performance notably in
	those cases.

2012-06-10	Nicolas Weeger
	Apply patch #3532595: Restrict account creation, by Eddward DeVilla.

==============================================================================
Changes for 1.70.0
==============================================================================

Hack to make the server work on FreeBSD 9.
Nicolas Weeger 2012-02-07

Make artifacts hide their properties when not identified.
Nicolas Weeger 2012-01-28

Do not fail build when not building in a working copy.
Andreas Kirschbaum 2012-01-19

Implement feature request #1676810: Throw specific items.
Throwing will now use marked item, or items in a 'quiver of throwing items'.
Nicolas Weeger 2011-12-30

Improve 'probe' spell. Over level 15, a status bar is displayed over the target.
Duration and precision are based on the level.
Requires arch revision 16342 or higher.
Nicolas Weeger 2011-12-28

Fix bug #3440456: Animated bolts.
Adjust animate_object() to correctly handle FLAG_IS_TURNABLE,
and make object_update_turn_face() a mere wrapper to that function.
Nicolas Weeger 2011-12-18

Add logic to do svn version check between plugin and server - this prevents
incompatible plugins from being used.
MSW 2011-11-26

New server argument: -disable-plugin.
Disables a plugin from its name, 'All' to disable all.
Nicolas Weeger 2011-11-20

New server setting: "special_break_map".
Controls whether submaps in random maps can break the walls to be placed.
On (can break) by default for historical reasons.
Nicolas Weeger 2011-11-20

Rewrite the i18n system. This makes it easier to use strings in the code,
instead of arbitrary identifiers.
Nicolas Weeger 2011-11-12

Improve artifact support.
Add an 'artifact' field to 'object', that is saved and loaded, to keep trace
of what (optional) artifact an item was created with.
This enables artifact modifications on existing items.
Nicolas Weeger 2011-11-01

Apply patch #3428070: Autoreconf Warnings, by Steven Johnson.
It is for 'client', but fixes the same bug on server.
Nicolas Weeger 2011-10-27

Fix bug #2005689: 2.0 Creator creates items with duplicate names.
Have creator objects clear the title instead of setting both it and the name.
Nicolas Weeger 2011-10-22

Fix invalid expression.
Nicolas Weeger 2011-10-21

Add sys/socket.h to includes, since newserver.h needs it on some systems, and
every file includes that.  Remove it from files which previously included it,
since includes.h takes care of that now.
MSW 2011-10-08

Fix face issue with artifacts, eg gems.
Nicolas Weeger 2011-09-24

Fix account-related potential crashes.
Nicolas Weeger 2011-09-12

Remove curl/types.h include, which is obsolete.
Nicolas Weeger 2011-09-10

Enable server to listen to IPV6 ports, as well as IPV4.
Maurice Massar 2011-09-10

Relax check for valid listening ports to allow 1..65535.
Andreas Kirschbaum 2011-09-08

Fix experience for cure disease going to invalid skill (lockpicking for instance).
Nicolas Weeger 2011-08-14

Fix crash when a spellbook a player is reading gets identified, merges and
thus changes.
Nicolas Weeger 2011-08-13

Enable altars to have a special animation when there is a god intervention.
Nicolas Weeger 2011-08-11

Inform player of changes in wc, ac and speed.
Nicolas Weeger 2011-08-07

Update character speed and other attributes when consuming items from
inventory.
Andreas Kirschbaum 2011-08-05

Correctly display changes due to 'bless' spell. Add spell expiry.
Nicolas Weeger 2011-08-04

Implement "blessed 1" for TREASURE items: such items never create bad or
cursed items (GT_ONLY_GOOD).
Andreas Kirschbaum 2011-08-04

Add potion of 'testing monsters', casting probe.
Add recipe for it.
Both patches courtesy Khaleh.
Nicolas Weeger 2011-07-30

Give the alchemy level to generated potions. Fix documentation.
Nicolas Weeger 2011-07-30

Remove socket_info.nconn which gets invalid in some cases.
Nicolas Weeger 2011-07-24

Add protocol to send quest updates to client.
Add optional face to quests.
Nicolas Weeger 2011-07-23

Make container's contents browsable like the ground view.
Nicolas Weeger 2011-07-10

Randomize chests in random maps.
Nicolas Weeger 2011-07-08

Make immunity reduce symptoms when not totally immune.
This enables partial disease resistances.
Nicolas Weeger 2011-07-08

Display recipes a player knows that can use an item when examining it.
Nicolas Weeger 2011-07-08

Tentative fix for bug #3349111: invidious server crash.
Don't decrease socket_info.nconns if the socket is not available.
In some cases nconns gets decreased too much, which leads to issues.
The real fix would be to figure why there is a double decrease...
Nicolas Weeger 2011-07-05

Forbid un-locking items not in direct player's inventory.
Nicolas Weeger 2011-07-05

Tentative fix for bug #3349111: invidious server crash.
Do not destroy init_socket[0], instead try to reopen the listening socket.
Do not try to check its status if not valid.
Nicolas Weeger 2011-07-02

Correctly link all regions to their parent. Warn if not found.
Nicolas Weeger 2011-07-02

Remove NEW_MATERIAL_CODE support.
Nicolas Weeger 2011-06-29

Fix crash with detect monster on custom monsters.
Reference count wasn't uptodate, thus archetype would be freed.
Nicolas Weeger 2011-06-28

Rewrite picture loading logic to not be dependant on picture number
in the various bmaps and crossfire.x files.
Remove picture number in crossfire.x files.
Nicolas Weeger 2011-06-26

Remove stray spaces from outputs of applymode, bowmode, petmode, usekeys.
Andreas Kirschbaum 2011-06-25

Remove obsolete type 44 EXPERIENCE.
Nicolas Weeger 2011-06-25

Allow non weapon attacks to have animation suffixes.
Nicolas Weeger 2011-06-25

Redirect Python's stderr and stdout to the Crossfire log.
Uses technique and code from
 http://stackoverflow.com/questions/4307187/how-to-catch-python-stdout-in-c-code
Nicolas Weeger 2011-06-23

Don't open Python script file if cached.
Nicolas Weeger 2011-06-23

Do not crash due to corrupted name/password protocol packets.
Andreas Kirschbaum 2011-06-19

Send golem's hp and maxhp as part of statistics, so client can display that.
Nicolas Weeger 2011-06-12

Give access to jail's information for a region to the plugins.
Nicolas Weeger 2011-06-09

Use a specific field (wc_increase_rate, like skills) for summoning creature's
wc improvement by level.
Nicolas Weeger 2011-06-05

Fix for bug #3309792: Invidious server crash.
Don't try to send animation 0, instead clear FLAG_ANIMATE.
Set a bug face for animation 0, just in case.
Nicolas Weeger 2011-06-01

Correctly update improved weapon's weight in inventory.
Nicolas Weeger 2011-05-29

Ensure account information is stored at creation and character linking.
Nicolas Weeger 2011-05-29

Implement account password change.
Nicolas Weeger 2011-05-23

Tentative fix for bug #3127973: 'detect monster' effect badly positioned.
Nicolas Weeger 2011-05-22

Fix crash with character creation using jxclient.
Nicolas Weeger 2011-05-22

Prevent converters from creating unpaid coins.
Andreas Kirschbaum 2011-05-21

Fix Lythander's pipe not having spell it should.
Nicolas Weeger 2011-05-21

Fix god's knowledge handling always considering the god information as new.
Nicolas Weeger 2011-05-07

Allow messages from lib/messages to be stored through knowledge system.
Nicolas Weeger 2011-05-07

Improve messages (lib/messages): add relative chance, so messages can be
more frequent than others.
Nicolas Weeger 2011-05-07

Remove hard coded stat values - the stat bonuses (as well as max stat) can
be set in a file that is read at load time.  The default lib/stat_bonus
file has bonuses exactly the same as the old hard coded values (or in
case of Charisma, as close as could be done with the change).  Note:
you must do a 'make install' in the lib directory after this update,
otherwise, your server will be missing the stat bonuses and fail to run.
Automake/autoconf should automatically be run to know about the stat_bonus
file.
MSW 2011-05-01

Fix type conversion error and logic mistake resulting in really high prices
when selling items in some situations.
See the end of query_cost() in server/shop.c for more details.
This may fix bug #3163782: Inscription glitch brings 'unimaginable amount of platinum'.
Nicolas Weeger 2011-03-22

==============================================================================
Changes for 1.60.0
==============================================================================

lib/collect.pl.in: Remove default line which just generates an error when
    server starts up and doesn't do anything.
server/init.c: Update copyright date & owners that is displayed when program
   starts up.
MSW 2011-01-26

Add another flag to add_player() to have it supress harmless, but perhaps
confusing message, about swapping stats - on new clients, all stats are
set up in the client - message will still be printed for older clients.
MSW 2011-01-22

Remove metaserver1 support from server.
lib/settings: Remove settings for metaserver1, add not to update metaserver2
server/init.c, socket/metaserver.c: Remove code
MSW 2011-01-22

Don't put artifacts on active list. This fixes boots of mobility and also avoids
an [Error] in the log.
Nicolas Weeger 2011-01-08

Fix memory leak in formula code.
Nicolas Weeger 2011-01-08

Don't make 2 fountains in random maps, one is enough.
Nicolas Weeger 2011-01-08

Fix broken fountains in random maps.
Nicolas Weeger 2011-01-08

test/unit/common/check_living.c: Modify some hard coded array sizes to use
    the defined values.  Remove randomly generated input values and put those
    into arrays - the test only works with specific input values, and randomly
    generating them only works if one is using the same random number generator.
test/unit/common/check_item.c: Disable this test if not using glibc - its
    checking requires specific random number sequence - however, since many
    of the RANDOM() calls are from within libcommon, not easy to hard code
    the values.
INSTALL: Update notes on make check - only works with default values.
MSW 2010-12-26

Change the Animations structure to use New_Face* instead of indexes.
Nicolas Weeger 2010-12-05

Accept skill names with spaces (sense curse/sense magic) in addexp
command.
Andreas Kirschbaum 2010-12-04

Fix some compilers errors in CRE - 0b is non standard constant declaration,
some compilers do not like a semicolon after Q_PROPERTY declarations, and
it seemed some include files were missing.
MSW 2010-11-26

Added function to python plugin for getting the material name and materil
number of objects.  Returns python dict. (Affects cfpython_object.c and
cfpython_object_private.h)
Alestan 2010-11-25

Takes in account the magic of a cauldron when the chance of successfully
making a recipe is calculated (adds (cauldron->magic+1)/2 to the skill_level
in the calculation).
Khaleh 2010-11-24

Allow cost_string_from_value() callers to specify maximum coin to use.
This enables the guild script to display the account balance with amberium
instead of platinum, while leaving shops in platinum.
Nicolas Weeger 2010-11-22

Few shop fixes:
1) limit total paid for unpaid items to be per item, not per group -
   otherwise, player just has to sell items in smaller bunches which
   doesn't make much sense.
2) Change the minor randomization of shop values to be based on
   map reset time - in this way, values will change slightly, bug
   if you are splitting a larger group, you will get consistent values
   (and if you logout and log back in, as long as the map hasn't reset,
   will also get same value)
3) Reset value strings for sold items to cap at platinum - fixes problem
   when selling valuable items that message said you got paid in jade
   coins, when in fact you did not.
MSW 2010-11-21

Enable traps to have unlimited uses, with the 'lifesave' flag.
Nicolas Weeger 2010-11-20

Automatically attempt to lockpick doors when not running.
This apparently doesn't alter readied spell or such, so should be ok.
Nicolas Weeger 2010-11-20

Fix bug 3028405 - Too high bargaining experience when selling containers -
due to variations in shop pricing (probably another bug), it can sometimes be
the case that bargaining skill results in a higher price (by 1 sp) - I think
this might just be a rounding error - however, since the value being used
was unsigned, this overflowed into high value, meaning high exp.  Change
that to unsigned, and now no overflow and not lots of exp.
MSW 2010-11-19

Add code to have identified objects merge together with like objects.
identify() modified to return object, which may be merged object.
examine() modified to stop processing once it does a skill ident
on an item, since the pointer is has may now be invalid.
MSW 2010-11-18

Add ability for server to provide choice of starting items for new -
characters - add support for sending that data and receiving and validating
the responses.  Add DRAGON_FOCUS type which changes the dragon focus.
----
common/arch.c: Update type checking.  Remove check for < 0 - since
    unsigned value is passed in, that will never happen.
doc/Developers/protocol: Add information about choice handling.
include/define.h: Add dragon_focus type.
server/ob_types.c: Add call to init_type_dragon_focus()
socket/requestinfo.c: Include choice options in race/class information
   we send to client.
socket/request.c: Add handling of item choices during character creation.
types/Makefile.am, types/dragon_focus/dragon_focus.c: Add code to
    handle applying dragon focus object.
MSW 2010-11-14

Tentative fix fox unability to create characters with some clients.
Nicolas Weeger 2010-11-14

Correctly copy initial map information when using advanced character creation.
This ensures that if a player dies she'll come back to the initial spot
instead of the hall of selection.
Fix for bug #3108219: Wrong map upon player death.
Nicolas Weeger 2010-11-14

Make skill tools be picked up by the 'magical device' category.
This implements part of feature request #3094026: auto-pickup option for
lockpick/flint&steel/torch archetypes
Nicolas Weeger 2010-11-14

Adjust alchemy success chance to not depend on the ingredients,
but only the recipe difficulty as defined in lib/formulae and the skill.
Nicolas Weeger 2010-11-07

Adjust alchemy danger computation: remove name length, but take into
account weight and cursed or damned item status.
Nicolas Weeger 2010-11-07

Have singing honor the 'no_mood_change' flag.
Nicolas Weeger 2010-11-06

Partial fix for #3093752: Too hard to get experience in oratory (part 3).
Allow orating to monsters with a message (why not?). This also
enables to orate to monsters on signs.
While we're at it, honor the 'no_mood_change' flag for oratory.
Nicolas Weeger 2010-11-06

Partial fix for #3093752: Too hard to get experience in oratory (part 2).
Set monster's skill to oratory (in this case) so experience for killing
something goes there.
Nicolas Weeger 2010-11-06

Partial fix for #3093752: Too hard to get experience in oratory (part 1).
Compute skill exp before setting monster's exp to 0.
Nicolas Weeger 2010-11-06

Fix broken magic map spell for "small" maps.
Nicolas Weeger 2010-11-06

Integrate some lore from the wiki to the messages file.
Nicolas Weeger 2010-11-06

Fix possibility of arithmetic overflow in the function buf_overflow().
Arvid Norlander 2010-10-25

Enable Python 2.7 to be used. Prefer 3.1 over 3.0.
Arvid Norlander 2010-10-24

Remove 'Fontindex' type and use 'uint16', for coherence.
Nicolas Weeger 2010-10-24

server/player.c: Bug fix for new character creation - give racial items
   before applying class so special racial faces stick.
MSW 2010-10-23

Update for advanced (in game) character creation:
common/init.c: Add check for new subtype for finding first map.
doc/Developers/protocol: Fix formatting, add starting map information.
include/shared/newclient.h: Add types for map requestinfo data.
include/map.h: Add new map subtypes.
include/player.h: Add new ADD_PLAYER_... values for add_player()
include/sockproto.h: updated
include/sproto.h: updated
server/player.c: Change add_player() to have second parameter be a
   bitmask value and not true/false.  Add apply_race_and_class().
server/apply.c: Reformat apply_changes_to_player() and have it take new
    parameter which determines if class stat bonus can exceed racial maximum.
socket/loop.c: Handle startingmap requestinfo requrest.
socket/lowlevel.c: Add SockList_AddLen16Data() for cases were we want
    to send a length prefixed block of data that is >255 bytes long.
socket/request.c: Update for loginmethod 2.  Update decode_name_password()
    to support passing length of data back to server via parameter.  Handle
    new character creation data from client.
socket/requestinfo.c: Add command to send choice of starting maps
   to the client.
types/player_changer/player_changer.c: Add new parameter to call of
   apply_changes_to_player()
MSW 2010-10-20

Prevent duplicate freeing of socket_struct entries.
Andreas Kirschbaum 2010-10-18

Correctly enable plugins to handle THROW and STOP events for projectiles.
Nicolas Weeger 2010-10-10

Change from using memory.h to using string.h, include memory.h as well
but make use of the check for it we already have in configure... That
header shouldn't be needed, but who knows... Also Update the output of
the -o flag to be more relevant...
Arvid Norlander 2010-10-10

Fix incorrect check in test/bugs/bugtrack/check_2879249.c.
Arvid Norlander 2010-10-10

Fix bug that caused server to sometimes crash on account login.
Arvid Norlander 2010-10-10

Give access to 'cost_string_from_value' to the Python plugin.
Nicolas Weeger 2010-10-10

Use all coin types when displaying prices.
Nicolas Weeger 2010-10-10

Do not make symbols globally visible by default on *nix (when supported),
on Windows this is always the case. To prevent hidden errors (since most
developers seem to test on *nix), use -fvisibility=hidden when GCC is used
and make the MODULEAPI and CF_PLUGIN macros use __attribute__ to mark those
as visible. This will not break on any compiler not supporting this, but will
prevent future hidden errors of this type.
A further advantage with this is that it reduces risk of symbol name collision
between various dynamic objects.
Arvid Norlander 2010-10-09

Add missing CF_PLUGIN in cflogger. This would only fail on Windows since by
default on *nix, all symbols are exported. Thus this error went unnoticed
until I tried with -fvisibility=hidden and setting the MODULEAPI and CF_PLUGIN
macros use __attribute__((visibility("default"))...
Arvid Norlander 2010-10-09

Fix some serious compiler warnings (missing declaration of function, fixed by
adding an #include; wrong type for argument to snprintf, fixed by changing to
use the proper variable) in the test suites.
Arvid Norlander 2010-10-08

Fix case where a size_t* and an int* were confused. On my system that
resulted in rare data corruption sometimes when the function in question
was called.
Arvid Norlander 2010-10-08

Fix format string used to include pid in temporary filenames. It was
%hx (short) but in reality pids are these days 32-bit. Change to %x and
cast the parameter to unsignd int.
Arvid Norlander 2010-10-08

Add missing -I in utils/Makefile.am, otherwise mapper.c doesn't find
global.h.
Arvid Norlander 2010-10-06

Don't crash when there is a mood floor with speed in a container.
Fix for bug #3079991: server crash from bad map object.
Nicolas Weeger 2010-10-03

Discard items of type PLAYER during map loading.
Fix for bug #3079997: server crash from misc type object in a petshop.
Nicolas Weeger 2010-10-03

New pickup type, 'container'.
Partial fix for bug #3075860: Auto-pickup fails to pickup certain items.
Nicolas Weeger 2010-10-02

Use 'magic devices' for weapon and armour improvers during pickup.
Partial fix for bug #3075860: Auto-pickup fails to pickup certain items.
Nicolas Weeger 2010-10-02

Extend 'reset' to enable to reset unique player maps and unique squares in maps.
Nicolas Weeger 2010-09-29

Fix bug #1811411: Ground view is not correctly updated.
Correctly send face and name information when there is a player on an item
that is being identified.
Nicolas Weeger 2010-09-26

Simplify door-opening with keys for player, bypassing hit_player().
This should partly fix bug #1811331: discrete damage bug.
Nicolas Weeger 2010-09-26

Fix bug #2072850: Inconsistent limits for damage stat.
Nicolas Weeger 2010-09-26

Tentative fix for bug #2020224: buggy(?) crafting yields.
Don't call again attempt_recipe(), as that would give again artifact properties
to the item. Instead, use the item in the cauldron.
Nicolas Weeger 2010-09-26

Partial fix for bug #3075860: Auto-pickup fails to pickup certain items.
Correctly pick weapons.
Nicolas Weeger 2010-09-26

Fix bug #2938887: problem with casting unknown spell.
Change the display logic, don't show all spells when no matching spell.
Nicolas Weeger 2010-09-26

Directors should not move doors.
This fixes bug #3059451: force (smover) throws doors off hinges.
Nicolas Weeger 2010-09-21

Ignore 'FLAG_OBJ_ORIGINAL' for merging purposes. This fixes a merging bug with
unique maps.
Nicolas Weeger 2010-09-12

Fix broken DM 'follow' command.
Nicolas Weeger 2010-09-12

Add unit test exposing a weight reduction issue with containers.
Fix said weight reduction bug.
Nicolas Weeger 2010-09-11

Fix fishing rod not being correctly applied with ready_skill.
This fixes the second part of bug #3060474.
Nicolas Weeger 2010-09-08

Fix do_harvest() not checking if player can actually carry what is harvested.
This fixes bug #3060474: fishing puts more fishes into inventory than you can carry.
Nicolas Weeger 2010-09-08

Fix examine_monster() to handle critically hit cases.
Nicolas Weeger 2010-09-08

Unit tests: correctly initialise the config dir (for experience and such).
Nicolas Weeger 2010-09-06

CRE: fix item's chance in treasure display. Show % and chance out of total.
Nicolas Weeger 2010-09-04

CRE: extract various things to 'ResourcesManager'.
This gets back archetypes and treasure sorting, without messing the
treasure list's ordering.
Nicolas Weeger 2010-09-04

Add key_value 'no_mood_change' that when set to 1 on a monster
prevents spells like charm or pacify to have any effect.
Nicolas Weeger 2010-09-04

Don't join party again at startup if formed automatically.
This leads to party removal, and memory corruption.
Nicolas Weeger 2010-09-02

Fix bug #3055569: godenchanting is still buggy.
The enchanting code was bypassing attacktypes if weapon was already enchanted.
Also fix wrong name check.
Nicolas Weeger 2010-09-02

Fix Python Object.Say to automatically use the dialog system if in a dialog context.
This makes the object talk after the player, like expected, without
needing to change all scripts.
Also, 'Say' is almost always used in reply to something said,
so it makes sense.
Nicolas Weeger 2010-09-02

Fix broken Python Object.Take (inverted parameters).
Nicolas Weeger 2010-09-02

server/player.c: Move clearing of monitor_spells to initial socket allocation.
Fixes bug where spell updates would cease if player used a savebed and
then played again on same server.
MSW 2010-08-30

Tentative fix for bug #3054686: unarmed combat xp goes to sorcery by default.
When checking for chosen_skill, talismans were taking into account, which
is a mistake.
Nicolas Weeger 2010-08-29

Fix broken special foods. Duration wasn't updated as needed, making
the force expire immediately.
Nicolas Weeger 2010-08-28

Fix jumping skill: now jumping into a monster or player attacks it.
Andreas Kirschbaum 2010-08-26

Check head parts of multi-part objects when using the skills jumping, singing, or oratory.
Andreas Kirschbaum 2010-08-26

Fix possible crash using the singing skill.
neodeno 2010-08-26

Remove new lines in town portal messages.
Nicolas Weeger 2010-08-16

Fix container-related crash, when a plugin removes the container or equivalent.
Nicolas Weeger 2010-08-16

server/c_range.c:
Fix missing assignment of spell in player object - only results in crashes if
casting time is used.
MSW 2010-08-14

Fix wrong attack roll adjust for player in the dark with xray.
Nicolas Weeger 2010-08-14

Wrap player state change to a function.
Nicolas Weeger 2010-08-14

Correctly inform player of lost overall level at death.
Nicolas Weeger 2010-08-14

Make Python's Object.Anim a String in both read and write.
Raise an error if invalid animation is set.
Nicolas Weeger 2010-08-14

Make Python's Object.Face a String in both read and write.
Raise an error if invalid face is set.
Nicolas Weeger 2010-08-14

Fix accidentally broke 'tell' command.
Nicolas Weeger 2010-08-10

Fix broken 'curse' spell.
Nicolas Weeger 2010-08-08

Merge split lines in artifacts messages.
Nicolas Weeger 2010-08-08

Don't change decor's move_block in random maps, this messes item merging.
Nicolas Weeger 2010-08-07

Fix mover-related crash if in an inventory.
Nicolas Weeger 2010-08-07

Change plugin hooks prototype, don't return anything. Make functions static.
Nicolas Weeger 2010-08-07

Change event listener prototype for plugins to return int instead of void*.
Nicolas Weeger 2010-08-07

Remove unused 'command_' return values. Change function prototype to make
'params' const. Fix some const discarding.
Nicolas Weeger 2010-08-05

Make some DM functions static. Move 'command_dumpbelow' to c_wiz.c.
Nicolas Weeger 2010-08-05

Remove old 'ring_desc' function.
Nicolas Weeger 2010-08-05

Don't send the view when dropping items, that makes appear an opened
container was closed.
Nicolas Weeger 2010-08-04

Don't switch to golem mode if summon failed.
Nicolas Weeger 2010-08-04

CRE: tool to create base for smoothed face from a face.
Nicolas Weeger 2010-08-02

Fix bug #2546538: odd rune spell behavior.
Don't check grace cost against player's grace if no grace cost.
Nicolas Weeger 2010-08-01

Don't display attenuation or repell if denied.
Fixes part of #2941923: 11 bugs, alchemy, spell attunement, npc shops, client (WIN).
Nicolas Weeger 2010-08-01

Fix bug #3018536: duplication of items in containers.
Correctly free the removed item's inventory.
Also fix invalid carrying field.
Nicolas Weeger 2010-08-01

Remove deprecated function.
Nicolas Weeger 2010-08-01

Fix knowledge for recipes not displaying the required cauldron.
Nicolas Weeger 2010-08-01

CRE: correctly display artifacts that can be made via alchemy.
Nicolas Weeger 2010-08-01

Fix lighter message containing 'NULL'.
Nicolas Weeger 2010-08-01

Fix a unit test.
Nicolas Weeger 2010-08-01

CRE: add a 'spell table' report.
Nicolas Weeger 2010-07-29

Replace some calls to describe_item() with the StringBuffer version.
Nicolas Weeger 2010-07-29

Rewrite 'describe_item' to use StringBuffer.
Nicolas Weeger 2010-07-29

Rewrite 'describe_resistance' to use StringBuffer.
Nicolas Weeger 2010-07-29

Changes related to new character creation code - add new settings value
which determine stat ranges, split out the requestinfo replies to its
own file (request.c was getting a bit large), add handling for 'newcharinfo'
requestinfo, document this in the protocol file.  NOTE: you will need to
re-run automake & configure to pick up the new source file.
---
common/init.c: Initialize new fields in setting structure to default values.
doc/Developers/protocol: Add documentation on newcharinfo
include/global.h: Add new fields in settings structure for starting stat info.
lib/settings: Add new starting stat values to file.
server/init.c: Add logic to load new settings value from file.
server/player.c: Remove hard coded value, change to use settings value.
socket/Makefile.am: Add requestinfo.c file
socket/loop.c: Add callback for newcharinfo requestinfo.
socket/request.c, requestinfo.c: Move requestinfo handling to its own file,
   and new function for newcharinfo handling.
---
MSW 2010-07-28

Rewrite 'describe_monster' to use StringBuffer.
Nicolas Weeger 2010-07-28

Rewrite 'ring_desc' to use StringBuffer.
Nicolas Weeger 2010-07-28

Remove unused variable. Document.
Nicolas Weeger 2010-07-28

Remove static variable.
Nicolas Weeger 2010-07-28

Remove commented out code.
Nicolas Weeger 2010-07-28

Remove global variables.
Nicolas Weeger 2010-07-28

Fix documentation.
Nicolas Weeger 2010-07-28

Explicit why the 'accounts' file can't be opened, to help debug.
Nicolas Weeger 2010-07-28

Abort at startup if a creature one can summon has no move_type defined.
Add a redundant check for move_type 0 when summoning, set it to walk
in this case. This is a fix enforcer for bug #2791003.
Nicolas Weeger 2010-07-26

For the throwing skill, prefer items with 'is_thrown'.
This makes the player throw eg throwing daggers before other items.
Nicolas Weeger 2010-07-23

CRE: alchemy recipes report.
Nicolas Weeger 2010-07-21

CRE: display if artifacts can be generated through alchemy.
Nicolas Weeger 2010-07-21

Correctly generate readable of specified type if set.
This fixes a bug in Scorn (and elsewhere) library where
you could have alchemy recipes in the god section.
Nicolas Weeger 2010-07-19

CRE: bullet-like spells damage and cost report, praying only.
Nicolas Weeger 2010-07-18

CRE: add 'damage' to object wrapper.
Nicolas Weeger 2010-07-18

CRE: disable tree sorting for resource window, as that prevents reading
the treasure lists correctly.
Nicolas Weeger 2010-07-18

Add 'knowledge search <text>' to filter knowledge.
Nicolas Weeger 2010-07-14

Remove unused parameters.
Nicolas Weeger 2010-07-14

Don't display in summary functions, but in higher level.
Nicolas Weeger 2010-07-14

Don't display in detail functions, but in higher level.
Nicolas Weeger 2010-07-14

Enable knowledge filter, with additional parameter to 'knowledge list'.
Nicolas Weeger 2010-07-14

CRE: fix displayed alchemy formulae count.
Nicolas Weeger 2010-07-10

CRE: parse race-specific maps if they exist.
Nicolas Weeger 2010-07-05

Abort() on empty archetype name.
Nicolas Weeger 2010-07-05

Extract some code from enter_exit().
 server/server.c
Nicolas Weeger 2010-06-26

Add item type validity check when loading something.
Nicolas Weeger 2010-06-26

CRE: take 'npctoken' and 'setnpctoken' into account for message display.
Nicolas Weeger 2010-06-23

CRE: display actual item values for artifacts, as suggested by Leaf.
Nicolas Weeger 2010-06-20

CRE: add 'exit' command, add status bar tips to menu commands.
Nicolas Weeger 2010-06-20

CRE: read comments from quest pre/post scripts, to display in the dropdown list.
Nicolas Weeger 2010-06-19

Add 'purge_quests' DM command to unload quest definition.
Useful when modifying quest files, to avoid restarting server.
Nicolas Weeger 2010-06-19

Remove unused variables.
Nicolas Weeger 2010-06-19

CRE: message rule duplication.
Nicolas Weeger 2010-06-19

Correctly mark quests as completed during state loading.
Nicolas Weeger 2010-06-19

Remove cf_darcap plugin, as everything is now done through Python scripts
and the quest system.
Nicolas Weeger 2010-06-19

CRE: enable step reordering.
Nicolas Weeger 2010-06-19

Fix suspicious (and duplicate) artifact change. Update documentation.
 common/artifact.h
 lib/artifacts
Nicolas Weeger 2010-06-13

CRE: display artifact values, as a dump for now.
Nicolas Weeger 2010-06-13

CRE: word wrap for messages.
Nicolas Weeger 2010-06-13

CRE: quest step description is multiline too, for edition.
Nicolas Weeger 2010-06-13

CRE: redesign the quest steps panel, to have inplace edition.
This gives a better overview of the steps.
Nicolas Weeger 2010-06-13

Make the plugin calls to player titles respect the custom titles the player
has set.
server/plugins.c, plugins/common, plugins/cfpython
Brendan Lally 2010-06-08

Expose one knowledge function to plugin.
Nicolas Weeger 2010-06-06

CRE: display alchemy's index.
Nicolas Weeger 2010-06-06

Use 'const' for parameters.
Nicolas Weeger 2010-06-06

CRE: "setwhen" basic edition support.
Nicolas Weeger 2010-06-03

CRE: read and write 'setwhen' quest support, no modification for now.
Nicolas Weeger 2010-06-03

server/quest.c, quest step conditions, used to advance quests when another
quest(s) are at the 'right' step(s)
Brendan Lally 2010-05-30

server/quest.c, #define the state numbers in the quest parsing code
Brendan Lally 2010-05-30

Use a specific message to query animation state, fix isn't enough.
Nicolas Weeger 2010-05-30

Fix crash in cfanim.
Nicolas Weeger 2010-05-30

Change log level to error for various things in cf_anim.
Nicolas Weeger 2010-05-30

New variable to cf_anim. Enable object state querying (using 'fix')
to know if an object is animated.
Nicolas Weeger 2010-05-30

CRE: don't hardcode pre and post conditions files.
Nicolas Weeger 2010-05-30

CRE: add 'npctoken' and 'setnpctoken' pre and post conditions.
Nicolas Weeger 2010-05-30

Add DM 'purge_quest_state' command to make it easy to fix quest state
through manual file editing without restarting server.
Nicolas Weeger 2010-05-30

CRE: enable message rule reordering.
Nicolas Weeger 2010-05-30

CRE: expand resource tree if only one item.
Nicolas Weeger 2010-05-29

CRE: enable new message file creation.
Nicolas Weeger 2010-05-29

CRE: enable message rule addition or removal.
Nicolas Weeger 2010-05-29

Fix CRE crash when not enough reply data.
Nicolas Weeger 2010-05-29

Disable cf_darcap's plugin handleDeath function, replaced by a Python script.
Nicolas Weeger 2010-05-29

Expose 'Map.InsertAround' to Python.
Nicolas Weeger 2010-05-29

Remove unused "oldmessage" parameter from draw_ext_info, draw_ext_info_format,
  ext_info_map, ext_info_map_except, and ext_info_map_except2 functions and
  calls.
Kevin Bulgrien 2010-05-28

Fix socket/info.c::draw_ext_message() comments to be more informative and to
  update them to more completely describe current behavior.
Remove the socket/info.c::draw_ext_message() socket/info.c::print_message()
  call to fix bug 2984255 and to remove inappropriate log file clutter.
Remove socket/info.c::print_message() as LOG() is the proper method of logging
  messages.  It is obvious that the function has been modified from its
  original implementation as it expects a player pointer but does not use it.
  The only function that called it was draw_ext_info(), and it only did so
  when the player pointer was NULL or when a player's contr pointer was NULL.
  It appears that print_message() used to be a mechanism by which an old
  client could get simple messages without any formatting (based on out-dated
  comments in draw_ext_info()'s header), but that functionality is long gone.
Note:  draw_ext_info()'s oldmessage parameter is completely useless, unused,
  and should be set to NULL.  Really it should be removed and all calls to
  draw_ext_info() cleaned up likewise.
Kevin Bulgrien 2010-05-27

Quest parent edition in CRE.
Nicolas Weeger 2010-05-26

Permit Quests to define parents, display only parent quests in the quest
lists and fold child quests into the parent's description. The same
behaviour is used for the quest summary with the -mq flag
 server/quest.c
Brendan Lally 2010-05-25

Display warning if an animation only has one face.
Nicolas Weeger 2010-05-24

Support for building utils/mapper.c as crossfire-mapper.  The utility is not
built by default as it requires libgd (not normally required by the server).
crossfire-mapper is not needed to run a server, but it is useful for making
crossfire world maps for publishing via web server.  To build this utility,
specify --enable-mapper when running ./configure.
Kevin Bulgrien 2010-05-24

Add missing function prototypes. Use 'const' where possible.
Nicolas Weeger 2010-05-23

Speed up compilation with precompiled headers.
Nicolas Weeger 2010-05-22

Reply edition panel.
Nicolas Weeger 2010-05-22

Fix various crashes.
Nicolas Weeger 2010-05-22

'pre' and 'post' conditions edition.
Nicolas Weeger 2010-05-22

Extract widget, enable 'message' edition.
Nicolas Weeger 2010-05-22

Preliminary rule edition ("match" only for now). Rule file saving support.
Nicolas Weeger 2010-05-22

Downcast type, remove const, which apparently cause issues.
Nicolas Weeger 2010-05-21

Update help text for filters.
Nicolas Weeger 2010-05-21

Don't display an empty menu on right click.
Nicolas Weeger 2010-05-19

Add Race to the set of things that can be filtered on in CRE
Brendan Lally 2010-05-19

Implement requestinfo for race_info and class_info.  Note there is a bug with
the archetypes in that many archetypes have type==37 (CLASS) which are not
actually class descriptors.
socket/request.c: New functions to send class/race information.
doc/Developers/protocol: Update document for format of race/class_info
  requestinfo.
MSW 2010-05-18

Improve quest edition, now can add or remove steps. Can add new quests.
Nicolas Weeger 2010-05-16

Indicate quest end steps. Enable edition of the 'can restart?' flag.
Nicolas Weeger 2010-05-16

Remove unused class.
Nicolas Weeger 2010-05-16

Fix crash if wanting to start an unknown quest.
Nicolas Weeger 2010-05-16

Highlight rules when the same token.
Nicolas Weeger 2010-05-15

Preliminary message file (.msg) support. No edition yet.
Nicolas Weeger 2010-05-15

Update the tree if the quest code changes. Enables quest step edition.
Nicolas Weeger 2010-05-15

Quest edition, not complete but some fields already.
Nicolas Weeger 2010-05-15

Show existing quests, and their various steps.
Nicolas Weeger 2010-05-15

Fix typedef definition issue when building CRE.
Nicolas Weeger 2010-05-15

Make various pointers const.
Nicolas Weeger 2010-05-15

Correctly initialize variable. Make pointers const.
Nicolas Weeger 2010-05-15

Clean code.
Nicolas Weeger 2010-05-13

Correctly initialize variables.
Nicolas Weeger 2010-05-13

Make buffer bigger to avoid truncation, warn if still truncation.
Nicolas Weeger 2010-05-13

Remove unused code.
Nicolas Weeger 2010-05-09

Make variables 'const'.
Nicolas Weeger 2010-05-09

Expose rt_xxx to Python scripts through 'Crossfire.ReplyType'.
Nicolas Weeger 2010-05-08

Add 'rt_say', give explicit values. Extract texts to function.
Nicolas Weeger 2010-05-08

Add Crossfire.AddReply, Crossfire.SetPlayerMessage and Crossfire.NPCSay wrappers
to the Python plugin.
Nicolas Weeger 2010-05-08

Transmit talk information to plugins. Make a specific "say" plugin command.
Nicolas Weeger 2010-05-08

Keep NPC messages only, in case NPCs are removed during the dialog.
Nicolas Weeger 2010-05-08

Extract talk_info to dialog.h. Use sstring for various messages.
Nicolas Weeger 2010-05-08

Update Man Page
Brendan Lally 2010-05-07

Add -mq as a command line option to dump a list of the quests that the
server recognises.
Brendan Lally 2010-05-07

Improve dialog system. Use "You" for the player saying something.
Don't send multiple texts when @reply is used in dialogs.
Nicolas Weeger 2010-05-06

Include -mexp as one of the command line options listed in the help text.
Brendan Lally 2010-05-06

Doxygen fixes.
Nicolas Weeger 2010-05-06

Make parameters and return values const when applicable.
Nicolas Weeger 2010-05-06

Extract artifact functions to their own file.
Nicolas Weeger 2010-05-06

Don't send warnings on the server log from the DM's 'create' command.
Nicolas Weeger 2010-05-06

Make proto.
Nicolas Weeger 2010-05-06

ANSI C89 fix.
 server/quest.c
Nicolas Weeger 2010-05-04

server/player.c: don't switch to account mode if no account name (else segfault).
This could happen if the client sends the setup command but starts playing without
actually logging in.
Nicolas Weeger 2010-05-01

Enforce 2 characters minimum for account passwords, else accounts with 1
character can't create new characters. Some code cleaning.
 socket/request.c
Nicolas Weeger 2010-05-01

server/account_char.c: Modify to use the map name, not path for character
    listing if that data is available - gives nicer output.
socket/request.c: Add numeric face number for character information, add
    standard handling to send face number to client before use.
test/unit/common/check_living.c: Minor change to make it C89 compliant.
MSW 2010-04-26

server/quest.c: Allow quest definition files to 'include' other quest definition
files. Make the error messages from the quest file parsing code more
explicit to make tracking down errors easier. Add quest_get_by_code() which
quest_get() now acts as a wrapper to, so that error messages can be given if
a quest is defined multiple times.
Change the default quest file to world.quests so that old servers will still
work properly (but without the new syntax)
Brendan Lally 2010-04-26

Clear hp fixing code.
Nicolas Weeger 2010-04-26

Clean player grace fixing code.
Nicolas Weeger 2010-04-26

Clean player sp fixing code.
Nicolas Weeger 2010-04-26

Extract part of fix_object() to fix_player(), to make the function more manageable.
Nicolas Weeger 2010-04-26

Rename POTION_EFFECT to POTION_RESIST_EFFECT to better describe what it is.
Nicolas Weeger 2010-04-26

Warn players of the end of resistance effects.
Nicolas Weeger 2010-04-26

Some unit tests for fix_object().
Nicolas Weeger 2010-04-26

server/skills.c, server/c_object.c, include/sproto.h: Make the 'examine'
command id of objects.
* Move the detect curse and detect magic logic out into separate functions
* Make the id skills use the item types array to figure out which objects
   they should identify
* For any object which is examined, use the player's skills to attempt to
   detect magic, sense curse and then perform a skill-based id of objects.
Brendan Lally 2010-04-26

==============================================================================
Changes for 1.50.0
==============================================================================

server/attack.c: Don't make doors (or other objects) harder to hit because
   they lack a move type.  Remove unused variable.
MSW 2010-04-25

Fix a missing whitespace issue that makes books read like "which gives the
recipientImmunity to magic".
Kevin Bulgrien 2010-04-25

Add ability to send face number (instead of name) - add new definition
to newclient.h, update protocol doc.  First commit is so shared newclient.h
file can get used.
Files affected: include/shared/newclient.h doc/Developers/protocol
MSW 2010-04-24

Replace [NULL] from response to command-line `crossfire-server -v` with the
same text that is sent back to a client when it requests server version.
Make `crossfire-server -help` information for -v more accurate to current
function.
Kevin Bulgrien 2010-04-24

CRE: expose 'item' as an Object instead of an Archetype to scripting engine.
Makes things much easier.
Nicolas Weeger 2010-04-22

CRE: ac and wc as properties for objects.
Nicolas Weeger 2010-04-22

random_maps/treasure.c
- Make sure random map dungeon level numbers on signs and keys match up and
  make sense.  This is an off-by-one issue.
include/map.h
- Change mapstruct members enter_x and enter_y to sint16 since it appears that
  most other server code uses sint16 types for map coordinates, and the change
  results in dropping some -Wconversion warnings.  Use of -1,-1 in an exit is
  now the way to mark it the defaults set in the map are used without having
  to set them in the exit.  It may be odd to have -1,-1 in a map (mapstruct),
  but it still seems better to have type consistency.  Also fix up the broken
  doxygen comment on these items, and add some content detail.
Kevin Bulgrien 2010-04-21

Simplify code.
Nicolas Weeger 2010-04-21

CRE: export attack types values to scripting.
Nicolas Weeger 2010-04-18

CRE: export object's attacktype to scripting.
Nicolas Weeger 2010-04-18

CRE: display items count, and if filtered total count.
Nicolas Weeger 2010-04-18

Fix unit test for accounts when tmp files are still around.
Nicolas Weeger 2010-04-18

Fix invalid attack roll handling in easy cases.
Nicolas Weeger 2010-04-18

CRE: export some properties for formulae.
Nicolas Weeger 2010-04-18

CRE: set a better progress caption.
Nicolas Weeger 2010-04-17

CRE: show report generation progress, enable cancelling.
Nicolas Weeger 2010-04-17

CRE: button to copy report contents to clipboard.
Nicolas Weeger 2010-04-17

CRE: expose maps to report interfaces.
Nicolas Weeger 2010-04-17

CRE: keep map level while we're at it.
Nicolas Weeger 2010-04-17

CRE: expand maps node if only maps, resize columns to meaningful size.
Nicolas Weeger 2010-04-17

CRE: display an empty panel by default, to force a decent size.
Nicolas Weeger 2010-04-17

CRE: display item property in treasure panel.
Nicolas Weeger 2010-04-16

CRE: report definition is now managed like filters.
Add quick item filter.
Nicolas Weeger 2010-04-16

CRE: wrap object name and experience.
Nicolas Weeger 2010-04-16

CRE: change disposition for resource window.
Nicolas Weeger 2010-04-15

CRE: display region information when one is selected.
Nicolas Weeger 2010-04-15

CRE: experience display.
Nicolas Weeger 2010-04-15

CRE: load data in the thread, no need to freeze everything.
Nicolas Weeger 2010-04-14

CRE: display map name, and exits to and from.
Nicolas Weeger 2010-04-14

CRE improvements. Keep region information for maps.
Display map list by region, with map experience.
Nicolas Weeger 2010-04-14

Fix for bug 2985631 - can not create a new character if you have a long
account password.  Simple solution is to just truncat password.
MSW 2010-04-11

Add some minimal new character support.  Work in progress, but added code
that at least hands off the username/password to server.
---
doc/Developers/protocol: Add some docs on createplayer protocol command.
include/sockproto.h, include/sproto.h: Update with new functions.
server/login.c: Add code to update account for new characters.
server/player.c: Make set_first_map() non static.  Change add_player()
  to take second argument and return the newly created player object.
  Fix roll_again() output to use <> instead of [], since later are
  markup commands.
socket/loop.c: Add callback for createplayer protocol command.
socket/request.c: Add create_player_cmd().  Update add_player to take
   second argument.
types/savebed/savebed.c: Add warning message and prevent player from
   saving if they have 0 exp and the character won't be saved.
   Otherwise, it seems to work but does nothing.
---
MSW 2010-04-07

Keep rough monster experience for maps. Dump region experience after parsing.
 utils/cre/CREMapInformation.{h,cpp} CREMapInformationManager.{cpp,h}
Nicolas Weeger 2010-04-07

Don't send pickup information if not explicitely asked for.
 server/c_object.c
Nicolas Weeger 2010-04-07

Fix potential crash when changing class.
 plugins/cflogger/cflogger.c
Nicolas Weeger 2010-04-07

Fix crash if 'add_me' was sent multiple times.
 socket/request.c
Nicolas Weeger 2010-04-07

Commit account management code.  Seems mature enough for general use - probably
a few bugs.  What this adds is an account that characters use to log in,
at which point they then choose what character they want to play.
---
doc/Developers/protocol: Fix some formatting, clarify some points, make
    some revisions to account protocol commands.
include/account_char.h: Move MAX_CHARACTERS_PER_ACCOUNT to this
    file so other files to access it.
include/newserver.h: Add login_method to socket structure.
include/sockproto.h: Update for new functions.
include/sproto.h: Update for new functions.
lib/Makefile.am: Have it make account directory if it does not exist.
server/account.c: Fix bug related to loading when only 1 character
    is associated with account.  Change account_exists() to return
    proper name of account.  Clean up some function declarations
    and bugs.  Add some new functions to get character/account
    data.
server/account_char.c: Fix typo and minor errors in error message.
server/c_misc.c: Update check_login() for 2 params
server/init.c: Add call to load account information.
server/login.c: Save account information.  Modify check_login() for
    account logins which bypass password checking.
server/player.c: Make get_player() non static.  Add enhancements
   for new login code in play again.
socket/init.c: initialize login_method to 0.
socket/loop.c: Add new protocol commands with callbacks.
socket/request.c: Add loginmethod setup command.  Add several new functions
    to handle account management functionality.
test/unit/server/check_account.c: Update for new return semantics for
	account_exists()
---
MSW 2010-04-06

Add more extended statistics information: applied stats. These allow
clients to distinguish between depleted stats and stat changes due to gear
or skills.
Andreas Kirschbaum 2010-04-03

socket/request.c
- Fix segfault when client requests spellmon 2.
Kevin Bulgrien 2010-04-02

socket/init.c
- Remove duplicate initializer.
Kevin Bulgrien 2010-04-01

Fix invalid function call. Add function prototypes.
 plugins/cfpython/cfpython_object.c
 plugins/common/include/plugin_common.h
Nicolas Weeger 2010-04-01

include/shared/newclient.h
- Rename the confusing MSG_TYPE_DIALOG_MAGIC_MOUTH to
  MSG_TYPE_DIALOG_MAGIC_EAR since only magic ears are MSG_TYPE_DIALOG.
- Add a new MSG_TYPE_SIGN subtype of MSG_TYPE_SIGN_MAGIC_MOUTH since magic
  mouths are distinctly different from all other signs, and this might mean a
  client might want to handle their messages uniquely.
server/monster.c
- Rename MSG_TYPE_DIALOG_MAGIC_MOUTH to MSG_TYPE_DIALOG_MAGIC_EAR to match up
  with newclient.h changes.
common/readable.c
- Add a new MSG_TYPE_SIGN subtype MSG_TYPE_SIGN_MAGIC_MOUTH in conjunction
  with changes made to newclient.h.
Kevin Bulgrien 2010-03-30

- Commit some edits made in conjunction with wiki edits a while back:
- Sort the normal commands alphabetically.
- Move gsay to the communications command list.
- Move printlos out of the communications command list to the normal list.
- Move cointoss and orcknuckle out from among the emote commands and put them
  next to the non-emotion commands in the communications commands group.  They
  still do not seem to be communication commands, but that's where they were
  already and I don't feel like debating it at the moment.
Kevin Bulgrien 2010-03-29

- Add extra detail to the apply command help (lib/help/apply.en)
Kevin Bulgrien 2010-03-29

Add a patch written by Funnyman3595 to add Object.Split and Object.Clone to
the methods which can be used by python scripts through the plugin.
plugins/cfpython/include/cfpython_object_private.h
server/plugins.c
plugins/cfpython/cfpython_object.c
plugins/common/plugin_common.c
Brendan Lally 2010-03-30

Changes to the way the server handles quests:
Rather than a separate end_quest() function, quest steps may contain the
line 'finishes_quest' advancing to any step that contains that line finishes
the quest. All references to end_quest are removed.
The stage number for completed, unrestartable quests is preserved, and the
step description (called 'outcome') is shown for completed quests also.
The quest list command output is reworked, it defaults to showing the number
of completed quests, and listing the active ones, but 'quest list all' can
be used to show all of the quests whether completed or not.
plugins/cf_darcap/cf_darcap.c
plugins/common/include/plugin_common.h
plugins/common/plugin_common.c
plugins/cfpython/cfpython_object.c
plugins/cfpython/include/cfpython_object_private.h
include/plugin.h
server/quest.c
server/plugins.c
Brendan Lally 2010-03-29

Replace the numbers in the map2 command handling with some #define's
 include/shared/newclient.h
 socket/request.c
Brendan Lally 2010-03-28

Don't drop the inventory of items marked as 'no drop'
 common/object.c
Brendan Lally 2010-03-28

Massive CRE improvements.
Filters are now defined globally. Report window, to display things (will be improved soon).
Nicolas Weeger 2010-03-27

Don't list invisible items as part of the contents of chests when applied.
 types/treasure/treasure.c
Brendan Lally 2010-03-26

Town portal now has an animation instead of being immediate.
 server/spell_effect.c
Nicolas Weeger 2010-03-25

Have disappearing FLAG_IS_USED_UP items put their inventory on the ground, not on pile top.
 server/time.c
Nicolas Weeger 2010-03-25

Add new flag to object_free() to force inventory contents on the ground instead on pile top.
 common/object.c
 include/object.h
Nicolas Weeger 2010-03-25

Add '!' to pickup to toggle the mode.
 lib/help/pickup.en
 server/c_object.c
Nicolas Weeger 2010-03-25

Basic help text for filtering.
Nicolas Weeger 2010-03-25

Basic filtering on artifacts and formulaes.
Nicolas Weeger 2010-03-24

Enable filtering on archetypes (name and clone's type).
Nicolas Weeger 2010-03-24

Add requestinfo/replyinfo mechanisms to get the news/rules/motd file.  In
this way, client does not need to parse drawinfo commands, and this
functionality is needed in account based logins since the login code path is
different.  Add setup command for loginmethod - work in progress
but needed for testing.
---
socket/request.c: Add setup loginmethod, add send_file() to send files
socket/loop.c: Update requestinfo handling to deal with motd/news/rules
doc/Developers/protocol: Clarify some areas of protocol.  Add information
    about requestinfo/replyinfo for news/rules/motd
MSW 2010-03-23

As per discussion on IRC, some changes to hopefully improve balance - will
await feedback:
common/living.c: Don't have the magic of an item affect wc.  Only if wc
     is explicitly set does it improve the character.
server/skills.c: Tweak lockpicking - give the skill level more relevence.
     Have difficulty increase exp gained.
MSW 2010-03-23

Fix EVENT_SAY for items in a container.
 server/monster.c
Nicolas Weeger 2010-03-22

Reformat and spellcheck all help texts and default rules/motd/news files.
Andreas Kirschbaum 2010-03-21

Add help for 'title' command.
Andreas Kirschbaum 2010-03-21

Send updated ground view when num_look_objects is received.
 socket/request.c
Nicolas Weeger 2010-03-20

Extract function to find player from socket.
 include/sproto.h
 server/player.c
 socket/request.c
Nicolas Weeger 2010-03-20

Don't send empty "stats " commands.
 socket/request.c
Nicolas Weeger 2010-03-20

Add extended statistics information: race stats, natural stats.
This enables clients to display depletion and such.
 doc/Developers/protocol
 include/newserver.h player.h
 include/shared/newclient.h README
 socket/init.c request.c
Nicolas Weeger 2010-03-20

Fix crash with "cast" command having no arguments.
Andreas Kirschbaum 2010-03-19

Cache map information.
utils/cre/
 CREArchetypePanel.cpp
 CREArchetypePanel.h
 CREMainWindow.cpp
 CREMainWindow.h
 CREMapInformationManager.h
 CREMapInformationManager.cpp
 CREMapInformation.cpp
 CREMapInformation.h
 CREResourcesWindow.cpp
 CREResourcesWindow.h
 cre.pro
Nicolas Weeger 2010-03-17

Basic settings for map cache directory, and associated dialog.
 utils/cre/cre.{cpp,pro} CRESettings.{cpp,h} CRESettingsDialog.{cpp,h}
Nicolas Weeger 2010-03-14

Add relevant debug flags to compilation.
 utils/cre/.qmake.cache
Nicolas Weeger 2010-03-14

Use archetype name instead of archetype itself. Show map name in list too.
 utils/cre/CREArchetypePanel.cpp CREMapInformation.{cpp,h} CREMapInformationManager.{cpp,h} CREMainWindow.cpp CREUtils.{cpp,h}
Nicolas Weeger 2010-03-14

Remove obsolete map fields in header.
 common/map.c
Nicolas Weeger 2010-03-14

Basic map browsing. Report archetype use in maps.
Modified files:
 utils/cre/cre.pro CREArchetypePanel.cpp CREMainWindow.{cpp,h}
New files:
 utils/cre/CREMapInformationManager.{cpp,h} CREMapInformation.{cpp,h}
Nicolas Weeger 2010-03-14

Sort alphabetically by default.
 utils/cre/CREAnimationPanel.cpp CREArchetypePanel.cpp CREResourcesWindow.cpp
Nicolas Weeger 2010-03-14

Display archetype use in other_arch and treasure lists.
 utils/cre/CREArchetypePanel.{cpp,h}
Nicolas Weeger 2010-03-14

Rename field 'class' to 'character_class' because that's a reserved C++
keyword and thus conflicts for CRE building.
Nicolas Weeger 2010-03-14

Update account handling - add character specific handling for the accounts,
add test case, and add some missing svn keywords.  Still some more
work to be done here
---
doc/Developers/protocol: Clean up formatting some.
include/Makefile.am: Add new file
include/account_char.h: New file for account information
include/global.h: Include account_char.h
include/newserver.h: Add references to account information to socket
include/sproto.h: Add function prototypes
socket/init.c: And initialization & cleanup for account info in socket
server/Makefile.am: Add new file
server/account.c: Add creation time to account record
server/account_char.c: New file - character management
server/login.c: Add code to update character info in socket.
server/server.c: Add periodic saving of account information.
test/unit/server/Makefile.am: Update for new file
test/unit/server/check_account_char.c: New file - test for character
    management
MSW 2010-03-14

Enable sacrificed items on altars and such to be alive, if asked for.
 server/common/button.c
Nicolas Weeger 2010-03-13

Fix some object_free_drop_inventory() to object_free2().
 server/apply.c c_wiz.c login.c plugins.c server.c skills.c spell_effect.c
Nicolas Weeger 2010-03-13

Do not send negative area for empty magicmap responses.
Andreas Kirschbaum 2010-03-12

Do not run EVENT_DESTROY plugin events for merged objects.
Andreas Kirschbaum 2010-03-08

Properly free inventory of merged objects.
Andreas Kirschbaum 2010-03-08

Rename object_free() to object_free_drop_inventory() to hint about
possible side-effects.
Andreas Kirschbaum 2010-03-08

Properly distinguish between text and binary files.
Andreas Kirschbaum 2010-03-07

Correctly reset los when mapsize changes.
 socket/request.c
Nicolas Weeger 2010-03-07

Load regions before trying to load the initial map.
 common/init.c
Nicolas Weeger 2010-03-07

Fix crash when plugin removed dropped item.
 server/c_object.c
Nicolas Weeger 2010-03-07

Misc Win32 fixes.
Nicolas Weeger 2010-03-06

Fix possible segmentation fault when shutting down the server.
Andreas Kirschbaum 2010-03-04

Don't call server functions directly from plugins.
Nicolas Weeger 2010-02-28

Make object_dump() and get_ob_diff() use const object*.
Nicolas Weeger 2010-02-28

CRE: display archetype information.
Nicolas Weeger 2010-02-28

CRE: try the object name if archetype isn't found for artifact display.
Nicolas Weeger 2010-02-28

CRE: display 'yes' and 'no' sub lists.
Nicolas Weeger 2010-02-28

Only consider items of the right knowledge type, to avoid dumb crashes.
Nicolas Weeger 2010-02-28

Correctly handle NONE subtreasure list in treasure list.
Nicolas Weeger 2010-02-28

Simplify code.
Nicolas Weeger 2010-02-28

Extract 'remove_depletion' function from potion. Give access to plugins to it,
add to Python wrappers.
Nicolas Weeger 2010-02-28

Use ARCH_DEPLETION instead of hardcoding the value.
Nicolas Weeger 2010-02-28

Rewrite spellpath_msg() to use stringbuffer.
Nicolas Weeger 2010-02-13

Fix memory leak.
Nicolas Weeger 2010-02-13

Rewrite artifact_msg() to use stringbuffer, not complete.
Nicolas Weeger 2010-02-13

Fix stupid infinite loop.
Nicolas Weeger 2010-02-13

Track god-information knowledge.
Nicolas Weeger 2010-02-07

Extract describe_god() from god_info_msg(), use StringBuffer.
Nicolas Weeger 2010-02-07

Make artifact description more random (for items it can apply to),
correctly handle forbidden items.
Nicolas Weeger 2010-02-07

Fix artifact description to use item's name, not archetype name.
Nicolas Weeger 2010-02-07

Keep track of monster knowledge.
Nicolas Weeger 2010-02-07

Tweak knowledge functions, preparing for additional items.
Nicolas Weeger 2010-02-07

Remove support for lib/treasures file from lib/collect.pl.
Andreas Kirschbaum 2010-02-01

Remind player of spell consumption when casting.
Nicolas Weeger 2010-01-31

Extend alchemy to describe item combinations/transformations.
Nicolas Weeger 2010-01-31

Ensure formulae with 0 chance are never listed.
Nicolas Weeger 2010-01-31

Tighten up string checking for accounts, since they will get used for
filenames.  Add new checks for these new allowed characters.
Files: server/account.c test/unit/server/check_account.c
MSW 2010-01-21

Add 'spellmon 2' setup option, to send more spell information.
This includes if the spell needs arguments (another spell, ...)
and if the spell requires items to be cast.
Nicolas Weeger 2010-01-24

Enable spells to consume items to be cast.
Nicolas Weeger 2010-01-24

When talked to, NPCs now stay still a few ticks before moving - only if random movement.
Nicolas Weeger 2010-01-24

Give access to quest-related functions to the Python plugin.
Nicolas Weeger 2010-01-24

Tweak Spike's quest (Darcap) so it can be done again and again.
Nicolas Weeger 2010-01-24

Plugin access to 'quest_was_completed' function.
Nicolas Weeger 2010-01-24

Track quests already completed once, so we can avoid giving a super reward
all the time.
Nicolas Weeger 2010-01-24

Revamp quests, use a definition file to factorize things.
Nicolas Weeger 2010-01-24

General cleanup related to protocol and documentation.  Make many setup
options that have been around for a while standard.
MSW 2010-01-19
--
doc/Developers/protocol: Clean this up - remove obsolete commands,
    document protocol commands consistently, stating what type
    of data the different commands expect.  Update for new account
    based protocol commands (not yet implemented)
include/shared/newclient.h: Formatting fixes, add MSG_TYPE_ADMIN_ERROR
include/newserver.h: Remove fields from socket structure which are now
    considered standard.
include/sockproto.h: Add print_ext_msg()
socket/image.c: Remove code that handles setfacemode
socket/info.c: Always use drawextinfo
socket/init.c: remove initializations for what are now standard options.
socket/loop.c: Remove setfacemode, setsound, toggleextendedinfos,
    toggleextendedtext protocol commands.
socket/request.c: Remove obsolete setup options.  Put options that
    should be removed (but clients are using them as version tests) to
    end of routine.  Remove toggle_extended_infos_cmd() - now default.
    Remove toggle_extended_text_cmd() - server now uses drawextinfo
    exclusively.  Remove set_sound_cmd().  Update map_newmap_cmd()
    to assume client supports newmap command.
--

Fix various missing return values and warnings in functions.
Nicolas Weeger 2010-01-18

Player knowledge management. See server/knowledge.c for more technical information,
 and doc/knowledge for playing information.
Nicolas Weeger 2010-01-18

Fix a crash when using shutdown.
Nicolas Weeger 2010-01-17

Implement a quest in Darcap, just to test stuff - no combat, just get items :)
Nicolas Weeger 2010-01-17

Low-level quest status handling.
Nicolas Weeger 2010-01-17

New property for plugins to get the raw name without any modification.
Nicolas Weeger 2010-01-17

Invalidate parsed dialog when setting the message through a plugin.
Nicolas Weeger 2010-01-17

Add 'min_level' for alchemy formulae.
Nicolas Weeger 2010-01-16

Failing at mushroom of Gourmet only yields ashes instead of some
random nasty effect.
Nicolas Weeger 2010-01-16

Remind player when doing alchemy in wizard mode.
Nicolas Weeger 2010-01-16

Add 'failure_arch' and 'failure_message' to formulas, to have specific
archetypes be generated in case of failure instead of a random effect.
Nicolas Weeger 2010-01-16

Punishment for players selling holy relics from the St Andreas church.
Nicolas Weeger 2010-01-09

New object event for plugins: selling (object is being sold by activator).
Nicolas Weeger 2010-01-09

Plugin utility function cf_map_insert_object_around().
Nicolas Weeger 2010-01-09

The Darcap church is now a sacred place, don't kill ghosts there!
Nicolas Weeger 2010-01-09

Give the price in coins instead of platinum only.
Nicolas Weeger 2010-01-09

Export query_cost_string and cost_string_from_value to plugins.
Nicolas Weeger 2010-01-09

Add account handling code.  This is work in progress - the checked in
piece is the backend piece.  Protocol updates and client interface are
next steps to do.  As part of this, split_string() was modified to take
as an argument the seperator - this is useful because the account code
stores the player names in a semicolon separated list.
MSW 2010-01-07
---
common/image.c: Update call to split_string()
common/utils.c: Modify split_string() to take as an argument the seperator -
	this makes it more useful/general purpose.
include/libproto.h: Update split_string() prototype
include/sproto.h: Add prototypes for account.c
server/Makefile.am: Add account.c
server/hiscore.c: Update call to split_string()
server/swap.c: Update call to split_string()
test/unit/server/Makefile.am: Add check_account test.
test/unit/server/check_account.c: functional tests for account code.
test/unit/common/check_utils.c: Update split_string() call


First version of a Darcap handling plugin. For now handles the barman
in the tavern.
Nicolas Weeger 2009-12-28

Correctly make monster face its direction when using move_to.
Nicolas Weeger 2009-12-12

Fix monster_compute_path.
Nicolas Weeger 2009-12-12

Pass an empty string rather than NULL to command_function if no parameters
are given.
Andreas Kirschbaum 2009-12-20

server/c_misc.c:  Fix overflow in showing how much time character has been
   played - use 64 bit interim values.
MSW 2009-12-12

Prevent DMs from using 'quit', else they aren't actually deleted.
Nicolas Weeger 2009-12-12

Try to fix disappearing dragon abilities when converting to a god.
Nicolas Weeger 2009-12-12

Track how many ticks the character has been played.  Piece of information
tracking easy to add in.  Output is shown in the statistics command.
MSW 2009-12-07

Send 'pickup' update to clients requesting it when the player
uses the 'pickup' command directly.
Nicolas Weeger 2009-12-06

Honore the 'NO_PICK' flag for generated BOOKS even if empty.
Nicolas Weeger 2009-12-05

test/unit/common/check_time.c: Remove apparent debugging output which doesn't
	really belong.
MSW 2009-12-01

Fix some crashes on malformed input in alchemy loading code.
Arvid Norlander 2009-11-29

Fix potential NULL dereference in poisoning code in server/attack.c.
Arvid Norlander 2009-11-28

Implement proper error handling on malformed regions file. Also added a
new fatal() message to refer to the last error (used in region parsing,
will be used elsewhere soon too).
Arvid Norlander 2009-11-28

Fix a potential NULL dereference due to passing a potential NULL pointer to
qsort().
Arvid Norlander 2009-11-28

Fix uninitialised value on a empty attackmess file. The issue should never
happen in practice however.
Arvid Norlander 2009-11-28

Fix some dead initialisations (value assigned never used).
Arvid Norlander 2009-11-28

We already used the generic autoconf INSTALL. Update it to a newer version
(autoreconf automatically updated it).
Arvid Norlander 2009-11-28

Add missing prototype to include/sproto.h
Arvid Norlander 2009-11-28

Add correct text to highscore table for players disconnecting from the
game.
Andreas Kirschbaum 2009-11-22

Make utils/cre actually build and link.
Nicolas Weeger 2009-11-16

Not finding an archetype in second_arch_pass indicates a mistake in
 archetypes file, so it's better to just exit so it gets fixed instead
 of leading to issues later on.
Nicolas Weeger 2009-11-16

Rewrite hiscore.c module. Now the highscore file is read once when the
server is started and written whenever it changes. Adding new entries and
generating output for the 'hiscore command do not anymore read the
highscore file from disk.
Andreas Kirschbaum 2009-11-15

Remove support for undefined translations 'nl', 'de', and 'it'. Removes
some error messages at startup.
Andreas Kirschbaum 2009-11-14

Remove 'explore' mode.
Andreas Kirschbaum 2009-11-14

Fix formatting of 'hiscore' command output.
Andreas Kirschbaum 2009-11-13

Omit objects below the floor from the ground view.
Andreas Kirschbaum 2009-10-29

Fix exit location for the goto command in server/c_wiz.c (was broken when exit
coordinates recently changed so that (-1,-1) meant default coordinates).
Arvid Norlander 2009-10-29

Disable [Debug] messages by default. Use the -d command-line option to
enable debug messages.
Andreas Kirschbaum 2009-10-25

Fix incorrect error message for throwing skill when no throwable object
was found.
Andreas Kirschbaum 2009-10-25

Fix checks for incorrect/missing parameters of 'abil' command.
Andreas Kirschbaum 2009-10-25

Adapt regression test to changed spell parameters (r12127).
Andreas Kirschbaum 2009-10-24

Fix #2879249 (SIGSEGV on transport moving across some edges of tiled maps).
Andreas Kirschbaum 2009-10-23

Change exits pointing to new map's default coordinates from (0,0) to
(-1,-1). This allows exits to point to (0,0).
Andreas Kirschbaum 2009-10-23

The hiscore command requests 50 high scores, but for some reason the command
that outputs the scores arbitrarily returns only 49.  Removed a needless
decrement of the max parameter.  Now the command returns 50.
Kevin Bulgrien 2009-08-31

Remove i18n strings and help files that used to support the output-sync and
output-count functionality.
Kevin Bulgrien 2009-08-31

Remove output-count and output-sync from the server.  Remove the output buffer
defines and declarations, along with the outputs_sync and outputs_count items.
Remove now unused flush_output_element(), check_output_buffers(), various
comments, calls to removed functions, output-sync and output-count command
support, player struct outputs_sync and outputs_count members.  This mod does
attempt to preserve player file compatibility with older server versions by
always saving legacy defaults to the player file outputs_sync and count
parameters.  Re-ran make cproto to add missing items fix brokenness in the
proto files.  NOTE:  References to I18N_MSG_CMISC_099, 100, 101, 102, 103, and
104 were removed, but the messages themselves were not removed and no attempt
was made to see if other references still exist.
Kevin Bulgrien 2009-08-13

Fix bug 2835449 pickup is broken by changing server/login.c check_login() to
read the pickup value saved in the player file as an unsigned value instead
of as a signed value.  Unfortunately corrupted player files still have the
debug bit set, and this fix does not address that issue.  To fix the player
file, zero out the pickup value, or adjust the value to turn off the debug
bit.
Kevin Bulgrien 2009-08-11

Fix regression introduced at revision 12136 by commenting an uncommented line
in experience table D (Table C is supposed to be used).  Reported by MarkM /
knotwork.  Causes server start failure  [Error]   Experience for level 116 is
lower than previous level (0 <= 67200000000).
Kevin Bulgrien 2009-08-10

Set perm XP to 50 and select experience table C to match the metalforge server
configuration.
Meflin 2009-08-08

Fix for tracker #2825935 `cast consecrate` regression introduced at revision
11827, Sat Jun 13 2009 in server/spell_effect.c that resulted in "You are
not standing over an altar!" even when standing on an altar.  The regression
caused the altar check to iterate over character inventory instead of
objects below the character.   Various spelling issues also corrected.
Kevin Bulgrien 2009-08-03

Fix whitespace issue with an attack message "viciously strikes".
Kevin Bulgrien 2009-08-01

Disembark transport when using dimension door from inside.
Andreas Kirschbaum 2009-07-14

Fix some grammar in server/login.c.
Kevin Bulgrien 2009-07-11

Fix some crashes observed on invidious due to access to uninitialized
variables.
Andreas Kirschbaum 2009-07-11

Fix player save file parser. Now usekeys and applymode settings are
retained between logins. Fixes #2819301 (usekeys setting no longer
persists across logout.)
Andreas Kirschbaum 2009-07-10

Fix some memory leaks when updating object->msg.
Andreas Kirschbaum 2009-07-09

Fix for bug 2.0 wraith feed auto-ready bug? - ID: 1989153 - unarmed skill
selection is hardcoded.  Add a command - 'unarmed_skill' in which player
can specify what unarmed skill to use by default instead of the server using
its built in defaults.
---
common/player.c: clear unarmed_skill field in clear_player()
include/sproto.h: Add definition for command_unarmed_skill()
include/player.h: add unarmed_skill field to player structure.
lib/Makefile.am,lib/help/unarmed_skill.en : Add help file for unarmed_skill
server/c_misc.c: Add command_unarmed_skill() to set/get preferred unarmed
     skill.
server/commands.c: Add unarmed_skill to command listing.
server/login.c: Add code to load/save unarmed_skill value.  Since there
    are several saved/loaded string values, pull processing of that out
    and make the string value available to all values.  Updated some of
    the other users in the login function.
server/player.c: Set unarmed_skill to NULL for new players.
server/skill_util.c: Modify find_best_player_hth_skill() to look at
    unarmed_skill if set.
MSW 2009-07-02

Fix bolt spells: do not hit caster. Do not allow casting into walls.
Andreas Kirschbaum 2009-06-29

Fix trajectory of thrown objects. Formerly some objects did speed up again
after they should have fallen to the ground.
Andreas Kirschbaum 2009-06-24

Fix incorrect player counts in /maps command output for logged out players.
Andreas Kirschbaum 2009-06-24

Fix alchemy failure effect: now the cauldron actually explodes.
Andreas Kirschbaum 2009-06-24

Add help file for "chat" command.
Andreas Kirschbaum 2009-06-24

Fix monster movement code. Now multi-tiled monsters are much smarter
attacking the player.
Andreas Kirschbaum 2009-06-24

Fix monster movement code. Now monsters opening door and/or destroying
earthwalls works. Makes multi-tiled monsters more agile.
Andreas Kirschbaum 2009-06-24

Make monsters hit doors with attack damage rather than fixed 1000 damage.
Andreas Kirschbaum 2009-06-24

Make bullet swarm spells fire three tiles wide.
Andreas Kirschbaum 2009-06-23

Change movement of ball spells.
Andreas Kirschbaum 2009-06-22

Make missile and ball spells hit targets adjacent to the caster. Formerly the
spell did start one tile away.
Andreas Kirschbaum 2009-06-22

Limit missile spells to turn at most one direction per turn.
Andreas Kirschbaum 2009-06-22

Make missile and ball spells target a random part for multi-tiled objects.
Andreas Kirschbaum 2009-06-22

Fix array out-of-bounds accesses for monsters having stats > 30. Makes
trolls pick up boulders.
Andreas Kirschbaum 2009-06-22

Do not teleport character to savebed when re-logging in in a random map.
Andreas Kirschbaum 2009-06-21

Make monsters take the shortest route to the player.
Andreas Kirschbaum 2009-06-20

Suppress error messages about non-existing items for "apply -a" on already
applied items or "apply -u" un unapplied items.
Andreas Kirschbaum 2009-06-20

Make singing and oratory skills work against multi-tiled monsters.
Andreas Kirschbaum 2009-06-20

Retain unaggressive flag for splitting monsters.
Andreas Kirschbaum 2009-06-19

Prevent black puddings from jumping over walls.
Andreas Kirschbaum 2009-06-19

Insert dropped objects below the player.
Andreas Kirschbaum 2009-06-18

Allow monsters to pick up "throwable" items as weapons.
Andreas Kirschbaum 2009-06-18

Change weight check for monsters in object_get_pick(): replace
"item_weight <= picker_weight/3" with
"total_picker_weight does not exceed get_weight_limit(picker)". This allows
hill giants to pick up boulders and prevents vampires from carrying unlimited
weight.
Andreas Kirschbaum 2009-06-17

Allow monsters to apply items even if they do not know the needed skill.
Requiring the appropriate can_xxx flag is good enough.
Andreas Kirschbaum 2009-06-17

Add shopitems type 'none' matching items with 'type 0'. Prevents some error
messages in the server log.
Andreas Kirschbaum 2009-06-17

Fix monsters applying items generated from treasure lists: do not apply items
before all treasures have been created. Without this fix applying of weapons
did sometimes fail because the needed skill was generated after the weapon.
Andreas Kirschbaum 2009-06-17

Include "hostile" attribute in (pk) messages.
Andreas Kirschbaum 2009-06-16

Fix owner check ("The weapon does not recognize you as its owner.") for bows
and character names which are a prefix of the owner's name.
Andreas Kirschbaum 2009-06-16

Fix incorrect experience calculation when disarming traps/runes as
reported by Alex Tokar.
Andreas Kirschbaum 2009-06-14

Move party related code into party.c module. Fix PARTY_KILL_LOG compile-time
option. Reliably print party join/leave messages. Properly leave the party
when the client connection breaks or when the character logs out. Properly
clean up empty parties.
Andreas Kirschbaum 2009-06-14

Add command parameter validation as reported by Alex Tokar.
Andreas Kirschbaum 2009-06-14

Extract code accessing or manipulating the player's title into player.c
module. Fixes #2017797 (Multiple 'the' displayed in hiscore output). Needs
update to existing 'settings' files: remove all occurrences of "%T" from
who_format and who_wiz_format.
Andreas Kirschbaum 2009-06-14

Do not switch a monster's enemy at each attack. This allows pets to
concentrate on one enemy when being attacked by multiple enemies.
Do not change monster's enemy from pet to player whenever the player's pet
attacks the monster.
Make pets using ranged weapons work correctly on tiled maps.
Make pets using skills work correctly on tiled maps.
Make pet movement work correctly on tiled maps.
Andreas Kirschbaum 2009-06-14

Rewrite loops iterating over inv/env/below/above object lists with macros
that are not affected by objects being modified/removed/freed within the
loop.
Andreas Kirschbaum 2009-06-13

Apply patch by Dany Talbot fixing #1990214 (2.0 godenchant bug?).
Andreas Kirschbaum 2009-06-10

Fix #1961814 (scripting failing to drop items). Also fixes "drop 1 cauldron"
command.
Andreas Kirschbaum 2009-06-10

Fix rod generation: make sure it can hold enough spell points. Now all light
rods get spell points for 3 changes, heavy rods for 6 charges.
Andreas Kirschbaum 2009-06-10

Merge HORNs (type 35) into RODs (type 3).
Andreas Kirschbaum 2009-06-10

Fix monsters not using wands/staffs/rods.
Andreas Kirschbaum 2009-06-09

Remove support for obsolete attributes can_use_rod, can_use_wand, and
can_use_horn. These attributes have been read/written from/to map files but
not used for anything.
Andreas Kirschbaum 2009-06-09

include/shared: Add as a non-external directory.
include/shared/newclient.h: Added client/trunk/common/shared/newclient.h
  revision 11674 to transfer control of newclient.h from client area to
  server area.
include/shared/README: Add a file with a brief note stating that the client
  references the files in this directory using an SVN external property.
Kevin Bulgrien 2009-05-09

include: After advice of Ragnor against svn:externals without -r, deleted the
  svn:externals pointing to client/trunk/common/shared, after also coming to
  the conclusion that this needs to be controlled in server vs. client so that
  any client software base that wants to use this file can specify the version
  of the file they want instead of the server having to pick one from
  somewhere else.
Kevin Bulgrien 2009-05-09

include: Added svn:externals pointing to client/trunk/common/shared
include/includes.h
include/Makefile.am
include/newclient.h: Removed. Duplicate file.
socket/item.c
socket/image.c
socket/request.c
socket/lowlevel.c
server/c_range.c
server/shop.c
server/player.c: changed references of newclient.h to shared/newclient.h.
Kevin Bulgrien 2009-05-09

server/c_object.c: Fix crash when picking up some flying objects.
Andreas Kirschbaum 2009-04-20

Fix for bug 2281692 - CFDialog conversation NPC answer precedes PC speech.
server/monster.c: ext_info_map() wasn't called until after the event logic.
Instead, for players, we can draw it immediately - we only need to perhaps do
something special for monsters.  In this way, conversation is in the correct
order.
MSW 2009-04-14

Apply #2753395 (help file for the wimpy command).
Andreas Kirschbaum 2009-04-11

Fix for bug 2602566 - Players can nest containers.  pick_up() has largely
same functionality, but lots of changes to remove the series of gotos and
generally just clean it up.
server/c_object.c: Clean up function pick_up().  Modify put_object_in_sack()
   to not allow containers to be put in containers.
MSW 2009-04-07

Fix for bug include/autoconf.h.in - customize stack of weapons bug.
This commit also fixes some other things, like update name not getting
sent to the client when doing the prepare.
types/weapon_improver/weapon_improver.c: All changes in prepare_weapon():
    Split stack of weapons so other items don't disappear.  Move the
    draw_info() call after updating the weapon name, so it uses new
    weapon name.  Add call to esrv_update_item() to update the name
    of the weapon.
MSW 2009-04-05

common/friend.c, common/exp.c, common/button.c, common/object.c, common/utils.c:
  Fix some bad format strings for LOG().
Arvid Norlander 2009-03-04

common/map.c: Based on profiling of charm monster on a large map with Chinese
  dragons, optimise get_map_flags() a bit by avoiding a call to out_of_map(),
  get_map_from_coord() performs the needed checks and we need to call it anyway.
  Also fix typos in the documentation for get_map_from_coord().
Arvid Norlander 2009-03-03

server/attack.c: Fix crash bug introduced in r11584 (Fix for bug 1922771: xp non
  zero in meditation). Bug triggered by charming chinese dragons.
Arvid Norlander 2009-03-03

Work in progress skill rebalance code.  This should not affect play in any
way - while it introduces some new skills, those skills are not available
right now (players need to choose class that doesn't exist).
---
doc/Developers/spells: Fix some typos, add info on elemental shield.
include/skills.h: Add new magic skills.  Update defines related to that.
   Change terminator of unarmed_skills[] to 0, so type is defined as
   unsigned so -1 doesn't work.
include/spells.h: Add new spell type - elemental shield.
server/player.c: Don't remove spell objects from new characters - this
   makes it possible to give starting characters set of spells.
   This shouldn't make any difference - if characters have spells they
   shouldn't, this suggests an issue with treasurelists.
server/skill_util.c: Modify find_skill_by_name() to take comma separated
   list of skill names.  This is used for common spells to all spell
   casting skills (something like detect magic) - don't want 4 versions
   of it, and don't want to require character to know a particular
   skill for something basic.  Also add handling for new skills.
server/skills.c: Add note about problems of raising monsters Wis on
   failed steal attempt.  No actual code change.
server/spell_effect.c: Update for auras that provide resistances.
server/spell_util.c: Add handling for elemental shield spell.
--
MSW 2009-03-02

Fix for bug 1830750: Buffer overflow with stat depletion via rabies
(note it wasn't an actual buffer overflow by integer overflow).  Fix was to
modify check_stat_bounds() to take parameters for valid range, and add check
for it for the disease a well as temporary calculations in fix_object.
---
common/living.c: Modify check_stat_bounds() as described above.  Update
    existing calls and add new call in fix_object()
include/libproto.h: Update with no prototype.
server/disease.c: Update disease function to use get_attr_value/
    set_attr_value.  Add call to check_stat_bounds to make sure disease
    stats are within range.
server/player.c: Update calls to check_stat_bounds()
MSW 2009-03-02

test/toolkit/toolkit_common.c, test/include/toolkit_common.h: Fix a lot of
  compiler warnings in the unit tests by adding a missing prototype to a header
  and correcting another prototype.
server/c_misc.c: Fix trivially player triggered uninitialised read in the
  language command.
common/object.c: Use "%s" to LOG() when dumping objects instead of passing
  the dump as format string. Fix some compile warnings about variable shadowing.
Arvid Norlander 2009-03-02

common/anim.c: Use "%s" to LOG() when dumping objects instead of passing
  the dump as format string.
common/image.c: Fix LOG() with too formatstring/parameter mismatch.
common/init.c: Fix a compiler warning when using MEMORY_DEBUG, fix an
  uninitialised read if tod data file exists but is invalid (default to sane
  value instead, as is done if the file doesn't exist at all).
common/map.c: Fix a potential uninitialised read.
Arvid Norlander 2009-03-02

macros/cf_python.m4: Support Python 3 but prefer Python 2 when possible. This
  is because Python 3 is still rather experimental. To force building against a
  specific Python version use --with-python=path where path is replaced with the
  install prefix for Python.
Arvid Norlander 2009-02-27

plugins/cfpython/cjson.c: Add support for Python 3. For Python 3 we always
  encode to Bytes but can decode both Bytes and Unicode. For decoded strings the
  default is to use Unicode under Python 3 (and under 2.x we still default to
  String).
plugins/cfpython/cfpython: Support for Python 3. This involves some changes for
  Python 2.x too in order to make it possible to maintain the code. Some of the
  Python 3.x specific code for caching bytecode is rather messy and could be
  probably be improved. The way the constant modules are created has been
  changed to support both Python 2.x and 3.x (now using PyModule_New()).
Arvid Norlander 2009-02-27

server/attack.c: Fix for bug 1922771: xp non zero in meditation.  In
    poison_living(), do some more work to find proper skill to set to credit
    the exp gain - for players, op->skill doesn't look like it is set,
    but op->chosen_skill is.
MSW 2009-02-26

autogen.sh: Error out if the various programs called aren't successful. This
  means we can hopefully get the first error in bug reports instead of errors
  caused by the first error later.
Arvid Norlander 2009-02-26

server/attack.c: Fix for bug 2019648: Too high experience gain with draining
    monsters.  Don't add more exp to monsters than the player lost by draining.
    Record original exp of player before draining and use that as a check in
    MIN() statement - because from old code, divisor is twice as much as
    we remove, very likely the old method will be less than actual lost exp.
MSW 2009-02-25

server/attack.c: Fix for bug 2021012: Do insane damage in arena - if
    characters are on battleground, do not reduce damage for them
    being friendly.
MSW 2009-02-24

Fix for bug 1988417 - rebalanced WC bug.
common/living.c: Remove unneeded if op->type==PLAYER right after closing
    brace for same if clause.  Move character_load to top of that code
    block.  Fix wc calculation so now if skill_level>=1 and not >1.
    Fix fallback method to divide characters overall level in calculating
    wc to give more sane results.  Add key/value wc_increase_rate so
    skills can be better tuned instead of having it hardcoded (it is
    still hardcoded as a fallback if that isn't set)
doc/Developers/skills: Update some notes on values in combat skills,
    especially the wc_increase_rate.
MSW 2009-02-22

plugins/cfpython/cfpython_archetype.c, plugins/cfpython/cfpython_object.c,
  plugins/cfpython/cfpython_party.c, plugins/cfpython/cfpython_region.c,
  plugins/cfpython/cfpython_map.c,
  plugins/cfpython/include/cfpython_object_private.h,
  plugins/cfpython/include/cfpython_map_private.h,
  plugins/cfpython/include/cfpython_party_private.h,
  plugins/cfpython/include/cfpython_region_private.h,
  plugins/cfpython/include/cfpython_archetype_private.h: Implement the function
  tp_richcompare, since Python 3.x no longer uses tp_compare. tp_richcompare can
  also be used on Python 2.x. Also fix broken compare for players since
  tp_richcompare and tp_compare are not inherited if tp_hash is non-NULL.
  Also fix type definition head initialisation for Python 3.x.
plugins/cfpython/include/cfpython_region_private.h: Fix a typo that resulted in
  Python showing region type name as Crossfire.Party.
plugins/cfpython/cfpython_map.c: Fix several crash bugs related to swapped out
  maps.
Arvid Norlander 2009-02-19

server/c_range.c, server/init.c, server/shop.c, server/login.c, server/c_wiz.c:
  Fix some format string bugs (found using the GCC format __attribute__ for some
  crossfire functions).
server/c_wiz.c: Add some missing [fixed] to style_info output.
Arvid Norlander 2009-02-17

socket/item.c, socket/loop.c, socket/lowlevel.c, socket/metaserver.c: Fix some
  format string bugs (found using the GCC format __attribute__ for some
  crossfire functions).
Arvid Norlander 2009-02-17

common/map.c: Make a function static.
common/loader.l, common/object.c, common/readable.c: Fix some format string bugs
  (found using the GCC format __attribute__ for some crossfire functions).
Arvid Norlander 2009-02-17

common/map.c: Properly fill in op->more for multipart objects in containers.
  Multipart objects in containers can happen for customised monsters in
  generator inventories. This happened on /darcap/raffle/raffle1_u3.
Arvid Norlander 2009-02-17

README: Update the README file somewhat. It mentioned CVS and various other
  outdated things.
Arvid Norlander 2009-02-16

This is another step towards Python 3.x support, however in this commit there
are mostly fixes for various bugs in the existing found when working on the
porting. Also this commit drops support for Python 2.3 and older. This support
was already broken (some code already used modern features).
---
plugins/cfpython/include/cfpython.h: We need more python-version dependant
  defines so rewrite the checks to be cleaner as well.
plugins/cfpython/include/cfpython_object.h: Add a variant of the EXISTCHECK()
  macro that also verifies that the type matches (to fix some crashes).
plugins/cfpython/include/cfpython_party_private.h,
  plugins/cfpython/include/cfpython_region_private.h,
  plugins/cfpython/include/cfpython_archetype_private.h: Fix the method calling
  conventions to match was actually being done in the code.
plugins/cfpython/include/cfpython_object_private.h,
  plugins/cfpython/include/cfpython_map_private.h,
  plugins/cfpython/cfpython_object.c, plugins/cfpython/cfpython_map.c: Fix out
  of date PyNumberMethods structs. Handle the int/long unification in Python 3
  as well. Change to calling convention METH_NOARGS when no arguments were
  passed to the methods. Change to METH_O when a single object argument was
  passed. Add checks for correct type of objects where that was missing (could
  result in crashes before, if there were bugs in the python scripts, now such
  bugs will just throw a python exception).
plugins/cfpython/cfpython.c: Change to calling convention METH_NOARGS when no
  arguments were passed to the methods.
macros/cf_python.m4: Remove checks for Python 2.3 and older.
Arvid Norlander 2009-02-14

plugins/cfpython/cfpython.c, plugins/cfpython/cfpython_map.c,
  plugins/cfpython/include/cfpython_archetype_private.h,
  plugins/cfpython/include/cfpython_region_private.h,
  plugins/cfpython/include/cfpython_party_private.h,
  plugins/cfpython/include/cfpython_map_private.h,
  plugins/cfpython/include/cfpython_object_private.h,
  plugins/cfpython/include/cfpython.h, plugins/cfpython/cfpython_object.c: Some
  of the changes needed to support Python 3: Adding some compatibility defines
  to support some stuff on both Python 2 and Python 3. This also means we now
  support unicode strings in a few places we didn't before. Also properly handle
  "hash not supported" under Python 2.6 or later.
Arvid Norlander 2009-02-13

server/apply.c, server/skills.c, server/player.c, server/spell_attack.c: Add a
  comment marking some variables set but then never used (found with compiler
  warnings). Unsure about what the correct way to solve them are (that is:
  should the variable assignment be removed, or should the variable be used
  somewhere).
server/c_misc.c, common/map.c, common/object.c: Fix some format strings using %d
  when %u should have been used.
Arvid Norlander 2009-02-13

plugins/cfpython/include/cfpython_proto.h, plugins/cfpython/cfpython.c: Fix
  broken give command. Was broken due to MSW removing -Bsymbolic when building
  plugins about half a year ago. Also change some other symbols to static in the
  plugins to avoid more issues like this.
plugins/cflogger/include/cflogger_proto.h, plugins/cflogger/cflogger.c,
  plugins/citylife/include/citylife_proto.h, plugins/citylife/citylife.c,
  plugins/cfrhg/include/cfrhg_proto.h, plugins/cfrhg/cfrhg.c,
  plugins/cfanim/include/cfanim.h, plugins/cfanim/include/cfanim_proto.h,
  plugins/cfanim/cfanim.c, plugins/cfnewspaper/include/cfnewspaper_proto.h,
  plugins/cfnewspaper/cfnewspaper.c: More changes in the same style as the above
  python changes to reduce possible symbol lookup conflicts. Also make some
  functions static.
plugins/cfrhg/include/cfrhg_proto.h, plugins/cfrhg/cfrhg.c: Fix a typo in cfrhg
  (was "cfrgh" in one place).
Arvid Norlander 2009-02-12

common/treasure.c: Restore item_power if GT_MINIMAL is passed into
    fix_generated_item().  Fixes bug 2590465: Anvils making items without
    item power
MSW 2009-02-11

lib/Makefile.am: replace make with $(MAKE) - needed if using non default
    make, or otherwise have special set up.
MSW 2009-02-11

lib/attackmess: Fix for bug# [ 2565212 ] Output quirk with wraith feed ability
(You You).  Removed 'You' text from the attack messages file.
Rick Tanner 2009-02-11

lib/.collect-stamp, lib/smooth: Both of these are generated by make collect,
  remove them from SVN. The latter file also showed up a lot in svn diff because
  the locally generated copy no longer matched the svn version and no one
  committed the change.
lib/: Add those two removed files to svn:ignore.
lib/Makefile.am: Update to match change, also add some other auto generated
  files to MAINTAINERCLEANFILES.
Arvid Norlander 2009-02-10

include/living.h, include/player.h: Rearrange member order in some structs to
  reduce wasted space due to alignment.
Arvid Norlander 2009-02-10

plugins/cfnewspaper/cfnewspaper.c: Remove unused function.
Arvid Norlander 2009-02-10

types/README: Fix indentation.
Arvid Norlander 2009-02-10

test/templates/logresult.xsl: Fix case of tag, must be lower case since it
  generates XHTML, not HTML.
check-fragment.am: Make report generation work for out of tree builds. We now
  copy the xsl files to test/logs/ before everything else, instead of after. We
  also use the copy now, instead of using the file in test/templates/.
Arvid Norlander 2009-02-10

test/templates/crossfire-logo-unit-failed.png,
  test/templates/crossfire-logo-unit-success.png,
  test/templates/txtlog.png, test/templates/failure.png,
  test/templates/success.png, test/templates/error.png,
  test/templates/crossfire-logo-unit.png: Recompress png images for smaller file
  size.
Arvid Norlander 2009-02-10

check-fragment.am: Add a define -DBUILD_ROOT to support out of tree builds
  properly.
test/unit/common/check_object.c, test/unit/common/check_loader.c,
  test/unit/common/check_arch.c, test/unit/common/check_item.c: make check
  should now works for out of tree builds. Not well tested yet. Not functional
  changes for in-tree builds.
Arvid Norlander 2009-02-10

include/Makefile.am: Make svnversion.h work properly when the build tree is
  not the source tree.
Arvid Norlander 2009-02-10

include/object.h: Small spelling correction in comment.
utils/mapper.c: Fix a crash when generating tiled (non-world) maps (such as for
  greenway) and the user used -limit.
Arvid Norlander 2009-02-10

plugins/cfpython/cfpython_object.c,
  plugins/cfpython/include/cfpython_object_private.h: Add Object_GetAnimated()
  to be able to read this property (it used to be write only from python).
Arvid Norlander 2009-02-10

plugins/cfpython/cfpython_object.c,
  plugins/cfpython/include/cfpython_object_private.h: Make it possible to set
  Object.Identified as well as get it. This was used by some python scripts
  (though it didn't actually work).
Arvid Norlander 2009-02-09

utils/mapper.c: Fix a segfault when generating world map and not all input maps
  was found (could happen using -limit).
Arvid Norlander 2009-02-08

utils/mapper.c: Change // style comment to /**/ style. Add missing include. Make
  some variables and functions static (fixing GCC warnings about missing
  prototypes). Change some 0 to NULL for pointers to make code clearer.
Arvid Norlander 2009-02-08

utils/mapper.c: Change all sprintf() to snprintf(). Also fix a crash due to
  division by zero when using -limit and we didn't get as far as processing any
  maps with non-zero elevation.
Arvid Norlander 2009-02-08

utils/mapper.c: Remove some unused variables. Get rid of zero length snprintf()
  (caused GCC warning).
Arvid Norlander 2009-02-08

include/libproto.h, common/dialog.c, common/init.c, common/object.c,
  common/button.c, common/region.c, common/living.c, common/time.c,
  common/recipe.c, common/map.c, common/arch.c, common/treasure.c: Make a lot
  of functions that aren't used outside one file in common/ static.
Arvid Norlander 2009-02-07

common/readable.c, common/object.c, common/map.c, include/libproto.h: Use size_t
  instead of int for buffer sizes.
common/readable.c, include/libproto.h: Make some functions not used elsewhere
  static.
common/readable.c: Get rid of sprintf().
Arvid Norlander 2009-02-07

common/porting.c: Fix format string.
Arvid Norlander 2009-02-07

common/player.c: Remove unused variables.
Arvid Norlander 2009-02-07

types/mood_floor/mood_floor.c: Use NULL instead of 0 for pointers.
types/player_mover/player_mover.c: Assigning a floating point constant to an
  integer variable makes no sense.
Arvid Norlander 2009-02-07

include/libproto.h, include/ob_methods.h, include/typesproto.h,
  common/ob_methods.c, types/common/describe.c, types/legacy/legacy_describe.c:
  Use size_t when working with buffer sizes.
include/sproto.h, server/attack.c, server/spell_util.c: Attack type should be
  uint32 and not int.
Arvid Norlander 2009-02-07

types/shop_inventory/shop_inventory.c: Use size_t not int when working with
  list sizes. The variable i is used for several things, but using size_t should
  be safe for all uses of it.
Arvid Norlander 2009-02-07

types/deep_swamp/deep_swamp.c: Replace sprintf() with snprintf().
Arvid Norlander 2009-02-07

common/readable.c: Fix a snprintf() with non-constant format string and no
  parameters passed.
Arvid Norlander 2009-02-07

types/detector/detector.c: Fix GCC warning caused by a declaration of an
  unimplemented, unused static function.
Arvid Norlander 2009-02-07

plugins/cfpython/include/cfpython_object_private.h,
  plugins/cfpython/include/cfpython_map_private.h,
  plugins/cfpython/include/cfpython_party_private.h,
  plugins/cfpython/include/cfpython_region_private.h,
  plugins/cfpython/include/cfpython_archetype_private.h,
  plugins/cfpython/cfpython.c: Fix some minor issues (variables that should have
  been static, using 0 instead of NULL [leading to more confusing code]).
Arvid Norlander 2009-02-07

plugins/cfanim/cfanim.c, plugins/cflogger/cflogger.c:  Fix some minor issues
  (variables that should have been static, using 0 instead of NULL, leading to
  more confusing code) found using the static analysis tool "sparse".
Arvid Norlander 2009-02-07

server/init.c: Avoid some warnings by casting function to one with the right
  type before calling. Also convert some char* to const char* and make the
  variable options static.
Arvid Norlander 2009-02-06

server/pets.c, server/player.c, server/plugins.c: Fix some minor issues (such as
  using 0 instead of NULL [leading to more confusing code], using snprintf with
  no format arguments [use strncpy instead], using int instead of tag_t [which
  is typedefed to unsigned int]).
Arvid Norlander 2009-02-06

socket/info.c, server/alchemy.c, server/gods.c: Fix some minor issues (using 0
  instead of NULL [leading to confusing code], casting const char* to char*).
Arvid Norlander 2009-02-06

include/global.h: Get rid of some warnings by making some "char*" "const char*"
  in the Settings struct.
Arvid Norlander 2009-02-06

server/player.c: Make sure unpaid items are removed at death even on non-shop
  floors.
Arvid Norlander 2009-02-06

server/spell_effect.c: Fix part of bug #2457751
  "Unpaid items work for some things...". Staff to snake and animate weapon no
  longer works on unpaid items.
Arvid Norlander 2009-02-06

common/readable.c: Passing the same buffer as both the output buffer as a
  parameter in the format to s(n)printf invokes undefined behaviour. Avoid doing
  that. Tests showed that glibc treated the buffer as empty, resulting in
  ignoring whatever was in the buffer before.
Arvid Norlander 2009-02-06

common/item.c: Make item_types_size static, it isn't used elsewhere.
Arvid Norlander 2009-02-06

server/attack.c: Fix rare abort() with spells like dragonfire on multi-tile
  objects. Required some single tile object to be on top of the multi-tile
  object.
Arvid Norlander 2009-02-04

server/spell_attack.c: Fix bug #2353025 "2.0, holy wrath and ret. strike freeze
  server". This happened because explosion spells use stats.maxhp as a unique ID
  to avoid running out of control. This one was properly set by bullet spells,
  but not by smite spells. Fix this.
Arvid Norlander 2009-02-04

server/spell_util.c: Put cap on level used for cast_magic_storm() in
    prayer_failure() - otherwise, spell can hang the server as it
    gets cast at super high level.
MSW 2009-02-04

common/button.c: Fix bug #2457751 "Unpaid items work for some things...". Now
  dropping unpaid items on altars no longer works.
Arvid Norlander 2009-02-03

Fix out-of-bounds accessess to xxx_bonus[] (and similar) arrays.
Andreas Kirschbaum

common/living.c:
random_maps/wall.c, random_maps/style.c, random_maps/door.c, random_maps/exit.c,
  random_maps/random_map.c, random_maps/rogue_layout.c, random_maps/test.c,
  random_maps/special.c, random_maps/floor.c, random_maps/monster.c,
  random_maps/standalone.c, random_maps/treasure.c: Fix some minor issues
  (variables that should have been static, using 0 instead of NULL [leading to
  more confusing code], mismatching prototype and so on) found  using the static
  analysis tool "sparse" (made for Linux kernel originally).
Arvid Norlander 2009-02-03

random_maps/reader.l, common/loader.l, include/libproto.h: The shared yyerror()
  in loader.l didn't work properly in reader.l (which was the intention).
  Instead it caused memory errors (and potentially segfaults) when called. This
  was due to yyerror() accessing the static variable yytext, which is unique to
  each file. Since yytext in loader.l was often freed already when yyerror() in
  reader.l was called this would cause memory errors. If it wasn't yet freed it
  would instead report irrelevant data in the error message. Thus duplicate the
  routine to both of the files, and make them both static.
Arvid Norlander 2009-02-03

Encapsulate access to xxx_bonus[] (and similar) arrays with accessor functions
get_xxx_bonus().
---
common/living.c: Make arrays static. Add accessor functions.
common/living.h: Remove arrays. Add accessor function prototypes.
*.c: Replace xxx_bonus[stat] with get_xxx_bonus(stat).
Andreas Kirschbaum 2009-02-03

common/object.c, common/exp.c, common/time.c, common/recipe.c, common/arch.c,
  common/map.c, common/los.c: Fix some minor issues (variables that should have
  been static, using 0 instead of NULL, leading to more confusing code) found
  using the static analysis tool "sparse" (made for Linux kernel originally).
Arvid Norlander 2009-02-03

plugins/cfpython/include/cfpython.h, plugins/cfpython/cfpython.c:
  To make porting to Python 3 in the future easier, enable the forward
  compatibility warning flag if crossfire is compiled against Python 2.6, this
  will result in warnings to stderr about "DeprecationWarning" if incompatible
  code is found. Several issues has already been fixed recently (thanks to
  having this enabled locally). Compiling Crossfire against Python 2.5 or older
  still works (of course). Also add a missing include causing warnings under
  Python 2.6.
Arvid Norlander 2009-02-03

common/shstr.c: Use the correct return type from hashstr() current code assumed
  sizeof(int) == sizeof(long) == sizeof(void*) which is incorrect for many
  systems (such as x86_64). There was another potential (as in: would not happen
  with current hash table size) issue in the same code with mixing signed and
  unsigned. Also fixed.
Arvid Norlander 2009-02-03

server/plugins.c: Fix possible buffer overflow when initializing plugins.
Andreas Kirschbaum 2009-02-03

doc/Developers/smooth.pdf, doc/Developers/img/sgrass.base.111.eps,
  doc/Developers/img/smoothlevel.eps, doc/Developers/img/canvas_smooth.eps,
  doc/Developers/smooth.tex: smooth.pdf was broken (due to someone using
  svn:eol-style on it [as far as I can tell], pdf are binary files and shouldn't
  be mangled like that!). Also the pdf couldn't be re-generated from smooth.tex
  since some of the image files were missing. (They were erroneously removed in
  revision 3560). Add the three *.eps needed back. Then regenerate the pdf.
  Also some cosmetic changes to the file.
Arvid Norlander 2009-02-03

doc/Developers/sound, doc/Developers/*.dox, doc/Developers/types/*.dox,
  doc/Developers/fields/*.dox: Set svn:eol-style to native. Correct a few files
  that were stored with CRLF.
Arvid Norlander 2009-02-03

include/define.h, include/libproto.h, common/item.c, common/readable.c,
  common/loader.l: Make safe_strcat() (defined in include/define.h for some
  odd reason) use size_t instead of int for buffer size, since this includes
  changing a pointer to int into a pointer to size_t update all calls to
  safe_strcat() to use size_t for that.
Arvid Norlander 2009-02-02

common/object.c, include/config.h: Document the different levels of MEMORY_DEBUG
  and add a third level that calls free() instead of adding back to free list
  in order to more properly detect use after free.
Arvid Norlander 2009-02-01

common/object.c, include/config.h: Workaround to make MEMORY_DEBUG usable,
  currently we can't realloc on allocation to ensure the backtrace is correct
  (as the comment in the code described) since a lot of stuff access objects
  after freeing and fixing these are non-trivial. So disable realloc() for now
  unless MEMORY_DEBUG is defined to a value greater than 1. Also fix one of the
  accesses after free_object() (was in clean_friendly_list()).
Arvid Norlander 2009-02-01

common/re-cmp.c: Correct some #ifdef to use the correct variable name
  (SAFE_CHECKS not SAFE_CHECK).
Arvid Norlander 2009-02-01

include/define.h: Update comment about INORGANIC (type 73) including
  dragon scales. Making them type flesh had negative consequences such
  as making them edible and causing them to weigh 50000Kg instead of 25Kg
  each.
Rick Tanner 2009-01-31

common/player.c, include/libproto.h, server/player.c: Fix a few memory leaks
  if player selects "play again" after logging out.
Arvid Norlander 2009-01-29

plugins/cfpython/cfpython.c: Remove some Py_DECREF() calls in the python module.
  This fixes bug #2459929 (DECREF error, bombs server if python is strict).
  However, I'm not sure this is the correct way to fix that bug.
Arvid Norlander 2009-01-29

macros/cf_python.m4: Add python 2.6 to the python path search lists as well.
Arvid Norlander 2009-01-28

include/newserver.h, socket/init.c, socket/request.c: Remove MapMode
  type/mapmode field since only one mode is supported.
Andreas Kirschbaum 2009-01-28

common/shstr.c, common/arch.c, common/path.c: Fix some int that should have been
  size_t, found using splint.
common/arch.c: Also fix an "int" that should have been "unsigned long".
include/libproto.h, include/path.h: Update prototypes where needed for these int
  to size_t changes.
Arvid Norlander 2009-01-28

macros/libtool.m4: Removed this file as it depends on which libtool version is
  installed on the system running autogen.sh. configure will fail with an error
  if version doesn't match between this file and the generated (non-versioned)
  file utils/ltmain.sh. autogen.sh will install the correct version of
  macros/libtool.m4 as long as a newer version doesn't exist. Thus removing this
  file from SVN is the correct way to solve the issue. This file _should_
  however be included in release tarballs since utils/ltmain.sh will also be
  included there.
macros/: Added svn:ignore for libtool.m4
Arvid Norlander 2009-01-27

server/plugins.c: Set plugins_list to NULL when unloading plugins at exit to
  prevent some possible issues if someone tries to mess with plugins afterwards.
Arvid Norlander 2009-01-26

include/libproto.h, common/arch.c: Make hasharch() in arch.c static since it
  wasn't (and shouldn't be) used anywhere else.
Arvid Norlander 2009-01-26

test/unit/common/check_shstr.c: Fix small memory leak in the shstr unit test.
common/arch.c: Make free_all_archs() also clear the hash table for archetypes,
  this fixes an invalid read in test/unit/common/check_arch.c.
Arvid Norlander 2009-01-26

Use a subdirectory for aclocal macros instead of the old-style acinclude.m4.
This will make it simpler to maintain and update to current upstream copies of
the various autoconf macros. This commit does not update to current upstream
copies, but extracts the version crossfire used from the old acinclude.m4.
---
autogen.sh: Updated commands to match for this change.
include/autoconf.h.in: Auto-regenerated by autotools, no functionality changes.
macros/: Added
macros/libtool.m4: Auto imported by aclocal, previously aclocal copied this
  directly into the (non-versioned) file aclocal.m4.
macros/cf_xslt.m4, macros/cf_python.m4, macros/libcurl.m4, macros/check.m4:
  Extracted from acinclude.m4.
acinclude.m4: Removed.
Makefile.am: Added matching ACLOCAL_AMFLAGS line.
---
Arvid Norlander 2009-01-26

lib/Makefile.am, lib/adm/collect_images.pl: Make out of tree builds work. Note
  that the arch symlink in lib should be placed in the build tree. Further: the
  Perl script change might be suboptimal, I'm not a Perl expert.
Arvid Norlander 2009-01-25

types/transport/transport.c: Add missing braces to if clause in
    transport_type_process().
MSW 2009-01-24

Server part of client window resizing.  When server gets a mapsize request,
it now clears its map data so it does a complete refresh of the map to the
client.  This fixes drawing issues.
---
include/sockproto.h: Change map_newmap_cmd() definition
server/move.c, server/plugins.c, server/server.c, server/spell_effect.c:
    Change call to map_newmap_cmd()
socket/request.c: Add call to map_new_cmd() in setup area.  Change
    map_newmap_cmd() to take a socket structure instead of player -
    the setup only has socket pointer and not player pointer to use.
---
MSW 2009-01-24

test/unit/server/check_c_party.c: Fix failing regression test. (Access to
  uninitialized variable.)
Andreas Kirschbaum 2009-01-24

test/unit/common/check_object.c: Make the test_count_free test work in a build
  with MEMORY_DEBUG turned on as well.
Arvid Norlander 2009-01-24

common/image.c: Fix crash if read_bmap_names() is called more than once.
  Needed for debugging regression tests.
test/unit/common/check_object.c: Fix failing regression test. (Access to
  non-existent face.)
Andreas Kirschbaum 2009-01-24

common/readable.c, common/dialog.c, common/loader.l, common/treasure.c,
  common/image.c, socket/item.c: Add missing ending \n to LOG() calls.
Arvid Norlander 2009-01-24

socket/info.c: Fix stack smashing in magic_mapping_mark() on maps wider than 50
  tiles.
Arvid Norlander 2009-01-24

test/unit/common/check_item.c: Fix failing regression test.
Andreas Kirschbaum 2009-01-24

plugins/common/hashtable.c: Rewrite the code documentation to doxygen style.
Arvid Norlander 2009-01-23

plugins/cflogger/cflogger.c: Make non-direct kills (kill by spell, kill by
  poison, kill by golem and so on) register properly.
Arvid Norlander 2009-01-23

plugins/cflogger/cflogger.c: Slight error in last commit, turns out time table
  can't use real time as primary key. Change database schema to format 3.
  Upgrades directly from version 1 not run into the issue.
Arvid Norlander 2009-01-23

plugins/cflogger/cflogger.c: Clean out some of the messy and broken SQL (didn't
  use indexes, was missing important constraints and so on) in cflogger. This
  includes introducing a new version of the SQL schema used. The database will
  be automatically upgraded at next run. Be aware of that older versions were
  missing a check for too new format, thus once you upgraded the format you
  should not run it with an older version of the server. Changes to the schema
  includes adding some indexes and similar.
Arvid Norlander 2009-01-22

plugins/cflogger/cflogger.c, plugins/cfnewspaper/cfnewspaper.c: Now handles
  random maps the way the source code comments claims it does.
plugins/cfnewspaper/cfnewspaper.c: Make info about kills from a specific region
  work.
Arvid Norlander 2009-01-22

common/object.c: Add missing newline to log message that is shown if
  MEMORY_DEBUG is defined.
Arvid Norlander 2009-01-21

common/arch.c: Fix memory leak in archetypes when discrete damage is used.
Arvid Norlander 2009-01-21

server/plugins.c: Remove forgotten debug output.
plugins/cflogger/cflogger.c, plugins/cfnewspaper/cfnewspaper.c: Add missing
  newline in log output.
plugins/cfnewspaper/cfnewspaper.c: Close the second sqlite database as well.
Arvid Norlander 2009-01-21

server/plugins.c, server/server.c: Run closePlugin() in the various plugins at
  server shutdown. Previously it was only run when the wiz command plugout was
  used. This change is needed to properly close the sqlite database handles in
  cflogger and cfnewspaper.
include/sproto.h: Run make proto in server/ to include the newly added
  cleanupPlugins() in server/plugins.c. This caused some other changes, such as
  reordering and adding some other functions.
Arvid Norlander 2009-01-21

server/plugins.c: Fix broken error checking in plugin loading code.
Arvid Norlander 2009-01-21

common/readable.c: Fix a rare bug that caused the use of an uninitialised
  variable in god_info_msg() for gods denies summoning (such as valkyrie).
Arvid Norlander 2009-01-21

doc/Developers/objects, lib/artifacts: Remove obsolete fields color_fg and
 color_bg.
lib/adm/map_info: Remove support for color_fg/color_bg fields.
Andreas Kirschbaum 2008-12-12

server/login.c: Clear shootype value when player leaves game - otherwise
   it will point to bad value in ranges[] array.
MSW 2008-11-25

lib/collect.pl.in: Prepend an underscore to names generated for implicitly
 defined animations.
Andreas Kirschbaum 2008-11-23

Rewrite SockList handling to not malloc/free buffers but use stack
 space instead. Encapsulate most accesses to SockList instances into
 lowlevel.c.
Andreas Kirschbaum 2008-11-21

common/treasure.c: Do not call tailor_readable_ob() with invalid msgtype
 parameter.
common/readable.c: Detect and report errors when saving bookarch file.
common/readable.c: Remove trailing whitespace from generated book
 contents.
common/readable.c: Do not call get_titlelist() for invalid indices.
common/readable.c: Fix 'bookarch' parser to strip trailing spaces but not
 leading spaces. Fix possible memory leak when reading the 'bookarch'
 file. Detect and report syntax errors.
Andreas Kirschbaum 2008-11-20

common/readable.c: Fix 'messages' file parser to strip trailing spaces but
 not leading spaces. Issue warning messages if messages are truncated.
 Detect and report syntax errors rather than crash.
common/readable.c: Fix incorrect random expression -- condition was always
 false.
socket/image.c: Accelerate "replyinfo image_sums" processing.
doc/Developers/protocol: Fix documentation for "replyinfo image_sums"
 format.
Andreas Kirschbaum 2008-11-19

socket/request.c, doc/Developers/protocol: Properly check "setup"
 settings; document allowed values.
socket/request.c: Properly check input read from client socket.
Andreas Kirschbaum 2008-11-18

Apply patch #2305993: Random Item generation difficutly table expansion,
courtesy meflin.
 common/treasure.c
 include/treasure.h
Nicolas Weeger 2008-11-17

Allow transports to not occupy the same spaces depending on the facing direction.
 common/map.c: tweak various move_type checks for transport
 doc/Developers/objects: update with special flag
 server/player.c: special handling for transport facings
Nicolas Weeger 2008-11-16

Reduce selling cost of Gourmet Mushrooms.  They were to easy to exploit
and abuse for massive cash influx. Requested change by meflin.
 /lib/artifacts
Rick Tanner 2008-11-11

Tentative fix for bug #1982043: Ruggilli immolation.
 server/disease.c: don't remove god-diven diseases.
Nicolas Weeger 2008-11-11

Fix for bug #2259992: I dont know how to apply the ... * (unpaid).
 include/ob_methods.h: new return value for methods.
 server/apply.c: don't display anything if player already warned.
Nicolas Weeger 2008-11-11

Tentative fix for bug #2094038: Monk Confusion...
 server/gods.c: don't try to update the 'no weapon' flag if the player is
 forbidden weapons, that messes with things.
Nicolas Weeger 2008-11-10

Remove obsolete 'color_fg' handling.
 common/image.c
Nicolas Weeger 2008-11-10

Merge smoothing information in New_Face, to simplify some.
 common/image.c
 include/face.h
Nicolas Weeger 2008-11-09

Apply patch #2040854: Patch to compile on OSX PPC, and to comply with ANSI C, by elliotbay.
Basically put an array definition in the .c instead of the .h.
 plugins/cfpython/include/cfpython.h
 plugins/cfpython/cfpython.c
Nicolas Weeger 2008-11-09

Fix for bug #2249875: 2.0 random say crashes.
Remove 'duplicate_dialog_information()', and merely clear FLAG_DIALOG_PARSED in
object copy so dialog is correctly parsed again when needed.
 common/dialog.c object.c
 include/libproto.h
Nicolas Weeger 2008-11-09

Initial import of Crossfire Resource Editor, tool to manage various resources like
artifacts, archetypes, faces, animations, treasures.
For now it only lets the user view, but edition is planned.
This is a C++/Qt program, not part of the regular build system.
 utils/cre/*cpp *h: CRE files.
Nicolas Weeger 2008-11-08

Rename map's 'template' field which conflicts with C++ compilers.
Also change 'region' and 'shopitems' in some structures to the underlying structure
instead of the typedef, for the same confusion reason.
 common/anim.c map.c
 include/map.h
 random_maps/random_map.h
 server/server.c swap.c
Nicolas Weeger 2008-11-08

Tentative fix for bug #2018391: Zero-cap or capless containers, also stacking containers.
Split containers when reading/applying them (coherent with eg rings when applied).
Also ensure that a sack is split when putting things into it anyway.
 include/sproto.h: function now visible to others.
 server/apply.c c_object.c: split containers
 socket/item.c: don't crash if object isn't a player.
 test/unit/server/check_c_object.c: write some tests for put_object_in_sack().
Nicolas Weeger 2008-10-31

Fix for bug #2081472: short int encoding for food value in payment altars.
 include/living.h object.h: make food and last_eat sint32 so no overflow.
Nicolas Weeger 2008-10-31

Fix for bug #2140899: crash server by reading scroll on ground.
 types/scroll/scroll.c: keep scroll's inventory name in case inventory
  is removed.
Nicolas Weeger 2008-10-05

Add a function called tempnam_secure(), unlike the old tempnam_local() it should
be secure against race conditions. Replaced one of the two uses of tempnam_local
with tempnam_secure, the other one is a bit tricker. It may or may not work on
Windows, but it should be easy for someone with access to a Windows system to
add an #ifdef for that.
 include/libproto.h
 common/porting.c
 server/login.c
Arvid Norlander 2008-09-25

Fix for bug #1985944: problem with trigger_markers (object type 52).
 types/marker/marker.c
Arvid Norlander 2008-09-25

Fix for bug #2021042: level inscription indefinately with 1 scroll.
 server/skills.c: don't allow to write when blind.
Nicolas Weeger 2008-09-19

Tentative fix for bug #2028467: confusing changing things it should not.
 server/spell_util.c: correctly count items.
Nicolas Weeger 2008-09-19

Fix for bug #2088893: Assertion in cfanim.c globalEventListener on client connect.
Renamed all globalEventListener to put a plugin-specific prefix.
 plugins/cfanim/include/cfanim_proto.h
 plugins/cfanim/cfanim.c
 plugins/cflogger/include/cflogger_proto.h
 plugins/cflogger/cflogger.c
 plugins/cfnewspaper/include/cfnewspaper_proto.h
 plugins/cfnewspaper/cfnewspaper.c
 plugins/cfpython/include/cfpython_proto.h
 plugins/cfpython/cfpython.c
 plugins/cfrhg/include/cfrhg_proto.h
 plugins/cfrhg/cfrhg.c
 plugins/citylife/include/citylife_proto.h
 plugins/citylife/citylife.c
Nicolas Weeger 2008-09-19

Add new setup option "num_look_objects": allows clients to set the size
of the ground view. Clients not sending this option default to 50 which
is the previously hard-coded size. Fixes some off-by-one issues; now
always exactly the requested number of objects are sent.
 trunk/include/newserver.h
 trunk/socket/item.c
 trunk/socket/init.c
 trunk/socket/request.c
 trunk/doc/Developers/protocol
Andreas Kirschbaum 2008-09-06

Automatic strip of trailing whitespaces. This stripped a trailing whitespace in
ChangeLog, that is why ChangeLog is listed too.
 ChangeLog
 make_win32/plugin_python/plugin_python.rc
 make_win32/plugin_anim/plugin_anim.dsp
 make_win32/crossfire.rc
 make_win32/plugin_common/plugin_common.dsp
 make_win32/INSTALL_WIN32.txt
 make_win32/Release_notes.txt
Arvid Norlander 2008-09-02

Small code fixes found using GCC compiler warnings (bad format strings,
unreachable return, missing return, unclear {} in a #define when used in a if.)
 include/global.h
 socket/item.c
 socket/loop.c
 socket/metaserver.c
 server/shop.c
 server/swap.c
 server/spell_util.c
 server/resurrection.c
 server/server.c
 server/login.c
 server/c_wiz.c
Arvid Norlander 2008-09-02

Added %a in the default format string for the 'who' command, because the
'afk' command is useless if nobody can see the AFK status of players who
use it.
 lib/settings
Raphaël Quinet 2008-08-27

Inform other party members when a player leaves a party by joining or
creating another party, not only when the player uses "party leave".
 server/c_party.c
Raphaël Quinet 2008-08-25

Some plugin-related fixes.
 server/c_object.c: EVENT_DROP should be called before the item is removed,
  else can't prevent dropping.
 server/monster.c: enable items in player/npc's inventory to react, too
Nicolas Weeger 2008-08-16

Added new subtype 4 ST_MAT_WINDOW for building materials.  This allows the
player to build windows in existing walls (if these walls have a corresponding
window archetype).  Fixed an issue in apply_builder_floor() that could cause a
floor to be removed twice when a wall was replaced by a floor.
 include/define.h
 server/build_map.c
Raphaël Quinet 2008-08-04

Bug fix: when building a new floor on top of an old floor, the old one was
never removed, resulting in a stack of floors in some buildable areas.
 server/build_map.c
Raphaël Quinet 2008-08-03

Fix for bug #2028541: Any object using a non-default move_slow_penalty was
always saved with the value 0 because the code was using FAST_SAVE_LONG
instead of FAST_SAVE_DOUBLE for a floating-point value.
 common/loader.l
Raphaël Quinet 2008-08-02

Change regions file name to 'regions.reg'.
 include/config.h
Nicolas Weeger 2008-08-02

If an object of type CHECK_INV blocks movement (e.g. move_block all) and if
it contains a message, then display that message to those who are blocked.
This allows the inventory checkers to behave a bit like locked doors.
 common/map.c
Raphaël Quinet 2008-07-31

Allow other archetypes than fingers to be given as trophies in arena battles.
In order to do that, the battleground should have other_arch set to the
archetype to be generated.  If no other_arch is set, then fingers will be
generated as before.  Also, the trophies will have their value, type and
material set to 0 so that they cannot be used nor destroyed.
 include/sproto.h
 server/attack.c
 server/disease.c
 server/pets.c
 server/player.c
 server/spell_util.c
Raphaël Quinet 2008-07-28

lib/smooth: updated by 'make collect' after Ryo's changes to the archetypes.
Raphaël Quinet 2008-07-28

plugins/*/Makefile.am:  Remove  -Xlinker -export-dynamic -Xlinker -Bsymbolic
    from extra LDFLAGS.  Those are gnu specific linker options which cause
    the plugins to fail to compile when not using gld. I've tested the build
    without those options with gld on linux, and all works fine, so not sure
    if those are still needed - in theory, libtool should cover that.  If
    those options are still needed, configure.ac should get updated with a
    a better test.
MSW 2008-07-24

Automatic style fix: replace "foo* bar" by "foo *bar", remove extra spaces
inside parentheses, etc.  This was done after an analysis of the code revealed
that less than 20% of the pointer declarations were using the other style.
Same for the parentheses.  Having a consistent style in all files should make
it a bit easier to maintain the code.
 common/anim.c
 common/arch.c
 common/button.c
 common/dialog.c
 common/friend.c
 common/glue.c
 common/holy.c
 common/image.c
 common/init.c
 common/item.c
 common/languages.c
 common/logger.c
 common/los.c
 common/map.c
 common/object.c
 common/ob_methods.c
 common/ob_types.c
 common/path.c
 common/player.c
 common/porting.c
 common/readable.c
 common/recipe.c
 common/re-cmp.c
 common/shstr.c
 common/stringbuffer.c
 common/treasure.c
 common/utils.c
 devel/devel.c
 include/attack.h
 include/dialog.h
 include/global.h
 include/languages.h
 include/libproto.h
 include/map.h
 include/object.h
 include/ob_methods.h
 include/path.h
 include/player.h
 include/plugin.h
 include/sockproto.h
 include/spells.h
 include/sproto.h
 include/stringbuffer.h
 plugins/cfanim/cfanim.c
 plugins/cfanim/include/cfanim.h
 plugins/cflogger/cflogger.c
 plugins/cfnewspaper/cfnewspaper.c
 plugins/cfpython/cfpython_archetype.c
 plugins/cfpython/cfpython.c
 plugins/cfpython/cfpython_map.c
 plugins/cfpython/cfpython_object.c
 plugins/cfpython/cfpython_party.c
 plugins/cfpython/cfpython_region.c
 plugins/cfpython/cjson.c
 plugins/cfpython/include/cfpython_archetype.h
 plugins/cfpython/include/cfpython_archetype_private.h
 plugins/cfpython/include/cfpython.h
 plugins/cfpython/include/cfpython_map.h
 plugins/cfpython/include/cfpython_map_private.h
 plugins/cfpython/include/cfpython_object.h
 plugins/cfpython/include/cfpython_object_private.h
 plugins/cfpython/include/cfpython_party.h
 plugins/cfpython/include/cfpython_party_private.h
 plugins/cfpython/include/cfpython_region.h
 plugins/cfpython/include/cfpython_region_private.h
 plugins/cfrhg/cfrhg.c
 plugins/citylife/citylife.c
 plugins/common/hashtable.c
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 plugins/template/include/plugin_template.h
 plugins/template/plugin_template.c
 random_maps/floor.c
 random_maps/maze_gen.c
 random_maps/rproto.h
 random_maps/standalone.c
 random_maps/treasure.c
 server/alchemy.c
 server/apply.c
 server/attack.c
 server/build_map.c
 server/c_chat.c
 server/c_misc.c
 server/c_object.c
 server/c_party.c
 server/c_wiz.c
 server/disease.c
 server/gods.c
 server/hiscore.c
 server/init.c
 server/login.c
 server/monster.c
 server/move.c
 server/player.c
 server/plugins.c
 server/server.c
 server/shop.c
 server/skills.c
 server/skill_util.c
 server/spell_attack.c
 server/spell_effect.c
 server/spell_util.c
 server/swap.c
 server/time.c
 server/timers.c
 server/win32.c
 socket/info.c
 socket/init.c
 socket/item.c
 socket/loop.c
 socket/request.c
 socket/sounds.c
 test/bugs/bugtrack/check_1727944.c
 test/toolkit/toolkit_common.c
 test/toolkit/toolkit_crossedit.c
 test/toolkit/toolkit_map.c
 test/toolkit/toolkit_random_maps.c
 test/toolkit/toolkit_server.c
 test/toolkit/toolkit_socket.c
 test/unit/common/check_arch.c
 test/unit/common/check_item.c
 test/unit/common/check_loader.c
 test/unit/common/check_object.c
 test/unit/common/check_shstr.c
 test/unit/common/stubs_common.c
 test/unit/random_maps/stubs_random.c
 test/unit/server/check_attack.c
 test/unit/server/check_c_object.c
 test/unit/server/check_c_party.c
 test/unit/socket/stubs_socket.c
 types/altar/altar.c
 types/armour_improver/armour_improver.c
 types/book/book.c
 types/button/button.c
 types/cf_handle/cf_handle.c
 types/check_inv/check_inv.c
 types/clock/clock.c
 types/common/common_apply.c
 types/common/describe.c
 types/common/projectile.c
 types/container/container.c
 types/converter/converter.c
 types/deep_swamp/deep_swamp.c
 types/director/director.c
 types/exit/exit.c
 types/food/food.c
 types/hole/hole.c
 types/identify_altar/identify_altar.c
 types/lamp/lamp.c
 types/legacy/legacy_describe.c
 types/lighter/lighter.c
 types/marker/marker.c
 types/pedestal/pedestal.c
 types/player_mover/player_mover.c
 types/poison/poison.c
 types/potion/potion.c
 types/power_crystal/power_crystal.c
 types/savebed/savebed.c
 types/scroll/scroll.c
 types/shop_inventory/shop_inventory.c
 types/shop_mat/shop_mat.c
 types/sign/sign.c
 types/skillscroll/skillscroll.c
 types/spellbook/spellbook.c
 types/spell_effect/spell_effect.c
 types/spinner/spinner.c
 types/transport/transport.c
 types/trap/common_trap.c
 types/trapdoor/trapdoor.c
 types/treasure/treasure.c
 types/trigger_altar/trigger_altar.c
 types/trigger_button/trigger_button.c
 types/trigger_pedestal/trigger_pedestal.c
 types/trigger/trigger.c
 types/weapon_improver/weapon_improver.c
 utils/bwp.c
 utils/gridarta-types-convert.c
 utils/mapper.c
Raphaël Quinet 2008-07-20

Style fixes in files that were using foo[ bar ] instead of foo[bar], slight
reformatting of Win32 code.  There were only 30 occurences of foo[ bar ] among
3958 lines using array indexes or declarations, so it is clear that the common
style is to avoid spaces inside the brackets.
 common/object.c
 plugins/cfnewspaper/cfnewspaper.c
 server/c_party.c
 server/win32.c
 server/c_misc.c
 server/c_object.c
 server/apply.c
 socket/info.c
 utils/mapper.c
Raphaël Quinet 2008-07-20

Win32 compilation fixes.
 include/win32.h: some #define to fix things.
 make_win32/crossfire32.dsp: add missing files.
 make_win32/plugin_python/plugin_python.dsp: add missing files.
 socket/loop.c: function doesn't exist, so we'll suppose the socket is ok for now.
Nicolas Weeger 2008-07-19

Fix for bug #2017790 "Cannot build talking books, listening books or signs".
Fixed the incorrect usage of the function can_build_over(), refactored and
simplified the code, made functions static, added test to prevent the same wall
from being rebuilt several times, do not remove the marking rune prematurely if
a listening book cannot be built.
 include/sproto.h
 server/build_map.c
Raphaël Quinet 2008-07-19

Fix bug #2009686 "party password does not work if 8 characters long". 8 chars
long passwords broke with party_rejoin to auto rejoin on login due to 9 char
buffer and assuming the last char would always be an \n.
 server/login.c
Arvid Norlander 2008-07-18

Fix bug #2017648 "applying devourer weap causes crash", this was a division by
zero bug that affected any "personalized blessings" weapons with a willpower in
the range 0-1000. Also fix some minor issues in the same code block (reordering
tests and reusing a variable instead of fetching it using get_ob_key_value
twice).
 server/apply.c
Arvid Norlander 2008-07-17

In debug log message, check for null value and substitute as needed - it is
not universal that printf("%s", NULL) will not crash.
MSW 2008-07-07

Fix for bug #2009802 "alchemy experience not stored correctly": Remove useless
and dangerous casts to uint16 because both source and destination variables
are of type int, and the experience points for several recipes do not fit in
16 bits.
 common/recipe.c
Raphaël Quinet 2008-07-03

Partially update metaserver specification.
 doc/metaserver
Andreas Kirschbaum 2008-06-27

Don't reset image checksum.
 common/image.c
Nicolas Weeger 2008-06-21

Fix for bug #1990016 "No message when using skills over an empty cauldron"
 server/alchemy.c
Raphaël Quinet 2008-06-14

Add missing newlines in copyright header in some plugin source/header files.
 plugins/cfpython/include/cfpython.h
 plugins/cfpython/include/cfpython_object_private.h
 plugins/cfpython/include/cfpython_map.h
 plugins/cfpython/cfpython_map.c
 plugins/cfnewspaper/cfnewspaper.c
Arvid Norlander 2008-06-13

Reformat all header files in include/ to fit with current coding style standard,
a combination of using the astyle tool and manual review afterwards.
 include/define.h
 include/treasure.h
 include/commands.h
 include/win32.h
 include/shstr.h
 include/timers.h
 include/config.h
 include/object.h
 include/loader.h
 include/attack.h
 include/race.h
 include/logger.h
 include/newserver.h
 include/image.h
 include/ob_methods.h
 include/re-cmp.h
 include/living.h
 include/book.h
 include/player.h
 include/plugin.h
 include/material.h
 include/metaserver2.h
 include/spellist.h
 include/global.h
 include/skills.h
 include/spells.h
 include/includes.h
 include/god.h
 include/map.h
 include/tod.h
 include/newclient.h
Arvid Norlander 2008-06-13

First step in fixing bug #1992235 (citylife/rabies potential DOS). Make citylife
NPCs undead.
 plugins/citylife/citylife.c
Arvid Norlander 2008-06-12

Reformat all files in server/ to fit with current coding style standard, a
combination of using the astyle tool and manual review afterwards.
 server/c_range.c
 server/weather.c
 server/c_party.c
 server/commands.c
 server/win32.c
 server/init.c
 server/daemon.c
 server/timers.c
 server/spell_attack.c
 server/attack.c
 server/c_move.c
 server/rune.c
 server/shop.c
 server/swap.c
 server/pets.c
 server/skill_util.c
 server/spell_util.c
 server/disease.c
 server/c_chat.c
 server/alchemy.c
 server/resurrection.c
 server/c_new.c
 server/player.c
 server/gods.c
 server/build_map.c
 server/c_misc.c
 server/time.c
 server/ban.c
 server/skills.c
 server/move.c
 server/server.c
 server/c_object.c
 server/c_wiz.c
 server/plugins.c
 server/apply.c
 server/monster.c
 server/spell_effect.c
 server/hiscore.c
Arvid Norlander 2008-06-12

Reformat all files in random_maps/ to fit with current coding style standard, a
combination of using the astyle tool and manual review afterwards.
 random_maps/wall.c
 random_maps/style.c
 random_maps/snake.c
 random_maps/door.c
 random_maps/room_gen_onion.c
 random_maps/exit.c
 random_maps/square_spiral.c
 random_maps/random_map.c
 random_maps/rogue_layout.c
 random_maps/room_gen_spiral.c
 random_maps/test.c
 random_maps/special.c
 random_maps/floor.c
 random_maps/maze_gen.c
 random_maps/monster.c
 random_maps/standalone.c
 random_maps/expand2x.c
 random_maps/treasure.c
 random_maps/decor.c
Arvid Norlander 2008-06-12

Reformat all files in socket/ to fit with current coding style standard, a
combination of using the astyle tool and manual review afterwards. Also fix
copy-and-paste typo from svn output in changelog below.
 socket/item.c
 socket/image.c
 socket/init.c
 socket/request.c
 socket/loop.c
 socket/lowlevel.c
 socket/info.c
 socket/sounds.c
 socket/metaserver.c
Arvid Norlander 2008-06-12

Reformat common/loader.l a bit too. Update info in common/README. Clean up
some trailing whitespaces in some header files.
 common/loader.l
 common/README
 make_win32/plugin_python/resource.h
 make_win32/resource.h
Arvid Norlander 2008-06-12

Reformat all files in common/ to fit with current coding style standard, a
combination of using the astyle tool and manual review afterwards.
 common/item.c
 common/readable.c
 common/dialog.c
 common/shstr.c
 common/object.c
 common/languages.c
 common/button.c
 common/holy.c
 common/logger.c
 common/image.c
 common/re-cmp.c
 common/ob_methods.c
 common/region.c
 common/living.c
 common/info.c
 common/player.c
 common/exp.c
 common/stringbuffer.c
 common/recipe.c
 common/friend.c
 common/map.c
 common/arch.c
 common/links.c
 common/porting.c
 common/ob_types.c
 common/anim.c
 common/treasure.c
 common/glue.c
 common/los.c
Arvid Norlander 2008-06-12

Get rid of a GCC warning, fix a typo in a comment.
 include/libproto.h
 common/loader.l
 server/time.c
Arvid Norlander 2008-06-12

Reformat some files to fit with current coding style standard, a combination of
astyle and manual review afterwards.
 common/utils.c
 common/init.c
 common/time.c
 common/porting.c
Arvid Norlander 2008-06-11

Remove some auto generated (by autoconf/automake) files from svn. Updated
svn:ignore to match. Also updated svn:ignore for other places.
Removed:
 utils/depcomp
 utils/config.guess
 utils/config.sub
 utils/mkinstalldirs
 utils/missing
 utils/install-sh
Property change on:
 .
 utils
 test/bugs/bugtrack
Arvid Norlander 2008-06-11

Reformat some files to fit with current coding style standard, a combination of
astyle and manual review afterwards. Also fix bad date in ChangeLog I entered
below (copy and paste blergh).
 server/init.c
 server/disease.c
 server/login.c
 server/main.c
Arvid Norlander 2008-06-11

Reformat two files to fit with current coding style standard, a combination of
astyle and manual review afterwards.
 server/move.c
 server/server.c
Arvid Norlander 2008-06-11

Prevent running the crossfire server as root on *nix systems. Give an explaining
error message. It will also prevent running it as suid (intentional).
 server/server.c
Arvid Norlander 2008-06-11

Temporary work around a crash in move_disease() that is very hard to reproduce,
and I haven't managed to find the cause for.
 server/disease.c
Arvid Norlander 2008-06-11

Make more functions and variables in plugins static. Clean up some indention in plugins.
 plugins/cflogger/cflogger.c
 plugins/cfanim/include/cfanim.h
 plugins/cfanim/include/cfanim_proto.h
 plugins/cfanim/cfanim.c
 plugins/cfnewspaper/cfnewspaper.c
Arvid Norlander 2008-06-05

Clean up in plugins, fix a lot of gcc warnings (in plugins), update prototype
headers in plugins, make some functions static. Also update build system for
cflogger to make it not include common plugin stuff in header. Followed example
set by cfnewspaper's Makefile.am. Make the template plugin include prototype
header. (It is a good idea to do so, for various reasons.) Also add some missing
newlines at end of copyright header comments in some files. Also make some
variables const (in python plugin) in order to fix gcc warnings and to make
code cleaner (a string literal is always a const char* in C90 or later, but
char* is allowed for compatibility reasons, though it will actually be a const).
 configure.ac
 plugins/cflogger/include/cflogger_proto.h
 plugins/cflogger/include/cflogger.h
 plugins/cflogger/Makefile.am
 plugins/cflogger/cflogger.c
 plugins/citylife/citylife.c
 plugins/cfrhg/cfrhg.c
 plugins/cfpython/include/cfpython_proto.h
 plugins/cfpython/include/cfpython_object.h
 plugins/cfpython/cfpython.c
 plugins/template/create_plugin.sh
 plugins/template/plugin_template.c
 plugins/cfnewspaper/include/cfnewspaper.h
 plugins/cfnewspaper/include/cfnewspaper_proto.h
 plugins/cfnewspaper/cfnewspaper.c
Added:
 plugins/citylife/include/citylife_proto.h
 plugins/cfrhg/include/cfrhg_proto.h
Removed:
 plugins/cflogger/include/Makefile.am
Arvid Norlander 2008-06-04

Spellcheck and update documentation. Updated CVS commit guide lines to refer
to SVN (and current practice). Added missing docs for "music" command to
protocol docs.
 doc/Developers/objects
 doc/Developers/mapguide
 doc/Developers/protocol
 doc/Developers/key-value
 doc/Developers/spells
 doc/Developers/svn
 doc/Developers/README
 doc/Developers/map-technical
 doc/Developers/random-maps
Moved:
 doc/Developers/cvs to doc/Developers/svn
Arvid Norlander 2008-06-02

Add missing call to init_gods in check_item unit test that caused a crash at
-O1 or higher (sometimes). That however broke other parts of the test suite
that depends on a certain sequence of random numbers. (Very brittle code!) Fix
so it matches the new generated random order.
 test/unit/common/check_item.c
Arvid Norlander 2008-06-01

Add some missing "extern" keywords that caused warnings. Change some EXTERN to
extern (as EXTERN is undefined in some files, but that caused issues in a few
cases). Add some missing "const" keywords to devel/devel.c and fix a typo in
a comment. Remove some unused variables from random_maps.
 include/timers.h
 include/global.h
 devel/devel.c
 random_maps/room_gen_onion.c
 random_maps/room_gen_spiral.c
 server/timers.c
Arvid Norlander 2008-06-01

Set svn:eol-style to native on *.c and *.h files that were missing it.
 server/ob_methods.c
 server/ob_types.c
 test/unit/server/comet_perf.c
 test/bugs/bugtrack/check_1727944.c
 plugins/cflogger/include/cflogger_proto.h
 plugins/cflogger/include/cflogger.h
 plugins/cflogger/cflogger.c
 plugins/citylife/include/citylife.h
 plugins/citylife/citylife.c
 plugins/cfrhg/include/cfrhg.h
 plugins/cfrhg/cfrhg.c
 plugins/cfpython/cjson.c
 plugins/cfnewspaper/include/cfnewspaper.h
 plugins/cfnewspaper/include/cfnewspaper_proto.h
 plugins/cfnewspaper/cfnewspaper.c
 include/dialog.h
 include/languages.h
 include/image.h
 include/ob_methods.h
 include/typesproto.h
 include/metaserver2.h
 include/stringbuffer.h
 include/ob_types.h
 common/dialog.c
 common/languages.c
 common/ob_methods.c
 common/stringbuffer.c
 common/ob_types.c
 utils/mapper.c
 utils/gridarta-types-convert.c
 utils/bwp.c
 types/gate/gate.c
 types/marker/marker.c
 types/player_changer/player_changer.c
 types/shop_inventory/shop_inventory.c
 types/food/food.c
 types/lamp/lamp.c
 types/arrow/arrow.c
 types/book/book.c
 types/peacemaker/peacemaker.c
 types/identify_altar/identify_altar.c
 types/trigger_button/trigger_button.c
 types/pedestal/pedestal.c
 types/cf_handle/cf_handle.c
 types/poisoning/poisoning.c
 types/trap/common_trap.c
 types/trap/trap.c
 types/trap/rune.c
 types/duplicator/duplicator.c
 types/thrown_object/thrown_object.c
 types/poison/poison.c
 types/converter/converter.c
 types/detector/detector.c
 types/shop_mat/shop_mat.c
 types/director/director.c
 types/weapon_improver/weapon_improver.c
 types/spinner/spinner.c
 types/blindness/blindness.c
 types/container/container.c
 types/trigger_pedestal/trigger_pedestal.c
 types/deep_swamp/deep_swamp.c
 types/teleporter/teleporter.c
 types/trigger_altar/trigger_altar.c
 types/hole/hole.c
 types/armour_improver/armour_improver.c
 types/common/describe.c
 types/common/projectile.c
 types/common/common_apply.c
 types/check_inv/check_inv.c
 types/spellbook/spellbook.c
 types/trapdoor/trapdoor.c
 types/treasure/treasure.c
 types/clock/clock.c
 types/spell_effect/spell_effect.c
 types/transport/transport.c
 types/power_crystal/power_crystal.c
 types/skillscroll/skillscroll.c
 types/lighter/lighter.c
 types/scroll/scroll.c
 types/mood_floor/mood_floor.c
 types/creator/creator.c
 types/sign/sign.c
 types/altar/altar.c
 types/trigger/trigger.c
 types/legacy/process.c
 types/legacy/legacy_describe.c
 types/legacy/apply.c
 types/player_mover/player_mover.c
 types/potion/potion.c
 types/exit/exit.c
 types/savebed/savebed.c
 types/button/button.c
Arvid Norlander 2008-06-01

Update 'make collect' so that it does not complain about files that are not
really junk: CHANGES, TODO, *.xcf* (including *.xcf.gz or *.xcf.bz2), *.doc
and *.txt.
 lib/collect.pl.in
Raphaël Quinet 2008-06-01

Scripted removal of trailing whitespaces, also removing excessive newlines at
end of files (one final newline should be all).
 plugins/cfpython/cjson.c
 socket/metaserver.c
 common/languages.c
 common/button.c
 common/time.c
 random_maps/treasure.c
 server/spell_attack.c
 server/resurrection.c
 server/player.c
 server/skills.c
 server/move.c
 server/c_object.c
 server/hiscore.c
 INSTALL
Arvid Norlander 2008-06-01

Change even more sprintf to snprintf.
 socket/init.c
 socket/loop.c
 socket/info.c
 random_maps/random_map.c
 server/c_party.c
 server/init.c
 server/rune.c
 server/swap.c
 server/pets.c
 server/disease.c
 server/alchemy.c
 server/resurrection.c
 server/gods.c
 server/player.c
 server/c_misc.c
 server/ban.c
 server/skills.c
 server/login.c
 server/c_wiz.c
 server/spell_effect.c
 server/hiscore.c
Arvid Norlander 2008-05-31

Change some more sprintf to snprintf.
 common/readable.c
 common/languages.c
 common/holy.c
 common/logger.c
 common/image.c
 common/region.c
 common/living.c
 common/exp.c
 common/recipe.c
 common/arch.c
 common/porting.c
 common/anim.c
 common/treasure.c
 socket/metaserver.c
 types/food/food.c
 types/weapon_improver/weapon_improver.c
Arvid Norlander 2008-05-31

Change some sprintf to snprintf.
 socket/image.c
 socket/item.c
 socket/request.c
Arvid Norlander 2008-05-30

Fix use of uninitialised variables in the plugin API and remove some dead code
from the plugin API (as in: never called from plugin_common.c) Also cleanup
indention in map.h, change order of members in some structs in face.h to pack
them a bit better.
 include/face.h
 include/map.h
 plugins/common/plugin_common.c
 server/plugins.c
Arvid Norlander 2008-05-29

Fix the member order in global.h to match the one in init.c. Fix some extern
with wrong type (was char* instead of const char* const). Change some prototypes
to use const pointers. Change to strtol if it exists, and only fall back to
strtol_local if it doesn't.
 common/object.c
 common/porting.c
 common/treasure.c
 include/attack.h
 include/global.h
 include/libproto.h
 include/sproto.h
 server/login.c
 server/spell_util.c
 server/time.c
Arvid Norlander 2008-05-29

Fix a case of assigning and passing a string literal (const char*) as a char*.
Also pack one structure a bit better.
 random_maps/random_map.c
 random_maps/random_map.h
 random_maps/rproto.h
 random_maps/special.c
Arvid Norlander 2008-05-29

Make server send size and data in one packet, this fix is suboptimal though as
it uses memcpy to do so, it should use writev instead.
 socket/lowlevel.c
Arvid Norlander 2008-05-29

Change the order of some members in some of the large and often used structs in
order to pack them better. This will mainly help on x86_64, but also a bit on x86.
No actual functionality change. Some structs could be packed even better but that
would destroy the logical sectioning of the members in groups.
 include/living.h
 include/map.h
 include/newserver.h
 include/object.h
 include/player.h
Arvid Norlander 2008-05-27

Fix some more snprintf using a non-constant string as format parameter, and no
arguments to format string. Also change some more // comments to /**/, as crossfire
is C89 not C99. Add some missing prototypes to headers. Add missing value to a return.
Change from using strcasestr (GNU specific) to the already existing strcasestr_local
in one place.
 plugins/cflogger/cflogger.c
 plugins/cfnewspaper/cfnewspaper.c
 plugins/common/include/plugin_common.h
 server/hiscore.c
 server/login.c
 socket/lowlevel.c
 server/move.c
 server/player.c
 server/plugins.c
 server/server.c
 server/shop.c
 server/spell_effect.c
Arvid Norlander 2008-05-27

Fix some snprintf using a non-constant string as format parameter, and no
arguments to format string. Also change some // comments to /**/, as crossfire
is C89 not C99.
 common/anim.c
 common/init.c
 common/map.c
 common/readable.c
 common/shstr.c
Arvid Norlander 2008-05-25

Removed unused .cvsignore files, after all we use SVN since a long time.
 .cvsignore
 */.cvsignore
 */*/.cvsignore
 */*/*/.cvsignore
Arvid Norlander 2008-05-25

Add length parameter for some functions to be able to use snprintf instead of
sprintf in those. Fixed a char* that should have been const char* in plugin code.
Fixed some typos in protocol documentation. Also fixed indention in some code while
I was working on it anyway.
 doc/Developers/protocol
 include/sockproto.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
 socket/info.c
 socket/request.c
Arvid Norlander 2008-05-25

Cleanup the autoconf and automake stuff somewhat:
* Removed tests for X libraries (as the map editor is no longer a part of the server)
* Ran autoupdate to update the syntax (where it could do so).
* Add some missing checks
* Make check for gethostbyname try libc first, no need to get nsl version.
* Use AS_HELP_STRING to format help strings.
* General cleanup and reformatting to make it easier to maintain.
* Update automake syntax in some files.
 acinclude.m4
 check-fragment.am
 configure.ac
 include/autoconf.h.in
 test/toolkit/Makefile.am
Arvid Norlander 2008-05-24

Fix for bug #1965528. Not sure if it fixes all cases of the bug.
 server/shop.c
Arvid Norlander 2008-05-21

Change a lot of static variables to static const, as they are never modified.
Also remove some non-needed nested (inside a function) extern. Also fix some
compiler warning in cfanim (on x86_64 int is not same size as long int!).
 common/exp.c
 common/logger.c
 common/los.c
 common/item.c
 common/object.c
 common/readable.c
 common/time.c
 common/treasure.c
 plugins/cfanim/cfanim.c
 server/c_object.c
 server/c_misc.c
 server/monster.c
 server/player.c
 server/server.c
 socket/loop.c
 socket/request.c
Arvid Norlander 2008-05-21

Fix wrong format string for 64-bit unsigned values. Fix confusing error log message
in shop code (confusing due to not refering to the correct function).
 include/global.h
 server/shop.c
Arvid Norlander 2008-05-21

Remove an unused static const array. Not referenced anywhere.
 common/item.c
Arvid Norlander 2008-05-21

Add a 'message' command, that will display a message on the whole map the victim is on.
 plugins/cfanim/cfanim.c
Nicolas Weeger 2008-05-20

Clean some log messages. Add the option to specify the animation to play
through the 'message' sent as part of the event.
 plugins/cfanim/cfanim.c
 plugins/cfanim/include/cfanim_proto.h
Nicolas Weeger 2008-05-20

The current configure.ac was already set to use the utils directory for auxillary
files, so the config.guess and config.sub in the top source directory were not
used, thus moved them to utils directory. (Before, locally created copies by
autogen.sh placed in utils/ would were used. Try removing them if svn complains
about already existing files). Also force update of all autoconf/automake files
to last versions. Also fix a minor issue with "inline" and "void" being in wrong
order in a function (gcc will handle it, but the C standard doesn't allow it).
 INSTALL
 common/map.c
 utils/depcomp
 utils/install-sh
 utils/missing
 utils/mkinstalldirs
Moved:
 config.guess to utils/config.guess
 config.sub to utils/config.sub
Arvid Norlander 2008-05-20

Fix some cases of using snprintf function with potentially untrusted data as
format parameter. Change two sprintf into snprintf. Add return value for all
code paths in a non-void returning function.
 common/path.c
 server/c_chat.c
 server/c_misc.c
 server/c_wiz.c
Arvid Norlander 2008-05-20

Update svn:ignore property for various directories in the server source,
in order to make it simpler to work with.
 (Lots of directories in the source tree, too many to list here)
Arvid Norlander 2008-05-20

Apply Patch #1966455: Fix for cut off NPC dialog messages.
 common/dialog.c
Arvid Norlander 2008-05-20

Apply Patch #1966113: Fix uninitialised range vector in monster.c.
 server/monster.c
Arvid Norlander 2008-05-20

Increase base book max size, to try to get more various messages.
 include/book.h
Nicolas Weeger 2008-05-19

Apply Patch #1967076: Fix crash in use command.
 command/c_object.c
Arvid Norlander 2008-05-19

Apply patch #1965969: Unit test for common/path.c.
 common/path.c
 test/unit/common/check_path.c Makefile.am
Arvid Norlander 2008-05-17

Apply patch #1964563: Fix compile error when "MEMORY_DEBUG" is defined in config.h.
 server/server.c
Arvid Norlander 2008-05-16

Apply patch #1964058: Fix missing \0 in buffer in add_object_to_socklist.
 socket/item.c
Arvid Norlander 2008-05-16

Apply patch #1964051: Valgrind error fix: Bad format string.
 lib/i18n/messages.en messages.fr
Arvid Norlander 2008-05-16

Fix incorrect boundary of the object type array, courtesy of Arvid Norlander.
 include/define.h
Yann "gros" Chachkoff 2008-05-16

Fix memory leaks, courtesy Arvid Norlander.
 common/dialog.c
Andreas Kirschbaum 2008-05-23

Added the possibility to build the server outside of its source directory.
 plugins/citylife/Makefile.am
 plugins/cfrhg/Makefile.am
 plugins/template/Makefile.am
 plugins/cfnewspaper/Makefile.am
Arvid Norlander 2008-05-14

Fixed bug #1962926 "Fix for crash on division by zero", courtesy of Arvid Norlander
 common/item.c
Yann "gros" Chachkoff 2008-05-13

Removed 'context' stuff as it isn't used here. Clean event handling.
 plugins/cfanim/cfanim.c
 plugins/cfanim/include/cfanim.h cfanim_proto.h
Nicolas Weeger 2008-05-12

Add 'moveto' command, and 'byname' victim type. Fix potential memory leak.
Enable moves to take more than one tick.
 doc/Developers/plugins.doc/cfanim/animfiles.txt
 plugins/cfanim/cfanim.c
 plugins/cfanim/include/cfanim.h cfanim_proto.h
Nicolas Weeger 2008-05-12

Wrapper for move_to(). Fix invalid move_to parameter order.
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
Nicolas Weeger 2008-05-12

Give access to find_string() to plugins. Fix invalid manual_apply parameter order.
 include/sproto.h
 server/plugins.c
Nicolas Weeger 2008-05-12

Detect correct prototype for strerror_r() courtesy Arvid Norlander.
 common/porting.c
 configure.ac
 include/autoconf.h.in
 include/libproto.h
Andreas Kirschbaum 2008-05-12

Ansi C compatibility improvements courtesy Arvid Norlander:
 include/attack.h: do not redeclare variable
 socket/lowlevel.c: use #include <errno.h>
 (lots of files): use prototypes
Andreas Kirschbaum 2008-05-12

Fix possible buffer overflows courtesy Arvid Norlander.
 common/init.c
Andreas Kirschbaum 2008-05-12

Give access to move_to() to plugins.
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
Nicolas Weeger 2008-05-12

Rewrite NPC communication system. See doc/objects 'J. NPC's Speak out' for more information,
or check doc/Developers/dialog.dox, or the maps/test/say map.
 common/loader.l Makefile.am object.c
 doc/Developers/mainpage.dox objects
 include/define.h Makefile.am object.h libproto.h typesproto.h
 server/c_chat.c monster.c
New files:
 common/dialog.c
 doc/Developers/dialog.dox
 include/dialog.h
Nicolas Weeger 2008-05-11

Add 'move_to' function, that can be used later on for eg plugins
(should replace Python's CFMove).
 include/sproto.h
 server/monster.c move.c
Nicolas Weeger 2008-05-11

Merge NPC and MAGIC_EAR handling, add comments, fix prototype to use const.
 include/sproto.h
 server/monster.c
Nicolas Weeger 2008-05-11

Document a few things.
 plugins/cfanim/cfanim.c
 plugins/cfanim/include/cfanim_proto.h
Nicolas Weeger 2008-05-10

Fix bombs being really too powerful.
 server/spell_attack.c: set the maxhp (for spell merging) for bombs too.
Nicolas Weeger 2008-05-10

Make the 'second' timemode work. Don't set FLAG_WIZ* on non player object.
Correctly remove event if unique.
 plugins/cfanim/cfanim.c
 plugins/cfanim/include/cfanim_proto.h
Nicolas Weeger 2008-05-10

Fix a few warnings.
 include/sproto.h: add prototype for query_cost_string().
 test/toolkit/toolkit_common.c: make argument const.
Nicolas Weeger 2008-05-10

Rename some functions, fix documentation.
 doc/Developers/login.dox
 include/sockproto.h
 server/init.c server.c
 socket/init.c loop.c request.c
Nicolas Weeger 2008-05-10

Implement feature request #1961031: 'drop food' and 'drop flesh' buttons would be nice.
 lib/help/dropall.{fr,en}: update help text.
 server/c_object.c: extend 'dropall' to accept 'food' and 'flesh'.
Nicolas Weeger 2008-05-10

Fix bug #1846018: artifact monster graphics broken.
 common/treasure.c: animation is part of things artifact can change.
 lib/artifacts: add correct animations to monsters.
Nicolas Weeger 2008-05-09


Also extract NPC messages for friendly living things.
 utils/mapper.c
Nicolas Weeger 2008-05-08

Potential fix for bug #1928570: x-ray vision now needs a push start.
 server/spell_effect.c: use FLAG_NO_FIX_PLAYER to not mess with our values.
Nicolas Weeger 2008-05-08

Fix a potential underflow, forbid players to create too powerful missiles.
 server/spell_effect.c
Nicolas Weeger 2008-05-08

Remove unpaid items when returning a player to his savebed for map reset or
after server-specific timeout.
 include/sproto.h
 server/login.c player.c
Nicolas Weeger 2008-05-08

Generate NPC information page.
 utils/mapper.c
Nicolas Weeger 2008-05-08

Better and more logical fix for bug #1936178: Trying to remove removed object causes server crash.
 random_maps/treasure.c: remove doors after door replacing.
Nicolas Weeger 2008-05-08

Fix artifact reading to (kind of) trim strings. Fix add missing artifacts
to fix alchemy warning.
 common/treasure.c
 lib/artifacts
Nicolas Weeger 2008-05-08

Tentative fix for bug #1936178: Trying to remove removed object causes server crash.
 random_maps/treasure.c: update doorlist to process when removing a door.
Nicolas Weeger 2008-05-08

Tentative fix for bug #1956908: bolt wc can overflow.
 server/player.c: cap modifiers so we don't overflow wc.
Nicolas Weeger 2008-05-07

Fix bug #1929084: Wrong artifact stats on forged items. Use 'legal_artifact_combination'
to check that the item matches the artifact.
 common/recipe.c treasure.c
 include/libproto.h
Nicolas Weeger 2008-05-07

common/loader.l: remove obsolete code.
Nicolas Weeger 2008-05-07

Add min/max monster level information to maps.
 utils/mapper.c
 utils/templates/map_monster_before.template: added the fields to the default template.
Nicolas Weeger 2008-05-07

Remove unused #ifdef and useless LOG.
 common/map.c
Nicolas Weeger 2008-05-06

Provide a more explicit message when attempting to write down a spell with
no marked scroll, as per bug #1910805.
 server/skills.c
Yann Chachkoff 2008-04-20

New plugin: random house generator. Check cfrhg.c for details.
Still basic, but should be a good start.
 configure.ac
 plugins/Makefile.am
Added:
 cfrhg/include/cfrhg.h
 cfrhg/cfrhg.c Makefile.am
Nicolas Weeger 2008-04-12

Extract duplicator handling to its own type file.
 common/button.c
 include/sproto.h typesproto.h
 random_maps/standalone.c
 server/ob_types.c time.c
 test/unit/common/stubs_common.c
 test/unit/random_maps/stubs_random.c
 test/unit/socket/stubs_socket.c
 utils/bwp.c mapper.c
 types/Makefile.am
New file:
 types/duplicator/duplicator.c
Nicolas Weeger 2008-04-11

Extract detector handling to its own type file.
 include/sproto.h typesproto.h
 server/ob_types.c time.c
 types/Makefile.am
 types/legacy/process.c
New file:
 types/detector/detector.c
Nicolas Weeger 2008-04-11

Extract mood floor handling to its own type file.
 common/button.c
 include/sproto.h typesproto.h
 server/ob_types.c
 types/Makefile.am
 types/legacy/process.c
New file:
 types/mood_floor/mood_floor.c
Nicolas Weeger 2008-04-09

Extract marker handling to its own type file.
 common/button.c
 include/sproto.h typesproto.h
 random_maps/standalone.c
 server/ob_types.c time.c
 test/unit/common/stubs_common.c
 test/unit/random_maps/stubs_random.c
 test/unit/socket/stubs_socket.c
 utils/bwp.c mapper.c
 types/legacy/process.c
 types/Makefile.am
New file:
 types/marker/marker.c
Nicolas Weeger 2008-04-09

Extract creator handling to its own type file.
 common/button.c
 include/sproto.h typesproto.h
 random_maps/standalone.c
 server/ob_types.c time.c
 test/unit/common/stubs_common.c
 test/unit/random_maps/stubs_random.c
 test/unit/socket/stubs_socket.c
 utils/bwp.c mapper.c
 types/legacy/process.c
 types/Makefile.am
New file:
 types/creator/creator.c
Nicolas Weeger 2008-04-09

Extract teleporter handling to its own type file.
 common/button.c
 include/sproto.h typesproto.h
 random_maps/standalone.c
 server/ob_types.c time.c
 test/unit/common/stubs_common.c
 test/unit/random_maps/stubs_random.c
 test/unit/socket/stubs_socket.c
 utils/bwp.c mapper.c
 types/legacy/process.c
 types/Makefile.am
New file:
 types/teleporter/teleporter.c
Nicolas Weeger 2008-04-08

include/libproto.h: missing register_trigger prototype.
Nicolas Weeger 2008-04-08

New 'ob_trigger' object function.
 common/ob_methods.c ob_types.c
 include/libproto.h ob_methods.h
Nicolas Weeger 2008-04-08

Move most of the object system's logic to common, to prepare for more refactoring
and easier calling from the common library.
 common/Makefile.am
 include/libproto.h sproto.h
 random_maps/standalone.c
 server/ob_methods.c ob_types.c
 test/unit/common/stubs_common.c
 test/unit/random_maps/stubs_random.c
 test/unit/socket/stubs_socket.c
 utils/bwp.c mapper.c
Added files:
 common/ob_methods.c ob_types.c: duplicated from server/ and cleaned
Nicolas Weeger 2008-04-08

Make type's type coherent.
 common/object.c
 include/libproto.h
Nicolas Weeger 2008-04-06

Move conversion to lower case to calling function.
 server/c_new.c
Nicolas Weeger 2008-04-06

Link to quest's definition instead of the page itself.
 utils/mapper.c
Nicolas Weeger 2008-04-02

Sort maps on the quest page.
 utils/mapper.c
Nicolas Weeger 2008-04-02

Remove obsolete get_map_ob define, replaced by GET_MAP_OB.
 common/button.c map.c utils.c
 include/map.h
 plugins/common/plugin_common.c
 random_maps/decor.c exit.c special.c standalone.c style.c treasure.c wall.c
 server/alchemy.c apply.c attack.c c_wiz.c disease.c monster.c move.c pets.c
  player.c plugins.c resurrection.c rune.c shop.c skill_util.c skills.c
  spell_attack.c spell_effect.c spell_util.c time.c
 socket/item.c
 utils/bwp.c mapper.c
 types/common/projectile.c
 types/exit/exit.c
 types/peacemaker/peacemaker.c
 types/shop_inventory/shop_inventory.c
 types/spell_effect/spell_effect.c
Nicolas Weeger 2008-03-30

Remove static buffer.
 server/player.c
Nicolas Weeger 2008-03-30

common/living.c: remove unneeded test.
Nicolas Weeger 2008-03-30

Move function is_legal_2ways_exit() to relevant file, remove legacy function.
 include/sproto.h
 server/apply.c
 types/exit/exit.c
Nicolas Weeger 2008-03-30

Extract blindness to its own file.
 include/sproto.h typesproto.h
 server/ob_types.c time.c
 types/legacy/process.c
 types/Makefile.am
Added file:
 types/blindness/blindness.c
Nicolas Weeger 2008-03-30

Change test order to speed up some, fix comments.
 server/c_object.c
Nicolas Weeger 2008-03-30

Rename a few xxx_player() functions to xxx_living() for coherence.
 include/sproto.h
 server/apply.c attack.c skills.c spell_effect.c spell_util.c
Nicolas Weeger 2008-03-30

Remove global variables. Make functions static.
 random_maps/maze_gen.c maze_gen.h rproto.h
Nicolas Weeger 2008-03-30

Remove unused parameter, rename to better name.
 server/attack.c
Nicolas Weeger 2008-03-30

Extract player_changer to its own file.
 include/sproto.h typesproto.h
 server/ob_types.c time.c
 types/legacy/process.c
 types/Makefile.am
Added file:
 types/player_changer/player_changer.c
Nicolas Weeger 2008-03-29

Remove obsolete code, tweak comment.
 server/time.c
Nicolas Weeger 2008-03-29

Remove autohook inserted in items, and use was_destroyed() to check item's validity.
 plugins/cfpython/include/cfpython_object.h: keep item's count, change check macros.
 plugins/cfpython/cfpython_map.c: fix wrong EXISTCHECK_INT to MAPEXISTCHECK_INT.
 plugins/cfpython/cfpython_object.c: remove autohook stuff, use item's count.
 plugins/cfpython/cfpython.c: remove autohook handling.
Nicolas Weeger 2008-03-29

Tweak documentation generation.
 doc/playbook/Makefile.am: factorize code to make it easy to generate PDFs,
  fix many pic issues.
 doc/scripts/makeps.pl: add "pdf" output support.
Nicolas Weeger 2008-03-29

Remove unused variable. Use safe string functions.
 server/alchemy.c
Nicolas Weeger 2008-03-29

Use try_find_archetype() instead of find_archetype() and remove the nroferrors
handling.
 random_maps/wall.c
Nicolas Weeger 2008-03-29

Remove unused parameter.
 random_maps/random_map.c rproto.h snake.c square_spiral.c test.c
Nicolas Weeger 2008-03-29

Use StringBuffer to remove static buffers.
 include/sproto.h
 server/c_object.c shop.c
Nicolas Weeger 2008-03-29

Fix accidentally broken connection.
 socket/request.c
Nicolas Weeger 2008-03-29

Remove unused parameter.
 include/sproto.h
 server/spell_effect.c spell_util.c
Nicolas Weeger 2008-03-29

Use safe string functions.
 server/build_map.c
Nicolas Weeger 2008-03-29

Use flags instead of hardcoded values for monster's will_apply.
 include/object.h
 server/monster.c move.c
Nicolas Weeger 2008-03-29

Remove unused return value.
 include/sproto.h
 server/player.c
 socket/request.c
Nicolas Weeger 2008-03-29

Remove unused return value.
 include/sproto.h
 server/player.c
Nicolas Weeger 2008-03-29

Remove static buffer.
 server/hiscore.c
Nicolas Weeger, 2008-03-29

Remove static buffer, simplify code.
 server/hiscore.c
Nicolas Weeger, 2008-03-29

Make god-related object const to avoid modification.
 common/holy.c readable.c
 include/libproto.h sproto.h
 server/attack.c c_wiz.c gods.c pets.c spell_attack.c spell_effect.c
Nicolas Weeger, 2008-03-29

Clean code, use player-finding function.
 server/c_wiz.c
Nicolas Weeger, 2008-03-29

Remove global variables, make them in a structure. Make function static.
 random_maps/rproto.h treasure.c
Nicolas Weeger, 2008-03-29

Remove global variable, remove suspect tests.
 random_maps/treasure.c
Nicolas Weeger, 2008-03-29

Remove obsolete other_arch field which was used for spell in firewall.
 server/time.c
Nicolas Weeger, 2008-03-29

Remove free_map()'s second parameter, unused.
 common/map.c
 include/libproto.h
 server/swap.c
 test/unit/server/comet_perf.c
Nicolas Weeger, 2008-03-29

Use 'const char*' instead of 'char*'.
 server/c_party.c c_wiz.c
Nicolas Weeger, 2008-03-29

Fix non meaningful return value of summon_hostile_monsters().
 server/spell_util.c
Nicolas Weeger, 2008-03-29

Use 'const char*' instead of 'char*'.
 include/sproto.h
 server/swap.c
Nicolas Weeger, 2008-03-29

Write 'describe_item' unit tests.
 test/unit/common/check_item.c Makefile.am
Nicolas Weeger, 2008-03-25

Generate global elevation map.
 utils/mapper.c
Nicolas Weeger, 2008-03-25

Factorize code.
 common/friend.c
Nicolas Weeger, 2008-03-24

Correctly point to tiled group instead of non existing map page.
 utils/mapper.c
Nicolas Weeger, 2008-03-24

Use region's name instead of the filename in maps's pages.
 utils/mapper.c
Nicolas Weeger, 2008-03-24

Remove trailing newlines in quest/map description.
 utils/mapper.c
Nicolas Weeger, 2008-03-24

Tweak documentation so some programs in utils/ are part of Doxygen's output.
 Doxyfile
 utils/bwp.c gridarta-types-convert.c mapper.c
Nicolas Weeger, 2008-03-23

Tweak documentation, remove unused parameters.
plugins/citylife/citylife.c
Nicolas Weeger, 2008-03-23

Fix memory leak.
 utils/mapper.c
Nicolas Weeger, 2008-03-23

Fix documentation, no functional change.
 common/button.c image.c info.c init.c item.c player.c time.c treasure.c
 plugins/cfpython/cfpython_map.c
 random_maps/exit.c random_map.h treasure.c
 server/apply.c plugins.c rune.c spell_effect.c
 types/button/button.c
 types/exit/exit.c
 types/legacy/apply.c
 types/spell_effect/spell_effect.c
 types/trap/rune.c
 types/treasure/treasure.c
Nicolas Weeger, 2008-03-23

Fix protocol issues regarding sent items: do not send invisible items.
  common/object.c
Andreas Kirschbaum 2008-03-21

Fix protocol issues regarding face caching.
  socket/request.c
Andreas Kirschbaum 2008-03-21

Implement strerror_local() for systems not having strerror_r().
  common/porting.c
Andreas Kirschbaum 2008-03-20

Fix some integer overflows in experience calculations.
  common/exp.c
  common/living.c
  include/libproto.h
  include/sproto.h
  server/attack.c
  server/skill_util.c
Andreas Kirschbaum, 2008-03-08

Fix i18n bug resulting in erroneous output for 'statistics' command.
 include/languages.h
Kevin Bulgrien, 2008-03-02

Generate a global list of monsters in maps, and list monsters on each map.
 utils/templates/map.template
 utils/mapper.c
Added files:
 utils/templates/map_monster_after.template map_monster_before.template
 map_monster_between.template map_no_monster.template map_monster_one.template
Nicolas Weeger, 2008-02-23

Generate a list of special equipment in maps. Not yet listed in the map page itself.
 utils/mapper.c
Nicolas Weeger, 2008-02-22

Smarter pic generation for tiled maps. Fix crash if no map for quest.
 utils/mapper.c
Nicolas Weeger, 2008-02-16

Remove obsolete functions (related to weather).
 random_maps/standalone.c
 utils/bwp.c mapper.c
 test/unit/common/stubs_common.c
 test/unit/random_maps/stubs_random.c
 test/unit/socket/stubs_socket.c
Nicolas Weeger, 2008-02-17

Fix shifted pic for eg Titan.
 common/object.c: make get_multi_size() non static so can be used elsewhere.
 include/libproto.h
 utils/mapper.c
Nicolas Weeger, 2008-02-17

Remove ltostr10 and doubletostr10. They were using static buffer, and
are nicely replaced by stringbuffer_append_printf() or snprintf().
 common/loader.l object.c porting.c
 include/libproto.h
 server/time.c
 test/unit/common/check_loader.c
Nicolas Weeger, 2008-02-17

Unit test for get_ob_diff().
 test/unit/common/check_loader.c
 test/unit/common/Makefile.am
Nicolas Weeger, 2008-02-17

Tileset support, through '-tileset=' option. Default 'standard' tileset.
 utils/mapper.c
Nicolas Weeger, 2008-02-16

Remove left-over from weather code.
 common/map.c utils.c
 include/map.h plugin.h sproto.h
 plugins/cfpython/include/cfpython_map_private.h
 plugins/cfpython/cfpython_map.c
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/c_misc.c init.c plugins.c weather.c
Nicolas Weeger, 2008-02-16

Fix various warnings, remove unused variables/code.
 common/button.c languages.c
 server/attack.c c_misc.c spell_util.c
 socket/request.c sounds.c
 types/gate/gate.c
Nicolas Weeger, 2008-02-14

Add 'race_restriction' key/value field, that enables to restrict an item
to being appliable only for certain races.
 doc/Developers/objects
 server/apply.c
Nicolas Weeger, 2008-02-14

Remove unused functions.
 common/porting.c
 include/libproto.h
Nicolas Weeger, 2008-02-13

Better tiled maps handling. Now tiled maps are considered as one map, and
all links will point to the group.
 utils/mapper.c
Nicolas Weeger, 2008-02-13

Kind of update a few things.
 doc/handbook.ps
 doc/playbook/appA.tex chap3.tex
Nicolas Weeger, 2008-02-09

Fix broken pics.
 doc/playbook/items-extract
 doc/playbook/Makefile.am
Nicolas Weeger, 2008-02-09

socket/loop.c request.c: fix missing parameter.
Nicolas Weeger, 2008-02-09

Use 'anim_suffix' in class selection to try to find a race/class animation.
 server/apply.c
Nicolas Weeger, 2008-02-09

Some bases for sending race/class info to client. Not finished.
 doc/Developers/protocol: update.
 include/sockproto.h
 socket/loop.c request.c
Nicolas Weeger, 2008-02-09

Helper stringbuffer function.
 common/stringbuffer.c
 include/stringbuffer.h
Nicolas Weeger, 2008-02-09

Get quest information from map's lore. Generate quest index.
 utils/mapper.c
 utils/templates/map.template
Added files:
 templates/map_no_quest.template map_one_quest.template map_with_quests.template
  quests.template quests_map.template quests_quest.template
Nicolas Weeger, 2008-02-08

Include level of map in variables. Generate global map index by level.
 utils/mapper.c
Added files:
 utils/templates/level.template level_map.template level_value.template
Nicolas Weeger, 2008-02-08

Documentation, no functional change.
 common/anim.c: remove todo, done.
 doc/Developers/compound_animations.dox: added.
 doc/Developers/custom_attributes.dox: first version.
 doc/Developers/mainpage.dox: add the previous 2 pages.
Nicolas Weeger, 2008-02-07

Add stringbuffer_append_printf(), stringbuffer_append_stringbuffer(), and
stringbuffer_finish_shared().
  common/stringbuffer.c
  include/stringbuffer.h
Andreas Kirschbaum 2008-02-07

Change heading of high score command output to match the actual highscore data
by using <> instead of [] around max grace, hp, and sp.  The reason is that
when [max x] gets to a client that supports mediaTags, the text is treated
as a tag, and a log message is created about an unknown tag.
  server/hiscore.c
Kevin Bulgrien, 2008-02-06

Use map's name on the slaying page.
 utils/mapper.c
Nicolas Weeger, 2008-02-05

Add exits leading to a map. Changes tag to be coherent.
 utils/mapper.c
 utils/templates/map.template map_with_exit.template
Added templates:
 utils/templates/map_exit_to.template map_no_exit_to.template map_with_exit_to.template
Nicolas Weeger, 2008-02-05

Extract map page writing to separate function. Make names coherent.
Delay map loading, reducing memory consumption. Use map name in exit list.
Fix documentation.
 utils/mapper.c
Nicolas Weeger, 2008-02-05

Always get map's name at cost of memory use.
 utils/mapper.c
Nicolas Weeger, 2008-02-05

Parameter to toggle exit info generation.
 utils/mapper.c
Nicolas Weeger, 2008-02-05

Simplify code.
 utils/mapper.c
Nicolas Weeger, 2008-02-05

Fix warnings.
 utils/mapper.c
Nicolas Weeger, 2008-02-04

Get the real map's name.
 utils/mapper.c
Nicolas Weeger, 2008-02-04

Keep pointer to region instead of just the name.
 utils/mapper.c
Nicolas Weeger, 2008-02-03

Major refactoring, to prepare for more fun things.
 utils/mapper.c
Nicolas Weeger, 2008-02-03

Generate information on 'slaying' fields. Not complete yet, missing
FORCE created by markers and other things.
 utils/mapper.c
Nicolas Weeger, 2008-02-03

Add lore information to map page.
 utils/mapper.c
Added files:
 utils/templates/map_lore.template map_no_lore.template
Nicolas Weeger, 2008-02-03

common/object.c: fix memory leak.
Nicolas Weeger, 2008-02-03

Remove weather code, unused and messy.
 include/global.h sproto.h tod.h
 common/init.c map.c
 lib/i18n/messages.en messages.fr settings
 server/c_misc.c commands.c init.c weather.c
Nicolas Weeger, 2008-02-01

Fix for bug #1882265: Server failure when all exp_table entries commented out.
 common/exp.c: exit() in case of errors.
 lib/exp_table: enable a table by default.
Nicolas Weeger, 2008-02-01

plugins/cfanim/cfanim.c,
plugins/cfanim/include/cfanim.h,
plugins/cfanim/include/cfanim_proto.h:
  Changed the name of variables that some C compilers considered as
  keywords.
Yann "gros" Chachkoff 2008-02-01

socket/request.c: trash obsolete code (and version is checked for >= 1027 anyway).
Nicolas Weeger, 2008-01-30

configure.in: Remove to eliminate autoconf complaints that configure.ac and
  configure.in exist.
include/define.h: Add a comment to HOLE.
include/, include/.cvsignore: svnversion.h should not be controlled in SVN so
  ignore it. Changed svn:ignore property accordingly.
Kevin Bulgrien 2008-01-30

include/Makefile.am:  Use hint at http://www.in-ulm.de/~mascheck/various/echo/
  to try to remove a portability issue regarding use of echo -n.
Kevin Bulgrien 2008-01-29

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.
---
types/transport/transport.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

Changes for SVN:
Fix for #1878361: "Hill Giants no longer throw boulders"
Modified files:
 server/skills.c
Yann "gros" Chachkoff, 2008-01-27

Fix for #1878323: "trunk server crashes when praying on alter"
Modified files:
 server/gods.c
Yann "gros" Chachkoff, 2008-01-27

New plugin: citylife. Adds NPCs to town, to make them more lively.
See the plugin documentation for more details.
Modified files:
 configure.ac: build new plugin.
 doc/Developers/mainpage.dox: link to plugin documentation.
 plugins/Makefile.am: build new plugin.
Added files:
 plugins/citylife/include/citylife.h
 plugins/citylife/citylife.c
 plugins/citylife/Makefile.am
Nicolas Weeger, 2008-01-27

Fix template plugin generation and compilation.
 plugins/template/plugin_template.c: fix compilation and parameter order for strncpy.
 plugins/template/create_plugin.sh: missing "exit" to quit if no name.
Nicolas Weeger, 2008-01-26

utils/mapper.c: new option, "-regionslink", to generate a .dot file containing
 relationship between regions. New option "-noworldmap" to not generate the full
 world map. Use region's longname instead of the short name in regions index.
 Change world map size from 30xtiles to 50xtiles.
Nicolas Weeger, 2008-01-26

.cvsignore files created in types subdirectories and svn:ignore set.
Kevin Bulgrien

Spelling mistakes corrected.
  README
  configure.ac
  doc/crossfire-server.man
Kevin Bulgrien

Solved an issue about the portability of strerror_r.
 common/porting.c
Yann "gros" Chachkoff, 2008-01-25

Add F_BLESSED to send blessed status to client.
 include/newclient.h
 socket/item.c
Nicolas Weeger, 2008-01-24

plugins/cfpython/cfpython.c: add EVENT_USER to defined constants.
Nicolas Weeger, 2008-01-24

Documentation, no functional change.
 common/treasure.c: link functions to the relevant page.
 doc/Developers/collect.dox: new file.
 doc/Developers/mainpage.dox: link to collect process.
 doc/Developers/treasure_list.dox: add much content.
Nicolas Weeger, 2008-01-16

Commit combat rebalancing.  Combat is slower now, so less deadly.  If player
is idle, they get faster hp/sp regen.  Allow generators to have limit on
number of monsters they generate before disappearing.  Starting characters
all have same stat total (re-rolling may make the distribution different,
but total will be the same).  Add weapon_speed as an object attributed,
and also add weapon_speed_left - distinct values fixes some odd speed
bugs.  Change encumberance for players - character can carry some portion
with no slowdown.  Allow more tuning for races (hp/sp/grace can be
customized more)
---
common/exp.c: Refine exp calculator (for dump) for monsters.  This
  isn't used in play, but system gave too much bonus for resistances
  and speed, resulting in skewed exp values when using the dump values.
common/living.c: Greatly reduce speed bonuses for high dex.  Reduce
  damage and to hit bonuses from strength.  Remove max_carry.  Improve
  disease handling - player gets speed penalty from worse disease.
  Change speed benefits from magical devices.  For players, give them
  extra hp/sp/grace based upon what the archetype says.  Reduce
  rate of increase of wc and damage from melee skill.  Implement new
  encumberance calculations.  Add code to calculate weapon speed.
common/loader.l: Add support for loading an saving weapon_speed and
  weapon_speed_left.
doc/Developers/objects: Update notes for the generators to detail
  generator_limit
doc/Developers/protocol: Add note about sc protocol 1029 (change way weapon
  speed is calculated)
include/config.h: Add new defines related to encumberance handling.  Also
  add new define related to characters base weapon speed
include/newclient.h: Add MSG_TYPE_ATTACK_MISS
include/newserver.h: Bump up SC_VERSION because of weapon_speed handling.
include/object.h: Add weapon_speed, weapon_speed_left to object structure.
include/player.h: remove weapon_sp from player structure.
lib/exp_table: Add new experience table to slows down character advancment.
  (table D)
server/attack.c: Display all attack messages, not just a portion of them.
  With slower combat, this is still reasonable, and is useful in debugging
  stages of combat.  If not all messages are to be displayed, this should
  really be controlled by listen level and not random choice.
server/login.c: Remove load/save support of weapon_sp in player file.
  Now an object attribute handled in common/loader.l
server/player.c: Keep rolling stat until total is 105 (arbitrary value) -
  good for testing balance since all characters are closer in power.  Add
  code to handle weapon_speed properly.
server/server.c: Add weapon_speed_left handling.  Give boost to players
  sp/hp/grace/food consumption when player is 'resting'
server/skills.c: Change throw calculation based on new character encumberance
server/skill_util.c: Add 'you miss foo' messages when attacking - otherwise
  hard to know what is going on.
server/time.c: Modify generator code for max limiting of monsters.
  Functions that actually generate monsters were modified to return if
  in fact they generated a monster, so that generator_limit only happens
  if in fact that number of monsters were generated, not attempted to
  generate (otherwise generators go poof in room full of monsters
  because there is no space to make new monster).
socket/request.c: Pull weapon_speed from object, not player structure
  when sending to client
---
MSW 2008-01-13

Fix invalid check in test unit, resulting in failure.
 test/unit/common/check_object.c
Nicolas Weeger 2008-01-13

Fix buffer overflows in get_ob_diff(), dump_object(), and dump_arch().
Introduce a new module stringbuffer which implements a buffer that can hold
variable-sized strings.
 Makefile.am
 common/anim.c arch.c loader.l object.c
 include/global.h libproto.h Makefile.am
 server/c_misc.c c_wiz.c server.c
 types/gate/gate.c
Added files:
 common/stringbuffer.c
 include/stringbuffer.h
Andreas Kirschbaum 2008-01-12

Added more French help translations.
 lib/help/motd.fr
 lib/help/news.fr
 lib/help/output-count.fr
 lib/help/output.fr
 lib/help/output-sync.fr
 lib/help/party.fr
 lib/help/party_rejoin.fr
 lib/help/peaceful.fr
 lib/help/petmode.fr
 lib/help/pickup.fr
 lib/help/quit.fr
 lib/help/rename.fr
 lib/help/rules.fr
 lib/help/save.fr
 lib/help/shout.fr
 lib/help/showpets.fr
 lib/help/skills.fr
 lib/help/take.fr
 lib/help/use.fr
 lib/help/usekeys.fr
 lib/help/whereabouts.fr
Yann Chachkoff (gros) 2008-01-10

Make 'player quits the game' in the same style as entered/leave messages.
 server/player.c
Nicolas Weeger 2008-01-07

Documentation, no functional changes.
 doc/Developers/custom_attributes.dox: added
 include/define.h: document a few things.
 types/treasure/treasure.c: fix @file directive.
Nicolas Weeger 2008-01-06

Add documentation generated by the converter program.
This way, people don't have to get Gridarta to generate it.
 doc/Developers/fields/field_*
 doc/Developers/types/type_*
Nicolas Weeger 2008-01-06

New small program to extract information from Gridarta's types.xml file and
generate doxygen documentation.
New files:
 doc/Developers/fields/README
 doc/Developers/types/README
 utils/gridarta-types-convert.c
Modified file:
 doc/Developers/mainpage.dox
Nicolas Weeger 2008-01-06

Fix multipart holes not animating properly.
 server/time.c: use convenient animate_object function.
Nicolas Weeger 2008-01-05

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

Fix crash on invalid bulletwalls.
 server/time.c: ensure other_arch is not NULL.
Nicolas Weeger 2008-01-03

Fix plugin-related potential crash.
 server/plugins.c: ensure msg has a newline at the end, else bad things happen.
Nicolas Weeger 2008-01-03

Win32 compilation fixes.
 server/c_misc.c plugins.c: variable declaration/use order.
Nicolas Weeger 2008-01-03

Win32 compilation fixes.
 plugins/cfpython/include/cfpython_proto.h: missing CF_PLUGIN.
 plugins/cfpython/cjson.c: variable order.
Nicolas Weeger 2008-01-03

Win32 compilation fixes.
 include/win32.h: #define sleep.
 plugins/cfanim/include/cfanim_proto.h: missing CF_PLUGIN.
Nicolas Weeger 2008-01-03

Fix variable being used while not initialized.
 server/player.c
Nicolas Weeger 2007-12-28

Merge documentation change from wiki.
 doc/Developers/objects
Kevin Bulgrien 2007-12-28

Fix variable being used while not initialized.
 server/player.c
Nicolas Weeger 2007-12-28

No functional change, reformat object types defines for export to wiki page.
  include/define.h
Kevin Bulgrien 2007-12-27

Fix spurious errors in log from plugins.
 common/arch.c: new function try_find_archetype().
 include/libproto.h: new prototype.
 server/plugins.c: replace find_archetype() by try_find_archetype().
Nicolas Weeger 2007-12-27

plugins/cfpython/cfpython.c: fix invalid options when empty parameter.
Nicolas Weeger 2007-12-26

Add support for user-defined events. Those can be called from the Python plugin.
    server/plugins.c
    plugins/common/include/plugin_common.h
    plugins/common/plugin_common.c
    plugins/cfpython/cfpython_object.c
    plugins/cfpython/include/cfpython_object_private.h
    plugins/cfpython/cfpython.c
    include/sproto.h
    include/plugin.h
Yann Chachkoff (gros) 2007-12-23

Add error information to CrossfireMap.TriggerConnected, make magice_ear scriptable
    server/monster.c
    plugins/cfpython/cfpython_map.c
Tchize 2007-12-22

Change skill animation to use anim_suffix instead of the name.
 server/skill_util.c
Nicolas Weeger 2007-12-21

Fix missing animation first pic. Change animate_object to not alter the state,
but merely ensure the pic is valid. Move state/face changing upstream.
 common/anim.c
 server/player.c server.c time.c
Nicolas Weeger 2007-12-16

More compound animations. Make animations loop instead of resetting all the time.
Fix missing first animation pic in some cases.
 common/anim.c
 server/skill_util.c
Nicolas Weeger 2007-12-16

Add line/row info to cjson module upon error
Tchize 2007-12-18

Added my missing entries to Changelog
Tchize 2007-12-18

Add try_find_animation() for compound animations, LOG() again in find_animation().
 common/anim.c
 include/libproto.h
Nicolas Weeger 2007-12-16

Fix incorrect "setup sound FALSEFALSE" response.
 socket/request.c
Andreas Kirschbaum 2007-12-18

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

Add 'apply' sound, sounds for spell casting. Give more sounds when emitter is in
 something on a map.
 doc/Developers/sound
 server/apply.c spell_util.c
 socket/sounds.c
Nicolas Weeger 2007-12-16

New sound support. Check doc/Developers/sound.
 common/loader.l
 doc/Developers/protocol sound
 include/newserver.h object.h sockproto.h sounds.h
 server/apply.c attack.c player.c server.c spell_effect.c spell_util.c
 socket/request.c sounds.c
 types/cf_handle/cf_handle.c
 types/clock/clock.c
 types/hole/hole.c
 types/poison/poison.c
 types/spellbook/spellbook.c
 types/trapdoor/trapdoor.c
 types/trigger/trigger.c
Nicolas Weeger 2007-12-16

Do not forget background music when swapping map.
 common/map.c
Andreas Kirschbaum 2007-12-15

Do not include stray \n character in background_music field. Do not modify
const strings.
common/map.c common/region.c
Andreas Kirschbaum 2007-12-15

Remove unused variables.
 common/image.c
 include/define.h global.h
Nicolas Weeger 2007-12-15

Extract some code from massive move_monster().
 server/monster.c
Nicolas Weeger 2007-12-15

Remove redundant check.
 server/player.c: can_detect_enemy() calls on_same_map().
Nicolas Weeger 2007-12-15

Factorise wand charge draining code.
 include/sproto.h
 server/monster.c player.c spell_util.c
Nicolas Weeger 2007-12-15

Real path-finding algorithm for monsters. Pretty basic, but works for now.
 server/monster.c
Nicolas Weeger 2007-12-10

Fix trailing newline in i18n messing display. Convert \n to "real" newline.
 common/languages.c
Nicolas Weeger 2007-12-09

Have player's language be a variable in player instead of a key/value.
Makes things faster, no key lookup, and it's only useful for players anyway.
 common/languages.c
 include/player.h
 server/c_misc.c login.c player.c
Nicolas Weeger 2007-12-09

Factorize compound animation code.
 common/anim.c
 include/libproto.h
 server/apply.c attack.c spell_util.c
Nicolas Weeger 2007-12-09

Fix 0 destination coordinates warning for final exit of random maps.
 random_maps/exit.c
Nicolas Weeger 2007-12-02

Enable a special exit to final map in random maps, through the
 'final_exit_archetype' field.
 random_maps/exit.c random_map.c random_map.h reader.l
Nicolas Weeger 2007-12-02

Add death animation to objects, through the key 'death_animation' (which should
 be an archetype).
 server/attack.c: check for a death animation to insert.
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/gods.c: make god refuse to enchant an already powerful item.
 types/weapon_improver/weapon_improver.c: change enchant logic to not enchant already powerful items.
Nicolas Weeger 2007-12-01

Fix bugs #825265: Broken container images and #799392: 2.0 server mat container = chest.
 server/apply.c: store custom container image at container opening, and restore it later.
Nicolas Weeger 2007-12-01

Adapted the compound animations code so that it properly works with multipart
monsters.
    server/apply.c
    server/attack.c
    server/spell_util.c
Yann Chachkoff (gros) 2007-11-25

------------------------------------------------------------------------
r7575 | tchize | 2007-11-25 16:27:46 +0100 (dim, 25 nov 2007) | 2 lines
Chemins modifiés :
   M server/attack.c

Fix sigsegv when arrows are thrown by monster and hit (no wrapped object)

------------------------------------------------------------------------
r7573 | tchize | 2007-11-25 16:06:45 +0100 (dim, 25 nov 2007) | 4 lines
Chemins modifiés :
   M server/attack.c

probable fix for [ 1835332 ]. At least, now, the experiences for
throwing object is rewarded to a skill.
--


Refactor poisoning code.
    server/time.c
    server/ob_types.c
    include/sproto.h
    include/typesproto.h
    types/poisoning/poisoning.c
    types/legacy/process.c
    types/Makefile.am
Alex Schultz 2007-11-28

Added support for compound item apply animations
    server/apply.c
Yann Chachkoff (gros) 2007-11-25

Refactor peacemaker code.
    server/ob_types.c
    server/spell_effect.c
    include/sproto.h
    include/typesproto.h
    types/peacemaker/peacemaker.c
    types/legacy/process.c
    types/Makefile.am
Alex Schultz 2007-11-25

Refactor gate code.
    server/time.c
    server/ob_types.c
    include/sproto.h
    include/typesproto.h
    types/gate/gate.c
    types/legacy/process.c
    types/Makefile.am
Alex Schultz 2007-11-23

Refactor savebed, poison, cf_handle, treasure, and weapon_improver code.
Generalize 'killer' message for poison objects.
    server/ob_types.c
    server/apply.c
    server/attack.d
    include/sproto.h
    include/typesproto.h
    types/legacy/apply.c
    types/Makefile.am
    types/savebed/savebed.c
    types/poison/poison.c
    types/cf_handle/cf_handle.c
    types/treasure/treasure.c
    types/weapon_improver/weapon_improver.c
Alex Schultz 2007-11-21
------------------------------------------------------------------------
r7550 | tchize | 2007-11-20 20:35:08 +0100 (mar, 20 nov 2007) | 3 lines
Chemins modifiés :
   M common/map.c

Fix for [ 1825248 ] Logging missing apartment map for player as error
The "can not load original map" message are now debug level for player appartments, but stay error level for normal maps

------------------------------------------------------------------------
r7549 | tchize | 2007-11-20 20:25:26 +0100 (mar, 20 nov 2007) | 2 lines
Chemins modifiés :
   M common/map.c

Fix for [ 1823026 ] Server accepts map files missing size attributes

------------------------------------------------------------------------
r7547 | tchize | 2007-11-20 19:03:14 +0100 (mar, 20 nov 2007) | 2 lines
Chemins modifiés :
   M server/c_object.c

Fix #1825589 Cheat bug with containers (access to locked container without key)

------------------------------------------------------------------------
r7545 | tchize | 2007-11-20 00:18:12 +0100 (mar, 20 nov 2007) | 5 lines
Chemins modifiés :
   M plugins/cfpython/Makefile.am
   M plugins/cfpython/cfpython.c
   A plugins/cfpython/cjson.c

JSON notation support for parameters
This notation will make it easier to customize script from editor interface.
For performances reasons, the JSON parser is C implemented. It's LGPL but
was converted to GPL for crossfire

------------------------------------------------------------------------
r7531 | tchize | 2007-11-18 19:03:18 +0100 (dim, 18 nov 2007) | 2 lines
Chemins modifiés :
   M server/time.c

Fixed a sigsegv when maker is outside of map
--------------

Added support for compound spellcasting animations
    server/spell_util.c
    common/object.c
Yann Chachkoff (gros) 2007-11-18

Added support for compound attack animations (displaying a custom animation
sequence when attacking with a weapon)
    server/attack.c
    server/time.c
    server/server.c
    include/object.h
    include/global.h
    common/loader.l
    common/anim.c
Yann Chachkoff (gros) 2007-11-18

Added support for changing the FLAG_ANIMATED from cfpython.
    plugins/cfpython/cfpython_object.c
    plugins/cfpython/include/cfpython_object_private.h
Yann Chachkoff (gros) 2007-11-18

Misc fixes, no functional change.
 common/languages.c: convert to UTF-8, fix comment, add missing new line at end.
 doc/Developers/object.dox: fix references.
 include/spellist.h: fix comment.
 lib/i18n/messages.fr: convert to UTF-8.
 server/c_misc.c hiscore.c: fix comments.
Nicolas Weeger 2007-11-17

------------------------------------------------------------------------
r7518 | tchize | 2007-11-17 18:31:20 +0100 (sam, 17 nov 2007) | 6 lines
Chemins modifiés :
   M plugins/cfpython/cfpython_object.c

Added a "removed" check in CrossfireObject.InsertInto
This check is needed because backend proprety of
cfapi issue error messages when it's not the case and
the python CrossfireObject.RemoveObject issue a free
that make object unusable.
-------------------


Adds basical i18n support for help and "static" server strings.
Modified files:
 common/init.c Makefile.am
 include/includes.h libproto.h sproto.h
 lib/Makefile.am
 server/c_misc.c commands.c
Added files:
 server/trunk/common/languages.c
 include/languages.h
 lib/help/*.en
 lib/i18n/messages.fr messages.en
Removed files:
 lib/help/* (old help files)
Yann Chachkoff (gros) 2007-11-17
------------------------------------------------------------------------
r7508 | tchize | 2007-11-16 14:24:51 +0100 (ven, 16 nov 2007) | 10 lines
Chemins modifiés :
   M common/button.c
   M common/time.c
   M include/autoconf.h.in
   M include/libproto.h
   M include/sproto.h
   M include/tod.h
   M plugins/cfanim/include/cfanim_proto.h
   M plugins/cfpython/cfpython.c
   M plugins/cfpython/cfpython_map.c
   M plugins/cfpython/cfpython_object.c
   M plugins/cfpython/include/cfpython_map_private.h
   M plugins/cfpython/include/cfpython_object_private.h
   M plugins/cfpython/include/cfpython_proto.h
   M plugins/common/include/plugin_common.h
   M plugins/common/plugin_common.c
   M server/plugins.c
   M test/unit/common/Makefile.am
   M test/unit/common/check_time.c

Plugins Added Trigger, updated TimeOfDay and glowRadius
Add support to trigger a specific "connected" from plugins
Add support to get timeofday names (seasons, months, weeks, day, period of day)
Add in timeofday the notion of period of the day (Night, Morning, Noon, etc)
Fixed glowRadius setter priperty in plugin interface so changes are reflected to user's UI
Add EVENT_TRIGGER call to all objects triggered in a connected chain
autogen.sh invoked

Note: those changes were necessary to build some basic tod based scripts

------------------------------------------------------------------------
r7502 | tchize | 2007-11-09 18:58:49 +0100 (ven, 09 nov 2007) | 2 lines
Chemins modifiés :
   M include/version.h

removed FIXME comment, kbulgrien fixed it.
-----------------------


Adding svnversion.h to SVN was not a good idea.  It will get re-committed over
and over even though that was not the intent.  Removed.  Move include prior to
all other directories to be sure svnversion.h is built prior to inclusion in
any other source file.
  Makefile.am
  include/svnversion.h
  include/version.h
Kevin Bulgrien 2007-11-09

Add Log() support to python scripts
David Delbecq (tchize) 2007-11-09

Add SVN version to the server version (as -rnnnn suffix) reported at server
startup, by the player "version" command, and by the metaservers.  The method
to for adding the SVN version information was copied from the client.  The
expanded version information should not be generated if the sources are built
outside of an SVN checkout.
  configure.ac
  server/init.c
  server/server.c
  include/version.h
  include/svnversion.h
  include/Makefile.am
  socket/metaserver.c
Kevin Bulgrien 2007-11-08

Remove support for spellcasting objects using sp/dam fields.
 common/loader.l
Andreas Kirschbaum 2007-11-04

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

Remove useless 'start_holding' field.
 include/object.h
 server/server.c
Nicolas Weeger 2007-10-28

Remove unused 'tooltype' field.
 common/loader.l
 include/object.h
Nicolas Weeger 2007-10-28

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

server/login.c: Fix file handle leaks in save_player() and check_login().
Andreas Kirschbaum 2007-10-25

Don't remove inventory if player save fails. Warn online DMs.
 server/login.c
Nicolas Weeger 2007-10-24

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_object() 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/c_range.c: Bug fix for [ 1804610 ] cast : info.c:message_callback:
  unidentified messages.  Text output to the gtk2 client may not contain text
  enclosed in square brackets... which is probably a bug in and of itself.
socket/info.c: doxygenated parameters for draw_ext_info() and
  draw_ext_info_format().
Kevin Bulgrien 2007-09-30

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.
  Note: For trunk, item_power was not recalculated, but I think the changing
  of item_power is just good for some balance.
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

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_object() 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

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.
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

Fix many objects getting applied with 'a' key.
 server/apply.c: use METHOD_OK for success, not 1.
Nicolas Weeger 2007-09-15

Fix player teleported on wrong HallOfSelection for race if dying before class selection.
 server/player.c
Nicolas Weeger 2007-09-15

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

lib/metaserver2: Update with official metaserver2 location.  MSW 2007-08-31

Remove support for obsolete 'fly_on/fly_off/walk_on/walk_off' attributes.
--
doc/Developers/objects: Update documentation about no_pass attribute.
doc/{checkarch,collect}.pl.in: Check for move_on/off instead.
common/loader.l: Remove support for fly_on/fly_off/walk_on/walk_off
 attributes.
Andreas Kirschbaum 2007-08-25

Fix incorrect lookup_spell_by_name() that prevented eg marking runes to work.
 server/spell_util.c
Nicolas Weeger 2007-08-23

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

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

Write when an item is glowing.
 common/item.c: add "glowing" to glowing items.
 types/legacy/legacy_describe.c: LAMP have some description, too.
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

Various small fixes.
 common/exp.c: fix comment.
 include/plugin.h: make fname const char*.
 server/c_party.c: say something if no parameter to gsay.
 server/c_wiz.c: remove some useless tests.
 server/init.c: make get_racelink() abort() if memory failure.
 server/monster.c: fix comment.
Nicolas Weeger 2007-08-16

Fix spurious function replace_insert_ob_in_map(), document it.
Implement unit test for that.
 common/object.c
 test/unit/common/check_object.c
Nicolas Weeger 2007-08-16

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/player.c: fix find_better_arrow() comment, allow parameter to be NULL.
Nicolas Weeger 2007-08-11

doc/Developers/map.dox: add some real content.
Nicolas Weeger 2007-08-09

doc/playbook-html/Makefile.am,doc/spoiler-html/Makefile.am:  Update the
  clean directive to remove the png files, since that is what is now
  used, and not gif files.
MSW 2007-08-08

Server support for Metaserver2:
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.
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-08

Remove useless parameter.
 include/sproto.h
 server/pets.c server.c swap.c
Nicolas Weeger 2007-08-06

Rename remove_door2() to remove_locked_door().
 include/sproto.h
 server/player.c time.c
 types/legacy/process.c
Nicolas Weeger 2007-08-06

Documentation, no functional change.
 doc/Developers/login.dox: new file.
 doc/Developers/mainpage.dox
 include/define.h player.h
 socket/init.c
Nicolas Weeger 2007-08-06

Various fixes.
 server/c_misc.c: display information for weather even if turned off.
 server/commands.c: make 'archs' a wizard command.
Nicolas Weeger 2007-08-05

Use safe string functions. Removed unused parameters. Rename init_spells() to check_spells().
 common/recipe.c
 include/sproto.h
 server/init.c spell_effect.c spell_util.c
Nicolas Weeger 2007-08-05

Use safe string functions. Removed unused parameters.
 include/sproto.h
 server/skill_util.c skills.c
Nicolas Weeger 2007-08-05

Use safe string functions.
 common/living.c
 include/sproto.h
 server/c_misc.c skill_util.c
Nicolas Weeger 2007-08-05

Remove unused defines, functions and parameters.
 common/living.c
 include/commands.h map.h sproto.h
 server/c_misc.c c_party.c login.c player.c resurrection.c win32.c
 socket/request.c
Nicolas Weeger 2007-08-05

Remove unused parameter.
 include/sproto.h
 server/server.c
 test/unit/server/comet_perf.c
Nicolas Weeger 2007-08-05

Remove unused command_generate().
 include/sproto.h
 server/c_wiz.c
Nicolas Weeger 2007-08-05

include/config.h: fix default emergency path/coordinates.
Nicolas Weeger 2007-08-05

Merge NewServerCommands to ServerCommands, remove unused SocketCommands declaration.
 include/commands.h
 server/c_new.c commands.c
Nicolas Weeger 2007-08-05

Remove unused parameter from fire_bow().
 include/sproto.h
 server/monster.c player.c
Nicolas Weeger 2007-08-05

Remove unused parameter from fatal_signal(), make signal handlers static.
 include/sproto.h
 server/init.c
Nicolas Weeger 2007-08-05

Remove unused loading field.
 include/player.h
 server/c_wiz.c server.c
Nicolas Weeger 2007-08-05

include/newserver.h: fix documentation.
Nicolas Weeger 2007-08-05

Documentation, no functional change.
 Doxyfile
 common/living.c map.c object.c
 doc/Developers/mainpage.dox
 include/artifact.h attack.h commands.h config.h define.h face.h global.h god.h
  image.h includes.h living.h loader.h logger.h map.h material.h newclient.h object.h
  skills.h spells.h
 random_maps/random_map.h room_gen_onion.c room_gen_spiral.c special.c treasure.c
 test/unit/server/check_c_object.c
 server/apply.c attack.c c_chat.c c_object.c shop.c
Nicolas Weeger 2007-08-05

Documentation, no functional change.
 include/newclient.h newserver.h ob_methods.h ob_types.h object.h path.h player.h
  plugin.h re-cmp.h recipe.h shstr.h skills.h sounds.h spellist.h spells.h
  tod.h treasure.h win32.h
 server/skill_util.c spell_util.c time.c weather.c win32.c
Nicolas Weeger 2007-08-04

Documentation, no functional change.
 common/shstr.c
 include/race.h
 server/commands.c daemon.c hiscore.c init.c login.c main.c server.c
Nicolas Weeger 2007-08-03

Fix compilation, document compile command line.
 utils/mapper.c
Nicolas Weeger 2007-07-31

Move read_client_images() from socket/ to common/.
 common/image.c
 include/image.h libproto.h sockproto.h
 socket/image.c
Nicolas Weeger 2007-07-31

Documentation, no functional change.
 server/apply.c c_chat.c c_object.c c_party.c c_range.c ob_methods.c ob_types.c
  player.c resurrection.c
Nicolas Weeger 2007-07-29

Documentation, no functional change.
 server/c_move.c c_new.c move.c
Nicolas Weeger 2007-07-29

Documentation, no functional change.
 server/c_wiz.c
Nicolas Weeger 2007-07-27

Documentation, no functional change.
 Doxyfile: enable svn:keywords property. Various tweaks.
New files:
 doc/Developers/archetype.dox artifact.dox client.dox connected.dox general.dox
  mainpage.dox map.dox misc.dox object.dox player.dox region.dox treasure_list.dox
Nicolas Weeger 2007-07-27

Documentation, no functional change.
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/spell_attack.c spell_effect.c
Nicolas Weeger 2007-07-26

Documentation, no functional change.
 include/sproto.h: fix paramss to params for coherence.
 server/c_misc.c
Nicolas Weeger 2007-07-25

server/plugins.c: sanity checks on parameters for usual crashing culprit.
Nicolas Weeger 2007-07-25

Documentation, no functional change.
 server/pets.c swap.c
Nicolas Weeger 2007-07-23

Remove unused return values. Fix wrong return for cure_disease. Remove hardcoded value.
 include/sproto.h
 server/disease.c
Nicolas Weeger 2007-07-17

Change function return type for coherence with experience.
 common/exp.c info.c
 include/libproto.h
Nicolas Weeger 2007-07-17

Remove obsolete color_bg handling.
 common/image.c
 lib/collect.pl.in
Nicolas Weeger 2007-07-17

No functional changes - various cleanups to reduce number of compiler warnings
when compiled with -Wall - makes it easier to catch real errors.  Most things
changed/fixed are missing returns in non void functions, missing includes,
declared but unused variables, not escaping #include sproto in CEXTRACT
checks.  MSW 2007-07-16
--
Changed files:
common/object.c common/button.c common/logger.c common/loader.l
common/living.c common/map.c common/treasure.c common/glue.c
include/libproto.h include/define.h include/sproto.h
plugins/cfpython/cfpython.c
plugins/cfanim/cfanim.c
random_maps/standalone.c
server/apply.c server/attack.c server/c_chat.c server/c_object.c
server/c_wiz.c server/ob_methods.c server/ob_types.c
server/shop.c server/skill_util.c server/skills.c server/time.c
socket/item.c socket/lowlevel.c socket/info.c
test/toolkit/toolkit_common.c
test/unit/random_maps/stubs_random.c test/unit/server/check_attack.c
test/unit/server/check_c_party.c test/unit/server/check_c_object.c
test/unit/server/comet_perf.c test/unit/common/check_object.c
test/unit/common/stubs_common.c test/unit/socket/stubs_socket.c
types/shop_inventory/shop_inventory.c types/common/common_apply.c
types/spellbook/spellbook.c types/skillscroll/skillscroll.c

server/Makefile.am: Don't include main.c when building sproto.h
MSW 2007-07-16

test/unit/server/Makefile.am, test/bugs/bugtrack/Makefile.am:
 Remove duplicate build directions for libtypes.a
MSW 2007-07-16

common/shstr.c, include/shstr.h, server/c_misc.c: Move SS_STATISTICS from
   shstr.h to shstr.c - c_misc.c also includes the file,
   and got warnings about unused static variables. - MSW 2007-07-16

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

Remove "random_move" field, "random_movement" exists.
 common/loader.l
 utils/bwp.c
Nicolas Weeger 2007-07-16

Remove obsolete/unused things.
 common/glue.c item.c map.c utils.c
 include/define.h
 plugins/cfpython/cfpython.c
 socket/request.c
Nicolas Weeger 2007-07-15

Remove unused field.
 include/newserver.h
 socket/init.c request.c
Nicolas Weeger 2007-07-15

Fix spoilers generation. giftrans is now disabled.
 doc/playbook/Makefile.am
 doc/playbook-html/Makefile.am
 doc/scripts/Makefile.in makeps.pl
 doc/spoiler/Makefile.am
 doc/spoiler-html/Makefile.am
 doc/spoiler-html/spoiler.html: removed as it's generated by make archive
Nicolas Weeger 2007-07-15

server/skills.c: Fix crash - using incorrect map pointer in call
  to get_map_ob
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

socket/request.c: In map sending routine, use object anim_speed if so for
  animation speed instead of object speed.  Allows for zero speed objects
  to be animated, also matches behavior for inventory items.
MSW 2007-07-09

Documentation, no functional change.
 common/object.c
 server/rune.c
Nicolas Weeger 2007-07-09

Remove superfluous calls to esrv_del_item (since remove_ob calls it if needed).
Remove now unused send_removed_object function. Change esrv_send_item to esrv_update_item.
 common/item.c
 server/c_object.c c_wiz.c gods.c player.c plugins.c shop.c skills.c spell_effect.c time.c
 types/spell_effect/spell_effect.c
Nicolas Weeger 2007-07-09

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
---
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

Documentation, no functional change. Change some #define to enum for grouping purposes.
 include/map.h
Nicolas Weeger 2007-07-08

Try to factor esrv_del_item and esrv_send_item into remove_ob() and
insert_ob_in_ob(). Fix calls to esrv_send_item that are really esrv_update_item().
 common/object.c treasure.c
 include/newclient.h
 random_maps/standalone.c
 server/apply.c attack.c c_object.c c_wiz.c gods.c player.c plugins.c skills.c shop.c spell_effect.c time.c
 socket/item.c
 test/unit/common/stubs_common.c
 types/armour_improver/armour_improver.c
 types/lamp/lamp.c
 types/lighter/lighter.c
Nicolas Weeger 2007-07-05

Remove crossedit-related documentation, replace with Gridarta.
Removed:
 doc/Crossedit.doc crossedit.man
Modified:
 doc/Makefile.am
 doc/Developers/objects mapguide random-maps testplans
Nicolas Weeger 2007-07-05

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

Documentation, no functional changes.
 include/timers.h
 server/timers.c
Nicolas Weeger 2007-07-01

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

Party unit tests (partial).
 test/unit/server/check_c_party.c Makefile.am
Nicolas Weeger 2007-06-22

server/c_party.c: fix mistake in party removal.
Nicolas Weeger 2007-06-22

common/shstr.c: Remove C++ style comment.
include/map.h, include/player.h: Fix 'comma at end of enumerator list' warnings.
types/food/food.c: Fix missing math.h include. (Harmless but caused a warning)
Alex Schultz 2007-06-21

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

Documentation, no functional change.
 server/skill_util.c skills.c
Fix variable name confusion Doxygen.
 random_maps/standalone.c
 test/unit/random_maps/stubs_random.c
 test/unit/common/stubs_common.c
 test/unit/socket/stubs_socket.c
 utils/bwp.c mapper.c
Nicolas Weeger 2007-06-17

Documentation, no functional change.
  server/disease.c gods.c spell_effect.c
Nicolas Weeger 2007-06-17

Fix bug #1735464: Reset command does not accept relative names.
 server/c_wiz.c
Nicolas Weeger 2007-06-16

Remove Crossedit, replaced by Gridarta. See http://sourceforge.net/projects/gridarta
for more information.
Removed paths:
 crossedit
 test/unit/crossedit
Modified paths:
 acinclude.m4 configure.ac Makefile.am
 include/autoconf.h.in define.h global.h object.h
 common/button.c init.c loader.l map.c object.c
 server/init.c login.c
 test/bugs/bugtrack/check_1727944.c
 test/unit/Makefile.am
Nicolas Weeger 2007-06-13

Add some unit tests.
 test/unit/server/check_c_object.c Makefile.am
 test/unit/common/check_object.c
Nicolas Weeger 2007-06-13

Tentative optimizations, shouldn't cause issues but need testing.
 common/object.c: fix_object() doesn't need to be called all the time.
 server/c_object.c: why is player/monster removed then inserted? if special case,
  please document why
Nicolas Weeger 2007-06-10

Partial fix for #1735275: Server sends incorrect spell info data.
 server/login.c: send spell before calling fix_object() 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

test/bugs/bugtrack/check_1727944.c: fix ininitialized variable, reduce # of tests
 as the test isn't that meaningful.
Nicolas Weeger 2007-06-10

Disable unimplemented tests, remove quests tests.
 test/unit/common/Makefile.am
 test/unit/common/check_quest.c: removed
 test/unit/random_maps/Makefile.am
 test/unit/server/Makefile.am
 test/unit/socket/Makefile.am
Nicolas Weeger 2007-06-10

Fix accidentally broken unit test.
 test/unit/common/check_arch.c: use correct type/subtype.
Nicolas Weeger 2007-06-10

Fix Win32 compilation.
 common/loader.l logger.c re-cmp.c
 make_win32/crossfire32.dsp installwin32.bat
 plugins/cfanim/include/cfanim_proto.h
 plugins/cfpython/cfpython_object.c
 random_maps/floor.c treasure.c
Nicolas Weeger 2007-06-10

utils/mapper.c: fix compilation. Fix exit without path not displayed.
Nicolas Weeger 2007-06-10

Remove obsolete player_cmd().
 doc/Developers/protocol
 include/sockproto.h
 socket/loop.c request.c
Nicolas Weeger 2007-06-10

lib/artifacts: update header.
Nicolas Weeger 2007-06-09

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/loader.l: remove obsolete checks and conversions.
Nicolas Weeger 2007-06-09

Remove obsolete 'map1' and 'map1a' modes.
 doc/Developers/protocol
 include/newserver.h
 socket/init.c request.c
Nicolas Weeger 2007-06-09

Remove obsolete 'item' command, always assume 'item2'.
 doc/Developers/protocol
 include/newserver.h
 socket/init.c item.c request.c
Nicolas Weeger 2007-06-09

Assume clients always use 64b experience mode (commit for that support: MSW 2003-05-17).
 include/newserver.h
 socket/init.c request.c
Nicolas Weeger 2007-06-09

Remove obsolete old_mode support. Remove unused log_kill stuff.
 include/newserver.h sockproto.h sproto.h
 socket/init.c info.c
 server/attack.c c_misc.c commands.c
Nicolas Weeger 2007-06-09

Remove obsolete image/face/face1 support. Increment protocol version to 1028.
 doc/Developers/protocol
 include/newserver.h
 socket/image.c init.c request.c
Nicolas Weeger 2007-06-09

server/{ob_types.c, apply.c}, include/{sproto.h, typesproto.h},
  types/{food/food.c, legacy/apply.c, Makefile.am}: Refactor food applying.
include/libproto.h: Update prototypes.
Alex Schultz 2007-06-09

Remove badly implemented quest support.
Removed files:
 common/quest.c
 doc/Developers/quests
 include/quest.h
 lib/help/quests
Modified files:
 common/Makefile.am
 include/define.h libproto.h Makefile.am sproto.h
 lib/Makefile.am
 plugins/cfpython/cfpython.c
 server/c_misc.c commands.c monster.c time.c
Nicolas Weeger 2007-06-09

doc/Developers/testplans: update.
Nicolas Weeger 2007-06-09

Remove party spell support. Not really tested, badly implemented.
 include/spells.h
 server/spell_util.c
Nicolas Weeger 2007-06-09

server/{attack.c, ob_types.c, apply.c, monster.c}, include/{sproto.h,
  typesproto.h}, types/{scroll/scroll.c, legacy/apply.c, potion/potion.c,
  Makefile.am: Refactor SCROLL and POTION applying.
server/ob_methods.c, include/sproto.h: Make METHOD_UNHANDLED cause fallback to
  other callbacks.
types/skillscroll/skillscroll.c, types/spellbook/spellbook.c: Use METHOD_OK
  instead of METHOD_ERROR when the applier is not a player.
Alex Schultz 2007-06-08

server/ob_types.c, server/apply.c, types/spellbook/spellbook.c,
  types/skillscroll/skillscroll.c. types/legacy/apply.c, types/Makefile.am,
  include/typesproto.h, include/sproto.h:
  Refactor apply for skillscrolls and spellbooks.
server/daemon.c: Remove extraenous parameter for become_daemon.
include/sproto.h: Update sproto.h
Alex Schultz 2007-06-07

Documentation, no functional change.
 server/shop.c
 types/trap/rune.c
Nicolas Weeger 2007-06-07

server/rune.c, include/typesproto.h, types/trap/{trap.c, rune.c, common_trap.c},
  types/rune/rune.c, types/legacy/process.c, types/Makefile.am: Refactor some
  rune and trap code.
Alex Schultz 2007-06-06

common/button.c: document, no functional change.
Nicolas Weeger 2007-06-06

Create the 'bugs/bugtrack' directories for the unit test framework. Add test for a bug.
 configure.ac: add new directories
 doc/Developers/testplans: update
 test/Makefile.am: add directory
New files:
 test/bugs/bugtrack/check_1727944.c Makefile.am
 test/bugs/Makefile.am
Nicolas Weeger 2007-06-04

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

Fix wrong return values.
 types/book/book.c
 types/clock/clock.c
 types/power_crystal/power_crystal.c
 types/sign/sign.c
Nicolas Weeger 2007-06-03

types/shop_inventory/shop_inventory.c: fix documentation.
Nicolas Weeger 2007-06-03

Fix multipart altars not working correctly.
 types/altar/altar.c
 types/trigger_altar/trigger_altar.c
 types/trigger_pedestal/trigger_pedestal.c
Nicolas Weeger 2007-06-03

Apply patch #1638868: Ident skills cover larger area with exp courtesy Aaron Baugher.
 server/skills.c
Nicolas Weeger 2007-06-03

server/apply.c: wrong return value when handled by a plugin.
Nicolas Weeger 2007-06-03

Fix lamp-related issues.
 common/map.c: don't clear FLAG_APPLY for lamps, as it indicates on/off.
 server/apply.c: lamps don't change apply status when being 'unapplied'.
 types/lamp/lamp.c: lamps can only be (un)applied when in inventory.
Nicolas Weeger 2007-06-02

common/object.c: simplify insert_ob_in_ob when merging. Correctly update the light.
Nicolas Weeger 2007-06-02

Move ob_apply logic for LAMP objects to the ob_method system.
 include/typesproto.h
 server/apply.c ob_types.c
 types/lamp/lamp.c
 types/legacy/apply.c
 types/ChangeLog Makefile.am
Nicolas Weeger 2007-06-02

Move ob_apply logic for ARMOUR_IMPROVER objects to the ob_method system.
 include/sproto.h typesproto.h
 server/apply.c ob_types.c
 types/armour_improver
 types/armour_improver/armour_improver.c
 types/legacy/apply.c
 types/Changelog Makefile.am
Nicolas Weeger 2007-06-02

Rename MENU to SHOP_INVENTORY, better match.
Move ob_apply logic for SHOP_INVENTORY objects to the ob_method system.
 common/item.c
 include/define.h typesproto.h
 plugins/cfpython/cfpython.c
 server/shop.c ob_types.c
 types/legacy/apply.c
 types/shop_inventory/shop_inventory.c
 types/ChangeLog
 types/Makefile.am
Nicolas Weeger 2007-06-02

Fix wrong check for object applying.
Move ob_apply logic for LIGHTER objects to the ob_method system.
 include/sproto.h typesproto.h
 server/ob_types.c
 server/apply.c: use METHOD_xxx for test values.
 types/ChangeLog
 types/legacy/apply.c
 types/lighter/lighter.c: added.
Nicolas Weeger 2007-06-02

Remove obsolete oldsocket stuff.
 include/newserver.h sockproto.h sproto.h
 server/commands.c
 socket/info.c loop.c lowlevel.c
Nicolas Weeger 2007-06-02

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

Documentation, fix indentation. No functional change.
server/ban.c build_map.c
Nicolas Weeger 2007-05-29

lib/formulae: fix bug #1726561: formulae for potion_heal needs supreme potion of life.
Nicolas Weeger 2007-05-28

utils/mapper.c: add a world map of used and unused exits / blocking zones / roads.
Nicolas Weeger 2007-05-28

common/button.c: calming mood floors should calm attacking monsters.
Nicolas Weeger 2007-05-27

server/c_move.c: remove extra space.
Nicolas Weeger 2007-05-27

server/attack.c: document code, no functional change.
Nicolas Weeger 2007-05-26

server/apply.c: food/drink can't be eaten if no_pick is set.
Nicolas Weeger 2007-05-26

server/c_misc.c: use region's longname for 'mapinfo', neater than name.
Nicolas Weeger 2007-05-26

lib/messages: some more stories.
Nicolas Weeger 2007-05-26

Document code, no functional change.
 common/arch.c
 include/define.h
 server/apply.c
Nicolas Weeger 2007-05-25

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

Misc memory fixes. Remove obsolete "inventory" line.
 common/image.c links.c loader.l player.c re-cmp.c shstr.c treasure.c
Nicolas Weeger 2007-05-20

Document save_object(s) and save_map() options, add enum for doc linking.
 common/loader.l map.c
 crossedit/Edit.c
 include/map.h
 random_maps/standalone.c
 server/c_wiz.c server.c swap.c weather.c
Nicolas Weeger 2007-05-20

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

Static buffer removal, remove unused parameters, use safe string functions.
 random_maps/decor.c door.c exit.c expand2x.c floor.c monster.c random_map.c
  rproto.h style.c treasure.c wall.c
 server/server.c
Nicolas Weeger 2007-05-18

 server/weather.c: remove static buffer.
Nicolas Weeger 2007-05-17

server/server.c: player count tracking will get false if moving from a map to the same.
Nicolas Weeger 2007-05-17

Remove obsolete funcpoint.h file.
 include/funcpoint.h: removed
 include/global.h Makefile.am
 crossedit/xutil.c
 common/arch.c button.c item.c living.c logger.c los.c map.c object.c player.c time.c treasure.c utils.c
Nicolas Weeger 2007-05-17

Don't pass variables that aren't needed, remove prototype confusion. Document.
 server/weather.c
Nicolas Weeger 2007-05-17

Change weather_effect() to use mapstruct* instead of filename.
 common/map.c
 crossedit/stubs.c
 include/funcpoint.h sproto.h
 random_maps/standalone.c
 server/weather.c
 test/unit/common/stubs_common.c
 test/unit/crossedit/stubs_crossedit.c
 test/unit/random_maps/stubs_random.c
 test/unit/socket/stubs_socket.c
 utils/bwp.c mapper.c
Nicolas Weeger 2007-05-17

server/weather.c: fix mountain cave being covered and rendered invisible.
Nicolas Weeger 2007-05-17

test/unit/server/check_attack.c: some tests for hit_player.
Nicolas Weeger 2007-05-17

server/ob_types.c, types/Makefile.am, types/item_transformer/item_transformer.c:
  Remove code for the obsolete item_transformer type.
Alex Schultz 2007-05-16

Add spell merging code - this makes the server run much faster when many
spell objects are in use.  For more details, see doc/Developers/spells
---
common/init.c: And declaration/initialization of statistics values.
common/object.c: Add handling of spell_tags in object structure (free,
  copy. Add merge_spell() function.  Add call to function from
  insert_ob_in_map().  Remove was_destroyed() function - now macro.
doc/Developers/spells: Add notes on performance numbers and how spell
   merging works.
include/global.h: Add statistics structure used to hold various
  statistic related variables - added since I added a few points to collect
  data for my testing.
include/libproto.h: remove was_destroyed() declaration.
include/object.h: Make was_destroyed() a macro, moving it here.  Also add
  information related to spell tags in object structure.
server/server.c: change process_events() to be a non static function,
  so that test programs can call it/use it.
server/spell_util.c: Change ok_to_put_more() to look at the spell_tags
  in the object for match spell instances.
test/unit/server/Makefile.am: Remove double dependency of libraries - not
  needed.  Add dependency for libtypes.a.  Add comet_perf test case.
test/unit/server/comet_perf.c: New file/test, used to test both performance
  improvments as well as consistency of results.
types/spell_effect/spell_effect.c: Modify explosion() to set op->range=0
  after spell has propogated to neighboring spaces.  Call merge_spell()
  after setting range to zero.
MSW 2007-05-14

Remove now obsolete 'item_transformer' type, replaced by 'use' command.
 common/item.c
 include/define.h
 plugins/cfpython/cfpython.c
 server/apply.c
 types/item_transformer/item_transformer.c
Nicolas Weeger 2007-05-13

Remove (legacy_)apply_container that wasn't used - called only for non players,
 but starts by returning if applier is not a player.
Rename (legacy_)esrv_apply_container to (legacy_)apply_container.
 include/sproto.h
 server/apply.c player.c
 types/container/container.c
 types/legacy/apply.c
Nicolas Weeger 2007-05-13

Fix unit test pics (those are dummy ones, to be replaced someday). Add more tests to objects.
 test/templates/checkTextResult.xsl: put dummy stuff so it works (copied from logresult.xsl)
 test/templates/crossfire-logo-unit.png
 test/templates/crossfire-logo-unit-failed.png
 test/templates/crossfire-logo-unit-success.png
 test/templates/error.png
 test/templates/failure.png
 test/templates/success.png
 test/templates/txtlog.png
 test/toolkit/toolkit_common.c: use multipart-aware function
 test/unit/common/check_object.c: implement more tests
 test/unit/common/check_shstr.c: don't try to add_string(NULL) if MANY_CORES is set, abort().
 test/unit/server/Makefile.am: add libtypes.a to server.
Nicolas Weeger 2007-05-13

Remove obsolete fields.
 common/loader.l
 include/attack.h
Nicolas Weeger 2007-05-13

server/skill_util.c: fix wrong 'skills' display when no god is whoreshipped.
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

New command: 'use <item> with <item>', which enables complex item transformation.
 doc/Developers/item_transformation
 include/sproto.h
 lib/help/use
 server/c_object.c commands.c
Nicolas Weeger 2007-05-08

Remove obsolete object types.
 common/item.c
 include/define.h
 plugins/python/cfpython.c
Nicolas Weeger 2007-05-08

server/alchemy.c: Doxygen documentation, no functional change.
Nicolas Weeger 2007-05-08

utils/mapper.c: new parameter, -listunusedmaps, that'll generate a maps.unused file.
Nicolas Weeger 2007-05-07

server/plugins.c: fix plugin unloading which didn't call the closePlugin function.
server/c_wiz.c: document.
Nicolas Weeger 2007-05-07

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/init.c
 types/converter/converter.c
Nicolas Weeger 2007-05-05

types/legacy/apply.c: fix broken LIGHTER.
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

Fix misc compilation warnings. Remove duplicate function.
 include/sproto.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 plugins/cfpython/cfpython.c cfpython_object.c
 server/plugins.c
Nicolas Weeger 2007-04-30

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().
 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

plugins/common/plugin_common.c: wrong param type.
Nicolas Weeger 2007-04-29

plugins/cfanim/cfanim.c: fixed a crash occuring when ghosting a DM. Made the
   Animator work by making it listening to the time event. Fixed the bug that
   left the player invisible after having been ghosted.
   Made the paralyze option of animation files to work.
   Fixed crashes when more than an animator was running simultaneously.
Yann Chachkoff 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

Change the version string from 1.9.1 to 2.0-dev for trunk.
Alex Schultz 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

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/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/spell_effect.c, server/alchemy.c: Fix format arguments of calls to
   draw_ext_info_format().
server/disease.c: In move_symptom() fix possible buffer overflow when creating
   symptom names.
Andreas Kirschbaum 2007-04-25

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

Add discrete damage type for weapons, and probably also spells and such.
 common/loader.l object.c
 include/object.h
 server/attack.c
Nicolas Weeger 2007-04-21

server/spell_attack.c: wrong argument to ob_process, leading to infinite recursion.
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

Wrap change_exp() function. Make 'exp' property the same as others.
Also fix a crash: don't insert destroy hooks in archetype clones.
 include/sproto.h
 plugins/cfpython/cfpython_object.c
 plugins/cfpython/include/Makefile.in
 plugins/cfpython/include/cfpython_object_private.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
Nicolas Weeger 2007-04-15

 server/plugins.c: wrong case - FLAG_FRIENDLY is not the same as friendlylist :)
 plugins/cfpython/cfpython_object.c: add 'IsPet' and 'AttackMovement'
 plugins/cfpython/include/cfpython_object_private.h
Nicolas Weeger 2007-04-15

server/skills.c: EVENT_TRIGGER for magical scroll writing.
Nicolas Weeger 2007-04-15

server/cfpython.c: add AttackType, AttackTypeNumber, EventType constants.
Nicolas Weeger 2007-04-15

common/living.c: fix comments.
common/object.c: dump owner too.
server/plugins.c: check values for cfapi_map_get_object_at(). Handle FLAG_FRIENDLY
 and friendlist.
Nicolas Weeger 2007-04-15

Enable plugins to change the 'path' property of a map.
 plugins/cfpython/cfpython_map.c
 plugins/cfpython/include/cfpython_map_private.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
Nicolas Weeger 2007-04-15

Add plugin wrapper for cf_get_empty_map(). Add 'Object.GodGiven' and 'Crossfire.CreateMap'.
 plugins/cfpython/cfpython.c
 plugins/cfpython/cfpython_object.c
 plugins/cfpython/include/cfpython_object_private.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
Nicolas Weeger 2007-04-14

Remove obsolete command_build function.
 include/sproto.h
 server/c_object.c commands.c
Nicolas Weeger 2007-04-14

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

Replace plugin light change with call to map_change_light() for coherence checking.
Remove obsolete properties.
 include/sproto.h
 plugins/cfpython/cfpython_map.c
 plugins/cfpython/include/cfpython_map_private.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
Nicolas Weeger 2007-04-14

server/monster.c: make monsters use the same 'say' format than players.
Nicolas Weeger 2007-04-12

Remove '_speak' hook and related functions. '_say' exists, and is the same.
 plugins/cfanim/cfanim.c
 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
Nicolas Weeger 2007-04-12

Plugin API changes. More void* conversion removing.
 plugins/cfanim/cfanim.c
 plugins/cflogger/cflogger.c
 plugins/cfnewspaper/cfnewspaper.c
 plugins/cfpython/cfpython.c
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 plugins/template/plugin_template.c
 server/plugins.c
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

More API changes.
 server/plugins.c
 plugins/cfpython/cfpython_object.c
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
Nicolas Weeger 2007-04-09

More API changes.
 server/plugins.c
 plugins/cfanim/cfanim.c
 plugins/cfpython/cfpython_object.c
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
Nicolas Weeger 2007-04-09

More API changes.
 server/plugins.c
 plugins/cflogger/include/cflogger_proto.h: remove plugin_common functions.
 plugins/cfpython/cfpython_object.c
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
Nicolas Weeger 2007-04-08

Have create_pathname() return buf to simplify code.
 common/map.c
 include/libproto.h
Nicolas Weeger 2007-04-08

Remove unused function.
 include/sproto.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 plugins/cfpython/cfpython_object.c
 server/plugins.c
Nicolas Weeger 2007-04-08

Map-property type checking. Remove some unused void* return values.
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
Nicolas Weeger 2007-04-08

Change map plugin API to not use static vars. Remove old hooks (replaced by other means).
 include/plugin.h sproto.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 plugins/cfpython/cfpython_map.c
 plugins/cfpython/cfpython.c
 plugins/cfnewspaper/cfnewspaper.c
 server/plugins.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 Doxygen stuff, no functional changes.
 types/clock/clock.c
 types/spell_effect/spell_effect.c
 types/exit/exit.c
Nicolas Weeger 2007-04-07

Enable polymorph spell. Will need tweaking, quite certainly.
 include/sproto.h
 server/spell_util.c
 server/spell_effect.c
Nicolas Weeger 2007-04-07

Add 'Crossfire.WhatIsEvent()' to get event object.
 plugins/cfpython/cfpython_object.c: don't put a destroy hook in a destroy hook :)
 plugins/cfpython/cfpython.c: WhatIsEvent()
Nicolas Weeger 2007-04-07

Change plugin object event interface to send the event object itself, instead of
its slaying/name values.
 plugins/cfanim/include/cfanim.h
 plugins/cfanim/cfanim.c
 plugins/cfnewspaper/cfnewspaper.c
 plugins/cfpython/include/cfpython.h
 plugins/cfpython/cfpython.c
 plugins/template/include/plugin_template.h
 plugins/template/plugin_template.c
 server/plugins.c
Nicolas Weeger 2007-04-07

 server/swap.c: fix crash with map reset (parameter is map, not path).
Nicolas Weeger 2007-04-06

Add 'Object.Count' property (read-only).
 plugins/cfpython/cfpython_object.c
 plugins/cfpython/include/cfpython_object_private.h
Nicolas Weeger 2007-04-06

Fix wrong set/get key checks.
 plugins/common/plugin_common.c
 server/plugins.c
Nicolas Weeger 2007-04-06

Add 'Object.Enemy' property.
 plugins/cfpython/cfpython_object.c
 plugins/cfpython/include/cfpython_object_private.h
Nicolas Weeger 2007-04-06

types/legacy/apply.c: fix scrolls not taking direction into account.
Nicolas Weeger 2007-04-06

Remove support for obsolete 'no_pass' attribute.
--
doc/Developers/{objects,spells,map-technical}: Update documentation about
   no_pass attribute.
lib/adm/getfaces.pl: Scan for move_blocked instead of no_pass.
common/loader.l: Remove support for no_pass attribute.
crossedit/Attr.c: Remove no_pass from the list of valid attribute names.
Andreas Kirschbaum 2007-04-05

types/exit/exit.c: Fix bad definition of exit_type_apply.
--
types/{legacy/apply.c, clock/clock.c}, server/ob_types.c: Move apply logic for
  clocks out of legacy area in the ob_method system.
--
types/{legacy/apply.c, exit/exit.c}: Move apply logic for exits out of legacy
  area in the ob_method system.
Alex Schultz 2007-04-05

Tweak harvesting skill per Lalo's suggestions. If a living object is harvested,
 goes to map instead of in the inventory. Also make the key/value checks more meaningful.
 server/c_misc.c
Nicolas Weeger 2007-04-04

server/{spell_attack.c, spell_util.c, spell_effect.c}, include/{libproto.h,
  sproto.h}, types/{spell_effect/spell_effect.c, legacy/process.c}: Move
  ob_process logic for SPELL_EFFECT objects to the ob_method system.
--
plugins/cfpython/cfpython.c: Remove LIGHTNING from cfpython type constants.
--
types/legacy/process.c, common/item.c, include/define.h, server/spell_util.c:
  Remove old LIGHTNING(12) type.
Alex Schultz 2007-04-03

Remove obsolete Flying/CanPassThru properties.
 plugins/cfpython/include/cfpython_object_private.h
 plugins/cfpython/cfpython_object.c
Nicolas Weeger 2007-04-03

Clean some old stuff, unused functions, ...
 common/arch.c
 common/holy.c
 common/image.c
 common/item.c
 common/loader.l: remove "empty" fields. Those are legacy, and should be removed in maps/archs.
 common/los.c
 common/porting.c
 common/quest.c
 common/treasure.c
 include/define.h
 include/map.h
 include/spelllist.h
 server/apply.c
 server/attack.c
 server/c_object.c
 server/disease.c
 server/gods.c: remove unused follower_remove_similar_item() and misc functions.
 server/login.c: remove "old player file removing" code, shouldn't be needed anymore.
 server/monster.c
 server/player.c
 server/resurrection.c
 server/server.c
 server/skills.c
 server/spell_attack.c
 server/spell_effect.c
 server/spell_util.c
 server/weather.c
 socket/loop.c
 socket/lowlevel.c
 socket/request.c
Nicolas Weeger 2007-04-03

New skill: "harvesting", get something from some place - example: fishing.
 include/skills.h sproto.h
 server/c_misc.c skill_util.c
Nicolas Weeger 2007-04-03

types/{example.c, README}: Merge example.c into README.
Alex Schultz 2007-04-03

Remove obsolete "Directionxxx" and "CostFlagxxx", replaced by constants.
 plugins/cfpython/cfpython.c
Nicolas Weeger 2007-04-02

Add 'MessageFlag' constant, holding the NDI_xxx values, to Python.
 plugins/cfpython/cfpython.c
Nicolas Weeger 2007-04-02

configure.ac: Add AM_PROG_CC_C_O macro so it properly handles the types
   directory.
MSW 2007-04-01

Document random map files (except test.c and some .h).
 plugins/common/include/plugin_common.h: fix parameter name.
 plugins/common/plugin_common.c: fix parameter name.
 random_maps/*.c
 random_maps/random_maps.h: replace #define by enum to be linkable for Doxygen.
Nicolas Weeger 2007-04-01

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 Weeger 2007-03-31

Fix wrong type/missing value. Fix some comments.
 plugins/common/plugin_common.c
 server/plugins.c
Nicolas Weeger 2007-03-31

Change partially map plugin API. Add cf_map_has_been_loaded() to plugins.
 plugins/cfanim/cfanim.c
 plugins/cfpython/cfpython.c
 plugins/cfpython/cfpython_map.c
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
Nicolas Weeger 2007-03-31

crossedit/Attr.c: Remove obsolete 'flying' attribute.
Andreas Kirschbaum 2007-03-26

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

New plugin: cfnewspaper.
As its name implies, it will (in the future) generate an ingame newspaper.
Currently, it will only list player and monster deaths for last ingame day.
It's still very basic, and hopefully will be improved :)
Note that it requires the database generated by cflogger.
 configure configure.ac
 plugins/Makefile.[am|in]
 plugins/cfnewspaper/include/cfnewspaper.h cfnewspaper_proto.h
 plugins/cfnewspaper/cfnewspaper.c Makefile.[am|in]
Nicolas Weeger 2007-03-25

Fix cflogger.
 plugins/cflogger/cflogger.c
---
Add missing directories for cflogger plugin.
 plugins/Makefile.[am|in]
---
Change misc functions plugin API.
 server/plugins.c
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 plugins/cfanim/cfanim.c
 plugins/cfpython/cfpython.c
 plugins/cfpython/cfpython_object.c
 plugins/template/plugin_template.c
---
 server/apply.c: doc update.
 include/global.h: doc update.
---
Remove common plugin functions from proto.
 plugins/cfanim/Makefile.[am|in]
 plugins/cfanim/include/cfanim_proto.h
---
 common/object.c: add 'inv' field for object dump.
Nicolas Weeger 2007-03-25

doc/Developers/objects: Mark 'flying' attribute as obsolete.
common/loader.l: In check_loaded_object() remove code to support legacy
 attribute 'flying'.
Andreas Kirschbaum 2007-03-25

common/loader.l: In check_loaded_object() remove code to update legacy
 playermover objects after map loading.
Andreas Kirschbaum 2007-03-25

common/loader.l: In check_loaded_object() remove code to update legacy
 monster objects after map loading.
Andreas Kirschbaum 2007-03-24

server/c_wiz.c: fix missing treasure generation for create command in some cases.
Nicolas Weeger 2007-03-24

plugins/cfpython/cfpython_object.c,
plugins/cfpython/include/cfpython_object_private.h, include/define.h,
common/exp.c, common/loader.l: Remove FLAG_PICK_UP since it was not actually
 used, and since it was saved under "pick_up" which clashes with another
 attribute.
Andreas Kirschbaum 2007-03-23

common/shstr.c, include/libproto.h: Use the new sstring typedef in shstr.c
Alex Schultz 2007-03-22

Change party, region, friendlylist plugin API.
 include/sproto.h
 plugins/cfanim/include/cfanim_proto.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
Nicolas Weeger 2007-03-22

Change archetype plugin API.
 plugins/cfanim/include/cfanim_proto.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
Nicolas Weeger 2007-03-21

server/egoitem.c: Removed blank file.
Alex Schultz 2007-03-21

Changes to plugin API: start to use a (type)* parameter instead of returning a value
 cast to void*. This removes static variables.
 Also add Object.PermExp and Object.ExpMul to Python.
 include/plugin.h: add CFAPI_MOVETYPE type.
 plugins/common/include/plugin_common.h: add many wrappers.
 plugins/common/plugin_common.c: wrappers, new calling syntax.
 plugins/cfpython/cfpython_object.c: clean calls to common plugin.
 plugins/cfpython/include/cfpython_object_private.h: some more properties.
 server/plugins.c: change cfapi_object_get_property.
---
include/global.h: new type, 'sstring', to be used for shared strings.
---
common/loader.l: fix crash when object is missing archetype.
Nicolas Weeger 2007-03-21

server/monster.c: documentation and indent, no functional change.
Nicolas Weeger 2007-03-18

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.
---
 server/spell_util.c: ignore sp/gr/time cost for DM casting spells.
---
 common/object.c: when inserting an object, need to fix 'map' too, if not
 set later, will crash.
---
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
---
plugins/template/create_plugin.sh: plugin generation script.
plugins/template/include/plugin_template.h: remove unused file, fix comment.
---
Random map functions for plugins.
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
---
Give access to random map generation to plugins.
 include/sproto.h
 server/plugins.c
---
Allow one to give a prebuilt layout (.#<> and such) for random map generation.
 random_maps/random_map.c rproto.h standalone.c
 server/server.c
---
plugins/template/plugin_template.c: use cf_log instead of printf, fix missing
 CF_PLUGIN (Win32 specific).
---
server/c_object.c: missing ;, missing buffer reinitialisation.
server/login.c: wrong function call.
---
lib/races: remove obsolete player races.
lib/treasures: remove lists put into individual .trs files.
Nicolas Weeger 2007-03-17

types/Makefile.am: Build object files in their own directories instead of in types/
---
server/login.c: Make error messages for invalid usernames more useful.
---
server/c_object.c: Change examine to use "Those are" instead of "That is" for
   more than one object.
Alex Schultz 2007-03-16

Apply patch #1660388: Code-cleanup: () -> (void) courtesy Stefan Huehner.
 server/timers.c weather.c ob_methods.c
 test/unit/common/stubs_common.c
 test/unit/crossedit/stubs_crossedit.c
 test/unit/random_maps/stubs_random.c
 test/unit/socket/stubs_socket.c
 test/toolkit/toolkit_common.c
 common/init.c treasure.c
 crossedit/stubs.c
 types/altar/altar.c
 types/arrow/arrow.c
 types/book/book.c
 types/button/button.c
 types/check_inv/check_inv.c
 types/container/container.c
 types/converter/converter.c
 types/deep_swamp/deep_swamp.c
 types/director/director.c
 types/exit/exit.c
 types/hole/hole.c
 types/identify_altar/identify_altar.c
 types/item_transformer/item_transformer.c
 types/pedestal/pedestal.c
 types/player_mover/player_mover.c
 types/power_crystal/power_crystal.c
 types/rune/rune.c
 types/shop_mat/shop_mat.c
 types/sign/sign.c
 types/spell_effect/spell_effect.c
 types/spinner/spinner.c
 types/thrown_object/thrown_object.c
 types/transport/transport.c
 types/trap/trap.c
 types/trapdoor/trapdoor.c
 types/trigger/trigger.c
 types/trigger_altar/trigger_altar.c
 types/trigger_button/trigger_button.c
 types/trigger_pedestal/trigger_pedestal.c
Ryo 2007-03-13

Win32 compilation fixes.
 common/shstr.c: missing Windows include.
 plugins/cfanim/include/cfanim_proto.h: missing CF_PLUGIN export.
 plugins/cfpython/include/cfpython_proto.h
 plugins/cfpython/include/cfpython.h: DEBUG fix (Python doesn't provide the
  good debug library).
plugins/common/hashtable.c: missing Windows include.
---
utils/mapper.c: new "warnnnopath" option to display exits without slaying field.
Ryo 2007-03-08

Fix bug #1673713: event_attack in (sword etc) weapon doesn't work.
 server/attack.c: fix EVENT_ATTACK weirdness.
---
Fix compilation warnings, mostly missing #include.
 common/exp.c holy.c item.c living.c map.c porting.c readable.c recipe.c shstr.c
  treasure.c utils.c: missing #includes.
 common/object.c: don't declare variables in the middle of code. Missing #include.
 include/libproto.h: missing find_multi_free_spot_within_radius.
 include/sockproto.h: missing send_exp_table.
 lib/races: fix dwarf player archetype (was using old one).
 plugins/cfpython/cfpython.c: unused variable.
 random_maps/maze_gen.c random_map.c room_gen_onion.c square_spiral.c: missing #include.
 server/plugins.c: unused variable.
 server/ob_methods.c: missing include.
 server/ob_types.c: missing include.
 server/time.c: unused variable.
 socket/image.c: use right type for faceset.
 types/*.c: add missing #include <sproto.h>.
 types/legacy/legacy_describe.c: unused variable.
---
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

Some documentation, no functional change.
 include/define.h face.h gods.h living.h
Ryo 2007-03-05

Implement feature request #1560396: flag to set fixed buying/selling prices.
Three keys are used, "price_adjustment", "price_adjustment_sell" and "price_adjustment_buy".
price_adjustment overrides the 2 other keys. Value should be numeric/decimal, anything that
atof() will recognize as a float.
 server/shop.c
Ryo 2007-03-05

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 feature request #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

Fix some potential / real crashes under Windows.
 common/readable.c: wrong field cleared. Set to NULL after clear. Wrong buffer size.
---
 socket/info.c: old_format is sometimes NULL, use new_format.
---
Fix a potential crash related to map swapping: swap_map can delete map.
 include/sproto.h
 server/c_wiz.c swap.c
Ryo 2007-03-03

utils/mapper.c: display map name before loading it, makes it easier to debug maps :)
Ryo 2007-03-02

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

include/typesproto.h, types/*/*.c: Make functions static where possible and
   reasonable.
Alex Schultz 2007-02-24

server/player.c: wrong call order.
plugins/cfpython/cfpython.c: fix crash when Python and server are compiled with
 different versions of MS's DLLs.
Ryo 2007-02-24

Fix some comments from // to /* */
 common/map.c
 include/ob_types.h
 server/c_wiz.c gods.c pets.c server.c
----
Some Win32 compilation fixes.
 server/apply.c player.c plugins.c
Ryo 2007-02-23

Rebuild prototypes.
  include/{sproto.h, typesproto.h}
---
Move arrow and thrown object code into types/
  server/time.c, types/{arrow/arrow.c, thrown_object/thrown_object.c,
  common/projectiles.c, legacy/process.c}
---
Change move_arrow calls to ob_process.
  server/{player.c, skills.c}
Alex Schultz 2007-02-19

Fix uninitialized variables.
 server/weather.c: wrong temperature initialisation.
 socket/init.c: init newsocket->want_pickup
Ryo 2007-02-18

Replace "type_to_archetype" by "get_archetype_by_type_subtype".
 common/arch.c map.c
 include/libproto.h
 test/unit/common/check_arch.c
Ryo 2007-02-18

Whitespace formatting (indents and tab removal) and long-line cleanup
 server/c_new.c
 socket/request.c
Aaron Baugher 2007-02-18

Implement feature request 1025952: GTK Client - Save Pickup options.
New setup command, 'want_pickup', which makes server send 'pickup xxx' when
 player joins.
Modified files;
 doc/Developers/protocol
 include/newserver.h sockproto.h
 server/login.c
 socket/request.c
Ryo 2007-02-18

Make containers with an other_arch face display it when opened.
 server/apply.c
Aaron Baugher 2007-02-15

New server settings: allow_denied_spells_writing, for inscription.
 common/init.c
 include/global.h
 server/init.c skills.c
Ryo 2007-02-15

Whitespace and long-line cleanup
 socket/item.c
 socket/image.c
Aaron Baugher 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

Remove static buffers from path_combine and path_combine_and_normalize.
 common/path.c map.c
 include/libproto.h path.h
 server/server.c
 utils/mapper.c
---
 common/map.c: add buffer's size to prevent overflows.
Ryo 2007-02-14

Invalidate player's view if teleporting. Call update_ob_speed when changing speed.
 server/plugins.c
Ryo 2007-02-12

Remove unused field object::refcount from unit testing
    test/unit/check_object.c
gros 2007-02-12

lib/smooth updated in conjunction with arch update (revision 5421).
Kevin Bulgrien 2007-02-11

Remove unused field object::refcount.
 common/object.c
 include/object.c plugins.h
 server/plugins.c
Fix speed logic, implementing feature request #1624544: Armour speed limit
 common/living.c
Fix missing call, resulting in corrupted output.
 server/c_object.c
Fix mishandling of weapon/shield/armour restriction. Fix crash with NULL value.
 server/gods.c
Ryo 2007-02-11

Formatting clean-up:
 server/apply.c: fixed indentation, untabified, broke long lines
Aaron Baugher 2007-02-11


Make armour handling coherent between gods, monsters and such.
Cloaks and bracers are not armour.
 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-11

Remove last static buffers, use safe string functions.
 common/readable.c
 include/libproto.h
---
Remove obsolete long_desc(), replaced by ob_describe(), get rid of static buffer.
 include/sproto.h
 server/c_object.c ob_methods.c skills.c spell_effect.c
 types/book/book.c
 types/identify_altar/identify_altar.c
---
Fix compilation warnings.
 include/global.h: remove duplicate DELETE_STRING (FREE_AND_CLEAR_STR), cast to void*.
 plugins/cfpython/include/cfpython.h: Python defines HAVE_GETTIMEOFDAY, but we do too.
 plugins/cfpython/cfpython.c: explicit cast to wanted type.
 plugins/common/hashtable.c: add missing include for malloc().
---
Remove static buffer for strerror_local().
 common/anim.c image.c map.c porting.c
 include/libproto.h
 server/c_misc.c deamon.c hiscore.c init.c login.c resurrection.c
 socket/init.c loop.c lowlevel.c
---
Remove some static variables. Return values from server.
 plugins/cfpython/cfpython_object.c
 plugins/cfanim/include/cfanim_proto.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
---
Update cf_object_[gs]et key to use parameter instead of void* return.
 include/plugin.h
 plugins/cfpython/cfpython_object.c
 plugins/cfanim/include/cfanim_proto.h
 plugins/common/include/plugin_common.h
 plugins/common/plugin_common.c
 server/plugins.c
---
Remove static variables from plugin API, use parameters instead.
 plugins/common/plugin_common.c
 server/plugins.c
Ryo 2007-10-11

Remove "sstable" command for players, which is called "ssdumptable" for DMs.
 include/sproto.h
 server/commands.c c_mist.c
---
Remove static buffer fur ss_dump_table. Use SS_ flags. Use LOG instead of direct fprintf.
 common/shstr.c
 include/libproto.h
 server/c_misc.c
---
include/global.h: errmsg isn't used anymore.
---
Remove errmsg use for ss_dump_statistics.
 common/shstr.c
 include/libproto.h
 server/c_misc.c
---
Fix get_split_ob not returning failure message (was through errmsg).
 common/object.c
 include/libproto.h
 server/apply.c c_object.c player.c plugins.c skills.c spell_effect.c
Ryo 2007-02-11

Remove errmsg use for dump_object and dump_arch. Merge dump_object and dump_object2.
 common/anim.c arch.c object.c
 crossedit/Attr.c
 include/libproto.h
 server/c_misc.c c_wiz.c server.c time.c
 test/unit/common/check_object.c
Ryo 2007-02-11

server/weather.c: Fix possible buffer overflows.
server/gods.c: Use correct format specifier in sprintf().
server/spell_util.c: Fix return statements with no value in non-void
   function.
server/time.c, include/libproto.h: Make log_time() static.
server/apply.c: Fix return statements with no value in non-void function.
common/living.c: Fix incorrect "extern" definition for "levels".
server/c_range.c: Fix possible buffer overflows.
server/server.c: Fix possible buffer overflows.
common/map.c: Fix possible buffer overflows; Reduce memory used by
   load_map_header().
common/readable: Improve performance by minimizing string copies.
server/c_object.c: Fix possible buffer overflows.
common/item.c: Fix possible buffer overflows; improve performance by
   minimizing string copies; fix bugs because of missing braces; make sure
   all strings are \0-terminated.
Andreas Kirschbaum 2007-02-10

Misc LOG fixes (mostly add missing newline), no functional change.
 common/anim.c arch.c holy.c image.c init.c [also fix missing init value] porting.c readable.c
  recipe.c region.c treasure.c
 server/init.c weather.c
Ryo 2007-02-10

Implement feature request #1653770: Sockpuppeting fix (no exp when perm exp is hit).
Implement feature request #1560385: Players killing other players should get no exp.
Two new settings are added, pk_max_experience and pk_max_experience_percent. Check
 settings file to see how they work.
Also, experience gained for killing a player never exceed experience that player can lose
 considering permanent experience.
Modified files:
 common/init.c
 include/global.h
 lib/settings
 server/attack.c init.c
---
 common/porting.c: add missing variable type.
Ryo 2007-02-10

Use const char* instead of char*, use thread-safe strerror_r, fix potential memory leak.
 common/porting.c
 include/libproto.h
---
Remove static buffer from get_string_move_type().
 common/loader.l
---
 common/object.c: don't use global errmsg variable for errors, just LOG() them.
---
Remove static buffer from create_template_pathname().
 common/map.c
 include/libproto.h
 server/server.c
---
Remove static buffer from create_pathname().
 common/map.c
 include/libproto.h
 server/plugins.c server.c
 utils/mapper.c
---
Remove static buffer from create_overlay_pathname().
 common/map.c
 include/libproto.h
 server/c_wiz.c plugins.c
---
Remove static buffer from create_items_path(), and play it safe with length.
 common/map.c
---
Remove static buffer for query_base_name().
 common/button.c item.c object.c
 include/libproto.h
 server/alchemy.c apply.c c_objects.c c_range.c player.c plugins.c shop.c
 socket/info.c item.c
 types/item_transformer/item_transformer.c
---
Remove static buffer for get_ob_diff().
 common/object.c loader.l
 include/libproto.h
 server/c_wiz.c
Ryo 2007-02-10

No functional changes, just compilation warnings / Doxygen stuff.
---
Add missing includes.
 types/book/book.c
 types/identify_altar/identify_altar.c (also fix missing argument)
 types/item_transformer/item_transformer.c
 types/transport/transport.c
---
Add newline at end.
 types/common/common_apply.c
 types/trigger/trigger.c
---
Add Doxygen path info to distinguish files.
 common/button.c
 random_maps/exit.c
 server/alchemy.c apply.c rune.c spell_effect.c
 types/button/button.c
 types/exit/exit.c
 types/rune/rune.c
 types/spell_effect/spell_effect.c
 utils/bwp.c
Ryo 2007-02-09

Remove static buffer from ob_describe(). Make op some parameter const.
 include/ob_methods.h sproto.h typesproto.h
 server/c_object.c ob_methods.c
 types/common/describe.c
 types/legacy/megacy_describe.c
Ryo 2007-02-09

Doxyfile: Adjust Doxyfile options to create more information in the
  documentation.
Alex Schultz 2007-02-09

Remove static buffer from query_short_name().
 common/item.c object.c
 include/libproto.h
 server/gods.c player.c plugins.c skills.c spell_effect.c
Ryo 2007-02-09

common/item.c: fix documentation.
--
Remove some more static buffers.
 common/item.c info.c readable.c
 include/libproto.h
 server/plugins.c spell_effect.c
 types/common/describe.c
Ryo 2007-02-09

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

Remove static buffer for query_name().
 common/item.c
 include/libproto.h
 server/apply.c attack.c build_map.c c_object.c c_range.c c_wiz.c gods.c monster.c move.c player.c plugins.c
  server.c shop.c skill_util.c spell_attack.c spell_util.c
 common/living.c object.c readable.c
 socket/item.c
 types/common/describe.c
 types/converter/converter.c
 types/example.c
 types/item_transformer/item_transformer.c
 types/legacy/apply.c legacy_describe.c
 types/transport/transport.c
Ryo 2007-02-08

More generator enhancements:

Added a generator_max field to generators.  If this field is set, the
generator will only create this many objects on the map at one time.
It sets a generator_code key/value in itself and any objects it creates,
so it can identify them when counting.  This code is taken from the new
generator_name field if it exists, or the "name" field otherwise.
 server/time.c: added the scan for child objects to generate_monster,
    and setting the code to child objects in the generate_monster_*
    routines.
Aaron Baugher 2007-02-08

common/button.c: fix memory leak if map is NULL.
---
Some static buffer removal, replaced by buffer + size parameters.
 common/item.c: use const char* for constants. Remove some static buffers.
  Remove unused function.
 common/holy.c readable.c: adjust to functions.
 include/libproto.h: new function prototypes.
 server/apply.c c_object.c: changes to function calls.
Ryo 2007-02-08


Enhancing generator ability:
Add a "generator_radius" field to generators; objects are created randomly
within this radius of the generator.
 server/time.c: changed calls to find free spot
 common/object.c: added function find_multi_free_spot_within_radius,
    which is called from server/time.c
Aaron Baugher 2007-02-08


Makefile.am, Makefile.in (and Makefiles in subdirs): Put types in list of
   SUBDIRS before server so that compilation happens in correct order -
   server area requires types to be up to date.
MSW 2007-02-07

Make players change place with pets from party members instead of pushing
them away.
---
server/player.c: In move_player_attack() check for pets from party members
   in addition to own pets.
server/move.c: In push_ob() check for pets from party members in addition
   to own pets.
Andreas Kirschbaum 2007-02-07

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

utils/mapper.c: new command-line option "-addmap=<map>", to add a map to process.
 Now also take into account player_changer a an exit. Flag "rowmaps" to generate
 maps with random tiles instead of items.
Ryo 2007-02-04

plugins/cfpython/cfpython_object.c: Fix missing braces.
Alex Schultz 2007-02-03

plugins/cflogger/cflogger.c: Add missing return value in store_time().
plugins/cflogger/cflogger.c: Add missing call to va_end().
Andreas Kirschbaum 2007-01-29

utils/bwp.c: fix sort (sort by object's name). Fix memory leaks.
Ryo 2007-01-28

Implement feature request #822087: Apply below.
'apply' now has a new flag, '-b', that specified an item on the ground.
 lib/help/apply: updated.
 server/c_object.c: look for item on ground/in container.
Ryo 2007-01-21

Refactoring of move_apply -> move_on for several object classes.
Removed obsolete server/swamp.c file.
See types/ChangeLog for details.
    server/apply.c
    server/swamp.c
    server/time.c
Yann Chachkoff 2007-01-21

Some changes to the mapper.
 utils/mapper.c: some code cleaning. New tags.
 utils/templates/map.template map_with_exit.template: use new tags, legend.
Ryo 2007-01-21

server/spell_util.c: Consider all stats when swapping random stats due to
   a failed spell.
Andreas Kirschbaum 2007-01-21

Implement feature request #656195: More effects of confusion.
Three effects can happen:
 * one item is transformed temporarily to flowers
 * 2 random statistics are temporarily swapped
 * a random spell is cast.
A new force type is introduced, FORCE_TRANSFORMED_ITEM, which does some
magic when it expires.
Modified files:
 include/spells.h
 server/spell_util.c time.c
Ryo 2007-01-20

Partially revert patch from 2006-31-12: girdles are not armours for wearing restrictions.
 server/apply.c player.c
Ryo 2007-01-20

configure.ac: add --disable-logger flag to not build cflogger plugin, courtesy gros.
----
Implement partially feature request #656194: It should be possible to curse and bless.
Added 2 new spells, 'curse item' and 'bless item', that work on marked item.
Also changed the spell name matching logic, to always return if a perfect match is found.
 include/spells.h sproto.h
 server/spell_effect.c spell_util.c
Ryo 2007-01-15

types/{dummy.c, Makefile.in, Makefile.am}, include/typesproto.h: Remove dummy
   file now that it's no longer necessary
Alex Schultz 2007-01-14

Implement feature request #817585: altars don't take group of same logical item.
Checking logic is now modified to take into account other items apart last dropped item.
This is mainly done by changing check_altar_sacrifice().
 common/button.c: improve check_altar_sacrifice().
 include/libproto.h: update prototype for check_altar_sacrifice().
 server/apply.c: don't remove items, we don't care what we should remove.

----
Implement feature request #778211: allow avatars and holy servants to be random.
Changed determine_holy_arch to return one random item instead of first matching one.
 server/gods.c
----
Rename 'new_save_map' to 'save_map'.
 common/map.c
 crossedit/Edit.c
 include/libproto.h
 random_maps/standalone.c
 server/c_wiz.c server.c swap.c weather.c
----
 common/map.c: fix memory leak.
 server/skill_util.c: give a dummy name if skill doesn't have it. Avoids crashing later on :)
Ryo 2007-01-14

Apply long standing patch #1382884: change to player wraith race courtesy Anton Oussik.
 lib/attackmess: new attack messages for feeding.
 lib/treasures: give feeding skill to wraith.
 server/attack.c: feeding skill, life stealing.
 server/skill_util.c: new skill.
 server/player.c: wraiths don't regenerate hp.
 server/apply.c: wraiths don't get anything by eating food.
 include/libproto.h: new functions.
 include/attack.h: new attack message type.
 include/skills.h: new skill.
 common/player.c: wraith-related functions.
Ryo 2007-01-14

Apply patch #1631685: Monster flag set on all monster parts courtesy Aaron Baugher.
 common/arch.c
Ryo 2007-01-14

Object types refactoring: TRIGGER.
    See types ChangeLog for details.
----
Object types refactoring: TRANSPORT, BOOK, POWER_CRYSTAL, BOOK.
    See types ChangeLog for details.
Modified files:
    include/ob_methods.h include/ob_types.h
    server/ob_methods.c server/ob_types.c
    server/apply.c server/c_object.c server/time.c
Added files:
    types/transport/transport.c types/power_crystal/power_crystal.c
    types/book/book.c types/item_transformer/item_transformer.c
    types/legacy/apply.c types/legacy/legacy_describe.c types/legacy/process.c
    types/common/describe.c
Removed files:
    server/egoitem.c
Yann Chachkoff 2007-01-14

New util: mapper.c, which generates HTML pages to browse maps.
See the file itself for information and such.
----
 Moved structures outside a .c so other programs can access it.
 include/image.h: new file, client-side image structures.
 socket/image.c: moved data to include.
----
 utils/mapper.c: new program, map browser generator.
 utils/templates/*.template: template files for mapper.
Ryo 2007-01-13

Some Win32 fixes: binmode for Perl, binary mode for opened files.
 common/porting.c
 lib/adm/collect_images.pl
 lib/collect.pl.in
 socket/item.c: variables should be declared at function start.
Ryo 2007-01-13

server/gods.c: Clean up follower_remove_given_items()
Alex Schultz 2007-01-10

Win32 compilation fixes: variables should be declared at function start.
 socket/item.c
 server/gods.c resurrection.c
Ryo 2007-01-09

New plugin: 'cflogger', which logs things to a sqlite3 database.
Warning: the database size may grow a lot, you'll have to check manually.
Logged events:
 * players join/leave/creation/quit
 * map load/unload/reset/enter/leave
 * kills, whenever a player is concerned
 * ingame/real time links
Note that the plugin is not yet part of the autobuild process.

Added files:
 cflogger/include/cflogger.h cflogger_proto.h Makefile.[am|in]
 cflogger/cflogger.c Makefile.[am|in]
Ryo 2007-01-07

common/loader.l: Remove call to yylex_destroy() - at least on my linux
   box, I get an unresolved symbol during link time (maybe different
   versions of flex?)
MSW 2007-01-04

Make some commands DM only, and not visible to players.
 server/commands.c
Ryo 2007-01-04

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

include/book.h: Doxygenify header file and add licence. No functional changes.
Alex Schultz 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

Massive doxygenation of code. Reformat indentation. No functional change.
 include/artifact.h
Ryo 2007-01-02

Implement feature request #1555532: Disallow enchanting armour/weapons while wearing/wielding it.
Weapon/armour will be unequipped (unless cursed) if that would mean the player can't wear it anymore.
 server/apply.c
Ryo 2007-01-02

Fixed some mistakes in the alchemical formulae
 lib/formulae
Yann Chachkoff 2007-01-02

Removed unused defines, documentation fixes, no functional change.
 common/treasure.c: add some links for GT_xxx.
 include/treasure.h: add anchor 'GT_xxx'.
Ryo 2007-01-01

server/player.c: fix wrong message displayed. Make sp test coherent with draining for rod/horn.
Ryo 2007-01-01

Implement feature request #656191: Add blessings and curses to scrolls.
----
New flags: 'blessed', 'known_blessed'.
 common/item.c
 common/loader.l: new flag, and fix mistake on array size.
 include/define.h
----
Randomly set blessed/cursed on scrolls and spellbooks.
 common/treasure.c
----
Blessed/cursed/damned effect for scrolls and books.
 server/apply.c: effects, and also there should be a failure even if settings is no.
----
 server/spell_effect.c: add a check to be done.
Ryo 2007-01-01

Implement feature request #1536177: "Orc Knuckle" requires no dice.
If there is an "dice" archetype in server arches, this command will
require the player to have at least 4 dice to play. There is a 5%
chance to lose one dice at each play. Dice can be made through alchemy
(finding the recipe is left as an exercise to the player).
Note that the check is on the name 'dice', so you can have multiple
archetypes for that name, they'll be all taken into account.
 server/c_chat.c: change command.
 lib/formulae: add recipe.
----
 ChangeLog: fix date info (it's not american, but ISO)
Ryo 2007-01-01

Corrected garbage being displayed when examining an object, caused by an uninitialized buffer.
 server/c_object.c
Yann Chachkoff 2007-01-01

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

Some memory fixes.
 common/arch.c: split code to make free_arch().
 common/exp.c: free levels memory.
 common/init.c: add free_globals().
 common/loader.l: add free_loader() to clean allocated memory.
 common/object.c: call free_arch() instead of free() to free temporary archetype.
 common/treasure.c: clear correctly the artifacts.
 include/libproto.h: new functions.
 include/sproto.h: new functions.
 server/init.c: call cleanup() instead of exit() when doing dumps. Free some memory.
 server/server.c: call some free_xxx() stuff.
 server/weather.c: add free_weather().
----
Use const char* instead of char*
 common/apply.c gods.c
Ryo 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

Some memory fixes.
 common/arch.c: arch should free after object, since free_object2() checks the archetype.
 common/loader.l: when doing line mode (from artifact loading), we should clear the buffer,
  else it is lost, resulting in 16kb memory leak (not nice!).
 common/object.c: warning about archetype needed for free_object2().
Ryo 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

Another Win32 compilation fix.
 common/player.c: variable definition is a function start.
Ryo 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

Fix for Win32 compilation.
plugins/common/hashtable.c: missing #include for Windows.
Ryo 2009-12-29

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

Massive doxygenation of code. Reformat indentation. No functional change.
 common/object.c path.c player.c porting.c quest.c readable.c recipe.c re-cmp.c
  region.c shstr.c time.c treasure.c utils.c
 doc/Developers/programming_guide: add rule for function comments.
Ryo 2006-12-29

Fix previous broken commit.
 common/arch.c
Massive doxygenation of code. Reformat indentation. No functional change.
 common/friend.c glue.c holy.c image.c info.c init.c item.c links.c living.c loader.l
  logger.c los.c map.c
Ryo 2006-12-28

Massive doxygenation of code. Reformat indentation. No functional change.
 Doxyfile: extract also static and private stuff.
 common/anim.c arch.c button.c exp.c
Ryo 2006-12-27

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

Implemented FR #1539153: Blessed weapons should have an owner.
Added option personalized_blessings to activate that feature.
 server/apply.c
 server/gods.c
 server/init.c
 include/global.h
Yann Chachkoff 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

types/example.c: Add quick example file.
Alex Schultz 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

server/c_chat.c: In command_tell() do not crash when extendedTextInfos are
    enabled.
Andreas Kirschbaum 2006-12-22

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

server/shop.c: Remove unused switch statement.
Alex Schultz 2006-12-17

No change, just remove unused code in #if 0
 server/commands.c
 server/shop.c
Ryo 2006-12-17

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

Fix indentation and comments, cosmetic changes only.
 common/living.c
 server/pets.c:
Ryo 2006-11-26

Fix bug #1599307:
server/shop.c: In pay_from_container() handle non-standard MONEY objects when
   buying items.
Andreas Kirschbaum 2006-11-19

socket/info.c: In draw_ext_info() do not crash for out of memory.
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

Documentation tweaks.
 include/object.h: doxygen-like comments.
 Doxyfile: created with some defaults.
Ryo 2006-11-18

Rename fix_player to fix_object, since it works for other items.
 common/item.c living.c object.c
 include/define.h libproto.h skills.h
 server/apply.c attack.c c_misc.c c_object.c c_wiz.c disease.c gods.c
  login.c player.c plugins.c shop.c skills.c skill_util.c spell_attack.c
  spell_effect.c time.c
Ryo 2006-11-18


Fix bug #598649: Building apartments use multiple materials per tile
server/build_map.c: don't redo same floor.
----
socket/info.c: fix spurious logic, fix indent.
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

Update code so everything uses draw_ext_info(), and remove new_draw_info().
For the most part, everything is just a simple update of function name/
parameters.  In some places, there was some other cleanup, like
inconsistent whitespace being made consistent.  A few places were
changed to use the varargs version, so no longer needed a local snprintf.
Many places where used to remove the hard formatting (combine several
calls into one so that the client can do the word wrap/formatting, since
assuming the width of the client never was really accurate)
Dead code was removed, rather than being updated.
For old clients, it will continue to use the old protocol commands, so
this doesn't break client compatibility in any way.
--
Files affected:
common/arch.c, common/button.c, common/living.c, common/los.c. common/map.c,
common/quest.cm common/time.c, common/treasure.c
crossedit/stubs.c
random_maps/standalone.c
include/funcpoint.h, include/newclient.h, include/sockproto.h
server/alchemy.c, server/apply.c, server/attack.c, server/build_map.c,
server/c_chat.c, server/c_wiz.c, server/c_new.c, server/c_object.c,
server/c_range.c, server/c_party.c, server/commands.c, server/disease.c,
server/gods.c, server/hiscore.c, server/login.c, server/monster.c,
server/move.c, server/pets.c, server/player.c, server/plugins.c
server/resurrection.c, server/rune.c, server/server.c, server/skill_util.c,
server/skills.c, server/spell_attack.c, server/spell_effect.c,
server/spell_util.c, server/swamp.c, server/time.c
socket/info.c, socket/item.c, socket/request.c
test/unit/common/stubs_common.c
test/unit/crossedit/stubs_crossedit.c, test/unit/random_maps/stubs_random.c
--
MSW 2006-10-28

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

doc/Makefile.am, server/Makefile.am, utils/crossloop.in, utils/crossloop.pl.in,
   utils/crossloop.tmpl.in, utils/crossloop.web.in, utils/crossloop.pl.tmpl.in,
   doc/crossfire-server.man: Rename crossfire binary to crossfire-server. Make
   changes to account for that in crossloop and the man page.
Alex Schultz 2006-09-20

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.
Raphaël 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.
Raphaël Quinet 2006-08-25

configure.ac: add option to disable unit tests, fix incorrect usage of
  AC_ARG_ENABLE for dmalloc, fix some typos.
Raphaël 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
Raphaël 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 Raphaël 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 information to the
	client. Mainly used for now to send smoothing information.
	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 Raphaël 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.