Added uoconvert.cfg element StaticOptions extended by DiscardedWaterTiles. Lists
the tiles that will be discarded during the processing of solid statics, where
the map is at or below the same Z level as the static, allowing boats to bump
into shores. Defaults to tiles in the range from 0x1796 to 0x17B2 if not present
in the config file.
* added debugs for boatmove
* log component send
* added option to resend components
* compilation fix
* activate by default
* cleanup fix no1
more debug logs
* test client now ignores/removes objects out of range
lets see what explodes
* syntax fix
* syntax fix..
* need a copy of the keys
* handle equipped items
* handle server side view range change
* test char on boat and move to npc
* compilation fix?
* more logs
* corrected logs
* the boat needs to move more
* change order, first smooth move then new objects
* correct fix I think
send new objects for all newer clients on the boat after the boat pkt is
send (which also updates the position for the client)
* cleanup, fixed first test by sending also the playerposition when a new
obj appears
* test for item on boat
* need to move the boat further so that components are in range
* is the test wrong or is it a bug?
* move further
* ability to disable auto delete of objects to be able to test serverside
remove pkts
* change start position of the boat
* cleanup and fixed tests?
* more cleanup
* docs
* 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
* update grammar
* AST nodes and test
* Address self-review comments
- Replace `super` comment with something more explanatory
- Rename `make_user_function`
* add class analysis for uninit functions
* fix ast test after disallowing static uninit funcs
* use std::ranges::find_if
* add tests
* use SUPER constant; add test
* Remove unreachable code leftover from #809
Since #809, the super function is only generated for a class when
registering a parent class, and therefore it will always have a body. A
"No base class defines a constructor" will only occur if super was never
generated, and is handled in the "No function linked through
FunctionResolver" section of semantic analyzer.
* Address review comments
- use std::ranges::move instead of move iterators
- use std::is_same_v<> vs std::is_same<>::value
- use switch vs chained ternary conditionals
* update escript guide, create tests that are in escript guide
* add core-changes
* Error on uninit and defined constructor
* Move methods' FunctionLink construction to builder
This allows the error message for the uninit function to have a "See
Also" that point to the defined function.
* Move error checks for uninit and defined functions
These semantic checks should be in the ... SemanticAnalyzer.
* fix typo in core-changes
* move compiler-generated ctor registration to within class declaration registration; update test error messages
* add more ctor inheritance tests
* skip "Unknown identifier" error for calling undefined ctor
* add test for actual, previously crashing source
* add test for actual, previously crashing source
* move compiler-generator super registration to within class declaration registration
* add super local var test
* make register_available_generated_function private
* remove ClassDeclaration::has_super_ctor
This property was based on if FunctionResolver created the function, so
the logic can be moved to FunctionResolver.
* add core-changes
* use constant for "super" string
* fix enum classes entries without initializer
* docs
* update grammar to support scoped identifiers in case labels
* add support for enum class constants in case statements
* add ScopableName to ConstDeclaration; formatting fixes; tests
* update docs
* further optimize shortcircuits
combine jumps if possible
dont emit logicalconvert instructions if the next instruction is another shortcircuit jump
* docs
* first working short curcuit for && and or
creates jumps after each expressions to skip the following
* fixed valuestack when short circuit jmp does not jump
* use specialized instructions for short circuit && and ||
1: lhs
2: logical jump if false/true goto 4 <- if jmp do logical convert
3: rhs
4: logical convert
5: rest
logical convert is needed since "normal" && || operations convert isTrue
to BLong
added BObjectRef BObjectImp set specialization to remove noise
* fixed converted objimp when jump on false values
* first version of short circuit warning
should be moved to analyzer
added whitelist of module functions which have no sideeffect to reduce
the number of warnings
* moved warning visitor to analyzer and added it as extra compile step
fixed sourceline print and cache the content
* missing include, unused member
* included the correct header
* ecompile.cfg to activate and warn
ecompile cmdline arg to activate it
run all tests also with it active
fixed that only the most right side statement was checked
* ecompile cmdline
* increase ecompile version
cleanup
* compilation error
* missing header
* allow -S- to deactivate shortcircuit like the other params do
* extended whitelist functions
* revert fileformat version increase
fixed escript test cmake
* use the correct arg
* escript testoutput can now be different if shortcircuit is active
* docs
* additional test
* addressed comments
* Add -Z option to print string tree
* Simple test to print an AST
* Make CompiledScript owner of the tree
* some refactoring
- rename ecompile.cfg option
- rename AST generator class
* core-changes, docs
* fix warnings
* compile time optimization:
int with doubles and strings
doubles with ints and strings
strings with ints and doubles
* bool with other types, more unary ops, float branch optimizer
* more tests
fixed bool to dbl compare
* output cleanup
more tests
* optimize string values in if statements, optimize ternary operator
* optimize elvis, addes missing files, code cleanup
* use array to keep unoptimized if branch in funcexpr tests
* missing include
* better readable testdata
* removed file
* optimize while and dowhile loops if predicate is a compile time known
value
* cleaner variant of loop optimization?
* added ConstantPredicateLoop Node used by the optimizer for constant loop
predicates
optimize repeat until loop
change tests to run the loops more then once to be sure they work
correctly
* test break/continue with label for constant-loop
* docs
* wip implementation
* maybe add tests...
* fix dependencies
* fix windows and mac deps
* attempt #3 for mac deps
* add --break-system-packages because WHY NOT
* add raii wrapper for curl_slist and curl_mime
* add content_type; fix incorrect recipient variable; more tests
* put smtpd log in file; add curl_easy_setopt_return_error; fix parsing email from display string
* remove some debugging
* catch exceptions in polsys::ReloadConfiguration; tests; smtpd cleanup
* Fix xslt validation erorrs in osem.xml
- `HTTPRequest`` did not have the `<code>` block inside `<explain>` so
it was not rendered.
- `LoadExportedScript` needed `<return>` after `<explain>`
- `GetEnvironmentVariable` needed `<return>` after `<explain>`
* Address review comments
- remove openssl test dep by generating cert, valid for 100 years
- only run test if asiosmtpd module is installed
* Address review comments
- remove `pChild`
- remove `curl_easy_setopt_return_error` macro
- return `new BLong( 0 )` for temp object replaced by background thread
* Address review comments
- use `Clib::localtime` + `fmt::format` for date header
* Address review comments
- Early exit on failures
* Address review comments
- Move suspend to immediately before background thread creation
* Address review comments
- better handling of curl_slist and curl_mimes
* Address Discord comments
- remove env check in test_email program
* attempt to fix timezone issue in date header
* additional tests for invalid params
* add docs, core changes
* smtpd: fix event loop, only run if not filtered out
* put stacktrace in "no signal received" error
* fix stacktrace call in testutil; add default param to os.environ.get in smtpd
* implementation
* tests
* docs
* Address review comments
- document resolution of 10ms (ie. 0.01)
- use clamp_convert vs. static_cast
- use impptrIf vs. isa
* implementation
* add tests, testclient support for wear_item todo
* add UpdateConfiguration to ResourceManager for tests
* add test that can only move equipped items
* add docs, core-changes
* add macro defs for Lord British, Blackthorn, Dupre
* update doc xmls' datemodified
* add test for paperdoll flags
* fix test_equip_npc_dragdrop race condition
* Fix gotten_item crash caused by realm change from deleted shadow realm
* Fix crash with deleted shadow realms during undo item movement
* Add tests
* Add core-changes
* Add test to check for undo move from deleted realm
- Add uoconvert support for MultiCollection.uop
- Allow multiple elements in MultiTypes and Mounts in uoconvert.cfg
- Simplify entries in uoconvert.cfg to remove House and Stairs properties in the MultiTypes element
* implemented modulus operator % and %= for doubles
int%dbl=dbl
dbl%int=dbl
dbl%dbl=dbl
...
* added missing test for ins_set_member_id_consume_divideequal
* more tests
docs
* create datafile directory if it does not exists during worldsave, before
writing the likely empty file
* check existing of datafiles during startup.
added test for just creating a datafile without adding content
* breaking changes added
* update grammar
* add ast nodes; ast building
* Rename to unpacking
* semantic analysis
* executor work part 1, unpacking indices
* renamings; implement index binding
* small cleanup
* use multi_index; more tests
* use multi_index only for rest, otherwise list
* initial formatting
* add missing token decoding
* address self-review comments
* formatting tweaks
* add test for var binding in classes
* add StringIterator
* fix spread tests
* add cfgfile iterator; add cfgelem opersubscript; tests
* add iterator for SQLResultSet and SQLRow; tests
* Copy value in take global/local
* Allow any iterable can index rest unpacking
Always use dictionary as rest object in index unpacking
* add docs, core-changes, doc tests
* formatting changes...
* address self-review comments
* update formatter, format all binding test srcs
* address review comments
- unset var scope
* add cfgfile/cfgelem docs
* reformat objref svg
* use uoexpansion enums for A9, B9 flags
added TOL to uoexpansion
currently unsure where this will end
simplified account initialisation, added errorcheck
* Expansion classes for server and account
fixed flags
* use of AccountExpansion,ServerExpansion
extended tests
splitted unittest file
added missing test for Min/MaxAttackRange
* more micro performance for world saving
use all 4 cores in CI builds
fix compiler flag warning on windows
* save test for weight_multiplier
* enable gothic,rustictiles when using HSA expansion
* removed ancient unused files
* addressed comments
renamed ServerExpansion to ServerFeatures
added method for expansion name
* got rid of client UOExpansionFlag which is the same as the accout
expansion
* updated core-changes and docs
* updated generated ssopt
* test for tooltips
changed method names
removed/clarified comments
* npc hitchance was never saved
added missing npc save tests
* hitchance bug exists also for items...
added missing test for movemode
* directly write to stream
* quickfix just disabled orphan console print
* now?
* debug timer for each file
* removed pointer indirection
use defined underlying buffer size
reactivated orphans
* missing files
* optimized away dynamic allocations during formatting by using buffer
* debug print thread id used
stop timer of blocking part
* wake up all threads, if the producer thread is faster only one thread
will wake up...
extended debug logging
* after reading the standard...
notify_* is atomic thus multiple calls to notify_one will always wake up
a different thread.
So notify_one is correct here and notify_all pessimistic
* increased the buffer
ordered savefiles roughly by size
* use compile time strings to optimize formatting
added a few shortcuts
optimized hexint by adding a string_view version with threadlocal buffer
* cleanup
* readded terminate protection
* docs
* StreamWriter needs to be destroyed before printing the stream
* Clib::clamp_convert is now able to convert between equal sized types.
fixed tons of overflow/underflow problems in script member setters
* fix coverage CI
added docs
fixed warning
* finally got it right?
massively extended tests
* removed unneeded special handling
better comments
* SaveWorldState(): if possible the script will be suspended until the
async part is finished, added to the returning struct
`ElapsedMillisecondsTotal` for the complete time it takes.
* readded removed header
* extended test by calling save without beeing able to suspend
* fixed function name
* do not suspend script during worldsave when its critical
since testscripts are fast make sure via sleep that the gameclock
changes
* docs