From 1fa6130f700849d64c9ee8804c399dab54430c79 Mon Sep 17 00:00:00 2001 From: uthuluc <58225812+uthuluc@users.noreply.github.com> Date: Sat, 9 Dec 2023 23:56:46 -0500 Subject: [PATCH 01/10] Create Candy Cane Sword Cane untested --- .../2023/Candy Cane Sword Cane | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane new file mode 100644 index 00000000..d4b1e3ea --- /dev/null +++ b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane @@ -0,0 +1,67 @@ +//candy cane sword cane +RegisterTaskGenerationFunction("IOTMCandyCaneSwordGenerateTasks"); +void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries) +{ + if (__iotms_usable[lookupItem("candy cane sword cane")]) return; + string [int] description; + string [int] description2; + string [int] options; + if (__misc_state["in run"] && my_path().id != PATH_COMMUNITY_SERVICE) + { + string url = "inventory.php?ftext=candy+cane+sword+cane"; + description2.listAppend(HTMLGenerateSpanFont("You're", "red") + " " + HTMLGenerateSpanFont("in a", "green") + " " + HTMLGenerateSpanFont("candy", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("sword", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("noncom", "red") + " " + HTMLGenerateSpanFont("zone!", "green")); + //candy cane advs + if (!get_property_boolean("_candyCaneSwordLyle")) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Lyle monorail +40% init buff"); + } + if (!get_property_boolean("candyCaneSwordBlackForest")) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Black Forest +8 exploration"); + if (($locations[the home of the future] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); + } + } + if (!get_property_boolean("candyCaneSwordDailyDungeon")) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Daily Dungeon +1 fat loot token"); + if (($locations[The Daily Dungeon] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); + } + } + if (!get_property_boolean("candyCaneSwordApartmentBuilding")) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Hidden Apartment +1 Curse"); + if (($locations[The Hidden Apartment Building] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); + } + } + if (!get_property_boolean("candyCaneSwordBowlingAlley")) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Hidden Bowling Alley +1 bowlo"); + if (($locations[The Hidden Bowling Alley] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); + } + } + if (!get_property_boolean("candyCaneSwordShore")) { + options.listAppend(HTMLGenerateSpanOfClass("Alternate:", "r_bold") + " Shore: +2 scrips"); + if (($locations[The Shore\, Inc. Travel Agency] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); + } + } + if (locationAvailable($location[The Battlefield (Frat Uniform)]) == false) { + options.listAppend(HTMLGenerateSpanOfClass("Alternate:", "r_bold") + " Hippy Camp: Redirect to war start"); + if (($locations[Wartime Hippy Camp,Wartime Frat House] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); + } + } + if (locationAvailable($location[The Red Zeppelin]) == true) { + options.listAppend(HTMLGenerateSpanOfClass("Alternate: ", "r_bold") + "Zeppelin Protesters: " + HTMLGenerateSpanFont("double Sleaze", "purple")); + if (($locations[A Mob of Zeppelin Protesters] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); + } + } + if (options.count() > 0) + description.listAppend("Candy cane sword noncoms:" + options.listJoinComponents("
").HTMLGenerateIndentedText()); + + if (lookupItem("candy cane sword cane").equipped_amount() == 0) { + description.listAppend(HTMLGenerateSpanFont("Equip the candy cane sword", "red")); + } + optional_task_entries.listAppend(ChecklistEntryMake("__item Candy cane sword cane", url, ChecklistSubentryMake("Candy cane sword cane noncombats", description)).ChecklistEntrySetCombinationTag("CCSC tasks").ChecklistEntrySetIDTag("CCSC")); + } +} From 64613cad59921aa045b46576e88dc1497cf41908 Mon Sep 17 00:00:00 2001 From: uthuluc <58225812+uthuluc@users.noreply.github.com> Date: Sat, 9 Dec 2023 23:57:40 -0500 Subject: [PATCH 02/10] Update Candy Cane Sword Cane --- .../TourGuide/Items of the Month/2023/Candy Cane Sword Cane | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane index d4b1e3ea..2e44086e 100644 --- a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane +++ b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane @@ -10,13 +10,14 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis { string url = "inventory.php?ftext=candy+cane+sword+cane"; description2.listAppend(HTMLGenerateSpanFont("You're", "red") + " " + HTMLGenerateSpanFont("in a", "green") + " " + HTMLGenerateSpanFont("candy", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("sword", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("noncom", "red") + " " + HTMLGenerateSpanFont("zone!", "green")); + //this supernag will only appear while lastadv is in a cane zone AND the option has not been taken already //candy cane advs if (!get_property_boolean("_candyCaneSwordLyle")) { options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Lyle monorail +40% init buff"); } if (!get_property_boolean("candyCaneSwordBlackForest")) { options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Black Forest +8 exploration"); - if (($locations[the home of the future] contains __last_adventure_location)) { + if (($locations[The Black Forest] contains __last_adventure_location)) { task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); } } From 5456e3af203e21e36a1b99924ca58e2a5c335b30 Mon Sep 17 00:00:00 2001 From: uthuluc <58225812+uthuluc@users.noreply.github.com> Date: Sun, 10 Dec 2023 00:00:56 -0500 Subject: [PATCH 03/10] Update Candy Cane Sword Cane --- .../TourGuide/Items of the Month/2023/Candy Cane Sword Cane | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane index 2e44086e..d2c224a5 100644 --- a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane +++ b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane @@ -2,7 +2,7 @@ RegisterTaskGenerationFunction("IOTMCandyCaneSwordGenerateTasks"); void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries) { - if (__iotms_usable[lookupItem("candy cane sword cane")]) return; + if (!__iotms_usable[lookupItem("candy cane sword cane")]) return; string [int] description; string [int] description2; string [int] options; From 0f3f04c1c057726979c353abfbc5e5d880c55bcd Mon Sep 17 00:00:00 2001 From: Aaron McGuire Date: Sat, 2 Mar 2024 10:50:40 -0500 Subject: [PATCH 04/10] adding a few new conditions, testing --- .../2023/Candy Cane Sword Cane | 68 ------------ .../2023/Candy Cane Sword Cane.ash | 100 ++++++++++++++++++ .../Items of the Month import.ash | 3 +- 3 files changed, 102 insertions(+), 69 deletions(-) delete mode 100644 Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane create mode 100644 Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane deleted file mode 100644 index d2c224a5..00000000 --- a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane +++ /dev/null @@ -1,68 +0,0 @@ -//candy cane sword cane -RegisterTaskGenerationFunction("IOTMCandyCaneSwordGenerateTasks"); -void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries) -{ - if (!__iotms_usable[lookupItem("candy cane sword cane")]) return; - string [int] description; - string [int] description2; - string [int] options; - if (__misc_state["in run"] && my_path().id != PATH_COMMUNITY_SERVICE) - { - string url = "inventory.php?ftext=candy+cane+sword+cane"; - description2.listAppend(HTMLGenerateSpanFont("You're", "red") + " " + HTMLGenerateSpanFont("in a", "green") + " " + HTMLGenerateSpanFont("candy", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("sword", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("noncom", "red") + " " + HTMLGenerateSpanFont("zone!", "green")); - //this supernag will only appear while lastadv is in a cane zone AND the option has not been taken already - //candy cane advs - if (!get_property_boolean("_candyCaneSwordLyle")) { - options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Lyle monorail +40% init buff"); - } - if (!get_property_boolean("candyCaneSwordBlackForest")) { - options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Black Forest +8 exploration"); - if (($locations[The Black Forest] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); - } - } - if (!get_property_boolean("candyCaneSwordDailyDungeon")) { - options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Daily Dungeon +1 fat loot token"); - if (($locations[The Daily Dungeon] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); - } - } - if (!get_property_boolean("candyCaneSwordApartmentBuilding")) { - options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Hidden Apartment +1 Curse"); - if (($locations[The Hidden Apartment Building] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); - } - } - if (!get_property_boolean("candyCaneSwordBowlingAlley")) { - options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Hidden Bowling Alley +1 bowlo"); - if (($locations[The Hidden Bowling Alley] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); - } - } - if (!get_property_boolean("candyCaneSwordShore")) { - options.listAppend(HTMLGenerateSpanOfClass("Alternate:", "r_bold") + " Shore: +2 scrips"); - if (($locations[The Shore\, Inc. Travel Agency] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); - } - } - if (locationAvailable($location[The Battlefield (Frat Uniform)]) == false) { - options.listAppend(HTMLGenerateSpanOfClass("Alternate:", "r_bold") + " Hippy Camp: Redirect to war start"); - if (($locations[Wartime Hippy Camp,Wartime Frat House] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); - } - } - if (locationAvailable($location[The Red Zeppelin]) == true) { - options.listAppend(HTMLGenerateSpanOfClass("Alternate: ", "r_bold") + "Zeppelin Protesters: " + HTMLGenerateSpanFont("double Sleaze", "purple")); - if (($locations[A Mob of Zeppelin Protesters] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", description2), -11)); - } - } - if (options.count() > 0) - description.listAppend("Candy cane sword noncoms:" + options.listJoinComponents("
").HTMLGenerateIndentedText()); - - if (lookupItem("candy cane sword cane").equipped_amount() == 0) { - description.listAppend(HTMLGenerateSpanFont("Equip the candy cane sword", "red")); - } - optional_task_entries.listAppend(ChecklistEntryMake("__item Candy cane sword cane", url, ChecklistSubentryMake("Candy cane sword cane noncombats", description)).ChecklistEntrySetCombinationTag("CCSC tasks").ChecklistEntrySetIDTag("CCSC")); - } -} diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash new file mode 100644 index 00000000..54fb9157 --- /dev/null +++ b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash @@ -0,0 +1,100 @@ +//candy cane sword cane +RegisterTaskGenerationFunction("IOTMCandyCaneSwordGenerateTasks"); +void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries) +{ + // Initialization. Good use of "lookupItem" for backwards compatibility reasons. + if (!__iotms_usable[lookupItem("candy cane sword cane")]) return; + string [int] description; + string [int] describeSupernag; + string [int] options; + + // Added a check for all paths where you do not want the supernag: + // - Community Service & Grey Goo: irrelevant + // - Avatar of Boris: cannot wield a weapon other than trusty + boolean pathCheck = true; + pathCheck = my_path().id == PATH_COMMUNITY_SERVICE ? false : true; + pathCheck = my_path().id == PATH_GREY_GOO ? false : true; + pathCheck = my_path().id == PATH_AVATAR_OF_BORIS ? false : true; + + // __misc_state["in run"] && + if (pathCheck) + { + string url = "inventory.php?ftext=candy+cane+sword+cane"; + // This is the description for the supernag. The supernag is in the task_entries, buried within conditional ifs and only shows up if you're in the zone. + describeSupernag.listAppend(HTMLGenerateSpanFont("You're", "red") + " " + HTMLGenerateSpanFont("in a", "green") + " " + HTMLGenerateSpanFont("candy", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("sword", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("noncom", "red") + " " + HTMLGenerateSpanFont("zone!", "green")); + + // This enumerates the useful CCSC adventures. + + if (!get_property_boolean("_candyCaneSwordLyle")) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Lyle's Monorail Buff (+40% init)"); + } + + // Added a check for if they are past black forest + if (!get_property_boolean("candyCaneSwordBlackForest") && __quest_state["Level 11"].mafia_internal_step < 2) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " The Black Forest (+8 exploration)"); + if (($locations[The Black Forest] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + } + } + + // Added a check for if they need the loot token. + if (!get_property_boolean("candyCaneSwordDailyDungeon") && __misc_state_int["fat loot tokens needed"] > 0) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Daily Dungeon (+1 fat loot token)"); + if (($locations[The Daily Dungeon] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + } + } + + // Added a check for if they need a curse + if (!get_property_boolean("candyCaneSwordApartmentBuilding") && get_property_int("hiddenApartmentProgress") < 8) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Hidden Apartment (+1 Curse)"); + if (($locations[The Hidden Apartment Building] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + } + } + + // Added a check for if they need bowling alley access by checking the bowling alley progress var + if (!get_property_boolean("candyCaneSwordBowlingAlley") && get_property_int("hiddenBowlingAlleyProgress") < 7) { + options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Hidden Bowling Alley (+1 free bowl)"); + if (($locations[The Hidden Bowling Alley] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + } + } + + // Added a check for if they need shore access + if (!get_property_boolean("candyCaneSwordShore") && !__misc_state["mysterious island available"]) { + options.listAppend(HTMLGenerateSpanOfClass("Alternate:", "r_bold") + " Shore (2 scrips for the price of 1)"); + if (($locations[The Shore\, Inc. Travel Agency] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + } + } + + // Added a check for if war is finished + if (locationAvailable($location[The Battlefield (Frat Uniform)]) == false && !__quest_state["Level 12"].finished) { + options.listAppend(HTMLGenerateSpanOfClass("Alternate:", "r_bold") + " Hippy Camp (Redirect to the War Start NC)"); + if (($locations[Wartime Hippy Camp,Wartime Frat House] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + } + } + + // Changed condition to <80 protestors check + if (get_property_int("zeppelinProtestors") < 80) { + options.listAppend(HTMLGenerateSpanOfClass("Alternate: ", "r_bold") + "Zeppelin Protesters " + HTMLGenerateSpanFont("(double Sleaze damage!)", "purple")); + if (($locations[A Mob of Zeppelin Protesters] contains __last_adventure_location)) { + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + } + } + + if (options.count() > 0) { + description.listAppend("Ensure your CCSC is equipped for these useful NCs:" + options.listJoinComponents("
").HTMLGenerateIndentedText()); + } + + if (lookupItem("candy cane sword cane").equipped_amount() == 0) { + description.listAppend(HTMLGenerateSpanFont("(Equip the candy cane sword cane -- it's not equipped!)", "red")); + } + // Only generate the tile if there are actual options. + if (options.count() > 0) { + optional_task_entries.listAppend(ChecklistEntryMake("__item Candy cane sword cane", url, ChecklistSubentryMake("Candy cane sword cane noncombats", description)).ChecklistEntrySetCombinationTag("CCSC tasks").ChecklistEntrySetIDTag("CCSC")); + } + } +} diff --git a/Source/relay/TourGuide/Items of the Month/Items of the Month import.ash b/Source/relay/TourGuide/Items of the Month/Items of the Month import.ash index f8245501..1a642c5c 100644 --- a/Source/relay/TourGuide/Items of the Month/Items of the Month import.ash +++ b/Source/relay/TourGuide/Items of the Month/Items of the Month import.ash @@ -141,4 +141,5 @@ import "relay/TourGuide/Items of the Month/2023/Patriotic Eagle.ash"; import "relay/TourGuide/Items of the Month/2023/August Scepter.ash"; import "relay/TourGuide/Items of the Month/2023/Book of Facts.ash"; import "relay/TourGuide/Items of the Month/2023/Jill of all Trades.ash"; -import "relay/TourGuide/Items of the Month/2023/A Guide to Burning Leaves.ash"; \ No newline at end of file +import "relay/TourGuide/Items of the Month/2023/A Guide to Burning Leaves.ash"; +import "relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash"; \ No newline at end of file From 95b903755bc7e364c747d7774c2b75da6a152f4c Mon Sep 17 00:00:00 2001 From: Aaron McGuire Date: Sat, 2 Mar 2024 11:00:19 -0500 Subject: [PATCH 05/10] trying to get the damn tile to actually show on bundle --- .../2023/Candy Cane Sword Cane.ash | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash index 54fb9157..bfb02fb2 100644 --- a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash +++ b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash @@ -1,4 +1,4 @@ -//candy cane sword cane +// Candy Cane Sword Cane RegisterTaskGenerationFunction("IOTMCandyCaneSwordGenerateTasks"); void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries) { @@ -8,23 +8,22 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis string [int] describeSupernag; string [int] options; - // Added a check for all paths where you do not want the supernag: + // Added a check for all paths where you do not want the tile at all: // - Community Service & Grey Goo: irrelevant - // - Avatar of Boris: cannot wield a weapon other than trusty + // - Avatar of Boris: cannot wield a weapon other than trusty or use a familiar boolean pathCheck = true; pathCheck = my_path().id == PATH_COMMUNITY_SERVICE ? false : true; pathCheck = my_path().id == PATH_GREY_GOO ? false : true; pathCheck = my_path().id == PATH_AVATAR_OF_BORIS ? false : true; - // __misc_state["in run"] && - if (pathCheck) + // __misc_state["in run"] && pathCheck + if (true) { string url = "inventory.php?ftext=candy+cane+sword+cane"; // This is the description for the supernag. The supernag is in the task_entries, buried within conditional ifs and only shows up if you're in the zone. describeSupernag.listAppend(HTMLGenerateSpanFont("You're", "red") + " " + HTMLGenerateSpanFont("in a", "green") + " " + HTMLGenerateSpanFont("candy", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("sword", "red") + " " + HTMLGenerateSpanFont("cane", "green") + " " + HTMLGenerateSpanFont("noncom", "red") + " " + HTMLGenerateSpanFont("zone!", "green")); - // This enumerates the useful CCSC adventures. - + // This enumerates the useful CCSC adventures if (!get_property_boolean("_candyCaneSwordLyle")) { options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Lyle's Monorail Buff (+40% init)"); } @@ -87,14 +86,14 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis if (options.count() > 0) { description.listAppend("Ensure your CCSC is equipped for these useful NCs:" + options.listJoinComponents("
").HTMLGenerateIndentedText()); + + if (lookupItem("candy cane sword cane").equipped_amount() == 0) { + description.listAppend(HTMLGenerateSpanFont("(Equip the candy cane sword cane -- it's not equipped!)", "red")); + } + + optional_task_entries.listAppend(ChecklistEntryMake("__item Candy cane sword cane", url, ChecklistSubentryMake("Candy cane sword cane noncombats", description)).ChecklistEntrySetCombinationTag("CCSC tasks").ChecklistEntrySetIDTag("CCSC")); } - if (lookupItem("candy cane sword cane").equipped_amount() == 0) { - description.listAppend(HTMLGenerateSpanFont("(Equip the candy cane sword cane -- it's not equipped!)", "red")); - } - // Only generate the tile if there are actual options. - if (options.count() > 0) { - optional_task_entries.listAppend(ChecklistEntryMake("__item Candy cane sword cane", url, ChecklistSubentryMake("Candy cane sword cane noncombats", description)).ChecklistEntrySetCombinationTag("CCSC tasks").ChecklistEntrySetIDTag("CCSC")); - } - } + } } + From 37e42930b26c067354441b436476877751905e74 Mon Sep 17 00:00:00 2001 From: Aaron McGuire Date: Sat, 2 Mar 2024 11:06:26 -0500 Subject: [PATCH 06/10] ...oh, yeah, adding it to IOTMS.ash would do it --- .../Items of the Month/2023/Candy Cane Sword Cane.ash | 4 ++-- Source/relay/TourGuide/Support/IOTMs.ash | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash index bfb02fb2..864673c9 100644 --- a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash +++ b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash @@ -16,8 +16,8 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis pathCheck = my_path().id == PATH_GREY_GOO ? false : true; pathCheck = my_path().id == PATH_AVATAR_OF_BORIS ? false : true; - // __misc_state["in run"] && pathCheck - if (true) + // __misc_state["in run"] + if (pathCheck) { string url = "inventory.php?ftext=candy+cane+sword+cane"; // This is the description for the supernag. The supernag is in the task_entries, buried within conditional ifs and only shows up if you're in the zone. diff --git a/Source/relay/TourGuide/Support/IOTMs.ash b/Source/relay/TourGuide/Support/IOTMs.ash index 90853563..63f37457 100644 --- a/Source/relay/TourGuide/Support/IOTMs.ash +++ b/Source/relay/TourGuide/Support/IOTMs.ash @@ -50,7 +50,7 @@ void initialiseIOTMsUsable() if (__campground[lookupItem("Little Geneticist DNA-Splicing Lab")] > 0) __iotms_usable[lookupItem("Little Geneticist DNA-Splicing Lab")] = true; if (__campground[lookupItem("Replica Little Geneticist DNA-Splicing Lab")] > 0) - __iotms_usable[lookupItem("Little Geneticist DNA-Splicing Lab")] = true; + __[lookupItem("Little Geneticist DNA-Splicing Lab")] = true; // __iotms_usable for gardens tracks whether the user has the garden installed. // Gardens start returning 0 instead of 1 when the items are picked, so checking @@ -145,6 +145,10 @@ void initialiseIOTMsUsable() __iotms_usable[lookupItem("Clan Carnival Game")] = true; __iotms_usable[$item[clan floundry]] = true; } + + if (lookupItem("candy cane sword cane").available_amount() > 0) //Mar 2021 + __iotms_usable[lookupItem("candy cane sword cane")] = true; + //Can't use many things in G-Lover if (my_path().id == PATH_G_LOVER) //Path 33 { From cb6dbfd27322a7d8e72e034fc20596a6157fdef0 Mon Sep 17 00:00:00 2001 From: Aaron McGuire Date: Sat, 2 Mar 2024 11:10:24 -0500 Subject: [PATCH 07/10] accidental copy/paste error --- Source/relay/TourGuide/Support/IOTMs.ash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/relay/TourGuide/Support/IOTMs.ash b/Source/relay/TourGuide/Support/IOTMs.ash index 63f37457..f1409968 100644 --- a/Source/relay/TourGuide/Support/IOTMs.ash +++ b/Source/relay/TourGuide/Support/IOTMs.ash @@ -50,7 +50,7 @@ void initialiseIOTMsUsable() if (__campground[lookupItem("Little Geneticist DNA-Splicing Lab")] > 0) __iotms_usable[lookupItem("Little Geneticist DNA-Splicing Lab")] = true; if (__campground[lookupItem("Replica Little Geneticist DNA-Splicing Lab")] > 0) - __[lookupItem("Little Geneticist DNA-Splicing Lab")] = true; + __iotms_usable[lookupItem("Little Geneticist DNA-Splicing Lab")] = true; // __iotms_usable for gardens tracks whether the user has the garden installed. // Gardens start returning 0 instead of 1 when the items are picked, so checking @@ -145,8 +145,8 @@ void initialiseIOTMsUsable() __iotms_usable[lookupItem("Clan Carnival Game")] = true; __iotms_usable[$item[clan floundry]] = true; } - - if (lookupItem("candy cane sword cane").available_amount() > 0) //Mar 2021 + + if (lookupItem("candy cane sword cane").available_amount() > 0) //Dec 2023 __iotms_usable[lookupItem("candy cane sword cane")] = true; //Can't use many things in G-Lover From 12f906544a9f96510be4b3af932c5d529685c83c Mon Sep 17 00:00:00 2001 From: Aaron McGuire Date: Sat, 2 Mar 2024 11:19:06 -0500 Subject: [PATCH 08/10] a few last logic changes --- .../2023/Candy Cane Sword Cane.ash | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash index 864673c9..a6786d81 100644 --- a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash +++ b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash @@ -4,6 +4,8 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis { // Initialization. Good use of "lookupItem" for backwards compatibility reasons. if (!__iotms_usable[lookupItem("candy cane sword cane")]) return; + int ccscEquipped = lookupItem("candy cane sword cane").equipped_amount(); + string ccscEquipStatement = ccscEquipped > 0 ? "Keep your Candy Cane Sword Cane equipped!" : "Equip your Candy Cane Sword Cane!"; string [int] description; string [int] describeSupernag; string [int] options; @@ -32,7 +34,7 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis if (!get_property_boolean("candyCaneSwordBlackForest") && __quest_state["Level 11"].mafia_internal_step < 2) { options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " The Black Forest (+8 exploration)"); if (($locations[The Black Forest] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake(ccscEquipStatement, "", describeSupernag), -11)); } } @@ -40,7 +42,7 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis if (!get_property_boolean("candyCaneSwordDailyDungeon") && __misc_state_int["fat loot tokens needed"] > 0) { options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Daily Dungeon (+1 fat loot token)"); if (($locations[The Daily Dungeon] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake(ccscEquipStatement, "", describeSupernag), -11)); } } @@ -48,7 +50,7 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis if (!get_property_boolean("candyCaneSwordApartmentBuilding") && get_property_int("hiddenApartmentProgress") < 8) { options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Hidden Apartment (+1 Curse)"); if (($locations[The Hidden Apartment Building] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake(ccscEquipStatement, "", describeSupernag), -11)); } } @@ -56,7 +58,7 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis if (!get_property_boolean("candyCaneSwordBowlingAlley") && get_property_int("hiddenBowlingAlleyProgress") < 7) { options.listAppend(HTMLGenerateSpanOfClass("Bonus:", "r_bold") + " Hidden Bowling Alley (+1 free bowl)"); if (($locations[The Hidden Bowling Alley] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake(ccscEquipStatement, "", describeSupernag), -11)); } } @@ -64,7 +66,7 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis if (!get_property_boolean("candyCaneSwordShore") && !__misc_state["mysterious island available"]) { options.listAppend(HTMLGenerateSpanOfClass("Alternate:", "r_bold") + " Shore (2 scrips for the price of 1)"); if (($locations[The Shore\, Inc. Travel Agency] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake(ccscEquipStatement, "", describeSupernag), -11)); } } @@ -72,7 +74,7 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis if (locationAvailable($location[The Battlefield (Frat Uniform)]) == false && !__quest_state["Level 12"].finished) { options.listAppend(HTMLGenerateSpanOfClass("Alternate:", "r_bold") + " Hippy Camp (Redirect to the War Start NC)"); if (($locations[Wartime Hippy Camp,Wartime Frat House] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake(ccscEquipStatement, "", describeSupernag), -11)); } } @@ -80,18 +82,19 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis if (get_property_int("zeppelinProtestors") < 80) { options.listAppend(HTMLGenerateSpanOfClass("Alternate: ", "r_bold") + "Zeppelin Protesters " + HTMLGenerateSpanFont("(double Sleaze damage!)", "purple")); if (($locations[A Mob of Zeppelin Protesters] contains __last_adventure_location)) { - task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake("Equip the candy cane sword cane", "", describeSupernag), -11)); + task_entries.listAppend(ChecklistEntryMake("__item candy cane sword cane", url, ChecklistSubentryMake(ccscEquipStatement, "", describeSupernag), -11)); } } if (options.count() > 0) { - description.listAppend("Ensure your CCSC is equipped for these useful NCs:" + options.listJoinComponents("
").HTMLGenerateIndentedText()); + description.listAppend("Ensure your CCSC is equipped for useful NCs:" + options.listJoinComponents("
").HTMLGenerateIndentedText()); + // Darkened from bright red to maroon as it will be irrelevant for many parts of the run. if (lookupItem("candy cane sword cane").equipped_amount() == 0) { - description.listAppend(HTMLGenerateSpanFont("(Equip the candy cane sword cane -- it's not equipped!)", "red")); + description.listAppend(HTMLGenerateSpanFont("Equip the Candy Cane Sword Cane!", "maroon")); } - optional_task_entries.listAppend(ChecklistEntryMake("__item Candy cane sword cane", url, ChecklistSubentryMake("Candy cane sword cane noncombats", description)).ChecklistEntrySetCombinationTag("CCSC tasks").ChecklistEntrySetIDTag("CCSC")); + optional_task_entries.listAppend(ChecklistEntryMake("__item Candy cane sword cane", url, ChecklistSubentryMake("Candy Cane Sword Cane NCs", description)).ChecklistEntrySetCombinationTag("CCSC tasks").ChecklistEntrySetIDTag("CCSC")); } } From 2a764e1a9a4be269975e9c812a92c712d6588e47 Mon Sep 17 00:00:00 2001 From: Aaron McGuire Date: Sat, 2 Mar 2024 11:23:03 -0500 Subject: [PATCH 09/10] add back in-run check for final main push --- .../Items of the Month/2023/Candy Cane Sword Cane.ash | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash index a6786d81..6f00c1c1 100644 --- a/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash +++ b/Source/relay/TourGuide/Items of the Month/2023/Candy Cane Sword Cane.ash @@ -18,8 +18,8 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis pathCheck = my_path().id == PATH_GREY_GOO ? false : true; pathCheck = my_path().id == PATH_AVATAR_OF_BORIS ? false : true; - // __misc_state["in run"] - if (pathCheck) + // Only show when in run, for obvious reasons. + if (__misc_state["in run"] && pathCheck) { string url = "inventory.php?ftext=candy+cane+sword+cane"; // This is the description for the supernag. The supernag is in the task_entries, buried within conditional ifs and only shows up if you're in the zone. @@ -97,6 +97,7 @@ void IOTMCandyCaneSwordGenerateTasks(ChecklistEntry [int] task_entries, Checklis optional_task_entries.listAppend(ChecklistEntryMake("__item Candy cane sword cane", url, ChecklistSubentryMake("Candy Cane Sword Cane NCs", description)).ChecklistEntrySetCombinationTag("CCSC tasks").ChecklistEntrySetIDTag("CCSC")); } - } + } + } From 180b54fc4c9e2118b63dce8a24abcc5c0f817ef9 Mon Sep 17 00:00:00 2001 From: Aaron McGuire Date: Sat, 2 Mar 2024 11:36:59 -0500 Subject: [PATCH 10/10] small spring shoes changes --- .../Items of the Month/2024/Spring Shoes.ash | 19 +++++++++++++++++-- Source/relay/TourGuide/Support/IOTMs.ash | 3 +++ Source/relay/TourGuide/Support/Statics.ash | 4 ++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Source/relay/TourGuide/Items of the Month/2024/Spring Shoes.ash b/Source/relay/TourGuide/Items of the Month/2024/Spring Shoes.ash index 8b739f80..0f8ab53a 100644 --- a/Source/relay/TourGuide/Items of the Month/2024/Spring Shoes.ash +++ b/Source/relay/TourGuide/Items of the Month/2024/Spring Shoes.ash @@ -4,13 +4,25 @@ RegisterResourceGenerationFunction("IOTMSpringShoesGenerateResource"); void IOTMSpringShoesGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries) { - if (__misc_state["in run"] && available_amount($item[spring shoes]) > 0 && my_path().id != PATH_COMMUNITY_SERVICE) + // Initialization. Do not generate if you don't have spring shoes. + if (!__iotms_usable[lookupItem("spring shoes")]) return; + + // Added a check for all paths where you do not want the tile at all: + // - Community Service: irrelevant + // - WereProfessor: is not a free run. + + boolean pathCheck = true; + pathCheck = my_path().id == PATH_COMMUNITY_SERVICE ? false : true; + pathCheck = my_path().id == PATH_WEREPROFESSOR ? false : true; + + // Technically, the available_amount here precludes the need for the initialization up top. + if (__misc_state["in run"] && available_amount($item[spring shoes]) > 0 && pathCheck) { if ($effect[everything looks green].have_effect() == 0) { string [int] description; string url = "inventory.php?ftext=spring+shoes"; - description.listAppend(HTMLGenerateSpanFont("Run away from your problems!", "green")); + description.listAppend(HTMLGenerateSpanFont("Free-run away from your problems with the Spring Away skill!", "green")); if (lookupItem("spring shoes").equipped_amount() == 0) { description.listAppend(HTMLGenerateSpanFont("Equip the spring shoes first.", "red")); @@ -22,6 +34,9 @@ void IOTMSpringShoesGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEn void IOTMSpringShoesGenerateResource(ChecklistEntry [int] resource_entries) { + // Initialization. Do not generate iof you don't have spring shoes. + if (!__iotms_usable[lookupItem("spring shoes")]) return; + string [int] banishDescription; banishDescription.listAppend("All day banish, doesn't end combat"); if (lookupItem("spring shoes").equipped_amount() == 0) diff --git a/Source/relay/TourGuide/Support/IOTMs.ash b/Source/relay/TourGuide/Support/IOTMs.ash index f1409968..ffb4b98f 100644 --- a/Source/relay/TourGuide/Support/IOTMs.ash +++ b/Source/relay/TourGuide/Support/IOTMs.ash @@ -148,6 +148,9 @@ void initialiseIOTMsUsable() if (lookupItem("candy cane sword cane").available_amount() > 0) //Dec 2023 __iotms_usable[lookupItem("candy cane sword cane")] = true; + + if (lookupItem("spring shoes").available_amount() > 0) //Feb 2023 + __iotms_usable[lookupItem("spring shoes")] = true; //Can't use many things in G-Lover if (my_path().id == PATH_G_LOVER) //Path 33 diff --git a/Source/relay/TourGuide/Support/Statics.ash b/Source/relay/TourGuide/Support/Statics.ash index 0e0d7798..19bef736 100644 --- a/Source/relay/TourGuide/Support/Statics.ash +++ b/Source/relay/TourGuide/Support/Statics.ash @@ -56,6 +56,10 @@ static { int PATH_JOURNEYMAN = 45; int PATH_FALL_OF_THE_DINOSAURS = 46; int PATH_AVATAR_OF_SHADOWS_OVER_LOATHING = 47; + int PATH_LEGACY_OF_LOATHING = 48; + int PATH_SMOL = 49; // easier to type + int PATH_A_SHRUNKEN_ADVENTURER_AM_I = 49; + int PATH_WEREPROFESSOR = 50; } float numeric_modifier_replacement(item it, string modifier_string) {