-
Notifications
You must be signed in to change notification settings - Fork 36
/
obse_whatsnew.txt
937 lines (842 loc) · 46.3 KB
/
obse_whatsnew.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
xOBSE 22.11
Fix/Changes:
- Use correct length for stringVar serialization and ToString($) operator for multibyte strings
- Compiler: Climate forms are now an allowed type for StandardCompiler
- ExtractArgEx now support extracting TESClimate forms in commands. Commands using kFormType_Climate should only use ExtractArgsEx (or the expression evaluator with OBSE compiler)
- GetClimate*, SetClimate*, SetCurrentClimate now use kFormType_Climate arguments instead of kFormType_WeatherID
Docs:
- Moved links to cs.uesp.net
xOBSE 22.10
Additions:
- Compiler: add error when using invalid filter strings identifier (the first element of a zz::yy pair) in SetEventHandler and related functions
- Improved Diagnostic for script errors
- Task2 Interface for plugins to better handle Removable Tasks
- Add GameInitialized Message (for OBSE plugins interop)
- Added Compatibility for OBCN, similar of what was done for OBJA in 22.8 (EXPERIMENTAL)
- Added a workaround for OBCN/OBJA to simulate know OBJA crash workaround (initialization codepath trying to access a D3DSwapchain memebers directly)
Fix :
- Compiler: fix SetEventHandler/RemoveEventHandler/EventHandlerExist filters when the identifier was used unquoted and defined as a variable name
- Changes to Steam version handling, solving some of the instances of Application load error
- Allow sorting arrays of arrays when using ar_CustomSort
- Fix for Ref Walking documentation
- More precise handling of replace/count/find matching part of a multibyte character (stringVar are now internally wide string, proper handling require the proper locale and codepage setted in the system)
- Fix RemoveEventHandler for OnKeyEvent/OnControlEvent to remove all events with partial filter definition
- Avoid rare null pointer access in ShowRuntimeError (thanks @Fox2Code)
- Fix Menu{Tap/Hold/Release}Key commands not properly registering the button event for the UI.
- Fix xOBSE 22.7 regression for Useful House, now unmodified IR won't reset the stack extraDataList, possible if it was modified by another IR or directly by the engine.
- Fix CTD when GetNextRef is called in a script after returning a null reference, without a GetFirstRef call to reinitialize the scan.
Changes:
- Force C++20 Standard, modified some places for compliance
API:
- Add PatchCallsInRange
Loader:
- Added CS Editor checksum for visual style + DPI awareness executable
xOBSE 22.9
Fix:
- Commit new ExtraData to container only if ExtraCount isn't the only data present. Fix duplicated items in inventory using MOO companions
- Flush IR, when another IR is created on the same container (workaround to common instabilities as for Break Armors and Take or Equip, precursor to script based lifetime IRs ) and it's executing a DeferredAction
- Invalidate IR after SetEquip Deferred actions
- Revert GetEditorID changes for REID as Realtime Interactions depended strictly on the old beahviours. Deprecate it and add GetEditorID2 as the contract was funcky and there are better functions to operate on formIDs
- Copy ExtraDataList of the IR in case of SetEquip Actions (non deferred)
- Fix a couple of Memory leaks related to ExtraWorn data and IRs
Documentation:
- Fix documentation for Alchemy Types
xOBSE 22.8
Fix:
- Fixed an issue for using RemoveItem in a Container Loop, fixing a crash with Maskar Oblivion Overhaul
- Properly process base container item in container loops
- Fix modifying extra data with InventoryReference when original item had no extra data (fix some instances of SetCurrentSoulLevel for instance)
- Allow OnEventKey and OnEventControl unfiltered if no first or sencond filter are specified
- Fix OnControl Release event never triggered for mouse controls.
- Allow using Player in OBSE expressions as PlayerRef (mimicking vanilla compiler/evaluator)
Changes:
- Added compatibility with OBJA v16 (Oblivion Japanese Patch OBSE plugin version) for the Input System
- Improve some error messages for Scripts failures in the ExpressionEvaluator, prevent some spam
- Try to print better info about form and reference tokens (some info with RuntimeEditorID only)
API:
- Merge BaseExtraList with ExtraDataList
- Added InventoryReference::InvalidateByItemAndContainer
xOBSE 22.7
Fix:
- Moving an inventory reference to another container with RemoveMeIR copy the extradata from the temp ref.
- Control events weren't fired properly when triggered by mouse with controls having a keyboard binding
- Write All IR extradata to the parent container extradata
Additions:
- Introduce handling of swapped mouse buttons configuration
Changes:
- Change the loader to use the Windows and not the Console subsystems. Should fix issues with Steam Deck.
- Add 0XBF654A48 CRC for another polish executable version
- Bypass stricter check in the steam loader, for confusion about Steam version being applied the japanese patch (CRC marked as GOG version))
xOBSE 22.6.1
Fix:
- Fix GetProjectile Regressions
- Fix loader crash when checking for hotfix releases
xOBSE 22.6
General:
- Add CRC for DRM Removed Polish Version from Cenega (GOTY Deluxe/Anthology)
- Launcher will give a message if a new version is available (if you are connected to internet, only executable launcher)
Changes/Fix:
- Fixed Use After Free when RemoveMeIR was used with the destination container equals as the origin. Trade And Commerce Update rely on this working.
- Add Wheel events for OnKeyEvent event handler
- Re-add SetMouseSpeedX and SetMouseSpeedY (some mods use them)
- Fix functionality of OBSEIOInterface, fix Blockhead WASD in character creation
- Print xOBSE version on initialzing.
- Fix a tList issue where removing last item of the iteration was causing the loop to not terminate.
- Fix a potential crash where map markers with no name would cause a CTD on save load.
- Fix multiple command issue with multibyte string. (Japanese encoding affected)
- DeleteReference can now delete disabled clone actors
Addition:
- Add SetCameraFOV2 (unbounded version of SetFOV, con_SetCameraFOV)
- IsMajorRef,IsDiseased added as script and condition function.
- GetFirstRef / GetFirstRefInCell added parameter to include deleted reference.
- Type 90 now match only the deleted reference.
- Added SetInvertFastTravel, IsInvertFastTravel, SetCantWait,IsCantWait, SetOwningRequiredRank, SetParentCellOwningFactionRequiredRank, GetLoadedTypeArray
- HasSpell, IsMajor, GetActorLightAmount added as conditional functions
- GetDisease vanilla unimplmented function replaced with IsDiseased
PluginAPI:
- Added Replace to OBSECommandTableInterface
- Bumped PluginInfo to 3
xOBSE 22.5
Changes/Fix:
- Fix for OnEventKey and OnEventControl events
- Fix for SetHarvested 0 not being saved in the savegame
- Fix for CopyIR function breaking Wax Key perk from Real Time Lockpicking
- Fix for IR SetEquipped not working.
- Containers Loop execute the associated IR delayed actions (regression from 22.0). These last two entries fix Mig Pickpocketing mod and Break Armor.
- Full interop with CSE for warnings.
- Add IsMiscItem Command
API:
- Fill C++latest conformance.
- Separate ExpressionEvaluator from ScriptUtils
- Standardize PASS_COMMAND_ARGS , use macro instead of hardcoding arguments for ExtractArgs, ExtractArgsEx sometimes
Docs:
- Multiple docs fixed by @laulajatar
xOBSE 22.4.1
Fix:
- Fix an issue with IsCOntrolDisabled and IsKeyDisabled, were causing an issue with Bashing Reworked
xOBSE 22.4
General:
- Added the CRC for the Unofficial Japanese Patch v15 on the top of the GOG version
Changes/Fix:
- Fix ExpressionEvaluator regression that caused crash in Vampire Revolution. Also now it report the precise Command at fault.
- Loops temporary arrays are now setted with the mod id instead of 0xFF, avoiding leaking if the script crash inside the loop.
- Fix OnControlDown, now register correctly the control id and not the key id
- PreLoad hook now properly get the address of the IOManager to pass to game code, This fix the missing black out fade on cell transition that was present in Oblivion vanilla
- Restore bugged behaviour for SetAltControl required by Enhanced Economy.
- SetAltControl , GetAltControl and RefreshControlMap marked as deprecated
- Added SetAltControl2 with the fixed behaviour to substitute SetAltControl
- Compiling a script using commands marked as deprecated give a warning in CS (and an hard error in CSE pre 11 (unreleased))
API:
- Some additions to BaseProcess, MobileObject and Actor vtbls.
- Added Actor->dispositionModifier
Docs:
- Some documentation fixes by Laulajatar
xOBSE 22.3.1
Fix:
- Fix regression on OnActorEquip for some non equippable objects. Fix Maskar Oblivion Overhaul.
xOBSE 22.3
General:
- Updated version resources for file PE version.
Changes/Fixes:
- Fix regression on On{Key,Control}Down functions for scripts that weren't running every frame
- Add experimental support for OnKeyEvent and OnControlEvent for Event Manager
Docs:
-Update docs, add OnKeyEvent and OnControlEvent
xOBSE 22.2
General:
- Better message for failed plugins in case of missing or mismatched dependancies
Changes/Fix:
- Rewrote from scratch the input handling system of OBSE switching from the old and kludgy DInput hook to a proper OSInputGlobal hook. This should overall simplify the code, be faster and more robust, and more easily to interact with OBSE plugins in the future.
- The above change also fix these instances were input handling routines weren't working on some system if bBackground Keyboard = 0 (Oblivion.ini)
- Backport 3 fixes for Menu functions ignoring keyboard selection tiles, from NorthenerUI + 1 fix not covered by NUI
- Add some Error message in the ExpressionEvaluator for Array
- Fixed an issue were using subscript operator ([]) on a string map non existant element would succeed (and provide invalid data, testexpr would return true), now it complain with an error (and testexpr fail)
- Added an obse.ini option to avoid suppressing testexpr error messages.
- Fixed an issue with array loading were mod index 0 were mistakenly seen as arrays beloging to discarded mods
- Fix some error reporting issues were failing command weren't shown
- Fix bad dereferencing CommandList.end() iterator element, in exception handler.
- Fix OnActorEquip event being sent twice when using enchantend armours or clothing
- Improved Script diagnostics for Expression Evaluator for Commands.
API:
- Documented a lot of the struct fields for OSInputGlobals, and documented at least some of it's member functions
- Removed code for older version of Oblivion then the last version (1_2_416)
- GetFame() is now correctly placed into Actor vtbl instead of MobileObject
- CompareTo is now correctly in BaseFormComponent vtbl instead of being repeated in TESForm, TESModel and TesAttackDamage.
- Decoded some virtual functions and members on game structures, thanks to COEF and OR
PluginAPI:
- OBSEInputInterface to allow plugins to interact with the new Input System
- OBSEEventInterface allow plugins to install event handlers and dispatch UDF
xOBSE 22.1
Fix:
- Fix a serious regression in xOBSE 22.0 where using the hotkeys functions could cause crashes (thanks @Laulajatar for report). Enhanced Hotkeys users were affected by this.
- Fix a serious regression in GetInvRefsForItem where it didn't correctly handle anymore objects with no ExtendData (for example some objects stack that should have only xCount property have the extendData compeltly null after reload), causing the game to crash. Enhanced Hotkeys users that were using a binded hotkey to equip bow and arrows were affected.
- Made changes to improve robustness of overall ExtendData and ExtraData usages.
- Using .0 minor revision was causing a mod with a bad obse check to fail. Using always revisions >= 1 solve this issue and should solve issues with similarly bugged mods.
- Fix an issue with GetBaseAV3 that was causing crashes
xOBSE 22.0
Global:
- Added an AppVeyor CI. Build will be pushed from AppVeyor instead of using a local build.
- This should also fix the slow start some people are experiencing, while keeping the CRT statically linked
Fix/Changes:
- GetByOpcode was using a linear search (O(n)) for know opcode, reimplement to constant time (O(1))
- Add a check for parentCell in GetParentCellOwner command. Should fix a CTD when the parentCell is NULL
- Rewrote InventoryReference and ContainerForLoop code. Should fix some memory leaks and items that weren't removed properly from the containers. Also fix a crash when iteratating the inventory in menumode while having a soultrap event handled
-Fix an issue with GetActiveMenuElement where it wasn't working on keyboard selected elements
API:
- Decode more arguments for RemoveItem
- Add 10 arguments ThisStdCall
- ExtraContainerChanges use tList for objList field, instead of rolling specialized version of a linked list everytime
- General fixes to tList and its Iterator class
- Add Tile::GetContainingMenu member function, thanks @DavidJCobb
- Some bits of PlayerCharacter from @EchoEclipse
PluginAPI:
- Add a TasksInterface, to enqueue functions to operate on the OBSE mainloop.
xOBSE 21.8:
Global:
- Code MSVC 2019 complaint, remove hash_map and remove va_start reference usage
- Example plugin error message print the OBSE version as decimal instead of hex
- Added the possibility to use the obse_launcher.exe to launch the steam version of Oblivion (EXPERIMENTAL, works under Proton)
- Added the Polish Antology version by Cenega
- Restructured INI handling in a centralized store.
Fix:
-Fixed a CTD on the OnSoulTrap handler, when using soulgems with stolen flag and other extra-data
-Fix GetCurrentEventName returning an empty string (and other issues)
-Fix IsReference returning always 1 in OBSE expressions
Addition:
- Add GetBaseAV3/GetBaseAV3C as correct replacments of GetBaseAV2(C) functions.
- GetBaseAV2(C) functions are deprecated
- IsNaked function added
API:
- Added more TESForm flags and decoded TESObjectCELL InvertFastTravelBeheaviour flag
- Add shadeMe definition of Unnk1B20 structure.
- Decoded more stuffs for TESRegion and RegionList
Documentation:
- Improve GetFormFromMod
- Add SetPlayerSkeletonPath
xOBSE 0021.5:
Global:
-Compiled with vs2019.
-Fixed example plugin compilation
Fix:
-Fixed a critical bug in the Event Handler System that could cause CTD when too much handlers are used.
-Fixed GetDistance definitions
-Fixed HasSpell to work correctly on creature actors. Also slight optimization of the function.
-Fixed GetSelectedSpells CTD
-Fixed Actor Override Breath System
-GetCombatSpell don't return every spell duplicated 4 times anymore
-Fixed tList SetAt function that could cause issue if the allocator can return less then 8 bytes
Addition:
-Added EventHandlerExist function.
-Added console print for IsPluginLoaded/Version
-Added the GOG version and another Polish version to the launcher
0021:
-Fixed swimming event registrations
-Fixed format string evaluation inside compiler overridden blocks
-Fixed the %n format specifier to correctly handle deleted references
-Fixed Get/SetLevCreatureTemplate and SetCalcAllLevels command definitions
-PluginAPI addition: IsUserFunction
-Reverted the No Actor Value AV type code to its original value to preserve backward compatibility
-Added a command alias for SetFlyCameraSpeedMult (SFCSM)
0021 beta 4:
-Fixed AV type code for No Actor Value (existing scripts that use the old value, 256, will need to be corrected manually)
-GetAVSkillMasteryLevel/C uses base actor value for the skill
-Fixed ToggleCreatureModel to not CTD when enabling models
-Fixed GetStageIDs to work with stage-less quests. And to work in general
-Fixed GetStageEntries to correctly populate its result array
-Fixed RemoveEventHandler to correctly handle filtered OnHealthDamage event handlers
-Fixed GetLuckModifiedSkill to allow negative values, call game code to calculate the capped value (to improve compatibility with plugins that modify the formula)
-GetFactions
-GetLowActors
-Get/SetLevCreatureTemplate, SetCalcAllLevels
-OnWaterSurface/Dive, Get/SetActorSwimBreath, Get/SetActorMaxSwimBreath, OverrideActorSwimBreath
-Fixed MagicEffectUsesOtherActorValue-GetMagicEffectOtherActorValue/C mix-up
-Allowed SetMagicEffectResistValue/C to remove resist AVs
-SetFlyCameraSpeedMult
0021 beta 3:
-Fixed compatibility with the CustomSpellIcons OBSE plugin
-Fixed issue with the script precompiler that caused it to erroneously display errors when a script ended with a commented line
-Fixed issue with the equality operator that prevented the correct evaluation of numeric-form comparisons
-Fixed SetSoulLevel/SetSoulGemCapacity; they apparently never worked hitherto
-Fixed GetActorValueC to correctly return negative actor values
-OnQuestComplete, OnMagicCast, OnMagicApply
-Get/SetSkillSpecializationC, GetRequiredSkillExpC, GetAVSkillMasteryLevel/C
-GetLuckModifiedSkill accepts an optional arg to return the uncapped result
-Missing plugin handler warnings display the name of the delinquent plugin
-Added attacker filter to OnHealthDamage
-Added GetActiveMenuRef support for the enchantment recharge menu
-PluginAPI additions: GetPluginLoaded, GetPluginVersion, PeekNextRecordInfo
0021 beta 2:
-Added support for minidump generation to help with post-mortem debugging
-Fixed issue with RunScriptLine that caused rare CTDs during game initialization
-Fixed issue with the serialization code that caused CTDs when a game session's initial loadgame operation failed
-Fixed issue with RemoveScript that caused a CTD when called on a non-scriptable object
-Fixed issue with ExpressionParser that prevented magic effect script references from being resolved correctly when using the compiler override
-Patched vanilla bug that casued a CTD when an effect-less spell was added to the player using the AddSpell command
-Patched vanilla bug that prevented NPCs from activating containers that had onActivate blocks in their scripts
-Patched vanilla bug that permanently prevented the normal activation of unscripted objects when the Activate command was used on them
-Annealed runtime error notification messages for script errors
-GetGroundSurfaceMaterial
0021 beta:
-SetCombatStylePowerAttackFatigueModMult
-HasTail, GatTailModelPath
-GetLuckModifiedSkill
-sv_ToUpper, sv_ToLower
-SetCellMusicType
-Get/SetSoundAttenuation
-GetStageIDs, GetStageEntries
-Set/UnsetStageText
-SetStageDate
-UpdateContainerMenu, UpdateSpellPurchaseMenu
-LinkToDoor
-CopyRace
-SetCreatureType
-DispatchEvent
-Support for user-defined events
-ToggleSkillPerk supports Journeyman and Master Mercantile perks
-OnSoulTrap, OnSaveIni, OnMagicEffectHit2 events
-Pass string variables to vanilla commands using '$quest.stringVar' syntax
-MessageEX takes an optional duration, effective only if MenuQue plugin is running
-ModPCMovementSpeed and ModPlayerSpellEffectiveness accept an optional parameter indicating if their effects should persist in the savegame
-Fix recursive calls to *_NS commands not blocking message spam
-Combat style commands allocate memory for "advanced" settings if not already present
-Made annoying editor warning about unquoted strings/function pointers toggle-able through INI file (in the Data\OBSE folder)
-Plugin API allows authors to optionally avoid dependencies on GameAPI/Utilities header files
-Patch vanilla bug in which RemoveAllItems and GotoJail commands cause equipped quest item enchantments to become permanent
-New loader injection method for the editor
-Fix issue with PluginManager that caused a CTD when a plugin registered a listener inside a dispatch callback
-Updated project to Visual Studio 2010
-Add compiler override support for script bytecode lengths exceeding 0x4000 bytes when using the CSE OBSE plugin
-Minor documentation fixes
0020:
-ToggleSkillPerk
-Fix compiler override using localized actor value strings
-Fix IsNthEffectItemScriptHostile returning inconsistent values
-Prevent equipping an item from generating multiple OnActorEquip events
-Prevent power-attacking generating multiple OnAttack events
-Fix GetActiveSpell returning zero if the player has not switched from the default starting spell
0020 beta 6:
-GetCellNorthRotation
-SetRaceWeight/Scale
-SetGoldValue_T
-GetActorBaseLevel
-SetDoorTeleport now accepts an optional argument specifying the change should not be recorded in the savegame
-OnCreatePotion event
-Fix issues with input functions arising from conflicts between mods using GetKeyPress and Enable/DisableControl.
-Fix IsDigit always returning true regardless of character type
-Fix misnamed OnPlayerDrop event to OnActorDrop
-Prevent GetDescription using cached value of skill perk text.
-Make SetInputText accept extremely long strings
-Make compiler override accept string_var as argument for old sv_* commands
-Fix OnSkillUp event
0020 beta 5:
-Get/SetLocalGravity
-Get/SetVelocity
-GetVerticalVelocity
-New events: OnHealthDamage, OnCreateSpell, OnEnchant, OnAttack, OnRelease, OnBowAttack, OnBlock, OnDodge, OnStagger, OnRecoil
-OnActorEquip event now triggered by actors equipping items due to changes in their AI
-SetVerticalVelocity now operates in game units instead of centimeters
-Internal changes to handling of parallel script execution
0020 beta 4:
-Get/SetCellWaterType
-GetEquippedTorchTimeLeft
-(Set)IsHidden/Automatic/MinimalUseDoor, SetIsOblivionGate
-OnEatIngredient, OnNewGame events
-Update active effect commands to work on non-actor magic targets (doors, furniture, etc)
-ar_Erase erases all elements if second argument omitted
-GetGameLoaded now returns true when the player starts a new game
0020 beta 3:
-OnDrinkPotion, OnActorDrop, OnSpell/ScrollCast, OnFallImpact, OnMapMarkerAdd events
-SetVerticalVelocity
-GetHigh/MiddleHighActors
-GetCurrentPackageProcedure
-Get/SetSkillSpecialization
-GetEditorID optionally does not return formID if no string editorID exists
-%B, %b format specifiers for colored text in console
-Fix compiler override not being deactivated at end of script block
-Fix crash in GetRaceHairs/Eyes if race has no hairs/eyes defined
-Fix OnHitWith event being reported multiple times per event if weapon enchanted
0020 beta 2:
-Set/ClearPlayersLastRiddenHorse
-GetNthActiveEffectActorValue
-Equip/UnequipItemSilent
-GetCurrent/CallingScript
-GetRaceVoice now returns "this" race if no voice race is defined
-SetCellWaterHeight now works with cells that aren't defined in editor as having water
-Make "stringVar[-x]" work as expected
-Make foreach/while loops thread-safe
-Fix issue with IsKeyPressed2 introduced in 0020 beta
0020 beta:
-Compiler override for passing OBSE expressions and data types as arguments to any command
-Get/SetCellLighting
-IsNthActiveEffectApplied, GetNthEffectItem
-GetMapMarkers
-PlayIdle
-ar_CustomSort
-GetPathNodesInRadius/Rect
-Is/SetPathNodeDisabled
-GetPathNodePos
-PathEdgeExists
-GetPathNodeLinkedRef
-Get/SetCellClimate
-SetCellBehavesAsExterior, SetCellHasWater
-IsCellPublic, SetCellIsPublic
-IsOblivionInterior/World, IsInOblivion
-(Set)CanFastTravelFromWorld
-GetBoundingRadius, GetEditorSize
-GetTerrainHeight
-ResolveModIndex
-SetPos_T, SetOwnership_T, ClearOwnership_T
-GetRequiredSkillExp
-HasEffectShader
-Get/SetLightDuration, Get/SetTimeLeft
-SetCreatureSkill
-SetInputText, SetTextInputControlHandler, SetTextInputDefaultControlsDisabled
0019b:
-Fix changes made to inventory references not being saved if the item previously had no associated extra data
-Fix a potential issue with string variables
-Prevent infinite loop in RemoveEventHandler if more than one script registered for a particular event type
-Partially fix an issue with Quest Log Manager mod generating array access errors
0019a:
-Fixes an issue with stolen items in inventory
0019:
-GetAllModLocalData
-Optional flag to RunScriptLine and RunBatchScript allows suppression of console output during script execution
-Suppress editor warning about unquoted string when using the '->' operator
-Add 'type' field to array returned by GetPackageData
-GetBaseAVForActor now works for all actor values defined on base actors
-Fix GetCellChanged command not reliably reporting cell transitions
-Fix editor CTD associated with a buffer overrun bug present in the unmodified Construction Set
-GetFirst/NextRef now support extremely large worldspaces
-Prevent OnHitWith events from being reported to event handler scripts twice per event
-Fix issues with GetBarterItem
-GetPackageData now includes a 'Type' field indicating the package type
-Various miscellaneous tweaks and bug fixes
0019 beta 4:
-GetWeatherOverride
-GetPackageType
-RemoveModLocalData
-ClearActiveQuest
-GetCurrentEventName
-Get/SetLightRGB
-GetTransactionInfo
-PrintActiveTileInfo
-MagicEffectCodeFromChars
-Fix potential vanilla buffer overrun when parsing commands entered at console (so-called '73-byte bug')
-Add OnActivate event handler support
-Event handlers can now be used with non-actor references
-Add PostLoadGame event handler
-GetActiveMenuSelection correctly recognizes and returns scrolls in magic menu
-GetInputText takes an optional argument to strip HTML from the returned string
-Make game preserve ownership data on inventory references
-Inventory references now correctly handle large quantities of items in a single stack
-Fix potential CTD in AddToLeveledList if called with an invalid list
-Updates to serialization of array/string variables
-Fix potential CTD if GetBarterItem called while a transaction is in progress
-SetClassSkills2 now works as advertised
0019 beta 3:
-GetClassMenuSelected/HighlightedClass
-GetEnchMenuBaseItem
-IsQuestCompleted, UncompleteQuest
-GetRaceHairs/Eyes, GetRaceDefaultHair
-GetInvRefsForItem
-Update plugin API to allow calling user-defined function scripts from plugin code
-Allow plugins to accept array variables by ID as command arguments
-Expand plugin array variable interface
-Fix incorrect number of parameters for SetPCAttributeBonusC
-Fix potential crash when saving after iterating over inventory references
-GetFirst/NextRef now ignore partially-loaded references
-Fix issue with ToggleSpecialAnim
-Misc. fixes and tweaks
0019 beta 2:
-RemoveEventHandler
-GetBookLength
-Get/Set/ModGoldValue now return correct values for alchemy items
-ar_Map and ar_List now accept up to 20 elements
-Fix potential crash when passing strings to script commands
-Fix issue with token/activator scripts which could cause Super Hotkeys to stop functioning
0019 beta 1:
-Inventory reference-walking functionality
-GetMagicEffectChars(C)
-Getters/Setters for spell flags
-Get/SetActiveQuest
-GetCurrent/CompletedQuests
-Commands for getting and setting location/target/schedule data for AI packages
-ar_Map, ar_Append
-Get/SetTexturePath
-Get/Set/ModSigilStoneUses
-SetDescription
-SetCreatureSoundBase
-GetBoundingBox
-Update3D
-Commands for getting information about the most recent barter transaction
-Commands for getting information about the quantity menu
-IsEquipped
-Get/SetPCAttributeBonusC
-RemoveMeIR, CopyIR
-CreateTempRef
-GetCellChanged
-SetClassSkills2
-Commands for getting information about the most recent Sigil Stone enchantment
-New operators: unary*, unary&, ::, ->
-Updates to plugin API
-New, more readable command documentation format (courtesy of TheMagician)
-Allow use of SetModelPath with creatures and NPCs
-Allow user-defined functions to be called from within array elements
-IsOffLimits uses player by default if argument omitted
-Move SetScript out of beta status
-SetEventHandler
-Linear Algebra functions
-Commands for manipulating actor value modifiers
-Miscellaneous bug fixes and tweaks
0018:
-EquipItem2, EquipItem2NS
-GetTeleportCellName
-EquipMe
-sv_Percentify
-GetNthAEEnchantObject, GetNthAESummonRef, GetNthAEBoundItem
-Fix crash when attempting to pass a string variable using '$' prefix
-Fix an off-by-one error in y-coordinate of cells scanned by GetFirst/NextRef
-HasName returns false if a potentially named object has no name
-Update plugin messaging API
-Fix potential crash in PrintTileInfo
-Miscellaneous tweaks and bug fixes
0018 beta 6:
-CalcLevItems
-ar_Range
-GetRaceWeight
-IsOblivionGate
-GetMouseButtonsSwapped
-GetCellBehavesAsExterior
-GetAllies, GetTargets, GetSelectedSpells, GetCombatSpells
-Update plugin array variable API
-Fix token script errors caused by multi-threaded background loading of cells
-Upgrade GetFormFromMod to look up dynamic forms
-Add unary * operator for dereferencing a foreach iterator array
-Miscellaneous tweaks and bug-fixes
0018 beta 5:
-Fix potential errors in token scripts when loading a saved game
0018 beta 4:
-GetRaceScale,
-GetCurrentPackage, GetCurrentEditorPackage
-GetWorldspaceParentWorldSpace
-QuestExists, GlobalVariableExists
-StringToActorValue
-Fix MapMarker bugs from b3
-Fix GetEquipmentSlot and GetequippedObject with the Torch/Light slot
-Fixes for OutputLocalMapPicturesOverride
-Fixes for Set/ModEquippedCurrentHealth
-Fix for errant problems with array access
-Fix for various expression parsing errors
0018 beta 3:
-GetWaterShader
-SetOLMPGrids, GetGridsToLoad, OutputLocalMapPicturesOverride, con_OutputLocalMapPictures
-GetRaceReaction
-GetBaseAVC alias for GetBaseActorValueCode
-SetCurrentHealth
-TriggerPlayerSkilluse/C
-ModPlayerSkillExp/C
-Get/SetPlayerSkillAdvances/C
-Operators: * defined for strings, -= for numbers, unary # shortcut for ToNumber
-Enable support for select OBSE commands in quest/dialog conditions (currently only GetPCTrainingSessionsUsed and IsAmmo supported)
-Fix SetBookSkillTaught
-Make Get/Set/ModEquippedXXX commands work with multi-slot apparel
-Fix inconsistent behavior with ar_Insert, ar_Size, and ar_Erase
-SetName/Ex update map menu immediately when changing the name of a mapmarker
-Fix crash when comparing empty strings
-RunScriptLine and RunBatchScript now return false if errors occur, true if successful
-Fix literal integrals used as command arguments in range 0-255 being treated as negative at run-time
0018 beta 2:
-Add operators *=, /=, and ^=
-Operators == and != support array comparisons
-Fix GetNthEIScript return type
-Improve script error reporting
-Fix crash with GetTeleportCell
-Reduce compiled size of integral operands in script bytecode - this helps alleviate a bug in the default compiler, but does mean that scripts using the obse expression handler and compiled in v0018 beta 2 must be run in v0018 beta 2 or later.
-Fix crash compiling function scripts taking more than the maximum 10 arguments
-GetDoorTeleportRot returns z-rotation instead of x-rotation
-SetDoorTeleport correctly sets rotation
-Fix crash with some combat style functions
-import modwatershader console command as con_modwatershader
-miscellaneous internal bug fixes and tweaks
0018 beta 1:
-User-defined functions
-Class functions
-GetUserTime
-GetCreatureModelPaths
-Get/SetSkillGoverningAttribute
-Get/SetPlayerBirthsign
-GetActorAlpha
-GetMapMenuMarkerName/Ref
-ToNumber
-GetActiveEffectCodes/Casters
-GetCurrentRegions
-SetPackageTarget
-GetBaseAV2
-GetSpecialAnims
-ToggleSpecialAnims
-GetLeveledSpells
-GetDescription
-sv_Split
-Array resizing, insertion, and list creation functions
-Get/SetGameDifficulty
-Set/ModCurrentCharge
-Door teleport functions
-Cell reset functions
-GetTelekinesisRef
-GetActorPackages
-AI package functions
-combat style flag functions
-various miscellaneous functions, bug-fixes, and optimizations
0017b:
-Support for the Steam version of Oblivion. Huge thanks to jmccaskey at Valve for his assistance in getting this set up.
0017a:
-Fix compiler occasionally freezing when attempting to save a script
-Make local variables take precedence over objectIDs in cases of name collision
-Fix crash with GetEquippedItems after unequipping slotless items
-IsModelPathValid now works with non-simple models like NPC and Hair
-Remove delay between calling InsertInInputText and seeing the displayed text updated
-Empty strings are no longer displayed as "NULL" with the %z format specifier; instead nothing is displayed
0017:
-CanUsePower, SetCanUsePower
-GetUsedPowers, SetPowerTimer
-Plugin API dispatches messages to registered plugins containing savegame name immediately before save/load serialization events
-Fix bug in which nested arrays could become invalid when reloading a svegame
-Compiler errors include line numbers
-ar_Last no longer crashes if array contains only one element
-obse_loader properly handles when large address aware flag is set on oblivion.exe
0017 beta 2:
[** Upgrade Information **]
Several changes occurred between beta 1 and beta 2 which require attention for users of mods based on beta 1. All scripts based on beta 1 need to be recompiled in the editor in order to function properly. Modders please update your mods; users please contact the authors of your mods for updated files. Additionally, due to the introduction of reference-counting for arrays, modders should be aware that arrays created and saved using beta 1 are compatible with beta 2 provided that exactly ONE reference to each array exists. If your scripts make use of the now-deprecated assignment-by-reference operator '=>', resulting in multiple references to the same array, then your users will need to revert to a clean savegame.
Please note that backward compatibility is not guaranteed for beta releases of OBSE. Once 0017 is officially released, we will maintain backward compatibility with the stable version.
[Changes]
-Fix assignment of forms to array elements in OBSE expressions
-GetClass takes an optional base NPC as an argument
-'%q', '%r', and '%e' are supported in string arguments to all functions, vanilla or otherwise
-Ref-walking functions work correctly
-Array assignment is now by reference. OBSE destroys arrays when they are no longer referenced, so scripts are no longer responsible for memory management
-PrintTileInfo no longer crashes the game
-Compiled bytecode for OBSE expressions is more concise
-GetButtonPressed works correctly for text input messageboxes generated from scripts attached to temporary references
-Added QuitGame/QuitToMainMenu messages to Plugin messaging API
-Compiler enforces correct loop structures
-Added '$' operator as shorthand for ToString command
-Alternate syntax for sv_Destruct accepts multiple string variables as arguments
-ar_Null, ar_Copy, ar_DeepCopy
-ar_First, ar_Last, ar_Next, ar_Prev
-ar_Keys, ar_HasKey
-ar_BadStringIndex, ar_BadNumericIndex
-NumToHex, GetFormIDString, GetKeyName, AsciiToChar
-DeleteReference
-ActorValueToStringC
-IsOblivionGate
0017 beta 1:
-Array variables
-ForEach and While loops
-New expression syntax
-Effect setting functions
-Combat style functions
-Activate2
-GetCurrentRegion
-Functions to detect if keys or controls have been disabled via script
-GetEquippedItems
-IsRefDeleted
-Various bug-fixes and miscellaneous functions
0016:
- DeleteFromInputText
- MoveTextInputCursor
- Get/SetStringIniSetting
- Get/SetPCTrainingSessionsUsed
- Updated plugin API
- Miscellaneous bug fixes and tweaks
0016 beta 2:
Bug fixes:
- SetPCMajorSkillUps modifies player's ability to level up if it puts him above or below the levelup threshold
- Fix display issues with text input commands
- Crash when calling GetCursorPos during gamemode while playing in full-screen mode
- UpdateTextInput restores previous buttons if input box is closed and reopened
- sv_Replace now works correctly
- MenuTapKey now works correctly
- Remove DeleteReference command until support for Oblivion v1.1 becomes possible
- %n specifier prints names of exterior cells
- Restrict SetBaseForm to non-actors
Enhancements/Additions:
-GetLastCreatedPotion, GetLastUniqueCreatedPotion
- sv_Set
- IsConsoleOpen
- GetBookText
- GetMenuHasTrait
- SetChanceNone
- IsControl, SetIsControl
- Ability to specify button ID rather than name for ClickMenuButton
- Plugin API for string variables
- Allow default text for book text input
- Alternative to pipe character for string parameters to commands called from the console
- Add optional RunOnRef param to RunScriptLine and RunBatchScript
0016 beta 1:
- New string variable datatype and associated commands
- Debug mode output for scripts
- Text input capabilities
- Spell effectiveness modifier commands
- Mapmarker commands
- UI manipulation commands
- Rudimentary script error logging
- Projectile commands
- Various other miscellaneous commands
0015a:
- Fix crash when biped model path functions called on an object for which the specified model is not defined
- Update GetMagicProjectileSpell to return staff enchantment for projectiles fired from a staff
- Fix incorrect return value for GetPluginVersion when specified plugin is not installed
- Plugin manager now offers some protection against misbehaving plugins
0015:
- Add manifest to obse_loader to request UAC elevation on Vista
- Add -waitforclose loader option to help programs that watch for process termination
- Fix bugs in Enable/DisableControl
- Fix crash in various formatted string functions
0015 beta 2:
- Fix crash when passing a value of zero to %k format specifier
- Restore previous behavior of GetAltControl; add GetAltControl2, deprecating GetAltControl
- GetAlchmenuIngredient/Count/Apparatus
- Fix non-functional commands IsOnGround, IsInAir, and IsJumping
- SetNameEx now operates on references as well as base objects. NOTE: The order of parameters has changed.
- Engine fixes for leveled list saving/loading
- Fix error reporting bug in the CS
- Fix kParamType_InventoryObject extraction in ExtractArgsEx
- Fix plugins not receiving a load callback if they have written no data
- Replace LL rand() calls with mersenne twister
0015 beta 1:
- Plugin serialization API
- Versions of functions such as AddItem which don't generate UI messages when called on the player
- Projectile functions
- Functions returning information about the active mod list
- Sound functions for objects and creatures
- Functions returning information about an NPC's hair and eyes
- ToggleCreatureModel
- Functions to access variables in external scripts by name
- Functions to test the validity of reference variables
- SetMessageSound/Icon
- GetFullGoldValue
- Hotkey functions
- Detection state functions
- Functions to get and set services offered by NPCs including training
- Functions to iterate over an actor's AI packages
- Animation-related functions for actors
- Functions to return information about an actor's Havok state
- GetGodMode
- CompareScripts
- Leveled list functions
- Input functions are now synced with Oblivion control bindings
- Get/SetSpellHostile
- Functions to determine if a file path is valid
- Functions to return information about the player's level-up progress
0014b:
- Fix plugin command overwrite bug
0014a:
- Fix SetEnchantment to work on arrows
- %p, %q, %{} specifiers for output functions, fix bug when displaying names containing literal percent signs, increase max string length
- Fix bug with MessageBoxEx and GetButtonPressed
- IsOffLimits ignores evil factions
0014: Message extension functions, NPC, Actor and Creature misc functions, Faction functions, Race spell functions, Is/SetHarvested, ActorValue extentions for ActiveEffect and HasEffect functions, IsPersistent, IsOffLimits, GetHorse/GetRider, Get/Mod/SetActorValueC, GetBaseActorValueC, GetCreatureSoundBase, GetNumRanks, HasModel, IsModLoaded, HasName, HasBeenPickedUp, GetRace.
Flag for ref-walking functions to include inactive references.
Tweaks to GetSpellMagickaCost to include Luck and skill caps.
Fix crash when adding a ScriptEffect with no name.
Fix crash when quest scripts call ref-walking functions during Main Menu.
All OBSE functions now accept float, long, and short variables defined in external scripts as arguments.
0013a: bug fixes for GetOpenKey, SetNthEIXXX, Ref walking functions
0013:
- climate manipulation functions
- new easier-to-use input functions
- active magic effect manipulation and querying functions
- plugin querying API
- cell water level functions
- con_LoadGame, SetPCAMurderer
- internal visitor class framework
- improve speed of inventory walking via higher-level data structures
- fix Set/GetAttackDamage for creatures
- fix Set/GetEquippedWeaponPoison from stopping the script
- get/set travel horse and open key
- weather manipulation functions
- leveled list functions
- set/copy hair and eyes
- get creature base scale, reach and soul level
- get/set container respawns
- ownership functions
- linked and teleport door functions
- RefreshControlMap
- GetFirstRef, GetNextRef, GetNumRefs
- bugfixes for GetEnchantmentCost, GetSpellMagickaCost, IsAutoCalc, SetAutoCalc
0012: Official plugin support, race attribute and skill functions, some climate and weather functions, enable effect item functions for ScriptEffects, add SetNthEIScript and SetNthEIScriptName, Get/SetSpellExplodesWithNoTarget, GetScript, RemoveScript, SetScript
0011: Skill experience functions, AddFullEffectItem, RunBatchScript, global collision setting functions, more console commands, ModName and AppendName and several defect fixes
- fixes GetBaseObject
- IsArmor, IsBook, IsContainer and IsSoulGem no longer require the passed object ID
- CopyAllEffectItems, CopyNthEffectItem and RemoveNthEffectItem no longer need a cloned form as a target
- Adds con_SaveINI, con_QuitGame and con_TGM
0010: Magic effect, book, model path manipulation, more console commands, menu input functions, math functions
- update game setting/ini file functions to work with unsigned and boolean types
- buffered input functions, useful for menus or other text input
- fix some potential thread-safety issues
- patch the RefID wraparound bug in 1.1.511 and 1.2.214 (note that the number will keep going up, but with OBSE installed it will wrap from 0xFFFFFFFF to 0xFF000000 properly)
- fix Is* functions, allow passing arguments that are not considered 'inventory items'
- replace local magic effect list with access to oblivion's internal list
- actually seed the random number generator (doh)
- fix internal access to form list for 1.2.214
- calculate fps via average frametime (calculated via GetTickCount) over 20 frames
- log version of OBSE, version of Oblivion in obse.log
- change resource version number to 0.0.10.1 to allow for more precision when releasing intermediate versions without ticking the major version number
- include NSIS script for modders that want an installer
0009e: Compatibility with patch 1.2.0.416
0009d: Compatibility with CS 1.2.0.404
0009c: Compatibility with CS 1.2
0009b: Compatibility with patch 1.2
0009a: Bugfix release, fixes flow control functions and a potential SetModel crash
0009: Individual GetValue functions, Set/ModValue functions, Beta Flow Control functions, new HTML command documentation
- adds 114 functions: 70 provide completely new functionality
- fix bug looping over magic effects
- fix bug in GetMIV Poison to accurately return if the object is poison or not
0008: GetEquippedObjectValue, GetEquippedCurrentValue, GetMagicItemValue, GetMagicEffectValue, GetMagicEffectCodeValue, MagicItemHasEffect, MagicItemHasEffectCode, GetNumMouseButtonsPressed, GetMouseButtonPress.
- added Enchantment value to the Object Value functions to return a ref to any enchantment on an object
- fix bug where equipment functions didn't manage rings correctly. The ring slots now return whatever ring is worn on that side, regardless of the form's declaration as a left or right ring slot.
- fix bug with signed mouse movement
- fix fake mouse keycode
0007: GetOV Values: QuestItem, Poison, Food, unofficial oldblivion support, editor font changes
- fix bug with GetOV ArmorType
- fix bug with IngredientItem decoding affecting GetOV weight and value
- integrate changes from Timeslip
- reimplement editor font changing code so it works on win2k, add font picker dialog
0006: Item Value functions, Item type functions, Class functions, HasSpell, ModActorValue2
- more form structures and class decoding
- fix bug with GetEquippedObject not returning an object that is damaged where another non-damaged object is the the inventory.
0005: fixing math functions, DirectInput, GetOBSEVersion, console commands
- converted to VS2005
- compiles under VS Express
- add timeslip's math fns, rename old fns
- add many new CRCs
- more form structures, a few game objects also
- update rand function to use mersenne twister
- add DirectInput hooking functions, disallow modification of ESC and ` keys
0004: PrintToConsole, Get/SetActiveSpell, GetParentCell, math functions, alpha release
Implemented PrintToConsole, Get/SetActiveSpell, GetParentCell, several math functions. Alpha release version, OK to use in released mods.
- all RTTI structures
- many form structures defined
- testing dynamic form creation
- improve dll loader sync for editor
- added Utilities file with analysis utils
0003: GetEquipmentSlotType. determining how inventory items are stored along with their extra data
Implemented GetEquipmentSlotType. Fixed floating point return types for all functions. Considered an alpha release candidate.
- fix script result type
- pad opcodes out to 1400
- get equipment command
0002: first useful commands
Implemented GetNumItems, GetInventoryType and IsKeyPressed.
- dynamic_cast support
- form access (no data yet)
- extra data list access
- more virtual functions documented
- class hiearchy
- minor code reorg
- extra data types
- container access
- variable name cleanup
- input commands
- inventory commands
0001: first release
Simple proof of concept demo.