* store globals as weakptr in class/funcs to prevent memleak when stored
as global WIP
* let it crash if globals are no longer valid?
* typo
* removed debug prints
* let only the current executor crash
* fixed logic
* added and corrected tests
* cleanup
* use emplace_back
* classes also need to switch to weakptr
* docs
* fixed problem when sending vitals bigger then 0xffff to other clients.
The percent value was calculated based on the already capped values
* directly use the correct type
* docs
* Restore NPC cold_resist_cap from its own orig on refresh_ar - tests
* Restore NPC cold_resist_cap from its own orig on refresh_ar - actual fix
* Update core-changes and make comments more concise
* silence cppdap lib
* refornat curl flags for readabilty
* zlib was build with the wrong runtime mode. Updated version
* use mariadb connector instead of mysql
* removed mysql define
* removed mysql
* removed installation of mysqlclient in workflow runs
* fixed curl install dir
* missing zstd on macos
* fixed module parsing for cmake 4.x
* docs
* added mariadb build to tidy_pr_check
* test sql on all platforms
some plugins need to included on windows
* refactor gump pkt creation
* testclient returns buttonid 1 pressed when 'button' is contained in the
commands
* extended test
* cleanup destructor mess a bit
* store gumps as pair to decide if the executor needs to be revived
more refactoring
* disallow copy, if used creates nasty bugs
* helper method to convert imp to character
* gumpevent
* new non-blocking dialog function, sends event instead
* test closegump
* test if serialnumber gets correctly converted and invalid entries get
skipped
* removed unused BApplicPtr class
added BApplicObjBase to impptrIf convert function
* use impptrIf
* CloseGump accepts now also an array of characters
extended tests
* moved deleted copy constructor to the public part
* by default clang tidy will check .inc files, removed this filter
* the last tidy run with modernize-loop wasnt added to the PR check
* keep vector with chr and gumpid per uomod
to prevent growing dont add to the cache if same chr with same id
already exists.
* docs
* core-changes
* dont use a static buffer for reading cfgfile to be threadsafe
eg config/www.cfg can load in the background
cleanup the file: deleted ancient define, simplified logic
* docs
* uoconvert: fixed wrong coordinates error msgs when too many static items exist in a
block
* fix gcc?
* since we have it.. use the correct literal
* fixed wrong format and warning
* docs and slightly changed msgs
* addressed comments
* dynamic items with height 0 (floor) didnt blocked LOS like static items
does
optimized los check by using multimap for faster lookup of dynamic items
added test
* revert multimap usage, benchmark showed that the original solution is
way faster
* docs
* ListingWriter prints filepath, filelineno and source line
the old compiler did it, now again in the new compiler
since shortcircuit the original sourcelines are available during compilation
* remove listfile.inc function from test result
* prefix output
* custom formatting
* docs
* impptr_if now accepts also const BObjectImp*
* cfg::GetConfigInt returns error if the value would produce an overflow
code cleanup of cfgmod
added tests
* increase test coverage
* added comment why the exception should be catched without reaction
fixed member_id test
* added corechanges
its 2026
removed else
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