Difference between revisions of "ConflictSystem"
(→FreezeConflictTable) |
(→GetConflictRelation) |
||
Line 70: | Line 70: | ||
=== GetConflictRelation === | === GetConflictRelation === | ||
+ | '' | ||
+ | -- Get the relation of conflict mobileA is to mobileB. | ||
+ | -- @param mobileA(mobileObj) | ||
+ | -- @param mobileB(mobileObj) | ||
+ | -- @param mobileAConflictTable(optional) return value from GetConflictTable() | ||
+ | -- @return One of ConflictRelations, nil if not-found/expired. | ||
+ | |||
+ | function GetConflictRelation(mobileA, mobileB, mobileAConflictTable) | ||
+ | mobileAConflictTable = mobileAConflictTable or GetConflictTable(mobileA) or {} | ||
+ | -- only valid, frozen/non-expired, will make the cut. | ||
+ | if ( ValidConflictRelationTable(mobileAConflictTable[mobileB]) ) then | ||
+ | return mobileAConflictTable[mobileB][1] | ||
+ | end | ||
+ | return nil | ||
+ | end | ||
+ | '' | ||
+ | |||
=== ValidConflictRelationTable === | === ValidConflictRelationTable === | ||
=== UpdateConflictRelation === | === UpdateConflictRelation === |
Revision as of 07:59, 27 January 2018
welcome this will discuss the contents of the globals\helpers\conflict.lua
Contents
- 1 ConflictRelations Table
- 2 Conflict Functions
- 2.1 GetConflictTable
- 2.2 ClearConflictTable
- 2.3 SetConflictTable
- 2.4 FreezeConflictTable
- 2.5 GetConflictRelation
- 2.6 ValidConflictRelationTable
- 2.7 UpdateConflictRelation
- 2.8 ConflictEquals
- 2.9 AdvanceConflictRelation
- 2.10 ForeachAggressor
- 2.11 IsAggressor
- 2.12 IsMobTaggedBy
- 2.13 TagMob
- 2.14 InheritAggressivePlayerConflicts
- 2.15 GetNearbyTaggedMobiles
- 2.16 InitializeClientConflicts
ConflictRelations Table
Conflict Functions
GetConflictTable
-- Get the conflict table for a mobile -- @param mobile(mobileObj) -- @return luaTable containing all conflicts for this mobile
function GetConflictTable(mobile) if ( mobile == nil or not mobile ) then LuaDebugCallStack("[Conflict] Invalid mobile provided.") return {} end return mobile:GetObjVar("Conflicts") or {} end
ClearConflictTable
-- Clear the conflict table of a mobile -- @param mobile(mobileObj) -- @return none
function ClearConflictTable(mobile, isPlayer) if ( mobile == nil or not mobile ) then LuaDebugCallStack("[Conflict] Invalid mobile provided.") return end if ( mobile:HasObjVar("Conflicts") ) then mobile:DelObjVar("Conflicts") end if ( isPlayer == true ) then InitializeClientConflicts(mobile) end end
SetConflictTable
-- Set the conflict table for a mobile -- @param mobile(mobileObj) -- @param data(luaTable) -- @return none
function SetConflictTable(mobile, data) mobile:SetObjVar("Conflicts", data) end
FreezeConflictTable
--- Freeze the conflict table on a mobile, optionally saving the frozen table on a different object. Will clear all conflicts for the mobile if target does not equal mobile. -- @param mobile(mobileObj) -- @param target(gameObj)(optional) the gameObj the conflict table will be saved to -- @return none
function FreezeConflictTable(mobile, target) target = target or mobile local conflictTable = GetConflictTable(mobile) for mobileId,conflict in pairs(conflictTable) do -- set all the expires to true, meaning they never expire conflictTable[mobileId][2] = true end -- save the frozen table on the target SetConflictTable(target, conflictTable) end
GetConflictRelation
-- Get the relation of conflict mobileA is to mobileB. -- @param mobileA(mobileObj) -- @param mobileB(mobileObj) -- @param mobileAConflictTable(optional) return value from GetConflictTable() -- @return One of ConflictRelations, nil if not-found/expired.
function GetConflictRelation(mobileA, mobileB, mobileAConflictTable) mobileAConflictTable = mobileAConflictTable or GetConflictTable(mobileA) or {} -- only valid, frozen/non-expired, will make the cut. if ( ValidConflictRelationTable(mobileAConflictTable[mobileB]) ) then return mobileAConflictTable[mobileB][1] end return nil end