Patch v3.0.76.796!

This patch is quite large, quite interesting, and adds about 180 new functions!
Since almost all changes are additions, I've put the changes/deletions to the end of the list.

Items

Getters
Some useful functions for retrieving additional information that was not available before.
query ItemGetAmount([in](ITEMGUID)_Item, [out](INTEGER)_Amount)
query ItemGetGoldValue([in](ITEMGUID)_Item, [out](INTEGER)_Value)
query ItemIsInInventory([in](ITEMGUID)_Item, [out](INTEGER)_Bool)
query ItemIsInUserInventory([in](ITEMGUID)_Item, [in](CHARACTERGUID)_Character, [in](INTEGER)_MoveAndReport, [out](INTEGER)_Bool)
query ItemIsLadder([in](ITEMGUID)_Item, [out](INTEGER)_Bool)

query GetItemForItemTemplateInPartyInventory([in](CHARACTERGUID)_Character, [in](STRING)_Template, [out](ITEMGUID)_Item)
query ItemTemplateIsInUserInventory([in](CHARACTERGUID)_Character, [in](STRING)_Template, [in](INTEGER)_MoveAndReport, [out](INTEGER)_Count)

event CanLockpickItem((CHARACTERGUID)_Character, (ITEMGUID)_Item, (INTEGER)_RequestID)
event CanMoveItem((CHARACTERGUID)_Character, (ITEMGUID)_Item, (INTEGER)_RequestID)
event CanPickupItem((CHARACTERGUID)_Character, (ITEMGUID)_Item, (INTEGER)_RequestID)
event CanUseItem((CHARACTERGUID)_Character, (ITEMGUID)_Item, (INTEGER)_RequestID)

Iterators
This one allows the script to iterate over all items in the player's inventory.
call InventoryLaunchIterator((GUIDSTRING)_InventoryHolder, (STRING)_Event, (STRING)_CompletionEvent)
Usage example:
Code
InventoryLaunchIterator(_Player, "EVENT NAME", "COMPLETION EVENT NAME");

IF
StoryEvent(_Item, "EVENT NAME")
THEN
// Do something with the _Item


Movement
call ItemMoveToPositionEvent((ITEMGUID)_Item, (REAL)_X, (REAL)_Y, (REAL)_Z, (REAL)_Speed, (REAL)_Acceleration, (STRING)_Event)
call ItemMoveToTriggerEvent((ITEMGUID)_Item, (TRIGGERGUID)_Trigger, (REAL)_Speed, (REAL)_Acceleration, (INTEGER)_UseRotation, (STRING)_Event)
call ItemRotateToAngleY((ITEMGUID)_Item, (REAL)_Angle, (REAL)_Speed)

Item transfer
call ItemToInventory((ITEMGUID)_Item, (GUIDSTRING)_TargetObject, (INTEGER)_Amount)
call ItemTemplateRemoveFromUser((STRING)_ItemTemplate, (CHARACTERGUID)_Character, (INTEGER)_Count)
call TransferItemsToCharacter((CHARACTERGUID)_Character, (CHARACTERGUID)_ToCharacter)
call TransferItemsToParty((CHARACTERGUID)_Character)
call TransferItemsToUser((CHARACTERGUID)_Character)

Gold
call UserAddGold((CHARACTERGUID)_Character, (INTEGER)_Count)
query PartyGetGold([in](CHARACTERGUID)_Character, [out](INTEGER)_Gold)
query UserGetGold([in](CHARACTERGUID)_Character, [out](INTEGER)_Gold)

Crafting
The prototype for crafting functions/callbacks was changed, the new system allows the player to combine up to 5 ingredients!
event ItemTemplateCombinedWithItemTemplate((STRING)_FirstItemTemplate, (STRING)_SecondItemTemplate, (STRING)_ThirdItemTemplate, (STRING)_ForthItemTemplate, (STRING)_FifthItemTemplate, (CHARACTERGUID)_Character, (ITEMGUID)_NewItem)
event CanCombineItem((CHARACTERGUID)_Character, (ITEMGUID)_ItemA, (ITEMGUID)_ItemB, (ITEMGUID)_ItemC, (ITEMGUID)_ItemD, (ITEMGUID)_ItemE, (INTEGER)_RequestID)
event CharacterStoppedCombiningItems((CHARACTERGUID)_Character, (ITEMGUID)_ItemA, (ITEMGUID)_ItemB, (ITEMGUID)_ItemC, (ITEMGUID)_ItemD, (ITEMGUID)_ItemE)

