private void InitializeTooltips() { // ROM Settings TooltipBuilder.SetTooltip(cN64, "Output a randomized .z64 ROM that can be loaded into a N64 Emulator."); TooltipBuilder.SetTooltip(cVC, "Output a randomized .WAD file that can be loaded into a Wii Virtual Channel."); TooltipBuilder.SetTooltip(cSpoiler, "Output a spoiler log.\n\n The spoiler log contains a list over all items, and their shuffled locations.\n In addition, the spoiler log contains version information, seed and settings string used in the randomization."); TooltipBuilder.SetTooltip(cHTMLLog, "Output a html spoiler log (Requires spoiler log to be checked).\n\n Similar to the regular spoiler log, but readable in browsers. The locations/items are hidden by default, and hovering over them will make them visible."); TooltipBuilder.SetTooltip(cPatch, "Output a patch file that can be applied using the Patch settings tab to reproduce the same ROM.\nPatch file includes all settings except Tunic and Tatl color."); // Main Settings TooltipBuilder.SetTooltip(cMode, "Select mode of logic:\n - Casual: The randomization logic ensures that the game can be beaten casually.\n - Using glitches: The randomization logic allows for placement of items that are only obtainable using known glitches.\n - Vanilla Layout: All items are left vanilla.\n - User logic: Upload your own custom logic to be used in the randomization.\n - No logic: Completely random, no guarantee the game is beatable."); TooltipBuilder.SetTooltip(cUserItems, "Only randomize a custom list of items.\n\nThe item list can be edited from the menu: Customize -> Item List Editor. When checked, some settings will become disabled."); TooltipBuilder.SetTooltip(cMixSongs, "Enable songs being placed among items in the randomization pool."); TooltipBuilder.SetTooltip(cDChests, "Enable keys, boss keys, maps and compasses being placed in the randomization pool."); TooltipBuilder.SetTooltip(cShop, "Enable shop items being placed in the randomization pool."); TooltipBuilder.SetTooltip(cBottled, "Enable captured bottle contents being randomized."); TooltipBuilder.SetTooltip(cSoS, "Exclude song of soaring from being placed in the randomization pool."); TooltipBuilder.SetTooltip(cDEnt, "Enable randomization of dungeon entrances. \n\nStone Tower Temple is always vanilla, but Inverted Stone Tower Temple is randomized."); TooltipBuilder.SetTooltip(cAdditional, "Enable miscellaneous items being placed in the randomization pool.\n\nAmong the miscellaneous items are:\nFreestanding heartpieces, overworld chests, (hidden) grotto chests, Tingle's maps and bank heartpiece."); TooltipBuilder.SetTooltip(cEnemy, "Enable randomization of enemies. May cause softlocks in some circumstances, use at your own risk."); TooltipBuilder.SetTooltip(cMoonItems, "Enable moon items being placed in the randomization pool.\n\nIncludes the four Moon Trial Heart Pieces, Fierce Deity's Mask and the two Link Trial chests."); TooltipBuilder.SetTooltip(cFairyRewards, "Enable great fairy rewards being placed in the randomization pool.\n\nIncludes Magic Power, Great Spin Attack, Extended Magic Power, Double Defense, Great Fairy's Sword and Great Fairy's Mask."); TooltipBuilder.SetTooltip(cNutChest, "Enable randomization of the pre-clocktown deku nut chest. Not available when using Casual logic."); TooltipBuilder.SetTooltip(cCrazyStartingItems, "Enable randomization of starting Sword, Shield, and two Heart Containers."); TooltipBuilder.SetTooltip(cCowMilk, "Enable randomization of cow milk.\n\nOne inaccessible ranch cow is not included for Casual logic."); TooltipBuilder.SetTooltip(cSpiders, "Enable randomization of golden skulltula tokens. Tokens will not reset to 0 after Song of Time."); TooltipBuilder.SetTooltip(cStrayFairies, "Enable randomization of stray fairies. Stray fairies will not reset to 0 after Song of Time."); TooltipBuilder.SetTooltip(cMundaneRewards, "Enable randomization of mundane rewards. See the Item List Editor for details."); // Gimmicks TooltipBuilder.SetTooltip(cDMult, "Select a damage mode, affecting how much damage Link takes:\n\n - Default: Link takes normal damage.\n - 2x: Link takes double damage.\n - 4x: Link takes quadruple damage.\n - 1-hit KO: Any damage kills Link.\n - Doom: Hardcore mode. Link's hearts are slowly being drained continuously."); TooltipBuilder.SetTooltip(cDType, "Select an effect to occur whenever Link is being damaged:\n\n - Default: Vanilla effects occur.\n - Fire: All damage burns Link.\n - Ice: All damage freezes Link.\n - Shock: All damage shocks link.\n - Knockdown: All damage knocks Link down.\n - Random: Any random effect of the above."); TooltipBuilder.SetTooltip(cGravity, "Select a movement modifier:\n\n - Default: No movement modifier.\n - High speed: Link moves at a much higher velocity.\n - Super low gravity: Link can jump very high.\n - Low gravity: Link can jump high.\n - High gravity: Link can barely jump."); TooltipBuilder.SetTooltip(cFloors, "Select a floortype for every floor ingame:\n\n - Default: Vanilla floortypes.\n - Sand: Link sinks slowly into every floor, affecting movement speed.\n - Ice: Every floor is slippery.\n - Snow: Similar to sand. \n - Random: Any random floortypes of the above."); TooltipBuilder.SetTooltip(cClockSpeed, "Modify the speed of time."); TooltipBuilder.SetTooltip(cHideClock, "Clock UI will be hidden."); TooltipBuilder.SetTooltip(cNoStartingItems, "You will not start with any randomized starting items."); TooltipBuilder.SetTooltip(cBlastCooldown, "Adjust the cooldown timer after using the Blast Mask."); // Comforts/cosmetics TooltipBuilder.SetTooltip(cCutsc, "Enable shortened cutscenes.\n\nCertain cutscenes are skipped or otherwise shortened.\nDISCLAIMER: This may cause crashing in certain emulators."); TooltipBuilder.SetTooltip(cQText, "Enable quick text. Dialogs are fast-forwarded to choices/end of dialog."); TooltipBuilder.SetTooltip(cSFX, "Randomize sound effects that are played throughout the game."); TooltipBuilder.SetTooltip(cMusic, "Select a music option\n\n - Default: Vanilla background music.\n - Random: Randomized background music.\n - None: No background music. Causes softlock on Frog Choir HP."); TooltipBuilder.SetTooltip(cFreeHints, "Enable reading gossip stone hints without requiring the Mask of Truth."); TooltipBuilder.SetTooltip(cClearHints, "Gossip stone hints will give clear item and location names."); TooltipBuilder.SetTooltip(cNoDowngrades, "Downgrading items will be prevented."); TooltipBuilder.SetTooltip(cShopAppearance, "Shops models and text will be updated to match the item they give."); TooltipBuilder.SetTooltip(cUpdateChests, "Chest appearance will be updated to match the item they contain."); TooltipBuilder.SetTooltip(cEponaSword, "Change Epona's B button behavior to prevent you from losing your sword if you don't have a bow.\nMay affect vanilla glitches that use Epona's B button."); TooltipBuilder.SetTooltip(bTunic, "Select the color of Link's Tunic."); TooltipBuilder.SetTooltip(cLink, "Select a character model to replace Link's default model."); TooltipBuilder.SetTooltip(cTatl, "Select a color scheme to replace Tatl's default color scheme."); TooltipBuilder.SetTooltip(cGossipHints, "Select a Gossip Stone hint style\n\n - Default: Vanilla Gossip Stone hints.\n - Random: Hints will contain locations of random items.\n - Relevant: Hints will contain locations of items loosely related to the vanilla hint or the area.\n - Competitive: Guaranteed hints about time-consuming checks, 2 hints about locations with important items, 3 hints about locations with no important items."); TooltipBuilder.SetTooltip(cSkipBeaver, "Modify Beavers to not have to race the younger beaver."); TooltipBuilder.SetTooltip(cGoodDampeRNG, "Change Dampe ghost flames to always have two on the ground floor and one up the ladder."); TooltipBuilder.SetTooltip(cGoodDogRaceRNG, "Make Gold Dog always win if you have the Mask of Truth."); TooltipBuilder.SetTooltip(cFasterLabFish, "Change Lab Fish to only need to be fed one fish."); }
public ToggleTricksForm(LogicMode logicMode, string userLogicFilename, IEnumerable <string> tricksEnabled) { InitializeComponent(); Result = tricksEnabled.ToList(); var lines = LogicUtils.ReadRulesetFromResources(logicMode, userLogicFilename); var itemList = LogicUtils.PopulateItemListFromLogicData(lines); var y = 9; var deltaY = 23; var tricks = itemList.Where(io => io.IsTrick); foreach (var itemObject in tricks.OrderBy(io => io.Name)) { var cTrick = new CheckBox(); cTrick.Tag = itemObject; cTrick.Checked = tricksEnabled.Contains(itemObject.Name); cTrick.Text = itemObject.Name; TooltipBuilder.SetTooltip(cTrick, itemObject.TrickTooltip); cTrick.Location = new Point(9, y); cTrick.Size = new Size(pTricks.Width - 50, deltaY); cTrick.CheckedChanged += cTrick_CheckedChanged; pTricks.Controls.Add(cTrick); y += deltaY; } }
private void Write_Tricks() { pTricks.Controls.Clear(); var itemList = LogicUtils.PopulateItemListFromLogicData(LogicFile); var y = 9; var deltaY = 23; var tricks = itemList.Where(io => io.IsTrick); var categories = tricks.Select(io => string.IsNullOrWhiteSpace(io.TrickCategory) ? "Misc" : io.TrickCategory).Distinct().ToList(); if (categories.Count > 1) { foreach (var i in tricks) { i.TrickCategory = string.IsNullOrWhiteSpace(i.TrickCategory) ? "Misc" : i.TrickCategory; } tricks = tricks.OrderBy(io => categories.IndexOf(io.TrickCategory)); } string currentCategory = string.Empty; foreach (var itemObject in tricks) { if (!itemObject.Name.ToLower().Contains(txtSearch.Text.ToLower())) { continue; } if (itemObject.TrickCategory != null && currentCategory != itemObject.TrickCategory) { currentCategory = itemObject.TrickCategory; var cCategory = new InvertIndeterminateCheckBox(); cCategory.Text = currentCategory + ":"; cCategory.Location = new Point(9, y); cCategory.Size = new Size(pTricks.Width - 50, deltaY); cCategory.CheckStateChanged += cTrick_CheckStateChanged; cCategory.Tag = tricks .Where(io => io.TrickCategory == currentCategory && io.Name.ToLower().Contains(txtSearch.Text.ToLower())) .Select(io => io.Name) .ToHashSet(); pTricks.Controls.Add(cCategory); y += deltaY; } var cTrick = new CheckBox(); cTrick.Tag = new HashSet <string> { itemObject.Name }; cTrick.Checked = Result.Contains(itemObject.Name); cTrick.Text = itemObject.Name; TooltipBuilder.SetTooltip(cTrick, itemObject.TrickTooltip); cTrick.Location = new Point(18, y); cTrick.Size = new Size(pTricks.Width - 50, deltaY); cTrick.CheckStateChanged += cTrick_CheckStateChanged; pTricks.Controls.Add(cTrick); y += deltaY; } CalculateCategoryCheckboxes(); }
private void InitializeTooltips() { // ROM Settings TooltipBuilder.SetTooltip(cN64, "Output a randomized .z64 ROM that can be loaded into a N64 Emulator."); TooltipBuilder.SetTooltip(cVC, "Output a randomized .WAD file that can be loaded into a Wii Virtual Channel."); TooltipBuilder.SetTooltip(cSpoiler, "Output a spoiler log.\n\n The spoiler log contains a list over all items, and their shuffled locations.\n In addition, the spoiler log contains version information, seed and settings string used in the randomization."); TooltipBuilder.SetTooltip(cHTMLLog, "Output a html spoiler log (Requires spoiler log to be checked).\n\n Similar to the regular spoiler log, but readable in browsers. The locations/items are hidden by default, and hovering over them will make them visible."); TooltipBuilder.SetTooltip(cPatch, "Output a patch file that can be applied using the Patch settings tab to reproduce the same ROM.\nPatch file includes all settings except Tunic and Tatl color."); // Main Settings TooltipBuilder.SetTooltip(cMode, "Select mode of logic:\n - Casual/glitchless: The randomization logic ensures that no glitches are required to beat the game.\n - Using glitches: The randomization logic allows for placement of items that are only obtainable using known glitches.\n - Vanilla Layout: All items are left vanilla.\n - User logic: Upload your own custom logic to be used in the randomization.\n - No logic: Completely random, no guarantee the game is beatable."); TooltipBuilder.SetTooltip(cUserItems, "Only randomize a custom list of items.\n\nThe item list can be edited from the menu: Customize -> Item List Editor. When checked, some settings will become disabled."); TooltipBuilder.SetTooltip(cMixSongs, "Enable songs being placed among items in the randomization pool."); TooltipBuilder.SetTooltip(cDChests, "Enable keys, boss keys, maps and compasses being placed in the randomization pool."); TooltipBuilder.SetTooltip(cShop, "Enable shop items being placed in the randomization pool."); TooltipBuilder.SetTooltip(cBottled, "Enable captured bottle contents being randomized."); TooltipBuilder.SetTooltip(cSoS, "Exclude song of soaring from being placed in the randomization pool."); TooltipBuilder.SetTooltip(cGossip, "Enable gossip stones displaying hints on where certain items are located."); TooltipBuilder.SetTooltip(cDEnt, "Enable randomization of dungeon entrances. \n\nStone Tower Temple is always vanilla, but Inverted Stone Tower Temple is randomized."); TooltipBuilder.SetTooltip(cAdditional, "Enable miscellaneous items being placed in the randomization pool.\n\nAmong the miscellaneous items are:\nFreestanding heartpieces, overworld chests, (hidden) grotto chests, Tingle's maps and bank heartpiece."); TooltipBuilder.SetTooltip(cEnemy, "Enable randomization of enemies. May cause softlocks in some circumstances, use at your own risk."); TooltipBuilder.SetTooltip(cMoonItems, "Enable moon items being placed in the randomization pool.\n\nIncludes the four Moon Trial Heart Pieces and the Fierce Deity's Mask."); // Gimmicks TooltipBuilder.SetTooltip(cDMult, "Select a damage mode, affecting how much damage Link takes:\n\n - Default: Link takes normal damage.\n - 2x: Link takes double damage.\n - 4x: Link takes quadruple damage.\n - 1-hit KO: Any damage kills Link.\n - Doom: Hardcore mode. Link's hearts are slowly being drained continuously."); TooltipBuilder.SetTooltip(cDType, "Select an effect to occur whenever Link is being damaged:\n\n - Default: Vanilla effects occur.\n - Fire: All damage burns Link.\n - Ice: All damage freezes Link.\n - Shock: All damage shocks link.\n - Knockdown: All damage knocks Link down.\n - Random: Any random effect of the above."); TooltipBuilder.SetTooltip(cGravity, "Select a movement modifier:\n\n - Default: No movement modifier.\n - High speed: Link moves at a much higher velocity.\n - Super low gravity: Link can jump very high.\n - Low gravity: Link can jump high.\n - High gravity: Link can barely jump."); TooltipBuilder.SetTooltip(cFloors, "Select a floortype for every floor ingame:\n\n - Default: Vanilla floortypes.\n - Sand: Link sinks slowly into every floor, affecting movement speed.\n - Ice: Every floor is slippery.\n - Snow: Similar to sand. \n - Random: Any random floortypes of the above."); TooltipBuilder.SetTooltip(cClockSpeed, "Modify the speed of time. \n\nNote: The slowdown effect of playing inverted song of time does not scale with time speed."); // Comforts/cosmetics TooltipBuilder.SetTooltip(cCutsc, "Enable shortened cutscenes.\n\nCertain cutscenes are skipped or otherwise shortened.\nDISCLAIMER: This may cause crashing in certain emulators."); TooltipBuilder.SetTooltip(cQText, "Enable quick text. Dialogs are fast-forwarded to choices/end of dialog."); TooltipBuilder.SetTooltip(cBGM, "Randomize background music sequences that are played throughout the game."); TooltipBuilder.SetTooltip(cFreeHints, "Enable reading gossip stone hints without requiring the Mask of Truth."); TooltipBuilder.SetTooltip(cClearHints, "Gossip stone hints will give clear item and location names."); TooltipBuilder.SetTooltip(bTunic, "Select the color of Link's Tunic."); TooltipBuilder.SetTooltip(cLink, "Select a character model to replace Link's default model."); TooltipBuilder.SetTooltip(cTatl, "Select a color scheme to replace Tatl's default color scheme."); }