bool TryOpenLock(DisableDeviceRestriction lockInfo)
        {
            var data = (DisableDeviceRestriction.DisableDeviceRestrictionData)lockInfo.Data;

            if (data.Unlocked)
            {
                return(true);
            }

            var user = Context.MaybeCaster;
            int dc   = (data.DCOverride != 0) ? data.DCOverride : lockInfo.DC;
            var statsAdjustmentsType = Game.Instance.Player.Difficulty.StatsAdjustmentsType;

            dc += BlueprintRoot.Instance.DifficultyList.GetAdjustmentPreset(statsAdjustmentsType).SkillCheckDCBonus;

            // Roll caster level + 10 against DC of lock
            var casterLevel = Context.Params.CasterLevel;
            var roll        = RulebookEvent.Dice.D20;
            var result      = casterLevel + 10 + roll;

            Log.Append($"Knock rolled {result} against DC {dc}, lock {lockInfo.name}");
            var success = data.Unlocked = result > dc;

            if (success)
            {
                Helpers.GameLog.AddLogEntry(
                    RES.KnockOpenLockSuccessLog_info,
                    GameLogStrings.Instance.SkillCheckSuccess.Color, LogChannel.Combat,
                    RES.KnockResultLog_info + RES.ResultSuccessLog_info);
            }
            else
            {
                Helpers.GameLog.AddLogEntry(
                    RES.KnockOpenLockFailLog_info,
                    GameLogStrings.Instance.SkillCheckFail.Color, LogChannel.Combat,
                    RES.KnockResultLog_info + RES.ResultFailLog_info);
            }

            EventBus.RaiseEvent((IPickLockHandler h) =>
            {
                if (success)
                {
                    h.HandlePickLockSuccess(user, lockInfo.MapObject);
                    return;
                }
                h.HandlePickLockFail(user, lockInfo.MapObject);
            });
            return(success);
        }
예제 #2
0
        bool TryOpenLock(DisableDeviceRestriction lockInfo)
        {
            var data = (DisableDeviceRestriction.DisableDeviceRestrictionData)lockInfo.Data;

            if (data.Unlocked)
            {
                return(true);
            }

            var user = Context.MaybeCaster;
            int dc   = (data.DCOverride != 0) ? data.DCOverride : lockInfo.DC;
            var statsAdjustmentsType = Game.Instance.Player.Difficulty.StatsAdjustmentsType;

            dc += BlueprintRoot.Instance.DifficultyList.GetAdjustmentPreset(statsAdjustmentsType).SkillCheckDCBonus;

            // Roll caster level + 10 against DC of lock
            var casterLevel = Context.Params.CasterLevel;
            var roll        = RulebookEvent.Dice.D20;
            var result      = casterLevel + 10 + roll;

            Log.Append(string.Format(Main.lc.GetTranslate("Knock.spKnockRollGameLogFormat"), dc, lockInfo.name, result));
            var success = data.Unlocked = result > dc;

            Helpers.GameLog.AddLogEntry(
                success ? Main.lc.GetTranslate("Knock.spKnockSuccessGameLog") : Main.lc.GetTranslate("Knock.spKnockFailGameLog"),
                GameLogStrings.Instance.SkillCheckSuccess.Color, LogChannel.Combat,
                string.Format(Main.lc.GetTranslate("Knock.spKnockResultGameLog1.Format"), result, roll, casterLevel) +
                string.Format(Main.lc.GetTranslate("Knock.spKnockResultGameLog2.Format"), dc) +
                string.Format(Main.lc.GetTranslate("Knock.spKnockResultGameLog3.Format"), (success ? Main.lc.GetTranslate("Knock.success") : Main.lc.GetTranslate("Knock.failure"))));

            EventBus.RaiseEvent((IPickLockHandler h) =>
            {
                if (success)
                {
                    h.HandlePickLockSuccess(user, lockInfo.MapObject);
                    return;
                }
                h.HandlePickLockFail(user, lockInfo.MapObject);
            });
            return(success);
        }
예제 #3
0
        bool TryOpenLock(DisableDeviceRestriction lockInfo)
        {
            var data = (DisableDeviceRestriction.DisableDeviceRestrictionData)lockInfo.Data;

            if (data.Unlocked)
            {
                return(true);
            }

            var user = Context.MaybeCaster;
            int dc   = (data.DCOverride != 0) ? data.DCOverride : lockInfo.DC;
            var statsAdjustmentsType = Game.Instance.Player.Difficulty.StatsAdjustmentsType;

            dc += BlueprintRoot.Instance.DifficultyList.GetAdjustmentPreset(statsAdjustmentsType).SkillCheckDCBonus;

            // Roll caster level + 10 against DC of lock
            var casterLevel = Context.Params.CasterLevel;
            var roll        = RulebookEvent.Dice.D20;
            var result      = casterLevel + 10 + roll;

            Log.Append($"Knock rolled {result} against DC {dc}, lock {lockInfo.name}");
            var success = data.Unlocked = result > dc;

            Helpers.GameLog.AddLogEntry(
                success ? "Knock successfully opened lock." : "Knock failed to open lock.",
                GameLogStrings.Instance.SkillCheckSuccess.Color, LogChannel.Combat,
                $"Knock result: {result} (roll {roll} + caster level {casterLevel} + bonus 10).\n" +
                $"Difficulty Class (DC): {dc}.\n" +
                $"Result: {(success ? "success" : "failure")}");

            EventBus.RaiseEvent((IPickLockHandler h) =>
            {
                if (success)
                {
                    h.HandlePickLockSuccess(user, lockInfo.MapObject);
                    return;
                }
                h.HandlePickLockFail(user, lockInfo.MapObject);
            });
            return(success);
        }