Changelog

Version 0.2.1.0-0.2.1.8 RC
[BREAKING-CHANGE][UPDATED] Client-side event onWorldEnter will now receive worldFilePath as an argument.
[BREAKING-CHANGE][UPDATED] Client-side event onPlayerHit, has now damage description structure as parameter.
[BREAKING-CHANGE][UPDATED] Client-side event onDamage, has now damage description structure as parameter.
[BREAKING-CHANGE][UPDATED] Server-side event onPlayerHit, has now damage description structure as parameter.
[BREAKING-CHANGE][UPDATED] Server-side event onPlayerEnterWorld will now receive worldFilePath as an argument.
[BREAKING-CHANGE][UPDATED] Client-side function useItem optional argument state was removed.
[BREAKING-CHANGE][UPDATED] Server-side function useItem optional argument state was removed.
[BREAKING-CHANGE][REMOVED] Client-side event onSpellCast.
[BREAKING-CHANGE][REMOVED] Client-side event onShoot.
[ADDED] Possibility to extend multiplayer data by adding custom context to items and damage. More information: https://gothicmultiplayerteam.gitlab.io/docs/multiplayer/script-context/
[ADDED] Debug mode for scripts. To enable debug mode use tag 1 in config.xml. More information: https://gothicmultiplayerteam.gitlab.io/docs/server-manual/configuration/#debug
[ADDED] Downloader rate limiting per IP address, set default to 30 per minute. More information: https://gothicmultiplayerteam.gitlab.io/docs/server-manual/configuration/#downloader
[ADDED] Possibility to re-enable Ikarus in config.xml. More information: https://gothicmultiplayerteam.gitlab.io/docs/server-manual/configuration/#modification
[ADDED] Required authorization for all downloader files.
[ADDED] New player unique identification UID, which provides more secure way of banning players.
[ADDED] Shared class DamageDescription, which holds information about taken damage with weapon id.
[ADDED] Weather synchronization.
[ADDED] Client-side function setPlayerLevel.
[ADDED] Client-side function getPlayerLevel.
[ADDED] Client-side function setPlayerGuild.
[ADDED] Client-side function getPlayerGuild.
[ADDED] Client-side function useItemToState.
[ADDED] Client-side function getPlayerSelectedSpellNr.
[ADDED] Client-side function getPlayerSpellItem.
[ADDED] Client-side function getPlayerSpellNr.
[ADDED] Client-side function getPlayerSpellCount.
[ADDED] Client-side function getPlayerWaterLevel.
[ADDED] Client-side function getFocusVob.
[ADDED] Client-side class zCArray.
[ADDED] Client-side method Camera::backProject.
[ADDED] Client-side method Vob::setRotation now support variant that works with quat.
[ADDED] Client-side constant MOUSE_WHEELUP.
[ADDED] Client-side constant MOUSE_WHEELDOWN.
[ADDED] Client-side constant MOUSE_BUTTONLEFT.
[ADDED] client-side constant MOUSE_BUTTONRIGHT.
[ADDED] Client-side constant MOUSE_BUTTONMID.
[ADDED] Client-side constant MOUSE_XBUTTON1.
[ADDED] Client-side constant MOUSE_XBUTTON2.
[ADDED] Client-side constant MOUSE_XBUTTON3.
[ADDED] Client-side constant MOUSE_XBUTTON4.
[ADDED] Client-side constant MOUSE_XBUTTON5.
[ADDED] Client-side event onPlayerParade.
[ADDED] Client-side event onPlayerChangeHealth.
[ADDED] Client-side event onPlayerChangeMaxHealth.
[ADDED] Client-side event onPlayerChangeMana.
[ADDED] Client-side event onPlayerChangeMaxMana.
[ADDED] Client-side event onPlayerSpellSetup.
[ADDED] Client-side event onPlayerSpellCast.
[ADDED] Client-side event onPlayerShoot.
[ADDED] Client-side event onFocusCollect.
[ADDED] Server-side function findNearbyPlayers.
[ADDED] Server-side function getStreamedPlayersByPlayer.
[ADDED] Server-side function getSpawnedPlayersForPlayer.
[ADDED] Server-side function getPlayerUID.
[ADDED] Server-side class Sky.
[ADDED] Server-side property Sky.weather.
[ADDED] Server-side property Sky.raining.
[ADDED] Server-side property Sky.renderLightning.
[ADDED] Server-side property Sky.windScale.
[ADDED] Server-side property Sky.dontRain.
[ADDED] Server-side method Sky::setRainStartTime.
[ADDED] Server-side method Sky::getRainStartTime.
[ADDED] Server-side method Sky::setRainStopTime.
[ADDED] Server-side method Sky::getRainStopTime.
[ADDED] Server-side event onPlayerChangeMana.
[ADDED] Server-side event onPlayerChangeMaxMana.
[ADDED] Server-side event onPlayerShoot.
[ADDED] Shared static method Quat::lookRotation.
[ADDED] Shared function playFaceAni.
[ADDED] Shared function getPlayerFaceAni.
[ADDED] Shared static method Mat4::lookAt.
[ADDED] Shared method Mat4::getTranslation.
[ADDED] Shared method Mat4::setTranslation.
[ADDED] Shared constant DEBUG_MODE.
[UPDATED] Main menu options: new game, save game, load game, play intro, credits are now disabled.
[UPDATED] From now on every method/field/function that works with degrees will normalize them in range <0, 360>.
[UPDATED] Moved entire network logic to separate thread on server-side. Thanks to it scripts won't block synchronization flow.
[UPDATED] Optimized network load, by introducing broadcast zones. Streamed players are placed in broadcast zones, which are dependent on distance. The farther broadcast zone is the fewer data is sent through network. More information: https://gothicmultiplayerteam.gitlab.io/docs/server-manual/configuration/#synchronization
[UPDATED] Optimized player streamer by using algorithm "spatial hash map", thanks to it is able to handle thousands of objects on the map.
[UPDATED] Increased maximum slots limit from 256 to 512.
[UPDATED] By default camera will synchronize attached target position. Only in case when movement is disabled, camera position will be synchronized.
[UPDATED] Server-side function setServerDescription will now return bool to determine if it was succesfull or not.
[UPDATED] Server-side function setServerWorld will now return bool to determine if it was succesfull or not.
[UPDATED] Client-side function setPlayerMagicLevel won't clamp the magic level between <0, 6> from now on.
[UPDATED] Client-side event onKey event will now work with mouse (just like in the engine).
[UPDATED] Client-side event onMouseClick will now work with every button supported by the DirectX Input API.
[UPDATED] Client-side event onMouseRelease will now work with every button supported by the DirectX Input API.
[FIXED] Cursor clamping not working correctly after resolution change.
[FIXED] Bug while losing connection with the server and having single player menu opened (impossible to close the game).
[FIXED] Bug with torches synchronization (hand item wasn't set).
[FIXED] Bug with sliding players just after spawn.
[FIXED] Bug with "http read error", caused by downloader white-list IP mechanism. Some connection on UDP protocol has different IP address than while connecting with TCP.
[FIXED] Magic projectiles effect staying in the air.
[FIXED] Calculation of download speed while downloading files.
[FIXED] Main menu issues related to opening it (forcing ingame menu to be always displayed).
[FIXED] From now on saving and loading game from main menu won't do anything.
[FIXED] Client-side event onPlayerChangePing won't be called before onPlayerCreate for local player.
[FIXED] Client-side function disableControls will now work properly for each case (it will fool the game input that nothing is pressed/toggled/moved).
[FIXED] Client-side function equipItem returning incorrect value while successfully equipping torch.
[FIXED] Client-side event onPlayerCreate that was being called multiple times for specific player.
[FIXED] Client-side method World::searchVobListByName returning array containing duplicate values.
[FIXED] Client-side method Line3d::getEnd was returning the same value as Line3d::getBegin.
[FIXED] Server-side event onPlayerSpellCast being called when local npc used attackPlayerMagic function.
[FIXED] Server-side function getPlayerFocus will now be working only on players (previously it was also working on client-side npcs).
[FIXED] Server-side event onPlayerChangeFocus will now be trigged only if we focus other player (previously it was also working on client-side npcs).
[FIXED] Server-side function setPlayerTalent working only up to 7 talent id argument.
[FIXED] Shared function getPlayerShield returning -1 while shield was equipped in weapon mode.
[REMOVED] Possibility to change interpolation mode.
[DEPRECATED] Client-side function startFaceAni.
[DEPRECATED] Client-side function getFaceAniName.
[DEPRECATED] Client-side function isInWater.
[DEPRECATED] Client-side function setLevel.
[DEPRECATED] Client-side function getLevel.
[DEPRECATED] Client-side function setGuild.
[DEPRECATED] Client-side function getGuildId.
[DEPRECATED] Client-side function getGuildName.
[DEPRECATED] Client-side constant MOUSE_LMB.
[DEPRECATED] Client-side constant MOUSE_MMB.
[DEPRECATED] Client-side constant MOUSE_RMB.

Version 0.2.1.9 RC
[FIXED] Client-side class zarray script implementation issues.
[FIXED] Client-side function setPlayerLevel was working only for npcs.
[FIXED] Error message "Failed to parse downloader data", while joining server.
[FIXED] Crashes occured only on DirectX 11 related to removing unsynchronized items from world.

Version 0.2.1.10 RC
[ADDED] Client-side function (getPlayerBodyState).
[ADDED] Client-side function (getPlayerBodyStateFlags).
[ADDED] Client-side constant (BS_STAND).
[ADDED] Client-side constant (BS_WALK).
[ADDED] Client-side constant (BS_SNEAK).
[ADDED] Client-side constant (BS_RUN).
[ADDED] Client-side constant (BS_SPRINT).
[ADDED] Client-side constant (BS_SWIM).
[ADDED] Client-side constant (BS_CRAWL).
[ADDED] Client-side constant (BS_DIVE).
[ADDED] Client-side constant (BS_JUMP).
[ADDED] Client-side constant (BS_CLIMB).
[ADDED] Client-side constant (BS_FALL).
[ADDED] Client-side constant (BS_SIT).
[ADDED] Client-side constant (BS_LIE).
[ADDED] Client-side constant (BS_INVENTORY).
[ADDED] Client-side constant (BS_ITEMINTERACT).
[ADDED] Client-side constant (BS_MOBINTERACT).
[ADDED] Client-side constant (BS_MOBINTERACT_INTERRUPT).
[ADDED] Client-side constant (BS_TAKEITEM).
[ADDED] Client-side constant (BS_DROPITEM).
[ADDED] Client-side constant (BS_THROWITEM).
[ADDED] Client-side constant (BS_PICKPOCKET).
[ADDED] Client-side constant (BS_STUMBLE).
[ADDED] Client-side constant (BS_UNCONSCIOUS).
[ADDED] Client-side constant (BS_DEAD).
[ADDED] Client-side constant (BS_AIMNEAR).
[ADDED] Client-side constant (BS_AIMFAR).
[ADDED] Client-side constant (BS_HIT).
[ADDED] Client-side constant (BS_PARADE).
[ADDED] Client-side constant (BS_CASTING).
[ADDED] Client-side constant (BS_PETRIFIED).
[ADDED] Client-side constant (BS_CONTROLLING).
[ADDED] Client-side constant (BS_MAX).
[ADDED] Client-side constant (BS_MOD_HIDDEN).
[ADDED] Client-side constant (BS_MOD_DRUNK).
[ADDED] Client-side constant (BS_MOD_NUTS).
[ADDED] Client-side constant (BS_MOD_BURNING).
[ADDED] Client-side constant (BS_MOD_CONTROLLED).
[ADDED] Client-side constant (BS_MOD_TRANSFORMED).
[ADDED] Client-side constant (BS_MOD_CONTROLLING).
[ADDED] Client-side constant (BS_FLAG_INTERRUPTABLE).
[ADDED] Client-side constant (BS_FLAG_FREEHANDS).
[ADDED] Client-side class (DaedalusSymbol).
[ADDED] Client-side field (DaedalusSymbol.name).
[ADDED] Client-side field (DaedalusSymbol.parent).
[ADDED] Client-side field (DaedalusSymbol.next).
[ADDED] Client-side field (DaedalusSymbol.ele).
[ADDED] Client-side field (DaedalusSymbol.type).
[ADDED] Client-side field (DaedalusSymbol.flags).
[ADDED] Client-side field (DaedalusSymbol.space).
[ADDED] Client-side method (DaedalusSymbol::getValue).
[ADDED] Client-side method (DaedalusSymbol::setValue).
[ADDED] Client-side method (Daedalus::symbol).
[ADDED] Client-side field (MobInter.sceme).
[ADDED] Client-side field (MobInter.rewind).
[ADDED] Client-side field (MobInter.useWithItem).
[ADDED] Client-side function (getActiveMenu).
[UPDATED] Errors invoked by error function are now shown in 'view error' tab.
[UPDATED] Camera::setMode will now have optional argument array[userpointer] targetList (array of Vobs).
[UPDATED] Undeprecated (Camera::getMode).
[UPDATED] Undeprecated (Camera::setMode).
[REMOVED] Client-side field (Camera.mode).
[REMOVED] Client-side method (Daedalus::variable).
[REMOVED] Client-side method (Daedalus::constant).
[REMOVED] Client-side method (Daedalus::type).
[REMOVED] Client-side method (Daedalus::flags).
[REMOVED] Client-side method (Daedalus::parent).
[FIXED] Client-side function (getPlayerShield) will now update it's value during unequip.
[FIXED] Client-side function (setPlayerGuild) will now work on hero.
[FIXED] Client-side method (zarray::remove) being called with negative index could result in a crash.
[FIXED] Client-side (onFocusCollect) event implementation.

Version 0.2.1.11 RC
[BREAKING-CHANGE][UPDATED] Client-side function (hasItem) can now work on other type of players.
[FIXED] Client-side event (onEquip) being called when items like: amulets, rings, belts, spells, runes weren't equipped.
[FIXED] Client-side event (onEquip) not being called when hero swaps shields.
[FIXED] Hitting player/npc with always maximum possible damage, now non critical hits will work properly.
[FIXED] Immortal npcs now won't receive any damage.
[FIXED] Client-side function (disableMusicSystem) not working after world change or calling playVideo function.
[FIXED] Server-side function (applyPlayerOverlay) executing wrong logic if the overlay id is invalid.
[ADDED] Saving user choice for ignoring warning about enabled ikarus.
[UPDATED] Shared method (Items::id) ignores letter capitalization.
[UPDATED] Shared method (Mds::id) ignores letter capitalization.
[UPDATED] Client-side event (onUnequip) will now be called in every scenario.
[UPDATED] Client-side function (stopAni) can now be called on any type of player.
[UPDATED] Client-side function (stopAniId) can now be called on any type of player.
[UPDATED] Client-side function (startFaceAni) can now be called on any type of player.
[UPDATED] Client-side function (playFaceAni) can now be called on any type of player.
[UPDATED] Client-side function (stopFaceAni) can now be called on any type of player.
[UPDATED] Client-side function (equipItem) can now be called on any type of player.
[UPDATED] Client-side function (unequipItem) can now be called on any type of player.
[UPDATED] Client-side function (useItem) can now be called on any type of player.
[UPDATED] Client-side function (useItemToState) can now be called on any type of player.
[UPDATED] Client-side function (giveItem) can now be called on any type of player.
[UPDATED] Client-side function (removeItem) can now be called on any type of player.
[ADDED] Client-side constant (TRIGGERLIST_PROCESS_ALL.)
[ADDED] Client-side constant (TRIGGERLIST_PROCESS_NEXT.)
[ADDED] Client-side constant (TRIGGERLIST_PROCESS_RAND.)
[ADDED] Client-side class (TriggerList.)
[ADDED] Client-side field (TriggerList.listProcess).
[ADDED] Client-side field (TriggerList.actTarget).
[ADDED] Client-side field (TriggerList.sendOnTrigger).
[ADDED] Client-side method (TriggerList::getTarget).
[ADDED] Client-side method (TriggerList::setTarget).
[ADDED] Client-side method (TriggerList::getFireDelay).
[ADDED] Client-side method (TriggerList::setFireDelay).
[ADDED] Client-side method (TriggerList::triggerActTarget).
[ADDED] Client-side field (Draw3d.linesCount).
[ADDED] Client-side constant (MOBINTER_DIRECTION_NONE.)
[ADDED] Client-side constant (MOBINTER_DIRECTION_UP.)
[ADDED] Client-side constant (MOBINTER_DIRECTION_DOWN.)
[ADDED] Client-side field (MobInter.triggerTarget).
[ADDED] Client-side field (MobInter.state).
[ADDED] Client-side field (MobInter.stateNum).
[ADDED] Client-side field (MobInter.stateTarget).
[ADDED] Client-side field (MobInter.mobStateAni).
[ADDED] Client-side field (MobInter.npcStateAni).
[ADDED] Client-side field (MobInter.direction).

Version 0.2.1.12
[FIXED] Staying visual fx after removing unsynced items from the world.
[FIXED] Operating on active script parser by the g2o, instead of working on parser ptr directly.
When active parser was switched, some of the functions might not work correctly in some cases (including g2o sync code), here's the list:
Client-side function (getItemName).
Client-side function (getItemDescription).
Client-side function (getItemValue).
Client-side function (getItemInfo).

Version 0.2.1.13
[UPDATED] Launcher now support two master servers.