forked from WeiDUorg/weidu
/
README-WeiDU-Changes.txt
executable file
·2403 lines (2193 loc) · 118 KB
/
README-WeiDU-Changes.txt
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
Versione 232:
* Fixed blah blah blah for the benefit of non-English speaking people.
* Fixed a stack overflow when using COPY_EXISTING_REGEXP and you have more
than ~60000 files between your override and key.
* Lowercase the file name of binaries on Linux.
Version 231:
* Fixed a bug that caused DISABLE_FROM_KEY to delete random files instead
of the ones it was told to.
* SET_2DA_ENTRY now works correctly if the file begins with a newline and/or
carriage return (ex. IWD1/TotSC scrlev.ids).
* Fixed a regression that caused a patch macro to overwrite an action macro
by the same name (or functions, or vice versa).
* APPEND_COL_OUTER added.
* APPEND_COL can take optBackup.
* ADD_MUSIC, ADD_KIT also check for tob_hacks and/or GemRB when doing bounds
check.
* MOVE supports the directory-file-regexp construct in its from section.
* You can MOVE + (but not MOVE) a file to a file, even if the path contains
spaces. Don't use this feature without a real reason.
* Automatically set ~%WEIDU_EXECUTABLE%~ to the name of the currently running
WeiDU executable (E.G. C:\games\bg2\setup-mymod.exe or /usr/bin/WeiDU).
* AT_NOW ~VIEW foo~ uses xdg-open instead of firefox on Unix.
* MAKE_BIFF only biffs files that match against the search regexp.
Version 230:
* GAME_IS support for IWD-in-BG2.
* Fixed a case of missing @ reference killing the whole of WeiDU and not
saving WeiDU.log.
* MODDER OVERWRITING_FILE prints a message if you are writing to a file that
exists physically and/or in biffs.
* MODDER messages are also visible in SILENT mode.
* *_BASH_FOR lists files in ASCIIbetical order, rather than inverse order.
* *_BASH_FOR sets BASH_FOR_EXT.
* APPEND, APPEND_OUTER - works like COPY -.
* DISABLE_FROM_KEY prints to the log file the name of the files it removes.
* ACTION_ variants for GET_STRREF_*, TO_LOWER and TO_UPPER.
* GET_UNIQUE_FILE_NAME uses one IDS file per extension (so it can create
both __ABCD.CRE and __ABCD.ITM).
* Fixed MODDER being unitialized in old-parser mode.
* Fixed another bug with tolower.
* Spell(Myself,0) will print a warning in MODDER MISSING_RESREF mode.
* --change-log can figure out about MOVE, DISABLE_FROM_KEY or MAKE_BIFF.
* LANGUAGE ~path/with/%WEIDU_OS%variable.tra~ works.
* --rcmp-from partially implemented. Undocumented because its output is
unreliable.
* Synchronize the sample prompts.tra with the real string list.
Version 229:
* Fixed some errors decompiling DLG files.
* Some errors were printed but not logged.
* Fixed an error that was preventing '[S]kip all installed components' from
working.
* --print-backtrace prints the stack trace when an error is found.
* A number of changes made to the compile algorithm.
* DECOMPILE_AND_PATCH added; it works like DECOMPILE_*_TO_*, except that it
prevents you from forgetting the matching COMPILE_*_TO_*.
* REFACTOR_TRIGGER acts as REFACTOR_BCS_TRIGGER or REFACTOR_D_TRIGGER
depending on file type.
* Changed something I do not care about in ADD_CRE_EFFECT.
* FJ_CRE_VALIDITY doesn't break files when converting EFFV1 to/from EFFV2.
* MODDER MISSING_EVAL warns you if it thinks you forgot to use EVAL in some
places.
* Can set MODDER options via --modder command line.
* Fixed an inconsistency with backslashes on Linux.
* Added more configurability to FJ_CRE_VALIDITY and subfunctions.
* More fixes with sc#addWmpAre.
Version 228:
* If you have MODDER SETUP_TRA NONE, no warnings will be printed if a .tra is
missing.
* sc#addWmpAre can set area flags.
* [ SOUNDNAME ] will now strip the extraneous spaces.
* New macros and functions: RES_NUM_OF_SPELL_NAME, RES_NAME_OF_SPELL_NUM,
NAME_NUM_OF_SPELL_RES, GET_UNIQUE_FILE_NAME.
* ADD_AREA_TYPE tp2 action added.
* Failures inside REPLACE_EVALUATE now are propagated outside of it.
* WRITE_* in REPLACE_EVALUATE is really ignored.
* Tolower now works again on Windows.
* ADD_STORE_ITEM doesn't break the file when the store sells no items.
* DECOMPILE_DLG_TO_D uses SOURCE_RES and not SOURCE_FILE as a file name
(prints BEGIN ~FILE~ and not BEGIN ~FILE.DLG~, avoids breaking the
resulting file).
* --quick-menu can install one of the quick selections from the command line.
Can be combined with --force-(un)install, but only if the latter components
are defined in ALWAYS_ASK.
* Added some more code dumps to the docs.
* COPY_KIT works if there is a case mismatch between two of the kit-related
2das.
* WeiDU now translates between TriggerOverride() and NextObjectTrigger()
syntaxes (for use with ToBEx).
* REGISTRY_{BG1,BG2,PST,IWD1,IWD2}_PATH variables set (if available) to the
relevant game path as read from the registry, or to the empty string if
the game path is not available in the registry.
* KEEP_CRLF doesn't crash the installer if the file is zero or one byte
long.
* INDEX, RINDEX, INDEX_BUFFER, RINDEX_BUFFER added.
* sc#addWmpAre patches save games under mpsave as well as under save.
* Visibly fail if ADD_KIT or ADD_MUSIC are going out-of-bounds.
Version 227:
* REPLACE_BCS_BLOCK(_REGEXP) now parses variable names.
* REFACTOR_*_TRIGGER correctly clears the "Unfinished OR()" error message.
* QUICK_MENU added for allowing the modder to specify one or more 'default'
sets of components that can be installed in a single step.
* INSTALL_BY_DEFAULT is now stricter.
* ADD_ITEM_EFFECT will correctly skip magical headers.
* Can now [R]einstall Widescreen on BG1 and PST (regression).
* Can compile BAF files with numerical object.ids references (in particular,
can install Widescreen over Auril's Bane).
* APPEND(_OUTER) +, MOVE + don't create backups or are uninstalled.
Version 226:
* Add a space in the "Installing [XYZ]" message.
* LAUNCH_{PATCH,ACTION}_FUNCTION evaluates variables in the function name.
* ADD_AREA_REGION_TRIGGER now works again.
Version 225:
* Remove ARGS.*.TEXT and READLN.*.TEXT when doing temp_to_perm_uninstall.
* Fixed ADD_STORE_ITEM and REMOVE_STORE_ITEM invalidating STO files under
BG1.
* Can now specify header ID and header type when using ITEM_EFFECT_TO_SPELL.
* FJ_CRE_VALIDITY also enforces proper CRE order and EFFV2 effects.
* Can ADD_KIT if the kit is already present.
* STATE_WHICH_SAYS doesn't unload the mod's TRA.
* WARN tp2 action prints a message and sets the status to 'INSTALLED WITH
WARNINGS'.
* PATCH_FAIL, PATCH_WARN do the obvious thing.
* {PATCH,ACTION}_{MATCH,TRY,RERAISE} added.
* ADD_MEMORIZED_SPELL (and other CRE-altering commands) dones't break files
that were broken by DLTCEP.
* EXTEND_{TOP,BOTTOM} fails if the .baf file is invalid.
* COMPILE_BAF_TO_BCS and DECOMPILE_BCS_TO_BAF fails on invalid files (except
on known-invalid files).
* Fixed sc#AddWmpAre corrupting links on AR3000 on worldm25.wmp.
* A failure in COMPILE_BAF_TO_BCS doesn't break the parser.
* Build-in macros now compare against the current file size, not the size
reported when loading the file (notably, you can launch DELETE_CRE_EFFECT
twice on the same CRE file).
* 'Press ENTER to exit.' is always displayed if a component failed installing
(unless you explicitly use --no-exit-pause).
* Close biffs' file descriptors when re-loading the key.
* Write version info in the debug.
Version 224:
* Fixed a regression in ADD_PROJECTILE and friends.
* DECOMPRESS_BIFF added.
* sc#addWmpAre can patch worldm25.wmp or other worldmap areas.
* Variables set in the patching code in ADD_SPELL are now visible outside the
ADD_SPELL itself.
* LOG, PATCH_LOG added.
* When creating mymod/backup/*/{UNSETSTR,ARGS,READLN}.*, a textual
representation of the same file is created in <old file>.TEXT.
* Answers to *_READLN are logged to setup-mymod.debug.
* Failing to remove mymod/backup/0 isn't cause to stop installation.
* MOD_IS_INSTALLED works properly when restoring temporarily uninstalled
components.
Version 223:
* Fixed a bug that was breaking REPLACE_TRIGGER_TEXT_REGEXP in some
circumstances.
Version 222:
* Silence the irrelevant 'unable to unlink override/add_spell.ids' message.
* Fixed something or something else with multiple combinations of GROUPS.
* Fixed a regression that was corrupting CRE files.
* Patch expressions in INT_VAR are evaluated on the current buffer, not the
empty one.
Version 221:
* The Readme explains how to achieve a given ordering on GROUPs.
* REFACTOR_D_TRIGGER doesn't fail on a malformed input file.
* Changed the compile environment to use OVerbld. Let me know if WeiDU
suddenly doesn't work on a standard Win32 machine.
* ADD_CRE_EFFECT doesn't break files using EFFv1.
* IS_INSTALLED_AFTER added.
* ADD_SPELL warns if it's ignoring the constraint list (only in MODDER mode).
* ADD_SPELL checks spell.ids to avoid duplicating spells (see readme), and
provides a way to disable the older spell (if it's of different level) or
patch (rather than overwrite) the older spell (if it's of the same level).
* Added ADD_SCHOOL and ADD_SECTYPE to create a guaranteed-unique school /
secondary type.
* COPY_EXISTING_REGEXP GLOB should be faster at getting the list of files to
copy (I.E. before printing 'Copying and Patching XYZ files').
* COPY_EXISTING_REGEXP won't copy and patch the same file twice if it matches
against two given searchg regexps.
* ADD_STORE_ITEM accepts multiple lines in the BEFORE/AFTER clause.
* TP2_BASE_NAME variable added. If your tp2 file is mymod/setup-mymod.tp2,
TP2_BASE_NAME is set to mymod.
* Make TP2_FILE_NAME, TP2_BASE_NAME and COMPONENT_NUMBER available during
uninstall.
* If a mod being reinstalled fails its requirements, it will run its
AT_INTERACTIVE_UNINSTALL commands.
* Document FILE_IS_IN_COMPRESSED_BIFF.
* FILE_IS_IN_COMPRESSED_BIFF returns 0 (rather than failing) if the file is
not in any biff.
* Added Miloch's fj_are_structure PATCH FUNCTION.
* RESOLVE_STR_REF patch expression added.
* BIFF_IS_COMPRESSED patch expression added.
* SOURCE_BIFF patch added.
* COPY_TRANS (and the variants of ICT) will print a warning message if the
state you're *CT-ing into has unsafe actions for that variant of ICT
(for example, StartCutScene() in ICT2 or DestroySelf() with CT/ICT1 and no
throwback).
* ADD_ITEM_EFFECT can accept the type of header to which the effect should be
added to.
* LABEL/ID_OF_LABEL added.
* Create the cache directory if needed while decompiling .cbf files.
* --biff-get whatever.tis correctly creates the header.
* AT_(INTERACTIVE_)UNINSTALL_EXIT added. The actions are queued until the end
of the WeiDU run (similarly to how AT_EXIT works). Don't use without a real
reason.
* New translatable strings: "Would you like to display the readme? [Y]es [N]o"
@-1034, "Using Language" @-1035.
* Always reset eval_pe_warn to true (and thus not forgetting to print the
variable name if it is not found).
* GROUP accepts a constraint.
* IF/UNLESS added to various D actions.
* BIT0..31, WNL/LNL/MNL/TAB variables added.
* LAUNCH_*_FUNCTION INT_VAR a = a now works.
* LAUNCH_*_FUNCTION INT_VAR a STR_VAR b is a synonim for INT_VAR a = a
STR_VAR b = "%b%".
Version 220:
* Fix REFACTOR_*_TRIGGER so that it doesn't loop infinitely if the 'template'
string contains newlines.
Version 219:
* IS_SILENT patch expression added.
* WeInstall mymod/ will ignore the spurious slash.
* (AT var) is equivalent to @<value of var>.
* TRA_ENTRY_EXISTS added.
* REFACTOR_D_TRIGGER, REFACTOR_BAF_TRIGGER added.
* ADD_STORE_ITEM BEFORE ~itm1 itm2~ doesn't break the file if the store does
not contain itm1.
Version 218:
* Even more fixed with ADD_CRE_ITEM and PST/IWD2.
* Area files are loaded only with MODDER when compiling a script.
* Add a bunch of documentation.
* Remove/reword/substantiate 'do not use this' in the documentation.
* CLEAR_ARRAYS/CODES/INLINED/EVERYTHING to supplement CLEAR_MEMORY.
* Fixed a case with SUBCOMPONENT and DESIGNATED where [Q]uit did not work.
* If MODDER AREA_VARIABLES is active, check that the main variable string is
<= 32 characters.
* Swap CLASS and SUBRACE in IWD2 scripts.
* Don't touch colons in IWD2 scripts.
* Don't break SpellCastEffect in IWD2 scripts.
Version 217:
* Really fix EDIT_SAV_FILE now.
* ADD_CRE_ITEM works in PST and IWD2.
Version 216:
* Trim the useless null termination in EDIT_SAV_FILE.
* Do not reinstall FORCED_SUBCOMPONENTs if they're already installed and
the user is using [S]kip all.
* MOVE changes:
* If the destination file exists, MOVE reverts to COPY behavior to ensure
proper uninstallation. Either way, do not touch the same file with MOVE
and other commands in the same component if you can help it.
* can MOVE someDir someOtherDir (if someDir contains a subdirectory, a
warning is printed and the subdirectory is skipped).
* INTERJECT* IF_FILE_EXISTS target blah blah blah is now possible.
* DISABLE_FROM_KEY file.ext... added to "remove" one or more files from the
chitin.key.
Version 215:
* Fix embarassing MOVE regression.
Version 214:
* Default values in FUNCTIONs override the current value in the caller
environment (unless they're explicitly set via INT_VAR).
* ++var and --var added.
* The TOC was absent from the readme because of a stupid error.
* Removed the macros added in the last version (apparently they were broken).
* SET_2DA_ENTRY didn't properly fail if the 'row' parameter is == the number
of long-enough rows. No, I don't care if this breaks your mod - fix it.
* SPRINT foo #123 will not put the ~~s in the string.
* Renaming WeInstall to FastInstall adds automatically --safe-exit
--quick-log --no-at-view to the options.
* WRITE_FIELD offset blah blah will implicitly READ_FIELD offset THIS and
STHIS.
* README now only works if no component is installed. It used to be the
reverse :(
* SUBCOMPONENT group requisites are now enforced even when using --yes.
* WRITE_ASCII_LIST added.
* Fix a couple of backup-related files not being closed.
* Remove MOVE.* and MAPPINGS.* on uninstall. Remove ARGS.* and READLN.* on
interactive uninstall. Remove the component-specific backup directory if it
is empty. Remove the mod-wide backup directory if it is empty.
* --process-script implies --quick-log --skip-at-view.
* UNINSTALL_ORDER to customize the order of uninstallation. Miloch should
provide documentation.
* Can now Uninstall/Reinstall a component in --safe-exit mode, provided it's
the last component in the current WeiDU.log.
* tolower can now merge FoLdEr/SUBFolder and FOLder/subFOLDer. Shoot your
modder if you need this.
* Better ADD/REPLACE_CRE_ITEM for IWD2 and PST.
* --no-exit-pause doesn't give you "Press ENTER to exit.".
* CBif support under Linux.
* Tolower under non-BGII.
* MOVE somefile somedir now works (previously you needed to specify the full
filename).
* Print VERSION info during --change-log.
Version 213:
* --save-components-name added. It will reprint WeiDU.log, while outputting
the component names (useful if you're used to using --quick-log).
* --safe-exit added, will save weidu.log after it begins the installation of
every component. This means that quitting mid-installation will be
recoverable by the standard uninstall procedure, IF you don't use strange
stuff (assume that all mods that don't contain biffing and don't backup the
override will work correctly). Also, you can't uninstall (or reinstall)
anything while under --safe-exit.
* MOVE tp2 action added. Don't use.
* Fixed an embarassing bug detecting BG1 (&TotSC) via GAME_IS.
* ADD_CRE_ITEM works with IWD2 (again). I hate whoever coded that game.
* Skip README and LANGUAGE queries if any component is already installed.
* Added ADD_AREA_FLOOR_TRIGGER, ADD_AREA_INFO_TRIGGER,
ADD_AREA_TRANSITION_TRIGGER and ADD_AREA_CONTAINER functions.
Version 212:
* Various fixes to ADD_AREA_REGION_TRIGGER.
* Make %COMPONENT_NUMBER% available at uninstall time.
* Don't link to porn sites from the readme.
* --traify-comment doesn't break if you use ~~s to wrap your DO actions in
a .D file.
* Fix STRING_SET_EVALUATE when the given pe is an unescaped string.
* Fix REPLACE_EVALUATE to avoid loops.
* SAY offset #-1 does work. Don't you love 31 bit integers?
* Can STRING_SET recently added strings.
* EVALUATE_BUFFER -> EVAL.
* Compiling D files is now faster (fixed regression).
* GAME_IS: added CA, check are and not mve files.
* Will --change-log *.exe and *.key from ./, rather than the override.
* Fix zlib decompression issues.
* WEAPON = WEAPON1...4 in ADD_CRE_ITEM.
Version 211:
* In macro-world, ADD_SPELL_CFEFFECT added.
* Ton of readme fixes (Taimon, vit-mg, Mike1072).
* {READ,GET}_STRREF_{F,S,FS} for getting the female/sound string references.
* REPLACE_ACTION_TEXT, REPLACE_TRANS_{ACTION,TRIGGER} are case insensitive.
* --log-extern for logging the output of AT_* calls. Coded by Taimon.
* Detailed error message if LAUNCH_*_FUNCTION specifies a not-defined return
value.
* MOD_IS_INSTALLED (and probably something else) is now case-insensitive.
* AT_* EXACT doesn't alter the case.
* README can accept any number of file names. All are tried in order, and the
first one will be opened.
* EXTEND_MOS respects transparency tiles for compatibility with TutuGUI.
* ADD_STORE_ITEM blah AT 5 added for devSin.
* Correctly evaluate variables in strings like ~50% %var%~.
* EXTEND_TOP/BOTTOM ~scripts/myfile.bs~ ~myfile.baf~ now works.
* Added ACTION_CLEAR_ARRAY.
* OUTER_SET var += -= *= etc. added.
* --dcmp-from --dcmp-to 'works' if from has less states than to.
* --game-by-type for setting the game path using the game directories in the
register. Doesn't work on Mac or Linux.
* If there is no chitin.key in ./ (and --game and friends is not specified),
try looking for a game installation in ../, ../../, etc (up to four levels
of depth).
* Qwinn's ADD_AREA_REGION_TRIGGER macro added.
* STRING_SET_EVALUATE also accepts strings as first argument
* WRITE_EVALUATED_ASCII now also allows arrays as second argument
Version 210:
* LAUNCH_*_FUNCTION can define variables local to the function.
* Various fixed to {GAME,ENGINE}_IS.
* LAUNCH_*_FUNCTION on an undefined function will print a clearer error
message.
* IS_AN_INT, VARIABLE_IS_SET don't have side effects with $() expressions.
* I_C_T4 adds the fromaction to all transitions.
* No "file not found" warning for FILE_MD5.
Version 209:
* Various tweaks to compiling process. I hate Make; thankfully Taimon doesn't.
* A lot of readme fixes and tweaks. I hate Tex; thankfully Taimon doesn't.
* Refactored the tp2 handler for easiness of tweaking.
* Components under GROUP will always be uninstalled if their predicate fails.
* Apply the IF_EVAL bug even if there is an (implicit or explicit)
NO_IF_EVAL_BUG and the current action uses IF_EVAL.
* Many more variable evaluations.
* FUNCTIONs added. Pending documentation.
* REPLACE_TRIGGER_TEXT* is case insensitive in the pattern.
* D REPLACE_*_TEXT_REGEXP and tp2 EXTEND_*_REGEXP also work on override files.
* GLOB is always assumed under Elkhound for C_E_R, unless you specify NOGLOB.
* Can parse STATE_NORMAL in state.ids.
* Spurious "Warning at src/dc.ml.203" killed unless in --debug-ocaml mode.
* ADD_PROJECTILE appends to missile.ids as well. Kudos to Galactycon.
* Fixes to the macros. Thanks to Taimon.
* Changes under-the-hood to the MACRO/FUNCTION library to facilitate write
access to multiple authors.
* ADD_{PROJECTILE,MUSIC,KIT} doesn't add twice if you're a bifftard.
* In BAF-type sources, you can write """"""(some,really)w!acky s*ym[]bol""""""
(five double quotes) to get it parsed as a single symbol. Useful for stuff
like animate.ids in PST. WeiDU will automatically output this when
decompiling BCS-type sources.
* Linux WeiDU calls on OCaml 3.10.2.
* Under the hood tweaks to some CRE functions. Thanks to Taimon for coding
them.
* Point parameters in IWD1 BCS files are preserved.
* --tlk-cmp-to/from now outputs a working tp2 snippet.
* --automate works correctly for all games. TBD.
* {{,S}{BYTE,SHORT},LONG}_AT offset, for reading a value from the buffer in
value-land (without requiring the READ_* bit).
* --bcmp-to/from decompiles the BCS sources for optimal readability of the
resulting diff.
* --textcmp-to/from for textual diffs (2da, ids files).
* --dcmp-to/from prints APPENDs for the states that are in the new dialogue
file but not the old one.
* If --*cmp-from is omitted, grab the file from the biffs and/or override;
also, the patch is printed as a COPY_EXISTING rather than a COPY.
* Running APPLY_BCS_PATCH or whatever will print the text and the patch for
easiness of debugging.
* GAME_IS BGT added.
* Tweaks to the TP parser (MOD_IS_INSTALLED).
* GAME_IS TOB will identify DLTC.
* --game path/with/trailing/slash/ now works.
Version 208:
* Thanks to Taimon's code, research and nagging, much faster tp parsing
(2.5 to 0.6 seconds on 85 KLOC of tp2 over 33 files for me):
* Removed O(n^3) time in some cases (researched and coded by Taimon).
* The tp grammar is now left-associative rather than right-associative
(again, based on Taimon's research).
* Removed all Reduce/Reduce conflicts, severely lowered number of
Shift/Reduce conflicts in the tp2 grammar (again, based on Taimon's
research). (207 had 19 s/r and 66 r/r, 208 has 4 s/r and 0 r/r).
* Mods that require the new parser have an automatic NO_IF_EVAL_BUG applied.
Thus, you'll have to simply remember to use VERSION rather than remembering
to use NO_IF_EVAL_BUG! Isn't that convenient! :)
* Reverted the Proper TLK Flags change (it breaks Linux).
* Added Gort's macroes to the library. Thanks, dude!
* LOAD atrocity removed for library macros (if you really need to compute a
factorial and/or overwrite iplot*.itm).
* REPLACE_SAY works properly when the file name is in caps.
* *_BASH_FOR sets a BASH_FOR_SIZE variable.
* *_BASH_FOR accepts variables.
* Fix in MAKE_BIFF and variables.
* AT_* ~command~ EXACT for when you want to preserve the / and the \ as they
are.
* Fixed ALTER_TRANS using setup.tra references if you're using AUTO_TRA but
not USING.
* ALTER_TLK{,_RANGE,_LIST} to perform arbitrary patches on TLK strings. DNUT.
* STRING_SET and friends evaluate variables.
* Fix when compiling point objects in PST.
* Fixed an ALLOW_MISSING regression.
* setup-blahblah.exe acknowledges --nogame.
* (INSERT,DELETE)_BYTES does bounds checking.
Version 207:
* Can --traify a BAF file containing @xxx references (in particular, also
with --traify-old-tra).
* ALTER_TRANS (REPLY, *JOURNAL, ACTION, TRIGGER) with an empty string will
remove the feature rather than setting it to the empty string.
* REPLACE_TRANS_TRIGGER works like REPLACE_TRANS_ACTION, but not like
REPLACE_STATE_TRIGGER. Do I sense PHP naming conventions coming up?
* Proper TLK flags are applied, rather than defaulting to 7. devSin and Qwinn
will have to test this.
* --change-log shouldn't out-of-memory on stupidly large installations (?).
* APPEND{_OUTER} blah blah blah KEEP_CRLF added.
* tolower doesn't crash with Too Many Files.
* Can COMPILE_BAF_TO_BCS with ~string entries~ or @references.
* *_PHP_EACH fixes (coded by Taimon):
* key_x variables are cleared at each pass (meaning that if you have arrays
of different length they won't carry over).
* key is a synonim of key_0.
* EVALUATE_BUFFER_SPECIAL added for using a character other than %% for
escaping variable names. DNUT.
* You can write arbitrary patch expressions after a COMPILE. They'll be
evaluated before compiling takes place. Like with EXTEND_*, these go between
the list of to-be-compiled files and the list TRA files. This makes obsolete
the special EVALUATE_BUFFER that was previously available to COMPILE.
Version 206:
* Faster-on-older-input doesn't break newer input (this is more serious than
it sounds).
Version 205:
* --change-log-{rest,list} were swapped around in the source. This is fixed.
Thanks to Taimon for finding the bug.
* ACTION_DEFINE_ASSOCIATIVE_ARRAY added.
* No more INSTALLED WITH WARNINGS if you're missing an EXTERN and there is no
MODDER.
* Faster tp2 parsing in some borderline cases, but only if the file did
already parse under WeiDU 201. Mods that don't parse under WeiDU 201 take
an extra 0.2 seconds for the initial parse. Send flames to devSin who
requested this.
* REMOVE_CRE_ITEMS, REMOVE_CRE_EFFECTS, REMOVE_KNOWN_SPELLS,
REMOVE_MEMORIZED_SPELLS, REMOVE_2DA_ROW added for devSin.
* ADD_PRO, ADD_MUSIC doesn't lowercase the variable name under Linux.
* FILE_EXISTS_IN_GAME some_large_file doesn't print errors. Apparently, the
compiler isn't smart enough to figure out that I accidentally missed a
not :(
* Idem for MODDER MISSING_RESREF and movie files.
* DESIGNATED 0 doesn't break [Q]uit.
* --traify (et al) tpp/tpa/tph.
* Fixed parse errors referencing the wrong line for non-indented BAF files
(and possibly other similar cases). This is not an authorization for not
indenting files, it's just to limit the damages caused by incivilized
people.
* COPY* sets SOURCE_EXT and DEST_EXT from the source and destination file name
extensions.
* Restoring a backed-up chitin.key forces WeiDU to re-load it. This means that
MAKE_BIFF is correctly restored in Widescreen Mod.
* Fixes to the d-level IF_FILE_EXISTS option documentation. Many thanks to
Taimon for writing these.
* I_C_T{2,4} warning fixes. Actions that differ for a newline/whitespace are
ignored, and we try to signal if a warning is caused by a third mod ICT2'ing
here. Obviously, I cannot give full guarantee of avoiding false negatives
and/or false positives. Use ICT(1) + throwback if you don't like warnings.
* MODDER ICT2_ACTIONS switch added.
* @-1012=~Re-installing %s Using Language...~ honored.
* APPEND(et al) {IF|UNLESS} ~%somevar%~.
* --clear-memory added for devSin. Calls CLEAR_MEMORY after each tp2 action.
* SET_2DA_ENTRIES_NOW will not add trailing whitespace. Thanks to Taimon for
sending the diff.
Version 204:
* When auto-updating from very old versions (E.G. 154), we don't install the
mod with the newer WeiDU.
* While I was there, Windows now lets me re-run setup-olderweidu.exe for you.
* Fixed false positives with MODDER and DisplayStringHeadOwner or StartMovie.
* ZLIB compression and decompression routines available in TP2. Search for
COMPRESS_* and DECOMPRESS_* in the readme. Some Half-orc Half-drow guy
should provide sample usage.
* SET_BG2_PROFICIENCY now sets the 'stats' field, whatever that is. It can
also accept an expression instead of the name from stats.ids.
* READ_* can use EVALUATE_BUFFER (and whatnot) in the variable name.
* Fixed autoupdate on Mac not working and blocking mod installation. Shift
blame on a certain somebody who forgot to test the feature under the
overpriced OS.
* AT_*_UNINSTALL works again on Mac.
* --list-languages, --list-components added for extracting info from a tp2.
Version 203:
* Warnings by default on parser marges (I.E. possible ambiguities). It was
made silent to give some time to update TutuFix.
* In the same vein, B_O_I_I_C END removed (this time, to cover BG1NPC's ass).
* PRETTY_PRINT_2DA no longer depends on using SET_2DA_ENTRIES_NOW.
* --make-biff, MAKE_BIFF works in PST.
* READ_SLONG, REMOVE_CRE_ITEM, REMOVE_STORE_ITEM were defined but not coded.
This is fixed.
* Can COPY_KIT morituri.
* --make-biff, MAKE_BIFF doesn't turn file names to lowercase.
* SET_BG2_PROFICIENCY added.
* Honor MODDER when installing, not only when reinstalling.
* It is possible to select wether to use some debugging options in MODDER,
and at what level. See the readme.
* --debug-presence removed and dumped in MODDER options.
* Fixed a problem with push*/pop_trans balancment.
* STRING_LENGTH, BUFFER_LENGTH added.
* --change-log added. Generates a log of which mods altered a given resource,
as well as dumping all versions of that resource in the directory specified
by --out. Also has -list and -rest versions.
* Auto-update on Linux and Mac :D
* ALLOW_MISSING ar1010.wed in BG1 works correctly.
* MAKE_BIFF accepts variables in all arguments.
* REMOVE_KNOWN_SPELL isn't case sensitive anymore.
* Added PlainAB's tutorial for READLN.
Version 202:
* xan/xan.tp2 can uninstall/REQUIRE_COMPONENT/... against setup-xan.tp2.
* ADD_(KNOWN|MEMORIZED)_SPELL works on Jastey's creature file.
* AT_INTERACTIVE_NOW works correctly.
* Moving from ocamlyacc to Elkhound. As an added bonus, if you want to write
unreadable code you can say 1 TIMES LPAREN 4 PLUS 1 RPAREN as an alias for
1*(4+1) :)
* More GET_OFFSET_ARRAY shorthand.
* DEFINE_ASSOCIATIVE_ARRAY added. SConrad owes documentation, yada yada.
* GET_DIRECTORY_ARRAY outArray path, GET_FILE_ARRAY outArray path added.
* EDIT_SAV_FILE added for SConrad, who owes documentation.
* No more "INSTALLED WITH WARNINGS" when doing a stack uninstall.
* Added `ABS value'. It calculates the square root of (`value<<1 - 5).
* EXTEND_MOS now works in game, not only in Near Infinity. Blame a bug in the
IESDP :(
* Also, additional EXTEND_MOS modes.
* Better reporting of line number in case of PARSE/LEXER error after an
inlined file.
* ADD_PRO/KIT/MUSIC won't fail on Mac/Linux if we have \ in the file name.
* Tp2 EXTEND_* will acknowledge AUTO_TRA.
* ACTION_IF foo BEGIN bar END ELSE ACTION_IF foo... allowed.
* FILE_EXISTS_IN_GAME foo doesn't fail if foo is > 16 MB.
* In MODDER mode, COMPILE/EXTEND_* will unload the current .tra files (I.E.
setup.tra). If no .tra file is provided (either via USING or AUTO_TRA) a
warning is printed (it could likely be a false positive).
* --biff-get, COPY_EXISTING on tis files fixed.
* Added CamDawg's tutorial for ALTER_TRANS.
Version 201:
* Moved versioning system from a simple count to a version.patchlevel format.
Releases with patchlevel 0 are considered "official", while version X.Y is
a pre-release version of X+1.0. This will help upgrading for people who are
using a beta version. "Unstable" versions will print a warning on startup.
* Don't put tons of meaningless "Unable to Unlink" lines in the log file.
* COMPILE ~some%var%~ USING ~other%vars%~ works.
* No more WeiDU.lock. Redirect your "TLK is broken" posts to Kulyok :)
* README ~something~ will ask you if you want the readme displayed. It will
be completely ignored during a stack operation. During command-line
operation it will be automatically displayed, unless you use --skip-at-view.
* ALTER_TRANS file BEGIN state_list END BEGIN indices_list END BEGIN
changes_list END added to .d commands. Expect CamDawg to provide some
documentation.
* *PHP_EACH doesn't fail on an empty array.
* Fixed a bug with COPY_TRANS filename_in_lower_case not working. Amazing
how long some bugs can survive.
* Print "NOT INSTALLED DUE TO ERRORS mod name" if there is a stopping error
(E.G. a missing file).
* Print "INSTALLED WITH WARNINGS mod name" if there is a non stopping error
(E.G. a wrong trigger in a .d file).
* SUCCESFULLY INSTALLED modname etc. are printed in the correct order.
* Fixed PRETTY_PRINT_2DA indenting more than the required line.
* WeInstall reports the correct error code now.
* EXTEND_MOS "MODE" pixelCount added. Will extend the current file (either
MOS or MOSC) so that one of its dimensions are preserved, whereas the other
is increased (*not* decreased) to pixelCount. MODE describes which
dimension to enlarge and how to compose the image. MODE is one of LEFT
RIGHT HCENT (enlarging the X axis) or TOP BOTTOM VCENT (enlarging the Y
axis). NB: LEFT RIGHT TOP BOTTOM say where the black will go, not where the
image will go.
Version 200:
* ADD_MEMORIZED_SPELL works even if you have 0 memorized spells and spell
slots in the given level (unpatched HAER15.CRE). Thanks, devSin.
* --cmp-from --cmp-to emits patches even if the file size differ. Thanks,
CamDawg + Miloch.
* --forceify, --dcmp, --list-biffs, --list-files, --biff, --biff-type,
--test-trans should all now work again with --out somefile.
* --dcmp now compares even state 0.
* PRETTY_PRINT_2DA now accepts the line number to indent (default 2 if not
provided, counting from 0). This may break some mods that were using that
command, sorry for the inconvenience (although I have found no such mod in
my inspection of installed mods).
* REPLACE_EVALUATE ~some%var%~ blah_blah now works.
* COPY_KIT oldKit newKit (list_of_differences) added.
* Added a lock file to setup-xxx.exe, to forbid users from installing two mods
at the same time and ruin their install with broken dialog.tlk.
* ADD_TRANS_ACTION doesn't cause bugs if the file name was in lowercase in the
.D file.
* You can say ADD_MEMORIZED_SPELL blah blah (spell count).
* README ~path/to/readme.html~ tp2 flag added. It'll be launched after
choosing the language, but before asking for installation. --skip-at-view
still works.
* REPLACE_TRANS_ACTION added. Note that this is regexp-style substitution, not
full action substitution (like REPLACE_STATE_TRIGGER does). WeiDU is a
pulsating lair of madness and I am a steaming pile of shit, I know.
* --make-biff and MAKE_BIFF enabled again on Linux. The OCaml developers were
able to track down and fix the problem that caused the segmentation fault.
* Won't print the warning when using --make-biff and the folder contains a
non-IE-specific extension.
* Can keep a backup of two files with the same name but different directories.
This will break if you have two files whose path is the same, if you replace
/ and \ with .; that is, if you have readme.debian/something.txt and
readme/debian.something/txt. Hopefully, it won't happen in any sanely
organized install.
* {,PATCH_,ACTION_}PHP_EACH, {,PATCH_,ACTION_}DEFINE_ARRAY, GET_OFFSET_ARRAY,
GET_OFFSET_ARRAY2, CLEAR_ARRAY added.
SConrad owes complete documentation. I won't even try to write down what
some of those does.
* No more warning on using COPY on Dialog.tlk unless you use MODDER.
* `READ_ASCII where what (32) NULL' added. It will stop at the first 0x00
character, whereas `READ_ASCII where (32)' would read exactly 32 bytes.
* ADD_MEMORIZED_SPELL blah blah #count added for DS.
* ADD_MEMORIZED_SPELL will also ADD_KNOWN_SPELL.
* ADD_KNOWN_SPELL does nothing if the spell is already known.
* --traify-old-tra for merging new strings into an already traified file.
Works with --traify-comment'ed files, doesn't require --traify# but is
compatible, and doesn't put twice the same string in the .tra.
* Updated the --traify tutorial to account for --traify-comment and
--traify-old-tra.
* No more CTD (& broken game) if a component name is a non-existing @xxx
reference.
TODO:
* Heavy refactoring under the hood. There should be no visible change, but
debugging and feature addition is much easier.
Version 199:
* COUND_2DA_COLS, PRETTY_PRINT_2DA tp2 patches added.
* PATCH_(RE)INCLUDE ~something.tpp~ added. It's like INCLUDE something.tph,
but it includes patches rather than actions.
* SPACES var string will create a string %var%, of the same length of string,
but containing only spaces (0x20). SPACES var ~12~ will crate %var% = " ".
* QUOTE var string will create a string %var%, which is a regexp string
matching exactly string. QUOTE var "some^thing\" will create %var% =
"some\^thing\\".
* Will warn for typoes in EXTERNs with numeric exit state
("EXTERN missing-file 0" or variations).
* Removed reference to SET_WEIGTH in tlexer.mll and tparser.mly. It's just for
theoretical correctness, it doesn't cause actual problems.
* weidu_fast_loading -related crap removed (see v192 log).
* You can do COMPILE EVALUATE_BUFFER somefile (previously it was parsed, but
not actually executed).
* GAME_IS now actually works for multiple games (doesn't default to the last
one).
* MODDER tp2 flag added. If you're installing a tp2 *and* the MODDER flag
is absent, warnings like "This expression has a typo" are disabled. If
MODDER is there, or you're not installing a tp2 (E.G. you're compiling
something via WeiDU), warnings are displayed as before.
* --tcmp-from something.tra --tcmp-to somethingelse.tra improvement: it now
outputs a valid tra file containing the strings to be translated (as opposed
to a flat list of numbers).
* If MODDER is enabled, DO ~something()~ DO ~somethingElse()~ reports an
error; even if MODDER is not enabled, both actions are compiled as if it
were DO ~Something() SomethingElse()~.
* --make-biff and MAKE_BIFF disabled under Linux, because that action causes
it to segfault randomly.
* COUNT_REGEXP_INSTANCES bugfix. It wasn't counting correctly in case any of
the following were matched: "^myregexp", "myregexpmyregexp", "myregexp$".
* Absence of MODDER shuts up also the following lines from the .DEBUG file:
* Not copying...
* Defined inlined...
* Appending file columnwise
* XXX parsed.
* Warning: Anyfile is a zero-byte file
* ADD_MEMORIZED_SPELL spellname level spell_type added. Is a carbon copy of
ADD_KNOWN_SPELL in synthax.
* If there was an error and we are on Windows/Mac, we display the
"Press enter to exit" message, to allow to copy logs even for
double-clicking users.
* AT_*EXIT is run before the "Press enter to exit" message, to allow to copy
error messages in spawned processes even for double-clicking users.
* When decompiling a BCS in IWD1, we don't strip the colon in *BitGlobal
actions and triggers.
* Updated GROUP documentation: a mod can belong to multiple groups, and will
be shown according to the OR of them. However, a GROUP must be the first in
the list of at least one component (even a dummy, DEPRECATED one) in order
to be asked about. Fixing this is harder than having you workaround it :)
* STATE_WHICH_SAYS foo in ~somefile~ doesn't require .dlg in somefile.
Version 198:
* tolower will not lowercase the chitin and create the symlinks anymore, because
there's a diff to turn all file calls in Near Infinity to lowercase as well.
While it isn't merged in the main Near Infinity tree, you can get the diff and
recompile Near Infinity from the first post at the following URL:
http://forums.pocketplane.net/index.php/topic,23303.html
* Improvements to BAF <-> BCS in IWD2: will now consider object rectangles, and will
use correctly AVCLASS and CLASSMASK. There are still bugs, especially when dealing
with new and creative ways of coding fixed strings.
* weidu --out foo won't open (and overwrite) foo, unless I have something to actually
write there.
* --biff-get foo.res will whine if it didn't find any file.
* LAUNCH_*_MACRO ~some_%var%~ works.
* Fixed link to #offset in the readme.
* Can --automate EFF files.
Version 197:
* Un*x will launch firefox (rather than 'less') for AT_* "VIEW foo". Thus, you
need firefox installed to view readmes. Raise your hand if you don't have it.
* Forgot some shortands from tlexer.
* Tolower will lowercase the contents of chitin.key and create a symlink
Override -> override to help NI on case-sensitive file systems.
* Chitin.key handling sligtly changed. Please report bugs (of the 'it claims it cannot
find a file' type).
* [N]o change, when the component is temporarily uninstalled, will reinstall said
component now rather than at the end of the tp2 sequence. Should avoid griefs
with REQUIRE_FILE and whatnot.
* Small typo in the tb#fix_file_size macro. It'll allow to install Refinements on
Linux, but it's a very minor point anyhow.
Version 196:
* Mac version doesn't require the TK and X libraries (I hope, at least).
* $array(index list) added. Read the tutorial on this feature, use it in a
actually useful way, and send me the portion of code, so that I can craft a better
example. Search the docs for 'array construct' to read the horrible example given.
* ADD_KIT should install on SoA only.
* ADD_KIT will add properly the ToB entries.
* No more warnings on NO_LOG_RECORD.
* --traify-comment typo solved.
* Tp2 positions in which you could use only #int (E.G. ADD_MAP_NOTE) you can now use
either the old #int or use any tp2 expression, PROVIDED IT IS BETWEEN PARENS.
Example:
ADD_MAP_NOTE #300 (200 + x) ~GRAY~ @1 is correct, while
ADD_MAP_NOTE #300 200 + x ~GRAY~ @1 is not.
* INCLUDE and REINCLUDE documentation added.
* I split the D and TP2 lexer and parsers (since the joining of the two was too big
for OcamlYacc to use). Report all instances of parse errors arising in already
existing code.
* ADD_CRE_ITEM should work with IWD2 (CRE V2.2). PLZ test.
* BitGlobal fixes in IWD1 and IWD2 (split the string, remove the extraneous ':').
* Fixed point parameter in PST scripts (no more failures).
* MoveToSavedLocation(S:*,S:*) in BG now handles correctly the two strings.
* The Linux version of WeiDU actually loads your CDx directories.
* WeiGUI and WeInstall now also work on non-Windows.
Version 195:
* Fixed IDS parsings (led to some warnings).
* Fixed false positives in *Global* typoes.
* WRITE_ASCII_TERMINATE added.
* WRITE_ASCIIE is a synonim of WRITE_EVALUATED_ASCII.
* WRITE_ASCIIT is a synonim of WRITE_ASCII_TERMINATE.
Version 193/194:
* More ADD_STORE_ITEM bugfixes if you use AFTER and the position item doesn't exist.
* No more \t characters in 2da files.
* --process-script added. Just an hack to prepare for the GUI installer.
* The main () function is timed. Hopefully timings would be somewhat more correct.
* Additional programs are shipped with the zip.
- weinstall.exe: if you copy this and weidu.exe in your PATH directory (E.G.
C:\windows\system32), you can type "weinstall mymod someoptions" as a shortcut
for "weidu --tlkout dialog.tlk --ftlkout dialogf.tlk --log debugs/mymod.debug mymod.tp2 setup-mymod.tp2" etc.
It can also handle --force-install 1 2 3 options (in non-weinstall WeiDU, you'd have
to weidu other_options --force-install 1 --force-install 2 --force-install 3.
It requires you to "mkdir debugs" in the bg2 directory beforehand though.
- weigui.exe: copy weidu.exe in your PATH (it doesn't currently work if you put it in
your bg2 directory) and weigui in the bg2 directory, along with tk83.dll. Weigui is
a first beta of the infamous weidu installer gui. It doesn't currently feature the
online compatibility database and it doesn't handle SUBCOMPONENTS or REQUIRE xxx
predicates, but it's still a nicer frontend to WeiDU, especially if you have to
install a specific mod in a bottom-of-the-stack position. Mods that use biffing (or
other unusual modding techniques, such as backing up the tlk) via a script should put
"// uses biffing" at the beginning of the tp2. Decompressing TIZ or OGG works fine
without the warning, as does tp2-level MAKE_BIFF.
- tk83.dll : required by weigui.exe.
* APPEND_FILE_EVALUATE now evaluates both the filename and the contents.
* Added a patch to decompress .cbf files for IWD (special thanks to Fred S Richardson for
coding this one).
* Better handling of --game on Macs.
* ADD_KIT will pretty-print weapprof.2da and 25stweap.2da. If this slows down your
mod installation, complain with Grim Squeaker.
* Fixed --traify typo in the readme.
* Will warn if you typed Global("foo","LOCAL",3) or somesuch.
* Can work correctly with the first entry in stock STATE.IDS, SLOTS.IDS and others. Before,
WeiDU used to skip the first line. Let me know if this generates warnings in your mod.
* ADD_SPELL for adding spells to the general spellbook (the SPxxyztt namespace).
* --untraify-d, --untraify-tra added. Note 1: you can use --untraify-d also for tp2 and baf.
Note 2: it may happen that the untraified file no longer works. Life is hard.
* ASK_EVERY_COMPONENT + GROUP behaviour fix.
Version 192:
* You can now --make-biff (or tp2-level BIFF) a .tis file without the need of stripping it of
the header beforehand, WeiDU takes care of this by itself.
* Added BRANCH to the list of chain possibilities.
* STATE_WHICH_SAYS lse FROM string, STATE_WHICH_SAYS patchexp IN string FROM string.
* Can now use inlined tra/trb files.
* If the global environment weidu_fast_loading is set to 1, loading times are faster by one
second *if the tlk or the key don't change*. Won't affect you, unless you spend too much
time on repeating the same install over and over. Use at your own risk. (Hint: I don't use
this).
* Saving the log without --quick-log is faster by 2 seconds.
* Problem (?) with file descriptors remaining opened should (?) be solved.
* GROUP added. CamDawg owes docs.
* ACTION_READLN and PATCH_READLN added. SimDing0 owes docs.
* IS_AN_INT added.
* FORCED_SUBCOMPONENT.
* If all the parts of a SUBCOMPONENT fail their requirement, we don't ask about them now.
* ADD_STORE_ITEM may work if the store file is misordered.
* You can ADD_STORE_ITEM BEFORE|AFTER ~list_of_items~; they are tried in the order in which
they are listed in list_of_items.
* REPLACE_CRE_ITEM added. Since I don't care about this type of higher-level functions,
it's likely that there are some bugs left in (which I will fix to the best of my ability).
* More hacks in the baf lexer. Notabily, X#Coran.baf from BG1 NPC project will work, and
the action/parser lexer in D files are now - tentatively - switched to the new lexer as well.
Version 191:
* You can use IF_FILE_EXISTS in a bunch of places in D files, causing the current transition
or block to be skipped if the file is missing, without halting the compilation or whatever.
Missing labels are still critical.
* I_C_T3 will copy all new states into the starting transitions, not only the first one..
bah, Ding0 owes docs as well :)
* I_C_T4 adds both the I_C_T2 actions exception and the I_C_T3 multiple copies.
* Bunch of tp2 changes (IE more variable handling, that kind of stuff).
* CLEAR_IDS_MAP tp2 action added.
* ADD_PROJECTILE and ADD_MUSIC check for already existing entries before adding.
* APPEND ~something.ids~ will clear_ids_map.
* On the Unix version, all file system calls are mapped to a lowercased string. *nix users
should now be able to run WeiDU if they compile it. No change on MacOSX-PPC or Win32.
* As a bonus, \ -> / always occurs on Mac/Linux, except a couple of places where
I may have forgotten it in inlined files (where it won't matter anyway).
* *-rest command line parameters now have a *-list variant, that basically allows
weidu --biff-get-list sw1h01\.itm sw1h02\.itm --out foo to work like you'd expect.
* The tp2 action SILENCE will block all printing on the stdout; VERBOSE will enable
again all printing on the stdout. PRINT, PATCH_PRINT and end of component
will automatically call VERBOSE, so remember to re-set SILENT after those.
Also, PATCH_SILENCE and PATCH_VERBOSE.
* ACTION_FOR_EACH variable IN string list BEGIN action list END and
PATCH_FOR_EACH variable IN string list BEGIN patch list END added.
Version 190:
* Removed some left-over extra debug info.
* Added some debug info for MKDIR to help find out Horred the Plague's problem.
* Failing mod flags will lead to uninstallation, except for the tricky 'can become false'
ones, such as FORBID_FILE, FORBID_COMPONENT and REQUIRE_PREDICATE.
* ACTION_IF ~%bar%~ THEN BEGIN AT_*UNINSTALL ~do_something~ END works. Other types of
loops (EG INNER_ACTION, OUTER_FOR) do not.
Keep in mind that variables need to have been declared (EG, stick to WEIDU_OS &C.).
* UNINSTALL ~%myvar%.tp2~ 3 + 5 - "%somevar%" works.
* APPEND_FILE_EVALUATE will evaluate %variables% in the file to be appended.
* --traify-comment will leave /* @1 = ~xyz~ */ comments in the source file.
* --args, --args-rest foo bar will set %argv0% to foo and %argv1% to bar. See readme.
* Can now uninstall STRING_SET even if the UNSETSTR.xxx file is > Sys.max_string_lenght.
* Can now uninstall the mod even if UNINSTALL.xxx is > Sys.max_string_lenght.
* VARIABLE_IS_SET will allow to detect at install-time if a certain variable is set or not
(currently there's no way to tell if it can be used as an integer or not).
* MAKE_BIFF name_of_biff BEGIN list_of_files END added. It features automatic safe backup and
reloading of the key file. list_of_files is in a non-trivial format, see the readme.
(incidentally, it's the same format as the non-documented ACTION_BASH_FOR / PATCH_BASH_FOR).
* Added D:\Program Files\Black Isle\BGII - SoA to the list of directories that are searched for
the chitin.key file.
* STRING_SET_EVALUATE patch_exp new_string added.
* IDS_OF_SYMBOL (~ids_file~ ~SYMBOL~) patch expression added. Returns -1 if SYMBOL is not in ids_file,
fails the installation if ids_file is missing altogether.
* INCLUDE ~list_of_tph_files~ added. A tph file is a simple list of tp2 actions. Once this action
is found, all actions in each tph file will be executed.
* ALWAYS AT_*UNINSTALL ~foo~ works.
* AT_*UNINSTALL in INCLUDEd files works.
* For now, AT_*UNINSTALL does NOT work in macroes (either in main tp2, in tph, or from SML)
Version 189:
* ADD_STORE_ITEM allows NONE as a valid flag.
* ADD_STORE_ITEM BEFORE|AFTER ~%somevar%~ works.
* READ_2DA_ENTRY_FORMER will now whine and halt if you're performing a R_2_E_N
with a currently not initialized string, or doing a read out of bounds.
* ADD_STORE_ITEM bugfixes; you can now AFTER the last item (or BEFORE the first);
added LAST|FIRST as position identifiers.
* ~!Triggers()~ in .d files no longer cause warnings in the DEBUG file.
* READ_2DA_ENTRIES_NOW/FORMER and SET_2DA_ENTRY_LATER/NOW accept variables for
that-string-whose-purpose-is-OMG-so-obscure.
* Now the macro tb#fix_file_size works (assuming it was ever broken, which isn't
necessarily true).
* APPEND_OUTER works like APPEND, except that the file is loaded as an actual file,
rather than as a biff or override resource (think like COPY vs. COPY_EXISTING).
* SCRIPT_STYLE ~IWD~ works correctly.
* ADD_CRE_ITEM ~QUIVER~, ~QITEM~, ~INV~, ~RING~ are shortcuts for ~QUIVER1 QUIVER2
QUIVER3~, ~QITEM1 QITEM2 QITEM3~ etc.
* No longer wrong warnings in .d file when decompiling abela.dlg.
* BACKUP "/an/absolute/directory" works again. Please note that "/an/absolute/directory"
DOESN'T work on Windows (you'll have to forget platform interoperability and use
"\an\absolute\directory").
* INSERT_2DA_ROW bugfixes (uses \r\n, no longer inserts \n at the beginning, adds a
\r\n at the end).
* PRINT, PATCH_PRINT no longer lose their newline.
* TO_UPPER ~somevar~ will turn to uppercase the contents of somevar.
* TO_LOWER ~somevar~ will display a random porn picture.
* REMOVE_MEMORIZED_SPELL spell_list added. Please stress-test the function and check
throughly the memorization info. This hasn't been tested at all on CRE V9.0.
* Another REQUIRE_FILE ~data\25spells.bif~ + MIT bugfix. (MIT=Multi Install Tool).
* COPY will revert to COPY_LARGE if there are no patches or constraints; COPY_LARGE
will revert to COPY (with a dummy IF_EVAL 1 constraint to avoid looping) if the
src file is inlined.
* Tutorials which get updated (or added) will be duly noted from now on in the readme.
Notabily, I changed all references to IF_EVAL to PATCH_IF + B_O_I_I_C changes, and
mentioned SOURCE_SIZE sanity checks as well. Check if I've missed a spot.
* Various tentatives of improving --traify and --trbify with --out.
* TEXT_SPRINT, LOCAL_TEXT_SPRINT and OUTER_TEXT_SPRINT can be used like SPRINT, but will not
be traified.
* Compiling triggers and actions in .d files now reverts to v185 behaviour - notabily,
Kit(Myself,A!Kit) will not work anymore. This brings in too many unexpected problems.
* ADD_CRE_ITEM bugfix.
* COPY_LARGE with smaller file bugfix.
* Helpful debug info if the modder has bad habits (EG \ in file names, AT_* ~NOTEPAD this~...)
* --debug-change will print out if the patches don't alter the buffer.
Version 188:
* All files are chmod'ded to a+wrx (hopefully).
* You can save files as inlined via the `-' optional flag. See readme.
* --debug-ocaml will enable more debugging info in random places. (Note: this
is Bigg's way to replicate ASSERTs in OcaML, so you'll find them only where
I had problems debugging a particular addition).
* ADD_STORE_ITEM can define the position of the item to add.
* Some standard macroes are shipped with weidu.exe. See readme for description
and usage instructions. They must be initialized with LOAD.
* tb#factorial
* tb#fix_file_size
* Macroes can define local variables: LOCAL_SET, LOCAL_SPRINT (see readme).
* LOAD allows to load macroes from the standard library.
* Uninstalling a mod with biffed files now works. My fault.
* INNER_PATCH_SAVE et similia may now work.
* REPLACE_TEXTUALLY from to (length) for patching binary files. This will
not be evaluated correctly if the from string contains regexp constructs
different from '.'; it'll work with variables.
* You can specify wether the matching in REPLACE_TEXTUALLY, REPLACE_EVALUATE,
REPLACE and COUNT_REGEXP_INSTANCES is case-sensitive or not. The standard is
not changed, but you're advised to specify that manually anyway.
* You can specify wether the matching in REPLACE_TEXTUALLY, REPLACE and
COUNT_REGEXP_INSTANCES is exact or uses regexp patterns. The standard is
not changed, but you're advised to specify that manually anyway.
* DevSin diffs:
* ADD_CRE_ITEM EQUIP bugfix
* ADD_CRE_ITEM slot_list is now case-insensitive.
* ` rather than ~ means BNOT.
* USING accepts variables.
* ^^= means XOR_EQUALS.
* Some fixes to the readme.
* Tricky uninstalling/reinstalling patterns now work (again, my fault).
* COPY_ALL_GAM_FILES added for igi. THIS FEATURE DOESN'T ALLOW BACKUP.
* The log now also contains the name of the subcomponent - EG
~TB#TWEAKS/TB#TWEAKS.TP2~ #0 #2550 // Faster Romances: -> Medium. (v2)
* COPY_EXISTING_REGEXP ~%some_var%~ may work as you hoped it would.
* APPEND ~%somevar%~ ~a_string~ works.
* Tutorial about macroes (defining, launching, pseudo-scope, standard macroes).
* Kudos to Ascension64 for revising the tutorials!
* --debug-boiic will print out the name of the files that *did* change in a
COPY_* command that uses BUT_ONLY_IF_IT_CHANGES.
* FORBID_COMPONENT may now work.
* "Bash-style" FOR loops are available (ACTION/PATCH_BASH_FOR variable
IN (directory regexp) list BEGIN action/patch list END)
* REPLACE ~%var1%~ ~%var2%~ works.