private void SetOffTrap(GameObject triggerer, GameObject trappedObj) { if (!TryGetTrapFromObject(trappedObj, out var trap)) { return; } ObjScriptInvocation scriptInvoc = default; scriptInvoc.script = GetTrapScript(trappedObj); scriptInvoc.triggerer = triggerer; scriptInvoc.attachee = trappedObj; scriptInvoc.eventId = ObjScriptEvent.Trap; scriptInvoc.trapEvent = new TrapSprungEvent(trappedObj, trap); GameSystems.Script.Invoke(ref scriptInvoc); GameSystems.D20.Combat.AwardExperienceForChallengeRating(trap.ChallengeRating); GameUiBridge.RecordTrapSetOff(triggerer); }
public bool TriggerTileScript(locXY tileLoc, GameObject obj) { if (GetTileScript(tileLoc, out var tileScript)) { var invocation = new ObjScriptInvocation(); invocation.script = tileScript.Script; invocation.triggerer = obj; invocation.eventId = ObjScriptEvent.Use; GameSystems.Script.Invoke(ref invocation); if (invocation.script != tileScript.Script) { SetTileScript(in tileScript); } return(true); } return(false); }
public bool Invoke(ref ObjScriptInvocation invocation) { _currentInvocation = invocation; switch (invocation.eventId) { case ObjScriptEvent.Use: return(OnUse(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Destroy: return(OnDestroy(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Unlock: return(OnUnlock(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Get: return(OnGet(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Dialog: return(OnDialog(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.FirstHeartbeat: return(OnFirstHeartbeat(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Dying: return(OnDying(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.EnterCombat: return(OnEnterCombat(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.ExitCombat: return(OnExitCombat(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.StartCombat: return(OnStartCombat(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.EndCombat: return(OnEndCombat(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Resurrect: return(OnResurrect(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Heartbeat: return(OnHeartbeat(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.LeaderKilling: return(OnLeaderKilling(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.InsertItem: return(OnInsertItem(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.WillKos: return(OnWillKos(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.WieldOn: return(OnWieldOn(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.WieldOff: return(OnWieldOff(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.NewSector: return(OnNewSector(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.RemoveItem: return(OnRemoveItem(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Transfer: return(OnTransfer(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.CaughtThief: return(OnCaughtThief(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Join: return(OnJoin(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Disband: return(OnDisband(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.NewMap: return(OnNewMap(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.Trap: return(OnTrap(invocation.trapEvent, invocation.triggerer)); case ObjScriptEvent.TrueSeeing: return(OnTrueSeeing(invocation.attachee, invocation.triggerer)); case ObjScriptEvent.SpellCast: return(OnSpellCast(invocation.attachee, invocation.triggerer, invocation.spell)); case ObjScriptEvent.UnlockAttempt: return(OnUnlockAttempt(invocation.attachee, invocation.triggerer)); default: throw new ArgumentOutOfRangeException(); } }