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
|
Date Added
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2008/05/31
* Crashfix to attach/detach timers, thanks to Konard (fixed recent crashes) [Lupus]
2008/05/28
* Updated Ankle Snare duration (bugreport:1438) [Playtester]
- agi now has only half the effect on the duration (100 agi reduces it by 50%)
- minimum duration is 5 seconds no matter what
* Fixed stat values displaying incorrectly when increasing them
past 255 (wraparound, ack packet only has 1 byte) [ultramage]
2008/05/26
* Updating configure script: [FlavioJS]
- fixed memory manager using the argument of the last enable/disable option (any option)
- other minor changes
* Increased the allowed packet size for chat messages [ultramage]
- changed the capacity of the message column in chatlog (see sql update)
2008/05/25
* Increased storage space to 600 [Playtester]
2008/05/24
* Updated sql files to latest [Toms]
2008/05/16
* Fixed 64bit timestamps messing up auction/storage (bugreport:1454)
* Added sd state to track party creation/invitation (bugreport:1180)
2008/05/13
* Fixed a mistake in r11344 that caused the 'my shop' window to display
info about cards slotted in items incorrectly (bugreport:1502)
2008/05/12
* Fixed a script engine problem where warping away while having a menu
window open and talking to an another npc with a menu would produce
menu option count mismatch errors (bugreport:1208)
2008/05/10
* Fixed @showmobs not working (bugreport:1487)
2008/05/09
* Added correct extended info packets for items that are being moved
into storage or cart. This caused items to visually lose their
properties once they have been moved from inventory (bugreport:250).
The modification is mostly copypaste but it works nicely [ultramage]
2008/05/07
* Corrected default guild positions not being saved during guild creation.
* Did some cleanup of the splash code, the NPC_WIDE* skills now send the
'preamble' packet, which for the most part correct their skill animation
display.
* Fixed Sense messing up with Spiderweb.
* Added Throw tomahawk to the list of items that do not trigger the
equipment breaking code.
* Probably fixed Moonlight petals pushing back the casters.
* Infinite Endure won't be passed on to devoted characters.
* Infinite Endure is no longer saved on logout.
* Added check to avoid gms opening vending shops if they don't have the
required level.
* Fixed the flee penalty not applying when you walk into a gvg map. [Skotlex]
2008/05/03
* NPC_GUIDEDATTACK is not supposed to bypass pneuma/safetywall [ultramage]
2008/05/02
* Fixed missing iterator destruction in the map_foreach* functions (followup to r12684).
* Added backward compatible handling of PACKETVER 8 and 9. (followup to r12539)
* Changes to map_foreach* functions: [FlavioJS]
- removed the unecessary use of va_copy in map_foreachpc
- applied the same function pattern to map_foreachmob and map_foreachiddb
- created map_foreachnpc
- extended the behaviour of map_foreach* functions to stop iterating when func returns -1
* Replaced the very ineffective clif_foreachclient() with map_foreachpc() since they essentially do the same thing (bugreport:1174).
* Rewrote map_foreachpc() so that its callback function signature now uses a more natural 'sd' instead of a DBKey/void* pair.
* Rewrote atcommand_users() to use a single function, instead of depending on two helper functions and global objects.
* Added a custom implementation of the va_copy macro for systems that don't provide it.
* Fixed varargs not being used correctly in foreach() calls in db.c (bugreport:551).
* Replaced the integers+checking approach in r12679 with usage of floating point arithmetic.
* Applied search&replace to use the new name of the function.
* Implemented get_percentage() for compact and safe calculation of percentual values.
* Fixed integer arithmetic overflows that were occuring in several supernovice checks (bugreport:1135). [ultramage]
2008/05/01
* Updated mob_db.sql to latest [Toms]
2008/04/30
* Rev. 12676 Corrected several effect descriptions. [L0ne_W0lf]
2008/04/28
* Cleaned up char server set online/offline/char select functions. (r12670) [Kevin]
2008/04/27
* Fixing some timestamp type difference warnings...
* Removed the calc_times() no-op (bugreport:1289).
* Corrected r12662 where a guild break would trigger the OnGuildBreak event for all castles (even of other guilds).
* Corrected some x64 compilation warnings in ers/malloc files.
* Cleaned up a case of bad variable reuse.
* Cleaning up the itemdb reload mess (see r12635, r12643, r12650, r12661, r12662, r12663): [ultramage]
- the player data inventory-itemdb index is now refreshed using pc_setinventorydata()
- mobdb will no longer initialize with nonexistent items, and mobs will no longer drop them in case of a reload
- the clif_buylist() function once again hides invalid npc shop items
- it is no longer possible to purchase nonexistent items from a npc shop
- npc shop loading will not abort if there is a nonexistent item entry, it will just skip over it
2008/04/26
* Added script function hasquest. [Kevin]
* Fixed OnGuildBreak. [Kevin]
* Cleaned up auth system after change back to map server request.
- Created function set_char_charselect to get rid of some of the "special case" variables.
- Removed code that involved the char server sending auth data at char select.
- Changed char select code to update the instance of the char data in the DB
to fix map/sex info not being propagated to auth request. [Kevin]
* Rev. 12657 Added WoE SE castles to castles.txt in save-tmpl. [L0ne_W0lf]
2008/04/25
* Updated item_db.sql to latest
* Fixed bugreport:1223 (Invalid Items In Shops Are Processed Incorrectly)
* Modified delitem/delitem2 to have the same behaviour as getitem/getitem2 (optional
account_id parameter) bugreport:1035
* Modified doc in consequence [Toms]
2008/04/23
* Fixed script strings not being handled properly (only skipped the \).
* Added skip_escaped_c to strlib.c/h.
* Fixed sv_unescape_c not handling hex/octal escapes properly.
* Script parse errors displayed with one ShowError instead of several ShowMessage's. [FlavioJS]
2008/04/22
* Changed itemdb_reload to clear the database before reloading, so it is possible
can remove an item from the DB without restarting the server (bugreport:1348) (r12635). [Kevin]
* Fixed a "bug" in sv_readdb under windows and cygwin configured as "Unix/binary" for text
files ('\r' is read and empty lines are not skipped) bugreport:1382 bugreport:1401 [Toms]
2008/04/21
* Changed the data field of timers from int to intptr.
* Added intptr/uintptr to cbasetypes.h (integers with the same size as a pointer). [FlavioJS]
* Rev. 12631 Changed Sacrifice status to end on caster's death, not at 25% HP. [L0ne_W0lf]
- Should also fix over-flow damage returning to sacrificed targets. Partially fixes bugreport:1332
* Updated sql files to latest [Toms]
2008/04/19
* Made some cleanup in changesex [Toms]
* Fixed a bug in (init/start/stop)npctimer [Toms]
2008/04/18
* Fixed a bug when unloading a npc near a shop.
* Fixed npc_buylist not giving/checking the good item when it was an
item_avail in the shop (the real one was added in inventory).
* Implemented config setting 'vending_over_max', to let people configure
the behavior of vending items over the MAX_ZENY limit [ultramage]
* Fixed mapserv crash, thanks to Konard [Lupus]
2008/04/17
* Modified sv_readdb to be able to process non-native line terminators (bugreport:1382) [ultramage]
2008/04/16
* Fixed an issue in r12575 where 'not setting char offline when going from mapserver to charserver' also caused a permanent account lockout if the player pressed 'cancel' in the char select screen.
* Merged some recent changes from SQL to TXT, as someone didn't bother to do it.
* Ifdefed the quest data request code as SQL-only (this was causing server disconnects whenver someone logged in). [ultramage]
2008/04/15
* Use the same code for script commands getitem & getitem2 as @item to avoid
bug in bugreport:1324 (non-stackable items are stacked) [Toms]
* Removed all _ in the second name in item_db.txt and updated item_db.sql [Toms]
* Added a forward declaration of the struct quest instead of including mmo.h [Toms]
* Corrected some invalid syntax in skill_db.txt (wrong usage of commas)
* Renamed BA_FROSTJOKE to BA_FROSTJOKER (aegis server-side name)
* Implemented a generic framework for parsing delimited db files
- allows specifying min/max column ranges and max number of rows to read
* Cleaned up pc.c a bit [ultramage]
* Updated item_db.sql to latest [Toms]
2008/04/14
* Fixed a possible crash in char_sql. (since r12575, later modified in r12590). [FlavioJS]
* Fixed a memory leak in mapif_quests_fromsql [Toms]
* Fixed a typo in char_sql/char.c [Toms]
* Fixed a bug in the disconnection part char-server (not sending you offline) [Toms]
* Changes to the configure script: [FlavioJS]
- added options --with-MYSQL_CFLAGS and --with-MYSQL_LIBS to allow manual setting of those variables
2008/04/13
* More major updates to the quest log system. [Kevin]
* Followup to r12579 (all other players appeared as female on sql branch). [FlavioJS]
* Some major updates to the quest system, beginning to move it
over to the inter server instead of char server. (r12581) [Kevin]
* Added an include in clif.h to avoid a complaint of gcc [Toms]
* Quick&dirty reversal of the inter-server behaviour introduced in r3255/r3256:
- the behaviour enabled a desynch between the char-server and the map-server
- now the map-server asks the char-server to authenticate the auth info
(the char-server doesn't send the auth info immediatelly)
* Changes to the configure script: [FlavioJS]
- clarified how --with-zlib is used
- added --enable-packetver to set the PACKETVER define (used often enough
to get it's own option, but unnecessary since it can be set with CFLAGS)
- added -g compiler option to --enable-debug
* Changed LOG_ALL definition to really log everything [Toms]
2008/04/12
* Login will no longer set character offline when going from map
to character select. (r12575) [Kevin]
2008/04/11
* The max_account_id packetver detection mechanism will never cause any connection problems ever again. (bugreport:388)
* Reverted the `login` table changes from r12464 [ultramage]
* Finished most of the quest log code, still bits here and there
but it's ready for testing. (r12558) [Kevin]
2008/04/10
* More quest log code. [Kevin]
* Client not marked online until map receives auth request from the client
- and is approved. Also added some online/offline sets to the auth system
- that were being skipped.(r12552) [Kevin]
* Modified the charservers to use a DBMap instead of a cyclic array for auth data.
* Merged the auth fix from r12473 to TXT as well.
* Removed the no-op from r12547. [ultramage]
* Rev. 12550 Reverted the change to MAX_SQUARE_LAYOUT. [L0ne_W0lf]
* Rev. 12548 Updated NPC skill "Evil Land". More gravity wtfage. [L0ne_W0lf]
- Based on visual observation, and experience with it on iRO Sakray.
2008/04/09
* Clif functions and basic data structures for questlog system. (r12544) [Kevin]
2008/04/08
* Fixed party invitation ack messages not displaying (bugreport:1308)
* Modified PACKETVER for recent clients to use a YYYYMMDD date format
instead of a simple sequence number (allows adding versions inbetween)
* Small party/guild creation cleanup. Added packet comments. Removed fake reply packet usage. [ultramage]
2008/04/07
* Rev. 12529 Updated MAX_GUARDIANS to support an insane amount of guardians. [L0ne_W0lf]
* Immunity to magic now makes you immune to the SC effect as well. (r12527) [Kevin]
* Made script command 'flagemblem' and guild_emblem_change send an update
of the emblem_id to the players in the area.
- known bug: ui components that are displaying the emblem at the time
(emblem in flag npc and emblem over head in gvg maps) are not updated,
but putting the mouse over the target shows the new emblem
* Modified script command 'guardian':
- returns the id of the guardian
- if guardian index isn't supplied, it generates a temporary guardian
* Implemented support for temporary guardians (not saved with castle).
* Added missing includes from r12520. [FlavioJS]
* Party/guild names can no longer be less then 2 characters long. (r12521) [Kevin]
* Removed the 'wait close' timer that closed a session's socket after 5 seconds.
This was causing random disconnects when logging in. (bugreport:1330)
* Improved the Mental Sensing fix from r12507 to not start the status at all, instead of starting it and ignoring it later on. [ultramage]
2008/04/06
* Fixed a case where a dangling pointer was formed when a person was
- invited to a party immediately after creating their own. (r12518) [Kevin]
* Sight rasher now affects the wizard's own and other's icewalls. (r12516) [Kevin]
* Sight rasher, sight blaster, and arrow shower are now the only
- three skills that will affect traps. (r12516) [Kevin]
* NPC earthquake now divides the atk2 bonus between players. (r12514) [Kevin]
* Changed guild skills restore, regen, and battle order to only affect BL_PC. (r12513) [Kevin]
* Reverted one of the changes in dynamic mobs that may
- be causing the spawning problems. (r12512) [Kevin]
* Equip speed buffs no longer stack with speed consumables. (r12509) [Kevin]
- (Speed potion not included).
* Sprint, Fusion, and Increase AGI now stack independently.
- The others still don't take affect if you have any of these three. (r12508) [Kevin]
* Mental Sensing no longer gives an xp bonus on bosses. (r12507) [Kevin]
* Changed Union/Increase AGI stack fix (it should work now). (r12506) [Kevin]
* Fixed seven wind not allowing ghost/shadow. (r12505) [Kevin]
* Added Moscovia to the list of @go destinations [Toms]
2008/04/05
* Unequip should no longer remove any buff from seven wind. (r12503) [Kevin]
* Union and Increase AGI now stack. (r12502) [Kevin]
* Union now consumes sp when not soul linked. (r12499) [Kevin]
* Running into a wall/npc/pc/mob no longer enables spurt. (r12498) [Kevin]
* Fixed unable to move after using a skill to break out of sprint. (r12497) [Kevin]
* DMG no longer stops running. (r12488) [Kevin]
2008/04/04
* PCs/Mobs/NPCs now block Leap(TK_HIGHJUMP) and sprint(TK_RUN). (r12485) [Kevin]
* Disconnect user when receive select egg packet with no menu open. (r12484) [Kevin]
* Fixed @rura between maps on more then one map server. (r12483) [Kevin]
* Update to Auth Glitch fix: moved unit_free_pc back to where it was
- and updated it so unit_free_pc just tells the script to end
- (not hard delete). (r12481) [Kevin]
* Updated mob_db.sql to latest.
* Fixed a little bug in Kevin's commit (r12473) [Toms]
* Bug fixes for Auth Glitch and Map server crash through script warp when
- changing map servers.
* When char receives the request to go back to char selection it sets
- the character as "at char select" in the online_char_db, and
- set_char_offline now deletes the entry in the online_char_db unless
- the user is at the character screen (to prevent unecessary callocs/frees.
* Script warp was just a simple misplacement of a free statement, freeing the
- users session data before the scripting subsystem was finished with it. [Kevin]
2008/04/03
* More login server work
- Renamed 'connect_until_time' to 'expiration_time'
- Renamed 'ban_until_time' to 'unban_time'
- this also applies to login table columns (see upgrade_svn12464.sql)
2008/04/02
* Rev. 12462 Updated MAX_GUILDCASTLE to support new castles. [L0ne_W0lf]
* Added SV_KEEP_TERMINATOR option to not split the line terminator.
* Added sv_split to strlib.c/h (similar to sv_parse). [FlavioJS]
2008/03/31
* Fixed ACIDDEMO crash, thanks to Kaato&Konard [Lupus]
* Added latest version of dbghelp.dll (from microsoft debugger package), to prevent Windows from loading other, outdated versions.
This caused the dbghelpplug plugin to omit information about structures when producing a backtrace. [ultramage]
2008/03/30
* yet more login server stuff
- jA data structure compatibility renaming / adjustments
- mmo_account -> login_session_data, auth_data -> mmo_account
- made gender variable usage consistent for the entire login server
- rewrote TXT's new account creation procedure to match SQL's
2008/03/28
* Some more txt/sql login server synchronization [ultramage]
- removed the option to specify multiple IPs/subnets for 'ladminallowip'
- removed the @gm command and all associated management code
- removed the 'save unknown packets' code
- removed the lengthy TXT ipban code (which was essentially a copy of
what's already handled by the socket layer/packet_athena.conf)
- implemented 'start_limited_time' in SQL (expiration for new accounts)
- applied some missing TXT changes from the last update
2008/03/27
* Updated SQL Files (item & mobs) [Toms]
* Partial rewrite of the login server's auth system.
- replaced the cyclic, size-limited auth_fifo data structure with the
more appropriate DBMap-based alternative (stops some erratic behavior)
- added code to simulate the pseudo-status "online on login server"
- auth data will now expire after 30 seconds instead of persisting
- better-than-aegis handling of login cancellation (the server will wipe
all previous auth data instead of making you wait for it to expire)
- proper status message - no more generic "rejected from server", now
you'll get "the server still recognizes your last connection"
- fixed a typo in r10110 which caused disconnect timer removal to fail
- split off some parsing code to login_auth_ok() and login_auth_failed()
- extended the auth confirmation packet so that the login_id1/2 values
are sent along with the associated account id (stops charserver from
making wrong choices if two incoming sessions have the same acc_id)
- fixed a bug in the disconnect part of the main charserver parsing
loop, where a non-authed client would erase the online db entry for
a client that's already online, thus bypassing any dual-login checks
- added code to stop the waiting_disconnect timer when the associated
online entry is removed right away, instead of doing checks later
- removed code that would periodically wipe the online status of clients
that are in the auth process (producing yet more erratic behavior)
- commented out some TXT-only reconnect prevention code (bugreport:1281)
* merged the charserver acc modification code cleanup to TXT (r11324)
* changed trunk's default server->client PACKETVER to 9
2008/03/26
* Adjusted eAthena code to compile cleanly in C++ mode.
2008/03/25
* Added proper checks to adoption processing (followup to r12428).
* Cleaned up some code / fixed some typos. [ultramage]
2008/03/24
* Reorganized the contents of the mapserver's header files.
- map.h is no longer a generic dumping spot of all the shared structs,
and instead, each such structure now resides in its logical component
- map.h now only holds mostly map-related things (needs more cleaning)
* Fixed a problem in the new trade window implementation (from r11830) where no trade acknowledgement messages would get sent (bugreport:1217). [ultramage]
2008/03/22
* Cart Termination now bypasses Parrying and Energy Coat (bugreport:476).
* Mobs with no respawn information which don't have a master will not get unloaded by the dynamic mobs system.
This prevents script-spawned mobs (bio MVPs, Emperium/Guardians, ...) and dead-branched mobs from disappearing (bugreport:1246).
* Added a missing null-pointer check to the timed player pvp/gvg respawn function (mistake in r12232) [ultramage]
2008/03/21
* Added VS9 project files. Thanks to Konard [Lupus]
- removed redundant map_getallusers() function
2008/03/19
* Changed the dynamic mobs system to also unload mobs that have respawn
time but are already spawned - 22M less mem usage (bugreport:1197)
- also added a check to not respawn mobs on maps with no players
(potentially unsafe operation, needs further inspection)
2008/03/18
* Fixed invited party members not displaying correctly (bugreport:1199)
* Fixed OnPCLoginEvent not working correctly (bugreport:1182) [ultramage]
* Added missing WorkingDirectory value to vcproj-7.1, vcproj-8 projects.
Now you can flawlessly run your compiled server with RUN button in
the correct directory. Thanks to Konard [Lupus]
- Reverted changes from the project files, due to incompatibility [Lupus]
2008/03/14
* Fixed spawned mob count not being counted properly, causing yet more respawn problems.
* extended the "npc_event: event queue is full" error message to also print the name of the event (so that the cause can be tracked down)
* removed a strange (and undocumented) event name check for "GM_MONSTER" in the npc event execution code
* added effects from recent sakexes to effects list
* removed ladmin from vs8 sql builds
* added int_auction.c/.h to vs6 and vs7 project files
* some small cleanups
* Fixed one condition incorrectly modified in r12358, which caused dynamically unloaded mobs to never spawn once they've been unloaded once (bugreport:1178) [ultramage]
2008/03/13
* Replaced some foreach-based functions by their inlined iterator equivalents.
* Changed the dynamic mobs system, so that the flag that indicates whether a particular mob can be unloaded is stored in the mob's respawn data structure.
* Cleaned up related parts of the source code.
* Fixed one forgotten mob spawning function call causing mobs to duplicate when respawning (followup to r12350) (bugreport:1173) [ultramage]
2008/03/12
* Removed one mob data variable related to dynamic mobs that I found to be redundant.
* Changed MAX_MOBSKILL (max. amount of different skill entries per mob) from 50 to 40 to reduce memory consumption a bit more. [ultramage]
2008/03/11
* Replaced one incorrect nullpo check in chat_deletenpcchat().
* Replaced clif_countusers() with a more efficient alternative (thanks to the fact that pc_db now only holds fully authed players only). [ultramage]
2008/03/10
* Added missing check to only allow the leader of a party to modify
its exp share settings (bugreport:12) [ultramage]
2008/03/09
* Modified attack_walk_delay so it behaves on a 'per-object' basis, and
changed the default to 15 (all types).
* Modified battle_delay_damage so damage is not delayed more than one
second for non-player attacks.
* Modified party_member_added with a hack so that the clif functions will
send the info of the new member since party_recv_info has not yet arrived.
* Updated clif_calc_delay so the type sent to the client is based on the
number of hits of the skill (as Aegis packets reveal) [Skotlex]
* Cleaned up and corrected some more land skill code [ultramage]
- removed redundant skill_ganbatein() function
- Added flag UF_PATHCHECK from jAthena which affects whether a skill's
cells will be affected by the surrounding terrain. Adjusted existing
flags so that they closely match jA's (for easier comparisons).
- Fixed code that allowed placing of skill unit cells on 'gaps'.
- Fixed code that prevented successful casting of land skills on 'gaps'
(officially it's possible, even though they will not deploy entirely).
2008/03/07
* Script induced status changes can now be reduced by stats/cards (but
only trigger rate is reduced, not duration).
* Battle delay timers will now check if the target player has the
invincible timer active or not.
* Adjusted clif_damage and clif_skill_damage to set the endure type value
based on dmotion and damage, rather than hardchecking for SC_ENDURE.
2008/03/06
* Fixed song/dance cells to appear even on top of walls and pits.
* Fixed non-chatroom owners being able to kick others from the chatroom.
[Skotlex]
* Fixed a crash when a homun kills a mvp and the char that did
the most damage is unable to carry the mvp reward (bugreport:1114)
2008/03/05
* Added code to clear the Illusionary Shadow effect (followup to r12293)
* Added some trim() calls into mapflag code (followup to r12238)
* Fixed mvp exp reward packet not working right for big values
* Added dbghelpplug plugin entry to the plugins configuration file
* Added conf setting for auction table name (see r12287) [ultramage]
* Implemented Firepillar's 'target cannot move for 0.2 sec x hit' property.
* Corrected Earthquake so it behaves as explained in the development topics.
* Added a missing line to actually unequip unallowed compounded cards when
changing maps.
2008/03/04
* Updated the firepillar code so it behaves like the other traps.
* Additional status changes now only get triggered if the attack did
damage, not if they get absorbed.
* Properly set the opt3 value for Moonlight, Changeundead and Soul Link.
* Fixed the "no equip" flag of cards not being properly applied when
attemting to equip items.
* Some corections to the new auth db system. [Skotlex]
2008/03/02
* New optimizations for mail system and adjust to use it on Auctions. [Zephyrus]
- Added a Sql patch to clear all deleted mails. (There is no need to keep that data)
- Added more code for Auctions. Not implemented but just for study.
2008/02/29
* Rev. 12268 Added documentation for Cash shop NPC heading. [L0ne_W0lf]
2008/02/28
* Added cash shop support [Zephyrus]
2008/02/27
* Fixed 'cleararray' not able to erase array entry 127 (bugreport:864)
* Fixed @reloadmobdb producing memory leaks in pet db (bugreport:1030)
* Patched an unresolved case where knocking back a bard/dancer would
cause the mapserver to crash (bugreport:1043)
* Fixed Apple of Idun not checking for bard soul link (bugreport:1028)
* Fixed Advanced Adrenaline Rush not working barehanded (bugreport:1049)
* Disabled idle_no_autoloot setting (bugreport:1051)
* Removed NODAMAGE and ICEWALL cell types (mem usage back to normal)
- Icewall now uses basic cell type 5 (nonwalkable, shootable)
- as a consequence, you can now warp to a nonwalkable cell - but only
via gm command or scripted warp bug (hopefully :)
* Added missing option changes for Illusionary Shadow and Soul Link
that disappeared when you left the screen (bugreport:1053)
* Added support for the "view player equip" feature (see topic:174461)
2008/02/26
* Added new settings for Autotrade. [Zephyrus]
2008/02/23
* Now the server will print an error message if an invalid mapflag is
found during script loading (see bugreport:980 for the motivation)
- removed one extra space that broke jail's noreturn mapflag loading
2008/02/22
* Removed code in socket.c that tries to avoid send buffer overloading,
as there is a scenario (many players and charserver disconnect) where
mass char saving produces huge ammounts of data to send (see r11503)
* Cleaned up player respawning code (bugreport:1022)
* Increased the max amount of different autocast skills from 5 to 10
* Fixed @whomap not unlocking the player db (bug in r12204) [ultramage]
* Added $(CUSTOM_CFLAGS) into all Makefile.in to provide any custom defs
directly to all sub make files. How to use:
make CUSTOM_CFLAGS='-DSOME_DEF' sql [Lupus]
* Fixed 2 problems in r12223 - incorrect variable used (bugreport:1031) and a missing global function declaration. [ultramage]
2008/02/21
* Added status_calc_life to properly calculate hp/max_hp as a ratio taking
into accounts overflows (and for now also avoids divisions by 0). Applied
this function around clif.c, mob.c and pet.c
* Implemented the correct walk-speed bonus from the Bard/Dancer spirit.
* Fixed logarithmic drops turning 0% drop rates into 100%.
* Restructured the login mechanism of the map-server. The goal was to make
sure players are not found in the different dbs of the map while the
player has not yet been fully authed or while it is quitting, to avoid the
rest of the code from accessing and modifying it. It is a rather extensive
change, and I only had time to test the basic functionality, so if use with
care and report any bugs found.
* Replaced player states auth, waiting_disconnect, finalsave with active,
and removed states party_sent/guild_sent.
* Removed several of the old login methods/constants/player states which
are no longer needed due to this cleanup. [Skotlex]
2008/02/19
* Rev. 12219 Fixed a typo in /map/clif.c (acount_id -> account_id) [L0ne_W0lf]
* Forgotten update to the definition of script command 'input'.
* Enabled DEBUG_MEMMGR only in DEBUG mode.
* Made autotrading characters be kicked instead of reporting double login.
* Made create_session initialize session_data to NULL.
* Fixed db_obj_get not handling deleted nodes correctly. (bugreport:999) [FlavioJS]
2008/02/17
* corrected login_fd/char_fd being uninitialized in the char servers.
* Added a check to prevent using consume-delay items when you cannot use
skills, since that opens an exploit if the item also has non-skill-casting
components to its script. [Skotlex]
2008/02/14
* Removed/replaced all calls to map_getallusers (followup to r12195)
* Trashed @whozeny (from r269) [ultramage]
* Added some changes to @noks. Now it uses a SC and not vars in mob_data [Zephyrus]
- Added support to Self|Party|Guild to @noks (default is Party)
2008/02/13
* Changes to memory manager: [FlavioJS]
- fixed blocks that are fully used not being detected (and not freed) in
memmgr_final (unfill_prev is NULL for unused blocks and full blocks)
- fixed memmgr_final giving the wrong address to _mfree (for small blocks)
- added the pointer address to most error messages (and log)
- made it append to the log file instead of rewriting it
- implemented a function to verify if a memory location is active
- other minor changes
* Merged memory manager updates from old jA revisions (bugreport:663) [ultramage]
- less overhead and better overflow detection (caution, experimental!)
* Added some security checks in mail system [Zephyrus]
- This supose to fix a bug reported in 622 to limit to MAX_ZENY.
- Also add more checks to free space in your inventory to receive items.
* Added some new config settings: [Zephyrus]
- homunculus_autoloot, idle_no_autoloot, max_guild_alliance.
- Added a code to activate a Kill Steal protection and the required mapflags.
2008/02/11
* 'Forget me Not' no longer blocks ASPD bonuses from working or prevents
their re-casting, they are simply dispelled when the effect takes place.
* Fixed a possible crash when a player logs out before their create-party
request is accepted. [Skotlex]
* Expanded the script command 'input': (bugreport:811) [FlavioJS]
- two new optional arguments 'min' and 'max'
- return value indicating if it's in the correct range
- config variables for the default value of the arguments:
'input_min_value' and 'input_max_value' in script_athena.conf
2008/02/10
* Added two missing opt2 values, for Angelus and Bleeding status
* Fixed Warp Portal code sometimes producing errors/crashes in the case
where a priest enters his/her own warp (bugreport:270)
2008/02/08
* Fixed wrong message in item group loading code (bugreport:936)
* Fixed 'charisalpha' not working for the first char (bugreport:940)
* Disabled signed/unsigned warnings for visual studio 2005 [ultramage]
2008/02/07
* Fixed the disguise commands using the wrong variable when attempting to
disguise as an npc.
* Corrected and optimized npc_remove_map's npc array cleanup (Fixes
@reloadscripts reporting 'too many npcs per map' and related dangling
pointer crashes).
* HP loss item scripts can no longer kill you.
* Corrected the item-drop-rate check to avoid duplicate entries in
@whodrops after a @reloadmobdb. [Skotlex]
2008/02/04
* Some code cleanups. [Zephyrus]
- Added new Cell types (NoChat and NoDamage)
- Added JobChangeLevel and FreeSKPoints to #stats
- Added a Crash protection in clif_send with invalid fd values.
- Merged a missing update in TK Mission.
- Added script command 'getmapflag'
2008/02/03
* Fixes to Devotion (see topic:153345) [ultramage]
- removed totally fake Devotion packet from Marionette Control code
- fixed one devoted chars array management code bug which caused chars
to be included in the array multiple times, producing various problems
- the link will now re-display when coming into view range
- the link will no longer break if the devotee walks away, but instead,
if he receives damage while being out of range of Devotion
* Added an iterator to map.h/c. [FlavioJS]
Will be used instead of map_getallusers, which has problems with
dangling pointers (returned array isn't updated).
2008/02/01
* Fixed sql charserver crashing sometimes (bugreport:870) [ultramage]
2008/01/29
* Plagiarize can no longer copy skill levels beyond their max skill_db
value.
* Modified pc_dead so that the src is passed on to the master when it is a
pet or homunculus. [Skotlex]
2008/01/26
* Small update to the dgbhelpplug plugin: [FlavioJS]
- fixed only half of wide character strings being printed
- fixed the memory validity check in Dhp__PrintDataValue being optimized
out in release mode
2008/01/25
* Updated conversion tools for mob_db & item_db
* Updated SQL Files (item & mobs) [Toms]
2008/01/21
* Fixed battle config loading not applying the side-effects of
battle_adjust_conf() side-effect if an import: operation fails.
This is what caused the odd slowdown reported in bugreport:260.
2008/01/20
* Fixed item searches not working on exact "jname" matches.
* Fixed hom_setting&0x2 conflicting with the 'view-range' limit check.
* Merged the SA_MONOCELL and SA_CLASSCHANGE code. After changing class all
the status changes that cannot be triggered on bosses are dispelled.
* SA_CLASSCHANGE now uses the bloody branch list to pick a target MVP
class. [Skotlex]
2008/01/19
* Added plugin dbghelpplug to generate more extensive crash reports in windows. [FlavioJS]
- see header of src/plugins/dbghelpplug.c to know it's capabilities
- VS8 project file supplied at vcproj-8/dbghelpplug.vcproj
- a dll compiled in release mode is supplied at plugins/dbghelpplug.dll
2008/01/17
* Made battle_check_range fail whenever the distance between src/target is
greater than the viewing range. [Skotlex]
* Icewalls can no longer be knocked back (see bugreport:38)
2008/01/15
* Manner system fixing [ultramage]
- better-than-aegis 'red bubble' packet updates; now it shows correctly
- added support for /rc, which is basically mute for 60 minutes
- fixed typo in r12076 making gm-mute start on the gm instead of target
- fixed @mute not ending the status properly when using negative values
- adde missing clif_manner_message(), sends info about manner updates
2008/01/14
* Fixed missing mob_spawn call, which was making CR_CULTIVATION not
actually spawn the plant. [Skotlex]
* Client packet corrections
- 0x01df is not 'gmreqnochatcount', but for requesting a player's
account name via right-click menu (which currently can't be done)
- added /remove and /recall, aliases to /shift and /summon
- added /changemaptype, which alters a single cell's gat type
- gm kick will no longer exit the client (now it goes to the login screen)
- removed the quicksort invocation in /ignore code
* Fixed card removal script functions' 'extra card' bug (bugreport:786)
* Removed the hardcoded limit for numeric npc input boxes (bugreport:811)
* Applied a temp patch to make some npc-executed atcommands work again
* Added support for right-click-gm-menu kicking NPC objects [ultramage]
* Fixed dangling pointer crashes when bleeding or Deadly poison kills a
spawn-once monster.
* Fixed a possible ERS entry corruption when Deadly Poison kills a target
that has kaizel active.
2008/01/13
* Fixed a possible ers_entry corruption if you die from bleeding while
under the effects of kaizel.
* Updated Safety wall so it does not blocks melee magic. [Skotlex]
2008/01/12
* Another possible fix to ers/status_change crashing.
- same logic as r12058 but in status_change_timer.
- look out for this error: "[Error]: status_change_timer: Unexpected NULL status change id: ### data: ###"
getting it means that a crash was avoided and the culprit found.
* Modified npc_parsesrcfile to read the file as binary and let sv_parse handle LF/CRLF line endings.
* Possible fix to ers/status_change crashing. [FlavioJS]
- this patch is untested. Didn't find anyone willing to test it and I can't
reproduce the crash so can't test the patch.
symptom:
status_change_entry.timer is being modified after the entry is freed.
ers uses that memory location as a pointer when the entry is freed,
it crashes when accessing the contents when it points to an invalid location.
assumption:
status_change_start starts an already existing status.
as a consequence of something called inside status_change_start the status is ended.
when the sce is finally being modified, it's modifying a freed entry.
2008/01/11
* Implemented the extra damage bonus to TK_JUMPKICK when it is used while
running (however what the bonus's equation is has been lost to time, so
someone else correct it).
* Corrected CR_CULTIVATION to cause summoned plants to expire after 5
minutes.
2008/01/10
* Fixed getmonsterinfo to return "null" when returning the name of a
non-existing mob instead of -1.
* Corrected CR_CULTIVATION to fail when the target cell has some BL_CHAR on
it already.
* Script command percentheal will no longer kill the player if the
specified amount is negative (and not -100).
* Fixed Abracadabra unable to cast non-targeted skills (bugreport:186)
* Another round of login server cleaning [ultramage]
- fixed passwordencrypt on SQL not behaving correctly (since r10753)
- corrected some column lengths in the login db (username, password,...)
- fixed some places which used wfifo without first reallocating it
- removed interserver packet 0x7532 (Request to end connection), as
there was no code that actually sent this packet
- moved RFIFOSKIP actions to execute as soon as possible
* Corrected @slaveclone/@clone behaving as @evilclone when you change the @
symbol.
* Modified SC_ARMOR_ELEMENT so it grants elemental resist as if it they
were card granted bonuses.
* fixed a SA_DISPELL crash when casted on an object with no status changes.
2008/01/09
* Script command warpportal now places a warp in its initial state (as if a
real warp portal was casted).
* Updated dispell to also not remove the following effects: Hindsight, Inc
Hit/Atk Rate (NPC_POWERUP), Nen, TK stances and tumble, warm and speedup1
(the other speed potion).
* Chase-walking characters can now loot.
* Hiding characters can't drop items now. [Skotlex]
2008/01/08
* Added missing session auth checks to charserver. [ultramage]
Packets from non-authed clients will now be discarded.
* Fixed Wand of Hermod not starting the SC_HERMOD status change (which
blocks spells)
* Fixed additional def/mdef from vit/int bonuses being lost when a status
change that affects def/mdef triggers (for homunculus) [Skotlex]
* Added missing code to log main chat messages sent by whispering
to main_chat_nick (bugreport:424) [ultramage]
2008/01/07
* Small change to potion pitcher to allow potion healing rate item effects
to be included in potion pitcher's heal rate. [Reddozen]
* Changed the code in status_change_timer so that a null pointer no longer
causes a crash but prints an error instead.
* Corrected clones not copying over a player's skills properly. [Skotlex]
2008/01/06
* Extended the id range for npcs, now [400,700) will also be treated
as NPC objects (see topic:170845 and bugreport:727) [ultramage]
* Fixed a visual itemdupple bug on mail system. [Zephyrus]
- Fixed Overthrush status cannot being recalled at same skill lvl.
2008/01/04
* Fixed a mistake in r11991 that let knockback work through walls
* Modified the map_setcell() code to to use a boolean flag instead of
needing SET_ / CLR_ pairs of defines (topic:174323) [ultramage].
Also removed script object 'setcell', added script function 'setcell'
- Now you can manipulate cell information without needing @loadnpc
- You can also manipulate the terrain ('gat') type itself, using the
new cell_walkable, cell_shootable and cell_water constants
(currently the implementation uses bit flags too, so to get the type
you want, you need to adjust the flags one by one)
- This breaks current scripts, so please adjust places that use setcell
(also be sure to _only_ use predefined constants, not direct numbers)
- Details can be found in the script reference.
* Fixed Music Lesson's effect on Assassin Cross of Sunset.
* Fixed a possible crash in status_change_timer when debug mode is
disabled. [Skotlex]
2008/01/03
* Changes to reduce the number of map cell types
- Pneuma now again works via status change (see r3969)
- removed unused CELL_SAFETYWALL
- removed custom CELL_REGEN, it just increased regen rate (r1192, r1518)
* Fixed npc unloading not clearing NPC touch cells (bugreport:595)
* Map cell mechanism rewrite (bugreport:426)
- defined a data structure for map cells (replaces 3 various cell arrays)
- both terrain (gat) and dynamic (cell) information is now stored as
C-style bit flags instead of #defines and bitmasks
- added map_gat2cell() and map_cell2gat() for terrain type conversions
- changing terrain information via 'setcell' is temporarily disabled
- mapserver startup now takes longer, as it needs to adapt mapcache data
to internal representation, cell by cell (new mapcache format anyone?)
* Moved extra junk from map_addblock/map_delblock to where it logically
belongs (loadendack/unit_remove_map), removed flags and _sub macros
* Removed map_data's block_count, as (quote Yor/ja2160),
"Perhaps useful for debug, but uses memory AND CPU for nothing."
(block lists are linked lists, they don't need count tracking) [ultramage]
2007/12/31
* Fixed a crash in txt char-servers that the memory manager was hiding.
online_char_db being used after being destroyed (since r4026)
* Added code to reject double logins in clif_parse_WantToConnection and
added debug messages to detect possible double logins that escaped.
* Isolated accounts that are waiting for the quit ack. The rest of the
game logic no longer has access to them though the id2sd/charid2sd dbs.
2007/12/30
* Fixed get_val2 not using the stack, which automatically frees the data,
causing memory leaks for string variables since r11976.
(bugreport:723 , part of bugreport:714 and part of bugreport:708)
* Trully fixed the previous commits. (missing cast and incomplete size)
* Made the memory manager set allocated memory to 0xCD and freed memory
to 0xDD. The memory manager no longer 'hides' uses of freed memory.
2007/12/29
* Fixed two missing @LDFLAGS@ in src/plugins/Makefile.in. [FlavioJS]
* Implemented THE official Steal skill equation and game mechanics
(basically version from /stable plus a few tweaks) (see topic:116540)
* Added missing bAddStealRate reference to doc/item_bonus.txt
* Removed skill_steal_rate, as it was never used in the code (see r231)
* Removed skill_steal_type, it's just a one-liner source mod (see r231)
* Knockback now works through cells where there is a diagonal path, but
no horizontal+vertical (two 90` icewalls with a gap where they 'join')
* Some dead code removal in path.c [ultramage]
2007/12/28
* Fixed a memory leak in memitemdata_to_sql.
* Reverted a bad modification in clif_produceeffect from r11290. [FlavioJS]
2007/12/27
* Removed an incorrect range check and fixed a copypaste typo which
caused script engine errors / crashes (see r11984)
* Re-added a missing mob last_thinktime timer initialization when a mob
spawns, causing mob AI to freeze (mistake in r11964) [ultramage]
* Changed the configure script:
- refined the mysql test (wasn't detecting 64 libraries compiled without -m64)
- added a test for clock_gettime in -lrt (required for Debian)
* Corrected description of scope and npc variables in script_commands.txt.
* Made temporary character string variables not have a limited length.
(now all temporary string variables don't have limited length)
* Made temporary character variables reuse free positions.
* Tweeked the declaration and initialization defines for vectors.
* Made do_sockets leave the for loop as soon as the readable number of
sockets returned by select is found.
* Made all posix compliant systems that support it and FreeBSD >= 5.1
(implements it but doesn't have the posix defines) use the precise and
consistent tick() implementation.
* Minor tweek to HEAP_SEARCH (same variable can be used in from and to).
* Fixed the map server not exiting when make_listen_bind fails and
returns -1. [FlavioJS]
2007/12/26
* Fixed the incorrect interpretation of the map-cell height information
stored in .gat files; this was causing an overall of 20000 cells to
be treated as water when officially they aren't [ultramage]
* Fixed string variables dereferencing directly to the value instead of
dereferencing to a copy of the value. (fixes bugreport:684 bugreport:641) [FlavioJS]
2007/12/23
* Added a generic vector implementation (dynamic array) based on defines. [FlavioJS]
* Fixed horrible handling of skill_abra_db which leads to memory corruption
(depending on the contents of yor abra_db.txt file) [Skotlex]
2007/12/22
* Fixed droprate overflows when going over rate 2000x [ultramage]
* Corrected mob spawn utilization of the delay1/delay2 values (one is
respawn delay base, the second is random variance added on top of it).
Cleaned up related code. [Skotlex]
2007/12/19
* Fixed yet another buffer overflow, in @adopt [ultramage]
* Changes to the configure script. [FlavioJS]
- fixed the 'pointers can be stored in ints' test not working
- fixed the linker trying to build 64 bit executables with 32 bit code on
x86_64 (missing -m32 flag in LDFLAGS)
- made MYSQL_CFLAGS be built from the --include option to be more portable
- made --with-mysql check if the optional argument is an executable file
- make --with-pcre check if the optional argument is a directory
- other minor changes
* Corrected SC_MIRACLE to trigger Bless of the Stars on all defeated mobs.
[Skotlex]
2007/12/18
* Fixed a possible buffer overflow in @partyoption [ultramage]
* Updated respawn time interpretation according to latest kRO update [Playtester]
- this first time is the "min respawn time"
- the second time is the "variance" which is added to the "min respawn time"
* Corrected skill_db reading to properly trim the skill name/descs.
* Added a mobid_db in map.c to handle mob lookups faster. [Skotlex]
2007/12/17
* Added flag.server to indicate interserver sockets
- replaces the previous way (setting 'client_addr' to 0)
2007/12/14
* Guardian hp handling code removal (see bugreport:342)
- removed guardian hp from the castle data structure, database,
savefiles and various script functions (use upgrade_svn11915.sql)
- removed guardian hp calculation and manipulation from the castle
manager npc, now the hp values are updated by the server itself
(glitch: when castle defense changes, all guardians are healed to full)
- tweaked script function 'guardianinfo' to provide some data needed
by the manager npc (currently available are hp, maxhp and visibility);
also, it doesn't need a player attached to execute
* Added a precise and consistent tick() function for freebsd [ultramage]
* Wand of Hermode now dispells buffs only of allies.
* Fixed some null pointer checks in status_change_end.
* Corrected a crashy Warning message. [Skotlex]
2007/12/13
* Fixed possible segmentation faults in the script engine.
- some strings that can be freed outside the script engine were being
pushed into the stack as constant strings
* Disabled ers until recent crashes are fixed.
- ers entries are being corrupted, probably by modifying them after they
are released or by releasing something else
* Abstracted the windows socket code so that all fd's are in the range
[1,FD_SETSIZE[. (bugreport:604)
- The socket of a fd is forgotten when executing sClose, so things that
depend on the socket (like sFD_CLR) must be executed before closing.
* Replaced the fd_set of the short list with a custom implementation
(works like the linux fd_set). [FlavioJS]
2007/12/12
* Some preparations for the guild script update [ultramage]
- cleaned up npc event execution code
- cleaned up guild data loading/saving code; to be improved later
- removed dummy 'account name' expulsion list management code
- removed columns 'rsv1' and 'rsv2' from guild member data
- removed columns 'rsv1' 'rsv2' 'rsv3' and 'acc' from guild expulsion data
2007/12/11
* Added query_logsql script command to perform sql commands using the log
db connection.
* Added some new cashitems and headgears.
2007/12/10
* Cleaned up clif_setdisguise and fixed it for PACKETVER>=9.
* Added missing range/skill-mask info to reflected damage (fixes autospells
not triggering on it) [Skotlex]
2007/12/09
* Modified npc_parsesrcfile to parse the line as a 'tab-separated values'
string and added data truncation warnings.
- enforces a stricter adherence to the format (no multiple tabs)
- avoids sscanf matching spaces, new lines and carriage returns when '\t'
is used in the format string
* Added a generic 'delimiter-separated values' string parser to strlib.c/h. [FlavioJS]
2007/12/07
* Fixed ensembles skills.
* removed the timer heap correction code when the timers overflow since
Flavio points out that it is not needed.
* Modified a bit the changesex code so you get saved and quit before
changing your sex rather than afterwards.
* Cleaned up #changesex
* Signum Crucis now works on bosses. [Skotlex]
2007/12/06
* Removed the attempts to recover from invalid syntax in npc_parsesrcfile
since they can produce incorrect results (spaces in sscanf can match
\n's and company).
* Made script_rid2sd report the script source directly and changed related
return 1's to return 0's to avoid double script source reports.
* Added missing return 0's after script_rid2sd is used and an extra error
message in buildin_set/buildin_setd. [FlavioJS]
* The default event script behaviour is to trigger on labels rather than
NPCs now.
* Removed several script config options which break NPC compatibility when
you mess with them (event_script_type, event_requires_trigger,
die_event_name, kill_pc_event_name, kill_mob_event_name, logout_event_name,
login_event_name, loadmap_event_name, baselvup_event_name,
joblvup_event_name)
* LoadMap events no longer set the variable "@maploaded$" to the name of
the new map. [Skotlex]
2007/12/03
* Fixed a bug on Mail System. Removed the possibility to lost the attachment on
a Map - Char server disconnection. [Zephyrus]
2007/11/29
* pc_setoption no longer does view_data changes while disguised (as this
breaks things) [Skotlex]
* Random cleanup/documentation.
* Made common/Makefile get the svn version from the src directory, not src/common.
* Added a warning message to the install and uninstall targets.
* Renamed all obj directories to obj_all, obj_txt or obj_sql in the
makefiles (if an obj/ directory exists, BSD make enters it before
reading the makefile) [FlavioJS]
* Allowed disguising while riding a peco-peco (this does not seem to cause
problems anymore).
* The pvp rank packet is no longer sent to other players when disguised, as
this leads to crashes when you die.
* Probably fixed splash damage.
* Reflected spells no longer cause knockback.
* SG Blessing skills now grant the extra experience to everyone when the SG
killed the mob.
2007/11/28
* Applied the required changes to handle def as a signed char (allows for
negative def)
* Corrected skill_check_condition to not delete items right away for
certain skills that do the deletion themselves. Fixes several skills
consuming items twice.
* Dispel's success rate is no longer affected by MDEF
* You are no longer blocked from being warped when standing in a warp while
in a duel.
* Duels are now automatically ended when you warp out of the map you are
in. [Skotlex]
* Fixed reflected spells bypassing WoE no-knockback restriction, because
the code allowed that when cast on self; not anymore (bugreport:231)
* Reverted the position of the max_hp/max_sp basic setting, modified the
max_hp/max_sp bonuses to use casting in order to work correctly with
negative bonuses. [Skotlex]
* Reconstructed a list of all PACKETVER types, by reverse-engineering
it from places in the code where the define is used [ultramage]
- recovered PACKETVER 6 which was added in r51, but overwritten by r141,
one of the dumbest commits that I have seen so far
- since 6 was the 'new trade window' update, it and its corresponding
reply packet will now be used from now on instead the old version
2007/11/27
* Added safesnprintf to strlib.c/h (bugreport:372) [FlavioJS]
* removed login/char server_fd[] arrays, added server[].fd instead
* TXT/SQL login server code synchronization [ultramage]
- exported several core structures to login.h
- split off ladmin communication code from the TXT login server
- removed all occurences of login_log(); a unified function should be
added when SQL's loginlog_db logging code gets synced with TXT
- removed conf setting login_log_filename
- fixed ladmin getting timeouts since the ping system was changed
* Moved basic max HP/SP calculation to before parsing equipment, fixes
negative absolute HP/SP bonuses not working.
* Corrected the online_data_cleanup routine setting offline characters that
are still connected to the char-server.
* Added a check in script command sc_end to properly end infinte endure
* ASC_BREAKER no longer triggers status effect cards. [Skotlex]
* Fixed fake_nd not being exported correctly and being unloaded when
reloading scripts. (probably fixes bugreport:444) [FlavioJS]
2007/11/26
* Normalized makefiles:
- 3 sections: variables, public targets, private/support targets
- object files always in a *_OBJ variable
- header files always in a *_H variable
- object files always generated to an obj* subfolder
- all Makefiles can be executed individually, calling other makefiles if necessary
- generic object targets when possible
* Fixed buildin_query_sql using Sql_Query instead of Sql_QueryStr,
wrongly processing all %f,%d,... (fixes bureport:218) [FlavioJS]
* Fixed guild expulsion not working correctly [ultramage]
* Fixed a memory leak in mail_savemessage (src\char_sql\int_mail.c). [FlavioJS]
2007/11/25
* Rev. 11804 Giant Fly Wings are now blocked on noteleport maps and duels. [L0ne_W0lf]
2007/11/24
* Fixed a crash when Slim Pitcher is cast
* Fixed a crash when a taekwon hits a wall while Sprinting (bugreport:483)
* Added support for latest official client/server packet changes [ultramage]
- enable by setting PACKETVER to 9; note that this breaks older clients
2007/11/23
* Changed the status_change structure to use dynamic rather than static
memory to hold the individual status changes, this should have a noticeable
impact on the server's memory consumption. However, since this is a pretty
large update (and I am unable to fully test all possible situations
relating to status changes), watch out for any bugs. [Skotlex]
2007/11/22
* Moved the reset of references to after the empty script checks in
parse_script. (fixes bugreport:222 and bugreport:449)
* Renamed fakenpcname to setnpcdisplay, fixed and extended it. [FlavioJS]
- See doc/script_commands.txt for information on how to use it
* Modified mapserver login procedure to make clients from may 2007
and newer not crash when entering mapserver (bugreport:468) [ultramage]
- this changes PACKETVER to 8, causing incompatibility with old clients
- this makes the "Login" hex obsolete; please stop using it as it
causes a conflict with this update and may have negative sideeffects
2007/11/21
* Fixed Sql_SetEncoding not setting the encoding of the connection
properly. (fixes bugreport:30)
* Added backward compatible target 'conf' to the Makefile. [FlavioJS]
* Changed Lif's Emergency Avoid to just get a normal skill delay
(blocks all skills, cancelled by mapchange / re-summon) instead of
getting a persistent block on only this one skill (bugreport:13)
* Homunculi now reset their can-act delay on call/resurrect/mapchange
(allows bypassing delays by doing rest/call instead of relog) [ultramage]
2007/11/20
* Implemented SL_SUPERNOVICE erasing the death record 1% of the casts.
* Implemented current exp being capped to the exp required to level up from
the previous level when we are at max level (required for some S. Novice
buffs) [Skotlex]
2007/11/19
* Nullpo's disabled on release builds.
* Added timestamps to the log of memory leaks.
* Moved definition of __func__ to cbasetypes.h.
* Configure script updated:
- added option to select the memory manager
- added option to enable MAPREGSQL
- added option to enable DEBUG
* common's Makefile deleting svnversion.h on 'clean' target. [FlavioJS]
2007/11/18
* Implemented a small change that was long overdue: Displaying the
char-select screen now uses a single SQL query instead of up to 9.
[Skotlex]
* Replaced jA's way of allocating npc shop data with a simple dynamic
array that gets allocated during loading and freed on unload
- automatically fixes bugreport:404, which would otherwise require
manipulating the npcname_db (the original author didn't, hence the bug)
- now a supporting variable 'count' is used for tracking the length
instead of an extra dummy entry at the end of the shop list
- partially removed the MAX_SHOPITEM restriction (if this was written
properly, the system could support an unlimited amount of entries)
2007/11/17
* Removed battle_config.error_log as console_silent already handles this
* Made OnTouch zone dimensions be stored as radius instead of diameter
- cleaned up some overly complicated area calculations [ultramage]
2007/11/16
* Added 2 new status changes for Life and Regeneration Potions [Zephyrus]
- Fixed some items boxes giving wrong tamings.
- Fixed another item giving 48 gladius[3]
* Added error messages when trying to place objects on invalid map coords
* Fixed Divine Protection working against players (bugreport:410)
2007/11/15
* Fixed some homunculus skill offset calculation mistakes (bugreport:363)
2007/11/14
* Fixed skill_castnodex_db.txt not being parsed correctly
* Fixed a search&replace typo in skill_db.txt
* Added error reporting for invalid rows in skill db files
* Added error reporting to buildin_warp when it fails [ultramage]
2007/11/13
* Fixed homunculus skills having unlimited range instead of being
capped to view_distance+1 (for details see bugreport:376) [ultramage]
* Fixed @addwarp crashing the map server (bugreport:390). [FlavioJS]
* The Forget-me-not status now behaves like Decrease AGI [ultramage]
- doesn't cancel Impressive Riff, Wind Walker, True Sight (bugreport:187)
- additionally, it doesn't cancel Cart Boost
* Fixed some bugs on mail system. [Zephyrus]
- Added the pc_candrop check (bugreport:305)
- Added picklog to mail.
- Added INCMDEFRATE status for Mdef potion.
2007/11/12
* Now when job changing to another class tree, status changes from skills
that belong to your previous class are cleared. [Skotlex]
* Applied Rayce's improvements to the npc script parser [ultramage]
* Made on-touch areas work with walking npcs (is somewhat process
intensive, but people do not really care about that, do they?) [Skotlex]
* Fixed a bug in r11384 letting you bypass requirements for some skills
2007/11/09
* Expanded weapon_type enum with dual-wield constants (bugreport:384)
* Replaced several 'int' variables with enums that they represent
* Re-worked the login-char-map packet spam mechanism
- mapserver no longer sends entire user list to charserver every
10 seconds; similar change done to the char-login connection
- user count updates are only sent when the value actually changes
instead of servers polling each other every few seconds
- the servers now prevent interserver connection timeout explicitly by
sending ping/ack packet pairs instead of relying on the usercount
polling to do so; keepalive is sent every 'stall_time'-2 seconds
* Fixed socket.c checking time() incorrectly (bugreport:394) [ultramage]
* Added a database iterator to db.c/db.h. [FlavioJS]
2007/11/08
* Changed EXIT_SUCCESS back to 0 in console.c to avoid an unnecessary include.
* Fixed gm_account_db not being deallocated in login-converter.c.
* Refactoring names and documentation in db.h/db.c: [FlavioJS]
- changed 'struct dbt' to 'struct DBMap' and 'DB' to 'DBMap*'
- changed 'struct db' to 'struct DBMap_impl' and 'DB_impl' to 'DBMap_impl*'
- changed COUNT to DB_COUNTSTAT and made it's existence not depend on DB_ENABLE_STATS
- removed some @see links and corrected small typos in the documentation
* Fixed a glitch where all packets immediately after the map->char
login packet would get discarded and the mapserver disconnected
* Synced charserver char creation creation code [ultramage]
- removed most of the creation failure messages printed to console
- fixed sql charserver letting you use control chars in char names
- new chars will not start with the 'Knife' and 'Cotton Shirt' equipped
anymore (charserver blindly placed magic values into the equip field)
* Updated configure script: [FlavioJS]
- small correction to the help text of --with-mysql and --with-pcre
- added the -Wno-switch compiler option to suppress the
"enumeration value '%s' not handled in switch" warnings
* Added a new setting 'guild_skill_relog_delay' to activate the guild skills delay
on Guild Master relog. [Zephyrus]
2007/11/07
* Some updates on the mail system packets [Zephyrus]
- Corrected the mail database structure on main.sql
- Added separated packets for get and set attachment on mail system.
2007/11/06
* Fixed a crash caused by a mistake in the previous change
2007/11/05
* Changed skill db loading code to work similarly to how itemdb/mobdb
is loaded (generic file loader + specialized function to process rows)
- all skill db files are now checked for inconsistencies the same way
* Corrected the max. allowed skill name length, and optimized code that
works with skill names according to latest changes [ultramage]
* Reverted official drop rate estimation [Playtester]
- although it really exists we don't have enough information about it
- if server owners really want it they can implement it themselves
(it's just a one-line fix anyways)
* Cleaned up skill db lookup code
- added some well-behaved functions to replace macros (skill_get_index)
- used skill_get_index() to replace often occuring blocks of code
that did the skill_id -> skilldb_index calculation in-line
* Corrected skill db loading code which was using a totally wrong
column count in sevreal cases (or didn't do any checks at all)
* Changed the skill_db.txt skill names in comments into actual columns,
now the server reads these instead of a hardcoded array [ultramage]
2007/11/04
* Implemented official drop rate estimation [Playtester]
- estimation is rounded on 2 positions after decimal point
- this will effectively raise drop rates below 10% by 0.01%
2007/11/03
* Added jA script function 'strnpcinfo', for increased npc awareness
2007/11/02
* Fixed one wrong return value in buildin_getcharid (bugreport:33)
* Removed the big list of BUILDIN_FUNC() declarations in script.c,
as they are not needed anymore and no code utilizes them
* Moved the BUILDIN_DEF() block to the end of script.c [ultramage]
* Modified trap related code so it behaves as explained by Playtester:
Traps trigger on everyone in their 'effect range' (skill_db's splash) for
every target that lies within its trigger range at trigger time (range and
interval in the skill_unit_db). [Skotlex]
2007/11/01
* Removed code that queues OnAgitEliminate after the Emperium is broken,
this is now done properly by the gvg script instead [ultramage]
- if you have any extra castles, update your scripts accordingly
2007/10/31
* Added names to the SC_ and SI_ enums, now they can be used to properly
indicate where such values are to be used (replaces usage of 'int')
* removed MIN_/MAX_PORTAL_MEMO, set MAX_MEMOPOINTS from 10 to 3
* removed support for @go-ing to your memo points
* simplified the overly verbose @memo command; now re-uses pc_memo()
* cleaned up pc_memo(), now uses semi-correct packet replies
* Minor code cleaning/formatting [ultramage]
* Updated several mapflags - 'nomemo' 'noteleport' 'nosave' 'nowarpto'
'restricted' - due to Izlude Battle Arena release. [SinSloth]
- Updated 'item_noequip' and 'skill_nocast_db' to match with 'restricted' mapflags.
2007/10/29
* Updated the mail db structure on main.sql [Zephyrus]
* Makefile creating the conf/import forder. [FlavioJS]
* command code cleaning (refer to topic:169759) [ultramage]
- separated the execution part of command code into interface part
and internal part to better see which checks are done and when
(fixes problem where 'nocommand' mapflag blocked server npcs)
- moved the internal commands list (array) to the end of the file,
this let me discard that long block of ACMD_FUNC() declarations
- removed enum AtCommandType from command headers and commands array;
its purpose was perhaps to identify aliased commands, but apparently
it was never finished because the rest of the code doesn't use it
(also doing aliases like this is not a very good idea)
- internally, commands are now referenced to using their function name
- removed the @/# symbols from the command lists; all lookup functions
will now properly deal with strings with- and without a command symbol
(commands interface still requires the symbol tho', so TODO for later)
- removed several unneeded commands (*id2 code, dmalloc debug commands)
- reverted atcommand config from alphabetically-sorted to how it was
before (with additional fixes; see /conf changelog)
- added missing code for #dropall / #storeall
- added a warning when trying to set gm level of an undefined command
* The structure of the commands table has changed, please adjust
docs/guides to match the new format (sorry for the inconvenience)
2007/10/28
* Minor adjustment to take into account the end of line.
* Fixed the line count in the new error message of npc_parse_function.
* Restricted more the parsing of npc code. (fixes bugreport:317) [FlavioJS]
* Fixed a bug sending on the attachment message [Zephyrus]
2007/10/27
* Fixed a typo in r11505 messing up the 'npcmove' command
* Removed 'petid', a command from r284 to look up pet ids by name
* Fixed TXT charserver doing periodic random-sized alloc (bugreport:312)
* Set 'Create Converter's produce success rate to 100% (bugreport:302)
* Added check that verifies weapon/ammo/state requirements also when
casting finishes (might have unwanted side-effects!) (bugreport:228)
* Fixed Firewall knocking back undead/fire element mobs (bug in r11578)
* Added dummy 'openmail' to txt server to fix a script error message
* Improvements/fixes to the mail system improvements :) [ultramage]
* Improvements to the mail system. Need Testing, [Zephyrus]
2007/10/26
* Moved the new novending cell check from the internal code to the
client-server interface (allows server to force-open shop if needed)
* Removed confusing map_nick2sd_nocase(), let the charserver handle it
* Added correct packet for attachment retrieval failure when overweight
* Fixed one more mistake in r11571 (Sql->SqlStmt) [ultramage]
* Removed the config setting firewall_hits_on_undead setting, Firewall and
kaensin now automatically calculate the number of hits they should do per
iteration based on the skill trigger frequency (you may want to raise that
delay of 1ms in the db, though). [Skotlex]
2007/10/24
* Corrected a fex misshaps from r11571:
- disabling the memory manager
- using the wrong length for the title and body in mail_savemessage
* Removed the quick-fix in the npc duplicate check and the impossible condition
that is generating the warning. [FlavioJS]
* @/#jobchange no longer strips your equipment since pc_jobchange removes
any unequippables already.
* Removed the wasteful define MAX_PC_CLASS and replaced it by the
CLASS_COUNT define + pc_class2idx function. This should save a bunch of
memory from the map server.
* Merged the CELL_NOVENDING code (see topic #129209) [Skotlex]
* Increased the max. send buffer size to 5M since 1M is not enough
* Updated vs7 and vs6 project files
* Added upgrade_svn11548.sql to convert the mail table to new format
* Cleaned up the mail code, no more pointless dynamic allocation
* Cleaned up some messy guild code (more to come) [ultramage]
2007/10/23
* Fixed a compilation bug on linux (FALSE -> false) [Zephyrus]
2007/10/22
* Heat isn't supposed to consume SP when used against players [Playtester]
- please report if it still consumes SP in pvp
* Added the new mail system implementation (Requires more test and
optimizations) [Zephyrus]
- Updated the mail DB structure.
* Removed some mail config settings and atcommands not required anymore.
- Added documentation for script commands: openmail and homshuffle.
2007/10/21
* Fixed a small mistake in r11503 causing a fatal error&exit on unix
when you try to do a graceful exit (by ctrl+c for example) [ultramage]
* Removed SC_INCAGIRATE/SC_INCDEXRATE as they are not used anymore.
* Added SC_INCASPDRATE, SC_INCFLEE2, SC_INCCRI, SC_INCDEF, SC_INCBASEATK
and SC_FASTCAST as these are required by the newer items. [Skotlex]
2007/10/20
* Fixed 'unequip' removing items in the wrong position (bugreport:252)
* Fixed #refine unequpping the caller's item by mistake (bugreport:265)
* Fixed a nasty bug from r11410 which let people create chars with
already taken char names, and (in TXT's case) even cause a crash.
- Bug was a variable name collision between the total number of chars
and a char's slot number (both were called 'char_num'). [ultramage]
* Some more updates to the skill unit code [Playtester]
- renamed SKILLUNITTIMER_INVERVAL to SKILLUNITTIMER_INTERVAL
- Heat now depends on the interval settings rather than firewall_hits_on_undead
- Icewall doesn't break anymore when the SKILLUNITTIMER_INTERVAL gets changed
2007/10/19
* Added bonusautoscript and bonusautoscript2. These are used to attach a
script to a player which gets executed on attack (or when attacked). This
is very similar to the autospell bonuses, except that a script is executed
instead of a spell. See doc/script_commands for indepth description and
usage. NOTE that I am unable to test ingame, and even though I proofread
the code it could have bugs. Feel free to test and report. [Skotlex]
* Applied some cleanups that should correct "Infinite Endure" ending
sometimes. [Skotlex]
2007/10/18
* Rev. 11516 Uncommented the showwarning and showdebug from 11508. [L0ne_W0lf]
* Fixed the incorrect map names on the debug messages (mapid->mapindex
mishap from r11508).
* Fixed the incorrect reporting of npc names being too long when the the
length is 24 (from r11508). [FlavioJS]
* Rev. 11511 Commented out ShowWarning and ShowDebug messages added [L0ne_W0lf]
in revision 11508. Aside from the ShowDebug being faulty, they
are both fare too annoying for public use for the time being.
If/when I get the NPC names fixed, we can add it back.
* Further optimization of the skill unit code [Playtester]
- removed code for Crimson Fire Formation it now uses the same code as Fire Wall
- added same knockback behavior as Fire Wall for Fire Formation
- Heat now does 50 hits a second in pvp too
- please let me know of any bugs that might appear
* Optimized the skill unit code [Playtester]
- reverted the unit timer interval to 100ms to save CPU usage
- rewrote the unit code of Fire Wall, Fire Formation and Heat so that they hit
every 20ms if the target wasn't knocked back despite of the unit timer interval
- Heat now does 15 SP damage to players instead of 60 per hit
- optimized memory usage
- TODO: Renaming or removing firewall_hits_on_undead config
* Clarified how npc names work in script_commands.txt.
* Fixed a forgotten "return 0;" that stopped the parsing of the file
after the first "script" of the file is parsed sucessfully (caused by r11502).
* Applied the same parsing and restrictions of npc names to warps, duplicates
and shops (other code expects unique names for them too). [FlavioJS]
* Applied the new checking function to clif code, this fixes various
length mismatches caused by incomplete code in r11386
* Added clif_process_message(), an unified way to validate all four
types of player message packets and retrieve their components
* Removed the requirement to provide a character name in the message
string when calling is_atcommand() (needed for the previous fix)
- currently both ways work, but old will be removed in the upcoming
command cleanup so please adjust your custom code if you use this!
* Merged improved/cleaned up (WiP) code for clif_parse_WisMessage
* Removed commented-out code for check_fake_id() [ultramage]
2007/10/17
* Removed outdated copyright and version number from startup logo
* Removed socket code that attempts to cope with code bugs at runtime
* client_addr will now be properly set to 0 for server connections
* Fixed subnet check message displaying incorrect ip addresses
* Merged do_sendrecv() and do_parse() into do_sockets() [ultramage]
* Reworked the parsing at npc.c.
- Fixes npc.c discarding the '}' at the end of file, when there is no
newline. (uncovered as a side-effect of r11487)
* Empty script functions always have code now (won't report as missing
when you try to call them).
* Changed userfunc_db to not limit the name to 50 characters. [FlavioJS]
* Ground skill now can trigger every 20ms [Playtester]
- Firewall, Fire Formation and Heat now can do 50 hits a second
- this was proven to be official behavior, but it will raise CPU usage
* small timer.c cleaning
- removed "with less than 4 values, it's speedier to use a simple loop"
as this case will never occur (premature optimization from r1284)
2007/10/16
* Venom Splasher fixes according to bugreport:230
- added passive skillv*30% bonus from Poison React
- added official splash damage calculation - damage gets split by the
number of targets at range 1, then applied to all targets in range 2
- reverted some very old code - clif_calc_delay() - that was preventing
skills from displaying properly, by erroneously assuming that
if the target has ddelay 0, it has endure effect activated
* Fixed displaying of several splash skills (see bugreport:238)
- added flag SD_PREAMBLE for skills that need the 'magic' packet
(fixes Grimtooth / Cart Revolution displaying out of sync)
- hacked together Venom Splasher's "no animation for central mob"
- hacked in a custom packet to make Dragonfear display semi-correctly
* Made Venom Splasher a splash attack that distributes damage
* Commented out clif_skill_damage2() as it is not used anymore
* Fixed a copy-paste mistake in disguise code (from r5833) [ultramage]
* Tweaked the loop in parse_script to better handle when the outer
brackets aren't checked.
* Fixed a typo in skip_space that stopped skipping characters when it
encountered a '*' or '/' in a block comment. [FlavioJS]
2007/10/15
* Fixed NPC_CRITICALWOUND to reduce heal by 20% per level [Playtester]
* Fixing TK Mission asigning non spawning mobs. [Zephyrus]
* Updated the item price/sell reading code to enable 'null' values. The
difference between a blank value and 0 is that when the value is blank, it
should automatically take half/double the other value. The previous
behaviour did this automatically and didn't let you specify, for example,
if you wanted a given item to sell for 0.
* Also added a warning when an item in the db has an exploitable price
(through overcharge/discount). [Skotlex]
2007/10/14
* Rev. 11476 Implemented new skill "Enlarge Weight Limit R", [L0ne_W0lf]
and increased MAX_SKILL_TREE by 1.
* Fixed charsrever crashes, caused by r11410 [ultramage]
2007/10/13
* Fixed up NPC_POWERUP and NPC_AGIUP [Playtester]
- NPC_POWERUP: 3x ATK and 2x HIT for 10+5*level seconds
- NPC_AGIUP: 2x MOVE and 2x FLEE for 10+5*level seconds
* Some further changes to the delayfix function [Playtester]
- aftercast delay is at least amotion no matter what skill
(this includes skills with cast time AND skills with skill delay!)
- aftercast delay reductions can NEVER reduce the aftercast delay below amotion
(this includes Bragi and Soul Links)
* Again modified the delayfix function to reflect the current skill delay
knowledge. Skills with 0 delay use amotion always (regardless of cast
times) [Skotlex]
2007/10/12
* Further updates to skill_delayfix function [Playtester]
- aftercast delay can never be lower than amotion
- please report if this broke any skills
* Fixed wrong index calculation in TXT char creation code (ref: r11410)
* Fixed SQL itemdb loading crash on NULL column (ref: 11398) [ultramage]
* Updated the skill_delayfix function to behave as recently discovered by
Tharis: Skills with no delay set will use amotion ONLY if the skill was
instant-casted. [Skotlex]
* Fixed Bragi's aftercast delay reduction [Playtester]
2007/10/10
* Fixed itemdb_read_sqldb blowing up the server with segmentation faults.
* Added an option for parse_script to ignore the checks for the set of
brackets around the script. [FlavioJS]
* Implemented more official Warp Portal behavior
- the transition from active to waiting mode is now done as a simple
appearance change instead of deleting one and creating the other
- due to the above, an opening warp is now properly accompanied by
the log-in like sound effect
- Removed the check that prevented Warp Portal from opening after you
picked the destination, if there was someone blocking the cell
* Re-enabled packet 0x1ac to be sent when something gets ankle-snared
* Partially removed the usage of 'flags' to direct the execution path
in skill unit code (some people seem to really like flags >_>)
- wiped out r8478 and its multiple levels of useless flag propagation
- skill_unit_onlimit (expiration) no longer executes in skill_delunit
- added skill_unit_ondelete for proper handling of this event
* Removed 'into_abyss' effect on traps; tests show that it works ONLY
for Gemstones (tho' iRO website claims otherwise) - bugreport:171
- corrected code that was exploiting the flag as an 'expired' trap flag
(replaced it with a more jAthena-ish approach)
* Fixed a messup in r11347 causing skill units to expire, trigger
or not trigger, completely randomly
2007/10/09
* Added upgrade_svn11388.sql to correct some log column widths
* Corrected string lengths according to bugreport:198 [ultramage]
- CHATBOX_SIZE: 70 -> 70+1
- removed some too aggressive checks in clif_parse_globalmessage()
- removed CHAT_SIZE define as it actually doesn't apply anywhere
- added CHAT_SIZE_MAX to serve as a custom limit to input string lengths
2007/10/08
* Delayed the check for required items when a skill is cast to when they
are consumed. Now skills only fail due to lack of items after being cast.
- Please make a bug report if you know of any skill that doesn't work
like this in official.
* Fixed hp of other party members not being sent when you join a party.
* Removed unused global array names_id and renamed some structures that
are used with variables of the same name. [FlavioJS]
2007/10/07
* Fixed a bug on sql char server not checking the namelength of a new
character. Bug ID #184: Char Creation With An Empty Name [Zephyrus]
2007/10/06
* the mapserver won't exit when no mapcache is found, with use_grf: yes
* Fixed some \r uses, now looks better; /thx to Ai4rei (topic:165952)
* Removed that ridiculous spinner that displays during map/npc loading
- and added a more informative progress indicator (idea from jA/eapp)
* Removed loads of code that supported these functions
- -230b per npc => -3MB of wasted memory
* Fixed related npcs that erroneously used 'stoptimer'
* Checked/fixed/removed some old script and npc commands
+ cmdothernpc
- a specialized 'donpcevent' with the event specified as two arguments
+ enablearena/disablearena
- completely equivalent to enablewaitingroomevent & co.
- do we need these 'synonyms' ?
+ inittimer/stoptimer
- removed since its logic was incompatible with the code it depended on
2007/10/05
* REALLY fixed emblem not displaying when a char logs in
(compromise between r10624 and r11033 that hopefully works)
* Fixed 'Wink of Charm' - shouldn't work on boss mobs (topic:166115)
* Removed a broken remnant of code from old gospel code (r4349) that's
_supposed_ to clear the gospel status (no item use?) when you step
out of its zone; 1) the constant UNT_GOSPEL was used in a switch()
instead of PA_GOSPEL (thus actually ending 'NPC_STUNATTACK' status),
and 2) this code path is never taken, because Gospel is not recorded
in skill_unit_temp[] (it has a periodic timer and is not DUALMODE)
* Now the first empty spot in the 'skill_unit_temp' array will be used
when tracking movement between land skills; reduced its length to 20
* Fixed the skill unit mechanism that is supposed to track whether
you're still standing in a certain land skill's AoE or not, which
was not working correctly since the time it was added (r3133)
- solves the nasty problem of Loki, Quagmire, ... status not ending
even after stepping out of it in some cases, if there was another
song overlapping the skill's area (fixes bugreport:34) [ultramage]
2007/10/04
* Completed the SC_LIFEINSURANCE status and it's status icon. [Zephyrus]
- Updated Item_db.txt.
* Added SC_EXPBOOST (Field Manual), SC_ITEMBOOST (Bubble Gum) to const.txt.
Allready working [Zephyrus]
- Added SC_LIFEINSURANCE and SC_BOSSMAPINFO (not implemented)
- Updated Field Manual and Bubble Gum in the itemdb.txt file.
- As L0ne Wolf reported to me and based on Doddler information, the Bubble Gum
only do a second try of the item drop, and it don't increase the drop rates.
* Fixed a mistake in r10919 messing up logged values (bugreport:167)
* Added code that compacts the vending list after a purchase; fixes
the problem with empty positions appearing in the list (bugreport:168)
* Corrected Icewall skill to be closer to official behavior
- now works on occupied squares (previously it disappeared)
- now you can walk out of an icewall square (removed code that blocked
pathfinding if the origin cell was of a nonwalkable type)
- added back the hack where mapcell changes are broadcast to whole map
(prevents client from leaving the cells non-walkable if you warp away)
* Removed integer mob skill state/target definition support (unused)
* Added script source error reporting to countitem() (topic:167165)
* Fixed a compile problem when hotkey saving is disabled (topic:167265)
* Added MAX_HOTKEYS to supplement the HOTKEY_SAVING define [ultramage]
2007/10/03
* Added the code for Bubble Gum (SC_BONUSDROP) and Field Manual
(SC_BONUSEXP). items updated as it supose to work. [zephyrus]
* Cleaned up parts of skill.c related to skill units [ultramage]
- removed some nonsense code in skill_dance_switch() (from r8876)
- removed 'security system to prevent forgetting timer removal' (r1213)
- renamed some skill-related data structs (had same name as variables)
- commented out custom Venom Splasher countdown messaging code
* Bosses now can use teleport on Land Protector [Playtester]
- Moved the homunculus shuffle code to mercenary.c, fixing the bug in the
atcommand not using the bonus evolution stats for homunculus.
- Adding a new script command "homshuffle" to fix homunculus using NPCs.
2007/10/01
* Fixed various trading/vending glitches [ultramage]
- fixed vending_tax not working at all (integer division in r10182)
- undid change from r8273 where pc_getzeny() treated zeny overflow as
an error condition; officially, the value is just bounded to MAX_ZENY
(this fixes stuff like shops that you can't buy items from).
- fixed stupid code that, instead of properly checking and filtering
invalid items during shop setup, opted to 'hide' these items from
the vending list instead...
- removed some custom error message packets related to vending
- fixed a glitch where the server would open a shop with no items
when all entered items were tagged as invalid
- split zeny handling from trade_tradeadditem() into a separate func
- removed loads of redundant code from vending.c
2007/09/30
* Removed redundant 'subnet' s_subnet structure variable. [ultramage]
2007/09/28
* Changed back the query to get the friends of a character to a LEFT JOIN.
* Setting the item script variables to NULL when they are freed. (bugreport:142 ?)
(a double @reloaditemdb might result in a double free) [FlavioJS]
* Rev. 11325 Corrected Summer Outfit not included as a PC class. (Zephyrus_CR) [L0ne_W0lf]
* Rev. 11321 Implemented Summer Outfit care of Zephyrus_CR. [L0ne_W0lf]
- Increased MAX_GUILDCASTLE in mmo.h to 29 for future implementation
of the 12.1 Guild Castles.
* Fixed sql target not including the save target in the Makefile, needed
by the map server for save/mapreg.txt. (bugreport:131) [FlavioJS]
2007/09/27
* Loot code using charid's instead of id's in pick priority.
* configure script using svn:eol-style LF and require mysql/pcre when
--with-mysql/pcre is used.
* Reimplemented mmo_char_fromsql using sql statements. (fixes bugreport:93)
* Fixed buildin_gethominfo not being included in the script engine. (bugreport:124)
* homunculus_evolution -> homevolution in script_commands.txt.
* Deleted item DEFAULT from item_db.txt and regenerated item_db.sql. (bugreport:103)
* Skip empty lines and give more feedback (for invalid lines) when reading
item_db.txt/item_db2.txt. [FlavioJS]
2007/09/26
* Rev. 11307 Implemented Token of Siegfried effect care of Zephyrus_CR. [L0ne_W0lf]
2007/09/25
* Modified a bit the hard/lazy ai triggers to match aegis (you can alter
these changing the defines near the beginning of mob.c):
- Mobs go into active AI when they are 2 cells from entering a player's
view (ACTIVE_AI_RANGE)
- Mobs in passive AI no longer use skills.
- Mobs in passive AI do not random walk UNLESS they have entered active AI
before (random walk frequency is not lost during passive AI).
* Added an additional check to prevent support skills from being blocked if
the target has an armor element that blocks it. [Skotlex]
* Fixed the double free's caused by r11290 (wrong option in the database
constructors). [FlavioJS]
* Corrected being able to cast multiple Gravitation Fields before the
previous one is cancelled. [Skotlex]
* Disabled tick cache (to enable it: define TICK_CACHE to the number of
calls that should be cached).
* Added a charid2sd database for fast charid searches.
* Reworked the nick cache to only contain offline characters. [FlavioJS]
2007/09/24
* Ignore %MDef bonuses now only reduce target's base MDEF, not MDEF2.
* Updated the 'skills that cause no damage are blocked now if the skill
element is blocked by the target' to only apply if the skill has a status
change associated (fixes Resurrection/Heal being blocked).
* Added a warning to prevent loading mobs with IDs that belong to the clone
range. [Skotlex]
* Limited manual detection of data truncation to string/enum/blob columns.
* Renamed conf-tmpl to conf. [FlavioJS]
2007/09/23
* Added flag svn:executable to the configure script.
* Added code for MySQL versions (below 5.0) that don't have
MYSQL_DATA_TRUNCATED.
* map_addflooritem and struct item_drop_list using id's instead of
struct map_session_data's (fixes bugreport:36).
* Fixed buildin_escape_sql not properly escaping in sql servers. [FlavioJS]
2007/09/22
* Fixed a severe bug in inventory saving code (caused by r11192)
* Applied changes to clif_parse_globalmessage() from my WiP code
- clearer processing of the individual packet components
- proper code ordering, some more integrity checks
- fixes to some poorly chosen ShowWarning() format strings
- global chat logging no longer logs the entire string (w/ player name)
* Fixed global chat logging always crashing on a null pointer
* Added 'safestrnlen' to prevent null pointer crashes [ultramage]
* Updated sql files [Playtester]
* Added a sanity check for MAX_ZENY (doesn't compile if too big).
* Redid the buildin_query_sql function. (fixes bugreport:81). [FlavioJS]
2007/09/21
* itemdb.c/h using a static array of 32k struct item_data* entries (faster
itemdb loockup and a first step to remove map_session_data->inventory_data).
* Fixed a typo in the configure script that replaced CFLAGS with CPPFLAGS
when -Wno-pointer-sign is supported by the compiler. [FlavioJS]
* Fixed a typo in the status-change saving code (wrong variable used)
* Fixed a case of bad sql code conversion breaking homun skill loading
* Corrected skill Charge Attack as described in bugreport:67 [ultramage]
- cast time is between 100% and 300% (+ infinite waiting fixed)
- damage is also between 100% and 300% (doesn't increase past range 9)
- added knockback that's equal to the distance to target
- no longer causes teleportation on WoE grounds
- if target runs behind an obstacle, the skill will still teleport you,
but will not perform the attack or do knockback
- this should be official behavior, so enjoy the weirdness!
* Makefile deleting .svn in save folder.
* Limited the number of packets parsed per cycle to 3.
* Fixed sql login throwing an out-of-place debug message and escaping too
much of the name string when creating a new login with _M/F.
* Configure script detects 64bit distributions of MySQL.
* Generated the configure script with cygwin's autoconf. [FlavioJS]
2007/09/20
* Merged the tmpsql branch: [FlavioJS]
- Abstraction for the sql code (sql.c/h).
- New configure script and makefiles.
- Restored txt zeny logging code. (r10814)
- Rewrote mapserver's sql code - itemdb, mobdb, mapreg, logs. (r10814)
- Fixed a precedence issue (&& and ) in char_sql/char.c. (r10833)
- Improved db reading code a bit for consistency. (r11077)
- Added separate atcommand for mail deletion. (r11077)
- Corrected a few messages that said "new" instead of "unread". (r11077)
- Broadcast (*) messages now use "*" as the target's name (not ""). (r11077)
- Moved StringBuf code from utils.c/h to strlib.c/h. (r11084 r11117)
- Some misc login server cleanups (reformatting etc). (r11136)
- Corrected/modified some header entries. (r11141 r11147 11148)
- Adjusted VS project files. (r11147)
- Adjusted the way the sql charserver does item saving. (r11192)
- Corrected usage of reserved keyword 'friend' in mmo.h. (r11192)
2007/09/17
* Several skills with a splash area (except ground based ones) will now hit
Ice-walls when casted by mobs.
* Cleaned up and fixed monster_ai&0x40 (chase through warps). It works
correctly now regardless of the number of players on the source/destination
maps.
* Updated sql files [Playtester]
* Applied various crash-protections to script commands that deal with the
equip-position array.
* Corrected and simplified the skill_magic_reflect function. Fixed damage
reflection being based on the caster rather than the target.
* Potions are now usable inside Gospel by the casting Paladin (as per Aegis
tests done by AuronX)
2007/09/14
* Some changes brought up by AuronX (see topics 160295 and 149176):
* Gravitional Field is now a MISC type of attack.
* Magic reflection now effectively switches the caster/target (after damage
has been calculated). Moved magic return and Magic Mirror code together
with Kaite.
* Now when GTB completely blocks a spell, the spell animation will still
come off, but with a single bolt and MISS damage.
* Removed hom_setting&0x2 since Homunculus can be hit by land spells.
* Monster Property now gives a Skill Failed message when attempted on
players.
2007/09/13
* Corrected SG Miracle to trigger per attack, not per walked tile. Trigger
rate is now 0.02%
* Corrected the warmth skills not clearing up correctly the previous field
when you place another one down.
* Corrected vit not affecting the HP bonus that Super Novices, Ninjas and
Gunslingers get. [Skotlex]
2007/09/12
* Fixed a typo in r11179 causing party invitation to fail
* Added SI_STEELBODY properly (value from packet capture) [ultramage]
2007/09/10
* Corrected /invite letting you invite people even if you are not the party
leader.
* Added some reply messages when you try /invite and a. the character is
not found or b. you are not the party leader.
* Added a check so that the 'save on crash' routine won't get stuck if it
happens to crash while attempting to save characters.
* People in chat-rooms no longer receive @main messages. [Skotlex]
2007/09/10
* Added a safeguard to skill_get_unit_layout() against incorrectly
defined layout ids (will give weird results but won't crash at least)
* Fixed Firewall/Icewall being oriented backwards (no real difference..)
* Removed some junk Landprotector/Graffiti code
- Graffiti doesn't get placed randomly anymore
* Icewall can now be cast on yourself
- TODO: for some reason, the cell on yourself immediately expires...
* Merged together functions clif_set0192() and clif_changemapcell()
- also removed its "send to whole map" mode which is just plain wrong
(although aegis actually does use it to 'inform' caster about changes)
* Added config option to adjust exp gained by 'getexp' [ultramage]
2007/09/09
* Removed bonus bAddEffWhenHitShort as it is unneeded and unused.
* Corrected getpetinfo so it actually returns "null" when there's no pet
and you request the name (the docs state it so).
* Added gethominfo (which behaves in the same way as getpetinfo).
* Corrected bonus3 bAutoSpell(WhenHit) to select target enemy (rather than
self) for skills with inf self and inf2 'don't target self' (aka:
auto-select target skills).
* Corrected map_foreachinpath to do a wall check for targets beyond the
initially selected tile.
2007/09/09
* Modified bonus3 bAddEff/bAddEffWhenHit so that the last parameter is now
passed directly as "trigger" flag. The possible trigger values are
ATF_LONG, ATF_SHORT, ATF_TARGET, ATF_SELF. Explanation added to
doc/item_bonus.txt [Skotlex]
* Updated sql files [Playtester]
2007/09/08
* Adjusted a spot that still blocked GL's skills on login [ultramage]
2007/09/07
* Added support for the new party invite/reply packets from the latest
client version.
* Added auto-rejecting party/guild invites when the target is disconnected
from the server.
* Changed the default @Main format to prevent crashes in the newer
clients.
2007/09/04
* bonus3 autospell (and autospell when hit) will now select for spell
target self when the skill is tagged a support skill.
* Increased the amount of autospells that can be held at a time from 10 to
15
* Changed the "autocasted strip skills don't have a duration" to apply only
to Full Strip.
* Magic Mirror's duration now is reduced /15 when used on players.
* Removed bonus bAddDamageByClass since it is not needed, and implemented
bAddDefClass which can be used for the same purpose (but previously was
doing nothing).
2007/09/03
* Added bonuses bSPRegenRate, bHPRegenRate. They behave like the opposite
of bHPLossRate/bSPLossRate, making you gain x Hp/Sp every y ms.
* Added bonus bIgnoreMdefRate, used to ignore a % of the target's mdef when
using magic attacks (bonus2 will ignore part of the mdef of all targets,
bonus3 receives a race argument)
* You can now use bonus2 bCastRate to adjust the cast rate of a single
skill.
* Cleaned the code for bleeding (hp-loss) and extended it to handle regen
as well.
* Some small cleanups in the pc_bonus functions.
* Removed bonus3 bHpLossRate since it was doing nothing and is not used.
* Corrected bGetZeny bonus to be like in Aegis. The amount received is from
1 to the given amount, you can use negative zeny values to use an amount
dependant on mob's level (amount*lv).
* Updated doc/item_bonus.txt with all these changes.
* Anti-Magic/Stone-Skin now increase/decrease def/mdef only and in an
absolute mode (+20*lv rather than +20%*lv). Also the duration is greatly
decreased (x/15) when used on players.
* Now when a player uses a strip skill without having it in the skill tree
(auto-casted) the duration will be 0, the equipment will be stripped
without causing the status change that blocks reequipping.
2007/09/02
* Added @whereis command (displays normal spawn maps for given mobs).
Defaults to a lv10 command. [Skotlex]
* Updated Refined Sakkat Box to give only 1 Sakkat instead of 10. [Paradox924X]
2007/08/31
* Added some comments to clif_changechatowner()
- totally broken, see the code + topic:163829
* Implemented the chatroom display packet properly
- now has 4 types: public, private, npc and non-clickable npc chatroom
* Implemented the chatroom leave packet properly
- now utilizes the 'kicked' flag when the user was forced to leave
- TODO: banlist support to prevent re-entry, see jAthena code
* Documented/cleaned up chatroom code and packetry [ultramage]
2007/08/30
* Updated sql files [Playtester]
2007/08/29
* Added bonus bSkillHeal to distinguish offensive skill damage increases
from healing power boosts.
* Moved battle_skillatk_bonus to pc.c, cleaned up the related skillatk
bonus code to consider the skillheal bonus option. [Skotlex]
2007/08/23
* Updated athena-start & start to Shazeya's hack. Please test them! [DracoRPG]
- Simplest way is to run ./start that is equivalent to Windows runserver_sql.bat
- To run TXT instead, edit the beginning of athena-start with proper filenames
2007/08/22
* Fixed Dragon Fear's status change selection and duration.
* Fixed Metamorphosis not displaying a speed-change update on the client.
* Status changes that were blocked by element are no longer blocked,
instead, now no-damage skills are blocked if they have an element which is
absorbed by the target (This is the behaviour that Tharis believes is
correct). [Skotlex]
2007/08/19
* Set proper limits to drop rates, prevents int overflow during calc
* Cleaned/clarified some #include relationships between headers
- TODO: pc_read_gm_account() still accessses the RFIFO directly!
* Again removed the IG_ list from itemdb.h (see r10100 and r10113)
2007/08/18
* Fixed a deallocation mistake and some buffer overflows in npc_chat.c
after doing rtfm@pcre.txt (all caused by incorrect usage of pcre api)
* Removed underscores in npc_chat.c's variable names (easier to read)
* Moved npc pcre-data deallocation from npc_remove_map to npc_unload
2007/08/17
* Implemented the official dual-wield aspd equation [ultramage]
- using 0.7 instead of 0.66 as modifier (so aspd will be lower now)
- see topic:151132 for details
2007/08/16
* Fixed eAthena's wrong interpretation of the respawn times [Playtester]
* Added icons for NPC_CRITICALWOUND and NPC_SLOWCAST [Playtester]
* Fixed npc chatrooms not being deleted on npc unload/reload (crash)
* Modified chat code a bit for more clarity [ultramage]
- replaced double-indirection on 'owner' with a normal pointer
- separated some common functionality to 'chat_createchat()'
2007/08/15
* Merged and completed Latio's work on server-side hot-key saving
(http://www.eathena.ws/board/index.php?s=&showtopic=159388&view=findpost&p=884453):
Now hotkeys are stored server-side (table hotkey in SQL servers, file
save/hotkeys.txt for TXT servers). You can disable this behaviour by
commenting out the 'HOTKEY_SAVING' define in mmo.h
* Apply upgrade_svn11018.sql to create the hotkey table. [Skotlex]
* Some serious code cleanups
- adjusted @reloadbattleconf to not depend on variable ordering
- changed all battle vars to 'int' (removes pointless duplicit coding)
- added min, max and default columns to battle config data structure
- added properly bounded values for these columns (or at least tried to)
- battle-conf loading will now complain if it finds unknown settings,
and will reject values that are outside of the allowed range
- added CHATROOM_TITLE_SIZE and CHATROOM_PASS_SIZE
- partially cleaned up chatroom manipulation code
2007/08/13
* Modified map_foreachinrange so that you can also specify the max length
of the path to use. The max_count field in the skill_db is used to specify
this range for path-type skills (Sharpshooting, Kamaitachi and the NPC
Breath skills.
* Implemented the 'new' NPC skills described here:
http://ro.doddlercon.com/wiki/index.php?title=Monster_Skills . It is mostly
complete, but the new status changes (slow cast, critical wounds, etc)
don't have any visual effects yet (icon or opt changes? I don't know if
they should have). Also I could not find the unit_id for Evil Land, so it
looks just like Sanctuary for now. Apart from those, the only skills which
I couldn't get to display properly are the Breath skills (with the
exception of Fire Breath).
* Corrected gtb_sc_immunity setting not taking effect if your block value was
the same (that is, if the config said 30%, then you would only get status
change immunity at 31%, nor 30%) [Skotlex]
* Fixed a small error in the script_commands documentation about getpartyleader. [Paradox924X]
* Corrected skill-based hp/sp regen, expect slight increase [ultramage]
2007/08/10
* Updated item_db.sql [Playtester]
2007/08/09
* The new functions now clear junk from the output buffer [ultramage]
2007/08/08
* Moved damage logging to mob_log_damage, now non-damage targetted (or
splash) skills also get logged into the monster's 'damage history' which
affects the exp-bonus per attacker setting.
* Implemented the evolution stat growth bonuses for homunculus.
* Updated the @homstats command to show evolution bonuses
* Corrected initial intimacy of a newly created homunculus (should be
21/1000) [Skotlex]
* Cleaned up junk left in the code by the mapcache/mapindex update
- Added mapindex_getmapname(_ext) to help with ".gat" adding/removing
- Moved related processing to the interface (prevents duplicity)
2007/08/07
* Expanded isloggedin script command to support an optional argument (char id)
* Expanded warpparty command to accept target "Leader", this will warp the
party to the leader.
* Added a summon structure to handle non-dead-branch mob-groups since the
current implementation totally fails for mob groups that don't have MANY
integrants.
* Fixed mobs not attempting an IDLE skill right before unlocking a target.
[Skotlex]
2007/08/06
* Slightly deobfuscated the max-hp calculation functionality
- fixed hp/sp calc code adding extra few points from item bonuses
* Added a null-pointer check to skill_initunit() to prevent a crash
* Added a while() loop to the client packet processor (for performance)
* Added support for kRO 2007-05-14aSakexe langtype 0 login packet 0x2b0
2007/08/04
* Removed weird mvp reward item drop behavior (see topic:160077)
* Fixed Cart Revolution not transferring status effects on attack,
and Cart Termination doing it when it shouldn't (see topic:156745)
* Fixed #refine not accepting names with spaces in them
* Fixed disguises not doing sit-down properly (missing self packet)
broken since r6299 stable / r5833 trunk [ultramage]
2007/07/30
* Updated sql files [Playtester]
* Corrected pet taming code; items are consumed immediately and only 1x
- TODO: add proper code for people who want delayed consumption
2007/07/28
* Removed ridiculous refine_posword config switch
- TODO: remove getequipname() func, it can be fully replaced by editing
a few scripts, plus it doesn't do what the docs say it should do
* Fixed a silly mistake in the main script engine loop ('pos' variable)
* Fixed monter -> monster typos
* Compacted some script function code (fewer LoC -> faster trac ^^)
2007/07/27
* Simplified exp gain equations (now more FPU-friendly and precise)
- also fixes the uninitialized variable problem... sorry 'bout that >.>
* Changed the way hit bonus is applied.
http://www.eathena.ws/board/index.php?showtopic=157438 [Vicious]
* Cleaned up mob drop code, crashfix is still needed though...
* Reduced ignore-list length to 20, added proper reply packet
* Cleaned up some very poorly written pm-ignore code (see r141)
* Fixed a typo in Warp Portal code displaying an incorrect map name
2007/07/25
* Fixed a missing homunculus info packet when doing @refresh
* Added support for character rename packet (only dummy code for now)
* Added support for langtype-12 char deletion packet (tested, works)
* Synchronized txt/sql charserver code a bit
* Adjusted motd.txt to not crash new clients
* Removed some dead code from the charserver (see r352)
2007/07/24
* Fixes on Venom Splasher and the like (see topic:152975) [DracoRPG]
- VS / Envenom / Throw Venom Knife poison chance raised to 10+4*lv %
- Removed chance to be poisoned when hit if you're a VS time-bomb
- Adjusted bomb timer to correct values (5.5+0.5*lv sec)
- Removed damage boost from Poison React
- Now ignores EDP damage boost
- Prevented use on bosses
- Fixes still needed for recast restriction and splash damage
* Removed Emperium-damaging ability from Gloria Domini [DracoRPG]
2007/07/23
* Changed the restricting mapflag for @jump from nowarp/nowarpto
to noteleport. Adjust your scripts if you were using it this way.
2007/07/20
* Corrected packet_db.txt. See topic:158382 for details.
As a side-effect, the latest packet version is now 22 instead of 21.
* Added a charserver config option for the character renaming flag,
along with a detailed comment on what it's supposed to be. This
eliminates all that "change PACKETVER to 8 and recompile" mess.
* Moved PACKETVER back to clif.h, cleaned the related code a bit.
2007/07/18
* Added delay_dependon_agi since people actually use and need it...
* Small update to the effects list (new exe's effects by Au{R}oN)
* No sending of the pet_equip packet when pet has no equip (thx2Skotlex)
* Added back exp gain limiting for old formula to stop exploits (see r8177)
* Now a message is printed when the packet_ver filter rejects someone
* Renamed two structs using same name as variables (MSVC debugger issue)
2007/07/13
* Fixed yet another script engine typo, this time in 'copyarray' [ultramage]
2007/07/09
* Rev. 10872 Removed a comment I had placed on line 6879 in Skill.c. [L0ne_W0lf]
* Rev. 10870 Alchemist skill "AM_CANNIBALIZE" ("Summon_Flora") now [L0ne_W0lf]
summons the proper monsters.
2007/07/07
* Fixed typo in 'deletearray' messing up the script engine
* Added a check to pc_skill() to prevent crashes on unknown skill ids
2007/07/06
* Cleaned up some nasty code related to skill_blown
- split 'direction' value from flags
- moved (almost) entire direction calculating code to the outside
- bowling bash now has the 'suck-in' effect (knockback is now done
in the direction you were last facing, not in your-target direction)
2007/07/05
* Fixed pet equip and pet hairstyle packet sends [ultramage]
* Fixed NPC_STOP's visual effect not clearing when the status ends
* Corrected @homshuffle making the skill tree be lost.
* Corrected homunculus skills being unusable if the master was sitting or
inflicted by a disabling status (eg: petrify, stun)
* Some fixes to the cell no stacking mod (mainly mobs would just get stuck
behind each other and not properly surround you). [Skotlex]
2007/07/04
* Fixed a copy-paste typo messing up script variables pretty bad D:
2007/07/03
* Fixed a typo in script engine erroring when working with char params
* Made Homun Resurrection only fail on cast-end (see topic:155223)
* Re-coded 'soundeffectall'; removed the third parameter ('coverage')
- adjust your scripts if you use this command [ultramage]
* Defined out a problematic piece code in conv_num.
* Added reporting of constant and param script data.
* Fixed an incorrect check in menu script command. [FlavioJS]
2007/07/02
* Undid the change from r10298, frozen status again modifies def/mdef
2007/07/01
* TXT->SQL converter fixup [ultramage]
- Added missing char_id insert which totally messed up the conversion
- Fixed login converter ignoring many columns (although it had the data)
- Pointed out that Login-stored account variable conversion is MISSING!
- Pointed out that Status, Homunculus and Mapreg conversion is MISSING!
- Blocked the config functions from exiting server when file not found
- Finally added VS8 project files for this thing
2007/06/28
* Added a missing line to enable @displayskill atcommand [DracoRPG]
2007/06/26
* Changed the string hash of the script engine to SDBM.
* Reporting information about script data when an error occurs.
* More work on ticket #41 (array functions). [FlavioJS]
2007/06/22
* Changed behavior of some guild-related code (according to X.4 tests):
- removed code that prevented Homunculus Resurrection during WoE
- logging in doesn't activate the 5 minute guild skill block anymore
- non-Urgent guild skills can now only be cast on WoE grounds during WoE
- all guild skills now have no cast delay (previously was 1 second)
- casting guild skills will now block FreeCast sages from walking
- Battle Orders and Regeneration are now instacast
- Restoration now has a 10 second cast time, reducible only by dex
- Urgent Call's cast cannot be reduced anymore (not even by items)
2007/06/15
* Fixed script command sc_end not supporting the extra argument as stated
in script_commands.txt.
* Script command getarg supports an extra argument with a default value
that is returned if the requested argument doesn't exist. [FlavioJS]
2007/06/11
* Fixed NPC_PROVOCATION (now the casting mob doesn't keep attacking)
* accumulated clif.c fixes [ultramage]
- Fixed pet equip not displaying correctly at all
- Removed old fixpos packet (the 'new' one is way smaller)
- Fixed some major logical typos in the code, cleaned up many places
2007/06/10
* Rev. 10745 Updated itemdb.h with the two new item group values.
(38 and 39) Why are they static anyway? [L0ne_W0lf]
2007/06/09
* Added 'nosave' mapflag to que_bingo for Bingo system purposes. [SinSloth]
2007/06/04
* Fixed the compilation problem from r10668
2007/06/03
* Fixed a bad copy-paste from r10028 letting players escape jail
(char was dead on login, so statuses (SC_JAILED) couln't be applied)
* Fixed missing client update when 'return to savepoint' fails [ultramage]
2007/06/02
* Displaying op names instead of numbers in script engine errors.
* Fixed a bug introduced in the last rework of the fame ranking.
* Created safestrncpy that ensures the string is nul-terminated. [FlavioJS]
2007/06/01
* Updated sql files [Playtester]
* Fixed ircbot not processing new users
2007/05/29
* Hopefully fixed the vsnprintf incompatibility
2007/05/28
* Fixed an infinite char-server loop on the map connection [ultramage]
* RFIFOREST returns 0 when the session is eof (input data is implicitly
discarted).
* Reworked the player fame update: [FlavioJS]
- would crash if an invalid pos was received
- the wrong player could be updated on certain conditions
2007/05/26
* Identified several more glitches, too tired to fix these...
* Fixed server not removing member minimap dot when you leave a guild
* Fixed server not sending party/guild info when you enter a map
* Fixed guild emblem not showing when you log in (caused by r5359)
2007/05/25
* Fixed @statall giving you +99 stats instead of setting them to 99
* Fixed npctalk and @npctalk displaying the # part of the name
(client filters these when you request the name of the npc, btw...)
2007/05/23
* Added new flag to skill_castnodex.txt, to allow per-skill tweaking
of cast time and delay reducibility by item scripts (cards and such)
* Fixed Martyr's Reckoning never triggering for gms with all skills
* Added MO_TRIPLEATTACK and RG_SNATCHER to @skillall's skill filter
* Made gm_skill_unconditional bypass skill blocking (guild timer, etc)
* Reverted the weird delay_dependon_agi thing (r8923, r9055, r9059)
* Changed a few memsets to strncpy (reading past buffer is a bad idea)
* Sped up some memset operations (multiples of 4 are faster)
* Fixed a typo in Chase Walk code, /thx to zephyrus_cr [ultramage]
2007/05/22
* Updated sql files [Playtester]
2007/05/21
* Since the fifohead mess is gone, fixed leftover bad code structuring
* Removed the TURBO socket mechanism - it was in fact just using a
variable to cache a few arithmetic operations (premature optimization)
2007/05/20
* Fixed Chase Walk having a deactivation cast time (should be instant)
* Changed status calc to allow value 0 stats; aegis allows
negative values, but eA is unsigned in this regard, so ...
* Added positional music effect to Battle Chant / Gospel
- see r10588 on how to disable it if it annoys you ^^;
2007/05/19
* Added Global chat and Main chat logging
- lowered the priority of the 'logging off during gw' filter
* Fixed server crashes when you use long hostnames (/thx to Ancyker)
* Removed the wtf-y mmo_char_fromsql_short() from r2527 [ultramage]
* Fixed drops of Thanatos Dolor & Thanatos Odium regarding the quest. [SinSloth]
* SQL files fixup
- extended convert_engine_myisam and added innodb version
- changed the max. email length to 39 (to match value in source code)
- added comment for storage/guild storage picklog entries
- changed SETs to ENUMs, which is the proper data type in logs
- fixed incorrect defaults, shortened mapname lengths to 11
- use upgrade_svn10575_*.sql to apply changes
* Removed the vsnprintf->_vsnprintf define for VS9 [ultramage]
* Corrected the problem with countitem2 [ultramage]
2007/05/14
* Updated sql files [Toms]
2007/05/11
* Updated the effect list a bit, changes by Au{R}oN
* Re-phrased the attacker flee/def penalty config descs [ultramage]
Ref: http://www.eathena.ws/board/index.php?showtopic=150918
* Attempt to fix unwanted teleporting of immobile mobs [Playtester]
2007/05/10
* Adapted the shortlist to use a static array instead of a linked list and
enabled it.
* Added Buuyo-Tama's shortlist for send/eof sockets (defined out for now).
* Replaced toupper/tolower in ladmin by TOUPPER/TOLOWER defines. [FlavioJS]
2007/05/07
* Fixed warpwaitingpc not working (bug introduced in r10471). [FlavioJS]
* Added a check to login_sql against too long db-stored emails [ultramage]
* Removed an unused variable in script.c [Toms]
* Fixed Converters not overwriting each other [Playtester]
- thanks to scerez for the fix
2007/05/06
* Removed the dependency on winsock.h for definitions, it's all winsock2.h now.
* Minor documentation/re-coding in chat.c.
* More work on ticket #41. [FLavioJS]
* Fixed Red Pouch overriding nobranch mapflag [Playtester]
* Attempt to fix Kyrie Eleison not castable on enemy players [Playtester]
- please test, I can't double client to test it in pvp
- don't forget to recompile before testing
2007/05/04
* Added an optional read-from-GRF/GAT map loading system back in.
- It can be turned on with the use_grf flag in map_athena.conf.
- The conf/grf-files.txt becomes relevant again. [blackhole89]
* Removed the cyclic map.h<->status.h dependency, which allowed me to
also remove the annoying/memory-wasting MAX_STATUSCHANGE define
2007/04/30
* Ladmin fixes
- Added vs8 project file for ladmin
- Replaced all occurences of printf in ladmin.c with ShowMessage
- Fixed ladmin working with ips using the wrong byte orer
* Fixed @jumpto displaying the incorrect player name
* Added more safeguards to socket.c against socket ids out of range
TODO: session[] array isn't explicitly zeroed; is that a good thing?
2007/04/29
* Fixed login_sql ipbans not working
* login server will now bind only after finishing the init phase
* Tried and fixed md5 password encryption [ultramage]
- login_sql was doing stupid things like re-using one pre-generated
key for all connections, and escaping binary md5 data (destroying it)
- added missing code to login_txt when creating new accounts, showing
that storing passwords as md5 hashes never really worked for txt
- removed PASSWORDENC's conditional compilation effect, now just a flag
- greatly simplified md5 password checking code, credits to eapp
* Internal changes to the script engine: [FlavioJS]
- modulus division detects division by 0.
dividing by zero stops the script and gives an error
- underflow/overflow messages differentiated (warnings)
- when a script function doesn't return a value, a C_NOP value is pushed
instead (avoids stack corruption)
- op_add merged with op_2+op_2num/op2_str
- better type checking in the operators, int/string is never assumed.
The script ends when an invalid type is found.
- other minor code cleanups
2007/04/26
* Corrected High Jump so it works on Guild Castles when WoE is off.
* Moonlit petals now always knocks to the back of the character rather than
pushing the character away from it's center.
2007/04/25
* Modified the mob ai think time update after using skills from
adelay/amotion to 100ms since the previous method adds a large delay before
the AI activates again (which screws up with the timing of idle/walk
skills)
* NPC_MAGICALATTACK now starts a state similar to Sacrificial Ritual, in
the sense that every normal attack afterwards becomes a Magical Attack. The
skill duration is 15 secs. [Skotlex]
* Added missing Rachel quest map [Playtester]
* Ganbantein now deletes individual skill cells instead of the whole skill
in the area it is casted.
* Modified the mob total damage code to prevent overflows when mobs receive
over 2kM damage. [Skotlex]
* Spider Web / Fiber Lock status cannot be dispelled now [ultramage]
2007/04/24
* All mob casted skills have a fixed range of 9 now.
* Pressure no longer vaporizes plants.
2007/04/23
* Fixed bug which totally broke item group bonuses.
* Added warnings when setting a pvp/gvg flag removes the other flags on the
same map (gvg and pvp can't coexist on the same map)
* Removed the check that prevented you from casting soul-collect when you
already have 5 spirits.
* Corrected Magic Rod so it doesn't displays any skill-use animation until
it triggers.
* Corrected Steel Body's icon (it actually belongs to AutoBerserk)
* Debuff on logout&2 is again set to default, instead of removing food
bonuses now it removes Maximize Power, Maximum Overthrust and Steel Body.
[Skotlex]
* Extended the functionality of StringBuf - length and appending a string.
* menu/select/prompt script functions support grouped and empty options.
The selected option number is consistent with them.
* More work on ticket #41. [FlavioJS]
2007/04/22
* Corrected crash if itemskill is used without an attached player.
* Removed range checks for autospells as per UltraMage Aegis tests.
* Added chatID skill fail check to skill_check_condition
* Corrected @refresh not re-displaying your spirit spheres nor re-setting
your cloth dye.
* Now the "number of attackers" in mob_dead is counted only from online
characters on the same map.
* Updated the autospell bonus scripts so you don't have to specify all the
attack type criteria. If neither of BF_LONG/BF_SHORT is specified, the
spell will trigger on both. If neither of BF_WEAPON/BF_MAGIC/BF_MISC is
specified, the spell will trigger on BF_WEAPON, if neither of
BF_NORMAL/BF_SKILL is specified, BF_SKILL is used if the trigger is
BF_MAGIC/BF_MISC and BF_NORMAL is used if the attack is BF_WEAPON. This way
the default when nothing is specified is
BF_NORMAL|BF_WEAPON|BF_SHORT|BF_LONG. [Skotlex]
2007/04/21
* Removed the +25% mdef, -50% def effect from Freeze status
* Changed autocast skills, they now only work with normal attacks!
Ref: http://www.eathena.ws/board/index.php?showtopic=138159
* Fixed a few spots where attack_type was getting truncated
* Hopefully fixed the cygwin + size_t problem (using stddef.h as source)
* Added ntows() to properly handle that client port number deficiency
* Adjusted the packet_db array for a more consistent look [ultramage]
2007/04/20
* Cleaned up the doc folder. Removed outdated, untranslated, useless files
and began normalizing a bit other ones~ [DracoRPG]
2007/04/18
* Added MEXP overflow checks. [LuzZza]
* Added bonus5 bAutoSpell/bAutoSpellWhenHit. The new parameter is used to
specify when the spell should trigger (melee/range + weapon/magic/misc
attack), see doc/item_bonus.txt for details. [Skotlex]
* Changed some %lu to %u in login_sql/login.c because uint32 is now
an unsigned int [Toms]
* Discarded extra deflate function needed for afm reading [ultramage]
- as a result, discarded the whole chain of support functions, .c files
and includes needed to make that one function run
- also removed zlib compile/link dependencies where they are not needed
- reduced the whole zlib package into two core include files
- adjusted makefiles / project files to reflect this change
2007/04/17
* Massive at+charcommand cleanup, big thanks to HiddenDragon [DracoRPG]
* Partially deobfuscated the grfio module
* Finally fixed mingw problems, managed to build both TXT and SQL
* Fixed the uint32 platform problem (Microsoft failed so I removed it :)
* Removed the cbasetypes.h dependency from the mapcache generator
* Removed some random compilation warnings [ultramage]
* Small bugfixes and enhancements to the map cache generator [DracoRPG]
2007/04/15
* Fixed 'randomtarget' picking dead characters.
* Adjusted Spiral Pierce, Shield Boomerang and Shield Chain to use atk2
instead of weight when used by non-players.
* Adjusted skills blindAttack, SilenceAttack, StunAttack, PetrifyAttack,
CurseAttack, SleepAttack, Lex Divina and Dispell to be area effect skills,
if the used skill level has a splash-range different from 0.
* Mob used Meteor Assault is able to hit icewalls now. [Skotlex]
2007/04/15
* Fixed TXT char creation blocking characters with nonstandard names
2007/04/13
* Committing some accumulated stuff [ultramage]
- makefile typo, maps_athena typo, svn:eol-style native for some files
* Changed the meaning of inf2=0x1000. Now it is used to "disable usage on
enemies", which only works for non-aggressive (inf!=1) skills.
* If a skill is party/guild only (inf2 0x400/0x800) it will also be
castable on enemies if the skill's inf is 1 (offensive target)
* Corrected the mob behaviour when it locks into an enemy it can't chase.
Previously it would get stuck on a lock->unlock->lock loop, with each
unlock resetting the "random walk" timer, causing the mob to just idle in
place. Now they will attempt idle skills and no longer reset the "random
walk" timer, so they behave as if they were in Idle state properly.
* Now the bonus bAtkEle will be transferred directly to the weapon when the
script is in the ammunition, and you are wielding a weapon that consumes
ammo per atttack.
2007/04/12
* Trade-requests now fail if the target is in a NPC.
* Some cleaning of the castend_map code to prevent the menuskill variable
from not being cleared if you made a choice but the skill was not triggered
(due to silence, stun or whatever)
* Cleaned up a bit the Charge Attack casttime equation, should prevent
infinite casttime when the distance is 0.
2007/04/11
* Now when an object changes speed, the old move-packet will be used on the
next movement, which should update the object's speed from that point and
on-wards. This is done since there appears to be no way to tell the client
a given object's speed has changed.
* Modified spirit of Wizard so that the consumption of 'Fragments' when
blocking bounced spells will only consume 1 Fragment per skill casted,
regardless of how many hits were reflected.
* Modified status_get_sc_def to handle both rate and tick reductions. This
way it can take care of the fact that curse rate/duration reductions are
not reduced by the same stats. Curse duration is now reduced by vit.
[Skotlex]
* Removed an ugly cast in socket.c
* Fixed Makefile (-Wno-unused-parameter was added twice with gcc4) [Toms]
2007/04/10
* Recoded and renamed the trim function in strlib to normalize_name.
* Added a proper trim function to strlib.
* Cleanups at npc source file adding/removing.
* Changed db key from 'unsigned char*' to 'const char*'.
* Defined out the dump function in util.h/c. [FlavioJS]
* As an experiment Corrected many /W4 warnings on the txt login server
* Played around with MinGW a bit today... [ultramage]
- adjusted code so that it handles mingw-specific compatibility problems
- adjusted the makefile, mingw is not a subset of cygwin
2007/04/09
* Now when saving a character, only the cart/peco/falcon 'option' states
are saved, the rest should be handled by the status change load/save
functions. This saves 'permanent' cloaking/hiding and other such oddities
if the server is unable to save your status changes on logout.
* Updated some Guild WoE rules to behave as explained here:
http://www.eathena.ws/board/index.php?showtopic=146581 [Skotlex]
2007/04/08
* Fixed the platform-specific stricmp compilation problem
* Fixed inverted vending tax equation (!) and made it more precise
* Moved e_mail_check() and config_switch() to strlib.h
* Synchronized the login servers a bit
2007/04/07
* Disabled the exception handler on windows debug builds
* Fixed Devotion using WE_BABY's status icon (now uses no icon);
if you have a way to determine the correct number, give feedback
* Updated the server's PCRE components to 7.0
- dll, library, header
- cleaned the only existing example and moved it to /samples
- changed the interface, now $@ is used instead of $ to store the result
- /!\ adjust your scripts if you are using npc regexp parsing /!\
* Fixed the start_point setting smashing t3h stack in some situations
* Fixed some over/under-dimensioned arrays (defines already cover the '\0')
* Fixed an unupdated define making Warp Portal fail with an error [ultramage]
* Final touches to the whole map crap [DracoRPG]
- changed MAP_NAME_LENGTH to 12, now there's MAP_NAME_LENGTH_EXT at 16 for
uses where there is / may be the .gat extension, code adjusted accordingly
- moved map_normalize_name to mapindex_normalize_name so that everything
handling map names uses the same extension-removing function
- greatly enhanced the map cache generator, complete documentation on the
tool and the map cache format can be found in doc/
- the map cache format changed a bit as a consequence, but of course a new
valid one is included (contains latest Nameless Island maps)
- and I'm sorry for the number of times I've moved around and renamed files,
now the final structure should have been reached
* Capped clif_heal's heal field (the argument received is int, but the
packet field is short, meaning that if the heal is high enough, the client
would receive a negative heal amount). [Skotlex]
2007/04/06
* Made a crazy attempt to at least partially synchronize login&char code
* Major edit to the way the servers handle ip addresses, making them obey
the "host byte order inside, network byte order outside" rule [ultramage]
- hopefully covered all entry- and exit-points for IP address data
- discovered several places where Gravity's client breaks the convention,
will need to come up with a suitable countermeasure for that
- other than that, the code should be portable, except for printing and
ipban mask testing (those still assume a specific byte order)
- tested both txt and sql in all usual situations; tested single- and
multi-server setups, all seems to work (but watch out for hidden bugs!)
2007/04/05
* Cleaned @whogm. It will display the name of all gms online. If their GM
level is above your own, it will only display their name, otherwise level,
position, and party/guild info is displayed. GM's using gm-hide will not
appear on this list.
* Corrected song/dances/encores reducing SP at the incorrect intervals
(either never, or every second).
2007/04/04
* Corrected Longing for Freedom, it should triple SP cost rather than
modifying SP cost to 1/sec
* SC_ENCHANTARMS will no longer fail to start if it's already running with
a "higher elemental level".
* When trying to trade an untradeable item, the add-item-fail packet will
be sent so the client does not gets stuck. [Skotlex]
2007/04/03
* Some spring-cleaning in sql-files, only left SVN 8k+ files [DracoRPG]
* Updated sql files [Playtester]
* Fixed char-server crash on @changegm use.
* Cleaned up mmo_auth, this function wasn't only poorly coded, it also had
a SQL-related memory leak in it!
* Corrected the attack_attr_none check being backwards (ie: this config was
working backwards!)
* All pets can now move regardless of their Mob counter part setting.
[Skotlex]
* Some source code cleaning
- Fixed the badly worded messages during mapserver startup
- Cleaned up socket config reading
- Split resolve_hostbyname() into 2 separate functions for clarity
- Moved the probably obsolete LOWER/UPPER macros to db.c (TODO: remove)
- Moved the badly placed compare_item() function to storage.c (see r779)
* Fully removed the msvcr80.dll dependency from the vs8 project files
2007/04/02
* Removed some overly verbose item group messages & code
* re-added the item_group_list for consistency's sake, moved to itemdb.h
(after some hacking to remove the ugly map.h dependency)
* Fixed the server crashing on a timer-queued disguise / undisguise
* Fixed the server crashing on startup due to bad define [ultramage]
* Removed bonus 'bAspdAddRate'. bAspdRate now behaves on a stackable
matter, so it's no longer needed.
* Reimplemented the bonus 'bAspd' (raw Aspd increase) [Skotlex]
2007/03/31
* Added all the missing defines for ctype.h functions and converted all
the direct uses to the defines. [FlavioJS]
2007/03/30
* Added "do_abort" function to the core. It is invoked when the server has
received a Segmentation Fault or Floating Point Exception signal. Currently
the only one that uses it is the map-server, which then attempts to save
all online characters before aborting. Note that due to the current
coding of the sig plugin, do_abort will not be invoked if you use it!
This plugin needs to be updated... [Skotlex]
* Continued script.c cleanup [Toms]
2007/03/29
* Corrected OPTION_XMAS since 2007 clients have split it up from
OPTION_FLYING (on previous clients both were the same option value).
* Corrected statp array not being long enough to actually hold the status
points of ALL levels up to and including MAX_LEVEL. Fixes reaching final
level and resetting giving you an unpredictable amount of status points.
2007/03/28
* Negative aspd rate bonuses will be handled as aspd add rate since the
default non-stackable bonus is useless on penalty bonuses.
* Added check to prevent the client from using passive skills. [Skotlex]
* Updated sql-files [Playtester]
* Removed a missing file reference in the athena-start script
* Fixed a #error "<malloc.h> has been replaced by <stdlib.h>" problem
* Fixed the msg_silent setting not being announced every time [ultramage]
2007/03/27
* Cleaned up some the mob skill use code. The skill re-use delay is set at
the time the skill is used rather than when it finishes casting. The
invalid target check was also moved to the mob skill db reading function.
* Skills can be used now when the autoskill menu is open (since there's no
packet sent by the client when you hit on cancel). [Skotlex]
* Added some svn:ignore properties [Toms]
* Solved console plugins compilation error [Toms]
* Changed MAX_LEVEL to the standard value 99. Memory consumption-= 55MB.
- !!!WARNING!!! If your server uses higher levels, be sure to adjust
this appropriately! (the define can be found in /src/map/map.h)
* Corrected SC_COMA's success chance (X.4 says it's unconditional 100%)
* Changed the vs8 used crt library to static linking [ultramage]
2007/03/26
* Coma now reduces SP to 0 (with the exception of Dark Blessing) [Skotlex]
* Corrected "format '%lu' expects type 'long unsigned int', but argument 4
has type 'unsigned int'" warning on login.sql [Toms]
2007/03/24
* Corrected change r10051 which prevented Ice Pick from working [ultramage]
- the 'ignore_' variables are bitflags and therefore need enough bits
to store all info; 8 bits wasn't enough in this case
2007/03/23
* Major reconfiguration of the vs7 project files (+vs8 while I was at it)
- added definitions _DEBUG and NDEBUG to tune system-specific stuff
- reduced the build requirements (Pentium 4 was a bit too much)
- changed build settings and project structure to match the vs8 projects
- corrected some vs8 inconsistencies
* Some generic typo fixes [ultramage]
* Corrected Ankle Snare/Spider Web having a 1% chance to trap rather than
100%
* Food boosts are now dispelled on death only.
2007/03/22
* Corrected setitemscript not correctly updating the item's script.
* Added define MAX_CHARS so you can easily mod the server to support a
different amount of characters per account (however, there is still the
issue of hexing the client to support this change)
* Updated msg_athena.conf so it no longer uses broken english on several
entries. Thanks to Scerez for the updated file.
2007/03/21
* getpetinfo 5 will now return the pet's rename flag.
* Autoloot will now only work on items dropped a certain distance from the
player. The distance is defined by AUTOLOOT_DISTANCE in atcommand.h and
defaults to AREA_SIZE.
* Removed Magic Rod's cast bar.
* Gravitation no longer causes damage flinch. [Skotlex]
2007/03/20
* Increased MAX_STATUSCHANGE to 300 to make room for new statuses [DracoRPG]
* Reverted mapindex reading from map_list.txt for the map-server [DracoRPG]
* Patched the MAX_STATUSCHANGE startup error [ultramage
* Removed the last argument from script command skillitem.
* Added skill ITEM_ENCHANTARMS, this is what weapon enchanting items should
use.
* Added support for specifying different elements per skill level in the
skill_db
* Added bonus bNoKnockback.
* Corrected login sql server not reseting your account state to 0 when the
banuntil duration expires.
* Made the skillatk bonus it's own function, it can now be used to boost
Heal/Sanctuary/Potion Pitcher and Slim Pitcher as well.
* Corrected Teleport's save map entry being sent without the .gat
extension.
* Corrected Warp Portal not sending the map names with the .gat extension.
* Probably corrected Disarm's strip animation.
2007/03/19
* Rewrote the jail logic to always use a status change. This means that the
character's save point is not changed when jailed, and the char is always
warped back to the point where it was before being jailed on unjail.
* Modified @adjcmdlvl so you can't set a command to require higher level
than yourself, and so you can't edit the level of a command which is higher
than your own.
* Corrected attack_attr_none setting disabling elemental resist cards.
* Corrected Dispell removing Jailed status.
* Corrected being able to revive with 0 hp.
* Modified the "Restart" code so that it makes you stand on spot when
pc_setpos fails to move you back to your originating location. [Skotlex]
* Fixed some wrong sql login logic
* Fixed some compiler warnings, cleaned up mapserver sql-related vars
* Removed the old 'mapserver charsave' mechanism [ultramage]
* Globalised use of script_pushint and script_getdata in script.c
If someone need them, the regexp used was :
sed -i "s/& *(st->stack->stack_data\[st->start *+ *\([^]]*\)\])/script_getdata(st,\1)/g" script.c
sed -i "s/push_val(st->stack, *C_INT *, *\([^)]*\))/script_pushint(st,\1)/g" script.c
* Little clean of unused variables in script.c [Toms]
* Script engine:
- calling functions without using the return value doesn't generate warnings
- more work on Ticket #41
* Took care of two warnings and a minor change to the makefile. [FlavioJS]
2007/03/18
* Added missing VC++ 7.1 project files for mapcache. [Lance]
* A followup to the login_sql server changes:
Due to a missing 'else' in the case_sensitive config setting loading
code (see r483 and r3316), the option was always being set to 'off'.
Now that I have corrected it, make sure to set it exactly how you
want it to behave (usually case-insensitive)!
Failure to do so can result in half the server spamming you with
messages about how they are getting 'unregistered id' errors.
2007/03/17
* committing my work on the login server (mostly SQL) [ultramage]
- removed the check_ip_flag from login&char (there since r1)
- removed the CMP_AUTHFIFO_IP and CMP_AUTHFIFO_LOGIN2 defines (also r1)
- removed dynamic_account_ban, gm_db settings, weren't doing anything at all
- modified the date_format setting to take the format string directly
- removed overly verbose config loading messages
- removed/simplified many more useless actions
- renamed the dynamic_pass_failure_ban_ settings to make more sense
- collected relevant config settings into a login_config structure
and documented their purpose
- allowed usage of yes/no instead of the user-unfriendly 1/0 method
in config settings (and added 1/0 as a possible option)
- fixed dnsbl which was always taking only the first entry into account
2007/03/16
* Corrected the structure and added info on the skill fail packet (0x110).
* Added packet 0x223 as clif_upgrademessage (not used yet).
* More work on Ticket #41. [FlavioJS]
2007/03/15
* Added SC_CHANGEUNDEAD to differentiate it from the other elemental change
skills. It now fails on Undead/Dark elemental targets.
* Corrected party item share settings not being properly updated on logon.
* Corrected battle_attr_none setting applying to elemental attacks instead
of neutral ones. [Skotlex]
2007/03/14
* Finished polishing the new mapcache system [DracoRPG]
- common/grfio.* now empty except zipping functions (to read mapcache)
- servers do not use .gat internally anymore
=> YOU CAN (and should) STOP USING .gat IN YOUR SCRIPTS
- moved files for the mapcache builder to db/ for now
- the char-server now uses the same index list as the mapcache builder
=> poring_c01, poring_c02 and ng_quest mapindex have changed, beware
* Updated sql files [Playtester]
* Adjusted @pvpoff, @gvgoff, @killer, @killable to make characters stop
attacking when used.
* Dispell no longer removes food boosts.
* Players will stop attacking when they change their look.
* Applied Alydis's fix to the mvp item logs logging mvp items even if the
player couldn't get the item.
2007/03/13
* Corrected the new packet version entries for skilluseposinfo
* Corrected item reloading not unsetting the "delay consume" flag if the
item had changed it's type.
* the Attack_Type variable in skill_attack now inherits the damage.flag
properties, this fixes ranged status effects not triggering.
2007/03/12
* Added player not attached crash prevention to countitem/countitem2.
* Probably corrected delitem not deleting pet eggs at all.
* Hopefully fixed hidenpc/disablenpc not working on Guild flag sprites.
* Mob skill state "anytarget" no longer triggers when the mob has an
item-target (looting).
* @storage/@gstorage will no longer work if you have a trade or a storage
opened already.
* Corrected script command movenpc so it properly moves the ontouch npc
cells as well.
* Changed the unit-walk packet to be 0x86 as pointed out by FlavioJS. This
new packet is much smaller, and should greatly decrease bandwidth usage.
The only drawback is that the character will not display at all if the
client didn't know of it's existance previously, but eA should always be
sending a spawn packet when an object gets into/out of sight anyway, so
it should work correctly.
* Modified the guild master change ack packet to return the aid/cid of the
new guild master instead of the index where it was, the previous method
could cause problems in situations where the order of guild members would
not match exactly between char/map servers.
* Updated the Soul Linker's Rogue Spirit Stealth's speed bonus to +60%,
according to forum infor from ragnagate. [Skotlex]
2007/03/09
* Mapcache can run on system with any endianness.
The generated file contains data in little endian.
* Added info on packet 0x86 (simple move packet). Not usable until a clear
separation between entering sight/leaving sight/walking in sight is done.
* Propagating const char* from the script engine.
* ".gat" is appended to the map name before sending the changemapserver
packet to the client. [FlavioJS]
* Normalized the mapname in guild get/set castle data, should fix guild
flags.
* Added log options 0x800/0x1000 to log storage moves ('R') and guild
storage moves ('G')
* Added upgrade_svn9976.sql to include 'R'/'G' on the picklog type column
set.
* Updated the logs_athena description to include the letter of each type
(512 - M, 32 - N, etc)
2007/03/08
* Corrected the pet/homunc data not being free'd if the player logs out
before being authed.
* Initialized player's speed on pc_setnewpc to prevent homunculus copying a
speed of 0.
* Corrected ranged add-status only triggering if the attack is arrow
based.
* Updated counter add-status so they trigger on ranged attacks instead of
using "arrow_atk" state. [Skotlex]
* Here comes the new mapcache system! [DracoRPG]
- The last and only big "feature" (kind of cleanup in fact) you'll see
- Totally removes GRF/GAT handling from map-server that only reads from cache
- The cache now also contains map indexes, and is mostly zipped (1.5MB atm)
- It is shipped with eA => 100% client-independant, no more missing maps
- If you want to add custom maps, the mapcache builder is available, doc
and Unix Makefile coming as soon as possible (VC8 project only ATM :/)
- Removed now useless AFM/AF2 support, as well as the startup screen notice
2007/03/07
* Corrected the define for NK no cardfix (def).
* Fixed the char sql server not escaping the server name before inserting
it on the ragsrvinfo table.
* Corrected @lvup not doing the party even share check.
* Corrected breaker's misc part not ignoring element.
2007/03/06
* Added NK value 0x80: ignore target's cards (0x8 will now only ignore
attacker's cards).
* Corrected Soul Breaker ignoring target's cards instead of the caster's.
[Skotlex]
* Fixed an infinite loop if script name contains a single ':' [Toms]
* Simplified the Utsusemi/Bunsinjyutsu check to only block weapon skills
that do not ignore offensive cards. [Skotlex]
* Added support for the 2 new packet versions. [Zephiris]
* Fixed the loginlog's `user` column length (use upgrade_svn9957.sql)
2007/03/05
* More tweaks to socket.c to simplify the code [ultramage]
- many generic cleanups - reformatting, useless code removal, etc
- made the mode_neg setting a compile-time decision, not a run-time one
- removed the silly frame_size setting (there since r1)
- added some TODOs to http://www.eathena.ws/board/index.php?showtopic=127988
* Added the +20hit that were missing the NPC elemental attack skills.
* Added support for autospells using "a random skill level". The last value
of bonus4 bAutoSpell is used for determining this as well as the target. &1
is to cast on target (otherwise cast on self), and &2 is to use a random
level UP to the level specified in the script (otherwise always cast the
specified level)
* Updated item_bonus.txt with the documentation for the
bAutoSpell/bAutoSpellWhenHit changes.
* Corrected @refresh not reupdating the basic stat bonuses.
2007/03/03
* Modified a bit the storm gust counter code to see if it fixes storm gusts
sometimes freezing on first hit.
2007/03/02
* Tatami Gaeshi state (proyectile blocking) now ends when you move.
* SG Union will consume now SP if you use it while not soul linked.
* Added variable "skip" to the mob spawn data, to know how many mobs to
skip when spawning because they were not removed due to the
"mob_remove_damaged" setting.
* Corrected the Hp/Sp regen formulas from Hp/Sp/Spirit Recovery and
Happy/Peaceful break according to recent forums discussions (formula is
changed from x*lv +max*lv/500 to lv*(x+max/500). [Skotlex]
* Added new script function: setiteminfo. Now you can make custom items [Lupus]
- Updated script function setitemscript(itemID,script,WhichScript)
now u can set one of 3 item scripts: use/update, equip, unequip
But it works only if the original item had 3 non empty scriptsin ITEM_DB
can't fix this issue yet
1201,Knife,Knife,4,50,,400,17,,1,3,0xFE9F7EEF,7,2,2,1,1,1,1,{dispbottom "1";},{dispbottom "2";},{dispbottom "3";}
and... if u've used this function, later @reloaditemdb may crush the map server ^_-
- Check npc/sample/npc_test_setitemx.txt as example of setiteminfo & setitemscript
2007/03/01
* Corrected raid not doing the "can hit?" check on splash area targets.
* Fixed the definition of warpwaitingpc so that it allows an optional
argument (number of people to warp).
* Modified the Palm Strike packet so the initial hit animation does not
displays "Miss".
* Added a check to prevent trades from being commited if either character
is in final-save state.
* Checked and cleaned up the online_check code in the char-server. Further
connections to the char-server are rejected when the account already has a
connection (previously this would happen only if there was already another
character IN game, not just waiting on the char-select screen). [Skotlex]
2007/02/28
* Added the source and VC8 project for my experimental mapcache generator;
it is NOT compatible with eA's current mapcache but uses a brand new format
that I still have to embed into the map-server [DracoRPG]
2007/02/27
* NPC_AGIUP now boosts flee by 100% and duration is 5+5*lv secs, as stated
on the Ragnarok Bible.
* Fixed Soul Breaker's misc part not ignoring flee.
* Fixed misc attack's flee check being backwards (the less hit%, the more
chance you had to connect)
* Corrected the range check in vending.c [Skotlex]
* Added map & distance check to vending to prevent WPE hacks. [Lupus]
E.g. buying items from WoE castle
* Fixed a compiler warning in char_sql\login.c
* Minor source documentation/cleanup. [FlavioJS]
2007/02/26
* You are allowed to expel guild mates that are not online now.
* Corrected damage of BloodDrain
* Moved the "already connected" checks to pc_authok, since a dual login
doesn't needs to be checked until the new connection is accepted.
* You are allowed to attack/use skills now when your cloaking level is
below 3.
* Small change to Stone Curse that may fix the permanent "semi-stone"
status.
* Corrected "taming monster" having your skill-use be stuck if you cancel
the target selection process.
* config setting party_show_share_picker now displays the jname of the item
picked as well.
* Corrected some typos and small details
(forgotten bInfiniteEndure [r6487], mysterious '1' in help file, etc)
2007/02/25
* Added Krade's makefile fix for 64bit compilers [ultramage]
- ref: http://www.eathena.ws/board/index.php?showtopic=136622
* Minor cleanup/documentation on the script engine. [FlavioJS]
2007/02/24
* Fixed the mob_override_name setting not working on summoned mobs.
* The server now prints an error message when it the produce_db reaches the
max number of allowed produce recipes.
* The NK value of the skill_db has been made a hexadecimal value, and
expanded to include more information about a skill's damage properties: 0x8
ignore caster's cards, 0x10 ignore element adjustments, 0x20 ignore
target's defense, 0x40 ignore target's flee. Note that magic attacks
always ignore flee, and misc attacks always ignore defense.
* Autoguard will no longer work on skills that don't take in card
adjustments
* utsusemi & bunsinjyutsu no longer work on skills that don't take in card
adjustments.
* Corrected damage of the NPC elemental attack skills, Blood Drain and
Energy Drain
* Adjusted menu-based skills so you can't reuse the same skill until you've
dealt with the menu.
* Adjust autospells so that removing an autospell works when the script of
the card that removes the autospell is triggered before the script that
adds the spell.
* The "requested name of gm-hidden char" warning will not be displayed when
the object in question is an NPC (since you can use Intravision to do
this).
* Venom Knife no longer takes into accounts cards or EDP.
2007/02/23
* Guild expulsion now will fail when the character to be kicked is in a
guild castle (rather than checking for the character doing the expulsion)
* pk damage reduction settings now will take effect only on Player VS
player damage.
* Fixed produce_db2.txt entries overwriting produce_db.txt ones.
* Fixed item-granted/plagiarized skills unlocking skill trees when only
your real learned level should. [Skotlex]
2007/02/21
* Applied a consistent look to all header files (copyright, ifdefs)
* Minor stuff (typos, socket.c, junk in login reply packet) [ultramage]
2007/02/19
* Fixed @cartlist info message typo [Lupus]
2007/02/17
* Fixed a typo from r9778, allowing non-gm chars to use /kill [ultramage]
2007/02/16
* Fixed the structure of packet 0x6d (new char info). It's the same as the
one used for packet 0x6b (chars info). [FlavioJS]
* Updated script commands startnpctimer, stopnpctimer, initnpctimer so you
can attach a player to them, this is done because the attach/detach
functions can't be used to attach to a different script than the one
currently running.
* Updated the script_command reference with the new flag values of
[start/stop/init]npctimer.
* Modified the "guardian" spawn script command, it no longer receives a
"amount" argument (since that only leads to trouble), if the class is
negative, it'll pick a random class the same way the monster spawn script
command does, and if you pass a spawn position with coordinates equal or
less to 0, a random spot in the map will be taken. However you can't use
"this" as a map name anymore since these script commands do not need an
attached player.
* Guardian spawning will now fail if you attempt to spawn a guardian that
already exists on the same position.
* Miracle of the Sun, Moon and Stars can now retrigger to lenghten it's
effect, and it is cancelled on warp/map-change. [Skotlex]
2007/02/15
* Reverted some of my mobdb code
* Cleaned up clif_party_info a bit
* Cleaned up set_reg (the same procedure as get_val) [ultramage]
* The default packet version is now 8. Clients from November2006 and before
can no longer get past the char-server unless you change it back to 7.
* Fixed Storm Gust counter freezing on fourth hit instead of third.
* Fixed @homstats not taking into consideration that the stat growth
decimals get discarded on level up (so the real minimum/maximum displayed
was off).
2007/02/13
* Applied Rayce's dangling pointer fix when returning a temporary npc
string variable (those starting with .@)
* Required Weapon, ammo, and skill state are now only checked on begin
casting, instead of both on begin and end casting.
2007/02/12
* Fixed Resurrect Homunculus and Wedding skills failing. [Skotlex]
* A bit more work on Ticket #41.
* Added 'r' (variable reference) to the script argument definitions.
* Added a simple define for suspitious actions. (empty at the moment)
* Added clif_clearcart and moved sending cart packets to pc_setoption.
* clif_parse_ChangeCart checking the player level. [FlavioJS]
* Fixed clif_parse_GMmessage cutting off messages randomly [ultramage]
(due to a typo in revision r9778)
* Fixed Wand of Hermod
* Corrected Spider Web casting around caster instead of target's position.
* Corrected a possible crash during login due to checking for the incorrect
variable (lets pc_calc_status be invoked when it shouldn't)
* Added bounds checking to map_foreachincell.
* Opt2 values (poison, blind, and so on) are now resent on warp/map-change.
* Corrected description of isloggedin script command. [Skotlex]
2007/02/11
* Fixed the inverted behavior of display_skill_fail, caused by r9823
* Fixed @loadnpc not updating the script_event[] array
2007/02/10
* Fixed clif_party_message using an incorrect buffer length [ultramage]
* Cosmetic changes to the buildin section of script.c (use defines for
function names/definitions). [FlavioJS]
2007/02/09
* Updated the 'unit walk' to functions so they stop your attack if it's
possible to walk.
* Fixed char server SQL not sending the guild info update to other map
servers when a new member is added.
2007/02/08
* Modified Spider Web so it can instantly retrap a target, rather than
idling on the ground waiting for a new target.
* Cleaned up some the rude-attacked code, being attacked while under spider
web now triggers rude-attacked. [Skotlex]
* Added code for SQL that will automatically detect the ping interval
at startup, and copy-pasted it around the code; removed the conf setting
* Added a missing null pointer check in clif_parse_globalmessage
* Fixed the new socket code, which was triggering the inactivity timeout
on the servers' listening sockets
* Fixed the TURBO code not working since r4468 (parse func never called)
2007/02/07
* More aggressive cleaning up of the socket code [ultramage]
- removed unused session_data2 entry in sd
- added a new create_session() function, helps keep things cleaner
(although it's ad-hoc and not perfect, since this is C)
- undid r4978 since it was getting in the way (re-add it if you need it)
- added defines for the recv, send and parse func pointers
- added null functions for the three actions, and made create_session()
calls use those instead of NULL pointers; insignificant penalty and now:
- since all three funcs are always initialized, removed all those NULL checks
- removed the efd set, since as the people from the developernet forums
pointed out, it's only for out-of-band data and NOT for error checking
(in fact, select() bails out without giving any info if it errors out)
- reorganized the randomly placed socket.c contents somewhat
- it'll be a miracle if this works like it should ^^;
* Modified spider web so that the skill_unit_db flag restrictions may take
place. [Skotlex]
* Cleaning up of the socket code [ultramage]
- Shuffled includes around for files that were leeching off of socket.h
- Added code that enforces standard shutdown behavior for sockets
- Wiped out the poorly written parse code from r2211
* Removed old script bonuses bMatk, bMatk1, bMatk2.
* Fixed char-server not sending online notification when a party member
logs in.
* When skill range by distance is set, the distance checked for is now 5
cells rather than 3.
* Fixed bMatkRate bonuses not applying to status earned modifications to
int/matk. [Skotlex]
* Removed deprecated console code.
* Moved CHAT_SIZE back to map.h because log_atcommand uses it on sql
builds. (moved to clif.c in r9811) [FlavioJS]
2007/02/06
* Cleaned up the script engine's get_val() function [ultramage]
- changed the long if-spaghetti into a compact switch statement
- changed its behavior so that it exits if !sd and it requires one
- upon exiting, it will now ensure that meaningful values get returned
(the old code had no qualms about returning random junk from memory
for integer queries, and crashing for string queries)
- removed many !sd checks since they are done at the beginning now
* Fixed #lvup having the gm level check backwards.
* Fixed the stormgust freeze counter going up even if the attack is
blocked/cancelled.
* Cleaned up homunc attack request parsing. Homunculus no longer goes into
auto-attack (ctrl+click) mode since the client does every attack request
individually.
* Fixed char-server not sending party status update when a member logs
on/off.
* Fixed crash when parsing guild member information change from the
char-server if the specified character is not found in the guild.
* Fixed MvP mobs giving exp when killed even if they shouldn't.
2007/02/05
* Fixed @lvup, #lvup not doing a stat reset and lowering your status points
if you had 0 status points at that time.
* Fixed MvP exp and item rewards being given even when the mob_dead flag
specifies you should not receive exp or items.
* Updated the code so that now a range of a skill is determined by the
skill's range in the db. Now only skills with less than 5 cells of range
are melee.
* The inf2 parameter of the skill_db is now red as an hexadecimal.
* The super novice self-revive angel will now trigger only once per
session, if you relog you can have it trigger again. [Skotlex]
* Fixed the skill tree not always updating when using @allskill
* Probably fixed the target-change on melee attack setting not working.
* Moved the deletion of the invincible timer when using skills so that it
is not deleted for skills such as Ashura (when just selecting a target)
[Skotlex]
2007/02/03
* Continuing the checking of script buildin functions and stop the script
execution when an attached player is required but not found.
This task will be referenced as Ticket #41 from now on. [FlavioJS]
* Updated the TXT login server's account id checker
(it was still saying the minimum is 700000 instead of 2000000)
* Changed the 'getpartyleader' script command so that it returns a map
name instead of the useless mapindex number. Also fixed it so that it
doesn't throw a 'args of aFree is not valid pointer' error.
(although I'm not at all sure that the fix is correct)
Ref: http://www.eathena.ws/board/index.php?showtopic=137274
* Removed the silly and misleading 'firewall detected' message
* Added missing vc6 project file
* Corrected a lie in the script documentation [ultramage]
2007/02/02
* Fixed the flag parameter not working on npcshopattach.
* Updated the walk delay code so that it parses homunculus as well as
players. What this means is that a homunculus walk request won't go ignored
if it's issued during the 'can't walk delay' after being hit.
* Added a possible crash protection in clif_skillfail when the player is
without a connection. [Skotlex]
* Fine-tuned the global message processing function [ultramage]
- now detects access-out-of-rfifo attempts (idea from eA++)
- uses the new CHAT_SIZE define to restrict message lengths
- detects Frost Joke/Dazzler and gives them more freedom (from Freya)
- more strict non-conformant message detection
- logging every problem to the mapserver console
* Resetting skills will now automatically remove peco, falcon, cart and
homunculus (vaporize).
* Fixed random mob picking choosing clones.
* Fixed critical spots that could be exploited [Skotlex]
- The define MESSAGE_SIZE was wrong! It is only used for input boxes.
Therefore now it is only used for Vending, Talkie box and Graffiti
- Added new define CHAT_SIZE which holds the max length that a client
can send from the chat buffer
- Added define msg_len_check which crops incoming client text if it's
longer than CHAT_SIZE. Added cropping to all incoming messages except
normal chatting which is already accounted for.
- Removed variable talkie_mes, this is now handled by sd->message
- Cleaned up parser functions for /b /lb, gm kick, /shift, /recall
- Added crash protection to the logging functions when they receive
a too long string.
2007/02/01
* Restricted global messages to 255 characters (client shows only ~80 anyway,
wanted to use 127 but frost joke's lines are longer than that ...)
- prevented using a ~22+kB long message to crash everyone on screen
- prevented faking the message length to cause an out-of-bounds access crash
- removed the unneccessary 'buf'ffer (inspiration from jAthena)
- Ref: http://www.eathena.ws/board/index.php?showtopic=137770
* Corrected the chat system to allow 8-letter passwords
* Minor details (pdb file location, improved debug, npc typo) [ultramage]
* Cleaned up the npcshop(add/del)item script commands, fixed a possible
dangling pointer crash caused by their improper use of realloc. They no
longer automatically attach the script to the shop, and they will return
true/false based on whether the shop was found or not.
* Added script command npcshopattach to enable attaching/detaching your
script from any npc shop.
* Updated doc/script_commands.txt with entries for npcshopitem,
npcshopadditem, npcshopdelitem and npcshopattach [Skotlex]
* A followup to r9761, a header include that somehow didn't commit [ultramage]
* Item search is now a bit smarter. When no item is found with the same
'aegis name', then the 'normal' name is used instead.
* Updated the @/# commands that take an item name so that you can use
quotes when specifying item names with spaces in them. For example, @item
"poring card" 1 will work now. Note that only the commands that work on ONE
item have been updated, those that do an item list need to be updated as
well. [Skotlex]
* Updated the old vs6 files to latest, thanks to k3dt for contributing them
* Reorganized the vs6 project files (update will follow)
* Fixed an accidental change in r9758 (edit&continue) [ultramage]
* Added support for mob skill target 'randomtarget', when specified, it
will pick a random enemy from within the skill's cast range. [Skotlex]
* Added string function strnlen [ultramage]
- This thing is useful for removing potential out-of-bounds crashes.
Had to #ifdef it because some systems implement it, some don't provide
the header, and some don't have it at all. Adjust/improve as neccessary.
* Corrected homunculus's aspd being halved after using some aspd adjusting
skill.
* Removed the log info message 'created homunc...', and the 'loaded homunc'
message will only show if the save_log is enabled.
* When when a party-member levels up, the level change is sent to the
char-server to update the even-share range values.
* When joining a gvg_dungeon, the pvp packet will be sent to signal
versus. With this gvg dungeons should be working correctly now. [Skotlex]
2007/01/31
* Changes in the VS8 project files: [FlavioJS]
- synchronized the settings between the projects
- joined all .h and .cpp files and grouped them based on the src subfolder
- added Debug/Release build targets that build txt/sql only
- other minor changes
* Removed graph, httpd and webserver
* Wiped out the old night code (use svn if you want it) [ultramage]
2007/01/30
* 'Long Range Attacked' mob skill conditions will no longer trigger on
magic attacks.
* Corrected char deletion not working (column is called homun_id, not
hom_id...)
* Collapsed config settings produce_item_name_input,
produce_potion_name_input, making_arrow_name_input, holywater_name_input,
cdp_name_input into a single config produce_item_name_input which uses
bitmasks to determine what it affects.
* Updated arrow_decrement to have 3 possible values: Disabled, Enabled, and
Enabled + Autoguess (gives arrow consumption as appropiate to
plagiarized/acquired skills).
2007/01/29
* Corrected the homunculus deletion functions so that the homunculus is
deleted together with the character.
* Added npc_check_areanpc so that Wand of Hermod will correctly check for
nearby warps.
* Emergency avoid now stacks with other speed boost statuses
* Item skills and skills that bring up a menu now are cleared on death.
[Skotlex]
* Added a nasty hack to prevent multilanguage clients from breaking guild notices
2007/01/27
* Made @reloadscript wipe ALL previous mobs that the script engine spawned
- this way it is manageable via global vars; the other way doesn't allow that
* Some misc cleanups (typos, formatting, forgotten changelog entry etc)
* Reformatted and translated atcommand.c
- in the process improved @marry, allowing spaces after the first comma
* Simple cleanup
- removed atcommands @w, @server_date/time, @red, @happyhappyjoyjoy, @shuffle
- synced gm level of @jailfor, @charjailtime, @npcmove, @chardropall,
@charstoreall, @send, @mute, @changelook, @exp and @nuke
- added conf entries for @whozeny, @kamic, @tonpc, @petid, @identify, @adopt,
@trade, @changelook, @send
- reorganized the atcommand_athena.conf file a bit
* Corrected indentation of the atcommand table (editor compatibility)
* BEGIN atcommand cleanup process
(according to http://www.eathena.ws/board/index.php?showtopic=111996)
* Fixed a C language restriction preventing compilation [ultramage]
2007/01/26
* Removed all those useless read-from-GRF features noone would ever use,
also removed cutincard script command as a consequence [DracoRPG]
- this is only the beginning of full grfio disparition from map-server
* Now assassins can equip arrows, and status arrows trigger on any ranged
physical attack: mimics Grimtooth + status arrow "Aegis bug" [DracoRPG]
* Added some random Storage Password packets thingies [DracoRPG]
* Kaite and Assumptio no longer stack. One will remove the other in the
same way Assumptio and Kyrie do.
* Made homunculus renaming go through the char-server so it can be
validated against the allowed characters setting.
* Added battle config hom_rename so you can enable renaming multiple times
your homunc.
* Fixed the normalizing function not sending first classes back to novice
if they do not have basic skill maxed.
* Added a wrapper to delete_timer so it prints out from where the
invocation was done.
* Fixed Splash attacks consuming 2 ammo on each attack. [Skotlex]
* Added some more freedom for the txt log paths since 32 wasn't enough
* Removed log_uptime that was accidentally introduced in r1208 [ultramage]
2007/01/24
* Cleaned up some more the Joint Beat implementation, so the status don't
take effect until the attack connects. [Skotlex]
2007/01/23
* Fixed int/dex foods using an incorrect icon for their status [ultramage]
* Changed the night status from 149 to 160, which seems to work so much
better, and also enabled simplifying the night code.
* A skill's walk delay will also delay your can-attack time when the skill
connects, since this is the behaviour of Sonic Blows as described by
Tharis.
* Added view_data support to mercenary.*, so that the Homunculus entries
are no longer required on the mob_db.
* Added the status icon to NPC_CHANGEUNDEAD and the Flee/Hit foods.
* Corrected the check that lets you walk when vending/chatting/etc.
2007/01/22
* Reverted the battle_calc_return_damage code as the previous one was
correct, ninja self-targetted skills CAN be reflected. [Skotlex]
2007/01/21
* Fixed while statements not "reserving" the curly before parsing the test
expression. [FlavioJS]
2007/01/20
* Fixed some joker's code trying to dereference a null pointer
* Fixed the server not reacting properly to atcommands/charcommands when using
langtype 10/11 (the |XY codepage indicator wasn't being trimmed) [ultramage]
* Updated @homshuffle so that the skill tree and current skill points are
not messed up.
2007/01/19
* Fixed the label dup code, it now works correctly with const.txt switch
labels.
* Reverted the dup-label check code since it has a bug that needs to be
fixed first (it fails to recognize const.txt values) [Skotlex]
* Fixed a client crash during SQL char selection if you for some reason had
more than 9 characters in your account (thanks to Daegaladh) [ultramage]
- note that the TXT version already guards against this since long ago
* Merged Rayce's cleanups of the script engine that account for duplicate
labels, non-numeric labels and makes the engine case-insensitive towards
keywords like if/case/switch/etc/
* Added the icons for the Food boosts (need packet version 8 to get them,
as these icons will just display Gloria, or crash you, when used on older
clients).
2007/01/18
* Modified the Storm Gust freeze counter code. It now takes into
consideration the ID of the skill before increasing the counter, which
should effectively yield the closest aproximation to official (even though
the counter will reset if you step out of a SG and into another one, we do
not know yet what should happen in such a case).
* Added @homshuffle. It recalculates the homunculus stats, as if the homunc
was sent back to level 1, and then releveled. This command is mean to help
fix those previously created Homunculus that are much stronger than they
should be.
* Fixed overflow on the mob delay adjustment setting.
* Fixed characters being unable to trade again if you attempt a trade on
someone who is on storage/npc when you accept the trade. [Skotlex]
* Fixed a crash when a castle from [0..MAX-1] wasn't in the db [ultramage]
2007/01/17
* Corrected atcommand @homstats so it shows the correct minimum/maximum
possible values.
* Simplified the hom level up function, now decimal stats are no longer
stored. This should correct eA's homunculus on average being much stronger
than Aegis's.
* Cleaned up pc_allskillup, @allskills should work correctly now.
2007/01/16
* Added atcommand @homstats so you can check your homunculus stats and
compare them to the minimum/maximum values that you could have at your
current level. This command is meant to help figure out if homuncs are
indeed getting a faster stat growth than they should have.
* Fixed the next invoked skill after AbraCadabra not having requirements
even when it is a different skill than the one chosen by AbraCadabra.
* Implemented Intravision as it should be. Thanks to HelloKitty2 for the
captured packets.
* Some cleaning on the mob_ai to enable mobs to run away from their current
target when they are rude-attacked by them.
2007/01/15
* The NPC elemental attacks will display a skill animation again.
* Mob instant cast skills will use their adelay now.
* Spirit of Wizard won't work on Ganbantein
* The pc normalize job function will consider you as novice if you don't
have maxed out basic skill.
* Cleaned up pc_calc_skilltree and related functions so that the id is left
as 0 when you can't raise the skill even if you meet the prerequisites.
This is to prevent raising quest/soul/marriage skills through packets.
* Slaves should lock unto their master's target even if they are not
attacking yet (eg: in chase mode)
* Updated the Summon Slave skill to use the slave distance define as valid
distance to spawn from master.
* Fixed Joint Beat's speed penalty.
* Added a pc_authok check to prevent the case in which somehow another
character of the same account manages to log in as well.
* The pc normalize job function will now recognize you as a novice if you
don't have NV_BASIC maxed.
* Accessories will now by default go into the rigth-side rather than the
left-side of the equip window.
* Added a check in the mob_ai_subhard function to make mobs unlock targets
which have their invincible timer set.
* Probably fixed the registration flood protection code being broken.
* Joint Break should only re-start the bleeding timer when it currently IS
the one that causes bleeding. [Skotlex]
2007/01/12
* Cleaned up the ip rules/DDoS section of the code. (the allow,deny and
deny,allow cases were switched)
* Fixed autotrading characters not being able to reconnect. Seams like I
misunderstood how id_db and pc_db are used. [FlavioJS]
2007/01/11
* Fixed the script engine not parsing strings in multibyte charsets
correctly (should have been done in r9532).
* Console plugin working when built as Windows native. [FlavioJS]
2007/01/10
* Combined most of the txt/sql mobdb reading code [ultramage]
- mob.c is now some 10kB less redundant (now using a common function)
- automatically filled in some missing parts of the txt part
(view_range_rate, chase_range_rate, line counting, etc)
- also cleaned it up significantly
2007/01/09
* Changes to script buildin functions: [FlavioJS]
- functions checking if a player is attached as soon as possible.
- functions that required a player attached and would crash if none was
there terminate the script now. (others keep the current behaviour to
maintain full backward compatibility)
- removed the unused flag argument in guildskill.
- bonus,bonus2,bonus3,bonus4 use the same function now (remains the same
script-wise)
- added an optional parameter to setcart,setfalcon,setriding so it's
possible to remove the cart/falcon/mount or select a specific cart
- other cleanups
2007/01/08
* Hotfix: Freeing of freed pointer when replacing script functions. [Lance]
* Unimportant cleanups
* Moved the plugin.def file to the plugins dir and added console.def
* Found the reason why the console didn't want to run on windows
(Microsoft uses !0 and unix uses 0 in pipe_create)
* Commented out a login_log call (sql doesn't implement that function!)
* Fixed an old debug message displaying %d instead of a number
* Silenced the plugin export messages during startup [ultramage]
* Added a precompiler error when the shutdown defines are not found.
* Added parse_console to the plugin API.
* Added plugin for parsing the console. (working with cygwin)
* Copied the parse_console code form login txt to login sql and char.
* Added propper plugin version compatibility tests.
* Better output when a plugin fails to load. [FlavioJS]
2007/01/07
* Fixed the sleep timers not being removed when the an npc was being
unloaded and when reloading scripts. [FlavioJS]
* Updated the documentation to match the agitcheck() behavior
* Undid the memset->malloc_set replacement
(let's be compatible and leave such optimizations to system devs, ok?)
* Small reformatting of conf-tmpl
* Renamed atcommand_sub to is_atcommand_sub (charcommand too)
* Re-added the duplicit nj/gs name messages in msg_athena [ultramage]
(the code was using those and they look better in that position)
2007/01/06
* Now winsock 2 is required.
* Cleaned up do_close and socket_init a bit.
* Fixed the weight icon dissapearing and reappearing when attacking.
(introduced by me at r9600, fix based on ultramage's code) [FlavioJS]
2007/01/05
* Also discarded some veeery old utils code that has got equivalents
in the std libs (and therefore is silently causing a nasty collision).
* Major reconfiguration of the VS8 project files. [ultramage]
- Removed the migration binding to a VS71 template.
- Disabled the setting that defines char -> unsigned char (non-conformant).
- Switched all projects to use the common C runtime library DLL
instead of linking the static version to each exe.
- Enabled edit&continue on the TXT version (SQL already had it).
- Reconfigured the linker to use only the really required dependencies.
- Enabled full optimization and whole program optimization,
with additional speed-improving settings for the release build.
- Set the compiler/linker to produce detailed debug information even for release builds
(no performance penalty because the debug info is stored in a separate .pdb file!).
- I tested all 4 build combinations and it works for me, and it should work for you.
- There is still one very useful thing missing - setting the working dir to '..'.
I don't know how to do that, tho' since VS stores it in a separate user file.
2007/01/04
* Fixed old @go bug (it ignored einbech) [Lupus]
* Added Au{R}oN's updated version of the effect list.
* Completed adding of the new cities to @go.
> that function is ugly and needs a complete rewrite, asap.
* Updated thor volcano warps.
* Updated /doc from jAthena. [ultramage]
2007/01/03
* Added Rachel and Veins to the list of @go destinations.
* Added a first approximation of warps for the new maps (by $ephiroth).
* Now the server will by default perform symmetric adding of friends. [ultramage]
> TODO - symmetric deletion (http://www.eathena.ws/board/index.php?showtopic=130749)
* Fixed TURBO FIFO defines.
* Moved refusal of a known packet versions to clif_parse_WantToConnection
and made it check for non-player object with that id.
* JK_JOINTBEAT as described in:
http://www.ragnainfo.net/wiki/index.php/Vital_Strike
Although not clear, it's being assumed that the 2x damage is only for the
break neck ailment. [FlavioJS]
* Modified the useless error message in atcommand_effect.
* Silenced the debug message in socket.c that's been freaking people out.
* Added support for text/comments at the end of monster spawn lines (<tab> required)
* Added the official behavior of monsters regaining full hp when they morph.
> info at http://www.eathena.ws/board/index.php?showtopic=130103
* Fixed pc_calc_skilltree ignoring prerequisites / joblvl requirements for soullinked skills.
> TODOs at http://www.eathena.ws/board/index.php?showtopic=130788
* Re-applied change r9593 that got accidentally reverted by r9595. [ultramage]
2007/01/02
* Fixed SC_JOINTBEAT not doing crit damage for the Neck Break ailment.
* Gospel sends the buff message to the affected player. [FlavioJS]
2006/12/31
* Made HSCR bypass both Guard and Shield Reflect using the dirty way [DracoRPG]
> cleaner way would need to rethink the whole skill's implementation
* Added more info when npc_scriptcont tries to continue a different script.
* Refer to http://www.eathena.ws/board/index.php?showtopic=130285
- Renamed pc_checkweighticon to pc_updateweightstatus and cleaned it.
- Updated pc_is50overweight to use battle_config.natural_heal_weight_rate.
- Added 90% weight check when attacking.
* Updated getitem and guardian entries in script_commands.txt.
* Fixed getitem trying to get <character ID> from the wrong argument.
* Now getitem can be run on scripts without a player attached if
<character ID> is specified.
* Now the two last arguments of guardian are optional and independant of
each other ("<event label>" and <guardian index>). This way the previous
implementation and script_commands definition are still valid code.
* Now buildin function names and argument definitions are checked for
validity before adding the function to the script engine.
Argument definitions follow the pattern: (v|s|i|l)*\?*\*? [FlavioJS]
2006/12/30
* Reverted the packet structure changes to mmo_char_send006b in r9588 (was
using the wrong exe for the final tests) except for the bug that I was
originally fixing. [FlavioJS]
2006/12/29
* Skill use is now cancelled when you use it while cloaking, and the
uncloaking process warps you. [Skotlex]
2006/12/28
* Reapplied Skotlex's socket.c changes from r9587 and r9582. :S
* Part 3 of TheUltraMage's socket cleanup.
* Fixed the packet structure in mmo_char_send006b for PACKETVER 8.
* Removed search_str from add_str (add_str already searches for the
string).
* Native script words like do,while,for,... are case insensitive now.
* Changed SCRIPT_HASH_SIZE to 1021 (prime hash sizes give better
distributions).
* Added alternative hash implementations to the script engine (to try out
later). [FlavioJS]
* Added a func_parse invocation when an invalid socket is found, so that
the underlying code (char/map/login) can handle it and free any related
resources.
* Added some skill effect packets so it displays a generic effect for
unknown targetted skills.
* Some cleaning in do_sendrecv, added error messages when handling an
incorrect socket. [Skotlex]
2006/12/27
* Fixed Super Novice 99%+ invincibility triggering when
the character dies in a GvG area. [blackhole89]
* Updated SQL Files [Toms]
* Fixed a bug which makes the group heal bonus be applied as many times as
the item is in that group.
* Applied Rayce's suggestion to improve the script hash size usage. eA now
uses a hash of 1024.
* Full Buster's auto-blind chance is now reducable by stats/items.
2006/12/26
* Updated Charge Attack's damage equation as per the only source I've seen
of it so far.
* Now Guardians/Emperium can't hit /be hit if their current map isn't a
gvg_castle or woe is off. This enables "localized" WoE by removing/setting
the mapflag gvg_castle on the castles where you want WoE to take effect
(note that even though normal players can't be hit on non gvg_castle maps,
normal mobs can still be killed in such maps, you'd still need to modify
the WoE scripts to use this kind of feature)
* TK_MISSION will now pick any mob from the DB as long as it is not a boss
type and it gives base exp.
* Fixed the double-stone issue when hitting a petrified character.
[Skotlex]
2006/12/25
* Fixed buildin_getscrate, thanks Trancid.
* Applied part 1 of TheUltraMage's socket cleanup.
"Basically what I did was perform simple one-liner substitutions for
ugly repetitive blocks of code. The most apparent are the send/recv
code and the other basic socket calls."
* flush_fifo is non-blocking now. I guess best effort is good enough...
* Copied header files from vcproj-7.1 files to vcproj-8 files.
* Applied the rest of Rayce's suggestions and fixes
(http://www.eathena.ws/board/index.php?showtopic=129185)
* warn_cmd_no_comma, warn_func_no_comma, warn_cmd_mismatch_paramnum are
now warn_func_mismatch_paramnum and it only prevents showing the error,
as it was probably intended in the first place. (correct me if i'm wrong)
* Merged the parsing of function calls in the script engine, removing the
parse_cmd hackery, and made "heal (.@val+rand(0xff))&0xff,0;" valid
again. [FlavioJS]
2006/12/24
* Small fix for changeset 9539 (support for PACKETVER above 7) [KarLaeda]
2006/12/23
* Fallback for parenthesis argument lists in the script engine.
"func (exp) , ..." is valid again.
* Moved "#include <limits.h>" to cbasetypes.h to ensure it's included
before checking if UINT_MAX has been defined.
* Minor changes in pc_readdb related to max_level being unsigned.
[FlavioJS]
2006/12/22
* Simplified function agitcheck so it isn't crash prone. Now it takes no
arguments, and will return whether WoE is on or not.
* Now when you specify a max level beyond what the exp table has, the last
entry of the exp table will be duplicated to fill in the remaining levels.
[Skotlex]
* Change strncpy to memcpy when parsing switches in the script engine
since it's guaranteed to be a word of that size (skip_word).
* Made scriptlabel_db duplicate the key. When str_buf is reallocated, the
keys in scriptlabel_db could become invalid, causing a crash in
npc_convertlabel_db.
* Now npc_convertlabel_db clears scriptlabel_db after using it.
* parse_script has an extra parameter options. At the moment it only
indicates if scriptlabel_db should be used or not.
* Fixed "UINT_MAX undeclared" on systems that don't declare it in limits.h
[FlavioJS]
2006/12/21
* Applied Rayce's suggestions and fixes to the script engine
(http://www.eathena.ws/board/index.php?showtopic=129185)
* Some cleaning to the character deletion code.
* Changed a certain snprintf to strncpy, which should fix the problems with
parsing switches in the script engine.
* Added back cropping the attack delay to attack motion for those weird mobs
that have a aDelay less than their aMotion time. [Skotlex]
* Added a 1-node cache to db. Removed party_cache and guild_cache since
now the database has a cache.
* Fixed "warning: comparison is always false due to limited range of data type"
by restricting script words to ASCII characters only.
* Moved md5calc to common. [FlavioJS]
2006/12/20
* Fixed ISSPACE and ISALPHA casting their returned value to a char, which
can really mess up the scripting engine when the returned value is true,
yet casted to false.
* Moved the strip unequip code to before deleting the timer, this fixes
trying to "re-strip" someone causing the skill to fail and on top of that
terminate their current strip effect.
* Reading of TK Mission variables will now happen if you are a TK-class
character regardless of whether you know TK_MISSION or not. Should fix
being able to reset skills to reset your Mission data.
* Added an ugly work around to the issue of skills with additional effect
causing opt1 status when they have just terminated them (in short, you
shouldn't be able to hit someone with, say, sleep, and then have the same
skill cause them stun, since both are opt1 values). [Skotlex]
* Now root script functions calls can have parenthesis (will take any
parenthesis after the function as the start of the argument list).
- This means "func (exp),exp;" isn't valid anymore.
* Replaced our fix for "mes ();" crashing by jA's version.
* Merged the fix for & having the same precedence as << and >> from jA.
* Merged the C_OP3 operator from jA: test ? if_true : if_false
* Changed the script source from unsigned char* to const char*.
* Updated plugins Makefile. [FlavioJS]
2006/12/19
* Reverted the mob ThinkTime update, that field is again aDelay as it
apparently should be. [Skotlex]
* Cleanups or minor changes.
* Now addtick_timer invokes settick_timer, so keep an eye for whatever
timer issues it's supposed to have.
* Removed the flush_fifo from clif_parse_TickSend until the socket
problems are fixed. [FlavioJS]
2006/12/18
* Updated POS2 macros. The 6th byte is subx0 and suby0. [FlavioJS]
* Added hom_setting to specify which homunculus 'quirks' are in effect. The
default activates all of them, if you set them to 0 then homuncs will not
be treated in any special matter, pretty much like standard mobs. if I
missed any 'quirky' homunc behaviour from it, report it so it can be added
to the list.
* Made flooritem_lifetime a int so you can specify much longer life times
(the default of 60k was already very close to the max of 65k)
* Removed monster_ai 0x80 since it's now handled by hom_setting.
* When walking into a Guild Dungeon your pvp_points will be set to 5 so you
have to die twice before being warped out.
* If jobchanging while disguised, the disguise will be removed, since it
can't be kept and still calculate correctly the new job class to use.
* Fuuma shurikens are now unbreakable code-wise (like all maces, books,
etc)
* Applied Meruru's patch to increase speed of easy path seeks. [Skotlex]
* Cosmetic changes to db.
* Fixed the unused MAPINDEX_AUTOADD section in mapindex.c (mapindex.h
wasn't being included) [FlavioJS]
2006/12/16
* Moved packet_len_table values to packet_db[SERVER].
* When an invalid packet_ver is found, all it's entries are discarted
intead of just stopping the parsing.
* Increased MAX_PACKET_DB to 0x300 and added a warning for when packet ids
greater than MAX_PACKET_DB are found. [FlavioJS]
2006/12/15
* There will be now warnings printed when a shop sells an item which's buy
price is 20z, since those usually are "rare" items with no buyying price
set. Note that this reports one fake, and that is the selling of a certain
shuriken that indeed costs 20z.
* Most likely fixed client crash when xmas/wedding status runs out.
2006/12/14
* Removed "mobs being enemies of each other all the time" because, even
though mobs can hit each other as they should, they will refuse to use
support skills on enemies, which breaks several of their skills. Mobs can't
both help and attack someone tagged as enemy!
(I guess eA is just too smart to emulate Aegis's sloppy coding)
* Cleaned up the strip code (GS_DISARM, rogue skills).
* Cleaned some the MD_DETECTOR code.
2006/12/13
* Additional damage bonuses (True Sight, EDP, Assassin Link, Crusader Link,
Card skill damage bonuses) are now applied independently of each other,
which lets them stack. [Skotlex]
* Modified flush_fifo so the code do what is written in the comment [Toms]
* Modified flush_fifo so you can decide whether to block the current thread
or not until the data is sent. The server-tick reply no longer blocks the
current thread.
* Fixed mobs being unable to attack anything...
2006/12/12
* Reverted the knockback update since it isn't working right with all
skills.
* Mobs now by default are "everyone's" enemy, so mobs are able to hit each another.
* Moved "unsetting" the angry mode from the mob_ai to the mob_damage
function, where it'll work regardless of who hits the mob.
* Modifed a bit the clif_change_look function, it should fix crashes with
the Xmas sprite when changing maps.
* Fixed skills displaying a 32k damage when used while disguised. [Skotlex]
* Minor changes to ers.
* Removed unused/hardly used cbasetypes typedefs.
* Updated txt-converter's makefile to include utils.o [FlavioJS]
* Updated npc_event_dequeue to free up your current npc information, and
not just the npc_id.
* Modified the skill damage packet and the knockback packets to mimic aegis
sent packets for such skills.
* Removed CART_MASK as OPTION_CART can take care of that.
* Moved the OPTION_MASK define to status.h
* Reverted the knockback implementation to use clif_slide instead of
clif_fixpos [Skotlex]
2006/12/11
* Added various missing checks when parsing several guild actions.
* made @hominfo display the six basic stats.
* Simplified the MD_DETECTOR checks, since now all insects/demons have it
set, and it's no longer needed to check for the race. [Skotlex]
* Updated sql files [Playtester]
* Spirit of Sin and Enchant Deadly Poison now stack.
* Fixed skill damage card bonuses not working on magic skills.
* Moved the setting of sd->npc_id = 0 in npc_dequeue to the beginning,
since this function is called when a script is cancelled
* Made homunc's speed be recalculated when you respawn it from rest state.
[Skotlex]
* Fixed @revive not reviving the good char [Toms]
2006/12/10
* Added more helpful messages when packet_ver=-1.
* Joined normal and MINICORE's main function.
* Put malloc_init() first and malloc_final() last as it's needed for Show*
in display_title(). [FlavioJS]
2006/12/09
* Reversed revision #9415 (messages with server_tick field being sent as
soon as possible) since it didn't fix the client synchronization issue.
* clif_parse_TickSend is sent immediately so the client gets accurate
"pings". [FlavioJS]
2006/12/08
* Now you can request a trade regardless of the state of the target trader.
[Skotlex]
* The trade will now fail when you accept it and either character is
speaking with an npc, vending or has the storage open. [Skotlex]
* Fixed crash when looters became full. [Skotlex]
* Autospell delay time is now the skill's full delay. [Skotlex]
2006/12/07
* Fixed ladmin's linux compilation and moved some platform specific
defines to cbasetypes.h [FlavioJS]
* Cleaned up implementation of NPC_EMOTION/NPC_EMOTION_ON. Now val0 is the
emotion, val1 sets the mode, val2 adds to the mode, val3 removes from the
mode. val4 asks to remove the previous mode change, otherwise it will stack
with the changes from the previous skill call. [Skotlex]
* Updated the mob skill reading code so it accepts hexadecimals in the
'val' fields. Also, it will optimize the NPC values so that when you set a
mob's mode to their db mode, it will just remove the previous mode.
[Skotlex]
* NPC_EMOTION_ON will now automatically move it's new mode to val2 since it
should add a mode, and if this mode doesn't has the aggressive bit, it will
remove it. See this "ancient" hypothesis on how NPC_EMOTION_ON should work
for the details: [Skotlex]
http://www.eathena.ws/board/index.php?showtopic=63606
* Fixed npc commands atcommand & charcommand not working with a custom
command_symbol [Toms]
2006/12/06
* Changed the order of view-change packets for SC xmas/wedding, should fix
crashing if you change into xmas suit while in fighting stance. [Skotlex]
* Renamed the mob mode Cast-Sensor Melee to Cast-Sensor idle since these
mobs really should only be cast-sensing when they are not after another
target. [Skotlex]
* Added a Aegis Mob Type -> eA Mode table conversion to the mob modes doc.
[Skotlex]
* Updated sql-files [Playtester]
* Gave a minimum think time to the dummy mob and to clones. [Skotlex]
* Moved setting a mob's chase/attack states from the mob_ai to unit_attack
and unit_walktobl for better state-handling precision. [Skotlex]
* Cleaned the change-target/cast-sensor code to account for the new mob
modes. [Skotlex]
* Updated the doc explaining mob modes. [Skotlex]
* When GM skill unconditional is set, the arrow state of the skill will be
calculated, this fixes all skills getting stuck on arrow-type after you
attack normally. [Skotlex]
* Alchemist famous potions get their 50% bonus on top of the natural
bonuses as a 1.5x type of bonus. In other words, now alchemist potions
will really heal 50% more than when you use the non-famous potion
version.
[Skotlex]
* Messages with server_tick field are sent as soon as possible now.
This might fix client synchronization issues.
* Added StringBuf_Vprintf to utils.c and changed the showmsg.c buffer.
Now it uses a static buffer and a StringBuf when needed (a debug message
indicating the static buffer needs to be increased is shown). [FlavioJS]
2006/12/05
* The can log value now is "reset" when you die allowing you to
respawn/quit instantly after death. [Skotlex]
* Fixed sc data load failing when using charsave_method: 1 [Skotlex]
* Fixed the interserver link reserve size being 8 times instead of 1/8th
the default size. Changed it to be 1/4th as well. [Skotlex]
* Found the position of emblem_id in packet 1b6.
* Moved START_ACCOUNT_NUM and END_ACCOUNT_NUM from login.h to mmo.h and
changed clif_guess_PacketVer to use that.
* Made the script engine big-endian compatible.
* Commented out the remnants of ladmin packet parsing in map-server.
* Added a warning when a player has an invalid packet version (shouldn't
happen). [FlavioJS]
2006/12/04
* Fixed HVAN_INSTRUCT int bonuses. [Skotlex]
* Renamed mob_db's "adelay" column to ThinkTime and made the mob.c code use
it instead of MIN_MOBTHINKTIME. The adelay of mobs will also be equal to
their thinktime unless their thinktime is less than their attack motion.
[Skotlex]
* Added a static +100 Hp to ninjas and gunslingers since it's required for
the best approximated hp growth algorythm. [Skotlex]
* Knockback will again use the fixpos packet instead of the slide packet
(slide was introduced with high jump) since Aegis captures say that packet
is still used for knockbacks. [Skotlex]
* Repairing items via scripts no longer displays "item has been repaired"
[Skotlex]
* Status Recovery again makes mobs unlock their current target. [Skotlex]
* Moved requesting party/guilds from the char-server from pc_authok to
pc_reg_received, since map_nick2sd and map_getallsd won't work until the
characters are authentified. Also removed the guild master setting from
clif_parse_LoadEndAck to pc_reg_received since guild master setting will
work there. [Skotlex]
* Fixed homun hunger timer being started on login even when hom is
vaporized/dead. [Skotlex]
* Fixed mvp exp attacker bonus applying incorrectly. [Skotlex]
* Removed duplicate msg_athena.conf entries 619 and 620 for
Ninja/Gunslinger.[Skotlex]
* Fixed the txt->sql converter not escaping character names before saving
them. [Skotlex]
* Fixed a pet's level not resetting to their db level when you enable pet
leveling and later on decide to turn it off. [Skotlex]
* Fixed restricted equipment not updating your view info after they are
unequipped. [Skotlex]
* Removed a bunch of extra text/checks when ignoring characters (/ex) when
Aegis does none of these checks. /inall now wipes your ignore list (it does
this on Aegis, too). [Skotlex]
2006/12/03
* If somehow a player logs out and it's saved with 0 hp, on login his state
will be set to dead as well so he can respawn (otherwise that leads to a
stuck char) [Skotlex]
* Fixed even share exp flutuating as described in:
http://www.eathena.ws/board/index.php?showtopic=126139
thanks to TheUltraMague for the fix.
* Made ers double frees report as missing entries on destruction.
* Only one swap function (in cbasetypes.h) is used. [FlavioJS]
2006/12/02
* Added buildin_checkvending and buildin_checkchatting. [Lance]
* Enabled atcommand parsing for clients with Korean langtype and version. [Lance]
* Added missing min/max definitions to cbasetypes.h, needed for the @send change.
* Replaced @send with the version I use for testing packets.
Can display the packet length. Supports dynamic packets, quoted strings
with escaped characters and fixed/variable length, and normal/hex
byte/word/long data types. The number of fields is not limited, but it
automatically stops parsing when the packet is full. [FlavioJS]
2006/12/01
* Fixed passive mobs becoming increasingly unlikely to retaliate to attacks
after they got inflicted by a disabling status change. [Skotlex]
* Changed the "is_boss" define to check for mode MD_BOSS instead of giving
mvp exp. [Skotlex]
* Updated sql files [Playtester]
* Fixed txt-converter compilation. [Skotlex]
* STRECOVERYno longer makes a mob unlock it's target like Cure does.
[Skotlex]
* Fixed GS_GROUNDDRIFT consuming ammo when it's time expires (so it was
consuming 2 grenades instead of one). Also added a "explosion effect" when
their time runs out. [Skotlex]
* gvg_dungeon mapflag won't set pvp related mapflags anymore, pc_dead will
force pvp ranking gain/loss on gvg_dungeon maps now. [Skotlex]
* Now when coming out of hiding land-effects will trigger on the character.
[Skotlex]
* Fixed land effects not taking effect inmediately on map-load when the
invincible timer is disabled. [Skotlex]
2006/11/29
* Probably fixed the Segmentation Faults we've been having.
Description: A player quits and it's session is freed and set to NULL,
but the char server already sent a packet with player information
(registers, storage, ...). If a message is sent in consequence of
updating that info, a segmentation fault happens because
session[sd->fd] is already NULL.
Fix: make shure the session of the target player is valid before
processing the rest of the char server's message.
* Some minor cleanups. [FlavioJS]
* Fixed the new npc parsing code not accounting for windows-style line
terminators, which as a side effect messed up mapflag parsing if the file
had windows-style terminators, which coincidentally was the case for the
nopvp file, which unfortunately meant that all towns became pvp! [Skotlex]
* HT_PHANTASMIC no longer knocks back even when it misses. [Skotlex]
* Earned exp by dead homuns will now be lost (same treatment as earned exp
from players that died) [Skotlex]
* Now gvg_dungeon mapflag will activate the other mapflags which are
required: pvp, pvp_nocalcrank and pvp_noparty/pvp_noguild (they are forced
to off if gvg_dungeon is on and viceversa) [Skotlex]
* Cleaned the pvp ranking code so that it takes effect even if
pvp_nocalcrank is active WHEN the map is a gvg_dungeon one. [Skotlex]
* Now homuncs and their masters are the only ones who can use support
skills on them. [Skotlex]
* Some cleaning on the homunc speed calculating code, so that it correctly
uses the default walk speed if the player has no speed yet. [Skotlex]
2006/11/28
* Fixed a typo which made the wedding_ignore_palette setting not work when
you log on with them equipped [Skotlex]
* Applied The Ultra Mage's patch to use strict npc header formatting
parsing. Updated the relevant stock scripts/mapflags that didn't conform to
the standard. [Skotlex]
* Moved the blocking of casting supportive skills on homunculus from
battle_check_target to status_check_skilluse as bct is not invoked unless
the skill is offensive (or party/guild only) [Skotlex]
* Cleaned up status_calc_bl_sub_hom, fixed recasting dex/str/vit/int
bonuses skills making their atk/def/mdef stack with itself over and over.
[Skotlex]
* Updated sql files [Playtester]
* Changing setting the Guild Master from pc_authok to clif_parse_LoadEndAck
so that it will not fail to set the gmaster flag when the first person of a
guild to log on is the guild master. [Skotlex]
* Modified the way Storm Gust freeze's counter works. Now it checks for the
caster of the Storm Gust, if it's the same as the previous hit, the counter
is increased, otherwise, the ID is updated and the counter is changed to 1.
[Skotlex]
* Fixed always receiving at least 1 bexp/jexp even when the mob gives no
exp at all. [Skotlex]
* Changed write to send as suggested by TheUltraMage in:
http://www.eathena.ws/board/index.php?showtopic=105417
Hopefully that will take care of the SIGPIPE problem in Debian and cygwin.
* Server name in core.c skipping '\\' characters.
* Memory allocation functions using file,line,func from the invoking functions.
* Other minor malloc changes. [FlavioJS]
2006/11/27
* Now when a player's "attack once" request fails due to range, the client
is told to move to the target to attack it. This sort of fixes the problem
of the client SPAMMING the server with attack requests from afar without
even approaching the icewall. [Skotlex]
* Updated the status change field "option" to an int rather than short.
This fixes the option values for xmas/sightblaster not getting set, which
could explain why some people crash when equipping weapons while in xmas
suit. [Skotlex]
* Fixed the Homunculus hungry timer not starting on login. [Skotlex]
* Added logging for standard GM commands (/mm /b /kick etc) [KarLaeda]
* Some cleanups on the trade_additem function. When specifying a qty of 0,
an ack will be returned to the client so it doesn't gets stuck. [Skotlex]
* Update sql files [Toms]
* Corrected the skill animation for Absorb Spirits [Skotlex]
* Cleaned up a bit the implementation of how Gravity Field blocks the
caster from moving. [Skotlex]
* Mob class-changing will fail if the new class is the same as the previous
one. [Skotlex]
2006/11/24
* Homunc's min matk is now always equal to max matk [Skotlex]
* Fixed EDP's damage being 100% more than it should (should be 4x, not 5x
on normal attacks) [Skotlex]
* Self Destruction will only hit everyone and not just enemies when used by
mobs (non marine spheres) unless the map is a versus map. [Skotlex]
* Spider Web's duration is now halved on players (before it was halved in
pvp maps only) [Skotlex]
* Likely fixed Homunculus not disappearing the second their intimacy hit 0.
[Skotlex]
* Fixed uninitialized variable fd being used in WFIFOHEAD in a few clif
functions. [Skotlex]
* Fixed the fact that the TURBO code breaks when you attempt to handle more
than one connection at a time within the same function. However this broke
map-server compilation, therefore, don't use TURBO yet! [Skotlex]
* While at it, cleaned a few packet implementations in the char/login
servers which were not only ugly, but had some really stupid flaws within.
[Skotlex]
2006/11/23
* Completed Reddozen's hanging mapwarp code to support party and old syntax. [Lance]
* Updated sql files [Playtester]
* Made WFIFOHEAD() check for available buffer size remaining on the
connection, and when there's not enough space, it will increase it.
[Skotlex]
* Added define TURBO to the Makefile. It enables MouseJstr's socket access
optimization which should speed up the code when accessing the write/read
buffers repeatedly within a function. [Skotlex]
* Fixed the functions where the RFIFOHEAD/WFIFOHEAD functions were used
incorrectly (prevents TURBO enabled compilations from finishing) [Skotlex]
2006/11/22
* Modified slaves_inherit_speed and slaves_inherit_mode so you get better
control of when to copy/remove modes/speed. See the conf changelog for
details. [Skotlex]
* Reenabled usage of mode MD_CHANGETARGET, so mobs with mode 0x200 will be
able to switch targets while attacking. [Skotlex]
* Some cleanups around usage of session[] in the map server, hoping that it
may fix some not very likely crashes. [Skotlex]
* Rewrote a few messy @ commands. [Skotlex]
* Fixed the homunc hungry timer being started when the homun data is
received from the char-server and the homunc is NOT 'active'. [Skotlex]
2006/11/21
* Fixed the Auto-Berserk giving you back defense when it triggers during
berserk's HP penalty. [Skotlex]
* Some small changes in the pet ai to make it more responsive. [Skotlex]
* Rewrote the pet looting behaviour (taken from the mob's), pets are much
more smarter now when looting from multiple possible items. [Skotlex]
* Fixed pets/homunc trying to be deleted twice when they had 0 intimacy and
their master logs out. [Skotlex]
* Added support for specifying ammo type = 99 in the skill_require_db file,
it can be used to specify that any kind of ammo can be used with the skill,
but you NEED to have ammo equipped. [Skotlex]
* Corrected GS_DISARM, it is now a normal attack, which, when it connects,
has a chance to do strip weapon at a 3*lv% rate (modified by dex) [Skotlex]
* Fixed GS_PIERCINGSHOT, it should ignore defense [Skotlex]
* Corrected Gatling Fever costing SP when trying to turn it off. Also,
speed increases bonuses won't take effect while it's active. [Skotlex]
* Updated the main makefile with a new OPT line. It is commented by default
since it only works with GCC 4.X, when unset, it will hide away a huge
amount of warnings that have to do with stuff that is not gonna be
corrected in eA anyway. [Skotlex]
* Corrected TripleAction's damage. It should do 150%*3 instead of 100*3%
damage. [Skotlex]
* Updated GS_CRACKER's stun chance using Doddler's info as reference.
[Skotlex]
* GS_FLING won't reduce armor defense when used on players. [Skotlex]
* Moved ignoreAll to state.ignoreAll so it saves some space. [Skotlex]
* Cleaned up clif_parse_Wis to prevent crashes from forged packets
[Skotlex]
* Cleaned up the implementation of the ignore list so it's more efficient.
[Skotlex]
2006/11/20
* Implemented NPC_DEFENDER. Reduces ranged Physical+Misc damage by 80%
[Skotlex]
* Improved the battle config reader so it accepts hexadecimal values.
Updated the monster_ai description to make use of this [Skotlex]
* Added monster_ai&0x200. When set, mob skill delays are shared. That is,
if the mob has several lines with the same skill, when the skill is used,
the delay will be set to all of them, not just the one entry used.
[Skotlex]
* Corrected NPC_BARRIER so it grants 100 def/mdef (and not just mdef)
[Skotlex]
* Weapon ATK bonuses will now only apply to watk and NOT watk2 on players
(on players watk2 is refine bonus) [Skotlex]
* Corrected NPC_KEEPING. it should give 90 def, not 100 [Skotlex]
* You now can't use other skills while a skill-induced "window" is up
(teleport, refining, etc). However, be warned that we aren't quite sure how
the server will clear this out if you decide to hit cancel on the window,
so skill-blockage is likely to happen (temporary solution: whenever you
change maps or warp the state is reset server-side). [Skotlex]
* Fixed itemskill variable being cleared before parsing the skill, this
causes auto-casted teleport to fail to skip the skill menu. It is now
cleared on castend_pos/id directly. [Skotlex]
* Skills with state 'move_enable' will now do a "walk path" check between
target cell/object and caster instead of a "shoot path" check, this would
fix skills like snap or charge from letting you "teleport" across pits.
[Skotlex]
* Raised the amount of skills that can stack on a single cell before the
"in-area/out-area" detection code breaks to 24 (from 8) [Skotlex]
* Fixed a crash in clif_SkillInfoBlock if the passed player already
disconnected. [Skotlex]
* Added limiting drop rate to 100% from item-bonuses that depend on the
mob's level so that "@autoloot 100" will catch them. [Skotlex]
2006/11/19
* Removed security check since source level patch is applied.
* Reverted select(), created prompt().
* Hack protection from packet monkeys in clif_parse_NpcSelectMenu. [Lance]
* Added 'cancel' button parsing in buildin_select menu system. Now scripts will continue
to load if 'cancel' is pressed and 255 will be returned. [Lance]
2006/11/17
* Corrected use of the party invitation reply packet, thanks to FlavioJS.
[Skotlex]
* Fixed potential hack by modifying packet of whispers. [Lance]
* Fixed potential crash in IRC processing message with '%' using *printf. [Lance]
* Fixed memory leaking caused by homun_data not freed when removed. [Lance]
* Fixed client not validating the chat-kick-request packet, which can cause
crashes. [Skotlex]
* Updated map_quit to handle removing of players who are not even
authenticated yet. [Skotlex]
* New connection requests are now also blocked when there's a player
already online but hasn't finished loading yet. [Skotlex]
* Because of these changes, the friendlist notification when people join
has been moved to LoadEndAck from pc_authok [Skotlex]
2006/11/16
* Updated sql files [Toms]
* For the sake of avoiding confusion, all script events are named with prefix 'On'
from now on. [Lance]
* Edited atcommand and charcommand syntax. Now it doesn't need the useless
character name and ":". [Lance]
* Shadow Jump and Kirikage won't "move" you if you use them in GvG grounds.
Fixed Kirikage so it first warps you, and then you unhide. [Skotlex]
* Corrected Zeny Nage so the Zeny spent on the attack is always the exact
same value as the damage you are dealing. Also corrected it so it does half
damage when used on players. [Skotlex]
* Overlapping song/dances will now cause dissonance/ugly-dance level 1
instead of retaining the level of their song/dance. [Skotlex]
* Fixed wrong check in @petrename, thanks to The Ultra Mage.[Skotlex]
2006/11/14
* Early Christmas present. 3 new "features" which were very easy to code,
and should help scripters tremendously. Eapp is quite a way from being
ready, so these can't hurt:
* Implemented Karma: It turns out that when someone has karma, the client
believes this character is "evil", and will give you a cursor sword on top
of them automatically. So now the code will let characters with karma to
fight each other. This enables duels and other types of restricted pvp
where only the characters with karma can hit each others, and the rest of
players with neutral karma cannot be affected. Note that Karma cannot be
negative, and it can have any value between 0 and 256 (any non-zero value
makes them appear evil on the client). For now, characters with karma can
hit each other regardless of karma value, but perhaps it may be better to
let them to hit each other ONLY if they have the same karma (the whole
duel implementation COULD be cleaned up using Karma instead!)
* Added mapflags partylock and guildlock, which lock the state of the
parties/guilds on said maps:
partylock: blocks user party requests to create/invite/leave/kick
guildlock: blocks user guild requests to create/invite/leave/expel/
make alliance/make opposition/delete alliance/delete opposition/
break guild
2006/11/13
* Fixed a bug where the char-txt server was incorrectly saving memos,
causing character data to be lost on restart. [Skotlex]
* HP Conversion will fail when used at max SP. It should not display any
errors to the client. [Skotlex]
* Modified yet again the login procedure to enable character variables to
work on item scripts. It SHOULD work crashless now. Please report any
problems it may cause.
* Volcano/Deluge/Violent Gale are now interchangeable, in the sense that
as long as one of these is out, casting any of the three will not consume
gems, and will use the remaining time of the previous one. In turn, Land
Protector will now always consume gems on every cast. [Skotlex]
* Small cleanup in the Land protector code which may fix it not blocking
AoE skills. [Skotlex]
* Fixed the interpretation of "head_dir". Removed setting head_dir to match
character direction in the whole code. Now it is only reset to 0 (look
forward) when unit_setpos is invoked, or when a character begins walking.
Thanks to FlavioJS for figuring out how the client parses the head
direction. [Skotlex]
* Moved status_calc_pc back to pc_authok. [Lance]
2006/11/11
* Fixed debug message in login_sql [KarLaeda]
2006/11/10
* Deluge/Violent Gale/Volcano tiles will now fail to be placed on cells
that are already ocuppied by anything else. [Skotlex]
* status_is_immune will now return 0 or the amount of immunity of the
target. In which cases it returns 100 for WoH and the GTB bonus when they
have passed the gtb_sc_immunity setting. This enables targetted spells to
not "fail silently" unless GTB's magic reduction is 100. [Skotlex]
* Fixed Homunculus being spawned as soon as they arrive from the
char-server even if the Master has not spawned on the map yet. [Skotlex]
* AL_TELEPORT now fails when used on top of Land Protector. [Skotlex]
* Some minor cleanings in pc_setpos, it may (or not) help fix that
homunc-caused "map_addblock" error message. [Skotlex]
* Corrected fog of wall, so that the deleted/doubled-duration effects are
calculated on a cell-by-cell basis. [Skotlex]
* Updated Land Protector: It will now delete/block effects of ALL ground
skills EXCEPT: Song/Dances/Traps (encores are still blocked). Land skills
blocked/deleted by LP also can't be casted on top of an existing LP. The
code uses the inf2 value of the skill to determine if it is a
song/dance/trap. [Skotlex]
* Ganbantein, mimicking LP, will now also remove ensembles. [Skotlex]
* Fog of Wall will fail when casted on top of a Volcano/Violent Gale
[Skotlex]
* Applied FlavioJS's fix to the npc whisper system. [Skotlex]
2006/11/09
* Fixed status-change loading not working. [Skotlex]
* Fixed permanent mob-spawn script-events not working. [Skotlex]
* AL_CURE won't confuse undead players. [Skotlex]
* Corrected the Fog of Wall check so that it lasts 2x when it is placed on
TOP of a suiton/deluge, not when the caster is on top of them. [Skotlex]
* Updated status_check_skilluse so that when the caster has a disabling
status change (stun/petrify/etc) it will block the skill in all cases
EXCEPT on cast-end when the skill is ground-targetted. [Skotlex]
* Fixed Health Conversion skill formula bug. [Lupus]
2006/11/08
* Fixed Desperado's hit-rate, now it behaves as it should. [Skotlex]
* The GVG map-packet will now also be sent for guild dungeon maps.
[Skotlex]
* Added clif_gospel_info which displays info about the buffs you are
receiving. Thanks to Rayce for the packet information. [Skotlex]
* Fixed Spider Web not ending when hit by a fireelemental attack. [Skotlex]
* Cast-time reductions from status changes will not be executed until right
before casting, to prevent status changes from ending when attempting to
cast and the attempt fails (invalid cells, not enough sp, wrong target,
etc, etc) [Skotlex]
* Added check to prevent Wand of Hermod from seeking for a partner to
encore, since the partner is supposed to be the warp. [Skotlex]
* Corrected the mob spawn reading code so that the event-name can be up to
50 characters long (which is the actual event length) and so that it can
read spaces within them, it will also strip the leading/trailing quotes if
you use them so that the event is actually found on mob-death (so you can
do stuff like "My NPC::OnDead" as a valid event). [Skotlex]
* Moved the homunc inherit speed from the master from status_calc_pc to
LoadEndAck, since the hom's speed matches that of the master each time the
master changes maps. [Skotlex]
2006/11/07
* Applied FlavioJs's patch which enables colored console output for Windows
systems. It also includes a config setting called
"stdout_with_ansisequence" with which you can turn off the color codes (in
case you are logging all output) [Skotlex]
* Added error reporting when the max number of ground unit cells has been
reached (this may be the reason why sometimes it fails to recognize when
you step out of a song/dance/encore) [Skotlex]
* Added passing the Endure effect to other devoted people. Note that the
"hit count" is individual for each character, and only when it ends on the
Crusader himself will that force it to end on everyone else. It also will
not transfer on gvg grounds, but it does transfer in pvp. [Skotlex]
* Fixed Reflect-Shield triggering Auto-Guard instead on devoted chars.
[Skotlex]
* Added a check to prevent casting ground skills on a target and vice-versa
when said skill use packets are received. It really shouldn't be
exploitable, but doing that certainly makes the server print a lot of
"unknown skill used!" messages. [Skotlex]
* Fixed map_foreachiddb and map_foreachpc so they don't encapsulate the
variable arguments into a double va_arg list. Thanks to the Ultra Mage for
the tip. [Skotlex]
* Cleaned up the clif_hate/mob_info functions with the correct fields/usage
as explained by Rayce. [Skotlex]
* Implemented clif_feel_hate_reset packet to properly display the Angel of
the Sun/Moon/Stars, thanks again to Rayce for the relevant information.
[Skotlex]
* LP will again block all land-stuff from being placed down on top of it
for the exception of Song/Dance/Encores. [Skotlex]
2006/11/06
* Reapplied 'fix equipment scripts which are based on character variables not
working.' [Lance]
* Multiple Gunslinger skill corrections, refer to
http://ro.doddlercon.com/guides/gunslinger.html for information source:
[Skotlex]
- Corrected Ground Drift. Splash range of 3x3, stackable and placeable
underneath others, cast time is 2 secs. It's considered ranged, and it's
bonus damage increase is defense ignoring, always neutral.
- Corrected Bull's Eye implementation, it should deal normal damage against
non brute/demi-human targets.
- GS_DUST is now considered a short-range attack.
- Implemented Desperado's hit rate based on distance to caster as it's
believed to behave.
- GS_TRACKING's range is no longer affected by Snake Eye.
- GS_FLING's defense reduction is now 5*lv%
* Suiton's Speed/Agi penalty will affect everyone when used in versus maps.
* Corrected Kaupe so it doesn't ends on the first part of Soul Destroyer.
[Skotlex]
* Applied some cleaning to the way Tatami Gaeshi knocks back. [Skotlex]
* Cleaned up the way mobskill_use checks for the correct event. It should
fix unlimited mob-skill-casting issues. [Skotlex]
* Removed the return code entry when logging GM reload-GM requests
(login-sql),it'll just be stored as zero. [Skotlex]
* Added a fix on socket.c to not pick INADDR_ANY when choosing our own IP.
[Skotlex]
* Applied the correction on maprespawnguildid so that it parses ALL players
and not just those on a map. [Skotlex]
* TK_JUMPKICK now dispels normal aspd/speed potions (not berserk pitched
ones) and Preserve will be unable to block this. [Skotlex]
* Soul Linkers are now immune to SA_DISPEL [Skotlex]
* You can now place everything (except magic skills) on top of LPs.
[Skotlex]
* Corrected Ganbantein to not touch song/dance/ensembles. [Skotlex]
* Status_calc_pc will refuse to execute if the player is still tagged as a
"new connection" and the invocation is not meant to be the first one.
[Skotlex]
* Swapped the order of checks in status_isimmune so that Wand of Hermod
skill blocking takes precedence over GTB's [Skotlex]
* Client packets will all be ignored while a player is not on a map until
the LoadEndAck packet is received. [Skotlex]
* Reverted changes, moved status_calc_pc(sd,1) back to pc_authok
since it causes problems. [Lance]
* Temperory fixed stability issue caused by initial status_calc_pc
being placed AFTER another status_calc_pc. [Lance]
2006/11/05
* Updated sql files [Toms]
* Updated perl files acording to rev 9135 [Toms]
2006/11/04
* Readded duel code in map_quit. Why it has been removed!? [LuzZza]
* Converted itemdb tables to use smallint. Credits to ALZ. [Lance]
2006/11/01
* Reverted LK_Berserk HP requirement, as everything, including kRO X.2 and
pRO X.3, points that way. [Vicious]
2006/10/31
* Fixed song/dance/encore cells not being placed down when casted on top of
a land Protector. [Skotlex]
* Update homunc's speed when master's speed changes, should avoid homunc's
speed = 0 on login (homunc's stats are calculated before master's stats) [Toms]
* When Kaizel (or super novice rebirth skill) triggers, you get debuffed
now. [Skotlex]
* Modified the player_cloak_check_type and monster_cloak_check_type
settings. 1 makes it check for walls, 2 makes cloaking NOT end on normal
attacks, and 4 makes cloaking NOT end when using skills. The default
setting for players is still 1, but for mobs the default has been changed
to 4. [Skotlex]
* Non-players can now use all skills while hidden. [Skotlex]
* Added a check to prevent adding negative damage to the total accumulated
damage in mob_damage. It could fix some exploits, even though mob_damage
should never be invoked with negative damage anyway. [Skotlex]
* Implemented the property where the first attacker get's double exp-share
than the others. Due to the way exp calculation is done, this bonus will
not apply when you use exp_calc_type 1 (damage/max_hp) instead of the
default (damage/total-damage). For now this bonus is done after calculating
who is the MVP character instead of before. [Skotlex]
2006/10/30
* Fixed a little bug in event enqueue code [Toms]
* Updated the code so mobs can use ChainAction as a targetted skill.
[Skotlex]
* Added GroundDrift effects for Wind (Stun) and Fire (knockback). The
knockback value is unknown, so 3 is used for now. [Skotlex]
* Cleaned up some more the steal code, now you can't steal the last slot
regardless of skill level used. [Skotlex]
* Added consideration of Chain Action when cloning GunSlingers. [Skotlex]
* Modified battle_calc_return_damage to take the skill id as well, now
magic damage return will not work on skills tagged as ground or self
targetted. [Skotlex]
* Fixed Gank not working at all with the default max steal tries setting.
[Skotlex]
* Soul Drain won't work with skills tagged as self-targetted. [Skotlex]
* Improved the Suiton code so that the walk/agi penalty only applies to
enemies of whoever casted the skill. [Skotlex]
* Moved the initial status_calc_pc call to when you finish loading the map,
should fix equipment scripts which are based on character variables not
working. [Skotlex]
* Fixed getcharid according to samples and docs. [Lupus]
Thanks to joshuaali for pointing it out. eAPP has no such bug
2006/10/27
* Fixed mob-skill event "skillused" not triggering at all. [Skotlex]
* Summoned mobs will only be removed from a map if their master is also
removed (dynamic mobs) [Skotlex]
2006/10/26
* Updated sql files [Playtester]
* Experimental tweak to npc_parse_function - Overwrite existing functions. [Lance]
2006/10/25
* Cleaned up some more the event dequeue code, it will no longer clear out
the npc_id if there's no events waiting to be executed (why does it clears
the npc_id anyway?) [Skotlex]
* Because of possible conflicts with this change and the on-login script,
now the on-login script is executed when the player has finished loading
into their start-up map rather than as soon as receiving the registry
variables from the char-server. [Skotlex]
* Some cleaning of the pc_eventtimer and pc enqueue code, it should fix
some memory leaks when the event counter does not matches with the actual
number of queued timers during logout. [Skotlex]
* Fixed "skill_sp_override_grffile: yes" causing crashes when parsing
Homuncuus/Guild skills. [Skotlex]
* Made the exp bonus settings be adjustable: [Skotlex]
- exp_bonus_attacker: Indicates how much additional exp a mob gives per
additional attacker (eg: 10 -> +10%*attacker)
- exp_bonus_max_attacker: Indicates at which number of attackers the bonus
is capped (eg: 5 -> 5 attackers, so a mob yield the same exp whether 5 or
10 people attack it)
- Changed the way the party_even_share_bonus setting works. It now uses a
simple linear bonus increase (eg: 10 -> +10%*party member)
- The defaults are as explained by Tharis: +25%/attacker, capped at 12
attackers, no party bonus. The first two can be found in exp.conf, the last
one was left in party.conf
* MG_STONECURSE and NPC_PETRIFYATTACK now use time1 to specify the
"petrifying time". This value has been set to 5 seconds. [Skotlex]
* Now when SC_STONE is triggered from status-change cards, it's petrifying
duration will be passed as 0, causing the minimum (1 sec) to be used.
[Skotlex]
* Got rid of clones in src: old Novice Grounds map -> new_zone0? [Lupus]
2006/10/24
* Removed again your mdef reducing "petrifying" time as apparently it can't
be reduced by mdef. [Skotlex]
* Cleaned up the "show_steal_in_party" setting so it only takes effect when
the item was successfully stolen (there was no point in telling you the
item couldn't be stolen due to being overweight) [Skotlex]
* Cleaned up the pc_steal_item implementation (again). It now uses a more
random, simple approach in each steal attempt. [Skotlex]
* Changed the way the skill_steal_max_tries work. Now it actually MEANS the
max number of steal tries, use 0 to disable (unlimited tries). [Skotlex]
2006/10/23
* Added a bunch of important indexes when dealing with the log tables.
Added upgrade_svn9050.sql which adds these indexes as well. [Skotlex]
* Expanded the family check to work as it should, exp-share-range is
respected, and the child is not considered for it (thanks to TheUltraMage
for the investigation) [Skotlex]
* Double Casting will no longer fail when used. [Skotlex]
* Modified SC_STONE so that the duration of the "petrifying" time is 5 secs
reduced by your natural resistance to petrify (which is mdef%) [Skotlex]
* Modified the meaning of the third column in the skill_require_db. Instead
of MaxHP, this is now called MaxHPTrigger. This column (which was
previously unused by all skills) signals the limit HP% that you can have to
be able to use the skill. For example, setting it to 20 means the skill is
unusable if you have more than 20% life (note that this is merely a
threshold setting, it won't actually substract HP when used!) [Skotlex]
* Adjusted LK_BERSERK so you can only use it when you have 20% or less
life. [Skotlex]
* Removed NJ_TOBIDOUGU adding damage to W_HUUMA weapons which somehow got
readded. [Skotlex]
* When nonplayers use Cloaking, it will be forced to level 10 since mobs
shouldn't have movement/attack restrictions while walking cloaked.
[Skotlex]
2006/10/20
* Made HAMI_CASTLE use clif_slide rather than clif_fixpos. This should
fix clientside problems when castling between two positions the (client)
path finding can't find a walkable bath between anymore. [blackhole89]
* Fixed the Homunc not spawning next to you after receiving it's data from
the char-server. [Skotlex]
* Fixed Charge Atk being able to go through chasm/pits. [Skotlex]
* Moved the homunculus DB information from the player structure to the
homun structure. Modified the homunculus creation packets to hold this
information during creation, also, all initial values are handled by the
map-server, the char server only assigns it a homun ID. [Skotlex]
WARNING: This is yet untested! It's very possible something could had
broken after changing the format/size of the homunc creation packets.
* Added config setting "summon_flora_setting", which it you can decide now
two things: a. Whether or not players can harm your floras outside versus
grounds, and b. Whether or not you can summon out and mix different types
of plants at the same time. [Skotlex]
* Likely fixed pc_steal_item always failing to steal (it was attempting to
steal random item IDs...) [Skotlex]
* Cleaned up a bit the mob on-death event so that when the killer is a
homunculus, it's master will be taken. Also, the variable killerrid will be
set before running the script to specify who delivered the final blow. If
the killerrid matches with the script attached player, you can be sure your
player did the final blow to the mob, otherwise, the attached player is who
did the most damage to the mob. [Skotlex]
2006/10/19
* Cleaned up the log.c file. [Skotlex]
* Fixed log_chat not recording anything if the server is compiled in SQL
mode and sql_logs is turned off (it should then record to a plain txt file)
[Skotlex]
* Fixed SG_FRIEND, it should be triggering when Monks do Combo Finish (not
triple blows), and the trigger rate increase should be based on your known
level of SG_FRIEND, not TK_COUNTER. [Skotlex]
* Phantasmic arrow now knockbacks even if it misses. [Skotlex]
* Adjusted the way Monk combo times work. The combo time is now always
300ms (adjusted by combo_delay_rate) which takes effect inmediately AFTER
your current skill's canact-delay (which is why the particular skill delays
were moved to skillcast_db) [Skotlex]
* Modified skill_delayfix so it performs the can-act reduction from agi/dex
for combos there. [Skotlex]
* Modified pc_steal_item so that it behaves more closely to the way it does
on Aegis. [Skotlex]
2006/10/18
* Added a overflow check when calculating party exp share. [Skotlex]
2006/10/16
* Adjusted UTSUSEMI/BUNSINJYUTSU so that they block range/melee weapon
attacks and only melee misc attacks. This isn't 100% correct, but it's a
better approximation to the way these skills behave. [Skotlex]
* Emergency call &16 (disable skill from nowarpto maps) will now NOT block
Emergency Call if that map is also a gvg-castle map. Makes it safe to turn
on this option to prevent usage from special maps (like Lhz3) without
crippling the skill during WoE. [Skotlex]
* Applied most of Mpeg's work on Ninja Skills. For information see:
http://gpegon.free.fr/ea/ninja_10-15-06_mpeg.txt [Skotlex]
* When reinvoking a combo-time, the previous combo time will be terminated.
This could fix the ongoing difficulties pulling off Monk combos. [Skotlex]
* Fixed Esma-state not ending after casting it. [Skotlex]
* Fixed @hominfo displaying intimacy on a 1/10k scale. [Skotlex]
2006/10/14
* Homun info window to show crit value. As default, homun does NOT crit,
as monsters do not crit. This is purely for display purpose for players
to identify their homon's luk value. [Vicious]
2006/10/13
* Base attack for non players is now calculated as str + [str/10]^2 (it
does not has +dex/5+luk/5 which players do have) [Skotlex]
* Fixed the char-sql server trying to read the gms off a "gm_db" config
setting stead of "login_db" [Skotlex]
* Corrected Throw Arrow/Musical Strike's damage formula [Skotlex]
* Altered Trick Dead. It doesn't prevents skills from being casted on you
now, but damage-based skills will do no damage. [Skotlex]
* Made the battle_config.attack_attr_none apply to pets when using the
"fixed damage" pet skill scripts. [Skotlex]
2006/10/12
* made @killmonster make the mobs drop items again. [Skotlex]
* Added a temporary message when Angel of the Sun, Moon and Stars trigger
so you know it triggered. [Skotlex]
* When slaves_inherit_speed is set (which is also the default), homun will
have the same speed of their master when spawned. [Skotlex]
* When using Hatred and you already have a hate target, your current hate
target is displayed now. [Skotlex]
2006/10/11
* Cleaned up the char-server code when the last point of a player is not
found. First it'll check if there's any mapserver online, and then, if
there is, it'll look for the major cities. If this fails, then the player
will be told server is closed instead of trying to send him to a "random
map". Will fix the char-server printing the misleading message "map
server not found, sending to major city" when in reality there just
aren't any map servers connected. [Skotlex]
* Corrected the mob damagelog structure so that you can't exploit it by
switching characters. [Skotlex]
2006/10/09
* Fixed crash when char-server sends to a "random" map-server online on
connect. Thanks to TheUltraMage for pointing it out. [Skotlex]
* Should have fixed being petrified not reducing your defense and
increaseing your mdef. [Skotlex]
* Fixed SC_NOCHAT printing the "skills are now available" message twice on
natural expiration. [Skotlex]
2006/10/08
* Updated sql files [Playtester]
2006/10/06
* Updated Land Protector to block absolutely every land-based skills with
the exception of Encores/Dances. [Skotlex]
* Disabling status abnormalities will now reset a mob's target. [Skotlex]
* Mob morphing also resets their target now. [Skotlex]
* Monk combos no longer can ignore skill delay (delay skill for all their
combo-related skills is ASPD) [Skotlex]
* Now you can trade while in a chatroom. [Skotlex]
* Fixed homun-txt reading when the file has DOS line-type delimiters (\r\n)
[Skotlex]
2006/10/05
* skill_blown will now trigger on-touch npcs on the landing tile. [Skotlex]
* Max trade distance has been reduced from 5 to 2. [Skotlex]
* Undisguising will now resend the cart-contents. [Skotlex]
* Added function npc_unload_duplicates(), it unloads all npcs that are a
duplicate of the passed one. For use with @unloadnpc to prevent crashes
when you unload the npc that has duplicates. [Skotlex]
2006/10/04
* Bowling bash now always hits twice regardless of situation. [Skotlex]
* Added an underflow check to prevent sending to the client negative mdef2
value (for Frenzy'ed characters) [Skotlex]
* Modified pc_jobchange so that it automatically removes
peco/falcon/cart/homun if the new job you are changing to does not possess
the required skill for them. [Skotlex]
2006/10/03
* Fixed a possible crash with @reloadmobdb due to pet loot timers.
[Skotlex]
* Fixed a possible crash and a memory leak on the login-SQL server when
parsing unban requests. [Skotlex]
* Renamed setting delay_dependon_dex to delay_dependon_agi, the delay of
skills is reduced now (when enabled) by AGI instead of DEX, which makes a
lot more sense than DEX. [Skotlex]
2006/10/02
* Modified item-granded status resistance reduction to behave as explained
by Vicious (Ragnarok Monthly magazine) [Skotlex]
* Added the opt3 values to Eske [Skotlex]
* Fixed the txt->sql converter only saving the very first character
permanent variable. [Skotlex]
* Fixed the txt->sql converter saving account-wide variables as
character-wide ones. [Skotlex]
* Renamed nopenalty mapflag to noexppenalty. Using nopenalty will turn
on/off both noexppenalty and nozenypenalty now. [Skotlex]
2006/10/01
* Removed the speed adjustment per level of Increase/Decrease Agility
[Skotlex]
* Fixed humunculi skill exploit, thanks to mr.rkit [Lupus]
2006/09/30
* Rewrote the txt->sql converter. It now links directly to the char server
files so that it should get auto-updated with any code changes in the
later. [Skotlex]
* The converter will now also convert: account-wide variables, parties,
guilds, guild storage and guild castles. At this point the only two things
not converted are login-server-wide account variables (##, they belong to
the login converter) and homunculus (the SQL save function is messy and
doesn't lends itself to be integrated with the converter the way all the
other functions are). [Skotlex]
* misceffect2 will no longer cause the effect on top of the source object
when it is the fake npc. [Skotlex]
* Added check so that Frost Nova doesn't hides hitting animation on
targets. [Skotlex]
* Added the missing brackets around the trade logs condition check, thanks
to Coltaro. [Skotlex]
2006/09/29
* Spurt state will now trigger on Soul Linkers as well. [Skotlex]
* Added a check un unit_run when unit_walktoxy fails. Should fix running
getting you stuck sometimes when running on diagonals near obstacles.
[Skotlex]
2006/09/28
* Merged the necessary changes to make the script engine support negative
constants (db/const.txt). Thanks to Rayce (from jA) for the code. [Skotlex]
* Cleaned up the skill.c code to take into account when skill_unitsetting
returns null (skill failed), fixes a possible crash with Wand of Hermode
[Skotlex]
2006/09/27
* Cleaned up status_get_party/guild_id, it should also fix a possible crash
when invoking such a functio on a masterless pet. [Skotlex]
* Sharp-Shooting will now display a skill animation. [Skotlex]
* The no_spawn_on_player setting will now also work for static mobs, but
only if the setting is set to 100 or higher. [Skotlex]
2006/09/26
* Yet again messed with the packet sent during a splash attack, but this
time taking into account the packets that eA was using some many revisions
ago. Tests are needed to see if Magnum Break/Grimtooth don't spam the skill
animation anymore, and to see if GrandCross didn't break it's animation as
well. [Skotlex]
* Added function skill_dance_switch which handles converting overlapping
song/dances to dissonance/ugly dance. It should make the overlapping area
now behave completely like the mentioned song/dances (taking into account
interval and target type changes). [Skotlex]
* Updated battle_check_target so that non-offensive skills cannot be used
on a homun except for the homun and it's master. [Skotlex]
* Steal zeny won't work on treasure chests now. [Skotlex]
2006/09/25
* Added an ugly check so that Heal will display 0 when healing a berserked
character (and it will again display full heal amount when healing a player
who's at full life) [Skotlex]
* Disabled again client-self-muting since it's causing too much trouble.
[Skotlex]
* Merged FlavioJS's script patch which should fix stuff like "mes ();"
causing crashes. [Skotlex]
* Item group reading will now complain when a line doesn't has enough
fields. [Skotlex]
* Fixed #baselevelup adding instead of substracting status points when used
with negative levels. Also made it reset your stats if there wasn't enough
to substract from. [Skotlex]
* Applied FlavioJS's suggestion of expanding WFIFOPOS to also take the
direction. This had the side effect of fixing the direction missing from
the mob spawn packet, which explains why all npcs face north when you are
within sight while doing a @reloadscript. [Skotlex]
* Changed the order of packets in TK_HIGHJUMP, may fix the reports of
getting stuck when jumping into a warp. [Skotlex]
* Changed a bit the code of marionette control, where a redefined local
variable may be the cause of mob-targetted Marionette Control stacking
stats up. [Skotlex]
2006/09/24
* When the code auto-guesses that a skill should require ammo, it will
accept any type of ammo for using it instead of only arrows. Fixes Magnum
Break usage on Gunslingers. [Skotlex]
2006/09/22
* Probably fixed a signed/unsigned mismatch warning on the new socket code.
[Skotlex]
* Fixed the "map server claims to have char online, but this other map
server also has it tagged as online" message triggering in some cases where
it shouldn't. [Skotlex]
* Fixed some maps in db/mapindex.txt being under the wrong id and added comments
so this will not happen again. [Zephiris]
--- ATTENTION! ---
People running TXT servers will have to tell their players to redo their /memo
points since the map ids of the old file were wrong.
2006/09/21
* Fixed a bug on "select" when skipping empty entries when the selected
entry is the last. [Skotlex]
* Improved a bit RFIFOFLUSH as suggested by Harbin. [Skotlex]
2006/09/20
* A mob's HP is set temporarily to 0 before invoking it's on-death script,
prevents said scripts being able to "rekill" the mob indefinitely (if stuff
like killmonster is used within) [Skotlex]
* Some small cleanups in chat.c [Skotlex]
* Fixed party_sub_count (TK_POWER) failing when the idle_no_share setting
was disabled. [Skotlex]
* Enabled Star Gladiators and Soul Linkers to do /doridori [Skotlex]
2006/09/19
* Fixed nocommand mapflag causing the "you can't use commands on this map"
message to trigger one very single chat, instead of only for actual @/#
command invocation. [Skotlex]
* Added support for skipping empty string menu entries for the select()
command (just as `menu` has it already) [Skotlex]
* Fixed pc_set_hate_mob letting you place mobs on any of the three
positions regardless of size [Skotlex]
* The double continuation error will now display both scripts that
triggered it. [Skotlex]
* Loading the storage from the char-server will fail if player is already
tagged in final save state. [Skotlex]
* Removed setting ban_spoof_namer, sending invalid global-talk packets will
now just kick the player out of the server. [Skotlex]
* Added echoing messages back to self when using @/# commands on whispers
and party/guild messages, to prevent the client from muting yourself.
[Skotlex]
* Fixed some gcc4 warnings [Toms]
2006/09/18
* Fixed Spider Web fire damage bonus. [Skotlex]
* Made Global chat always reply back to you even on @/# commands, this
prevents the client from muting yourself due to "hack". However, this same
fix isn't easily applicable to @ commands invoked from whispers or
party/guild messages, those are still pending. [Skotlex]
* Merged Meruru's update to socket.c, which includes a rewritten parse
function, which should hopefully be more efficient than the previous code.
[Skotlex]
* The new code includes support for two config settings
(packet_athena.txt): frame_size, which can be used to alter the logic
packet-size allowed by the code, and mode_neg, which when set to yes, sets
TCP_NODELAY on all connections (defaults to yes). [Skotlex]
* High-Jump is usable everywhere now, except that on maps where it
previously failed, now will just make you jump in place. [Skotlex]
* Fixed TK_RUN as per packets provided by AuronX. [Skotlex]
* Moved the equipment/card resistances to status ailments outside of
status_get_sc_def, so that they are applied only to rate, not duration.
[Skotlex]
* Modified the Asura code (again), hopefully movement sprite issues are
fixed now [Skotlex]
* @reloadscript scripts will no longer eliminate mobs with no respawn data.
But watch out for possible bugs (I think someone mentioned 1 extra
treasure box will spawn when you use it? This needs testing!) [Skotlex]
* Made speed_add_rate a linearly stacking increase. [Skotlex]
* Corrected a possible overflow when using show_mob_info to display the
mob's up as a percent. [Skotlex]
* Corrected the documentation for checkoption/checkoption1/checkoption2
[Skotlex]
* Reenabled client requesting to self mute, as the whole knockback packet
issues of the past which were causing players to mute themselves when being
knockback is no longer there. [Skotlex]
2006/09/17
* Fixed NPC_INVISIBLE's cloak ending after attacking once. [Skotlex]
* Fixed SG_FUSION being castable without Soul Link state. [Skotlex]
* Moved the item-use restriction SC checks from clif.c to pc_use_item,
fixed Gravitation blocking potion usage on it's area of effect. [Skotlex]
* Sphere Marines and Summoned Flora are now immune to class-changing.
[Skotlex]
2006/09/16
* Added monster_ai&256. When set, a monster will pick a random starting
position to begin checking versus it's skills, otherwise, it will always
begin checking from the beginning. [Skotlex]
* Fixed the status change duration reduction equation was was totally
wrong, thanks to k3dt [Skotlex]
2006/09/15
* Now mobs won't do a distance check to lose their target on every ai
iteration, but only when they finish walking (unless you set monster_ai&1)
[Skotlex]
* The chase distance before a mob gives up following a player has been
increased from view-size (range2) to min-chase (range3). [Skotlex]
* Reverted the Summon Flora change where all plants were being summoned in
one go. [Skotlex]
* Moved the weapon repair effect to where it belongs (after successfully
repairing an item) [Skotlex]
* Added config setting "friend_auto_add" (battle/player.conf), if set, when
you accept someone as your friend, both characters will show up on each
other's friend list. [Skotlex]
2006/09/14
* Changed Extremity Fist's code to make you actually walk past your target,
which displays a much more correct "animation" for the skill. Thanks to
HiddenDragon for the information and code. [Skotlex]
* Updated the item_db search functions so that when returning the
dummy-item, it first updates the nameid to match the requested one, this
prevents pc_additem later on giving you an item with ID 500 instead of the
ID requested. [Skotlex]
* Added a clif_skill_nodamage packet when using Repair Weapon, just to see
what happens. [Skotlex]
* Likely fixed "half" of the alliance being saved, which ends up in guilds
that can attack another, but not viceversa. [Skotlex]
* Added deleting of saved Status changes on character delete for the
Char-TXT server. [Skotlex]
* Fixed the can-act delay never being checked when requesting to use
Homunculus Skills. [Skotlex]
* Fixed warmth skills draining SP of the target, not the caster. [Skotlex]
* When TK_DODGE triggers, it will no longer delay your attack or movement.
[Skotlex]
* Estimation /Sense/ whatever will no longer hide the vit bonus to mdef2,
as reported by Playtester. [Skotlex]
* Updated Summon Flora to summon the max number of possible plants on one
cast. It will consume as many bottles as monsters summoned. Also cleaned up
the function to be usable by non players. [Skotlex]
* Shadow Jump no longer goes over walls. [Skotlex]
* battle_calc_gvg_damage will be invoked in gvg maps regardless of woe
time. [Skotlex]
* NPC_MENTALBREAKER now zaps matk*lv SP based on observations by Tharis.
[Skotlex]
* md->class_ will be changed on mob-class-change to fix all class-change
related bugs. On respawn, the spawn data will be used to revert to the
original class. [Skotlex]
* Improved the pet skillbonus timer for "eternal bonuses" cases where the
bonus delay is 0. [Skotlex]
2006/09/13
* SC_CHANGE cannot override itself anymore. This fixes being able to
"recast" the skill while it's still active to lengthen the duration AND
reheal the target. [Skotlex]
* Changed a bit the dnsbl lookup in the login servers to make it faster.
[Skotlex]
* Moved the pc rate modifiers from items
(hp/sp/matk/hit/flee/cri/flee2/def2/mdef2/def/def2/speed) from
status_calc_bl_sub_pc to status_calc_pc, as it simplifies code vastly, and
also fixes Osiris card not applying to said bonuses. [Skotlex]
* Fixed pc_damage_delay_rate not working, thanks to Orn. [Skotlex]
* Modified the nocommand mapflag so you can specify the GM range that is
blocked from using commands (eg: "prontera.gat mapflag nocommand 40"
disables commands to characters in the GM range 0~39) [Skotlex]
* Modified the char-server TXT whisper system to use the online_db to know
to which map server forward whispers, instead of just sending the whisper
to every map server. [Skotlex]
* Readded the setting TCP_NODELAY on socket.c to see if it fixes the
walk-lag issue. [Skotlex]
2006/09/12
* Modified the login SQL server so that case insensitive lookups use "where
name = BINARY 'name'" instead of "where BINARY name = 'name'", since this
way the name index should be used, and performance will no longer be
heavily affected. [Skotlex]
* Modified main.sql to add 4 missing indexes (thanks to ErkDog): char_id on
the tables memo/friends, and online/name on the char table. Added
upgrade_svn8728.sql to add these indexes to already existing tables.
[Skotlex]
* Updated convert_engine.sql to use TYPE instead of ENGINE to be compatible
with Mysql 4 installations. [Skotlex]
* Moved the morph restrictions from skill_additional_effect to
mob_class_change, so that SA_MONOCELL will not convert clones, emperium, or
treasure boxes. [Skotlex]
* Fixed 'range' might be used uninitialized warning [Toms]
* Added Jaguar's sql script to convert all tables to MyISAM. It's located
in sql-files/convert_engine.sql WARNING: Using MyISAM is much faster than
InnoDB, but you are strongly recommended to backup your database before
switching engines since we don't know if eA is fully coded to work
correctly with MyISAM yet. [Skotlex]
* Added manual deletion of sc_data entries when deleting a character
(char-SQL) [Skotlex]
* Updated main.sql to use pure MyISAM tables, removed all foreign keys.
[Skotlex]
* Updated battle_switch to use strncmpi instead of strcmpi, it makes it so
using "yessir" will match "yes", this is actually needed because if you set
a config setting to "yes " (notice the trailing space), then the map config
engine fails to read it right, and will set the config setting to 0 (no).
[Skotlex]
* Some corrections to hate_mob cleanup when triggering the Angel stuff. [Skotlex]
* Updated the show_mob_info setting to add another space to the separating
pipes, so that each field is separated by " | " instead of " |". [Skotlex]
* Homunculus intimacy will go back to 500 on evolution. [Skotlex]
* Baphomet splash damage will now hit nearby enemies regardless of flee
(but the initial attack still has to connect for the splash to trigger)
[Skotlex]
2006/09/11
* Modified set_nonblocking and setsocketoptions in socket.c, using eApp's
code as reference. Hopefully should improve performance somewhat. [Skotlex]
* Added a comment explaining what a comment is to login/char/map config
files, as well as the main script config file. [Skotlex]
* Modified SG_FEEL so that it works the same way that in Aegis
(packet-wise) [Skotlex]
* Added a comment to explain how to "remove" a string variable from the
msg_athena entries. [Skotlex]
* Summoned and slave mobs won't show up on @showmobs anymore. [Skotlex]
* Moved Spider Web damage bonus from battle_calc_damage to battle_attr_fix,
so that damage will be doubled based on the actual attack element.
[Skotlex]
* Adjusted autospell cards to trigger only on physical weapon attacks.
[Skotlex]
* Adjusted a bit the heal code, it should now show either the full heal
amount, or 0, depending on whether the target was healed at all or not
(this also means it shows 0 if you try to heal a full-life character.. but
it's the closest I've gotten to make it display 0 on Berserked chars)
[Skotlex]
* Memorize will be consumed even on instant cast spells now. [Skotlex]
* Berserk will end now if hit and remaining hp is less or equal to 100.
[Skotlex]
* Guild Aura will be removed on sc-load to prevent Guild Masters from
getting that bonus from the old implementation. [Skotlex]
* Added D-Kalck's fix of the TXT -> SQL converter [Playtester]
2006/09/10
* Thanks to KarLaeda, added missing function in @showmobs [Lupus]
- Script function 'query_sql': In the TXT version it doesn't fill the array
and always return -1. Added for scripts compatibility. Your scripts
won't crash in TXT version. They can work it around.
I suggest we need a function getversion()
* Updated item_db.sql and mob_db.sql [Playtester]
2006/09/09
* Added a crash protection in case mapfreeblock unlock tries to free a null
pointer. [Skotlex]
* Moved perfect_hiding from state to special_state, so that it clears out
when you remove your pet. [Skotlex]
* Probably fixed the Taekwon Rest skills. [Skotlex]
* Fixed a npc-timer memory leak on npc_unload ("[Warning]: ers_obj_destroy:
X entries missing, continuing destruction. Manager for entries of size
16.") [Skotlex]
2006/09/08
* Unified the rest and ganster paradise code into a single function.
[Skotlex]
* Moved the Happy State trigger to the regen function, it now triggers at
the same time SPTIME does. [Skotlex]
* Cleaned up SG_HATE, hope it works now. [Skotlex]
* Removed sg_miracle_skill_duration, replaced it with
sg_miracle_skill_min_duration and sg_miracle_skill_max_duration, to specify
a range for the duration of the skill. [Skotlex]
* Added upgrade_svn8675.sql in case, for some reason, your guild table
still has the emblem_data field as a 'blob' with "NOT NULL" specified.
[Skotlex]
* Fixed alliance/opposition making not cancelling out map-server-side when
the guild already had max number of alliances/oppositions (thanks to k3dt)
[Skotlex]
2006/09/07
* Fixed SC_BERSERK setting Hp to 100 when dispelled by unnatural means (eg:
wand of hermod) [Skotlex]
* Cleaned up the doridori parse clif function. [Skotlex]
* Merged some of mpeg's work on NJ skills [Skotlex]
* Removed the Warmth "stacking" code. [Skotlex]
* Added back the effect of /doridori to skill-SP regen [Skotlex]
* Implemented a rough version of Angel of the Sun/Moon/Stars, it has a low
chance of triggering on doridori-boosted SP-regen events. However, it has
no client-side messages yet (need to add these in) [Skotlex]
* Added sg_angel_skill_ratio to specify rate at which the Angel skill
triggers. [Skotlex]
* Added unit_cancel_combo which takes care of ending a combo time and
resuming normal attack 'inmediately' [Skotlex]
* Cleaned up some the SG_HATE code, you can't change hate targets anymore.
[Skotlex]
2006/09/06
* Fixed the memset in status_calc_pc, corrects some mysterious bugs such as
item-drop bonuses suddenly not working anymore. [Skotlex]
* Corrected SC_INCREASEAGI and SC_DECREASEAGI speed-change formula.
[Skotlex]
* Fixed Aex Aeterna ending on Soul Breaker's first half. [Skotlex]
* Applied Orn's modification on speed increases/reductions with increase/
decrease agi [Toms]
2006/09/05
* Removed setting mob_show_hp, it's been replaced now by mob_show_info,
which can be used to specify what kind of info should be displayed from a
mob. Current options are two different formats for Hp display, and current
level (monster.conf). [Skotlex]
* Fixed Signum Crucis Def reduction being 10+2*lv% instead of 10+4*lv%
[Skotlex]
* Applied the Ultra Mage's suggestion to have the map server strip trailing
spaces/comments from the config files. It will also now print out when an
unknown config setting is found. [Skotlex]
* Fixed status change resistance not being invoked at all for pretty much
all cases. [Skotlex]
* Corrected SC_INTRAVISION not starting. [Skotlex]
* Fixed crash when attempting to read a Label as a string on a script
(thanks to End of Exam) [Skotlex]
* Fixed possible crash when changing a chat-room's owner (thanks to End of
Exam) [Skotlex]
* Fixed dispell removing SC_NOCHAT [Skotlex]
* Small fix which should correct skill_attack damaging hidden characters
when it shouldn't. [Skotlex]
* Fixed connect_until field being a smallint rather than int in the login
table (upgrade with upgrade_svn8630.sql) [Skotlex]
2006/09/04
* Fixed crash when using Adaptation during an Encore. [Skotlex]
* Should have fixed manner being reset to 0 on logout while muted.
[Skotlex]
* Removed status_get_sc_tick, duration and chance are now both handled by
status_get_sc_def (this means status change duration and success rate
both will always follow the very same formula) [Skotlex]
* Fixed mob-kill experience getting screwed up when characters who did
damage die/logout at the moment the mob dies. [Skotlex]
* Should have fixed "sleep", thanks to Lance for figuring out the error.
[Skotlex]
* SC_REFLECTSHIELD will now be passed to devoted characters at cast-time.
[Skotlex]
* Added a check to make a mob's level 1 if the read level from the db is
less than it. [Skotlex]
* status_calc_misc will now be invoked in status_calc_bl even on the first
call, since status could have gone up due to skill bonuses. [Skotlex]
* Moved max HP/SP calculations to before invoking status_calc_misc
[Skotlex]
* Simplified distance and check_distance to use "aegis" methods (greater of
dx/dy = distance), there's a new define in map.h called CIRCULAR_AREA, when
set, the previous method is used, and "for each in range" calls will also
check for distances, making most ground skills and battle system use real
circles instead of squares. [Skotlex]
2006/09/03
* Fixed SC_BERSERK's no regen penalty lasting pretty much forever.
[Skotlex]
2006/09/02
* SC_REGENERATION's val4 now holds the RGN flag of what is blocked rather
than blocking all types of regen. [Skotlex]
* LK_BERSERK will now only block natural regen on state-end. [Skotlex]
* SC_EXTREMITYFIST/SC_DANCING/SC_EXPLOSIONSPIRITS will only block natural
sp regen and not skill regen [Skotlex]
* SC_REGENERATION blocking will be cancelled on logout now. [Skotlex]
* Corrected SCB_LUK not updating SCB_BATK as well. [Skotlex]
2006/09/01
* Corrected script_commands description of getequipid, it returns -1, not 0
on fail. [Skotlex]
* Fixed the mob-id check during pet_db loading, it will also now print when
a pet is not loaded due to having an invalid mob class specified. [Skotlex]
* The "delete_timer error/no such timer" report will now print the related function [Toms]
* The Clearing unused stack report will now print the related NPC [Toms]
* The duplicate npc report will now print the related file name [Toms]
* Added config setting "partial_name_scan", which specifies whether @ given
names should use a partial string lookup or absolute name lookup. Defaults
to no (gm.conf) [Skotlex]
* Expanded status_calc_misc so it may also calculate the batk of characters
as well as their regen data (if they have it) [Skotlex]
* Fixed a memory leak when using charsave_method:1 [Skotlex]
* Soul Breaker will now be affected by Lex Aeterna on both parts of the
attack. [Skotlex]
* Status changes with no skill and no SCB* data will now go through if they
have an SI* icon. This should fix SC_MIRACLE [Skotlex]
* Reverted switching a mob's adelay/amotion when the later is longer than
the former, now both get updated to amotion. [Skotlex]
2006/08/31
* Moved the intimacy penalty of HFLI_SBR44 and HVAN_EXPLOSION to
skill_counter_additional_effect [Skotlex]
* Simplified skillnotok_hom by using an invocation to skillnotok [Skotlex]
* Hopefully fixed BD_ADAPTATION [Skotlex]
* Homun won't lose any intimacy on death now. [Skotlex]
* Homun will be saved together with the master now (as long as the homun is
active) [Skotlex]
* Modified the error reporting in map_freeblock_unlock so that when there's
an error, the reported line number is the file's linenumber plus the
object's type *10000. This is for debug information to help track down the
already-freed error. [Skotlex]
* pc_adopt will now preserve the kid's job/job-level/experience. This means
that if you adopt a Swordman level 45, it will become a baby-swordman level
45, with the exact same exp as before. [Skotlex]
* Fixed new mob's name not sent to the client when the mob is morphed [Toms]
* Added setting attack_walk_delay which specifies whether a character
should (or not) be able to move inmediately after starting a normal attack
(battle.conf). Defaults to 0 since that's what Aegis uses. [Skotlex]
* Fixed @summon's delete timer being screwed up. [Skotlex]
* Cleaned up a bit the summon script command. [Skotlex]
* Fixed the clone script command's delete-timer being screwed up. [Skotlex]
2006/08/30
* Skill required-state will now only be checked on cast-begin, not
cast-end. [Skotlex]
* Added a check in status_calc_pc to prevent player rate adjustments from
from going below 0. [Skotlex]
* Removed sending normal-damage packets instead of skill packets for
splash-damaged skills, since... well, that's how Aegis does it. [Skotlex]
* Updated HLIF_CHANGE to work as explained by Tharis -> It now adds 30*lv
vit and 20*lv int, is dispelled on warp, and can-act delay is 5+5*lv
minutes. Hp/Sp is no longer set to 10 after a forced expiration. [Skotlex]
* Fixed up char-sql compilation. [Skotlex]
* Added a message to @clearweather stating when climate changes will
dispel. [Skotlex]
* Corrected @hidenpc saying that it's command name was "@npcoff" [Skotlex]
* Updated itemdb reading on the char-sql server so that it reads both
item_db and item_db2 files (totally untested yet) [Skotlex]
2006/08/29
* Added printing out whenever the irc-module attempts to connect, to debug
whether the map-server lag is due to this or not. [Skotlex]
* Mobs will now always chase players using hard-path seeks. [Skotlex]
* monster_ai&1 now only signals whether mobs should update their target
cell while chasing more frequently (rather than being state-driven like
Aegis) [Skotlex]
* Changed the defaults of view_range_rate and chase_range_rate to 120 to
aproximate better Aegis's view ranges (which are square areas and not
circles) [Skotlex]
* Applied Mpeg's work on GS [Toms]
( http://gpegon.free.fr/ea/gunslinger_08-29-06_mpeg.txt )
* Fixed a syntax error in @showmobs [Toms]
* Added @showmobs. It shows selected mobs on your mini-map (excluding
mini-bosses & MVP) thanks to KarLaeda for the command [Lupus]
2006/08/28
* Modified the dancing code and Moonlit Petals in particular, so that it is
treated as an ensemble like any other, it will just knockback people when
they step into it. [Skotlex]
* The memory leak reports will now print out in the logs also the revision
they belong to. [Skotlex]
* Cleaned up the scriptable npc-shop code, it should be crash-proof now.
[Skotlex]
* Added TK level-up buffs to SG too, and extended them to 10 min [DracoRPG]
* Added "Barefeet Mastery" effect to TK_RUN (thanks Tharis for both) [DracoRPG]
* Changed the produce_db format, now there's a skill-lv column right after
the skill-id column to specify required skill-level to craft this item.
[Skotlex]
* Modified the skill produce_db code to take into account the new skill-lv
requirement. [Skotlex]
* Fixed exp bonuses applying twice for the job-exp [Skotlex]
* @reloadbattleconf will now also update the ragsrvinfo table on the
char-server. [Skotlex]
* Fixed homun hp/sp growth rates stacking with HP/SP passive increasing
skills. [Skotlex]
2006/08/27
* Fixed undefined reference to 'malloc_set' in log.c [Toms]
* Updated svn-revision reading, now it can read the new svn file system [Toms]
* Fixed a bug with homunc which could spawn on a non-walkable cell [Toms]
2006/08/26
* Optional macro MEMSET_TURBO for faster low-level memory initializations. [Lance]
* Small bug fix in read_homunculus_expdb (a warning was always displayed) [Toms]
* Small adjustment on the mob_ai code which could fix mobs not chasing you
if you hit them from the maximum possible diagonal distance. [Skotlex]
2006/08/25
* Cleaned some the skill unit removal added flag so that it signals whether
the skill is being force-removed, or it has "naturally expired". [Skotlex]
* The following skills will display a normal attack animation now:
NPC_WATERATTACK, NPC_GROUNDATTACK, NPC_FIREATTACK, NPC_WINDATTACK,
NPC_POISONATTACK, NPC_HOLYATTACK, NPC_DARKNESSATTACK,
NPC_TELEKINESISATTACK, NPC_SPLASHATTACK
* Skills that require a weapon and consume spirit spheres will no longer be
auto-tagged to require ammo. [Skotlex]
* Now MISC skills with delay 0 will also use the attack delay (if the skill
is tagged to do damage) [Skotlex]
* Added script commands roclass/eaclass to enable scripts to access eA's
job format. Read script_commands.txt and ea_job_system.txt for a more
complete explanation of how this job system works. [Skotlex]
* Added a flag to skill_delunitgroup, skill_delunit & skill_unit_onlimit.
If 1 is passed, it will avoid UNT_WARP_ACTIVE to be transformed in
UNT_WARP_WAITING and will destroy it. [Toms]
( To avoid such crash : http://www.eathena.ws/board/index.php?showtopic=114102
when the code need an empty slot and the oldest one is UNT_WARP_ACTIVE )
2006/08/24
* Little cleanup on homunc's code [Toms]
* Modified @reloadmobdb & @reloadskilldb to reload homunc's db too [Toms]
* Now when a mob's adelay is set to be less than the amotion, both values
will be swapped (this is an attempt to understand how those mobs actually
work on aegis) [Skotlex]
* script command "isrefine" will no longer return always false for equip
positions above 6 (this has not been needed since the addition of the
refine column to tbe item_db many months ago) [Skotlex]
* Added NPC_CRITICALSLASH to the list of skills that display as a normal
attack. [Skotlex]
* Reverted the previous change, changed the pet capture code to try to
capture a mob based on their view class rather than actual class.
[Skotlex]
* Fixed the md->class_ variable not being updated when a mob's class is
changed. [Skotlex]
* Added setting clear_skills_on_warp to specify when a character's
land-based skills are deleted when the caster changes maps. Defaults to all
types. [Skotlex]
* Should have fixed Brandish Spear not passing the flag to skill_attack,
causing it to do miserable damage. [Skotlex]
* Warp Portal will no longer be removed when caster steps through it (this
is left to the new clear_skills_on_warp setting) [Skotlex]
* Cleaned up status_percent_change to switch equations when the target has
high hp to prevent overflows, also it will directly take hp/maxhp when a
rate of 100 or higher is passed to prevent calculations. [Skotlex]
* Traps and Land Elemental fields are no longer automatically removed on
map change (handled now by clear_skills_on_warp) [Skotlex]
* traps_setting &2 no longer does anything (handled now by blah blah)
[Skotlex]
* Applied some change from mpeg on Ninja Skills [Toms]
* Put HVAN_Explosion based on max_hp instead of current hp [Toms]
2006/08/23
* Fixed mob_clone_spawn completely ignoring the mode variable. [Skotlex]
* Fixed Energy Coat reducing and consuming more than it should when you
have 100% SP [Skotlex]
* Cleaned up getmapxy script function, also added support for type 4 so
that it returns a player's homunculus position if such exists. [Skotlex]
* SC_ARMOR_ELEMENT looks like gone away from status_change_start since ... rev 6791.
Try to reimplement it. [Toms]
* Fixed HVAN_EXPLOSION [Skotlex]
* Frost Nova won't display a nodamage skill packet (still need to sort out
a way to fix the splash damaged packets) [Skotlex]
* Fixed a possible SIGSEGV on buildin_maprespawnguildid if the map is unknown [Toms]
* Added debug on "Inifity loop" to know which script is making this loop [Toms]
2006/08/22
* More fixes to the splash code. Kamaitachi and Sharpshooting should
display correctly now. [Skotlex]
* Fixed a crash on the mobspawn script command. [Skotlex]
* Made SC_FLEET increase batk as well as watk. [Skotlex]
* Fixed gcc warning [Toms]
* Fixed AM_REST not closing the homunc status window [Toms]
* Fixed SC_NEN according to Mpeg [Toms]
* Added a ShowStatus("Terminating...\n") on login-server_sql [Toms]
* Some corrections to make Tatami Gaeshi work correctly. [Skotlex]
* Fixed SBR44 doing 100% more damage than it should. [Skotlex]
* Some more work on the splash skill code. Now splash-damaged enemies
should show no animation at all, just the damage-number, while only the
targetted character should still display the full skill animation.
[Skotlex]
* Modified the homun-txt file-save format to separate the name from the
rest of fields with tabs (like character saving does), this may fix homun
save/loading when using non-latin characters on the name, but be warned
that it also means the previous homun-data files are lost! (unless you
replace the comma before the start of a name with a tab) [Skotlex]
* getnameditem will now also work on stackable items [Skotlex]
* Corrected battle_calc_weapon_attack so that all skills ignore your
left-hand weapon, and that the Katar's double-attack damage bonus for the
offhand damage applies ONLY on normal attacks. [Skotlex]
* Fixed Resurrect Homunculus's % to 20*lv% [Skotlex]
* Added SQL update which should remove \' from guild names [Toms]
* Added option to disable character deletion of certain levels [Lupus]
check char_athena.conf for this option format
2006/08/21
* Some more cleaning up of the splash skill code. Now the passed hit value
for the splash targetted mobs is 9 instead of 5, this allows multi-hitting
splash skills to display the number of hits correctly. [Skotlex]
* Fixed call homunc bug when the homunc was vapo and the master has change
of map [Toms]
* Fixed SQL-Guild Creation, guild name was escaped 2 times [Toms]
* Some cleaning of the splash skills. Updated skill-attack to enable again
passing of flag 0xF000 which signals that the skill level sent to the
client should be -1 (no skill name shouted). Should (hopefully) clear/clean
up a bunch of splash damage skill animation-related packets. [Skotlex]
* Homun saving won't cap hp/sp to max hp/sp since a homun can have higher
hp/sp than the one stated in the db (due to skill bonuses or status
changes) [Skotlex]
* Cleaned up some more the regen_data structure, so that
skill/sitting-skill related data is optional (since only players have it).
[Skotlex]
* Fixed AM_RESURRECTION, thanks to RockmanEXE for %HP values [Toms]
* Fixed HAMI_CASTLE, HAMI_DEFENCE & HLIF_AVOID [Toms]
* Adjusted Glittering's success rate to 20+10*lv% [Skotlex]
* Corrected isequipped() so that cards will not be tagged as "used up"
unless all the specified items were found. [Skotlex]
* Fixed a confusion in skill_attack using the src instead of dsrc for some
calls, which was causing some problems with the KAITE check from AoE
spells. [Skotlex]
* Fixed ASC_BREAKER's misc damage part not having the ignore-element flag
set. [Skotlex]
* Moved homunc battle conf from misc.conf to homunc.conf [Toms]
* Some cleaning in skill.c in regard to homun skills. [Skotlex]
* Madness Canceller now stacks with other aspd bonuses, just like Berserk
does. [Skotlex]
* Removed config setting "muting_players", and expanded the manner_system
config to specify how having negative manner (mute) affects a player (see
battle/misc.conf). [Skotlex]
* Expanded the pk_mode setting from no/yes to 0/1/2. 1 is normal pk_mode,
if 2 is used, it makes killing players give you a loss of 5 manner points.
[Skotlex]
* Fixed WS_WEAPONREFINE always failing when at less than job 50. [Skotlex]
* Fixed the Autosave routine not working when there's only one player
online. [Skotlex]
* Disabled command @rain since the client no longer supports it anyway.
[Skotlex]
* Fixed delitem not checking for the first slot's card, also optimized it
so that it doesn't checks on the other slots. [Skotlex]
2006/08/20
* Added a check during mob_db loading so that the six basic stats, max hp
and max sp are never below 1, as this could cause crashes when using
certain skills. [Skotlex]
* Gravitation now only blocks the caster from using potions. [Skotlex]
* Corrected Madness Canceller letting you walk while the effect lasts.
[Skotlex]
* Splitted yet again ASC_BREAKER into a two-part attack. This time the
int-based damage is a MISC type attack, and gets reduced by skills as such.
[Skotlex]
* Fixed "int format, long unsigned int arg" warning [Toms]
* Fixed a warning when using cap_value(x, 0, x) on an unsigned value [Toms]
* Added clif_skill_fail for homunc to skill_castend_id & skill_castend_pos [Toms]
* Fixed homunc skill 8016 not considered as homunc skill [Toms]
* @useskill will now cause your homun to use the skill instead of you if
the skill is a Homun skill and you have an active homunculus. [Skotlex]
* Reduced the Success Chance of GS_FLING to 10+10*lv% (Playtester told me
that Vicious told him the chance was much lower like that) [Skotlex]
* Fixed some Homunc issues with HR servers (capping some values) [Toms]
* Added @hominfo command to obtain real values (not capped ones) [Toms]
2006/08/19
* Fixed @homlvup bug [Toms]
* Fixed AM_REST & AM_RESU consumming SP if they fail [Toms]
* Fixed homunc spawning bug (they was spawned after an AM_REST + master warp for example)[Toms]
* Fixed GS_GROUNDDRIFT [Skotlex]
* Increased chance of GS_DESPERADO connecting to 20% [Skotlex]
* Fixed battle_calc_base_damage being called for the left hand even for
non-dual-wielding attacks. left-hand damage was being set to 0 later
anyway, so no exploit existed. [Skotlex]
* Moved the weapon_atk_rate bonus to battle_calc_base_damage so that it'll
apply correctly when dual-wielding different types of weapons. [Skotlex]
* Fixed job-mask 0x100000 in the item_db enabling Dancers/Bards to use the
items (0x80000 should be for them and 0x100000 should be currently unused)
[Skotlex]
* Fixed a possible sigsegv when deleting lif under Mental Change [Toms]
* Fixed HAMI_CASTLE [Toms]
* Fixed HLIF_CHANGE [Toms]
* Updated HLIF_BRAIN skill [Toms]
* Fixed homunculus intimacy on feeding [Toms]
* Added homunculus_friendly_rate battle config [Toms]
* Some compilation warnings fixed [Toms]
* Added skill's required item check on homunc skills [Toms]
* Add Condensed Red Potion as a required item for HLIF_HEAL [Toms]
2006/08/18
* Little code cleanup on last fix [Toms]
* Fixed HLIF_HEAL healing the homunc instead of the master [Toms]
* Fixed HLIF_AVOID not increasing walk speed of master [Toms]
* Fixed the atk_rate (Turtle General Card) bonus not working on
dual-wielders. [Skotlex]
* Made HLIF_HEAL a self skill that auto-selects target to caster's master.
[Skotlex]
* Implemented SC_BLOODLUST and SC_CHANGE, cleaned up HLIF_CHANGE [Skotlex]
* Applied a correction to HVAN_EXPLOSION [Skotlex]
* Fixed Homun ASPD calculation being able to underflow and give you min
speed. [Skotlex]
* Added monster_ai&128 to make aggressive mobs ignore that behaviour of
always picking Homun targets above player targets regardless of who is
closer. [Skotlex]
* Fixed homun info packet being unable to display HP/SP correctly once the
values are above 32k. [Skotlex]
* Applied Mpeg's work on ninja [Toms]
* Fixed @homlvup [Toms]
* Added guild_aura (skill.conf) setting so you can specify when it works
and if it works on the guild-master itself. Defaults to working all the
time on everyone except GM. [Skotlex]
* Little code cleanup [Toms]
* Cleaned merc_hom_evolution to avoid free'ing/realloc'ing [Toms]
* Fixed "args of aFree is freed pointer" on Homunc deletion [Toms]
* Changed unit_free so that it receives which cleartype should be used when
the character is still on a map. Used this on status_damage so that mobs
that do not respawn when killed will properly display the death animation.
[Skotlex]
* Fixed Energy Coat consuming 10x less SP per hit than it should.
* Fixed signed/unsigned comparison issues with natural heal system [Toms]
2006/08/17
* Vaporize will no fail when the homun is dead. [Skotlex]
* Corrected thhe double free issue that occurs when a homun dies and has no
intimacy left. [Skotlex]
* Fixed the charsave_method:1 saving/loading exp as signed ints rather than
unsigned. [Skotlex]
* Applied use of structure regen_data for a unified regen module. Natural
and skill-heal is handled by this structure, while sitting-skill-heal is
still player dependant (mostly because the other object types can't sit)
[Skotlex]
* Cleaned up the status calc code for homun by moving it from
status_calc_bl_sub_homun to status_calc_homun (where it should had always
been) [Skotlex]
* Updated SQL files [Playtester]
* Corrected map_random_dir algorithm [Toms]
* Fixed homunc natural heal and little code cleanup [Toms]
* Changed AM_CALLHOMUN Skill to spawn the homunc at 1 cell from his master [Toms]
2006/08/16
* Fixed being unable to recast Adrenaline Rush to reset the duration
timers. [Skotlex]
* Cleaned up skill_get_range2 so that using range 0 for non-self skills
uses the caster's attack range. [Skotlex]
* Fixed AM_CALLHOMUN checking for an embryo when you have a vaporized
homun. [Skotlex]
* Spirit of Wizard will now consume an item 7321 each time it blocks
reflected magic. [Skotlex]
* Added script command jobname, retrieves a given's class name as per the
appropiate msg_athena.txt entry (this command should had been added years
ago) [Skotlex]
* Fixed null-pointer crash on Evolving a homunculus. [Skotlex]
* @produce now can make any kind of equipment [Skotlex]
* Made HLIF_AVOID and HAMI_DEFENCE cause the status change on both caster
and target. [Skotlex]
* AM_REST shouldn't be checking for a range now (since it's a self skill)
[Skotlex]
* Updated mob_ai so that mobs will use their rude-attacked skill when they
can't reach their current target. [Skotlex]
* Fixed the default txt config making pets be saved to the homun file
instead of to the pet file. [Skotlex]
* Now arrow-consuming skills where your main weapon is a whip or musical
instrument WILL count as arrow-type attacks, using the atk of the arrow and
all related bonuses. [Skotlex]
* Fixed some homun timer initialization code. [Skotlex]
2006/08/15
* Applied multiple fixes which should take care of making homun save/load
work on TXT now. [Skotlex]
* Added Gatling Fever's batk bonus. [Skotlex]
* Some cleaning in status_damage which should prevent trying to free
already free'd pointers when unit_remove_map invokes unit_free (when
status_damage was going to invoke unit_free anyway) [Skotlex]
* Delete homunc's skills from sql when the homunc is destroyed [Toms]
* Homunc Timers should be disabled when the homunc is vaporized or dead an re-enabled on call/resu [Toms]
* Updated vc-project files to compile with the new int_homun files.
[Skotlex]
* Hopefully fixed the crash when using charsave_method = 1 [Skotlex]
* Moved s_pet structure from map_session_data to pet_data, this enabled the
removal of a few redundant values in the pet_data structure (name, class,
equip) [Skotlex]
* Cleaned up some of the pet related @/# commands, same for some script
commands. [Skotlex]
* Pet offensive skills who's inf value is self will be casted on the pet
now (for stuff like Grand Cross) [Skotlex]
* Added homun saving/loading support to char-TXT. Note that this is
completely untested, so it may be as good as broken. [Skotlex]
* Added a crash-fix on status_calc_bl_sub_homun to abort in case the homun
has no master (need to clean up this function later) [Skotlex]
* Tested char-txt load/save, it seems to be working fine, but you should
STILL backup, as I only launched the server (read old character format),
closed it down (saved into the new format) and relaunch it (read the new
format) and it didn't give problems (but there's still the possibility of
some field being read in the incorrect offset or such). [Skotlex]
* Updated the char save structure for char-TXT servers so that the homun id
will be saved, now also the map info (last point, save point, memo maps)
are now saved using the mapindex rather than the string. BACKUP BEFORE
UPDATING since this code isn't yet tested. [Skotlex]
* Cleaned up a bit the char-saving code, added overflow crash prevention in
case there are more memos than the max-allowed saved. [Skotlex]
* AM_CALLHOMUN can now be used to recall vaporized homuns. [Skotlex]
* AM_RESURRECTHOMUN will now fail when the homun is vaporized. [Skotlex]
* Added SCB_DYE which marks which status-changes need a forced cloth dye
change to 0 due to sprite issues. Currently only NJ_BUNSINJYUTSU's status
uses it. [Skotlex]
* Asura Strike now moves you to the target on fail always (unless the
target does not exists or is in another map or there's a obstacle on the
way) [Skotlex]
* Corrected skill_attack_area hitting dead characters on it's splash range.
[Skotlex]
* Swapped the values for OPTION_XMAS and OPTION_FLYING. This should enable
SG to show the fly animation again, even if sometimes others will see him
as Santa. As for xmas cloth, it shouldn't make much of a difference since
the view class is changed to christmas anyway. [Skotlex]
* Made AM_CALLHOMUN and AM_RESURRECTHOMUN be like the wedding skills, where
they automatically pick a spot around you. [Skotlex]
* Cleaned up some the AM_RESURRECTHOMUN code. Hopefully it works now.
[Skotlex]
* Cleaned up some the hom evolution code. [Skotlex]
* Fixed SIGSEGV with homunc save [Toms]
2006/08/14
* Removed support for negative autosave intervals, instead added a
minsave_interval setting which specifies which is the minimum time between
character saves. Default to 100ms (map_athena.conf). [Skotlex]
* Sacrifice no longer shows damage to self. [Skotlex]
* When Asura fails, the skill display will still come off. [Skotlex]
* Lots of cleaning of the Homun-code. Perhaps the crashes as of late will
be fixed now (reusing AM_CALLHOMUN seems to be the cause of them)
[Skotlex]
* Increased Run's walk speed bonus to 25->50% [Skotlex]
* Modified emergency_call setting to allow for more specific configuration
(woe/non-woe, gvg-grounds/non-gvg-grounds, disable from nowarpto maps), see
skill.conf for details. [Skotlex]
* Fixed script engine allowing scripts to set a player's zeny to negative
values. [Skotlex]
* Fixed setting hide_woe_damage making even "miss" attacks seem to connect.
[Skotlex]
* When readjusting the fame-list, the last entry's id is also reset (may
fix characters appearing more than once on it?) [Skotlex]
2006/08/13
* Removed @itemcheck as it was totally pointless. [Skotlex]
* Corrected states killer/killable being easily dispellable. [Skotlex]
* Fixed the totally wrong text messages being used for @killer/@killable
related atcommands, added appropiate entries to msg_athena [Skotlex]
* Magic and Misc attacks will now get type "flee" when they do less than 1
damage, this blocks them from causing additional status effects when they
are blocked. [Skotlex]
* Cleaned up a bit the Basilica code, it should now properly end when you
walk. [Skotlex]
* Fixed some logs not working when you enabled all logs. [Skotlex]
* Corrected unmute being a level 60 command by default (should be 80)
[Skotlex]
* Corrected the mapif_parse_PartyChangeMap function to correctly update
level-range when someone logs on/off, fixes being unable to set even-share
on once it's been broken even when the characters out of range logoff.
[Skotlex]
2006/08/11
* Fixed Kagebunshin no Jutsu crashing for dyes > 0; though this solution
might seem hackish (changing clothes colour to 0 when it starts while
storing original colour back in val4, restoring original dye upon
end), I believe this is the best way there currently is to solve
the issue. [blackhole89]
* Fixed Dancers/Bards being able to use normal attacks while performing.
[Skotlex]
2006/08/10
* Fixed the item group bonus not working. [Skotlex]
* Fixed songs/dances always being considered overlapped with themselves.
[Skotlex]
* Added some additional song/dance overlap code that should correctly
change the effect of songs/dances when they overlap. [Skotlex]
* Added a check so that the status-change packet is always send to self
when the inflicted char is a player disguised. [Skotlex]
* Code cleanup on homunc, they stay in memory until player disconnect or
homunc destruction [Toms]
* Corrected Advanced Jobs HP bonus from 30% -> 25% [Skotlex]
* Hopefully fixed family-party-even-share not breaking when a member logs
out. [Skotlex]
* Should have fixed the login-sql crash when passed user-name's length is
beyond the limit. [Skotlex]
* Changed setting attack_attr_none to affect all neutral-element attacks.
Basicly, this setting is now used to determine who can hit for full damage
always when using neutral-attacks (defaults to non-players) [Skotlex]
* Fixed two instances in the login-sql server where the ip in the log-login
table was being stored backwards. [Skotlex]
* Now when a skill's range is 0 and the skill is NOT casted on self, it
will take the basic weapon's range (without Vulture/Snake Eye bonus).
[Skotlex]
* Now when a duration is not specified, sc_start/sc_start2/sc_start4 will
try to guess the duration by extracting it from the skill_db (it uses
skill_get_time on whatever skill is associated to the status-change using
val1 as skill-level) [Skotlex]
* Some cleanups on trade_tradeaccept to prevent packets being resent when
they shouldn't. [Skotlex]
* Fixed syntax error in 'guild' create table statement [Toms]
2006/08/09
* Fixed Asura not wasting all SP away when it fails on cast-end. [Skotlex]
* Fixed homunc skill up bug [Toms]
* Adjusted some the dance/song/encore code so that the source of an
ensemble will always get checked, so that walking out of an ensemble skill
should make it end now. However, it's likely this is not completely solved
yet and will require further tweaking. [Skotlex]
* Added crash protection to the mob_db txt reading when the mob_db file has
lines with insufficient number of columns. [Skotlex]
* Moved the class-change code from battle_calc_weapon_attack to
skill_additional_effect. Alchemist summons now also have a chance of
triggering polymorphing. [Skotlex]
* Removed the code which was auto-setting attacks that do no damage to type
FLEE, since that was disabling status-effects which should incur even when
the damage was blocked. [Skotlex]
* Trade requests will now fail when either character is unable to act
(character in storage, vending, interacting with an npc, petrified, etc)
[Skotlex]
* Heard skotlex voice, changed all msg_table[] into msg_txt() in atcommand.c [Toms]
2006/08/08
* Fixed the char-server not invoking the party_calc_state function when the
third party-member is added to a party, hence failing to check for families
and disabling even share from them unless all three relog first (state is
correctly calculated when party is first loaded). [Skotlex]
* Crash-protections in the mail-checking function. [Skotlex]
* Some additional parenthesis on equipment check in pc_equipitem, seems to
have fixed the mid/lower headgear-sprites not showing up. [Skotlex]
* Added back missing state set to prevent Ankle-Snare from being retrieved
after the target dies. [Skotlex]
* Fixed compilation warning [Toms]
* Added a check to handle Spider Web as a targetted skill. If there's more
than one character on the targetted cell, a different one may get trapped,
but it will mostly do as it is now. [Skotlex]
* Added check to Asura so that it will move you to the target when it fails
ONLY when you can cast the skill on the target (not stunned, asleep, target
not hidden, etc) [Skotlex]
* Changed the map_freeblock_unlock code so that when there's an "already
free'd pointer" error, the memory manager will print out the invoking
function rather than map_freeblock_unlock, this should help fix it up next
time it happens and is reported. [Skotlex]
* Casting Kaensin will clear out Suiton and viceversa now. [Skotlex]
* Fixed drop-rates (@whodrops) getting duplicates when you use @reloadmobdb
[Skotlex]
* Fixed unjailing not sending characters to Prontera. [Skotlex]
* Fixed yet again AS_SPLASHER doing full damage on all characters. Now you
can use the NK split damage value in the skill_db if you want damage
divided by the amount of targets rather than by 2. [Skotlex]
* Fixed crash on the battle_drain functions. [Skotlex]
* Cleaned up HAMI_CASTLE, HLIF_AVOID, HAMI_DEFENCE so that it's usable by
other types of objects other than Homunculus. [Skotlex]
* Cleaned up the Asura Strike code so that the SP/Spheres/States is not
consumed when the skill fails due to Fog of Wall. [Skotlex]
* When a negative delay for a skill is specified, this delay is now added
on top of the character's amotion rather than adelay [Skotlex]
* Modified main.sql to make the guild table allow NULL on the emblem data.
[Skotlex]
* Added file conf-tmpl/Changelog.txt to log config changes. [Skotlex]
2006/08/07
* Fixed the login-sql server replying to the change-sex packet with the
wrong gender, causing the char-server to screw-up job-change updates.
[Skotlex]
* Cleaned up the apparent mess that is pc_skill. Hopefully it SHOULD work as
described on the docs now, this should also fix adopting not correctly
giving the family-related skills. The flag value of skill should be: 0 to
set the skill (if skill level is 0, this removes a learned skill), 1 grants
the skill as an item bonus which is temporary, and 2 will add a skill bonus
like 1, except the skill level adds up to whatever level already known of
that skill. [Skotlex]
* Fixed EQP_WEAPON related code messing up with both weapon AND shield.
[Skotlex]
* Cleaned up the Asura code so that when the skill fails your
SP/Spheres/Fury are all taken away always, as well as moving you next to
the target (as long as the target still exists within a reachable path from
your position) [Skotlex]
* SC_GUILDAURA is now removed on logout. [Skotlex]
* Fixed Venom Splasher doing half-damage instead of full-damage to the
"exploding" character. [Skotlex]
* Hopefully fixed the party_even_share cast-overflow bug as reported by
Adobe. [Skotlex]
* Standarized the autosave interval setting to be always in seconds
regardless of type. [Skotlex]
* Moved the "bosses can't be knockback" logic from battle_calc_* functions
and placed it on skill_blown. [Skotlex]
* Some parenthesis cleanup before invoking battle_calc_base_damage, could
be fixing the current issue with arrow attacks not adding the arrow damage.
[Skotlex]
* Fixed the map_search_freecell error which was making mobs fail to
respawn. [Skotlex]
* Added in Lupus's suggestion of not making multi-slot headgears set all
slot view-ids, which supposedly causes the client to re-draw the headgear
multiple times on characters. [Skotlex]
* Fixed HT_BLITZBEAT hitting neutral characters when it auto-triggers.
[Skotlex]
* Simplified the Tatami Gaeshi code. [Skotlex]
* Fixed AS_SPLASHER doing full damage on everyone except targetted char
instead of the other way around. [Skotlex]
* Fixed KAENSIN clearing out SUITON cells and viceversa. [Skotlex]
* The spawn area is now seen as range rather than absolute for mob spawn
lines. This means that x,y,10,10 will spawn the mob on a 21x21 grid around
the given x,y point. [Skotlex]
* Some clean up of the mob-spawn code. Now you can specify negative areas,
so that a spawn location such as 100,150,0,-1 will spawn a mob always on
x=100, but any Y value of the current map. [Skotlex]
* Reflected damage will now also have a chance of draining hp/sp. [Skotlex]
* Adjusted the order in which option/sc change packets are sent to match
Aegis's [Skotlex]
* Added script command getpartyleader through which you can retrieve
various information of a party's leader. See doc/script_commands.txt for
further information. [Skotlex]
* mpeg's Ninja work [Vicious]
* Adjusted Battle_check_target so that alchemist summoned mobs are
targetted by everyone as long as 1. The top-level master is a player and 2.
the actual attacker is not a mob-type. [Skotlex]
* Added config force_random_spawn which overrides the spawn-files defined
coordinates to make all mobs always spawn randomly on the map. [Skotlex]
* SC_SPEEDUP0 is no longer dispellable by SA_DISPEL [Skotlex]
2006/08/06
* Updated item_db.sql & mob_db.sql to latest. [Toms]
* Little fixes on homunc (hp/sp are now saved and init stats changed) [Toms]
2006/08/04
* Added a commented piece of code at the end of clif_parse_LoadEndAck which
will update your direction to wherever you were facing before warping.
Should this be the default? Nearby people DO see you facing on the same
direction before warping, it's only your client that will always see you
facing north on spawn (the spawn packet does contain direction
information). [Skotlex]
* Updated @mobinfo to display slots in the drop information. [Skotlex]
* Fixed flag.elefix not being respected in battle_calc_misc_damage.
[Skotlex]
* Some code cleanups in battle_calc_damage. [Skotlex]
* Modified bAddItemHealRate so it can receive both item-id and item-group
values (since the first item-id is +500, there's no risk of mixing them
up). [Skotlex]
* Removed settings enemy_critical_rate, homun_critical_rate. Added settings
enable_critical (defaults to specify only players), mob_critical_rate and
critical_rate. The last applies to all non-mobs and non-players
(battle/battle.conf) [Skotlex]
* Removed settings mob_npc_warp, mob_warpportal. Replaced with setting
mob_warp which specifies which types of warp can a mob step into
(battle/monster.conf) [Skotlex]
* Enabled Mastery damage on Soul Breaker again, moved adv katar mastery out
of the mastery function so that it may apply to all skills except Soul
Breaker. [Skotlex]
* Changed name of the setting log_pick to log_filter since that's what it
does now. [Skotlex]
* Modified enable_logs so that instead of a 0/1 setting, you can specify
which kind of events to log (so you can use a combination), see log_athena
for the bitmask configuration. [Skotlex]
* Cleaned a bit the contents of log_athena.conf
* Hide/Chasewalk will again stop screaming skill name. [Skotlex]
* Soul Breaker will no longer receive Mastery damage. [Skotlex]
* Fixed warning:'type' might be used uninitialized in this function [Toms]
2006/08/03
* Added a check to skip the experience share of characters who are dead or
on another map. [Skotlex]
* Reverted the previous change, chasewalk has no icon, only the str-bonus
has that fist icon now. [Skotlex]
* Allowed chase-walk to display a skill animation when using it. [Skotlex]
* Readjusted the Chasewalk icon to be as it should be. [Skotlex]
* GS_DESPERADO is now a short-range attack skill. [Skotlex]
* Changed the Battle-Orders icon to be the Strength Up icon (for
Chasewalk's str bonus). [Skotlex]
* Fixed using the right-hand weapon's size modifiers regardless of which
weapon's damage was being calculated in regards to. [Skotlex]
* Simplified the ignore-size check by making the Weapon Perfection check be
done when specifying the flag, also moved the size-fix property of riding
spear-knights to status_calc_pc. [Skotlex]
* Changed SI_CHASEWALK value to 119 as concluded by LoneWolf [Skotlex]
* Corrected clif.c sending the raw mdef2 value to the client instead of
first substracting the "secret vit/2" bonus from it. [Skotlex]
* Added a damage cap to CR_ACIDDEMONSTRATION of INT_MAX/2 to prevent
overflows. It is not capped to INT_MAX because damage increasing skills
would cause it to still overflow afterwards. [Skotlex]
* Fixed NPC_CRITICALSLASH not being considered as a Critical hit by the
code. [Skotlex]
* Added RUDE_ATTACKED_COUNT so you can easily adjust how many rude-attacks
should happen before a mob uses the rude-attacked skill. Value has been set
to 2 for now. [Skotlex]
* Now when a mob changes target (to someone they can hit) their
rude-attacked count won't be reset, but instead will be reduced by one.
[Skotlex]
* SC_SPEEDUP0 can now stack with the other speed raising buffs. [Skotlex]
* Some adjustments so that the last-skill-used will be correctly cleared
when your combo-time ends. [Skotlex]
* Fix a bug in atcommand_charspeed [Toms]
* Fixed a logic error preventing from cooking anything [DracoRPG]
* Cleaned up the last NJ update code. [Skotlex]
* Added @ command `charspeed` [Skotlex]
* Fixed @jailfor using MAP_PRONTERA as jail instead of MAP_JAIL [Skotlex]
* Removed case for GS_SPREADATTACK on damage packets to see if the skill
displays correctly now. [Skotlex]
* Corrected Deluge/Volcano/V. Gale overlaps so that the placing tiles are
removed, NOT the ones who were already placed. [Skotlex]
* Made SC_SPEEDUP0 and SC_SPEEDUP1 use different icon IDs, to fix
icon-confusion when both are enabled at a time. [Skotlex]
* Mob rude-attacked count is not reset now on picking a new char (gotta
investigate this further) [Skotlex]
* Changed atoi to strtoul for guild-experience's field [Toms]
* Fixed a bug in int_storage.c, temp array doesn't have the good size [Toms]
2006/08/02
* Modified yet again SC_SILENCE after iRO tests from Entwined on IRC.
Silence now ONLY blocks skills from being used, it will not stop on-going
casts. [Skotlex]
* Updated status_cast_cancel to also include silence (so the cast bar is
cancelled if you are silenced during it) [Skotlex]
* Updated the way SC_SILENCE works. From what I remember (from previous
forum discussions) it: 1- Always blocks skills from being used. 2- Will
only block a skill when the cast-bar ends IF the skill is targetted. If
anyone wants to debate to get this changed, make an appropiate forum topic
in the svn development area to discuss. [Skotlex]
* Added a check in the walking code when triggering skills.
NPC_SELFDESTRUCTION will no longer cancel walking, it will instead resend
the walk packet, this effectively causes the mob to start walking
(clientside) while the cast-bar is showing. [Skotlex]
* Fixed a logic error on battle_get_master which was causing infinite
loops.. [Skotlex]
* Fixed homunculus error message [Toms]
* Rewrote pc_payzeny to not use doubles, it may more accurately prevent
charging a player more zeny than they can withhold. [Skotlex]
* Fixed failing to create Deadly Poison Bottles damaging 50% of your max
life instead of 25% [Skotlex]
* Added the missing status-change flags to SC_FREEZE to signal it should
modify def and magic def [Skotlex]
* Little add on NJ_HUUMA [Toms]
* Merged Mpeg's work on Ninja skills [Toms]
* Fixed Martyr's Reckoning having a cap damage of 32k. [Skotlex]
* Now you can teleport in Thanatos Boss room, but you can't respawn there [Playtester]
* Fixed Defender Raising Walk speed instead of diminishing it. [Skotlex]
* Added a check on status-change load to prevent loading speed-affecting
status when their speed adjustment is 0 (prevents division by zero)
[Skotlex]
* Code cleanup & optimization on guild part of char-server [Toms]
* Fixed script code data not being free'd if a player quits in the middle
of a script. [Skotlex]
* Modified run_script so that when there are leaks, it will report the
place where run_script was called from as source rather than the inner code
of run_script (for debugging purposes) [Skotlex]
* Made recursive master check the default (otherwise it messes skill -> pet
-> player kind of herarchies) and cleaned up some the battle_get_master
code to prevent infinite loops in the weird case someone specifies that
their master is itself. [Skotlex]
* Recoded the GuildAura code to use val3 & val4, allowing much greater stat
bonuses (in case someone wants to get Guild Skill level 20 or something
crazy like that) [Skotlex]
* Updated battle_check_target so that all alchemist summoned mobs can be
target by everyone. [Skotlex]
* Cleaned up skill_check_condition_mob_master_sub, it will now count both
total number of summoned mobs and amount that belong to the same type.
[Skotlex]
* Corrected AM_CANNIBALIZE so it will fail if you already have plants of
another type out. [Skotlex]
* Using NPC_SELFDESTRUCTION no longer will make the caster stop walking.
[Skotlex]
* Removed SI_GUILDAURA, and replaced it with SI_LANDENDOW, now
Volcano/Deluge/V. Gale will get that funky icon instead. [Skotlex]
* Changed clif_hominfo to receive both sd and hd as parameters
* Some redundancy cleaning in mercenary.c [Skotlex]
* Moved updating of sd->mercenary.hp from merc_damage to pc_makesavestatus.
[Skotlex]
2006/08/01
* Miscellanous fixes which make the Marine Sphere self destruction work as
best as I can. It only has one flaw: It self-destructs instantly after
walking because if I make it use self-destruction with a cast-bar,
client-side the object stops moving inmediately... [Skotlex]
* Modified unit_walktoxy and NPC_RUN to enable running even when the caster
does not has the MD_CANMOVE bit on. [Skotlex]
* PF_MINDBREAKER will now silently fail if you try to use it on someone who
already has the status active. [Skotlex]
* Cleaned up yet again skill_landprotector, now new cells of
Deluge/Volcano/V.Gale will delete previous cells when they are recasted on
top of each other. [Skotlex]
* Summoned Marine Spheres no longer get the MD_CANMOVE bit. [Skotlex]
* Cleaned up some more the SC_JAILED code [Skotlex]
* merged in atcommands jailfor, jailtime, charjailtime. Thanks to Meruru
and Coltaro for the code. [Skotlex]
* Cleaned the code of atcommands jail and unjail [Skotlex]
* Be warned that the code MAY contain bugs as I adjusted it to save the
character's position before jailing, allowing the automatic unjailing to
warp you back to the exact spot you were at before being jailed. [Skotlex]
* Should have fixed the cooking sets not displaying all cooking available
items. [Skotlex]
* Figured out and fixed the issue with Volcano/Deluge/Violent Gale not
really working. Thanks to Mpeg for noting it out. [Skotlex]
* Modified Self Destruction, so that Marine Spheres in non-versus maps will
hurt only enemies, while in all other situations this skill will hurt
everyone around them. [Skotlex]
* Expanded setting debuff_on_logout so that &1 removes negative buffs and
&2 removes positive buffs. [Skotlex]
* Food status boosts will no longer end on death, but they will end when
you respawn or logout. [Skotlex]
* Added battle config file status.conf, moved some settings from skill.conf
and battle.conf to it since they are entirely Status-Change related.
[Skotlex]
* Added the missing lines to enable script command "kickwaitingroomall"
[Skotlex]
* Magic Rod's can-act delay will no longer be applied when you absorb a
spell. [Skotlex]
* Fixed Don't Forget Me increasing speed instead of decreasing it. [Skotlex]
* Modified setlabel so that the script engine barks when you are trying to
use the same label name as a constant or variable name. [Skotlex]
2006/07/31
* Fixed the subnet 0 mask being reset to 0 when someone goes up on the fame
rankings. [Skotlex]
* Updated Poison React chance to counter and number of counters as per
skill description updates. [Skotlex]
* Fixed Sharpshooting being counted as a magic attack, and hence, using
your MATK as base damage. [Skotlex]
* Fixed NPC_STOP id value in skill_cast_db [Skotlex]
* Bladestop will no longer stop when you push either of the characters
around. [Skotlex]
* Fixed Enchant Poison having a near 100% chance of poisoning target on
attack. [Skotlex]
* Little fix on duel [Toms]
* Added possibility to restrict duel usage to same map [Toms]
* Merged mpeg's fix on ninja skills [Toms]
* Corrected a status_get_race call which should be status_get_race2 in misc
attacks. [Skotlex]
* Moved the Devotion code to the top of the SC list in status_damage,
meaning that now stuff like being asleep or confused won't end if you are
hit, but the damage is absorbed by devotion. [Skotlex]
* Added the Soul Link of Rogue speed bonus to Chase-Walk. Since there's no
information of how much the bonus should be, it currently is a conservative
10%. [Skotlex]
* Fixed a possible crash in the main script engine when restoring previous
script. [Skotlex]
* Fixed sleep.tick not being set back to 0 before resuming execution, which
leads to scripts that are continously executed even when they already ended
(they do nothing but waste resources) [Skotlex]
* Fixed a pair of free -> aFree used on stacks, which would lead to memory
manager reporting leaks where there aren't. [Skotlex]
* Removed incorrect "Waterball range+1 when standing on suiton" feature.
[Skotlex]
* Corrected the Speed update code to prevent sending "walk to xy" packets
twice when the affected character is a player. [Skotlex]
* Expanded mob can't move warning to print out where this mob was stuck at
(map, x,y) [Skotlex]
* Fixed segmentation fault in status_change_end, vd wasn't initialized [Toms]
2006/07/30
* NPC_INVISIBLE will now use Cloaking of a level +9 of the used skill
level, so that at level 1 they can attack, use skills and receive no
walking penalty. [Skotlex]
* Mob casted Sanctuary will no longer always heal it's targets regardless
of element/race [Skotlex]
* Status change packets will now use as criteria for sending the actual
view_class instead of player/not-player. This will fix status-changes
displaying improperly on clones, and also possible crashes with disguised
players. [Skotlex]
* Merged mpeg's fix on ninja skills and SA_VOLCANO,SA_DELUGE,SA_VIOLENTGALE [Toms]
* Added bNoMiscDamage setting so you can specify misc-damage blocking from
skills. Modified battle_calc_damage so that even Pressure and similar
skills will be affected by this setting. [Skotlex]
* GS skill updates/fixes [Vicious]
* Force all users offline in sql when char-server starts [Toms]
2006/07/29
* Removed ugly struct cast in login.c [Toms]
* New version of buildin_query_sql which accept more than one column and
can return the number of rows. See script_commands.txt for more details. [Toms]
* Fixed nullpo in merc_hom_skillup [Toms]
* Added a return value to buildin_rid2name if rid is invalid [Toms]
* Made the SQL ping interval default to 7 hours. [Skotlex]
* Made skill_unitsetting remove the group when no unit-cells were placed
down. basicly this means that if landprotector blocks all tiles, the group
will be removed from memory, preventing said group from counting to the
total number of skills you can set. [Skotlex]
* Fixed segmentation fault in script engine when calling something which is not a function [Toms]
* Fixed segmentation fault in script engine when activating DEBUG_RUN flag [Toms]
2006/07/28
* Added Ishizu's code to check ammo type on attack. No more using Grenade
rounds with Guns. [Skotlex]
* offensive heal/sanctuary will only happen when the source of the heal is
a player, mob/pet casted heal will now always heal regardless of target.
[Skotlex]
* Shield Chain will now ignore the 'ice-pick' defense piercing bonus.
[Skotlex]
* Self destruction will now hit all characters in range, not just enemies.
[Skotlex]
* Cleaned up the NJ update code: [Skotlex]
- Restored code which was removed (stuff like SC_SKA)
- Fixed possible crashes on some NJ skills if used by non-players.
- Fixed most NJ magic spells doing more damage than they should.
- Fixed ZenyNage being able to do more damage than zeny you have.
- Cleaned up skill setting code for Suiton and Kaensin
* Some cleaning of battle_drain, Evil Druid card should work now. [Skotlex]
* Made status_damage allow damaging of objects not on a map, this should
fix pet-catching making the mob never respawn again. [Skotlex]
* Casted nothl to (unsigned int) in sprintf functions, IP is 32bits and sql field the same :) [Toms]
* Fixed "warning: `list' might be used uninitialized in this function" in char/char.c@3032 [Toms]
* Fixed "uninitialized local variable 'i' used" in skill.c and "warning: suggest explicit braces to avoid ambiguous `else'" in battle.c [Toms]
* Fixed "warning: long unsigned int format, unsigned int arg" in parse_login (login_sql\login.c) [Toms]
* Fixed sign warnings in login/login.c [Toms]
* Fixed "conversion from 'double' to 'int', possible loss of data" [Toms]
* Fixed "warning: redefinition of [ushort/uint/ulong]" [Toms]
* Fixed duplicate case value on NJ_SUITON [Toms]
2006/07/27
* Fixed a memory leak when there exists more than one user function with
the same name, added the appropiate warning when this happens. [Skotlex]
* Added reporting source file when an npc shops item's price is
exploitable. [Skotlex]
* The picklog will now record negative values for items sold to npcs.
[Skotlex]
* Added inmediate position and hp-bar update when a character joins a
party. [Skotlex]
* Added missing SC information to NPC_CHANGEUNDEAD [Skotlex]
* Added config setting party_update_interval so you can specify how often
the party-mate minidots should be updated (defaults to 1 sec). [Skotlex]
* Removed a bunch of broken comments in skill.c [Skotlex]
* Synced the script.c file with as much data as possible from jA's:
[Skotlex]
- A lot of functions were moved around, a bunch of indentation and
space-usage changes were done to make it easier to diff against their
files.
- Miscellanous addition and corrections were applied.
- Largest one is likely a restructuring of run_script_main, which hopes to
solve the memory leaks.
- script engine now uses the setjmp functions to restore memory state when
there's an error parsing scripts, which means that script errors won't
cause the map-server to inmediately bail out anymore.
- NOTE that the amount of changes is pretty extensive, so DON'T USE THIS on
a live server. Update only to help test and debug to see if the script
engine memory leaks are gone.
* Added a cleanup routine on shutdown to remove all characters from memory
for whom the save ack has not returned from the char-server yet. [Skotlex]
* Now when you set the guardian's HP, if the guardian is spawned, it's HP
will be updated accordingly (and if you set it to 0, the guardian is
killed) [Skotlex]
* Added functions status_set_hp/status_set_sp to set hp/sp to a given
value. Applied usage of these on the Berserk and Soul Change code.
[Skotlex]
* Added config setting "party_hp_mode" (battle/party.conf) which determines
method to use to update party-mate hp bars. Aegis style is to update HP
bars whenever HP changes, while eAthena style is to update it together with
the map party dots. Defaults to aegis style. [Skotlex]
* Fixed packet 0x22a having the manner and opt3 packets in inverted
offsets. [Skotlex]
* Readded the check which prevents Cloaking from activating when your
learned level is less than 3 and you aren't next to a wall. [Skotlex]
* Some cleanups to the Frenzy/Berserk status change, it should probably
work correctly now. [Skotlex]
* Removed a redeclared variable i in the parsing of the fame list (char-sql
server) which seems to be the cause of the random memory corruptions.
[Skotlex]
* Updated item_db.sql to latest. [Toms]
* Fix homunc & code cleanup [Toms]
- Timer problems on delete_timer
- Intimacy problem (overflow & new values)
- Homunc deleted if intimacy < 0
- base exp is now given to master
- Homunc sometimes not saved
2006/07/26
* Fixed a memory leak when reading the item_db txt. [Skotlex]
* Applied the necessary changes to make @partyoption reflect it's changes
on the alt+p window. [Skotlex]
* Modified party_item_share_type config setting so that using 1 disables
item-sharing from non-mob loot (player dropped items or pet loot) and 2
enables round-robin instead of random sharing. Using 3 obviously is
enabling both 1 and 2. [Skotlex]
* Added battle_get_master which returns the master bl of a given object.
[Skotlex]
* Recoded battle_check_target to use battle_get_master, the src/target
switch has been split into two, so that actual target and master target are
seperately treated (same for source). [Skotlex]
* Added support for "sc_end -1" which will clear all status changes. Added
the constant SC_ALL so you can use in scripts "sc_end SC_ALL;" instead.
[Skotlex]
* @pettalk will now fail when muted. [Skotlex]
* Enabled changing of equipment while stunned/asleep/petrified/etc [Skotlex]
2006/07/25
* Cleaned up run_script_main to properly free previous stack-data when
running scripts. Note that scripts may still leak memory when run by
non-players and they don't reach the "END" state, however I am not sure how
this case should be handled, so it's left as it is for now. [Skotlex]
* Added a missing ntohl call in the loginlog code. [Skotlex]
* Added a check when buying from npcs to allow buying of item_avail items.
[Skotlex]
* Fixed duel accept invite sending the packet before the duel data is set
(resulting in a packet that noone receives). Thanks to Toms for finding it
out. [Skotlex]
* Fixed a possible crash when you dual-wield and the total damage is 0.
[Skotlex]
* Added Toms's perl scripts item_db.pl and mob_db.pl (they are in tools/),
they convert the txt databases into sql. [Skotlex]
- Usage: "script" < "input file" > "output file". eg: ./tools/item_db.pl < db/item_db.txt > sql-files/item_db.sql
* Updated the sql files since now it's quick [Skotlex]
2006/07/24
* Re-updated the mob_db.sql to latest. [Skotlex]
* Cleaned up the skill_landprotector function to correctly block only magic
skills from being placed on land protectors. [Skotlex]
* Corrected itemdb_group so that it will not return the random item givers
(should give priority to actual item groups, so that the item heal bonuses
work correctly) [Skotlex]
* Cleaned up the Mistress Card related code so that the no-gemstone bonus
reduces item requirements by one rather than totally skip them. [Skotlex]
* Cleaned up the logs "can log"function to use the IT constants. Also
corrected the "only log large amounts" setting not working on negative
values (trades). [Skotlex]
* Adjusted skill_castfix_sc so that Suffragium will get consumed even on
instant cast skills, but Memorize won't. [Skotlex]
* BladeStop will now end when either of the characters is moved (knocked
out?) around. [Skotlex]
* Moved the Zeny penalty code from respawn to pc_dead. [Skotlex]
* Added a check to prevent Deluge/Volcano/Violent Gale from being placed on
top of each other. Reverted the previous 'fix' where atk was being
increased based on armor element rather than element of attack. [Skotlex]
* Removed the noreturn mapflag check from script command warp. [Skotlex]
* Homuculus cleanup [DracoRPG]
- Replaced nullpo's in parse functions by silent checks
- Removed server-side effect for menu option 0 (view status window...
why does the client send us the packet since we don't care? -_-)
- Rewrote intimacy underflow checks so they are really effective (no
need to check if an unsigned is < 0, it won't work... check before!)
* fixed unban unblocking players as well. [Skotlex]
* Fixed Volcano/Deluge/Violent Gale increasing damage based on element of
attack instead of defense element of attacker. [Skotlex]
* Cleaned up the code of Magic Rod, fixed it not giving SP. [Skotlex]
* Moved the code of Hermod and Basilica to castend_pos2 so it should work
now. [Skotlex]
* Modified the code of Ankle Snare so the status ends on unit's time-limit
rather than when the snared object moves away. [Skotlex]
* Re-worded the water check of ST_WATER skills. [Skotlex]
* Allowed sc-cast reductions to be processed even when cast-time is instant
(to let suffragium end even on instant-cast skills) [Skotlex]
2006/07/23
* Modified setting skillrange_by_weapon (skill.conf) to be a
per-object-type setting instead of yes/no. The default now is that
weapon-based skills will take the attacker's range for non-players.
[Skotlex]
* Changed the default of skillrange_by_distance to include homunculus.
[Skotlex]
* Fixed buildin_isequip not working correctly with non-cards. [Skotlex]
2006/07/22
* Updated mob_db.sql to latest. [Skotlex]
* Applied Toms's suggested corrections to homun code. [Skotlex]
* Corrected Cannibalize/Marine Sphere ignoring the selected summon spot.
[Skotlex]
* Fixed looting pets ignoring the item pick-up priority of other players.
[Skotlex]
* Should have fixed a signess warning in login txt. [Skotlex]
2006/07/21
* Added blocking of @me when muted or in berserk status. [Skotlex]
* Corrected the @follow timer not being deleted on logout. [Skotlex]
* Applied the homunculus code fixes provided by Toms. [Skotlex]
* battle_check_target will now tag homunculus as invalid target when the
source is a skill-type object. [Skotlex]
* Added a check on pc_equipitem so that when the client specifies to equip
a weapon on the right hand when the left hand is available, the weapon will
be sent to the left hand instead (when dual-wielding is possible,
obviously). Same for the left/right accessories. [Skotlex]
* Added the necessary checks so that Suiton makes Fogwall have double
duration, and to make water-requiring skills to consume their cells.
[Skotlex]
* Corrected the loadmap event description to specify that the mapflag
required is actually "loadevent", NOT "loadmap"! [Skotlex]
* Now when the char-txt server does not finds a requested party, it will
clear out said party id of all characters (will help prevent massive
spamming/overhead when for some reason the party file needs to be deleted).
[Skotlex]
* Combo skills (inf = self, inf2 = no target self) no longer check range if
you use them while your attack-timer is still active. [Skotlex]
* Added back a map_freeblock call in skill_delunitgroup which caused a
memory leak when removed... [Skotlex]
* Added a check to prevent Blind from ending while standing on a fog of
wall. [Skotlex]
* The mob Slave ai will be executed now even when the slave has a target.
This will allow for "instant" warping to the master when it changes maps or
teleports. if the slave has a target already, it won't unlock it and chase
back to the master or anything like that. [Skotlex]
* Removed a couple of checks that prevents item ids above 20000. However,
remember that the max id is still ~32k or the client is the one who's gonna
crash! [Skotlex]
2006/07/20
* Added source reporting when you do an invalid int&str or str&int
operation on a script. [Skotlex]
* Fixed the intif party creation packet having the incorrect size sent,
hence causing the leader's level to be read as garbage (which caused the
"impossible to even share" bug). [Skotlex]
* Added pc_check_weapontype to do a proper skill weapon check that takes
into account dual-wielding. That is, if a skill can be used with
daggers/axes, you'll be able to use the skill when dual-wielding them.
[Skotlex]
* Corrected Cloaking level 1-2 not letting you move across walls. [Skotlex]
* updated cloaking code so that when you set "enable cloaking without
walls", the code will consider you as "always next to a wall", thus you get
the wall-speed bonus always. [Skotlex]
* Applied the fix to homunculus name saving... [Skotlex]
* Added battle config settings agi_penalty_target and vit_penalty_target,
they define which object types will get vit/flee reductions when
multi-targetted and defaults to only players (battle/battle.conf) [Skotlex]
* Added the dummy intravision case for the changeoption packet 0x229
[Skotlex]
* Corrected Fog of Wall so that all targetted offensive skills (not only
those who do damage) will fail on cast-end 75% of the time. [Skotlex]
* corrected @homlevel up and one entry in the homun exp table as reported
on the forums by Albator. [Skotlex]
* Added the SQL fix to Homunculus skill learning/saving bug [DracoRPG]
* Added a status_check_skilluse on skill_attack_area call to prevent splash
damage skills from hitting hidden/trickdead/etc characters. [Skotlex]
* Corrected fog of wall to behave as best known currently: [Skotlex]
- Only takes effect when targetting a character inside it
- -50hit/-75% damage when using normal-ranged attacks
- -25% damage from all damage skills
- 75% chance of all targetted damage skills of failing.
* Should have fixed @refine applying multiple times to equipment that uses
multiple equip slots. [Skotlex]
2006/07/19
* Fixed the inf code update breakage which was blocking all offensive
skills. [Skotlex]
* Added battle setting homun_critical_rate (defaults to 0) [Skotlex]
* Removed enemy_str/pet_str/enemy_perfect_flee and replaced them with
enable_perfect_flee which specifies which objects can have perfect flee and
enable_baseatk which specifies which objects can have a base attack value
(both in battle.conf) [Skotlex]
* Modified the targetted skill logic to enable offensive skills to be
targetted at party/guild members if the appropiate inf2 value is set.
[Skotlex]
* Added checks to make adding items to inventory/cart fail when a char is
in finalsave state. [Skotlex]
* Fixed parse_names on irc.c crashing when receiving a null argument.
[Skotlex]
* Modified the parsing of the names line, since some servers will send @
instead of = when separating the information. [Skotlex]
* Fixed the homun creation sql statement. Why noone else did so before?
[Skotlex]
* When enabling/disabling hiding/unhiding an npc, if the npc is a warp, it
will use clearchar and spawn packets instead of changeoption. Thanks to
Toms for the fix. [Skotlex]
* Corrected Trim chars to block 'enter', as explained by the Ultra mage.
[Skotlex]
* When the client passes account version 0, the login server will set it to
1 now. [Skotlex]
* Corrected the HP bar scaling when HP is above Short Max. It should
display fine for any HP value now. [Skotlex]
* Added a check when the mob's adelay is shorter than the amotion, in which
case the adelay will be changed to the amotion value. [Skotlex]
* Some minor mapflag changes. [MasterOfMuppets]
2006/07/18
* Added atcommand @partyoption, lets you alter the party item-distribution
type on the go. Usage is "@partyoption <pickup share> <item distribution>",
where both arguments can be 0/1, yes/no, etc. [Skotlex]
* Updated @changeleader and @partyoption to use msg_Athena entries.
[Skotlex]
* Added character 013 (enter) to the list of characters that are always
removed from new character names. [Skotlex]
* Fixed a crash when trying to extend TK's infinite combo feature. [Skotlex]
* Corrected Poison React to counter regardless of distance, and to use the
skill's 50+5*lv% counter chance (instead of 100%). [Skotlex]
* Corrected Venom splasher's splash damage [Skotlex]
* You now can't move/attack/use-skills when using Cloaking of a level less
than 3 [Skotlex]
* Fixed compilation of mercenary.c [Skotlex]
* Corrected Fog of Wall's "targetted spells fail 75% of the time" feature
by making it behave like GTB, that is, you just get a skill-failed on
cast-end, no skill-animation at all. [Skotlex]
* Added a proper check to make aggressive mobs never override homun targets
regardless of distance. [Skotlex]
* Removed a bunch of homun-related variables that are not needed at all.
The alive condition is removed, now the code checks for the hp value to
know if the homun is alive or not. [Skotlex]
* Cleaned up a bit the skill-id function, homun skill checks (such as delay
and skill-lv learned) should be correct now. [Skotlex]
* Added a proper check to make aggressive mobs never override homun targets
regardless of distance. [Skotlex]
* Fixed giving the 100% damage bonus when no-splash-targets are found in
the blown path to Grandcross instead of Bowling Bash. Bowling Bash damage
equation becomes then +50*lv% rather than +40*lv% when there's no
splash-damage (the 50*lv% figure is custom, all we know is that level 10
does 600% instead of 500% damage). [Skotlex]
2006/07/17
* Updated mob_db.sql to current mob_db.txt data. [Skotlex]
* The char-server will allow off-line character saves when said char is
tagged for final-save (this is the scenario when the char-map reconnect).
[Skotlex]
* Should have fixed the Cart Termination damage code to be scaled correctly
when you change the max cart weight. Thanks to The Ultra Mage for the error
clarification. [Skotlex]
* Implemented Grandcross weird property where if there's noone on the path
it'll hit twice for the skill's reported damage, and when there is (or you
can't knockback the target) it'll do a splash attack that hits twice for
500% to all affected targets. [Skotlex]
* Some cleaning of the combo code. TK Rankers will now get their combo-time
extended each time they trigger a kick, enabling them to do "unlimited
combos". [Skotlex]
* Modified the autosave function to use a sweep across the player db
instead of across connected clients. This will cause non-connected players
(like autotraders) to also be saved on a regular interval, may help with
possible data-loss from said characters on unclean shutdowns. [Skotlex]
* Removed the code that forces aggressive mobs to go after a Homun instead
of their master (no reason why there should be such a condition). [Skotlex]
* Some sign quest map flag updates [MasterOfMuppets]
* atcommand_follow is now more verbose. [Adam]
* Manually added int_homun.c to the VS8 char_sql project, *should* work [DracoRPG]
* Orn's fix to the very critical skill level up bug [DracoRPG]
* Updated mob_db.sql to current mob_db.txt data. [Skotlex]
* Added Orn's lil fix on homun [Vicious]
* Added Homunculus system, enjoy! [orn aka Nylou]
- WARNING: This currently only works with the SQL version, as the TXT char-server
has no code for it at the moment. You TXT server won't break, but the char-server
will complain of an unknown packet if you try to get an Homunculus
* Updated nomemo mapflags based on info from http://ro.doddlercon.com/images/memo.jpg [Poki#3]
2006/07/15
* Small change in conf/battle/player.conf to say that 199 is max aspd allowed
(Haplo says that there are many reports of having over 200 is giving errors) [Evera]
2006/07/13
* Kaahi no longer shows the heal effect to everyone. [Skotlex]
* Eska no will cause defense to change randomly every second. [Skotlex]
* Tuned up some more NJ_KAENSIN based on Tharis's information. [Skotlex]
* Corrected NJ_KAENSIN as per description. [Skotlex]
* Fixed a leaking map_freeblocklock on skill_del_unitgroup. [Skotlex]
* Changed the default save interval to 5 minutes. Added support for
specifying fixed save-intervals by using negative values. [Skotlex] EG:
- Save interval set to 300 (5 minutes): all characters will be saved in
equal time-slots, so that everyone is saved every 5 minutes regardless of
number of players online.
- Save interval set to -1000 (1000 ms): One character will be saved every
second, regardless of amount of characters online.
The new fixed-time-slots method is meant for larger servers, so that they
can control the saving-induced stressed on the char-server.
* Fixed @storeall and @charstoreall failing when the target character
already had the storage open. [Skotlex]
* Reverted temporarily the Cart Termination equation until it can be
fixed... [Skotlex]
* Fixed script command "recovery". [Skotlex]
2006/07/12
* Fixed a small typo in my code [Zido]
* Added negative value in bonus exploit fix for more stat bonuses [Zido]
* Fixed exploit in pc_bonus there are no checks that check that the value being
added onto a status don't make it go below zero, which means if you have a mineral
card and reset stats it reduces your base attack to lower than zero, making it
go up to 64000. Fixed by adding a check for SP_BASE_ATK, although i recommend
doing it for other status bonuses also [Zido]
* Recoded NJ_BAKUENRYU to behave as I understand it best from the
skill-description (since Haplo told me this skill doesn't really has video
information or anything...) [Skotlex]
* Fixed NJ_TATAMIGAESHI to use ground-tiles rather than "for each in path"
calls. The skill should be working correctly now, except for the fact that
the correct "unit id" is missing (this is what would give the ground tile
it's correct display). Temporarily it is using 0xba until the correct value
is found. [Skotlex]
* Added back the undead check to turn undead/resurrection to prevent
damaging non-undead targets, removed it from the battle damage section.
[Skotlex]
* Resurrection will now silently fail when used on non-undead + not-dead
characters. [Skotlex]
* Poem of bragi/magic String's base delay reduction at level 10 (or above)
is now 50% instead of 3*lv%. [Skotlex]
* status_damage will no longer fail when the target is not on a map AND the
flag is 2 (charge rather than damage). Fixes SP-draining status changes
ending suddenly when in-between maps. [Skotlex]
* Fixed the IP value being apparently incorrectly casted before inserting
into the loginlog table on "connect success" events. [Skotlex]
* Fixed Cart Termination's damage. [Skotlex]
* Added the missing check to remove character from memory when logging out
and using the charsave_method which saves character map-server-side.
[Skotlex]
2006/07/11
* Fixed inverted check which was preventing you from buying more than 1
from any stackable item.... [Skotlex]
* Should have fixed the crash in intif gm message... [Skotlex]
* Fixed GTB card only working while you had a status-change active.
[Skotlex]
* Fixed being unable to compound cards in armor. [Skotlex]
* Made @monsterignore be an universal ignore. Means you cannot be targetted
as an enemy by anything. Also added alias "@battleignore" which does the
same as monsterignore. [Skotlex]
* Fixed magic power setting your min matk as max-matk. [Skotlex]
* Modified the packets involved in @fakename in hopes it'll refresh
correctly on nearby clients now. [Skotlex]
* Fixed clif_parse not checking for func_parse before sending data to the
connected clients. This in turn required various code-rewrites in: [Skotlex]
- duel related messaging functions (added clif targets DUEL/DUEL_WOS).
- intif whisper to gm function
- day/night timers
- Rewrote the parse_console function to stop allocating/deallocating memory
on every call.
- Modified chrif_charselectreq to receive the player's ip among the data.
* Added function clif_disp_message, which is the same as
clif_disp_onlyself, except you can specify the targets (it sends a
guild-chat packet) [Skotlex]
* Fixed the subele bonus (elemental reduction) being applied to the element
of the attacker instead of the element of the attack. [Skotlex]
* mob skills now won't trigger on unit_stopwalking calls. [Skotlex]
* Coded @reset. [Skotlex]
* Reenabled @changesex [Skotlex]
* Added function pet_create_egg which handles creating pet eggs correctly
(when passed item id is indeed a valid petegg). Applied this on @createitem
and getitem. [Skotlex]
* Cleaned up code of @item [Skotlex]
* Cleaned up the itemdb_isequip functions. itemdb_isequip will now return
if the item is equipable by players, itemdb_isstackable returns if the item
can be stacked, and itemdb_isidentified returns if the item should drop
identified. [Skotlex]
* Added defines CARD0_PET/CARD0_FORGE/CARD0_CREATED to identify if a given
item has "invalid" cards, added define function itemdb_isspecial to
simplify this check. [Skotlex]
* Removed itemdb.c considering item ids above 20000 as invalid. [Skotlex]
* Cleaned up script commands getitem and card-counting related ones.
[Skotlex]
* Cleaned up a bit more pc_isequip [Skotlex]
* Added script function warpportal(x,y,targetmap$,targetx,targety).
This creates warp portals as in the skill unit as a volatile alternative
to static warp portals. [blackhole89]
* Modified the login-sql server to do the ip-ban check only on the
auth-packets instead of on every packet. [Skotlex]
2006/07/10
* Corrected Warp Portal being unable to warp people who are standing on it
on the moment it triggers. [Skotlex]
* Fixed @follow stopping the moment you are warped. [Skotlex]
* Fixed pc_additem messing with the equip field of the passed item data.
Fixes the famous "equip stuff on your arrow slot" bug. [Skotlex]
* Fixed cart-termination crashing the server if you used level 16 of it.
[Skotlex]
* Fixed check_connect_login_server check in char-sql server. Fixes
char-server not reconnecting to the login server. [Skotlex]
* Login-sql server will no longer change an account's state to "7" when
banning a player. This should fix being able to use @ban to clear out a
@blocked player. Players will now be identified as banned only through the
banned-until timestamp. [Skotlex]
* Fixed a crash when using Gospel... [Skotlex]
* The on-place function won't be invoked on setting ground skills if the
group's tick is greater than the current tick. As Buuyo pointed out, this
should fix Sanctuary and Gospel taking effect inmediately instead of after
"x" amount of ms as they should. [Skotlex]
* Added login-char packet 0x2737. Sets all characters offline (login-server
side). [Skotlex]
* Cleaned up char server "set all offline" implementation to remove only
characters from the map-server from which the packet was invoked. It will
also now correctly kick/set-character offline from the map-server if they
are connected. [Skotlex]
* Cleaned up the char-sql reconnect code. It no longer sets everyone to
offline. [Skotlex]
* Removed setting "kick_on_disconnect", servers will no longer kick
characters out when there's a disconnection. Instead, it'll use the most
logical approach: Set characters into a "lost" state when there's a
disconnection, on reconnect, resent the list of online-characters, do a
sync, and let the difference be characters to be removed. Also, the
map-server won't release character data until it's saved and the ack
returns from the char-server to prevent data loss (all this data is resent
on reconnect for saving anyway). [Skotlex]
* Added a check in pc_equipitem so that when switching weapons and you have
the skill_range_by_weapon setting active, the skill info block (which
includes range) will be resent when the new weapon to equip has a range
different than the previous one. [Skotlex]
* One closer inspection, removed that clear in itemdb_reload for a foreach
call again. And modified itemdb_load to scrap the dummy item entry from the
item_db and replace it with proper data for the item. [Skotlex]
* itemdb_reload will clear the itemdb before reloading info instead of only
clearing the scripts now. [Skotlex]
* Some cleaning of skill_castend_pos2, fixed Gospel, and a
map_freeblock_unlock misplacement. [Skotlex]
* Sense/Estimation will now display the mob info window to all party
members in the same map. [Skotlex]
2006/07/08
* Fixed the new addeff structure not working well with SC_STONE (because
SC_STONE is 0, which was by default not handled as a valid value).
[Skotlex]
* Added back the TF_MISS walking speed bonus to assassin type classes (how
did that got lost?) [Skotlex]
* Fixed mobinfo displaying exp as signed ints rather than unsigned.
[Skotlex]
* Added status_check_visibility to check if an object is within range of
view of another. Nothing more, nothing less. It's used by unit movement to
check whether you can continue chasing your target or not when the "chase
target" directive is given. [Skotlex]
* Fixed the char table having party/guild_id as smallint when they need int
there. Thanks to hermematon for pointing it out (use svn_ugprade7580.sql)
[Skotlex]
* Applied k3dt fixes to pet-hatching, ice-wall check, and wedding skills.
[Skotlex]
* Fixed endow skills calling the skill no damage packet twice. [Skotlex]
* Fixed a crash on warpwaitingpc when the chat-room is empty. [Skotlex]
2006/07/07
* Fixed the Warm Skills [Skotlex]
* Removed the debug message when a player logs out and is removed from
memory, it is working fine (tested normal logging off and autotrade). [Skotlex]
* Corrected the pet-armor field of the pet not being updated on
equip/unequip of accessories, making them not show up inmediately. [Skotlex]
* Status_calc_bl will no longer stop you from attacking/walking when the
mode is changed unless the new mode no longer includes
"can-attack"/"can-move" respectively. [Skotlex]
* Should have fixed clif_item_sub to properly store pet egg/armor data.
There should be no more "random refine levels" bugs related to these.
[Skotlex]
* itemdb_exists will now return NULL for item_id 0. [Skotlex]
* Added a check to free a character from memory when changing map servers.
[Skotlex]
* Okay, added a chrif_save_ack packet to the char-server so now the map
server will know once a character was "final saved", and only then the
character will be removed from memory. On char-server reconnection, all
chars that are in final-save state are resent to save (if they are still in
memory, it's because the ack hasn't gotten here from the char-server). This
should effectively block all dupe problems due to heavy inter-server lag,
however as it's untested, it currently prints some debug messages when
people are saved and then removed from memory. Need testers so this can be
debugged and merged to stable! [Skotlex]
* Now, when the login-char connection is cut, the char-server won't set
everyone offline on reconnect, instead it will send the list of online
accounts to the login server. [Skotlex]
* Modified the error on the char-sql server to set chars online when it
receives a save packet from a character tagged as offline (until it can be
figured out why this is happening) [Skotlex]
* Fixed signed/unsigned comparison issues in the char txt/sql server.
[Skotlex]
* Fixed the cooking success chances. Thanks to Ishizu Chan. [Skotlex]
* Added a temporary band-aid to prevent executing the script of non-arrows
when they are equipped on the arrow-slot (until the actual cause of why
pc_unequipitem is not working correctly is discovered/fixed) [Skotlex]
2006/07/06
* Modified the party_data structure on the map server to remove some
redundant data. Added a party_data structure on the char-server to hold a
more complete set of information about parties. Added to the party_member
structure the class of each member so that the map server can do the
appropiate checks even if the character is on another mapserver/offline.
Due to the format changes in the party structure, txt servers will have to
wipe their party file... (sql save format has not been changed) [Skotlex]
* Added function char_family to check if there's a family state given the
three character ids, instead of doing individual checks all the time.
[Skotlex]
* Rewrote all the item restriction functions so that they will take into
account slotted card restrictions as well. [Skotlex]
* Added no_skill_delay setting, when set, affected object types will have
the minimum skill delay for all skills. Defaults to mobs, since they
don't have skill delays. [Skotlex]
* Cleaned up pc_equipitem. When dual wielding or equipping accessories, if
the client actually specifies one of the two positions, it will be taken
into account (now, does the client actually does this?) [Skotlex]
* Fixed GrandCross and similar skills. [Skotlex]
* FogWall will now also affect the caster. [Skotlex]
2006/07/05
* Updated NJ_KAENSIN by Saycyber21 [Vicious]
* Updated @refine to take account of MAX_REFINE, thanks to Omega... GM
Designer. [Skotlex]
- Also optimized the @refine loop for better performance.
2006/07/04
* Fixed compile issue for NJ_BAKUENRYU, by Saycyber21. [Vicious]
* Implemented Saycyber21's some NJ work. Untested. :D [Vicious]
* Implemented cooking chances. Chance of success is 70% - 7*(dish-lv)% +
12*(cooking set-lv)%. Exception: When using the legendary cooking set,
success chance is 100% regardless of dish. [Skotlex]
* Added battle config setting emergency_recall, specifies behaviour of that
skill (skill.conf): 0 - Disabled. 1 - can't be used in nowarpto maps. 2 -
Can be used everywhere. [Skotlex]
* Removed the NPC/Dance/Song inf2 check of AbraCadabra. whether a skill can
come out or not is entirely decided by the abra db file now. [Skotlex]
* Added structure s_addeffect to handle status change additions. Cleaned up
relevant code. It is now possible to specify ANY status change, not just
the basic ones. NOTE that the code is proof-read, but untested! [Skotlex]
* Added support for bonus3 bAddEff/bAddEffWhenHit as follows: [Skotlex]
bonus3 bAddEff/bAddEffWhenHit, <SC value>, <rate>, <target flag>.
Target flag is 0: Self. 1: Enemy. 2: Both.
* Added these descriptions to doc/item_bonus.txt [Skotlex]
* Added a check when joining a chat to make sure the target object is of
type BL_CHAT. [Skotlex]
2006/07/03
* Cleared up the bAutoSpellWhenHit description in doc/item_bonus.txt
[Skotelx]
* Fixed Phantasmic Arrow and Magical Bullet not being correctly tagged as a
ranged arrow-type attack. [Skotlex]
* Updated help.txt and help2.txt, thanks to Inuyasha for providing the
updated files. [Skotlex]
* Char-server SQL won't perform the reconnect cleanup routines when
kick_on_disconnect is disabled. [Skotlex]
* Renamed summons_inherit_effects to summons_trigger_autospells as the
setting now only makes the attacks of the slaves trigger the autospells of
the master (as it should be). [Skotlex]
* Corrected code capping no_spawn_on_player to 50 when the max should be
100. [Skotlex]
* Warmth will dispel when warping now (or else the effect is left on the
ground) [Skotlex]
* Fixed reading of the refine_db not working right when MAX_REFINE is
increased from 10. [Skotlex]
* Some more cleaning to the implementation of Abracadabra [Skotlex]
* Fixed a compile warning in login sql/txt [Skotlex]
* Fixed pc_makesavestatus not setting your logout position. [Skotlex]
* Fixed two dances becoming BA_DISSONANCE instead of DC_UGLYDANCE.
[Skotlex]
* Added the missing +100% damage modifier of Enchant Deadly Poison.
[Skotlex]
* Fixed SkillStatusChangeTable not working correctly for Homun/Guild
skills. [Skotlex]
2006/06/30
* Fixed a typo in msg_athena.conf, "This item cannot be drop" -> "This item cannot be dropped" [MasterOfMuppets]
* Added a check to prevent equipped items from being traded. [Skotlex]
* Added UF_SONG (0x400) to differentiate songs from dances. [Skotlex]
* Added preliminar support for making a Song+Dance turn into BA_DISSONANCE
cells. Beware of potential bugs as it's untested. [Skotlex]
* Added mapflag "nochat" to prevent chatting rooms from being created.
[Skotlex]
* Corrected some of the sleep checks when the char id does not matches with
the char-id expected by the script engine. [Skotlex]
* Cleanup in itemheal related code, fixed the item heal group bonus not
working on Groups beyond 7. [Skotlex]
* Fixed pet's loot not being moved to your inventory on logout. [Skotlex]
2006/06/29
* Made the map server send list of characters online to the char-server on
reconnection regardless of "kick_on_disconnect" setting, as otherwise, a
temporary disconnection would make the char-server tag all characters
offline and refuse to save them afterwards. [Skotlex]
* Fixed guild storage being "eternally in use" if you quit/logout before
closing it. [Skotlex]
* Ending SC_CLOAK/SC_HIDE/SC_CHASEWALK will now trigger ontouch npcs.
[Skotlex]
* [Fixed]
- Scripting system screwing up script position after mixing timers with menus.
- NPC attached AI mobs display as alive when dead.
- View data not updating after buildin_unitdeadsit.
[Improved]
- NPCE_LOADMAP to execute after all (area) objects are sent to the player.
- Simplified scripting system. sd will now use pointer to the script state itself.
[Lance]
2006/06/28
* changed:
dynamic_pass_failure_ban_how_many:from 3 to 7
dynamic_pass_failure_ban_how_long:from 60 to 5
as in official servers. [Musashiden]
* Added a check in script command "set_option" so that invoking
"set_option(0)" removes Cart/Peco/Falcon, as expected by scripts. [Skotlex]
* Added trade-range check on trade start. [Skotlex]
* Added inf2 4096 (INF2_ALLOW_ENEMY) which is to be used in conjunction
with INF2_PARTY_ONLY/INF2_GUILD_ONLY when said skill should ALSO be allowed
to be used on enemies. [Skotlex]
* Cleaned up a bit the code for @item [Skotlex]
* Fixed character/storage being sent to be saved TWICE when you logged out
while the storage is opened. [Skotlex]
* Added save_settings map config. Specifies after which events do
characters get saved (defaults to all): 1 - Trade successful, 2 - Vending
transaction, 4 - Closing storage/guild storage, 8 - hatching a pet.
[Skotlex]
* Changed the mob drop rate adjust function to receive a signed int
argument. Probably will fix those drops with 0% becoming 100% [Skotlex]
* Corrected Musical Strike having a different damage equation from Throw
Arrow. [Skotlex]
* Added state rewarp to players. It gets set when a pc_setpos call is
triggered while the player is changing maps so that when the player finish
loading the map, it is inmediately rewarped to where it has been
rewarped/recalled to. [Skotlex]
2006/06/27
* Map server will now resent the whole list of online characters to
char-server on reconnect when the kick_on_disconnect setting is active.
[Skotlex]
* Cleaned up and optimized the IP sync code. New login_athena config
setting sync_ip_interval specifies how often to sync the ip. The default is
0 (disabled). [Skotlex]
* Added mapflag "loadevent", now load-map script events will ONLY trigger
on maps with this mapflag on, rather than every map. [Skotlex]
* High Jump can now be used in all versus maps. [Skotlex]
* Added Kaite's opt3 value, taken from jA [Skotlex]
* Added state dirty == 2 to storages. Signals when a storage was sent for
final saving. Said storage is removed from memory after the ack from the
char-server, and they are sent to save if the map/char servers reconnect
before the ack arrives. In short: they are guaranteed to be saved after a
char logs out. [Skotlex]
* Put pay_arche.gat in the "no experience lost" mapflag file. [MasterOfMuppets]
2006/06/26
* Corrected the element of hunter traps. [Skotlex]
* Deadly Poison now also reduces def2 by 25% [Skotlex]
* Cleaned up a bit skill_moonlit, Moonlit Petals should work correctly now.
[Skotlex]
* Fixed @mi displaying always 0 instead of the mob's class. [Skotlex]
* Rough implementation of Ground Drift according to description and jA
info. [Skotlex]
* Implemented Tatami Gaeshi using skill description and jA implementation
for reference. [Skotlex]
* Merged Mitternacht's max_heal/max_heal_lv config settings. [Skotlex]
* Removed support of packet 0xc3 on the new packet versions. Thanks to
Meruru for pointing out they aren't being used anymore. [Skotlex]
* Autospells will now again check for the skill's nk value, so that skills
tagged "nodamage" skills will not trigger autospells. [Skotlex]
* Corrected clif_item_sub so that pet eggs will correctly be sent as
equipment (fixes them showing up "broken" and with random refine levels)
[Skotlex]
* [Added]:
- buildin_unitkill just for kicks. [Lance]
2006/06/23
* [Optimized]:
- Setting of variables with defined scope in some frequently executed script
events.
[Added]:
- Missing script_require_trigger flags for some power hungry events.
* Updated mob_db.sql and item_db.sql to latest. [Skotlex]
* Modified pc_setoption so that it will correctly update sprite AND clothes
color when mounting/unmounting changing into/from xmas/wedding sprites.
[Skotlex]
* Allowed itemdb_exists to return the dummy item. Enables "invalid" items
to be sold, traded, dropped, etc. [Skotlex]
* Corrected ASC_BREAKER. Int-based damage is applied after attribute fixes
and before card reductions. The skill now completely disregards left
hand weapon. [Skotlex]
* Standarized PF_MEMORIZE to be 50% cast time on all skills (instead of
-50% for targetted skills and -66% for ground skills >.>) [Skotlex]
* Cleared up the comment on what item_check does and how it works.
[Skotlex]
* Changed setting for skill_nocast flag 16. It is no longer a "pk-mode map"
setting, it's now a clone-forbidden skill. That is, skills with the flag 16
will never be copied by clones. If you use a PK-mode server, use flag 2 now
to forbid skills from common maps. [Skotlex]
* Default skills from not being cloned are Magnus Exorcism and Turn Undead.
* The map search free cell will now use the size of the map # of tries
before giving up when the spawn area is the whole map. Added a check to
inmediately give up when the number of spawn retries has reached the max
specified (no_spawn_onplayer = 100). [Skotlex]
* Cleaned up a bit the clone code to account for the unit flags
UF_NOPC/UF_NOMOB when the skill is not ground-based (accounts for self
skill that causes a ground-tile to be placed, like Dances). [Skotlex]
* Added pc_bonus_autospell_del, gives support for removing autospell
effects. When a negative rate is specified, it will decrease the chance of
casting (eg: You have two different cards with autospell Heal +20% each,
then do autospell -30. The second card will be cancelled, and the first one
will become Heal +10%) [Skotlex]
* npc_timers now will not restore the previous timer data when there's no
players attached (when it's strictly an npc timer). This should reenable
the old behaviour of getnpctimer returning the total ellapsed time since
"startnpctimer" even after the last label has been reached. However, this
behaviour won't apply to player-attached timers. [Skotlex]
* [Fixed]:
- MAPREGSQL overloading SQL table with temperory map registries.
- Incorrect perfomance calculation for MAPREGSQL loading and saving. [Lance]
2006/06/22
* Guessed and added support for the packets 0x22a (idle) and 0x22b (spawn).
This should complete the required packets for PACKETVER 7. [Skotlex]
* Added support for the PACKETVER 7 packets in the "dummy" current
intravision implementation. [Skotlex]
* Fixed @autoloot being off by 0.01% when entering a manual value.
[Skotlex]
* Restored the "Secret" behaviour of Blast Mine and Claymore Trap where
each target is hit N times (where N is the number of mobs in the splash
area at the moment of triggering). [Skotlex]
* Updated the tools/stackdump script to also handle sig-plugin generated
backtraces. Now it will also auto-determine whether the exe needs a .exe at
the end or not. Help me test it as I want this script on stable NOW :X
[Skotlex]
* Usage is "stackdump <login/char/map> <txt/sql> [number]". When a number
is given, sig-plugin stackdumps are assumed, otherwise it parses the normal
stackdump as before. [Skotlex]
* Corrected autoloot so that you can specify rate with decimal precision
("@autoloot 0.01" should work) [Skotlex]
2006/06/21
* [Removed]:
- Redundant mob name copying. (it's already copied in mob_parse_dataset) [Lance]
* [Fixed]:
- Compilation warnings and errors.
[Improved]:
- Changed and moved IP sync status messages to elaborate more. [Lance]
* Tested and fixed resolve_hostbyname. Applied said function around most of
the code where needed. Removed includes for the OS/network system pretty
much from every file (our socket.c file should handle this) [Skotlex]
* Made the GM mute request bypass the manner_system setting. [Skotlex]
* Applied use of parse_hostbyname() in chrif.c to fix compilation errors.
[Skotlex]
* status_percent_change will now account for when the target's max hp/sp is
above INT_MAX. [Skotlex]
* [Added]:
- DNS (WAN) sync for those pesky disconnections (dynamic ip renewal). [Lance]
2006/06/20
* Some cleaning up of OPTION related code. OPTION_XMAS and OPTION_FLYING
really ARE the same value clientside! (totally stupid), therefore I've
opted from removing the flying animation since it really just displays as
Xmas for others (and the correct fix involves adding a bunch of
class-change packets...) [Skotlex]
* Updated skill_require_db to place the Zeny requirements of ZenyNage and
Fling. [Skotlex]
* Fixed crash when non-players use ZenyNage. Added the correct Zeny check
in skill_check_condition, fixed the skill so that it's damage is based on
whatever zeny is specified in skill_require_db. [Skotlex]
* Can-act delay will not be reset when warping now. [Skotlex]
* Fixed Quagmire not altering walking-speed. [Skotlex]
* Silence now blocks skills both on begin/end casting. [Skotlex]
* Updated status_calc_bl so that when walking speed changes, the character
is made to rewalk so that the new speed takes effect inmediately. [Skotlex]
2006/06/19
* Added Ayothaya to nopenalty and nopvp mapflags. [Evera]
* Combo-used Skills with State "move_enable" will now override the "can't
move delay". Fixes Break-Fall -> Jump-Kick. [Skotlex]
* Some more cleanups of battle_calc_damage to account for absorbed damage
reductions. [Skotlex]
* Moved back Soul Drain code from mob_dead to skill_counter_additional_effect.
Now we are back to where the skill animation does not shows, but you DO
get SP T.T' [Skotlex]
* Some cleanups and corrections in battle.c to account for negative
(absorbed) damage. [Skotlex]
* Fixed fame-list updating crashing char-sql server when the given char-id
just got into ranking. [Skotlex]
* Added missing Arunafeltz maps with information from NLZ [Evera]
2006/06/18
* [Fixed]:
- Typo in status.c add_sc() using 'skill' instead of 'sk' as index, resulting in
filling the SkillStatusChangeTableArray with junk data.
- > NEEDS CONFIRMATION < Ends casting if player is knocked with freezing/stun/whatever
- Typo in parse_frommap. [Lance]
* [Fixed]:
- clif_initialstatus using SHRT_MAX instead of USHRT_MAX for status_point.
* [Temperory Fixed]:
- Crashing of SQL char-server in parse_frommap case 0x2b01. [Lance]
* [Removed]:
- Large part of scripted mob control commands are removed.
- Large part of scripted player control commands are removed.
- Scripted mob slaves changing master ID.
[Added]:
- Unit control commands.
- CALLBACK_NPCCLICK for scripted mobs, added this to db/const.txt too.
- Macro RECURSIVE_MASTER_CHECK in battle.c
[Modified]:
- buildin_skilluseid and buildin_skillusepos -> buildin_unitskilluseid
and buildin_unitskillusepos.
- md->callback_flag to short (double word). [Lance]
2006/06/17
* Devotion absorbed damage will now appear to come from oneself (instead of
the original attacker changing directions towards the Crusader) [Skotlex]
* Updated clif_refres to send inventory, cart, and weight info. [Skotlex]
* Fixed intif_guild_memberinfoshort to not leave a dangling pointer when
someone logs out <.< [Skotlex]
* Changed some mapflags related to the eye of hellion quest. [MasterOfMuppets]
* [Added]:
- buildin_checkcell, buildin_mobwarp, buildin_pcattack.
[Improved]:
- buildin_skilluseid and buildin_skillusepos to accept a few more arguments.
- mob_script_callback to return sucess value [Lance]
* Fixed the party HP packets to send max HP 10000 and scale HP accordingly
when the player's HP doesn't fits in the packet's field. Fixes HP bars not
correctly displaying the % of life when max HP is above 32k. [Skotlex]
2006/06/16
* Fixed option value being reset'ed on login (fixes cart/peco/falcon being
lost) [Skotlex]
* Corrected @speed to alter your base speed instead of battle one. Means
the change remains for much longer (until status_calc_pc is invoked, which
could be due to equipping/unequipping stuff) [Skotlex]
* Modified the bNoMagicDamage/bNoWeaponDamage bonuses to be a 0-100
setting. Meaning you can do bonus bNoMagicDamage,50; To make all magic
damage be reduced by half. This bonus stack, so two cards with
bNoMagicDamage,50 will give magic immunity. [Skotlex]
* Removed setting gtb_pvp_only and replaced it with gtb_sc_immunity which
specifies the threshold before the bNoMagicDamage starts blocking support
statuses as well. ie: gtb_sc_imunity: 75 will mean that "bonus
bNoMagicDamage,70;" reduces magic damage by 70%, but does not blocks heal
or support status, while "bonus bNoMagicDamage,80;" does. [Skotlex]
* Removed db_tables.sql as it's no longer used. [Skotlex]
* the mvp_sd is removed when the mob is the emperium and there's no
killer/exp-awarded (assumed killed by script), this prevents the on-kill
event from triggering and giving the castle to whoever damaged the most the
emperium without destroying it. [Skotlex]
* [Added]:
- Custom slave mobs to inherit the callback_flag.
- Added option #25 to buildin_setmobdata to set the callback_flag. [Lance]
* [Improved]:
- Cleaned up Custom Mob Script Callback codes. Looks much better now :B. [Lance]
2006/06/15
* [Fixed]:
- intif_parse_RenamePetOk for not compatible with ANSI-C initialzation specification.
[Lance]
* Added indexes for loginlog and ipbanlist as they did not have any.
(note, someone already put the index on loginlog on trunk.) [Euph]
* Merged Adam's patch to let the char-server handle validation of
pet-name-change requests through the allowed char letters config. [Skotlex]
* Fixed "wedding_ignore_palette: yes" not working when relogging with the
gear already equipped. [Skotlex]
* Added blocking of the Kick skills when you are a Soul Linker. [Skotlex]
* Added enabling to turn off a kick-stance regardless of class. [Skotlex]
* Altered a bit how status_set_viewdata behaves in regards to Wedding/Xmas
options. [Skotlex]
* Added back OPTION_XMAS, but the actual value is missing! [Skotlex]
* Corrected chrif_save so that the player is not set offline on map-change.
[Skotlex]
* Added change-look support in pc_setoption when specifying OPTION_XMAS
[Skotlex]
* Fixed clif_parse_RemoveOption removing all options instead of just
Falcon/Cart/Peco [Skotlex]
* Fixed clif_send not sending packets to SELF when specifying AREA if the
source is not on the map yet. [Skotlex]
* Fixed and cleaned up script command 'equip' [Skotlex]
* Fixed 'autoequip' items. [Skotlex]
* Fixed Aspd not being updated in your status window after Agi/Dex
increasing statuses take effect. [Skotlex]
2006/06/14
* Fixed map_nick2sd so that searching for "Adam" will not match a char
named "Adam Smith". Thanks to Adam for reporting it out. [Skotlex]
* Modified how luk reduces status changes by reducing the gap. Eg: resist =
vit; resist += (max - resist)*luk/300; [Skotlex]
* Added battle settings pc_max_sc_luk/mob_max_sc_luk to handle which is the
luk threshold at which you gain inmunity (defaults to 300). [Skotlex]
* Fixed buildin_getmobdata. It was trying to handle the first parameter as the
array to fill in. [blackhole89]
* Blocked again skill usage during marionette. [Skotlex]
* Fixed main.sql adding a key on char_id rather than account_id for the
char table. [Skotlex]
* Cleaned up character saving in char-sql, it no longer needs to query the
database to see if the player exists on each char-save, instead it checks
the received data against the online-players db. No such fix is required
for char-txt. [Skotlex]
* Added an error message on the char-server when the received player data
size does not matches with the expected size (should avoid the crash that
happens on such a memcpy). [Skotlex]
* [Improved]:
- script_save_mapreg for MapregSQL Saving to display perfomance only in slow
queries. [Lance]
2006/06/13
* Updated mob_db.sql and item_db.sql to latest. [Skotlex]
* Added account_id index to char table. Thanks to Buuyo for reporting it.
Sql users apply upgrade_svn7146.sql NOW. [Skotlex]
* Marionette and Devotion will now check raw distance and ignore obstacles
and the like. [Skotlex]
* Added irc_channel_pass setting and prevent crashing when irc server
lookup by host fails. Thanks to Trancid for the details. [Skotlex]
* [Fixed]:
- clif_parse_GetCharNameRequest displaying false alarm for legitimate GM snooping.
[Lance]
* Added support for reading correctly status change data from Guild and
Homun skills. [Skotlex]
* Added support for reading Homun skill data (which means the HM skills are
now safe to add to skill_db, skill_require_db, etc) [Skotlex]
* Oppositions can't be made during WoE now. [Skotlex]
* Fixed a few compiler warnings from VC [Skotlex]
* Commented out the Homunculus Skills<->Status Change link which was
causing some memory corruptions. [Skotlex]
2006/06/12
* [Fixed]:
- buildin_npcshopitem not allocating extra 1 block of terminator.
[Added]:
- Modified versions of Dj-Yhn's buildin_npcshopdelitem and buildin_npcshopadditem
[Lance]
* Updated clif_disp_onlyself to not use dynamic memory and write directly
to the player's buffer. [Skotlex]
* Updated @noask to also tell the user what he has just rejected (added
msg_athena entries for each of the different requests). Also updated it to
use clif_disp_onlyself. [Skotlex]
* Fixed a pair of missing initializers in the clif storage functions.
[Skotlex]
* @heal no longer displays a healing animation. Fixes the client believing
you couldn't be healed more than 32K. [Skotlex]
* Now you can use any skills (except encore/dancing ones) while under
Longing for Freeding. [Skotlex]
* Now you can use any skills while under Marionette Control. [Skotlex]
* Fixed npc_checknear's distance check returning the opposite of what it
should (false when the range is correct and viceversa) [Skotlex]
* Added a warning on item loading when an item is of equippable type but
has no equippable position. [Skotlex]
* Turning an alliance to an opposition won't work now during WoE [Skotlex]
* Slaves can summon other mobs now. The only ones who can't do this are
player summoned mobs. [Skotlex]
* Merged the following functions for faster processing of items: [Skotlex]
clif_storageitemlist + clif_storageequiplist = clif_storagelist
clif_guildstorageitemlist + clif_guildstorageequiplist = clif_guildstoragelist
clif_itemlist + clif_equiplist = clif_inventorylist
Note that the changes are a bit substantial and need proper testing!
* Increased max knockback value support to 25. [Skotlex]
* [Optimized]:
- buildin_npcshopitem memory allocation to calculate before reallocating.
[Lance]
* Made guild member exp an unsigned int. [Skotlex]
* Various cleanups to the npc clicking related functions. Should fix quite
some possible crashes from crafted packets. [Skotlex]
* Added overflow checks for bonus settings mdef_rate/def_rate. [Skotlex]
* Added missing update of INT after a buf. [Skotlex]
* Small cleanup of how SC_BLEEDING works. [Skotlex]
* Fixed party_foreach_samemap invoking the function on the CASTER instead
of on the party members. [Skotlex]
* Modified clif_parse_NpcClicked to handle the different situations with
different bl-objects (attack on players/mobs, click on npcs or mobs with
npc attached) [Skotlex]
2006/06/09
* [Fixed]
- Compilation warnings on guild.c and int_guild.c [Lance]
* Added structure party_data and party_member_data to the map server to
hold party-specific required information about parties including
Monk/TK/SG/SN states and party member count. Family information is still
missing, and handling of the state should probably be done by the
char-server, too... [Skotlex]
* party Hp updates are no longer done each time the Hp is modified, but
together with the party xy timer. It means HP-bars will be a bit delayed
before being updated, but packet consumption should be much less during
heated battles. [Skotlex]
* Fixed MoM's typo [Vicious]
* Fixed map_readafm missing strcpy(afm_name, m->name). [Skotlex]
* [Improved]:
- npc_click interception on BL_MOB and BL_PC to let sd act accordingly.
[Lance]
* [Fixed]:
- Execution of sleep/sleep2 more than once will hang the script_state.
[Lance]
* Fixed @mapinfo displaying incorrectly maps with nosave which send you
back to your last savepoint. [Skotlex]
* Moved guild_exp_rate from a mapserver battle config setting to a char
server config. It no longer modifies the total taxed exp as seen on the
guild information window, but directly modifies the exp that the guild
earns. [Skotlex]
* Added an error report and correction when the map server receives a guild
from the char-server with more guild members than MAX_GUILD. [Skotlex]
* Changed the interval between waterballs back to 125 [MasterOfMuppets]
* Fixed a typo in char_sql/char.c, thanks to Euph [MasterOfMuppets]
2006/06/08
* Modified guild exp to be an unsigned int rather than a signed one.
[Skotlex]
* Fixed @skilltree printing out Unknown job for most targets used.
[Skotlex]
* Cleaned clif_pvpset to not send the packet to nearby characters when the
source is GM-hidden. May help fix the crash on PvP with gm-hidden
characters. [Skotlex]
* Modified map_freeblock_unlock so that aFree errors will report the
file/line that INVOKED the function rather than the function itself.
[Skotlex]
NOTE: Do NOT disable the memory manager as that will break this change.
This change is to be temporarily set until the afree'd error can be
resolved.
* Updated mob_npc_warp to a three-state config switch. 0 disables. 1 enable
only on warps that don't lead to nobranch maps. 2 - enable on all warps.
[Skotlex]
* Adjusted Don't Forget Me, Defender, Longing to use all val entries, and
to hold the speed adjustment value rather than speed penalty (eg: 125
instead of 25). [Skotlex]
* Cleaned up status_calc_speed so that speed penalties are correctly
handled (eg: 25% penalty is speed*100/75, not +speed*25/100). Thanks to
Euph for pointing it out and Belle for the speed mechanics. [Skotlex]
2006/06/07
* Fixed Sense using mdef instead of mdef2 [Skotlex]
* Fixed item-skills not showing up on login. [Skotlex]
* Cleaned up clif_parseLoadEndAck, by testing which packets are required
only on first-login and which ones are required on all map-changes.
Skill-tree, Exp, Skill Points and most of the basic status are no longer
sent on map-change (items, cart data and zeny still need to be sent one
very map-change). [Skotlex]
* Fixed the mob state not being set to Berserk/Angry correctly after the
mob reaches the target's location. [Skotlex]
* Added config setting mob_npc_warp, when set to yes, enables mobs to be
warped between maps when stepping on a npc-warp. [Skotlex]
* Added monster_ai setting &64, when enabled makes a mob run to any nearby
npc-warp when their current target has switched maps. [Skotlex]
* Added pc_calcexp to calculate individual exp bonuses acquired from exp's
source (race bonus cards, SG Exp skills, pk-mode higher level exp) [Skotlex]
* pc_gain_exp now also receives the source of the exp, when said source
exists, bonuses are applicated as needed. [Skotlex]
* Added status_kill when capturing a mob, should take care of the mob not
respawning after caputed. [Skotlex]
* Fixed item info not displaying the found item id [Skotlex]
* Fixed item info not displaying the weight value properly. [Skotlex]
* Adjusted status resistances and durations taking as base Viccious's info
from the kro guidebook. [Skotlex]
* Moved souldrain code from skill_counter_additional_effect to mob_dead. It
should display the skill animation correctly now. [Skotlex]
* Adjusted several sc rate/time reductions as pointed out by Playtester.
[Skotlex]
- Luk now plays a luk/10 reduction role rather than a luk/3 one.
* Removed char_nick2id from char-sql server as it's no longer needed.
[Skotlex]
* Fixed quitting the map server not properly saving the storage before
deleting it. Thanks to Adam for pointing it out. [Skotlex]
* Cleaned status_get_sc_tick/status_get_sc_def to use the status_data
function. [Skotlex]
* SC_STOP's chance and duration can't be reduced anymore. [Skotlex]
* Storm Gust no longer has a 100% chance to freeze by passing mdef, now it
has a 300% base chance reduced by mdef and the like as explained out by
Tharis. [Skotlex]
* Frost Diver/Frost Nova's base freezing chance is no longer affected by
target's int. [Skotlex]
* [Improved]:
- mob_dead not to remove script controlled monsters with player sprites.
[Added]:
- buildin_mobdeadsit :D [Lance]
* [Fixed]:
- temp++ gets issued before if(mvp_damage<(unsigned int)md->dmglog[i].dmg) in
mob_damage. Thanks to seahorsix. [Lance]
* [Fixed]:
- Corrected login-server SQL to use *((ulong *)p) instead of (ulong)p [Lance]
* [Optimized]:
- list and size not being initialized (size get intialized in default: switch case)
Eliminated default case and initialized list and size at the beginning. [Lance]
2006/06/06
* Hopefully fixed for sure mobs getting extra stats when changing-class due
to the mobs level up setting. [Skotlex]
* Removed a piece of code that should no longer be needed due to the
combo-skill setting (inf = self, inf2 = no-target-self) which is blocking
self-skills from being used on others (pets/mobs should be allowed to do
that) [Skotlex]
* Added a status_check_skilluse call in Sightblaster to prevent it from
hitting hidden/cloaked/act-dead/etc players. [Skotlex]
* Fixed firewall counter going down by 2 each hit rather than 1. [Skotlex]
* Fixed Soul Burn not zapping away all SP. [Skotlex]
* The monsters can level up setting will not take effect when the mob's
level is LESS than their db counter-part (should prevent under-leveling
causing underflows and semi-immortal mobs) [Skotlex]
* Fixed mvp-exp calculations being messed up with more than one attacker.
[Skotlex]
* Changed the mob exp race bonus so that each player gets their own bonus,
rather than the killer's bonus applying to everyone. Still not the
"correct" way, but one step closer to it. [Skotlex]
* [Fixed]:
- Allocation of event_list in guild_npc_request_info to aCalloc so
memcpy(ev->name,event,strlen(event)) will have a null terminator. [Lance]
2006/06/05
* Fixed a crash when using SL_SMA and the "combo" ain't ready. [Skotlex]
* Hopefully fixed changing a mob's class causing them to get all sort of
stat bonuses due to the mobs-level-up setting. [Skotlex]
* Changed hit, flee, cri, flee2, def2 and mdef2 to signed short, def, mdef
to signed char to correctly account for cards with penalties in said stats.
[Skotlex]
* Fog of Wall won't affect the caster now in any way. [Skotlex]
* Added clif_fixpos packets before attacking for the first time to clear
any position sync issues with the client. [Skotlex]
* Fixed skill_unitsetting using layout->count for the for instead of
group->count [Skotlex]
* Added SC_INCDEXRATE/SC_INCAGIRATE. NPC_POWERUP/NPC_AGIUP now correctly
increase dex/agi by 40% per level. [Skotlex]
* Fixed char-sql server not deleting character variables when deleting a
char. [Skotlex]
* Corrected cloaking not ending on attack if you are near a wall. [Skotlex]
* Updated pc_bonus to use cap_value on all status_data modifiers to prevent
overflows/underflows. [Skotlex]
2006/06/03
* Fixed @mi/@mobinfo not showing the name collumns correcly [shadow]
* Solved the bug that made firewalls only castable a few times until [MasterOfMuppets]
you relogged. Thanks to Euph for the fix.
* Added variable other_mapserver_count to chrif.c which holds total count
of connected map-servers. By using this we prevent sending unnecessary
packets to the char-server when there's no more map-servers connected.
[Skotlex]
- Affected packets are whispers, announces, party messages, guild messages.
2006/06/02
* Fixed Visual Studio 7.1 Solution File (Login TXT and Map TXT were removed)
* Fixed a bug in unit_can_reach_bl which breaks path seeking when the
target is near obstacles. [Skotlex]
* Updated offensive use of Sanctuary to function like on the official servers [MasterOfMuppets]
* Changed the interval between waterballs from 150 to 250 milliseconds [MasterOfMuppets]
* Corrected clif_parse_takeitem to ALWAYS return a NAK packet when it
fails. Fixes cases where the client gets "stuck" and refuses to let you
pick any items. [Skotlex]
* Removed the walk delay from firewall and changed its knockback [MasterOfMuppets]
to 1 tile to make it act more like in the official servers.
* Some cleaning of the mob slave ai. [Skotlex]
* Corrected Brandish Spear to work on levels above 10. [Skotlex]
* Updated Two-HandQuicken, One-HandQuicken to give 30 +2*lv% aspd-rate for
skill levels above 10 (meant for boss casted skills) [Skotlex]
* Fixed Spear-Quicken messing with the calc_flag [Skotlex]
* Fixed Freeze/Stone/Benedictio not changing your elemental LEVEL to 1.
[Skotlex]
* [Fixed]
- Yet another compilation warning. [Lance]
2006/06/01
* Altered status_calc_pc so that equipment scripts are ran before
card-scripts. [Skotlex]
* Fixed pc_bonus to not underflow/overflow when adjusting def/mdef.
[Skotlex]
- These two together, should fix Tao Gunka Card.
* npc_debug_warps() will now be invoked if warp_point_debug is set.
[Skotlex]
* Updated item_db.sql/mob_db.sql to current. [Skotlex]
* Fixed NPC_SELFDESTRUCTION not showing nor dealing damage. [Skotlex]
* NPC_TRANSFORMATION/NPC_METAMORPHOSIS will now preserve the original mob
without removing it when the skill level is greater than one. [Skotlex]
* Added SC_DANCING declaration in the Status Change tables to signal it
modifies Walk speed. [Skotlex]
* Fixed pc_damage setting your canlog_tick even if the damage has no source
(eg: poison, berserk) [Skotlex]
* Berserk's aspd bonus now stacks with other aspd bonuses, but is still
affected by Quagmire/Forget-me-not. [Skotlex]
* Corrected setting slaves_inherit_mode to not apply to morphosis skills.
[Skotlex]
* Corrected pc_setoption to invoke status_calc_pc when getting/removing the
cart. [Skotlex]
* Fixed @mobinfo displaying the wrong element. [Skotlex]
* Fixed Autoblitz taking into account target's luck rather than attacker's
[Skotlex]
* Fixed slaves warping endlessly to their master when the master-slave
distance exceeds 30. [Skotlex]
* SC_ORCISH will now be dispelled on logout (if debufF_on_logout is set)
[Skotlex]
* Removed attackrange/attackrange_ from TBL_PC, corrected clif.c using the
incorrect range variable. [Skotlex]
* You can now equip/unequip stuff while the storage is open. [Skotlex]
2006/05/31
* Fixed Soul Drain not really giving you SP [Skotlex]
* [Fixed]:
- Suppressed compilation warning in chrif.c [Lance]
* [Fixed]:
- Guys can't go across map-servers :( [Lance]
* [Fixed]:
- Restoration and saving of sd->npc_id must be done every time. [Lance]
* Added back the Freeze/Petrify adjustments of -50%def and +25%mdef (when
where these lost?). Thanks to Buuyo for pointing it out. [Skotlex]
* Corrected the mob_ai&2 setting triggering rude-attacked due to can't walk
delay. [Skotlex]
* Made the char_name_option char_athena.conf setting apply to parties and
guilds as well. It cannot be applied to pets yet without adding a
change-name-request interserver packet. [Skotlex]
* Moved the JOB_* defines from map.h to mmo.h, update char.c to use them.
[Skotlex]
* Added function char_read_fame_list for famelist reading. Invoked it on
init, and made it be sent automatically to connecting map servers.
[Skotlex]
* Some cleaning of the fame-list reading code. [Skotlex]
* Some cleaning of the fame-update code, fixed a logic bug which made the
ranking list fail to display the correct ranker names. [Skotlex]
* Removed typedef bool from socket.h and included cbasetypes.c instead.
[Skotlex]
* Cleaned up and corrected the calculation of hit/flee/cri/lucky dodge in
status_calc_bl. [Skotlex]
* [Fixed]:
- Incorrect SQL syntax in login.c (missing collumn) [Lance]
* [Improved]:
- SQL upgrade file for the new loginlog. Thanks to ultramage. [Lance]
* [Fixed]:
- nullpo in pet.c caused by equipping without checking if the pet is available.
[Lance]
* [Fixed]:
- Latest client support completed! [Lance]
* [Fixed]:
- Missing #include for cbasetypes.h in login server SQL.
- Logic errors in run_script [Lance]
* [Added]:
- Partial support for latest login packet. But it seems to have a new security
module. [Lance]
2006/05/30
* [Improved]:
- Fake NPC interface to use real NPCs.
- Scripting interface to restore and save sd->npc_id. [Lance]
* Added function pc_check_skilltree for checking if you unlocked new
tree-skills when raising non-passive skills. [Skotlex]
* Fixed flee/hit calculation in status_calc_bl to account for bonuses from
the base status. [Skotlex]
* [Fixed]:
- Compatibility problems in login.c [Lance]
* Fixed pets ignoring can-act delays for skill usage. [Skotlex]
* [Added]:
- Mercenary.c in VS.NET 2005 project files
[Improved]:
- loginlog using unsigned long `ip` field.
(Please check for compatibility problems). [Lance]
* Fixed status_calc_pc not zero'ing ALL vars it should, allowing certain
bonuses (like effect-on-hit) to stack. [Skotlex]
* slaves inherit speed setting will now work regardless of whether the
slave or master has the MD_CANMOVE mode bit. [Skotlex]
* Call Slave now invokes slaves on a 5x5 area around master. [Skotlex]
* AL_TELEPORT will fail when used by slave mobs. [Skotlex]
* Added NPC_ENERGYDRAIN, NPC_MENTALBREAKER to the list of undodgeable
attacks. [Skotlex]
* Fixed status_damage not setting your HP to 0 when you died [Skotlex]
* Fixed the pcbonus2 warnings using the wrong value before printing the
invalid Element error. [Skotlex]
* Fixed underflow issues when calculating dmotion. [Skotlex]
* Fixed Absorb Spirit Spheres [Skotlex]
* Added battle_config min_chat_delay (default 0, battle/client.conf)
specifies in ms what is the min delay between player sent chats
(whisper/global/party/guild). Messages that exceed this threshold are
silently ignored for now (perhaps need to add a "DON'T SPAM" reply to the
player?) [Skotlex]
* [Fixed]:
- signed/usigned problem in sprintf and fscanf @ mercenary.c [Lance]
* Rewrote/cleaned up @petfriendly. [Skotlex]
* Cleaned up final part of status_calc_pc (flags 2/4 do not exist) [Skotlex]
* Updated attr_fix_table reading code to account for ELE_MAX (will
correctly read bigger elemental tables if ELE_MAX is changed) [Skotlex]
* Aggressive mobs will now use battle_check_range rather than mob_can_reach
to decide whether to lock-on or not to a target within sight-range. [Skotlex]
* Added warnings in mob_readdb when the mob's element is invalid. [Skotlex]
* Added error messages in pc_bonus* functions when an invalid element is
passed to the relevant bonuses. [Skotlex]
* [Optimized]:
- clif_specialeffect to use the enums.
[Improved]:
- buildin_specialeffect and buildin_specialeffect2 to accept effect area
definition. [Lance]
* [Added]:
- Visual Studio .NET 2003 includes for mercenary.c [Lance]
* Removed the on-die specific code from unit_remove_map and placed it on
the corresponding *_dead functions. unit_remove_map should never assume the
char died, it is just a "remove from map" function. [Skotlex]
* Updated status_damage to handle the general death code (clearing status
changes, clearing skill related data, sending death packet, etc). The
return value from the *_dead functions will tell it what to do or not with
the object (death aborted, clear it from map/memory, etc) [Skotlex]
* Cleaned up pc_dead to take advantage of the fact that status changes are
not ended until after the function. [Skotlex]
* Disabled ontouch npcs triggering on hidden/chase-walk characters.
[Skotlex]
* Updated/adapted current Homun code to use the status_data update.
[Skotlex]
* Updated map-server Makefile to compile mercenary.* files. [Skotlex]
* [Fixed]:
- Pets attacking even master is dead. [Lance]
* Fixed battle_calc_weapon_attack damage capping damage to a minimum of 0
(negative values should be allowed when attack is absorbed by target's
element) [Skotlex]
2006/05/29
* [Fixed]:
- Missing ';' in item #4358 [Lance]
* [Fixed]:
- Missing maps in map index database. [Lance]
* [Fixed]:
- Battle mechanics in battle_check_target [Lance]
* [Fixed]:
- Typo in mob_dead causing crash. Thanks to reddozen and his gang for testing.
[Lance]
* Cleaned up friend list saving and fixed loading of friends.txt file
(char-txt) [Skotlex]
* Added the Arunafeltz maps, not tested yet [Playtester]
- someone with an up-to-date client should test them
* Fixed pc_gainexp resetting your exp to 0 rather than adding it in...
[Skotlex]
* Corrected aspd calculation code to avoid negative overflows. [Skotlex]
* Fixed battle_check_target check on BCT_ALL to check versus BL_CHAR
instead of BL_PC and BL_MOB [Skotlex]
* [Fixed]:
- Declaration of int map_getcellp(struct map_data*,int,int,cell_t); [Lance]
* Removed Undead being immune to poison status. [Skotlex]
* Removed speed penalty from SC_SKA [Skotlex]
* Fixed SC_SPURT triggering on Soul Linkers. [Skotlex]
* SC_DODGE won't be dispelled on death now. [Skotlex]
* [Fixed]:
- pc_follow_timer possible triggering crash.
- pc_reg_received to use battle_status.hp instead of status.hp
[Added]:
- macro map_id2index for non-cyptic mapid to mapindex conversion. [Lance]
* Added a division by zero check in mob_dead to prevent the (impossible)
case where a mob dies with received damage of zero. [Skotlex]
* Modified skill_get_range2 to return range 9 for skills with range 0 for
Non-Players. This usually signals Self skills, and mobs/pets should be able
to use them in other characters. [Skotlex]
* Optimized a bit the SC_PROVOKE code (to use val3/val4) [Skotlex]
* Fixed draining when the amount drained is negative (invoke zap rather
than heal) [Skotlex]
* Implemented GS_FLING as per the current skill description. [Skotlex]
* Fixed pc_readparam/pc_setparam to use battle_status.hp/sp rather than
status.hp/sp, fixes scripts reading the wrong Hp/Sp values [Skotlex]
* Added some missing SC_* entries on the initial listing (potion related
and speed up ones) [Skotlex]
* Fixed function declaration of map_getcellp() [Skotlex]
* [Fixed]:
- status.c:920: warning: 'mbl' might be used uninitialized in this function
- skill.c:6648: warning: 'matk_min' might be used uninitialized in this function
- skill.c:6648: warning: 'matk_max' might be used uninitialized in this function
- skill.c:2826: warning: 'sid' might be used uninitialized in this function [Lance]
* [Optimized]:
- Removed unused variable (account_id) in storage_guild_storagesaved.
* [Optimized]:
- Removed unused checks for unsigned data type and possible logic error for
char type (gcc treats char as unsigned). [Lance]
* [Fixed]:
- Relogging in with 0 HP didn't trigger dead event. [Lance]
2006/05/28
* Added functions status_revive, pc_revive and mob_revive to handle revival
(it doesn't handles player respawning, though). Fixed reviving @ commands.
[Skotlex]
* Added SC_BLADESTOP to the skill enum at the beginning of status.c (fixes
Bladestop causing an unknown status change message). [Skotlex]
* Fixed MSS_DEAD state skills not triggering. [Skotlex]
* Changed undeads to by default always sustain 100% of the damage from firewalls [MasterOfMuppets]
* [Fixed]:
- script functions that doesn't pass references, thanks to End_of_exam. [Lance]
* [Protected]:
- clif_parse_LGMmessage from possible hacks [Lance]
* Fixed unable to store n items into storage unless n was the total amount
of items you had. [Skotlex]
* Suppressed compilation warnings (unsigned and signed mismatches) [Lance]
2006/05/27
* Added structure status_data which holds status-related information (str,
agi, etc, speed, amotion, adelay, dmotion, weapon-damage, race, size, etc)
and weapon_atk structure with the weapon specific info (atk, atk2, element)
to be used by all combat structures (TODO: Homun needs to be updated to use
it). This in change involves a LOT of changes throughout the code and many
optimizations were done as well. Partial list (see svn changelog for complete
changes): [Skotlex]
- NOTE: Changes are substantial! I tested a bunch of stuff and all the
skills I changed the most, but it is possible there are unnoticed bugs
remaining to fix!
- Cleaned up TBL_PC, TBL_MOB, TBL_PC and mob_db structures to use status_data.
- Split damage received functions into pc_damage/pc_dead and mob_damage/mob_dead
- Added status functions to deal with damage and healing (status_damage,
status_heal, status_percent_change) and a bunch of defines for easier
handling of them (status_percent_heal, status_percent_damage,
status_fix_damage, status_kill, etc). Objects must be hurt/healed through
THIS, pc_damage/mob_damage most no longer be directly invoked!
- Rewrote and cleaned up battle_calc_misc_attack
- Merged config options pc_attack_attr_none, mob_attack_attr_none,
pet_attack_attr_none into attack_attr_none (type 4)
- Removed config options player_defense_type, monster_defense_type,
pet_defense_type in favor of weapon_defense_type
- Modified skill_calc_heal to take into account the MEDITATION bonus.
- Modified Slim Pitcher so it will work when casted by non-players. Will
now also work with SP-healing items.
- Rewrote Freedom of Cast code to use function status_freecast_switch to
switch adelay/speed when cast begins/ends.
- Modified Magic Power to store amplified MATK/MATK2 in val3/val4 for
easier updating when used in conjunction with ground skills.
- Fixed Asura Strike being usable from within a combo regardless of combo skill.
- Added status_calc_bl which does status-change related calculations using
as base the base_status of the bl object and the SCB_* flag passed. This is
invoked on status changes, and status_calc_pc will no longer be invoked
(which results on much faster status-change calculations).
- pc_clean_skilltree will now also remove item-granted skills.
- Learning skills will now only invoke status_calc_pc when the skill is passive.
- Cleaned up pc_check_base/job_lvup to only invoke the lv-up related
packets and functions ONCE regardless of skill-levls earned.
- Cleaned up pc_ regen related functions.
- Made player-sprite mobs have item pickup animation and walkdelay when taking items.
- Clones will copy a player's base status rather than battle status (so
status-change alterations are not cloned)
2006/05/26
* Part B of the homunculus code. [blackhole89]
While most of the homunculus handling functions are in now, it still lacks
code required for players to create it.
Given I haven't screwed up, you could master yourself one through the DB though.
* Fixed crashing in mob.c [Lance]
* Patches to allow everything to work right. + 1 more sample script. [Lance]
* Mob control engine tested 99% working so far. [Lance]
* Change scripting engine's NPC scope vars to dot (.) style.
* Improved and (should be fully) fixed the mob control engine. [Lance]
* Fixed typos in char.c [Lance]
* Rewrote fame rank lists system to reduce char-server load, as requested by
Skotlex: now it has a copy of those lists, and updates only the proper one
when needed instead of rebuilding all from saves everytime (which required
to always save the character before rebuilding the lists) [DracoRPG]
- Note it hasn't been compiled nor tested with SQL, please do it for me
2006/05/25
* Simplified ASC_BREAKER by making it a BF_WEAPON attack with an additional
int-based damage component (which is added right before elemental
modifiers) as described by AuronX. Pending further refining. [Skotlex]
* Resolved differences between Stable/Trunk msg_athena.conf. [Lupus]
Fixed atcommand @request MSG numbers accordinly.
On adding new MSG strings, plzm reserve them in STABLE msg_athena.conf, too
* Added NoVending mapflag. You may disable vending in the streets [Lupus]
* Increased capacity for Account Variables to 64 [Skotlex]
* Reverted Intravision implementation to that of stable's. [Skotlex]
* Corrected Login Server taking it's first argument as both login config
and lan config. [Skotlex]
* Fixed mob control commands.
* Fixed memory leak in scripts (again). Still have a few lying. [Lance]
2006/05/24
* Fix to the slave AI problem. [erKURITA], by [Skotlex], reported by Niktout.
* Item sharing now shares the same rules as exp sharing (no sharing when
dead, or idle, etc) [Skotlex]
* Fixed summoned slaves being able to cast onspawn summon-skills (slaves
aren't supposed to be able to call minions) [Skotlex]
* The clif_skill_poseffect packet will not be invoked in Snap unless the
skill was successful. May fix the client-position lag. [Skotlex]
* Merged item_db.sql from stable (the one from stable was more recent than
the one of trunk...) [Skotlex]
* Corrected SL KA* spells not working on other Soul Linkers. [Skotlex]
* Corrected a pair of incorrect sql query parsing logic in the login-sql
ban request packet. [Skotlex]
2006/05/23
* Corrected mob angry mode, now it only "restores" itself after being hit
when the mob has no target within their range of sight rather than on
picking a new target. [Skotlex]
* Fixed wedding sprite where it would stay active after unequipping. [Zido]
* Some cleanup of run_script, should fix the memory leak there. [Skotlex]
* the charname request hack message has been downgraded to only include
GM-invisible characters. [Skotlex]
* corrected clif_charnameack to send negative ID when a disguised player
asks for it's own disguised name. [Skotlex]
* Cleaned up the disguised target-id checks taking into considering that
the only character that sees a negative ID is the same disguised character.
[Skotlex]
* Modified battle_calc_weapon_attack to use new flags pdef/pdef (pierce
defense), Investigate and Icepick will now use the final def/vit-def values
rather than the base ones. [Skotlex]
* The move-enable condition checks for skills are now checked for only when
on skill use, not at cast-end time. [Skotlex]
* Corrected clif parse name request failing on disguised characters [Skotlex]
* Corrected Soul Drain draining from all non-ground-based skills including
non-magic attacks. [Skotlex]
* Corrected pc_setoption to change the option and then change class.
changing option-wedding will automatically convert the view-class as well.
[Skotlex]
* Corrected the 15% drop rate increase when killing higher level mobs in
pk-mode triggering for all mobs with lower level than yourself. Thanks to
Vayu. [Skotlex]
* Fixed typo (this time it's not my fault) in script_reload() clearing the same
db each time o_o [Lance]
* Fixed sleep command. [Lance]
* Added 'setd' support for local NPC scope (') variables. [Lance]
* [Scripting Engine Update] New variables are ready to be used. [Lance]
2006/05/22
* Updated skill_delayfix to return 0 for mobs since they have no skill
delay other than the one specified in mob_skill_db [Skotlex]
* Corrected the 20 lvl diff 15% exp bonus on pk_mode servers. Thanks to
Vayu for pointing it out. [Skotlex]
* status_get_sc_tick will now use directly Stun's formula rather than
invoking the status sc chance once. [Skotlex]
* Fixed a possible null pointer in script command misc_effect [Skotlex]
* Modified Investigate to take into consideration final def/vit-def rather
than base values for damage adjustment. [Skotlex]
* WARNING: New scripting system contains memory leak
TODO: Free all scripts using script_free_code() instead of old methods. [Lance]
* Excluded idle and auto-trade party members from TK_POWER list. [Lance]
* Fixed compilation errors.
Tidy up jobmaster for easy debugging. [Lance]
2006/05/21
* Part A of the Homunculus code.
This only features the structures, status_* and clif_* (packets) and is
not functional yet in any conventional way, but doesn't interfere
with present functionality either.
Main purpose is helping me to keep my work organized. [blackhole89]
* Fixed the "fake" mute status bug. [Zido]
* Speed up array size calculation and deletion. [Lance]
* Player must learn the skill before doing auto-spell [Lance]
* Exploit prevention in clif_parse_NpcStringInput [Lance]
* SC_SPEARSQUICKEN -> SC_SPEARQUICKEN normalized enum name [Lupus]
* Thanks to damirych & Falcon for [2006/04/30] STEAL skill [Lupus]
2006/05/20
* grfio_final moved back if any of GRF overriding is enabled so servers
with such configuration will not have different values after reloading. [Lance]
* jA1983 script.c buildin_menu fix. Thanks to End_of_exam. [Lance]
* Abit of alterations to login-server. [Lance]
2006/05/19
* Minor unsigned/signed alteration in pc_additem to shut the compiler up. [Lance]
* Small change in pc_additem that could be fixing the current bug with new
items not getting added. [Skotlex]
* Fixed loginlog definition in main.sql, thanks to Tempesta [Skotlex]
* Likely fixed the mob-skill random picking behaviour causing infinite
loops sometimes. [Skotlex]
* Modified mobskill_use behaviour to pick a random starting point and check
skills from that, rather than always checking from first to last. Fixes
skills with high priority blocking skills lower down in the list from
triggering. [Skotlex]
* Updated mob ai behaviour so that mobs use IDLE state skills when their
current target cannot be reached for melee fighting. [Skotlex]
2006/05/18
* Added 5 config settings to adjust damage in pk-mode servers (misc.conf)
[Skotlex]
* Fixed mob_max_skilllvl being capped to 11! [Skotlex]
* Rewrote/cleaned up several functions in storage.c [Skotlex]
* Optimized pc_additem comparisons to account for items with more than four
slots. [Skotlex]
* Updated clif.c to enable retrieval of items from cart/storage while
trading. Exception is retrieving items from the cart while vending.
[Skotlex]
- The reasoning is that an ongoing trade will not get "corrupted" if you
earn items before it is commited (only if you lose items from your
inventory), and it is an annoyance when you realize the stuff you want to
trade is on the cart/storage.
* skill reiteration code now does not checks for the trigger-area of the
skill in the case of non-players, which means mobs can now place traps in
cells adjacent to each other. [Skotlex]
* Applied an experimental weather code that should lower bandwidth usage to
near-none, which's only disadvantage should be the weather not clearing out
until moving to another map (even when the mapflag is removed from the
current map). Please test and report if there's any anomalies with it.
[Skotlex]
* NPC_AGIUP will now give movement boost of 50% [Skotlex]
* Fixed WZ_WATERBALL number of hits when used by non-players. [Skotlex]
* MO_BODYRELOCATION will send the slide packet with the actual src's
coordinates rather than selected tile. [Skotlex]
2006/05/17
* Modified mob_can_changetarget to return true always when the new target
is the provoked-by character. Fixes provoke not making the mob change
target when it already is locked on another player. [Skotlex]
* Added check to clear previous skill when combo time ends. Should fix TK
Rankers being unable to initiate a combo with the same kick their previous
combo was finished with. [Skotlex]
* Power Up and Agi Up now increase Hit/Flee by 20%/lv [Skotlex]
2006/05/16
* Modified "hide woe damage" to send the number of hits rather than 1 as
damage Because when the damage is less than the number of hits, the client
will display MISS. [Skotlex]
* Fire Pillar will now do 200%MATK damage per hit when level is >10.
[Skotlex]
* Blood Drain always hits now. [Skotlex]
* Fixed Mob Area Skills not updating their use-time (rendering their skill
delay useless) [Skotlex]
* Search free cell will now skip picking the center-tile as target
location. Will prevent slaves from walking on top of their master, or mobs
placing stuff right under themselves with the "around" target conditions
among other things. [Skotlex]
2006/05/15
* Small changes to the skill.conf
- Monsters now can place ground skills on top of each other by default
- Land_Skill_Limit format changed and set to "Only Players" by default
* When reading mapflags, when a map is set to be pvp or gvg, the other will
be turned off (disables pvp mapflags in gvg maps for pk-servers) [Skotlex]
* Firepillar's damage per hit is now 100% MATK (rather than 20%) when the
skill level is above 10. [Skotlex]
* Sorted out the item_data structure, getiteminfo should work correctly
now. [Skotlex]
* KA* skills can now be casted on other Soul Linkers as well without the
Spirit requirement. [Skotlex]
* Soul Drain will now show the SP drained regardless of drain display
settings. [Skotlex]
* SC_COMBO state will now end in skill_attack rather than
skill_check_condition (as it is required there to apply damage bonuses
based on combo-casted skills) [Skotlex]
* Fixed Option_Wedding in const.txt (0x1000 won't work, it has to be 4096)
[Skotlex]
* Fixed the nocast flag 2 (not usable in pvp) returning true in pk-mode
servers. [Skotlex]
* When removing a castle's owning guild, the char servers will erase the
guardian data now. [Skotlex]
* Changed the behaviour of immobile mobs when they can't chase their
target. Rather than using a longrange skill and then unlocking, they will
use an attack/angry state skill and then unlock. [Skotlex]
* Some adjustments of how disguising + gm-hiding work together. [Skotlex]
* Fixed clif_GlobalMessage being the exact same function as clif_message
(the first should send to ALL_CLIENT and the later should send to
AREA_CHAT_WOS). Should fix globalmes script command. [Skotlex]
* Added SC_BLADESTOP to the switch listing in status_change_start [Skotlex]
* Characters in vending are now always considered "idle" if the
idle_no_share setting is active. [Skotlex]
* Players with OPTION_INVISIBLE should not be sent to clients. [Lance]
* Remaining fixes for item scripts. [Lance]
* Added NPC event deprecated warnings to ease debugging old scripts. [Lance]
2006/05/12
* Supplied fake NPC ID in sd->npc_id for item scripts. [Lance]
* Bugfix on fake npc [Lance]
* Fixed mob_once_spawn not working for non-random coordinates. [blackhole89]
* Reverted again the change that stuns the caster on Ske, Ska, Swoo when
the target is a nonplayer (rather than always) [Skotlex]
* Modified mob_spawn_once so that coordinates -1,-1 are "random around the
player" while 0,0 are random around the whole map (regardless of whether
there's a player attached or not) [Skotlex]
* Knockback will no longer work on traps during woe. [Skotlex]
2006/05/11
* Fixed the definition of the KEY in the loginlog, thanks to TheUltraMage
[Skotlex]
* NPC_POWERUP and NPC_AGIUP now cause a increase in hit/flee (respectively)
of 40% per level. [Skotlex]
* Changed a bit the MAX_ZENY checks in trade.c to prevent overflows.
[Skotlex]
* Rewrote npc_selllist for a more proper-clean implementation. [Skotlex]
* Increased NPC_POWERUP's dex bonus to +25*lv [Skotlex]
* Moved TK_DOWNKICK's stun time from time to time2 [Skotlex]
* Added TK_TURNKICK's stun to splash-pushed mobs. Duration is 2secs (time2)
[Skotlex]
* Merged the code for Ska, Ske, Swoo together. Swoo stun duration is now 10
secs (reducable) if you target a mob that already has Swoo active. [Skotlex]
* Added the missing semi-comma from the upgrade_svn6533.sql file. Thanks to
Tanaous [Skotlex]
* Added back the missing code that substracts arrows when normal-attacking.
[Skotlex]
2006/05/10
* Changed the state of Asura back to explosionspirits, added a hardcoded
move_enable check when invoking Asura and NOT while in BladeStop or a
Combo. [Skotlex]
* Added back SC_XMAS to status.c, it got lost sometime during all the
previous reworkings. [Skotlex]
* Changed wedding costumes to use setoption rather than changebase.
[Skotlex]
* Modified setoption so that flag 1 or no flag adds an option, and flag 0
removes it. [Skotlex]
* Updated script_commands with the new behaviour. [Skotlex]
* Updated mob_db2.txt and mob_db2.sql to have only 10 drop slots rather
than 15. [Skotlex]
* Users are now able to use their own dnsbl servers (login_athena) [Zido]
2006/05/09
* Rewrote/cleaned up trade.c for a more clean trading implementation.
[Skotlex]
* Added @request commands, sends a request to all connected GMs of
lowest_gm_level or above as a whisper message. Defaults to gm level 20
users (UNTESTED). [Skotlex]
* Modified @commands to use Meruru's code which is faster and does a fair
attempt at tabulating the commands presented. [Skotlex]
* Updated SKA to return a random value between 0 and 99 each time
status_get_def is invoked. [Skotlex]
* Updated Making Arrow to not include unidentified items in the list.
[Skotlex]
* Reduced drop slots from 15 to 10. [Skotlex]
* Updated mob_db.sql with the current data. [Skotlex]
* Updated setoption script command to receive a second (optional) argument
flag. If the flag is 1, the option is added to what the player currently
has; likewise using flag 2 removes only that option. No flag (or any other
value) is the older behaviour of removing all other options and setting
specificly what is passed. [Skotlex]
* Updated script_commands information for setoption due to this change.
[Skotlex]
* Small fix in npc-created chat rooms to properly include the terminating 0
on the chat's event. [Skotlex]
* Fixed Fog of Wall's symmetry in respect to Misc attacks, they no longer
get reduced by 50% regardless of who is standing on the fog. [Skotlex]
* monster_ai&2 will now trigger the rude-attacked skill when the mob can't
move and the attacker is out of it's attack range. [Skotlex]
* Added missing icon for Joint Beat [Skotlex]
* Mob-search functions will now skip enemies with no exp/job_exp. [Skotlex]
* Treasure chests will now be excluded from the mob-drop listings
(@whodrops) [Skotlex]
* Fix on pc_skill which fixes overlapping when one gets more than one bonus
for the same skill. [Skotlex]
* Updated main.sql's loginlog table structure. [Skotlex]
* Added svn_update6533.sql to update the loginlog structure as suggested by
theultramage. [Skotlex]
* Cleaned up somewhat the implementation of BladeStop. [Skotlex]
* Fixed the head_bottom (pet-armor) position in packet 0x22c (walk packet)
when crafted for non-players. [Skotlex]
* Script commands sc_start, sc_start2 and sc_start4 will now start
regardless of sc defense of the target player (that is, they cannot be
avoided/blocked) [Skotlex]
* Fixed a possible counter overflow in attacked_count, changed the var size
to unsigned char since the code can handle the overflow now. [Skotlex]
* Multiple targets again reduces armor defense, as reported by Tharis.
[Skotlex]
* Increased dex bonus of NPC_POWERUP to +20 per level. [Skotlex]
* Fog of Wall's -50 hit reduction is now only for ranged attacks. [Skotlex]
2006/05/08
* Reverted the change that was making ES skills stun the caster always.
[Skotlex]
* Removed the fixpos packet which is sent whenever you are hit while moving
as Aegis doesn't sends this packet neither. [Skotlex]
* ES magic will now put the caster on stun for 0.5 secs regardless of
whether the skill-target is a mob or not. [Skotlex]
* Added function clif_party_join_info which sends packet 0x1e9 each time a
party-member joins. This packet (as redundant info as it has) should also
contain the field for "adoptability", but that needs to be coded in yet.
[Skotlex]
* Added clif_ParseAdoptRequest which does the basic adoption handling. More
checks and the reply packets still need to be coded in. [Skotlex]
* Happy State and TK stances won't dispel on death now. [Skotlex]
* Cleaned up combo-skill implementation, SC_COMBO is automatically ended in
skill_check_condition now. [Skotlex]
* Modified TK-ranker infinite combos to behave as described by AuronX.
Refer to his thread in the development section for details. [Skotlex]
* Made all Soul Link Spirit skills not be castable on self. [Skotlex]
* Changed rate of NPC status effect skills to 50+10*lv% base chance
(guessed, but better than 100% for all levels) [Skotlex]
* Changed max level of NPC status effect skills to 5 [Skotlex]
* Increased max number of tries to find a random spot in maps to 1000 since
some maps have so many non-walkable tiles it's hard to find one in just 100
tries. [Skotlex]
* status_set_viewdata will remove the Wedding Option status when you set a
class that is not wedding. [Skotlex]
* hide_gvg_damage will now send 1 instead of -1 as damage. [Skotlex]
* idletime will now be updated on attack-request, not on sit/standup
[Skotlex]
* Party members sitting will no longer be considered idle. [Skotlex]
* Removed SP_DISGUISE from the bonus list (onequip/onunequip should be used
with the disguise/undisguise script commands instead). [Skotlex]
* Moved Sharp Shooting display to the block with Auto-Counter (since that's
the other skill that can show critical as well) [Skotlex]
* Corrected some fields in the standing still packet (guild emblem being
stored as a Long when it should be Short) [Skotlex]
* Modified most fields of view_data to be unsigned shorts rather than
signed ones. [Skotlex]
* On-Touch NPCs will now make you stop walking when you trigger them.
[Skotlex]
* ShadowJump/JumpKick will make you land on the target's cell now.
[Skotlex]
* Fixed Kaahi triggering only once per skill duration. [Skotlex]
2006/05/07
* Fixed readme/changelog.html [KillerBox]
* Removed old logs. [Lupus]
TODO: 1. Add produce logging into PICKLOG 2. Replace map names with map index
2006/05/05
* Optimized clif.c clif_scriptmenu/input/inputstr to check for sd->state.using_fake_npc
before sending one (as it's not required to send twice).
* Reinitialize sd->state.using_fake_npc in clif_parse_LoadEndAck (for scripts that warps
players and still continues execution to work). [Lance]
* Updated item_db.sql to current. [Skotlex]
* Fixed a bug in @commands, most likely the reason some people were still
getting crashes. [Skotlex]
* Fixed @commands not showing the last available commands (unless the total
amount of commands is divisible by ten) [Skotlex]
* Added a npc-script-event cache to avoid looking up event-scripts every
time they need to be executed. Events cached are all those defined in
script_config (on login, logout, mapchange, death, kill, level up) [Skotlex]
- Since the cache holds direct pointers to the npcs/events, do NOT unload
the related NPCs or you'll get dangling pointer crashes. However,
@reloadscript will work fine.
- Set the etc_log to on to see a summary of npcs/events loaded for script
execution on startup.
* The Rest bonus activated by using /doridori while in rest should now
trigger with all the class tree (TK/SL/SG) [Skotlex]
* Fixed Kaupe always triggering when the one who was under Kaupe was a
player rather than the one attacking... [Skotlex]
* /doridori now won't double the HP/SP regen of TKs, it only activates
their "happy" state. [Skotlex]
* Added the -50 hit penalty when standing on Wall of Fog. [Skotlex]
* Uncommented the status_calc_mdef2 call in status_calc_pc. [Skotlex]
* Being in Enjoyable Rest state will now also trigger the HP/SP Time skills
(even if there's no other TK around). [Skotlex]
* Added battle config settings view_range_rate and chase_range_rate to
adjust the view-range and chase-range (range2/range3) of the mob_db without
having to manually change them (battle/monster.conf) [Skotlex]
* Kaupe now will only block all skills of players, for non-players, only
normal attacks can be missed. [Skotlex]
* Moved the Kaite spell-reflect code after the damage calculation function,
so the reflected damage is exactly the damage the original target would
have received. Will only trigger if the damage to be reflected is above 0.
[Skotlex]
* OnEquip scripts will now trigger on log-on. [Skotlex]
* Infinite Endure will no longer give mdef bonus. [Skotlex]
* Removed bInfiniteEndure bonus, Eddga card now uses onequip/onunequip to
start/end infinite endure. [Skotlex]
* Fixed Kaahi's SP cost per heal. [Skotlex]
* Now when walkdelay is set to 0, characters will stop walking when hit,
but will not have any walk delay. (previously setting walk delay to 0 would
not even stop characters from walking when hit) [Skotlex]
2006/05/04
* Some people think its sexy to declare variables after blocks of code. Fixed. [Zido]
* Fixed a possible infinite loop in skill_clear_unit_group [Skotlex]
* Some clean-ups in the mob_ai [Skotlex]
* Improved atcommand autoloot, now displays droprate in percents and notices
player if autoloot is already on or off. Also simplified the code [Harbin, Kain],
commited by erKURITA
* Added one grace range in the mob_loot search function which should fix
mob_can_reach failing when invoked with the same distance that distance_bl
returned. [Skotlex]
* Stun time for using ES magic on non-mobs reduced to 0.5 secs. [Skotlex]
* Eska is now usable on bosses. [Skotlex]
* Swoo will stun you if attempted on an already 'swooned' enemy. [Skotlex]
* clif_skill_failed will print out a debug line with the skill_id (since
the current null_po does not helps at all to fix it) [Skotlex]
* Applied TheUltraMage's suggested fixes to the grfio module. [Skotlex]
* Rewrote Kaahi to behave as it should. It will heal whatever amount of
damage accumulates in the time2 interval (500ms by default) after being
hit. [Skotlex]
* Changed skill_unit_move_unit_group to enable moving of all types of
ground-skills except ensembles (fixes warmth not following you) [Skotlex]
2006/05/03
* Kaahi now triggers every 500ms rather than on every hit (but it only
heals if in those 500ms an attack that would previously trigger Kaahi has
taken effect). In other words, it works just like before, except damage
gets "buffered" into 500ms slots. [Skotlex]
* Kaite, Kaute will now show a skill effect when they trigger. [Skotlex
* Knowledge will now only trigger if you logon to the memorized map, not
walk into it. [Skotlex]
* Corrected @whomap directly invoking msg_table[] rather than msg_txt()
[Skotlex]
* Guessed where the pet data goes in spawn packet 0x7c. This may be wrong
and not fix the pet issue, but I doubt it'll cause any problems that won't
be fixed by making the pet move. [Skotlex]
* Updated Charge Attack's state from none to move_enable. [Skotlex]
* Made tomahawk an NPC_SKILL so that it may not be plagiarized. [Skotlex]
2006/05/02
* Fixed standing up not really standing you up. [Skotlex]
* Moved battle_consume_ammo to the end of skill_castend_damage_id,
skill_castend_nodamage_id and skill_castend_pos2 rather than
battle_calc_weapon_attack. They will trigger when the player's arrow_atk
state is active and a ground skill was not invoked. It should fix all
issues with splash/ground skills consuming ammo per target rather than once
per skill use. [Skotlex]
* Added structure state to the ground skills, their fields are magic_power,
into_abyss and ammo_consume to indicate the states that were previously
stored in val3. [Skotlex]
* Implemented desperado as explained by Rockman-EXE. The skill-effect is
not showing up though, I'll need some logged packets to see what's missing.
[Skotlex]
* Removed the unit_can_move checks in skill cast-end, they should be
performed in skill_check_require when the skill's state is move_enabled.
[Skotlex]
* Changed extremity fist's state to move_enabled, the explosion spirits
check is now hardcoded. [Skotlex]
* Absorb Spirit Sphere now gives +10SP per sphere as per discussions with
Haplo. [Skotlex]
* Changed a <= into a < in pc_steal_item. This means drops with 0.01% are
impossible to steal unless you have at least 100% steal-rate (where steal
rate is dex - opponent dex + skill_lv*3% + 10%) [Skotlex[
* Cleaned up clif_parse_action_request to enable sitting/standing while in
shops, interacting with npcs, etc. [Skotlex]
* Kaite now works against all types of spells. [Skotlex]
* Kaupe now works against all skills. [Skotlex]
* Sanctuary now won't damage non-enemies. [Skotlex]
* Blessing now will always give you bonus stats even if you are wearing
undead armor. [Skotlex]
* Modified how Rogue's treasure works so that you get +1% to your steal
rate rather than +0.01% to the final rate. [Skotlex]
* Rewrote Warmth to use ground-skill-units, it should behave now like in
officials (implementation is not quite the same, but it should yield the
same effects while consuming less bandwidth). "Stacking", as it's called,
is possible now, but limited to eA's minimum timer skill interval (100ms).
[Skotlex]
* Modified NPC_POWERUP so that it gives +10 dex * skill level rather than
+5+lv to all stats (as explained by Playtester and Tharis on how the skill
behaves). [Skotlex]
* Allowed SG_FEEL memorizing the same map for all three. [Skotlex]
* SC_FUSION won't end when you die now. [Skotlex]
2006/05/01
* Added knockback when you run into a wall during running. However
position is not being refreshed on the client yet... [Skotlex]
* Fixed pc_disguise not allowing you to "redisguise". [Skotlex]
* Corrected a crash when sd is null in npc_event [Skotlex]
* After testing to make sure it works properly, I'm including
new battle conf options to limit MVP drops. [Reddozen]
* Removed OPTION_XMAS, it seems to not exist.... [Skotlex]
* Added SC_SMA to handle "ready to use SMA" status (rather than SC_COMBO)
since it has a visual effect to use. [Skotlex]
* Corrected the value of OPTION_FLYING [Skotlex]
* Using SG_FUSION ends Soul Linked effect. [Skotlex]
* status_setviewdata will set your option accordingly when the previous/new
view-class is wedding or xmas suit. [Skotlex]
* Added function map_foreachinshootrange, behaves the same way as
map_foreachinrange, but it also performs a "shoot-path" check before
invoking the function. Used in the skill subtimer function if
skill_wall_check is defined. [Skotlex]
* Fixed AL_WARP displaying "Unknown Area" selections when you don't have
all memo points used up. [Skotlex]
* Fixed alive_count not being reset on skill unitsetting, which leads to
some groups not being cleared once all their units expire. [Skotlex]
* Optimized Kaahi/Kahai, will now only show the amount of HP healed. Moved
to skill_counter additional effect so it may trigger even on miss. [Skotlex]
* SKA no longer blocks skills. [Skotlex]
* Optimized fake npc system. Added npc_checknear back to npc_buysellsel. [Lance]
|