Charges
Items can store charges now.
call ItemAddCharges((ITEMGUID)_Item, (INTEGER)_Charges)
call ItemResetChargesToMax((ITEMGUID)_Item)
query ItemGetCharges([in](ITEMGUID)_Item, [out](INTEGER)_Charges)
query ItemGetMaxCharges([in](ITEMGUID)_Item, [out](INTEGER)_InitialCharges)

Ownership
It seems that the original owner of items is now more closely tracked.
call ItemSetOriginalOwner((ITEMGUID)_Item, (CHARACTERGUID)_NewOwner)
query GetInventoryOwner([in](ITEMGUID)_Item, [out](GUIDSTRING)_Owner)
query ItemGetOriginalOwner([in](ITEMGUID)_Item, [out](CHARACTERGUID)_Character)

Item tagging
Some helper functions were added to make item tagging more useful:
query ItemTemplateTagIsInCharacterInventory([in](CHARACTERGUID)_Character, [in](STRING)_Template, [in](STRING)_Tag, [out](INTEGER)_Count)
query PartyFindTaggedItem([in](CHARACTERGUID)_Character, [in](STRING)_Tag, [in](INTEGER)_MoveAndReport, [out](ITEMGUID)_Item)
query PartyRemoveTaggedLocalItems([in](CHARACTERGUID)_Character, [in](STRING)_Tag, [in](INTEGER)_Amount, [out](INTEGER)_AmountRemoved)
query UserFindTaggedItem([in](CHARACTERGUID)_Character, [in](STRING)_Tag, [in](INTEGER)_MoveAndReport, [out](ITEMGUID)_Item)
query UserRemoveTaggedLocalItems([in](CHARACTERGUID)_Character, [in](STRING)_Tag, [in](INTEGER)_Amount, [out](INTEGER)_AmountRemoved)
query UserTransferTaggedLocalItems([in](CHARACTERGUID)_Character, [in](GUIDSTRING)_ToObject, [in](STRING)_Tag, [in](INTEGER)_Amount, [out](INTEGER)_AmountTransfered)

Misc
event ItemStatusAttempt((ITEMGUID)_Item, (STRING)_Status, (GUIDSTRING)_Causee)
event ItemWentOnStage((GUIDSTRING)_Item, (INTEGER)_Bool)



Characters

