override protected void SetFormatting() { _formulaToggle.Format("Formulas"); _formulaToggle.Description = "Define a price formula for skills of each level"; Indent++; { foreach (var priceCoeffByLevel in _formulaCoeffsByLevel) { priceCoeffByLevel.Value.Format(priceCoeffByLevel.Key.ToString(), _formulaToggle); } _formulaCoeffsByLevel[SlotLevel.Basic].Description = "below the breakthrough skill in a tree"; _formulaCoeffsByLevel[SlotLevel.Advanced].Description = "above breakthrough in a tree"; _formulaType.Format("Type", _formulaToggle); _formulaType.Description = "Linear - X + Y x B + Z x C + W x D \n" + "Exponential - X x (1+Y%) ^ B x (1+Z%) ^ C x (1+W%) ^ D\n" + "where:\n" + "B - number of all unlocked skills\n" + "C - number of unlocked skills at current trainer\n" + "D - number of used breakthrough points"; Indent--; } _learnMutuallyExclusiveSkills.Format("Learn mutually exclusive skills"); _learnMutuallyExclusiveSkills.Description = "Allows you to learn both skills that are normally mutually exclusive at defined price"; Indent++; { _exclusiveSkillCostsTsar.Format("at the cost of a Tsar Stone", _learnMutuallyExclusiveSkills); _exclusiveSkillCostMultiplier.Format("at normal price multiplied by (%)", _exclusiveSkillCostsTsar, false); Indent--; } }
override protected void SetFormatting() { _enemyDetectionModifier.Format("Enemy detection modifier"); _enemyDetectionModifier.Description = "at +100% enemies will detect you from twice the vanilla distance, and in a 90 degrees cone\n" + "at -50% all ranges and angles will be halved\n" + "at -100% they will be effectively blind and deaf"; _preventInfighting.Format("Prevent infighting between"); _preventInfighting.Description = "Humans and non hostile monsters:\n" + "most human enemies (bandits) and monster enemies that aren't hostile at first sight (pearlbirds, deers) will ignore each other\n" + "\n" + "Hostile monsters\n" + "most hostile monsters (mantises, hive lords, assassin bugs) will ignore each other"; _walkTowardsPlayerOnSpawn.Format("Walk towards player on spawn"); _walkTowardsPlayerOnSpawn.Description = "Chance that enemies will walk in the nearest player's direction when spawned"; _changeTargetOnHit.Format("Change target on hit"); _changeTargetOnHit.Description = "Chance that enemies will target the most recent attacker\n" + "at 0%, enemies will never change their first targets"; _changeTargetWhenTooFar.Format("Change target when too far"); _changeTargetWhenTooFar.Description = "When enemy's current target retreats too far, the enemy will change to a closer one\n" + "Only detected characters and actual attackers are taken into account"; Indent++; { _changeTargetCheckFrequency.Format("Check frequency", _changeTargetWhenTooFar); _changeTargetCheckFrequency.Description = "How many times per second should the enemy try to change target"; _changeTargetChancePerCheck.Format("Chance per check", _changeTargetWhenTooFar); _changeTargetChancePerCheck.Description = "at 100%, enemies will try to change target every second"; _changeTargetCurrentToNearestRatio.Format("Minimum target-nearest ratio", _changeTargetWhenTooFar); _changeTargetCurrentToNearestRatio.Description = "Enemies will try to change target only if their current target is this many times further away then their nearest attacker"; _changeTargetDetectAllPlayers.Format("Detect all players", _changeTargetWhenTooFar); _changeTargetDetectAllPlayers.Description = "When enemies detect any player, they will become aware of other players as well"; Indent--; } }
override protected void SetFormatting() { _pricesCurve.Format("Prices curve"); _pricesCurve.Description = "How quickly the prices increase throughout the game\n" + "at the minimum valued (50%), all prices will be square-root'ed:\n" + "• Simple Bow: 13 -> 4\n" + "• War Bow: 1000 -> 32"; _sellModifier.Format("Selling multiplier"); _randomizePricesExtent.Format("Randomize prices"); _randomizePricesExtent.Description = "Prices will range from [100% - X%] to [100% + X%]\n" + "and depend on current time, merchant and/or item"; Indent++; { _randomizePricesPerDays.Format("per days", _randomizePricesExtent, () => _randomizePricesExtent > 0); _randomizePricesPerDays.Description = "All price modifiers will be rolled every X days"; _randomizePricesPerArea.Format("per city", _randomizePricesExtent, () => _randomizePricesExtent > 0); _randomizePricesPerArea.Description = "Every city (and area) will have its own randomized price modifier"; _randomizePricesPerItem.Format("per item", _randomizePricesExtent, () => _randomizePricesExtent > 0); _randomizePricesPerItem.Description = "Every item will have its own randomized price"; Indent--; } _pricesPerTypeToggle.Format("Prices by item type"); Indent++; { _pricesWeapons.Format("Weapons", _pricesPerTypeToggle); _pricesArmors.Format("Armors", _pricesPerTypeToggle); _pricesIngestibles.Format("Food", _pricesPerTypeToggle); _pricesRecipes.Format("Recipes", _pricesPerTypeToggle); _pricesOther.Format("Other items", _pricesPerTypeToggle); Indent--; } _pricesGold.Format("Gold"); _pricesGold.Description = "X - Gold ingot's buying price\n" + "Y - Gold ingot's selling price"; }
override protected void SetFormatting() { _separateLimits.Format("Separate passive/active limits"); _separateLimits.Description = "Define different limits for passive and active skills"; Indent++; { _skillsLimit.Format("Skills limit", _separateLimits, false); _skillsLimit.Description = "Only skills defined in \"Limited skill types\" count towards limit"; _passiveSkillsLimit.Format("Passive skills limit", _separateLimits); _passiveSkillsLimit.Description = "Only passive skills defined in \"Limited skill types\" count towards this limit"; _activeSkillsLimit.Format("Active skills limit", _separateLimits); _activeSkillsLimit.Description = "Only active skills defined in \"Limited skill types\" count towards this limit"; Indent--; } _limitedSkillTypes.Format("Limited skill types"); _limitedSkillTypes.Description = "Decide which skill types count towards limit:\n" + "Basic - below breakthrough in a skill tree\n" + "Advanced - above breakthrough in a skill tree\n" + "Side - not found in any vanilla skill tree\n" + "(weapon skills, boons, hexes and Flamethrower)"; Indent++; { _freePostBreakthroughBasicSkills.Format("Basic skills are free post-break", _limitedSkillTypes, LimitedSkillTypes.Basic); _freePostBreakthroughBasicSkills.Description = "After you learn a breakthrough skill, basic skills from the same tree no longer count towards limit"; Indent--; } }
override protected void SetFormatting() { _preserveDurability.Format("Preserve durability ratios"); _preserveDurability.Description = "Crafted items' durability will be based on the average of all ingredients (instead of 100%)"; Indent++; { _restoreMissingDurability.Format("Restore % of missing durability", _preserveDurability); _restoreMissingDurability.Description = "Increase to make broken/rotten ingredients still useful (instead of just lowering the durability ratio)"; Indent--; } _limitedManualCrafting.Format("Limited manual crafting"); _limitedManualCrafting.Description = "Manual crafting will be limited to 1 ingredient\n" + "Advanced crafting will require learning recipes first"; Indent++; { _limitedManulCraftingExceptions.Format("Exceptions", _limitedManualCrafting); _limitedManulCraftingExceptions.Description = "If you use any of these items in manual crafting, you will be able to use all 4 ingredient slots\n" + "This allows you craft items whose recipes can't be learned in advance"; _autoLearnCrystalPowderRecipe.Format("Auto-learn \"Crystal Powder\" recipe", _limitedManualCrafting); _autoLearnCrystalPowderRecipe.Description = "Normally, \"Crystal Powder\" recipe can only be learned via crafting\n" + "This will give you the recipe when you interact with the alchemy kit"; Indent--; } _extraResultsMultiplier.Format("Extra results multiplier"); _extraResultsMultiplier.Description = "Multiplies the extra (over one) amount of crafting results\n" + "For example, Gaberry Tartine gives 3 (1+2) items, so the extra amount is 2\n" + "at 0% extra amount, it will give 1 (1+0) item, and at 200% - 5 (1+4) items"; }
override protected void SetFormatting() { _moreGatheringTools.Format("More gathering tools"); _moreGatheringTools.Description = "Any Spear can fish and any 2-Handed Mace can mine\n" + "The tool is searched for in your bag, then pouch, then equipment\n" + "If there is more than 1 valid tool, the cheapest one is chosen first"; _gatheringDurabilityCost.Format("Gathering tools durability cost"); _gatheringDurabilityCost.Description = "X - flat amount\n" + "Y - percent of max"; _chanceToBreakFlintAndSteel.Format("Chance to break \"Flint and Steel\""); _chanceToBreakFlintAndSteel.Description = "Each time you use Flint and Steel, there's a X% chance it will break"; _waterskinCapacity.Format("Waterskin capacity"); _waterskinCapacity.Description = "Have one big waterskin instead of a few small ones so you don't have to swap quickslots"; _remapBackpackCapacities.Format("Remap backpack capacities"); _remapBackpackCapacities.Description = "X - Primitive Satchel's capacity\n" + "Y - Trader Backpack's capacity\n" + "(all other backpacks will have their capacities scaled accordingly)"; _torchesTemperatureRadius.Format("Torches temperature radius"); _torchesTemperatureRadius.Description = "Increase to share a torch's temperature with your friend eaiser"; _torchesDecayOnGround.Format("Torches burn out on ground"); _torchesDecayOnGround.Description = "Normally, torches don't burn out when on ground, even if they are lit and provide temperature"; _lightsRange.Format("Lights range"); _lightsRange.Description = "Multiplies torches' and lanterns' lighting range (in %)"; _twoPersonBeds.Format("Two-person beds"); _twoPersonBeds.Description = "All beds, tents and bedrolls will allow for 2 users at the same time"; }
override protected void SetFormatting() { _betterStashNavigation.Format("Better stash navigation"); _betterStashNavigation.Description = "LB = switch to (or scroll down in) the player's bag\n" + "RB = switch to (or scroll downn in) the chest contents\n" + "LT = change sorting (default, by weight, by durability)\n" + "RT = find currently focused item in the other panel"; }
override protected void SetFormatting() { _lossMultipliers.Format("Durability loss multipliers"); Indent++; { _lossWeapons.Format("Weapons", _lossMultipliers); _lossWeapons.Description = "Includes shields"; _lossArmors.Format("Armors", _lossMultipliers); _lossLights.Format("Lights", _lossMultipliers); _lossLights.Description = "Torches and lanterns"; _lossIngestibles.Format("Food", _lossMultipliers); Indent--; } _campingRepairToggle.Format("Camping repair"); Indent++; { _repairDurabilityPerHour.Format("Durability per hour", _campingRepairToggle); _repairDurabilityPercentPerHour.Format("Durability % per hour", _campingRepairToggle); _repairDurabilityPercentPerHour.Description = "By default, % of max durability (can be changed below)"; _repairPercentReference.Format("", _repairDurabilityPercentPerHour, () => _repairDurabilityPercentPerHour > 0); _fastMaintenanceMultiplier.Format("\"Fast Maintenance\" repair multiplier", _campingRepairToggle); _multiRepairBehaviour.Format("When repairing multiple items", _campingRepairToggle); _multiRepairBehaviour.Description = "Use fixed value for all items - the same repair value will be used for all items\n" + "Divide value among items - the repair value will be divided by the number of equipped items\n" + "Try to equalize values - repair item with the lowest durabilty value\n" + "Try to equalize ratios - repair item with the lowest durabilty ratio"; Indent--; } _effectivenessAffectsAllStats.Format("Durability affects all stats"); _effectivenessAffectsAllStats.Description = "Normally, durability affects only damages, resistances (impact only for shields) and protection\n" + "This will make all* equipment stats decrease with durability\n" + "( * currently all except damage bonuses)"; Indent++; { _effectivenessAffectsPenalties.Format("affect penalties", _effectivenessAffectsAllStats); _effectivenessAffectsPenalties.Description = "Stat penalties (like negative movement speed on heavy armors) will also decrease with durability"; Indent--; } _linearEffectiveness.Format("Smooth durability effects"); _linearEffectiveness.Description = "Normally, equipment stats change only when durability reaches certain thresholds (50%, 25% and 0%)\n" + "This will update the stats smoothly, without any thersholds"; Indent++; { _minNonBrokenEffectiveness.Format("when nearing zero durability", _linearEffectiveness); _brokenEffectiveness.Format("when broken", _linearEffectiveness); Indent--; } _smithRepairsOnlyEquipped.Format("Smith repairs only equipped items"); _smithRepairsOnlyEquipped.Description = "Blacksmith will not repair items in your pouch and bag"; _minStartingDurability.Format("Minimum starting durability"); _minStartingDurability.Description = "When items are spawned, their durability is randomized between this value and 100%\n" + "Only affects dynamically spawned item (containers, enemy corpses, merchant stock)\n" + "Scene-static and serialized items are unaffected"; }
private void CreateMainToggle() { _mainToggle = new ModSetting <Toggles>(SectionName, nameof(_mainToggle), Toggles.None) { SectionOverride = SectionOverride, DisplayResetButton = false, Description = Description, }; _mainToggle.Format(ModName ?? SectionName.SplitCamelCase()); _mainToggle.AddEvent(OnTogglesChanged); _previousMainToggle = _mainToggle; }
override protected void SetFormatting() { _campingSpots.Format("Camping spots"); _campingSpots.Description = "Restrict where you can camp"; _butterfliesSpawnChance.Format("Butterflies spawn chance"); _butterfliesSpawnChance.Description = "Each butterfly zone in the area you're entering has X% to spawn\n" + "Allows you to randomize safe zones for more unpredictability"; _butterfliesRadius.Format("Butterflies radius"); _butterfliesRadius.Description = "Vanilla radius is so big that it's possible to accidently set up a camp in a safe zone\n" + "(minimum settings is still twice as big as the visuals)"; _campingActivities.Format("Available camping activities"); }
override protected void SetFormatting() { _trapsArmDelay.Format("Traps arming delay"); _trapsArmDelay.Description = "How long the trap has to stay on ground before it can explode (in seconds)"; Indent++; { _trapsFriendlyFire.Format("Friendly fire", _trapsArmDelay, () => _trapsArmDelay > 0); _trapsFriendlyFire.Description = "The trap will also explode in contact with you and other players"; Indent--; } _wireTrapDepth.Format("Tripwire trap trigger depth"); _pressureTrapRadius.Format("Presure plate trigger radius"); _runicTrapRadius.Format("Runic trap trigger radius"); }
override protected void SetFormatting() { _contextualSkillQuickslots.Format("Contextual skills"); _contextualSkillQuickslots.Description = "When switching a weapon, skills that required the previous weapons type will be replaced by skills that require the new one." + "This allows for using the same set of quickslots for various skills, depending on the weapon you're currently using."; _replaceQuickslotsOnEquip.Format("Replace quickslots on equip"); _replaceQuickslotsOnEquip.Description = "When switching a weapon, if it's assigned to any quickslot, it will be replaced by the new weapon." + "This allows for toggling between 2 weapons with just one quickslot."; _assingByUsingFreeQuickslot.Format("Assign by using free quickslot"); _assingByUsingFreeQuickslot.Description = "When you use a free (empty) quickslot, your mainhand or offhand weapon will get assigned to it " + "(if it's not assigned to any quickslot yet)"; _extraGamepadQuickslots.Format("16 gamepad quickslots"); _extraGamepadQuickslots.Description = "Allows you to use the d-pad with LT/RT for 8 extra quickslots\n" + "(requires default d-pad keybinds AND game restart)"; }
override protected void SetFormatting() { _meleeDistance.Format("Melee distance"); _meleeDistance.Description = "Targeting distance for all melee weapons"; _rangedDistance.Format("Ranged distance"); _rangedDistance.Description = "Targeting distance for all weapons specified in the \"Ranged equipment\" setting"; _huntersEyeDistance.Format("Hunter's Eye distance"); _huntersEyeDistance.Description = "If you have Hunter's Eye, this is used instead of \"Ranged distance\""; _rangedEquipmentTypes.Format("Ranged equipment"); _rangedEquipmentTypes.Description = "What equipment should use the \"Ranged distance\" setting and benefit from Hunter's Eye?"; _autoTargetActions.Format("Auto-target actions"); _autoTargetActions.Description = "If you do any of these actions while not locked-on, you will automatically target the closest enemy"; _targetingPitchOffset.Format("Targeting tilt"); _targetingPitchOffset.Description = "When you're targeting, the camera will be tilted a little to give more \"top-down\" view\n" + "This way the enemy won't be obscured by your character, especially if you're wearing a big helmet"; }
static private void CreateSetting(List <AMod> mods) { List <string> names = new List <string>(); foreach (var preset in Utility.GetEnumValues <Preset>()) { names.Add(PresetToName(preset)); } _presetToLoad = new ModSetting <string>("", nameof(_presetToLoad), PresetToName(Preset.None), new AcceptableValueList <string>(names.ToArray())); _presetToLoad.Format("Load preset"); _presetToLoad.IsAdvanced = true; _presetToLoad.DisplayResetButton = false; _presetToLoad.AddEvent(() => LoadChosenPreset(mods)); }
override protected void SetFormatting() { _key.Format("Key"); _key.Description = "Use UnityEngine.KeyCode enum values\n" + "(https://docs.unity3d.com/ScriptReference/KeyCode.html)"; _walkSpeed.Format("Speed"); _walkSpeed.Description = "% of current movement speed when walking"; _doubleTapToToggle.Format("Double-tap to toggle"); _doubleTapToToggle.Description = "Toggle default movement mode (between running and walking) by double-tapping the chosen key"; Indent++; { _doubleTapWaitTime.Format("Wait time", _doubleTapToToggle); _doubleTapWaitTime.Description = "Max interval between two key presses (in milliseconds)"; Indent--; } }
override protected void SetFormatting() { _interactionToggle.Format("Interaction settings"); Indent++; { _interactionDuration.Format("Duration", _interactionToggle); _interactionDuration.Description = "How long you need to hold the interaction button to revive a player"; _interactionDistance.Format("Distance", _interactionToggle); _interactionDistance.Description = "From how far away you can start reviving"; _interactionPrioritize.Format("Prioritize", _interactionToggle); _interactionPrioritize.Description = "Ignore other interactions if a dead player is nearby"; Indent--; } _maxVitalsToggle.Format("Max Vitals"); _maxVitalsToggle.Description = "% of current max vital\n" + "(example: -10% setting and 50 max health before death will result in 5 Max Health lost after revive)"; Indent++; { _maxHealthLost.Format("Max health", _maxVitalsToggle); _maxStaminaLost.Format("Max stamina", _maxVitalsToggle); _maxManaLost.Format("Max mana", _maxVitalsToggle); Indent--; } _vitalsToggle.Format("Vitals"); _vitalsToggle.Description = "% of max vital, after revive changes\n" + "Health and stamina are set to a new value regardless of what they were before death, while mana is changed relative to its previous value"; Indent++; { _newHealth.Format("Health (new) ", _vitalsToggle); _newStamina.Format("Stamina (new)", _vitalsToggle); _manaLost.Format("Mana", _vitalsToggle); Indent--; } _needsToggle.Format("Needs & Corruption"); _needsToggle.Description = "% of remaining need / missing corruption"; Indent++; { _foodLost.Format("Food", _needsToggle); _drinkLost.Format("Drink", _needsToggle); _sleepLost.Format("Sleep", _needsToggle); _corruptionGained.Format("Corruption", _needsToggle); Indent--; } }
override protected void SetFormatting() { _areasToggle.Format("Areas"); _areasToggle.Description = "Change areas (scenes) reset settings"; Indent++; { _areasMode.Format("Reset mode", _areasToggle); _areasTimer.Format("Days since last visit", _areasMode, ResetMode.Timer); _areasTimerSinceReset.Format("Days since last reset", _areasMode, ResetMode.Timer); _areasResetLayers.Format("Layers to reset", _areasMode, ResetMode.Never, false); _areasResetLayers.Description = "Cities - makes cities reset just like any other area"; _fixUnarmedBandits.Format("Fix unarmed bandits", _areasResetLayers, AreasResetLayers.Enemies); _fixUnarmedBandits.IsAdvanced = true; Indent++; { _fixUnarmedBanditsDurabilityRatio.Format("New weapons' durability", _fixUnarmedBandits, WeaponSet.Disabled, false); _fixUnarmedBanditsDurabilityRatio.IsAdvanced = true; Indent--; } Indent--; } _gatherablesToggle.Format("Gatherables"); _gatherablesToggle.Description = "Change gatherables respawn settings"; Indent++; { _gatheringMode.Format("Gathering spots", _gatherablesToggle); _gatheringMode.Description = "Gatherables that don't require any tool"; _gatheringTimer.Format("", _gatheringMode, ResetMode.Timer); _miningMode.Format("Mining spots", _gatherablesToggle); _miningMode.Description = "Gatherables that require Mining Pick"; _miningTimer.Format("", _miningMode, ResetMode.Timer); _fishingMode.Format("Fishing spots", _gatherablesToggle); _fishingMode.Description = "Gatherables that require Fishing Harpoon"; _fishingTimer.Format("", _fishingMode, ResetMode.Timer); Indent--; } _merchantsToggle.Format("Merchants"); _merchantsToggle.Description = "Change merchant restock settings"; Indent++; { _merchantsMode.Format("", _merchantsToggle); _merchantsTimer.Format("", _merchantsMode, ResetMode.Timer); Indent--; } }
override protected void SetFormatting() { _playersToggle.Format("Players"); _playersToggle.Description = "Set multipliers for damage dealt by players"; Indent++; { _playersHealthDamage.Format("Health", _playersToggle); _playersStabilityDamage.Format("Stability", _playersToggle); _playersFriendlyFireToggle.Format("Friendly fire", _playersToggle); _playersFriendlyFireToggle.Description = "Set multipliers for damage dealt by players to other players\n" + "(multiplicative with above values)"; Indent++; { _playersFriendlyFireHealthDamage.Format("Health", _playersFriendlyFireToggle); _playersFriendlyFireStabilityDamage.Format("Stability", _playersFriendlyFireToggle); Indent--; } Indent--; } _enemiesToggle.Format("Enemies"); _enemiesToggle.Description = "Set multipliers for damage dealt by enemies"; Indent++; { _enemiesHealthDamage.Format("Health", _enemiesToggle); _enemiesStabilityDamage.Format("Stability", _enemiesToggle); _enemiesFriendlyFireToggle.Format("Friendly fire", _enemiesToggle); _enemiesFriendlyFireToggle.Description = "Set multipliers for damage dealt by enemies to other enemies\n" + "Decrease to prevent enemies from killing each other before you meet them\n" + "(multiplicative with above values)"; Indent++; { _enemiesFriendlyFireHealthDamage.Format("Health", _enemiesFriendlyFireToggle); _enemiesFriendlyFireStabilityDamage.Format("Stability", _enemiesFriendlyFireToggle); Indent--; } Indent--; } }
override protected void SetFormatting() { _gameToggle.Format("Game"); _gameToggle.Description = "Set multipliers (%) for the whole game world"; Indent++; { _defaultGameSpeed.Format("Default game speed", _gameToggle); _speedHackMultiplier.Format("SpeedHack multiplier", _gameToggle); _speedHackMultiplier.Description = "Default game speed is multiplied by this value when speedhack is enabled"; _speedHackKey.Format("SpeedHack key", _gameToggle); _speedHackKey.Description = "Use UnityEngine.KeyCode enum values\n" + "(https://docs.unity3d.com/ScriptReference/KeyCode.html)"; Indent--; } _playersToggle.Format("Players"); _playersToggle.Description = "Set multipliers (%) players' speeds"; Indent++; { _playersAnimationSpeed.Format("All animations", _playersToggle); _playersAnimationSpeed.Description = "Includes animations other than moving and attacking\n" + "(using skills, using items, dodging, gathering)"; _playersMovementSpeed.Format("Movement", _playersToggle); _playersAttackSpeed.Format("Attack", _playersToggle); Indent--; } _enemiesToggle.Format("NPCs"); _enemiesToggle.Description = "Set multipliers (%) NPCs' speeds"; Indent++; { _enemiesAnimationSpeed.Format("All animations", _enemiesToggle); _enemiesAnimationSpeed.Description = _playersAnimationSpeed.Description; _enemiesMovementSpeed.Format("Movement", _enemiesToggle); _enemiesAttackSpeed.Format("Attack", _enemiesToggle); Indent--; } }
override protected void SetFormatting() { _details.Format("Details to display"); _equipmentToggle.Format("Equipment"); Indent++; { _displayRelativeAttackSpeed.Format("Display relative attack speed", _equipmentToggle); _displayRelativeAttackSpeed.Description = "Attack speed will be displayedas +/- X%\n" + "If the weapon has default attack speed (1), it won't be displayed"; _normalizeImpactDisplay.Format("Normalize impact display", _equipmentToggle); _normalizeImpactDisplay.Description = "Impact damage/resistance will be displayed in the damages/resistances list and will have its own icon, just like all the other damage/resistance types"; _moveBarrierBelowProtection.Format("Move barrier below protection", _equipmentToggle); _moveBarrierBelowProtection.Description = "Barrier will be displayed right under protection instead of between resistances and impact resistance"; _hideNumericalDurability.Format("Hide numerical durability display", _equipmentToggle); _hideNumericalDurability.Description = "Hides the \"Durability: XXX/YYY\" row so the only indicator is the durability bar"; Indent--; } _barsToggle.Format("Bars"); _barsToggle.Description = "Change sizes of durability and freshness progress bars"; Indent++; { _durabilityTiedToMax.Format("Durability proportional to max", _barsToggle); _durabilityTiedToMax.Description = "Items that are hard to break will have a longer bar\n" + "Items that break easily will have a shorter bar"; _durabilityBarSize.Format("Durability length", _durabilityTiedToMax, false); _durabilityBarSize.Description = "Displayed on weapon, armors, lanterns and tools"; _freshnessTiedToLifespan.Format("Freshness proportional to lifespan", _barsToggle); _freshnessTiedToLifespan.Description = "Foods that stays fresh for a long time will have a longer bar\n" + "Foods that decay quickly will have a shorter bar"; _freshnessBarSize.Format("Freshness length", _freshnessTiedToLifespan, false); _freshnessBarSize.Description = "Displayed on food and drinks"; _barThickness.Format("Thickness", _barsToggle); Indent--; } _addBackgrounds.Format("Add backgrounds to foods/drinks"); _addBackgrounds.Description = "Display a big \"potions\" icon in the background of foods' and drinks' description box (by default, only Life Potion uses it)"; }
override protected void SetFormatting() { _groundInteractions.Format("Use items from ground"); _groundInteractions.Description = "Items to use straight from the ground with a \"Hold\" interaction"; _singleHoldsToPresses.Format("Instant \"Hold\" interactions"); _singleHoldsToPresses.Description = "Changes many objects' \"Hold\" interaction to \"Press\"\n" + "(examples: gathering, fishing, mining, opening chests)"; _holdInteractionsDuration.Format("\"Hold\" interactions duration"); _holdInteractionsDuration.Description = "How long you want to hold the button for \"Hold\" interaction to trigger"; _takeAnimations.Format("Item take animations"); _takeAnimations.Description = "Animates (and greatly slows down) the process of taking items"; _swapWaterInteractions.Format("Swap water gather/drink"); _swapWaterInteractions.Description = "Vanilla: press to gather, hold to drink\n" + "Custom: press to drink, hold to gather"; _disallowedInCombat.Format("Disallowed in combat"); _disallowedInCombat.Description = "Loot - opening chests, backpacks, corpses, etc.\n" + "Travel - move to another area with loading screen\n" + "Warp - enter door, climb rope or teleport without loading screen\n" + "Pull levers - open gates, ride elevators, etc."; _highlightsToggle.Format("Highlights"); _highlightsToggle.Description = "Change settings of the glowing orbs that highlight most interactive objects"; Indent++; { _highlightsIntensity.Format("Intensity", _highlightsToggle); _highlightsIntensity.Description = "Brightness and size of the highlights"; _highlightsDistance.Format("Distance", _highlightsToggle); _highlightsDistance.Description = "From how far away should the highlights be visible"; _highlightsColored.Format("Color per type", _highlightsToggle); _highlightsColored.Description = "Changes the highlights' color based on the interaction type:\n" + "Equipment - orange\n" + "Consumable - green\n" + "Other items - cyan\n" + "Containers and levers - purple"; Indent--; } }
override protected void SetFormatting() { _enableCheats.Format("Enable cheats"); Indent++; { _enableCheatsHotkey.Format("Hotkey"); Indent--; } _enableCheats.Description = "aka Debug Mode"; _skipStartupVideos.Format("Skip startup videos"); _skipStartupVideos.Description = "Saves ~3 seconds each time you launch the game"; _armorSlotsToHide.Format("Armor slots to hide"); _armorSlotsToHide.Description = "Used to hide ugly helmets (purely visual)"; _removeCoopScaling.Format("Remove multiplayer scaling"); _removeCoopScaling.Description = "Enemies in multiplayer will have the same stats as in singleplayer"; _removeDodgeInvulnerability.Format("Remove dodge invulnerability"); _removeDodgeInvulnerability.Description = "You can get hit during the dodge animation\n" + "(even without a backpack)"; _healEnemiesOnLoad.Format("Heal enemies on load"); _healEnemiesOnLoad.Description = "Every loading screen fully heals all enemies"; _multiplicativeStacking.Format("Multiplicative stacking"); _multiplicativeStacking.Description = "Some stats will stack multiplicatively instead of additvely\n" + "(movement speed, stamina cost, mana cost)"; Indent++; { _armorTrainingPenaltyReduction.Format("\"Armor Training\" penalty reduction", _multiplicativeStacking); _armorTrainingPenaltyReduction.Description = "How much of equipment's movement speed and stamina cost penalties should \"Armor Training\" ignore"; _applyArmorTrainingToManaCost.Format("\"Armor Training\" affects mana cost", _multiplicativeStacking); _applyArmorTrainingToManaCost.Description = "\"Armor Training\" will also lower equipment's mana cost penalties"; Indent--; } _loadArrowsFromInventory.Format("Load arrows from inventory"); _loadArrowsFromInventory.Description = "Whenever you shoot your bow, the lost arrow is instantly replaced with one from your backpack or pouch (in that order)"; _baseStaminaRegen.Format("Base stamina regen"); _titleScreenRandomize.Format("Randomize title screen"); _titleScreenRandomize.Description = "Every time you start the game, one of the chosen title screens will be loaded at random (untick all for default)"; Indent++; { _titleScreenHideCharacters.Format("Characters"); _titleScreenHideCharacters.Description = "If you think the character are ruining the view :)\n" + "(requires game restart)"; Indent--; } _craftFromStash.Format("Craft with stashed items"); _craftFromStash.Description = "When you're crafting in a city, you can use items from you stash"; _displayStashAmount.Format("Display stashed item amounts"); _displayStashAmount.Description = "Displays how many of each items you have stored in your stash\n" + "(shows in player/merchant inventory and crafting menu)"; _displayPricesInStash.Format("Display prices in stash"); _displayPricesInStash.Description = "Items in stash will have their sell prices displayed\n" + "(if prices vary among merchants, Soroborean Caravanner is taken as reference)"; _itemActionDropOne.Format("Add \"Drop one\" item action"); _itemActionDropOne.Description = "Adds a button to stacked items' which skips the \"choose amount\" panel and drops exactly 1 of the item\n" + "(recommended when playing co-op for quick item sharing)"; _temperatureToggle.Format("Temperature"); _temperatureToggle.Description = "Change each environmental temperature level's value and cap:\n" + "X - value; how much cold/hot weather defense you need to nullify this temperature level\n" + "Y - cap; min/max player temperature at this environmental temperature level\n" + "\n" + "Player temperatures cheatsheet:\n" + "Very cold - 25\n" + "Cold - 40\n" + "Neutral - 50\n" + "Hot - 60\n" + "Very Hot - 75)"; Indent++; { foreach (var step in Utility.GetEnumValues <TemperatureSteps>()) { if (step != TemperatureSteps.Count) { _temperatureDataByEnum[step].Format(step.ToString(), _temperatureToggle); } } Indent--; } }