-
Notifications
You must be signed in to change notification settings - Fork 2
/
ChangeLog
23510 lines (19478 loc) · 948 KB
/
ChangeLog
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
2021-10-8 Daniel Hawkins
* common/is_valid_types_gen.pl: Removed. Replaced by a Python script.
* common/is_valid_types_gen.py: New script to do the same thing is_valid_types_gen.pl used to do.
* common/Makefile.am: Make sure the build process points to the new file instead of the old one.
* configure.ac: Remove checks for perl from the build tree. We don't need it for most building [I think the docs might, but that's already a broken mess]
2021-10-04 Daniel Hawkins
* common/item.c: Allow for identified bows to print out firing rate information
when examined. Previously, the way to figure this out was simply trial and error.
Like weapon speed, lower is better. But, to be more precise, the firing rate
is printed as a float, using the 100/sp method fire_bow uses.
2021-08-18 Andreas Kirschbaum
* Do not print an object dump without error message.
2021-08-11 Daniel Hawkins
* types/common/light_object.c,
types/lighter/lighter.c: Refactor part of lighter.c into a function so it can be called by lightable.c
* types/lightable/lightable.c: New type apply function -- lightable objects can be lit via
fire magic, fire weapons, fire skills, or lighter objects. The method finds the appropriate one to use,
and allows for marking of the desired tool to override default.
* include/object.h,
common/item.c: Add the new type to the enum and array, respectively.
* include/typesproto.h: Add declarations for new common function and new lightable type apply function.
* server/ob_types.c: Initialize lightable type when the other types are all initialized.
* types/Makefile.am: Tell autotools to tell make to build the new type files.
2021-08-07 Daniel Hawkins
* common/object.c: Correctly handle when multipart objects are created through death_animation key.
2021-08-04 Daniel Hawkins
* plugins/cfpython/cjson.c,
plugins/cfpython/include/cfpython.h,
plugins/cfpython/cfpython_region.c: Clean up remaining Python 2.x/3 shims, and stand up
some infrastructure to do some 3.x shims.
2021-08-03 Daniel Hawkins
* plugins/cfpython/cfpython_object.c: Fix incorrect flag in setter for Identified attribute.
This fixes indefinite experience exploits with the dip command, since the resulting
water would be unidentified.
2021-07-26 Daniel Hawkins
* server/login.c: Don't allow a player to be created with a given name if there's an
unsaved player with that name already in the game.
2021-07-25 Andreas Kirschbaum
* doc/Developers/objects: Update section "NPC's Speak out".
2021-07-24 Daniel Hawkins
* types/spell_effect/spell_effect.c,
server/spell_effect.c,
doc/Developers/spells: Allow for auras to have a radius larger than 1.
2021-07-20 Daniel Hawkins
* socket/request.c: Prevent segfault from asksmooth commands asking for out-of-bounds faces.
2021-07-16 Daniel Hawkins
* types/gate/gate.c: Allow for unmoveable objects at the top of the tile with moveable objects below
to be handled correctly. Before it would fail to push a moveable boulder if there was rain above it,
for example. This change allows for the boulder to be moved despite not being the top tile, because
it is still the topmost moveable object.
2021-07-15 Daniel Hawkins
* common/item.c: Make describe_item() indicate when a weapon will bounce off walls when thrown.
2021-07-14 Daniel Hawkins
* common/artifact.c: Handle the reflecting flag from the artifacts file to allow for items that reflect
off walls when used, (e.g. a throwing hammer that bounces off walls)
* server/skills.c: Copy the reflecting flag from a thrown item to its in-flight counterpart.
* types/common/projectile.c: Fix the common projectile code to correctly reflect projectiles off walls.
2021-07-03 Daniel Hawkins
* socket/request.c: Set the name of the player object before calling apply_race_and_class(),
so that the call to esrv_new_player() in apply_race_and_class() uses the new player's name
instead of the previous player's name (or "dwarf" if no previous player).
2021-06-29 Daniel Hawkins
* common/is_valid_types_gen.pl: Fix attempt to load from nonexistant argument, causing all types
to be considered valid.
2021-06-03 Nicolas Weeger
* common/readable.c,
* include/object.h,
* server/knowledge.c: Allow monsters to be excluded from books and knowledge.
This enables eg god avatars to not be listed, and may be used to exclude big bosses.
2021-05-11 Nicolas Weeger
* include/global.h: Remove unused variables.
2021-05-06 Nicolas Weeger
* utils/crossloop.in: Display server start date in console.
2021-05-06 Nicolas Weeger
* server/c_misc.c: Remove line length limit for help files.
2021-05-05 Nicolas Weeger
* socket/info.c: Fix va_list not being reinitialized after formatting.
2021-05-01 Nicolas Weeger
* common/readable.c,
* test/unit/common/Makefile.am,
* test/unit/common/check_readable.c: Clean extra space in list with eg god descriptions.
2021-04-27 Nicolas Weeger
* configure.ac,
* include/modules.h,
* plugins/Makefile.am,
* plugins/cfrhg,
* plugins/cfrhg/Makefile.am,
* plugins/cfrhg/cfrhg.c,
* plugins/cfrhg/include,
* plugins/cfrhg/include/Makefile.am,
* plugins/cfrhg/include/cfrhg.h,
* plugins/cfrhg/include/cfrhg_proto.h,
* server/Makefile.am,
* server/init.c,
* server/modules/random_house_generator.c: Convert the 'random house generator' plugin to a module, disabled by default.
2021-04-27 Nicolas Weeger
* server/modules/cfcitybell.cpp,
* server/modules/citylife.cpp: Correctly unregister event listeners at close.
2021-04-27 Nicolas Weeger
* common/init.c,
* include/global.h,
* server/init.c: Allow modules to be enabled or disabled by default.
2021-04-21 Daniel Hawkins
* include/shared/newclient.h,
server/c_misc.c,
server/c_wiz.c,
server/knowledge.c,
server/server.c,
socket/info.c: Make draw_ext_info() and draw_ext_info_format() do i18n translation inside them, instead of
relying on the caller to do it. This makes adding strings to translations in the future significantly easier.
* server/player.c: Make calls to send_query() use a translatable string.
2021-04-21 Nicolas Weeger
* common/recipe.c,
* include/libproto.h,
* server/knowledge.c: Extract function.
* utils/cre/CREUtils.cpp: Fix icon and title of formulae nodes.
2021-04-20 Nicolas Weeger
* server/modules/citylife.cpp: Fix compilation on some systems.
2021-04-20 Nicolas Weeger
* server/Makefile.am,
* server/modules/citylife.{c,cpp}: Use a definition file instead of hardcoding positions and NPCs.
2021-04-20 Nicolas Weeger
* server/Makefile.am,
* server/modules/cfcitybell.{c,cpp}: Use a definition file instead of hardcoding bells.
2021-04-20 Nicolas Weeger
* configure.ac,
* include/modules.h,
* include/sproto.h,
* plugins/Makefile.am,
* plugins/citylife/,
* server/Makefile.am,
* server/init.c,
* server/modules/citylife.c,
* server/move.c,
* server/plugins.c: Convert the 'citylife' plugin to a server 'module'.
2021-04-20 Nicolas Weeger
* common/init.c,
* configure.ac,
* include/global.h,
* include/modules.h,
* include/sproto.h,
* plugins/Makefile.am,
* plugins/cfcitybell/Makefile.am,
* plugins/cfcitybell/cfcitybell.c,
* plugins/cfcitybell/include/Makefile.am,
* plugins/cfcitybell/include/cfcitybell.h,
* plugins/cfcitybell/include/cfcitybell_proto.h,
* server/Makefile.am,
* server/init.c,
* server/modules/cfcitybell.c,
* server/server.c: Convert the 'citybell' plugin to a server 'module'.
2021-04-20 Nicolas Weeger
* common/recipe.c: Allow erasing previously defined formulae.
2021-04-19 Nicolas Weeger
* common/treasure.c,
* include/libproto.h,
* test/unit/common/check_treasure.c: Removed unused function.
2021-04-19 Nicolas Weeger
* common/anim.c,
* common/holy.c,
* common/image.c,
* common/loader.l,
* common/readable.c,
* common/treasure.c,
* types/spellbook/spellbook.c,
* server/c_misc.c,
* server/c_object.c,
* server/shop.c,
* socket/image.c,
* socket/requestinfo.c: Remove unused variables.
2021-04-14 Nicolas Weeger
* include/global.h: Remove unused variable.
2021-04-13 Nicolas Weeger
* plugins/cfpython/cfpython_object.c: Fix permanent experience format string.
2021-04-10 Nicolas Weeger
* include/global.h,
* lib/config/settings,
* server/init.c: Remove unused 'dm_mail' settings.
2021-04-10 Nicolas Weeger
* common/init.c,
* include/config.h,
* include/global.h,
* server/init.c,
* test/toolkit/toolkit_common.c: Removed unused 'archetypes' and 'treasures' settings.
2021-04-07 Nicolas Weeger
* plugins/common/plugin_common.c: Fix variable type.
2021-04-06 Nicolas Weeger
* common/assets/Faces.cpp,
* include/Faces.h: Remove unused function.
* include/AssetsTracker.h: Documentation.
2021-04-05 Daniel Hawkins
* common/item.c,
socket/item.c,
include/shared/newclient.h,
types/book/book.c: Include support to display when a book has been read for experience.
The annotation "(read)" is appended when examining an item, and the client is given
a new flag to denote when the book has been read, so that it can properly show that
in the inventory and look windows.
2021-03-21 Nicolas Weeger
* lib/i18n/messages.fr,
* server/knowledge.c: Remove reference to 'writing' for knowledge, players don't need to know how to write.
Add color to messages. Add French translation.
2021-03-15 Nicolas Weeger
* common/assets/assets.cpp,
* include/libproto.h: Remove unused function.
2021-03-11 Daniel Hawkins
* random_maps/treasure.c: Set the level of a mimic based on map difficulty.
* types/mimic/mimic.c: Allow for linear scaling of mimic difficulty
based on the level of the mimic. Is calculated dynamically for use
with random maps (avoids having to define multiple arches for different
difficulty of mimics.
2021-03-03 Nicolas Weeger
common/Makefile.am,
common/artifact.c,
common/assets/ArchetypeLoader.cpp,
common/assets/AssetCollector.cpp,
common/assets/FaceLoader.cpp,
common/assets/FacesetLoader.cpp,
common/assets/MessageLoader.cpp,
common/assets/PngLoader.cpp,
common/assets/TarLoader.cpp
common/assets/TreasureLoader.cpp
common/assets/assets.cpp
common/bufferreader.c
common/init.c
common/loader.l
common/recipe.c
include/ArchetypeLoader.h
include/AssetCollector.h
include/AssetLoader.h
include/FaceLoader.h
include/FacesetLoader.h
include/MessageLoader.h
include/PngLoader.h
include/TarLoader.h
include/TreasureLoader.h
include/WrapperLoader.h
include/bufferreader.h
include/global.h
include/libproto.h
{common/assets => include}/microtar.h
include/sproto.h,
server/init.c,
server/races.cpp: Use a memory buffer to read data instead of directly using a FILE.
2021-03-09 Nicolas Weeger
* server/attack.c,
* test/unit/server/check_attack.c: Fix confusion disappearing when fix_object() is called.
2021-03-09 Nicolas Weeger
* server/attack.c: Set no_pick on lighted objects if set on initial object.
This prevents using lightning to light up a non-pickable lantern then
picking up the lighted one.
2021-03-08 Nicolas Weeger
* common/map.c: Fix compilation warning by adding header include.
2021-03-08 Nicolas Weeger
* utils/cre/CREMapInformation.cpp,
* utils/cre/CREMapInformation.h,
* utils/cre/CREMapInformationManager.cpp,
* utils/cre/CREResourcesWindow.cpp: Rename map's 'level' to 'difficulty' for consistency.
2021-03-08 Nicolas Weeger
* common/map.c,
* include/map.h,
* utils/cre/CREMapInformation.cpp,
* utils/cre/CREMapInformation.h,
* utils/cre/CREMapInformationManager.cpp,
* utils/cre/CREResourcesWindow.cpp: Allow getting the map without a computed difficulty.
Display computed difficulty in CRE.
2021-03-08 Daniel Hawkins
* common/map.c: Prevent possible null pointer dereference in calculate_difficulty when
a generator does not have generator_limit set.
2021-03-07 Daniel Hawkins
* common/readable.c: Fix an issue in spellbook generation that occurred when
a spell type/path had no spells and it tried again to generate without clearing
the stale type/path.
2021-03-04 Daniel Hawkins
* common/map.c: Adjust auto-map difficulty calculation to not count a generated item
more times than it can be generated. Make sure we use the exp of the generated monster
rather than an archangel while we're doing it.
And most importantly, refactor the weighting for exp/tile calculation to use a
nonlinear formula, which rewards high exp monsters more than low-exp monsters for increasing
difficulty.
2021-03-02 Nicolas Weeger
* server/alchemy.c: Fix exploit with item power during alchemy.
* types/weapon_improver/weapon_improver.c: Fix wrong condition allowing a weapon
to be improved as much as wanted.
2021-03-01 Nicolas Weeger
* common/recipe.c: Log an error if a recipe references a non existing archetype.
2021-02-27 Nicolas Weeger
* include/libproto.h,
* lib/help/drop.en,
* lib/help/drop.fr,
* lib/help/pickup.en,
* lib/help/pickup.fr,
* lib/help/take.en,
* lib/help/take.fr,
* server/c_object.c,
* server/player.c,
* test/unit/server/check_c_object.c: Rework get/take.
See https://sourceforge.net/p/crossfire/patches/385/ for details.
Commands can now accept "#1" for index-based operation, or "*melee" for multiple items.
Help texts updated in consequence.
2021-02-27 Nicolas Weeger
* server/knowledge.c,
* server/skill_util.c,
* server/skills.c: Attempt skill-based identification as many times as there are items in a pile.
See https://sourceforge.net/p/crossfire/feature-requests/244/ for more details.
2021-02-27 Nicolas Weeger
* include/shop.h,
* server/plugins.c,
* server/shop.c: Rework bargaining experience. See https://sourceforge.net/p/crossfire/feature-requests/258/ .
2021-02-26 Daniel Hawkins
* common/events.cpp: include <string> for compilers that don't do that automagically.
Pointy had to mtdew for pointing out the error on IRC.
2021-02-25 Daniel Hawkins
* common/loader.l: Silence const qualifier warnings.
2021-02-25 Nicolas Weeger
* plugins/cfcitybell/cfcitybell.c: Add church of Valkyrie to Darcap.
* server/c_object.c: Fix crash when a player using 'search-items' is killed.
2021-02-18 Daniel Hawkins
* include/metaserver2.h,
socket/metaserver.c: Make ms2_info_mutex static and visible only in metaserver.c.
2021-02-17 Nicolas Weeger
* utils/mapper.c: Fix build instructions.
2021-02-16 Nicolas Weeger
* common/treasure.c: Remove unused parameter.
2021-02-13 Nicolas Weeger
* common/living.c: Don't display stat change message if stat is already max/min.
2021-02-12 Nicolas Weeger
* include/book.h: Remove unused field.
* socket/request.c: Correctly display face name when smoothing failure. Change log level to info.
2021-02-11 Nicolas Weeger
* common/treasure.c: Don't crash if the treasure list is empty.
2021-02-10 Nicolas Weeger
* plugins/cfpython/cfpython.c,
* plugins/cfpython/cfpython_archetype.c,
* plugins/cfpython/cfpython_map.c,
* plugins/cfpython/cfpython_object.c,
* plugins/cfpython/cfpython_party.c: Remove Python2 specific parts.
2021-02-10 Daniel Hawkins
* configure.ac: Change python3 check to use python3-embed.
2021-02-09 Nicolas Weeger
* plugins/cfpython/cfpython_object.c: Allow specifying 'None' for Object.WriteKey().
2021-02-09 Daniel Hawkins
* test/bugs/bugtrack/check_duplicate_skills.c: Add test to ensure we don't get duplicate skills
from character creation in the future.
* test/bugs/bugtrack/Makefile.am: Add new test to list.
2021-02-09 Nicolas Weeger
* server/knowledge.c: Fix comment.
2021-02-09 Nicolas Weeger
* include/sproto.h,
* server/attack.c,
* server/spell_util.c: Remove useless parameter of shuffle_attack().
2021-02-09 Nicolas Weeger
* server/skills.c: Display skill used to try to identify items.
2021-02-08 Nicolas Weeger
* include/sproto.h,
* server/init.c,
* server/quest.c: Load quest definitions at startup instead of waiting for a player.
2021-02-08 Nicolas Weeger
* common/assets/FaceLoader.cpp: Allow 'smoothface' in .face files.
* common/assets/FaceWriter.cpp,
* common/assets/assets.cpp: Write 'smoothface' in .face packed file instead of .arc.
2021-02-04 Daniel Hawkins
* doc/Developers/images: Apply patch #386. Docs now reference correct location for image_info.
2021-02-03 Nicolas Weeger
* common/events.cpp: Disable logging by default.
* server/knowledge.c: Fix alchemy attempt not working with items having nrof 0 (like icecubes).
Also don't consider invisible items as ingredients.
2021-02-02 Daniel Hawkins
* server/apply.c: Remove dubious call to object_free in scroll_failure
when spell failure effects are enabled.
2021-02-02 Nicolas Weeger
* common/assets/Archetypes.cpp: Correctly clear 'removed' flag before archetype update.
* types/power_crystal/power_crystal.c: Add space before the parenthesis in description.
2021-02-01 Nicolas Weeger
* include/sproto.h,
* server/init.c: Extract function.
* utils/cre/*: Add report on materials.
2021-02-01 Nicolas Weeger
* common/assets/ArchetypeLoader.cpp,
* common/assets/assets.cpp,
* common/init.c,
* include/ArchetypeLoader.h,
* include/AssetLoader.h,
* include/global.h: Add asset tracking.
* utils/cre/*: Allow mass edition of monsters.
2021-02-01 Nicolas Weeger
* common/Makefile.am,
* common/button.c,
* common/events.cpp,
* common/map.c,
* common/ob_methods.c,
* common/object.c,
* include/events.h,
* include/plugin.h,
* include/sproto.h,
* random_maps/main.c,
* server/apply.c,
* server/attack.c,
* server/c_chat.c,
* server/c_object.c,
* server/c_wiz.c,
* server/gods.c,
* server/login.c,
* server/monster.c,
* server/player.c,
* server/plugins.c,
* server/server.c,
* server/shop.c,
* server/skills.c,
* server/swap.c,
* server/time.c,
* server/timers.c,
* test/unit/common/stubs_common.c,
* types/common/common_apply.c,
* types/common/projectile.c,
* types/player_changer/player_changer.c,
* types/savebed/savebed.c,
* types/teleporter/teleporter.c,
* utils/bwp.c,
* utils/mapper.c: Extract event handling to common library.
2021-01-30 Nicolas Weeger
* common/assets/AssetCollector.cpp: Correctly handle invalid tar files.
* common/object.c,
* include/libproto.h,
* server/attack.c,
* server/time.c: Display death animation for used up generators too.
2021-01-29 Nicolas Weeger
* include/global.h,
* server/init.c: Remove unused variable.
2021-01-28 Nicolas Weeger
* common/assets/FaceLoader.cpp: Fix wrong condition in malformed files.
* types/food/food.c: Allow a spell effect when applying a special food, like potions.
2021-01-27 Nicolas Weeger
* server/spell_util.c: Change spell expiry message type to match those in change_abil().
* types/food/food.c: Correctly display resistance changes when eating a special food.
2021-01-25 Daniel Hawkins
* include/sproto.h: Remove function declarations that could be made static.
* server/c_misc.c: Change several functions only referenced in this file
to be static. A few were given forward declarations at the top when
declaration/use ordering would have been an issue.
2021-01-21 Daniel Hawkins
* server/c_object.c: Correctly handle icecubes when calculating available
weight for a container. This solves a bug where one icecube of any size
fit into a container as long as the container had enough room for the
15kg icecube.
2021-01-21 Nicolas Weeger
* utils/cre/CREFacePanel.cpp,
utils/cre/CRETreasurePanel.cpp: Fix performance issues.
* utils/cre/CREResourcesWindow.cpp: Fix displayed formula count.
* utils/cre/CREWrapperFormulae.cpp,
utils/cre/CREWrapperFormulae.h: Add more properties.
2021-01-20 Daniel Hawkins
* plugins/cfpython/cfpython_*.c: Fix implicit cast compiler warnings.
2021-01-20 Nicolas Weeger
* server/knowledge.c: Display the skill for the recipe.
2021-01-19 Nicolas Weeger
* lib/Makefile.am: Collect all assets in one run, remove files before.
* server/init.c: Allow multiple -pack-assets switches.
2021-01-19 Daniel Hawkins
* server/player.c: Modify how flags are set in order for skills to match
in object_can_merge on character creation.
* common/treasure.c: Make weight and speed-cap reductions on +/- x items
use the settings values for improvement scrolls for those effects.
Should not affect default settings.
* types/armour_improver/armour_improver.c: Use function in treasure.c
to perform the calculations.
2021-01-16 Nicolas Weeger
* common/assets/assets.cpp,
* common/recipe.c,
* include/assets.h: Optimize alchemy cost dump.
2021-01-14 Nicolas Weeger
Introduce C++14.
Allow the server to run without collecting files in "arch". It can
now directly run with the "arch" directory along the "maps" one.
Rewrite the collect mechanism to use the server itself and not an external script.
2021-01-14 Nicolas Weeger
* include/config.h,
server/c_misc.c,
server/hiscore.c: Apply hiscore patch by Preston Crow, slightly modified by myself.
2021-01-11 Nicolas weeger
* utils/cre/CREMainWindow.{h,cpp}: Add export of alchemy relationship to .dot file.
2021-01-08 Nicolas Weeger
* server/quest.c: Use media tags for quest information.
2021-01-07 Daniel Hawkins
* types/spell_effect/spell_effect.c: Drop unpaid items when word of recall triggers.
This prevents abuse of balms of return home in shops.
2021-01-06 Daniel Hawkins
* server/skill_util.c: Disallow use of unapid skill tools in use_skill()
2021-01-02 Nicolas Weeger
* plugins/cfcitybell/cfcitybell.c: Add the bell of Valkyrie's temple.
* server/player.c: Change message type for keys from 'attack' to 'item'.
2020-12-29 Nicolas Weeger
* socket/item.c: Don't send item's animation if FLAG_ANIMATE isn't set.
* server/quest.c: Add a client specific command to display quest information.
2020-12-21 Nicolas Weeger
* common/readable.c,
server/knowledge.c: Fix monster knowledge not correctly saved.
2020-12-15 Nicolas Weeger
* server/monster.c: Fix invalid call to fix_object.
* server/player.c: Fix reset of pickup mode at player death.
2020-12-14 Nicolas Weeger
* common/map.c,
common/path.c,
server/c_misc.c,
server/server.c: Use tilde (~) for player-unique map paths.
Patch https://sourceforge.net/p/crossfire/patches/384/ by Kevin Zheng.
2020-12-13 Nicolas Weeger
* server/monster.c,
test/bugs/bugtrack/Makefile.am,
test/bugs/bugtrack/check_883.c: Fix bug https://sourceforge.net/p/crossfire/bugs/883/
"Monsters will not apply weapons in their inventory", add relevant unit test.
2020-12-12 Nicolas Weeger
* common/artifact.c: Copy key-values from artifact to object.
* server/alchemy.c: Apply patch https://sourceforge.net/p/crossfire/patches/349/
by Daniel Ziem.
* plugins/cfpython/cfpython_object.c, plugins/common/include/plugin_common.h,
plugins/common/plugin_common.c: Mark 'CastAbility' as obsolete.
2020-12-10 Nicolas Weeger
* socket/request.c: add speech bubble to NPCs.
Patch by Kevin Zheng, slightly adjusted.
2020-12-08 Nicolas Weeger
* common/arch.c,
common/loader.l,
common/object.c,
include/object.h
server/attack.c: remove 'discrete_damage', unused.
* common/loader.l: use a larger buffer when loading artifacts to not wrap long messages.
2020-12-02 Nicolas Weeger
* random_maps/treasure.c: remove unused code.
* random_maps/treasure.c,
* include/random_maps/random_map.h,
* random_maps/random_map.c,
* random_maps/reader.l: allow style maps for chests found in random maps.
2020-12-01 Nicolas Weeger
* types/spellbook/spellbook.c: Fix invalid array indice leading to crash.
2020-11-28 Daniel Hawkins
* types/spellbook/spellbook.c: Make sure an unidentified spellbook at least tells you
what you can already see in the viewport, rather than "That is: " without a name.
* server/c_object.c: Prevent the flavor text for magic to appear when the item is not
yet identified.
2020-11-27 Daniel Hawkins
* server/skills.c: Make trapped doors detonate traps when lockpicked on the first attempt.
2020-11-23 Nicolas Weeger
* common/anim.c: change function prototype.
* server/attack.c: use a default "attack" anim_suffix for attacks. Apply
anim_suffix to monsters too.
2020-11-11 Daniel Hawkins and Kevin Zheng
* socket/request.c,
server/player.c: Make the handling to prevent createplayer command abuse
more robust. Also address some socket state issues while here.
And fix a segfault from incorrectly removing pl->ob->contr in create_player_cmd.
2020-11-08 Daniel Hawkins
* server/rune.c: Fix segfault when showing an unanimated trap.
2020-11-02 Daniel Hawkins
* plugins/citylife/citylife.c: Fix an off-by-one in the number of NPCs to spawn on
map load, and fix the location and inclusion of spawn points in northern Scorn.
Fixed NPCs loaded on map load from having their inventory drop when killed.
2020-10-23 Daniel Hawkins
* server/spell_util.c: Make no-magic tiles block magic before spells can be bungled.
2020-10-22 Daniel Hawkins
* server/player.c: Refactor code to remove confusion, poison, and disease on death
into its own function.
2020-10-21 Daniel Hawkins
* socket/request.c: Make sure to remove player's object if they send
createplayer for a character with a different name than the current one.
* server/c_object.c: Fix a nullpointer dereference when a skill tool lacks a
skill message.
2020-10-20 Rebecca Kelly
* types/spellbook/spellbook.c, server/c_object.c: display the description of
a spell or skill when examining an object that contains it such as a
wand, spellbook, or skillscroll. These descriptions are sent with the
SPELL_INFO message type so that clients can differentiate them from
their surroundings when colourizing.
2020-10-20 Rebecca Kelly
* types/spellbook/spellbook.c: spellbooks will now list their spell level,
casting skill, and paths in the detailed object name, e.g. "grimoire of
poison cloud (a fourth level sorcery) (paths: Missiles)", in much the
same way equipment will list its stats.
Since this information is now available in the object name, the message
telling you what spell a spellbook contains when you successfully read
it will appear only if you identified the book in the process of reading.
2020-10-18 Daniel Hawkins
* server/server.c: Add a message stating when initialization finishes.
2020-10-14 Daniel Hawkins
* server/shop.c: Add an event hook for when an item is bought.
* include/plugin.h: Add an event descriptor for the new buying event.
2020-10-10 Daniel Hawkins
* common/readable.c: Fix generation of book names for recipes whose product lack a title.
While here, add some more book name combinations.
2020-10-10 Daniel Hawkins
* server/spell_attack.c: Adjust handling of aggravation to prevent shenanigans and prepare it for
use as a legitimate spell.
2020-10-03 Daniel Hawkins
* server/c_wiz.c: Don't interpret blank lines in dm_file as malformed entries.
Prevent buffer overrun in `plugin command.
* server/c_misc.c: Use StringBuffer to fix buffer overflow from malicious/malformed bowmode command.
2020-10-02 Daniel Hawkins
* plugins/cfpython/cfpython.c: Set context->event to NULL when running python-based commands.
It was possible to segfault from it not being a valid address if malloc used
recycled memory.
2020-09-30 Daniel Hawkins
* server/player.c: Prevent check_pick() from processing on a non-player.
* server/skills.c: Prevent stop_jump() from calling check_pick() for non-players.
2020-09-19 Preston Crow
* server/commands.c,server/player.c: Add 'face' command to have the
player face a given direction without taking any action.
2020-09-17 Daniel Hawkins
* server/build_map.c: Disallow use of unpaid building materials.
Mentioned by Titus on the Discord/IRC a few weeks back.
2020-09-17 Preston Crow
* server/apply.c: Apply command: Pass through and honor '-a' and '-u'
flags for containers and add a new flag '-o' to fully open a container
in your inventory.
2020-09-17 Preston Crow
* include/global.h,lib/config/settings,server/init.c,socket/request.c:
Add a config option MIN_NAME to restrict very short account and
character names. It defaults to 1, and doesn't impact existing
accounts or characters, so it can be changed on existing servers
with no negative impacts.
2020-09-13 Rebecca Kelly
* types/spellbook/spellbook.c: change the order of the messages when you
successfully read a spellbook to make them read a bit better.
2020-09-10 Rebecca Kelly
* server/player.c: use object_can_merge() to deduplicate starting inventory.
This fixes an issue where all spellbooks of a given school were
considered equivalent by the deduplicator, resulting in most caster
characters only getting one spellbook when they should have gotten 2-3.
Note that players may still get fewer spellbooks if multiple books were
generated holding the same spell.
2020-09-08 Daniel Hawkins
* server/apply.c: Refactor class face apply to allow for custom class faces on races that
lack noclassfacechange.
2020-09-07 Daniel Hawkins
* server/monster.c: Don't allow monsters to pick up items that are on their spaces while being thrown.
This fixes an occasional "Thrown object had no map" error that resulted from monsters picking
thrown items mid-flight and the item not being transitioned back to it's non-thrown form.
2020-09-06 Daniel Hawkins
* common/button.c: Add check for an unpaid flag that matches the check_inv trigger's unpaid flag.
This allows for us to optionally look exclusively for unapid items, but by default exclude
unpaid items from the search.
2020-09-06 Daniel Hawkins
* server/plugins.c: Fix invalid pointer dereference when calculating perm_exp.
Turns out the other end of the plugin was expecting this, but I didn't do it right here.
2020-09-05 Daniel Hawkins
* server/skill_util.c: Add check for not unpaid when searching an inventory for a skill tool.
This makes it behave like it would it it were manually applied: it does not apply.
2020-09-05 Daniel Hawkins
* server/player.c,
include/libproto.h,
common/object.c: Add a function to retrieve an item from inventory that is not unpaid.
Used it to prevent unpaid keys from being used as if they weren't.
2020-09-01 Daniel Hawkins
* server/plugins.c,
plugins/common/plugin_common.c,
plugins/common/include/plugin_common.h,
plugins/cfpython/cfpython_object.c,
include/plugin.h: Move a reference to settings struct instance into plugins.c,
since it could not be seen on the plugin-side (at least when using GCC 9)
2020-08-30 Preston Crow
* server/skill_util.c: 'skills' command output is fixed-width format
with a '-l' option for long display with full perm exp information.
2020-08-30 Preston Crow
* types/teleporter/teleporter.c: Use subtype or other_arch to restrict
teleporters to specific object types.
2020-08-30 Preston Crow
* common/living.c,
common/loader.l,
common/object.c,
include/global.h,
include/object.h,
server/plugins.c,
server/skill_util.c: Change from tracking perm_exp to total_exp, so any
rounding is done when it is used, not as it is accumulated.
2020-08-15 Daniel Hawkins
* socket/sounds.c: Adjust sound volume based on proximity to player.
This makes things like the bullet squares in random maps more bearable.
2020-08-14 Daniel Hawkins
* server/server.c: Partially revert fix, since assumption that all speeds would
be positive did not hold for custom creatures on random maps.
2020-08-11 Daniel Hawkins
* common/living.c,
server/server.c,
common/loader.l: Load speed as positive number, and then set a minimum speed
for monsters. Fixes bug #854.
2020-08-06 Daniel Hawkins
* plugins/cfpython/cfpython_object.c: Expose item_power to the python API as a R/W value.
* common/living.c: Add code to handle giving experience to weapons, so that we can handle weapons that get stronger over time.
2020-01-16 Daniel Hawkins
* socket/loop.c: Replace assertion of nonnull cmd in handle_cmd with a check
that rejects the null command but keeps the server running.
2019-12-29 Daniel Hawkins
* common/artifact.c: Reduce severity of artifacts with no chance to debug.
There are use cases where no artifact chance makes sense.
They can be obsoleted, craftable, quest items, or anything else that shouldn't
appear in random loot.
2019-12-05 Daniel Hawkins
* server/monster.c: Reduce calls to monster_compute_path.
2019-12-04 Daniel Hawkins
* socket/request.c: Reduce dereferences in draw_client_map2.
2019-12-03 Daniel Hawkins
* common/los.c: Reduce recursion overhead in set_wall() by checking to see if the tile has already been set.
* include/sockproto.h: Remove draw_client_map2. It was only used in request.c
* socket/request.c: Make draw_client_map2 a static function.
2019-12-01 Daniel Hawkins
* common/los.c,
server/player.c,
server/c_wiz.c,
include/libproto.h: Adjust some trivial cases of los calculations to use player structure directly.
* socket/loop.c: Add detail to message indicating a tick took too long.
2019-11-30 Daniel Hawkins
* lib/artifacts: Add an artifact for new kite shield arch. Requires r21039.
2019-11-29 Daniel Hawkins
* lib/artifacts: Remove horn of sirens for artifact list, since it is a god-given item.
Fixes Bug #861.
2019-08-11 Daniel Hawkins
* lib/artifacts: Add artifacts for white/black leather cloaks.
* lib/formulae: Add formulae to craft white/black leather cloaks and leather armour.
* common/recipe.c: Add check handling for when one recipe is done with a cauldron and
another using a tool and both use the same ingredients.
2019-04-22 Rick Tanner
* server/spell_util.c: Patch #357 Balancing changes to the summoning branch
Failed summons via Summoning skill no longer cost spell points.
2019-03-15 Daniel Hawkins
* common/arch.c: Dynamically generate is_type_valid().
* common/is_valid_types_gen.pl: Dynamically generate is_type_valid().
* common/Makefile.am: Add build rules to dynamically generate is_type_valid().
(Patched with a non-defective version on 2019-03-20)
2019-01-03 Daniel Hawkins
* server/skills.c: Fix encumbered throw logic to penalize high encumbrance
instead of reward it.
2018-12-31 Daniel Hawkins
* utils/crossloop.web.in: Make SRCDIR be determined on the fly.
This reduces the number of variables that need to be changed before use.
* common/readable.c: Add more book titles.
2018-12-30 Daniel Hawkins
* server/player.c: Simplify melee weapon pickup logic, since tables and chairs
haven't been weapons since 2011.
2018-12-24 Daniel Hawkins
* server/c_object.c: Fix "gods...retrieves" to agree in plurality.
* plugins/cfcitybell/*: Refactor city temple bell event to be its own non-Python unit.
* plugins/Makefile.am: Add the new independent citybell plugin to the build tree.
* configure.ac: Add config rules to allow for the city bells to be disabled.
2018-12-23 Daniel Hawkins
* common/links.c: Better utilize the calloc function to set the dynamic allocated
lists to 0 as it is allocated.
* socket/request.c: Rewrite spell_client_use to use a switch statement instead of ifs.
2018-12-22 Daniel Hawkins
* server/hiscore.c: Adjust i+1 followed by i++ to be ++i;
(Reverted due to out-of-bounds error w/ optimization by ryo_saeba on 26 Dec)
2018-10-28 Daniel Hawkins
* common/living.c,
common/artifact.c: Make items that have the confused flag set confuse the wielder.
* lib/artifacts: Add a helmet of Confusion to utilize the new item-sourced confusion.
2018-10-24 Daniel Hawkins
* common/readable.c: Make text from the messages file not get split at buffer boundaries.
* server/player.c,
common/living.c: Make dragon ability gain levels specified in magic field in treasurelist.
2018-10-23 Daniel Hawkins
* common/readable.c: Add "illuminated text" as a religion book name.
* server/c_object.c: Refactor a loop through the player's inventory to better use the op->contr->mark pointer.
2018-10-22 Daniel Hawkins
* random_maps/style.c: Remove superfluous use of buffer and snprintf.
* include/global.h,
common/loader.l,
common/init.c,
common/arch.c: Remove ::warn_archetypes and make loader use try_find_archetype.
* common/recipe.c: Refactor recipe creation to use calloc instead of malloc.
2018-09-24 Daniel Hawkins
* types/Makefile.am: Add new mimic type file to build.
* server/ob_types.c: Initialize the apply hook for mimics.
* include/typesproto.h: Function prototype for apply hook initialization.
* include/object.h: Add MIMIC type and update max type number.
* types/mimic/mimic.c: Add code for MIMIC type.
* common/item.c: Add new type to the table defined here. Make it like container.
* random_maps/treasure.c: Make a very slim chance of a mimic replacing a chest when diffiuclty > 5.
2018-06-02 Daniel Hawkins
* server/time.c: Simplify the code for determining the placement of a new object in change_object().
2018-05-31 Daniel Hawkins
* server/attack.c: Fix double application of resistance for life stealing attacktype.
Also, add more complex algorithm for slowness to reduce >1 speed sometimes.
2018-05-28 Daniel Hawkins
* common/living.c: Simplification of bracer/force/armor AC/WC code in fix_object:
if we don't replace the best value, don't waste time subtracting and adding the same
value to the object.
Also, fix bug #823 by directly applying bracer ac and wc for serpentmen players.
* server/monster.c: Skip performance shortcuts in monster_compute_path for
multitile monsters.
2018-05-23 Daniel Hawkins
* server/attack.c: Make death attacks do no damage when the monster cannot
be affected by that death attack. Also make the order of the strstr check
work for multiple races defined on the creature, and only one on the weapon.
Make the strstr reorder on triple-damage calc, too.
* server/init.c: Change race loading logic so that a race defined in lib/races
is added to an arch's race field, rather than replace it. This allows for
"slay vampire" and other slaying fields that aren't a normal race to actually
function while still preserving summon lists for summon cult monster.
2018-05-21 Daniel Hawkins
* server/attack.c: Make death attacks relevant.
2018-05-19 Daniel Hawkins
* server/player.c: Load background music when moving through tiled maps.
2018-02-12 Daniel Hawkins
* server/monster.c: Refactor to reduce calls to ob_blocked by remembering prior blocked tiles from the same run.
This causes a small but noticable (~5%) reduction in overall pathing cost.
Do a quick check in monster_compute_path to ensure there are multiple ways the monster can move around
before attempting to go through the whole pathing algorithm. This yields significant performance improvements.
2018-02-11 Daniel Hawkins
* common/map.c: Refactor get_map_from_coord() to be iterative instead of recursive.
2018-02-03 Daniel Hawkins
* server/time.c: Improve change_object to handle multi-tile monster changes.
* test/unit/server/check_monster_change.c: Add unit test for changing monsters.
* test/unit/server/Makefile.am: Add new unit test to the build instructions.
2018-01-24 Daniel Hawkins
* server/login.c: Prevent memory leak of party_name on attempted login of a player with negative hp.
2018-01-23 Daniel Hawkins
* common/anim.c: Reduce calls to realloc on animation load. Handle failed realloc gracefully.