--DESCRIPTION: script to swap entity behaviour of entities with [EntityName$=picdoor1] --DESCRIPTION: swaps from [Behaviour1$="objects\\door_rotate"] to [Behaviour2$="objects\\door"] when player is within [SwapDistance=150] g_distancebasedscriptchange = {} function distancebasedscriptchange_properties(e, entityname, behaviour1, behaviour2, swapdistance) local dbsc = g_distancebasedscriptchange[e] dbsc.entityname = string.lower(entityname) dbsc.behaviour1 = string.lower(behaviour1) dbsc.behaviour2 = string.lower(behaviour2) dbsc.swapdistance = swapdistance require "scriptbank\\"..(dbsc.behaviour1) require "scriptbank\\"..(dbsc.behaviour2) dbsc.state = "init" end function distancebasedscriptchange_init(e) g_distancebasedscriptchange[e] = {} end function distancebasedscriptchange_main(e) local dbsc = g_distancebasedscriptchange[e] if dbsc.state == "init" then dbsc.entities = {} for a = 1, g_EntityElementMax do if string.lower(GetEntityName(a)) == dbsc.entityname then table.insert(dbsc.entities,a) end end if #dbsc.entities > 0 then dbsc.behaviourtype = {} for a,b in pairs (dbsc.entities) do table.insert(dbsc.behaviourtype,"") end dbsc.state = "active" else dbsc.state = "error" end elseif dbsc.state == "active" then for a,b in pairs (dbsc.entities) do if GetPlayerDistance(b) < dbsc.swapdistance then if dbsc.behaviourtype[a] ~= dbsc.behaviour1 then dbsc.behaviourtype[a] = dbsc.behaviour1 SwitchScript(b, dbsc.behaviourtype[a]) end else if dbsc.behaviourtype[a] ~= dbsc.behaviour2 then dbsc.behaviourtype[a] = dbsc.behaviour2 SwitchScript(b, dbsc.behaviourtype[a]) end end PromptLocal(b,"my behaviour = "..dbsc.behaviourtype[a]) end elseif dbsc.state == "error" then PromptLocal(e,"error - no entities called "..dbsc.entityname.." found") end end