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); }
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); }
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); }