# This is a short summary of breaking changes.
# Please consult core-changes.txt for more information.

-- POL100.3.0 [work-in-progress] --
05-25-2026 Turley:
    When sending classes/functionobjects to another script its no longer valid to access global variables when the sending script is destroyed before the call.
    The calling script will stop with an error.
    Original feature description check 08-08-2024
-- POL100.2.0 --
11-17-2025 Kevin:
    EquipScript/UnequipScript will now be given an OfflineCharacterRef for the equip_on/equip_by and unequip_on/unequip_by parameters,
    allowing scripts to access the mobile if the mobile is offline.

    This is considered a breaking change because your scripts _may_ be affected:

      - Using `TypeOf()` and `TypeOfInt()` on the character parameters will no longer return "MobileRef" and OT_MOBILEREF,
        and instead return "OfflineMobileRef" and OT_OFFLINEMOBILEREF.
      - Expressions that check for truthiness of the character parameter, eg. `if ( equipped_on )`, will now evaluate to true, regardless
        if the character is logged in.

    If your EquipScript/UnequipScript should only perform actions if the character is indeed logged in, check the `logged_in` member of
    the character, eg. `equipped_on.logged_in`.
11-02-2025 Nando:
    Config files won't accept property names containing '{' or '}' anymore
09-28-2025:
    The `TypeOf()` and `TypeOfInt()` for a class instance has been changed from "Class" and 102 to "ClassInstanceRef" and 42.
    The basic.em constant for class instance references was missing, and has been added as:

      const OT_CLASSINSTANCEREF := 42;
02-20-2025:
    Start of the core now fails if the datastore.txt contains a datafile which no longer exists.
    This can happen if datafiles where manually removed without updating the datastore.txt
10-09-2024:
    The words `class` and `endclass` are now special keywords in the Escript language, and any identifiers (variable or function names)
    will need to be refactored and renamed.
03-18-2024:
    The file format for uoconvert's realm output has changed. Realms must be re-generated.
-- POL100.1.0 --
    The ability to generate the Escript wordlist via the -W argument to ecompile.exe has been removed. Passing this argument will
    result in an unknown option error.
2021-03-04:
    The old compiler has now been removed from ecompile. You may no longer use the -g- or -G arguments. Any value of UseCompiler2020
    in ecompile.cfg will be ignored without warning.
-- POL100.0.0 --
2020-10-17:
    polcore().version now returns a string like "100.0.0"
    Package `CoreRequired` fields must use a semantic version such as 99.0.0
      - Numbers like 98 will be understood as 98.0.0
      - Numbers like 98.1 will be understood as 98.1.0

2020-09-15:
    The new compiler could change script behavior.
    Be sure to run the compiler in "comparison mode" and update any scripts that have differences so that this doesn't happen.

2020-08-13:
    item.hitscript and item.onhitscript now *always* return the full path of their scripts (":pkgname:script")

2020-01-03:
    AddAmount() now returns item reference on success instead of 1. Remove any explicit comparisons (AddAmount() == 1).

2019-09-21:
    The core is now Unicode aware!
    - Note: Item/Mobile names still need to be in ASCII format.
    - If invalid unicode is detected while compiling or reading a file, ISO8859 will be assumed.
    - Unicode functions now accept a string directly. Arrays are still kept for backwards
      compatibility, but that may change in the future.
    - Non-unicode functions that receive a unicode string will use the unicode version
      automatically with langcode "ENU".
    - party.cfg:
        OnPublicChat second parameter is now a string object
        OnPrivateChat third parameter is now a string object
        ChangePublicChat second parameter is now a string object
        ChangePrivateChat third parameter is now a string object
    - unicode.em: RequestInputUC() return value no more contains member uc_text
    - CharRef.clientinfo struct members 'video_description' and 'langcode' are now strings
    - PacketObj.getunicodestring()/getunicodestringflipped() return a string
    - Textcmd arguments are now (CharRef, String, [langcode=String])
    - SpeechEvent no longer contains uc_text member
    - scripts/misc/charprofile.ecl fourth parameter is a string

2019-04-26:
    - POL now requires at least Windows Vista / Server 2008. Let us know if Windows XP was important to you.
    - Removed: pol.cfg option "ListenPort". You should use a Listener in uoclient.cfg.
    - Removed: pol.cfg option "Multithread". POL is now always multithreaded.
    - Removed: method os::System_RPM(). It was only useful for singlethreaded POL.

# >> Older breaking changes in POL100 might be missing here. Let us know if you find any. <<

2018-02-11:
    - UO::Accessible(chr, item, range := ACCESSIBLE_DEFAULT) now checks for the item distance to chr.
      The default was always documented as 2 tiles. But due to a bug, it could be up to 18 tiles.

-- POL099 --
# For 099 and older please read core-changes.txt.