Getters
query CharacterGetEquippedItem([in](CHARACTERGUID)_Character, [in](STRING)_Slotname, [out](GUIDSTRING)_ItemGUID)
query CharacterHasLinkedGhost([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)
query CharacterIsMoving([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)
query CharacterIsPartyFollower([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)
query CharacterIsPlayer([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)
query CharacterIsSummon([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)

"Move and talk"
call CharacterMoveToAndTalk((CHARACTERGUID)_Character, (GUIDSTRING)_Target, (STRING)_DialogID, (INTEGER)_IsAutomated, (STRING)_MoveID, (INTEGER)_Running, (REAL)_Timeout)
call CharacterMoveToAndTalkRequestDialogFailed((CHARACTERGUID)_Character, (GUIDSTRING)_Target)
event CharacterMoveToAndTalkFailed((CHARACTERGUID)_Character, (GUIDSTRING)_Target, (STRING)_MoveID)
event CharacterMoveToAndTalkRequestDialog((CHARACTERGUID)_Character, (GUIDSTRING)_Target, (STRING)_DialogID, (INTEGER)_IsAutomated, (STRING)_MoveID)
event CharacterMoveToAndTalkRequestDialogFailedEvent((CHARACTERGUID)_Character, (GUIDSTRING)_Target)

Skill
skill use can ignore cooldown and fire the skill even if the character doesn't have said skill.
call CharacterUseSkill((CHARACTERGUID)_Character, (STRING)_SkillID, (GUIDSTRING)_Target, (INTEGER)_ForceResetCooldown, (INTEGER)_IgnoreHasSkill)

GetClosest*
The "GetClosest*" functions now also return the distance of the player from the target:
query GetClosestAlivePlayer([in](GUIDSTRING)_Target, [out](CHARACTERGUID)_Player, [out](REAL)_Distance)
query GetClosestAliveUserPlayer([in](GUIDSTRING)_Target, [in](INTEGER)_UserID, [out](CHARACTERGUID)_Player, [out](REAL)_Distance)
query GetClosestPlayer([in](GUIDSTRING)_Target, [out](CHARACTERGUID)_Player, [out](REAL)_Distance)
query GetClosestPlayerToPosition([in](REAL)_X, [in](REAL)_Y, [in](REAL)_Z, [out](CHARACTERGUID)_Player, [out](REAL)_Distance)
query GetClosestPlayerWithTalent([in](GUIDSTRING)_Target, [in](STRING)_Talent, [out](CHARACTERGUID)_Player, [out](REAL)_Distance)
event CharacterTeleportToPyramid((CHARACTERGUID)_Character, (ITEMGUID)_Pyramid)
event CharacterTeleported((CHARACTERGUID)_Target, (CHARACTERGUID)_Cause, (REAL)_OldX, (REAL)_OldY, (REAL)_OldZ, (REAL)_NewX, (REAL)_NewY, (REAL)_NewZ, (STRING)_Skill)

Movement
call CharacterAppearAtPositionOutOfSightToObject((CHARACTERGUID)_Character, (REAL)_X, (REAL)_Y, (REAL)_Z, (GUIDSTRING)_Object, (INTEGER)_PlaySpawn, (STRING)_Event)
call CharacterAppearOnTrailOutOfSightToObject((CHARACTERGUID)_Character, (CHARACTERGUID)_Target, (GUIDSTRING)_Object, (INTEGER)_PlaySpawn, (STRING)_Event)
call CharacterAppearOutOfSightToObject((CHARACTERGUID)_Character, (GUIDSTRING)_Target, (GUIDSTRING)_Object, (INTEGER)_PlaySpawn, (STRING)_Event)
call CharacterDisappearOutOfSightToObject((CHARACTERGUID)_Character, (GUIDSTRING)_Object, (INTEGER)_Running, (STRING)_Event, (INTEGER)_IncreaseSpeed)

Dialogs
Dialogs can now be "embedded into" each other, i.e. child dialogs can now be created on top of a parent dialog.
The max number of dialog participants was also increased to 6.
query DialogStartChildDialog([in](STRING)_Dialog, [in](INTEGER)_ParentInstanceID, [in](INTEGER)_NewInstanceID, [in](CHARACTERGUID)_Player1, [in](CHARACTERGUID)_Player2, [in](CHARACTERGUID)_Player3, [in](CHARACTERGUID)_Player4, [out](INTEGER)_success)
event ChildDialogRequested((STRING)_Dialog, (INTEGER)_InstanceID, (INTEGER)_TargetInstanceID)

Source points
Source point/skill control functions are now exposed via Osiris:
call CharacterAddSourcePoints((CHARACTERGUID)_Character, (INTEGER)_Amount)
call CharacterOverrideMaxSourcePoints((CHARACTERGUID)_Character, (INTEGER)_Amount)
call CharacterRemoveMaxSourcePointsOverride((CHARACTERGUID)_Character)

event CharacterUsedSourcePoint((CHARACTERGUID)_Character)
query CharacterGetMaxSourcePoints([in](CHARACTERGUID)_Character, [out](INTEGER)_Amount)
query IsSourceSkill([in](STRING)_SkillID, [out](INTEGER)_Bool)

Party
event CharacterJoinedParty((CHARACTERGUID)_Character)
event CharacterLeftParty((CHARACTERGUID)_Character)

Peace/war
Hostile/neutral/peaceful character relations -- I'm not quite sure what they do or how they work:
call MakePeace((CHARACTERGUID)_Source, (CHARACTERGUID)_Target, (INTEGER)_IgnoreVote)
call MakeWar((CHARACTERGUID)_Source, (CHARACTERGUID)_Target, (INTEGER)_IgnoreVote)
query CharacterIsAlly([in](CHARACTERGUID)_Character, [in](CHARACTERGUID)_OtherCharacter, [out](INTEGER)_Bool)
query CharacterIsEnemy([in](CHARACTERGUID)_Character, [in](CHARACTERGUID)_OtherCharacter, [out](INTEGER)_Bool)
query CharacterIsNeutral([in](CHARACTERGUID)_Character, [in](CHARACTERGUID)_OtherCharacter, [out](INTEGER)_Bool)

Polymorph
call CharacterReservePolymorphShape((CHARACTERGUID)_Character, (STRING)_Race)
event CharacterPolymorphedInto((CHARACTERGUID)_Character, (STRING)_Race)
event CharacterStoppedPolymorph((CHARACTERGUID)_Character)
query CharacterIsPolymorphInteractionDisabled([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)
query CharacterIsPolymorphedInto([in](CHARACTERGUID)_Character, [in](STRING)_TargetRace, [out](INTEGER)_Bool)

Misc
call CharacterAddExplorationExperience((CHARACTERGUID)_Character, (INTEGER)_Act, (INTEGER)_ActPart, (INTEGER)_Gain)
call CharacterAddToPlayerCharacter((CHARACTERGUID)_Character, (CHARACTERGUID)_Owner)
call CharacterCharacterSetEvent((CHARACTERGUID)_Character, (CHARACTERGUID)_Character, (STRING)_Event)
call CharacterEnableWaypointUsage((CHARACTERGUID)_Character, (INTEGER)_Bool)
call CharacterLevelUpTo((CHARACTERGUID)_Character, (INTEGER)_Level)
call CharacterRecruitCharacter((CHARACTERGUID)_Character, (CHARACTERGUID)_Character)
call CharacterRemoveFromPlayerCharacter((CHARACTERGUID)_Character, (CHARACTERGUID)_Owner)
call CharacterSetForceSynch((CHARACTERGUID)_Character, (INTEGER)_Bool)
call CharacterUnlinkGhost((CHARACTERGUID)_Character, (CHARACTERGUID)_Ghost)

query CharacterCanSeeGhost([in](CHARACTERGUID)_Character, [in](GUIDSTRING)_Ghost, [out](INTEGER)_Bool)
query CharacterCanUseWaypoints([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)
query CharacterCreateAtPosition([in](REAL)_X, [in](REAL)_Y, [in](REAL)_Z, [in](STRING)_TemplateId, [in](INTEGER)_PlaySpawn, [out](CHARACTERGUID)_Created)
query CharacterCreateAtPositionOutOfSightTo([in](REAL)_X, [in](REAL)_Y, [in](REAL)_Z, [in](STRING)_TemplateId, [in](INTEGER)_Angle, [in](INTEGER)_PlaySpawn, [in](STRING)_Event, [out](CHARACTERGUID)_Created)
query CharacterCreateOutOfSightToObject([in](STRING)_TemplateId, [in](CHARACTERGUID)_ToTarget, [in](GUIDSTRING)_FromObject, [in](INTEGER)_PlaySpawn, [in](STRING)_Event, [out](CHARACTERGUID)_Created)

event CharacterCharacterEvent((CHARACTERGUID)_Character1, (CHARACTERGUID)_Character2, (STRING)_Event)
event CharacterGhostRevealed((CHARACTERGUID)_Character, (CHARACTERGUID)_Ghost)
event CharacterMadePlayer((CHARACTERGUID)_Character)

call CharacterRemoveTension((CHARACTERGUID)_Player)
event CharacterStoppedUsingItem((CHARACTERGUID)_Character, (ITEMGUID)_Item)



Objects
call ObjectClearDialogFlag((GUIDSTRING)_Target, (STRING)_Flag, (INTEGER)_DialogInstance)
call ObjectSetDialogFlag((GUIDSTRING)_Target, (STRING)_Flag, (INTEGER)_DialogInstance)
call ObjectShareFlag((GUIDSTRING)_Target, (STRING)_Flag)
event ObjectFlagShared((STRING)_FlagName, (GUIDSTRING)_Speaker, (INTEGER)_NewValue)
query ObjectExists([in](GUIDSTRING)_Object, [out](INTEGER)_Exists)
query ObjectGetDialogFlag([in](GUIDSTRING)_Target, [in](STRING)_Flag, [out](INTEGER)_FlagState)
query ObjectIsOnStage([in](GUIDSTRING)_Object, [out](INTEGER)_Bool)
query GetTemplate([in](GUIDSTRING)_Target, [out](STRING)_Template)


Positioning
Functions for retrieving additional position/rotation data.
query GetRotation([in](GUIDSTRING)_Target, [out](REAL)_X, [out](REAL)_Y, [out](REAL)_Z)
query GetAngleTo([in](REAL)_x0, [in](REAL)_z0, [in](REAL)_x1, [in](REAL)_z1, [out](INTEGER)_Angle)
query GetDistanceTo([in](GUIDSTRING)_object1, [in](GUIDSTRING)_object2, [out](REAL)_Dist)
query GetDistanceToPosition([in](GUIDSTRING)_Object, [in](REAL)_X, [in](REAL)_Y, [in](REAL)_Z, [out](REAL)_Dist)

Visuals
These allow you to attach/detach an object to the specified bone of a character.
call AttachVisualTo((GUIDSTRING)_Child, (GUIDSTRING)_Parent, (STRING)_BoneName)
call DetachVisualFrom((GUIDSTRING)_Child, (GUIDSTRING)_Parent)



Game master
query GameMasterAddToCharacterCreation([in](CHARACTERGUID)_Character, [in](INTEGER)_Respec, [out](INTEGER)_Success)
query CharacterGameMaster([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)
event GMCampaignModeStarted((STRING)_CampaignMode)



Presets
event CharacterLoadedInPreset((CHARACTERGUID)_Character)
call CharacterApplyPreset((CHARACTERGUID)_Character, (STRING)_Preset)
call CharacterApplyRacePreset((CHARACTERGUID)_Character, (STRING)_RacePreset)

call LoadPartyPreset((STRING)_Preset, (GUIDSTRING)_TeleportToTarget)
event PartyPresetLoaded((STRING)_PartyPreset)


Camera movement
The camera can be scripted to move via a predefined line (most likely created in the editor):
call StartCameraSpline((SPLINEGUID)_Spline, (INTEGER)_UIVisible, (INTEGER)_StartIndex)
call StopCameraSpline((SPLINEGUID)_Spline, (INTEGER)_UIVisible)


Music
The old "MusicPlay((ventName)" function was removed, and player-specific variations were added instead:
call MusicPlayForPeer((CHARACTERGUID)_Character, (STRING)_EventName)
call MusicPlayForPeerWithInstrument((CHARACTERGUID)_Character, (CHARACTERGUID)_Character, (STRING)_EventName)
call MusicPlayGeneral((STRING)_EventName)
call MusicPlayOnCharacter((CHARACTERGUID)_Character, (STRING)_EventName)



Combat
There were a number of interesting combat functions added in this patch as well. The most notable are:

call CharacterAddActionPoints((CHARACTERGUID)_Character, (INTEGER)_Amount)
call CharacterDieImmediate((CHARACTERGUID)_Character, (INTEGER)_GenerateTreasure, (STRING)_DeathType)
call JumpToTurn((GUIDSTRING)_Target)

query CombatGetActiveEntity([in](INTEGER)_CombatID, [out](GUIDSTRING)_CurrentEntity)
query IsCombatActive([in](INTEGER)_CombatID, [out](INTEGER)_Active)
query IsSkillActive([in](GUIDSTRING)_Character, [in](STRING)_SkillID, [out](INTEGER)_Bool)

event CombatEnded((INTEGER)_CombatID)
event CombatStarted((INTEGER)_CombatID)

event ItemReceivedDamage((ITEMGUID)_Item)
event CharacterStatusApplied((CHARACTERGUID)_Character, (STRING)_Status, (GUIDSTRING)_Causee)
event CharacterStatusAttempt((CHARACTERGUID)_Character, (STRING)_Status, (GUIDSTRING)_Causee)


Quest sharing
A query sharing mechanic was added. (I'm not sure how this works exactly.)
call QuestReceiveSharedUpdate((CHARACTERGUID)_SrcCharacter, (CHARACTERGUID)_Character, (STRING)_Quest, (STRING)_Status)
event QuestShared((CHARACTERGUID)_Character, (STRING)_Quest, (INTEGER)_IsShared)
query QuestAccepted([in](CHARACTERGUID)_Character, [in](STRING)_Quest, [out](INTEGER)_Bool)
query QuestGetBroadcastLevel([in](STRING)_Quest, [out](STRING)_Level)
query QuestIsClosed([in](CHARACTERGUID)_Character, [in](STRING)_Quest, [out](INTEGER)_Bool)
query QuestIsShared([in](CHARACTERGUID)_Character, [in](STRING)_Quest, [out](INTEGER)_Bool)
query QuestUpdateExists([in](STRING)_Quest, [in](STRING)_Status, [out](INTEGER)_Result)


Skills
A couple of events were added for tracking skill usage.
event SkillActivated((CHARACTERGUID)_Character, (STRING)_Skill)
event SkillAdded((CHARACTERGUID)_Character, (STRING)_Skill, (INTEGER)_Learned)
event SkillDeactivated((CHARACTERGUID)_Character, (STRING)_Skill)


Crime
call CharacterIgnoreCharacterActiveCrimes((CHARACTERGUID)_Character, (CHARACTERGUID)_Player, (REAL)_Timer)
call CrimeClearAll()
call CrimeConfrontationDone((INTEGER)_CrimeID, (CHARACTERGUID)_Interrogator)
call CrimeTransferEvidenceTo((INTEGER)_CrimeID, (GUIDSTRING)_Target)
call ShutdownCrimeSystem()

event CrimeDisabled((CHARACTERGUID)_Character, (STRING)_Crime)
event CrimeEnabled((CHARACTERGUID)_Character, (STRING)_Crime)

event CharacterStoleItem((CHARACTERGUID)_Character, (ITEMGUID)_Item, (REAL)_X, (REAL)_Y, (REAL)_Z, (CHARACTERGUID)_OldOwner, (ITEMGUID)_SrcContainer, (INTEGER)_Amount)
event CharacterSelectedAsBestUnavailableFallbackLead((CHARACTERGUID)_Character, (STRING)_CrimeRegion, (INTEGER)_UnavailableForCrimeID, (INTEGER)_BusyCrimeID, (CHARACTERGUID)_Criminal1, (CHARACTERGUID)_Criminal2, (CHARACTERGUID)_Criminal3, (CHARACTERGUID)_Criminal4)
event CrimeIsRegistered((CHARACTERGUID)_Victim, (STRING)_CrimeType, (INTEGER)_CrimeID, (GUIDSTRING)_Evidence, (CHARACTERGUID)_Criminal1, (CHARACTERGUID)_Criminal2, (CHARACTERGUID)_Criminal3, (CHARACTERGUID)_Criminal4)
event OnCrimeConfrontationDone((INTEGER)_CrimeID, (CHARACTERGUID)_Investigator, (INTEGER)_WasLead, (CHARACTERGUID)_Criminal1, (CHARACTERGUID)_Criminal2, (CHARACTERGUID)_Criminal3, (CHARACTERGUID)_Criminal4)

query CharacterGetCrimeDialog([in](CHARACTERGUID)_Character, [out](INTEGER)_InstanceID)
query CrimeAreaGetTensionModifier([in](TRIGGERGUID)_CrimeArea, [out](INTEGER)_Modifier)
query CrimeGetCriminals([in](INTEGER)_CrimeID, [out](CHARACTERGUID)_Criminal1, [out](CHARACTERGUID)_Criminal2, [out](CHARACTERGUID)_Criminal3, [out](CHARACTERGUID)_Criminal4)
query CrimeGetDetectionRange([in](INTEGER)_CrimeID, [out](REAL)_Range)
query CrimeGetEvidence([in](INTEGER)_CrimeID, [in](INTEGER)_Index, [out](GUIDSTRING)_Evidence)
query CrimeGetNumberOfEvidence([in](INTEGER)_CrimeID, [out](INTEGER)_NumEvidence)
query CrimeGetVictim([in](INTEGER)_CrimeID, [out](CHARACTERGUID)_CrimeVictim)
query CrimeIsAnyNPCGoingToReact([in](GUIDSTRING)_Criminal, [in](STRING)_CrimeType, [in](REAL)_X, [in](REAL)_Y, [in](REAL)_Z, [out](INTEGER)_Bool)
query CrimeIsContinuous([in](INTEGER)_CrimeID, [out](INTEGER)_Bool)

Removed functions:
call CrimeWarningDone((INTEGER)_CrimeID, (CHARACTERGUID)_Interrogator)
event CrimeWarningRequest((STRING)_CrimeRegion, (INTEGER)_CrimeID, (CHARACTERGUID)_Interrogator, (CHARACTERGUID)_Criminal1, (CHARACTERGUID)_Criminal2, (CHARACTERGUID)_Criminal3, (CHARACTERGUID)_Criminal4, (STRING)_WarningDialog)



Miscelleaneous additions:
call UserRest((CHARACTERGUID)_Character, (STRING)_Restconsumable, (REAL)_PartyRadius, (REAL)_MinSafeDistance)

call SetTagPriceModifier((CHARACTERGUID)_Character, (STRING)_Tag, (INTEGER)_Modifier

call TransformSurface((GUIDSTRING)_Source, (STRING)_TransformType, (STRING)_TransformLayer, (REAL)_Radius, (REAL)_Lifetime, (GUIDSTRING)_Owner)
call TransformSurfaceAtPosition((REAL)_X, (REAL)_Y, (REAL)_Z, (STRING)_TransformType, (STRING)_TransformLayer, (REAL)_Radius, (REAL)_Lifetime, (GUIDSTRING)_Owner)

call ActivatePersistentLevelTemplate((LEVELTEMPLATEGUID)_LevelTemplate)
call FireOsirisEvents()
call NotifyCharacterCreationFinished()
call RequestProcessed((CHARACTERGUID)_Character, (INTEGER)_RequestId, (INTEGER)_RequestAccepted)

query GetHealStat([in](STRING)_StatusID, [out](STRING)_HealStat)
query GetRandomPositionInTrigger([in](TRIGGERGUID)_Trigger, [out](REAL)_X, [out](REAL)_Y, [out](REAL)_Z)
query GetStatString([in](GUIDSTRING)_Object, [out](STRING)_Statname)
query GetStatusType([in](STRING)_StatusID, [out](STRING)_StatusType)
query String([in](GUIDSTRING)_GUIDstring, [out](STRING)_Result)

call OpenCraftUI((CHARACTERGUID)_Character, (ITEMGUID)_Item)
call CloseUI((CHARACTERGUID)_Character, (STRING)_UIName)

call FadeToBlack((CHARACTERGUID)_Character, (REAL)_Seconds, (INTEGER)_ToBlack, (STRING)_FadeID)
event ClearFadeDone((INTEGER)_UserID, (STRING)_FadeID)
event FadeDone((INTEGER)_UserID, (STRING)_FadeID)

call ReadyCheckStart((GUIDSTRING)_Player, (STRING)_Id)
event ReadyCheckFailed((STRING)_Id)
event ReadyCheckPassed((STRING)_Id)

event OnArenaRoundForceEnded()
event VoiceBarkEnded((STRING)_Bark, (INTEGER)_InstanceID)



The following functions were renamed:
These functions work for all object types now, not only characters/items:
CharacterApplyDamage --> ApplyDamage
CharacterAttackedByCharacter, CharacterAttackedByItem --> AttackedByObject
CharacterGetDistanceToCharacter, CharacterGetDistanceToItem --> GetDistanceTo
CharacterSetFaction --> SetFaction
CharacterSetInvulnerable --> SetInvulnerable
CharacterGetFaction --> GetFaction
ItemMovedFromCharacterToCharacter --> ItemMovedFromTo
ItemIsInTrigger --> ObjectIsInTrigger
ItemTo --> ItemToInventory
TransformIntoTemplate --> Transform



The following functions were removed:
call CharacterInjectScriptframe((CHARACTERGUID)_Character, (STRING)_Scriptframe)
call CharacterAddToCharacter((CHARACTERGUID)_Character, (CHARACTERGUID)_Owner)
call CharacterRemoveFromCharacter((CHARACTERGUID)_Character, (CHARACTERGUID)_Owner)
call SetTransferItemsOnPartyRemove((INTEGER)_Enable)

event CharacterIsPlayer((CHARACTERGUID)_Character)
event CharacterPossessed((CHARACTERGUID)_Character)
event CharacterReleased((CHARACTERGUID)_Character)
event CharacterStatusChange((CHARACTERGUID)_Character, (STRING)_Status, (GUIDSTRING)_Causee)
query CharacterIsPossessed([in](CHARACTERGUID)_Character, [out](INTEGER)_Bool)