Esempio n. 1
0
    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);
    }
Esempio n. 3
0
    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();
        }
    }