* extend tests
* more tests for world save
* explicit handle the special layers in wornitem
* add Location variant and relocate() methods
* refactor GottenItem and ensure Chr, not wornitems, is saved
* deflake escript watch test
* dropitem and undo refactoring
* uomod changes
* add more item tests (buy, sell, hair...)
* use location for undoing trade container properly
* rewrite loaddata to use relocate, fixing startup crashes
* do remaining location changes
* fix CI tests
* remove container pointer from item and add wearer() reference
* remove layer writes and explicit intrinsic weapon handling
* add preparing state for fresh items without serial number
* move wornitems to detached state only when it has a serial number
* load corpse items into the correct layer
* do not set a layer on load before the item is equipped
* add more tests to equipped and intrinsic items
* remove layer and substitute with the location()
* add core-changes summary
* mark items as being worn on corpse if they only moved within the corpse
* block Preparing from being reached, just to be sure
* added integrity sweep check
* Reduce direect changes to item location
* Add Item::move_into() and rewrite calling sites
* Fix container slots
* get rid of the slot_index on the item, because Location() already has it
* fix race in test leading to macos issues
* fix dangling pointer
* remove corpse can_equip_list and rely on the GottenItem rules to dress the corpse again
* let item->destroy() detach the item
* make integrity checks fail the tests
* use place_at(item, newpos) for changing item position InWorld
* add boat test for item moved out of boat that should not be visible anymore
* use place_at() in more places
* ensure CreateItemAtLocation really does
* fix Claude instructions
* remove state we didn't need
* fine tuning
* reduce test flakiness
* all except pol
* pol and includes under defines
* something weird has happened
* remove own folder from include searchpath
* fixed remaining, adapted include style for external headers
* missing include
* use offline char ref for equip, unequip scripts
* add Character script member logged_in; docs; tests
* update core-changes for Character script member logged_in
* Add breaking-changes note
* implementation
* tests
* maybe fix windows compilation?
* undo change of match_flag_type
* switch to boost regex
* move flags to BRegExp object
* fix tests due to cmake 4 update
* update grammar
* update prettifier
* move flag parsing to BRegExp ctor
* add AST nodes, update instr generation and execution
* copy tests but use regular expression literals
* fix grammar for handling division correctly
* modify return values a bit, update tests
- string.match: make groups hold structs of matched, offset
- string.match: add offset
- string.replace: use a groups array like string.match vs individual arguments
* bundle of changes
- standardize error messages
- add more tests for coverage
- move BRegExp creation to static method: previous implementation had
ctor throwing, which was no good inside executor since it didn't have
a try/catch
* more tests; add OT_REGEXP to basic.em
* move string regex stuff to bregexp and support regex/wregex via std::visit
* maybe fix compilation errors?
* add unicode escape sequence handling
* really maybe fix compilation error?
* fix compiler warnings
* refactor a bit to remove duplicate code
* address discord comments
- just return wstring, no need for vector<wchar_t> method
* Add string.split by string and regexp
* Use Max_Split instead of Limit
This makes it match basic::SplitWords
* add support for empty string delim in SplitWords
* remove duplicate code across string.split and mf_SplitWords
* Squashed commit of the following:
commit b3148e069f
Author: turleypol <turley@polserver.com>
Date: Sat Sep 27 17:02:22 2025 +0200
memorylocation of input string is not allowed to changed, switched back
to uniqueptr
commit 5a4d1c8fcb
Author: turleypol <turley@polserver.com>
Date: Sat Sep 27 10:18:01 2025 +0200
no need to use ptr for input
commit 90fa0edc66
Author: turleypol <turley@polserver.com>
Date: Sat Sep 27 09:56:29 2025 +0200
fixed typo
commit bed4ff3ac9
Author: turleypol <turley@polserver.com>
Date: Sat Sep 27 09:47:36 2025 +0200
make Callback for BContinuation move only
* use uninit when group isn't matched
* fix multiline flag handling; add test
* add docs and doc example tests
* some cleanup
* address review comments
- allow move assignment
* add core-changes
* Initial implementation, tests
* Enhance tests
* Add quiet to read_dbg_file
* Add pc to array format
* Add docs, core-changes
* fix bad PCs
* touchup on corechanges
* added multi prop/itemdesc items_decay
added region cfg entry NoDecay
misc cleanup eg chr->equip sets position instead of calling side
* docs
* added future pos refactoring comment
* changed region NoDecay to ItemsDecay so it matches the other props
* Initial commit of min and max range increase dynaprops.
* Fixed documentation and reported style issues.
* More style check fixes.
* Update missing uobject and script objects for new props.
* Rectify missing code from uoscrobj which prevented assignment on mobiles.
Changed range logic from weapons to include some sanity checks.
* Add a simple test
---------
Co-authored-by: Jonathan Morland-Barrett <jonathan@veridiandynamics.com.au>
Co-authored-by: Kevin Eady <8634912+KevinEady@users.noreply.github.com>
* added ssopt AllowVisualRangeModification which allows clients to modiy
their LOS via pkt 0xC8
* added ssopt MinimumVisualRange and MaximumVisualRange to limit the range
a client can define.
added r/w script member client.visual_range
if set via script the updaterange can no longer be modified by the
client
* fixed typo
* missing include
* if via script the visual_range is set to 0 use the client given range
remove/add objects when the visual range changes
added test
fixed testclient 0xbf sub clienttype packet
* extra logic to send/remove objects only if they are now/no longer
visible due to range change
script can by pass the VisualRange limit
added docs
* core changes
* Support default args in funcref calls
- Simplify BFunctionRef by using funcref index
- Emit default args when visiting function reference
* Move default args gen to second-pass visit
* Better error message on param count errors
* Check for constructor in MTH_NEW
* Address self-review comments
- Update code comments
* Introduce ResourceManager to pol testsuite
- Create a new class-based resource manager for deleting resources
(item NPCs, multis) after each test.
- Migrate house_set_multiid test to use new ResourceManager.
* Move resource cleanup
* Update grammar
* Implement selfIs in BObjectImp
* Add tests
* Update grammar
* Support obj.function as a MemberAccess [1/2]
- AST generation changes
* Support obj.function as a MemberAccess [2/2]
- add funcref index to eprog class table ctor entry
- allow check_mro on non-class inst (skip ctor calls)
* Move address of funcref into funcref table
* Add funcref.new()
- Add class index to funcref table entry
- Add MTH_NEW
* Fix formatting
* Address self-review comments
* Some more tests
* Address self-review comments
* Update grammar
* Remove ObjMember read_only, hidden
No need to special-handle MBR_FUNCTION
* Addres GitHub CI annotations
- '=': conversion from 'size_t' to 'unsigned int', possible loss of data
* POC of calling user functions from core
* rename to BContinuation
* fix annotation warnings
* fix annotation warnings 2
* some cleanup, comments
* add more params to filter
* add more tests
* fix stack issues, wip determine what to do with printStack helper testing function
* print stack only for debug; increase OTContinuation to 100
* docs
* remove debugging leftovers
* Implementation
* wip testing
* allow setting held weight mod to long value
* more tests
* address github actions warnings
- unary minus operator applied to unsigned type, result still unsigned
* Add docs, core-changes
* fix GetItemDescriptor() for HeldWeightMultiplierMod; update tests
* update docs a bit more
* Remove mod suffix
* Add item.weight_multiplier_mod
* Add test for item.weight_multiplier_mod
* add core-changes and docs
* Address review comments
- Use `Clib::clamp_convert`
- Remove new `weight_of` function
* Buffs: should be now possible to set for the first cliloc arguments,
added chr.buffs member to return the current buffs
* added test
* docs
* more docs
* Fix unhandled exception in UBoat::create_component
* Return 0 on unsuccessful boat move with MoveBoat and MoveBoatRelative
* Add boat.set_alternate_multiid
* skip base multiid in alternates boat struct
* Add test for boat.set_alternate_id
* docs, core-changes
* use array equals in test
* Initial work on boat piloting changes
- Changed: Boat script is now registered as the boat's control script
- Added: Boat piloting via mouse movement
- Added: boatRef.pilot member
- Added: boatRef.pilot([charRef]) method
* add first test
* Fix boat control script attach on scripted create
* move boat move packet warnings to suspicious acts
* set pilot now errors when mutli has no process
* Add test, testclient support for boat move packet
* Touchup pilot members and methods
- Change `pilot` method to `setpilot`. This standarizes it a bit with
the same naming convention of `npc.setmaster`.
- Fix return values in `pilot` member, returning `0` if no pilot.
* Refactor to put functionality inside UBoat
* Address Discord comments
- Remove SuspecisionActs for no boat process.
- Add `relative_direction` to boat move sysevent.
* destroy boatmount on chr death; more error checks
* Fix compilation after master merge
* Fix relative_direction calculation
* wip tests
* Fix boat tests
* Address review comments
- Initialize UBoat::mountpiece
* Add HSA check to boat.setpilot
* Reject movement if boat mountpiece equipped
* docs; test cleanup
* add test for blocked movement
* Address Discord review comments
- Add suspicious acts notice for client movement while piloting
- Return error on attempting to script move a char that is piloting a boat
* Fix compiler warning
* add item.character_owner
* Address review comments
- Cleanup chr_from_wornitems
- Return BError if no character owner
* Add Target option TGTOPT_ALLOW_NONLOCAL
* Address review comments
- Remove `Core::chr_from_wornitems`
* Add pol tests for snooping
* Add tests for TGTOPT_ALLOW_NONLOCAL
* target_nonlocal_checklos pol test debugging
* target_nonlocal_checklos pol test debugging
- Remove destroy of obstacle
- Add a CheckLosAt call to error return
* target_nonlocal_checklos pol test debugging
- Enable USAN build
* undo test debugging changes
* use mobile for los when targetting snoopable items
* Update core-changes
* Persist SnoopScript for items on save
* Add snoop_script_ to Item::estimatedSize
* document SnoopScript script type
* Initial work on adding SnoopScript
* use message "That doesn't belong to you..." if lifting a snoopable item
* fix configfile changes
* Update core-changes
* Fix SetString packet hook method writing UTF-8 instead of CP-1252. Add a new method, SetUtf8String, for writing UTF-8.
* Add functions that operate on whole strings.
* Fix a couple of bugs and add unit tests.
* Do not convert if the string doesn't contain any UTF-8
* Convert 0x80..0x9f control characters, which don't exist in cp1252, to question marks
* Fix SetUtf8String writing too few bytes if the string contained multi-byte UTF-8 characters
* Remove extraneous parameter from TextCommandScript documentation
* Update changes and docs