Skip to content

Commit

Permalink
Merge pull request #232 from loathers/august-update
Browse files Browse the repository at this point in the history
august updates; kiwi + tearaway + darts and more!
  • Loading branch information
docrostov authored Aug 20, 2024
2 parents 2639d29 + a154f3f commit 173ff7c
Show file tree
Hide file tree
Showing 30 changed files with 269 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ void IOTMHauntedDoghouseGenerateResource(ChecklistEntry [int] resource_entries)
return;
if ($item[tennis ball].available_amount() > 0 && in_ronin() && $item[tennis ball].item_is_usable())
{
resource_entries.listAppend(ChecklistEntryMake("__item tennis ball", "", ChecklistSubentryMake(pluralise($item[tennis ball]), "", "Free run/banish."), 6).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Haunted doghouse banish"));
resource_entries.listAppend(ChecklistEntryMake("__item tennis ball", "", ChecklistSubentryMake(pluralise($item[tennis ball]), "", "Free run/banish."), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Haunted doghouse banish"));
}
//I, um, hmm. I guess there's not much to say. Poor lonely file, nearly empty.
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,5 @@ void IOTMTimeSpinnerGenerateResource(ChecklistEntry [int] resource_entries)
}
//Play a time prank - 1 minute, heart

resource_entries.listAppend(ChecklistEntryMake("Hourglass", "inv_use.php?whichitem=9104&pwd=" + my_hash(), ChecklistSubentryMake(pluralise(minutes_left, "Time-Spinner minute", "Time-Spinner minutes"), "", description), 5).ChecklistEntrySetIDTag("Time-spinner resource"));
resource_entries.listAppend(ChecklistEntryMake("__item Time-Spinner", "inv_use.php?whichitem=9104&pwd=" + my_hash(), ChecklistSubentryMake(pluralise(minutes_left, "Time-Spinner minute", "Time-Spinner minutes"), "", description), 5).ChecklistEntrySetIDTag("Time-spinner resource"));
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ void IOTMKGBriefcaseGenerateResource(ChecklistEntry [int] resource_entries)
description.listAppend(HTMLGenerateSpanFont("Equip the briefcase first!", "red"));
entry.url = "inventory.php?ftext=kremlin";
}
resource_entries.listAppend(ChecklistEntryMake("__item Kremlin's Greatest Briefcase", entry.url, ChecklistSubentryMake(pluralise(3 - get_property_int("_kgbTranquilizerDartUses"), "briefcase dart", "briefcase darts"), "", description)).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Kremlin Briefcase tranq dart banish"));
resource_entries.listAppend(ChecklistEntryMake("__item Kremlin's Greatest Briefcase", entry.url, ChecklistSubentryMake(pluralise(3 - get_property_int("_kgbTranquilizerDartUses"), "briefcase dart", "briefcase darts"), "", description),0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Kremlin Briefcase tranq dart banish"));
}
int clicks_remaining = clampi(22 - get_property_int("_kgbClicksUsed"), 0, 22);
if (!mafiaIsPastRevision(18110))
Expand Down
2 changes: 1 addition & 1 deletion Source/relay/TourGuide/Items of the Month/2017/New You.ash
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void IOTMNewYouGenerateResource(ChecklistEntry [int] resource_entries)
}
else if (it == lookupItem("Daily Affirmation: Be a Mind Master"))
{
resource_entries.listAppend(ChecklistEntryMake("__item " + it, "", subentry).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("New you affirmation mind master banish"));
resource_entries.listAppend(ChecklistEntryMake("__item " + it, "", subentry, 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("New you affirmation mind master banish"));
}
else
entry.subentries.listAppend(subentry);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ void IOTMSpaceJellyfishGenerateResource(ChecklistEntry [int] resource_entries)
}

if ($item[hot jelly].available_amount() > 0 && in_ronin())
resource_entries.listAppend(ChecklistEntryMake("__item hot jelly", "", ChecklistSubentryMake(pluralise($item[hot jelly]), "", "Chew for free run/banish.")).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Space jellyfish hot jelly banish"));
resource_entries.listAppend(ChecklistEntryMake("__item hot jelly", "", ChecklistSubentryMake(pluralise($item[hot jelly]), "", "Chew for free run/banish."), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Space jellyfish hot jelly banish"));



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ void IOTMMaySaberGenerateResource(ChecklistEntry [int] resource_entries)
else
description.listAppend("Rollover runaway-like/banish");

resource_entries.listAppend(ChecklistEntryMake("__item Fourth of May Cosplay Saber", "inventory.php?which=2", ChecklistSubentryMake("(up to) " + uses_remaining.pluralise("force banish", "forces banishes"), "", description)).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Fourth may saber force banish"));
resource_entries.listAppend(ChecklistEntryMake("__item Fourth of May Cosplay Saber", "inventory.php?which=2", ChecklistSubentryMake("(up to) " + uses_remaining.pluralise("force banish", "forces banishes"), "", description), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Fourth may saber force banish"));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void IOTMEmotionChipGenerateResource(ChecklistEntry [int] resource_entries)
{
emotions.listAppend(emotionHatred + " Hatreds left. 50-turn banish.");

resource_entries.listAppend(ChecklistEntryMake("__skill feel hatred", "", ChecklistSubentryMake(pluralise(emotionHatred, "Feel Hatred", "Feels Hatreds"), "", "Free run, 50-turn banish.")).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Emotion chip feel hatred banish"));
resource_entries.listAppend(ChecklistEntryMake("__skill feel hatred", "", ChecklistSubentryMake(pluralise(emotionHatred, "Feel Hatred", "Feels Hatreds"), "", "Free run, 50-turn banish."), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Emotion chip feel hatred banish"));
}
int emotionLonely = clampi(3 - get_property_int("_feelLonelyUsed"), 0, 3);
if (emotionLonely > 0 && $skill[Feel Lonely].skill_is_usable())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ void IOTMFamiliarScrapbookGenerateResource(ChecklistEntry [int] resource_entries
description.listAppend(HTMLGenerateSpanFont("Equip the familiar scrapbook first", "red"));

string url = invSearch("familiar scrapbook");
resource_entries.listAppend(ChecklistEntryMake("__item familiar scrapbook", url, ChecklistSubentryMake(familiar_scraps / 100 + " scrapbook banishes available", "", description)).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Familiar scrapbook boring pictures banish"));
resource_entries.listAppend(ChecklistEntryMake("__item familiar scrapbook", url, ChecklistSubentryMake(familiar_scraps / 100 + " scrapbook banishes available", "", description), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Familiar scrapbook boring pictures banish"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,11 @@ void IOTMUndergroundFireworksShopGenerateTasks(ChecklistEntry [int] task_entries
RegisterResourceGenerationFunction("IOTMUndergroundFireworksShopGenerateResource");
void IOTMUndergroundFireworksShopGenerateResource(ChecklistEntry [int] resource_entries)
{
if (my_path().id == PATH_G_LOVER) return; // none of this stuff has G in it
if (my_path().id == PATH_G_LOVER) return; // none of this stuff has G in it!

// Adding a way to get this to yank out the tile if you're in standard.
if (!lookupItem("fedora-mounted fountain").is_unrestricted()) return;

if (!get_property_boolean("_fireworksShopEquipmentBought") && available_amount($item[Clan VIP Lounge key]) > 0 && get_property("_fireworksShop").to_boolean() && my_path() != $path[Legacy of Loathing])
{
string [int] description;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ RegisterTaskGenerationFunction("IOTMVampireVintnerGenerateTasks");
void IOTMVampireVintnerGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries)
{
if (!__misc_state["in run"] || !lookupFamiliar("vampire vintner").familiar_is_usable()) return;

// For some reason, Vintner leaked into subsequent standards. Unfortunately, the wine isn't standard, so...
if (!lookupItem("1950 vampire vintner wine").is_unrestricted()) return;

int vintnerFightsLeft = clampi(14 - get_property_int("vintnerCharge"), 0, 14);
int vintnerWineLevel = get_property_int("vintnerWineLevel");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ void IOTMCosmicBowlingBallGenerateResource(ChecklistEntry [int] resource_entries
description.listAppend("Hit a strike! Knock the competition down a pin with your hole-y ball.");
description.listAppend("Give yourself an item/meat buff, gain stats in a zone, or banish for the next " + HTMLGenerateSpanOfClass(bowlingCooldown2, "r_bold") + " combats.");

resource_entries.listAppend(ChecklistEntryMake("__item cosmic bowling ball", "", ChecklistSubentryMake("Cosmic bowling ball banish", "", "Has " + HTMLGenerateSpanOfClass(bowlingCooldown2, "r_bold") + " duration and cooldown.")).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Cosmic bowling ball banish"));
resource_entries.listAppend(ChecklistEntryMake("__item cosmic bowling ball", "", ChecklistSubentryMake("Bowl a Curveball with your Cosmic Bowling Ball", "", "Has " + HTMLGenerateSpanOfClass(bowlingCooldown2, "r_bold") + " duration and cooldown."), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Cosmic bowling ball banish"));
resource_entries.listAppend(ChecklistEntryMake("__item cosmic bowling ball", url, ChecklistSubentryMake("Cosmic bowling ball use available", "", description)).ChecklistEntrySetCombinationTag("special").ChecklistEntrySetIDTag("Cosmic bowling ball skills"));
}
if (bowlingCooldown > -1)
Expand Down
30 changes: 24 additions & 6 deletions Source/relay/TourGuide/Items of the Month/2023/Book of Facts.ash
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,24 @@ void IOTMBookofFactsGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEn

// If they have an eagle, remind them they can eagle-banish to make it easier to find the habitat guys
string eagleString = lookupFamiliar("Patriotic Eagle").familiar_is_usable() ? "; remember, you can phylum-banish with your Patriotic Eagle to make it easier!" : "." ;
phylum eaglePhylumBanished = $phylum[none];

if (get_property("banishedPhyla") != "")
eaglePhylumBanished = get_property("banishedPhyla").split_string(":")[1].to_phylum();

if (habitat_monster != $monster[none] && fights_left > 0)
{
description.listAppend("Neaaaar, faaaaaaar, wherever you spaaaaaaar, I believe that the heart does go onnnnn.");
description.listAppend("Appears as a wandering monster in any zone. Try a place with few competing monsters"+eagleString);

if (eaglePhylumBanished == habitat_monster.phylum) {
description.listAppend(HTMLGenerateSpanFont(`WARNING: {habitat_monster}'s phylum is banished!`, "red"));
}
if (habitat_monster.is_banished()) {
description.listAppend(HTMLGenerateSpanFont(`WARNING: {habitat_monster} is banished!`, "red"));
}
optional_task_entries.listAppend(ChecklistEntryMake("__monster " + habitat_monster, "", ChecklistSubentryMake("Fight " + pluralise(fights_left, "more non-native " + habitat_monster, "more non-native " + habitat_monster + "s"), "", description), -4));
}
Expand Down Expand Up @@ -63,12 +76,17 @@ void IOTMBookofFactsGenerateResource(ChecklistEntry [int] resource_entries)
BOFAdropsDescription.listAppend("" + BOFApocketwishes + " BOFA wishes available.");
}
// Not going to remove this because I think it's valid right now but once mt_rand is
// properly exposed it would be good to hide this if the user is in a seed where
// they can't really access tatters...
int BOFAtatters = clampi(11 - get_property_int("_bookOfFactsTatters"), 0, 11);
if (get_property_int("_bookOfFactsTatters") < 11) {
BOFAdropsDescription.listAppend("" + BOFAtatters + " BOFA tatters available.");
// NOTE: Altering as of 2024 ELG change, as tatters are 40 turns vs the 30 of spring shoes.
// There is a remote chance in some future standard context tatters will be the best option
// for a user with some odd IOTM configurations, which is why I didn't entirely extract
// this, but it at least shouldn't be present if they own the candles or the shoes.

if (!__iotms_usable[lookupItem("spring shoes")] && $item[roman candelabra].available_amount() == 0) {
int BOFAtatters = clampi(11 - get_property_int("_bookOfFactsTatters"), 0, 11);
if (get_property_int("_bookOfFactsTatters") < 11) {
BOFAdropsDescription.listAppend("" + BOFAtatters + " BOFA tatters available.");
}
}

resource_entries.listAppend(ChecklistEntryMake("__item book of facts", "", ChecklistSubentryMake(("Miscellaneous valuable BOFA drops"), "", BOFAdropsDescription), 8).ChecklistEntrySetIDTag("bofa tatters"));
}
Original file line number Diff line number Diff line change
Expand Up @@ -345,4 +345,17 @@ void IOTMCursedMonkeysPawGenerateResource(ChecklistEntry [int] resource_entries)
if (monkeyWishesLeft > 0) {
resource_entries.listAppend(ChecklistEntryMake(imageName, url, ChecklistSubentryMake(pluralise(monkeyWishesLeft, "monkey's paw wish", `monkey's paw wishes`), "", description)).ChecklistEntrySetIDTag("Monkey wishes"));
}

// Banish combination tag for the monkey slap, if you've got it.
if (monkeyWishesLeft == 5) {
string [int] description;
string url;
url = "main.php";
description.listAppend("Turn-taking repeat-use banish. Lasts until you use it again!");
if ($item[cursed monkey's paw].equipped_amount() == 0) {
description.listAppend("Equip your cursed monkey paw first.");
url = "inventory.php?ftext=cursed+monkey";
}
resource_entries.listAppend(ChecklistEntryMake("__skill monkey slap", "", ChecklistSubentryMake("Monkey Slap usable", "", description), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Cursed monkey paw banish"));
}
}
11 changes: 11 additions & 0 deletions Source/relay/TourGuide/Items of the Month/2023/Patriotic Eagle.ash
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,17 @@ void IOTMPatrioticEagleGenerateTasks(ChecklistEntry [int] task_entries, Checklis
if (fights_left > 0 && possible_appearance_locations.count() > 0)
optional_task_entries.listAppend(entry);
}

// Extra nag from TES re: setting your global pledge.
string [int] description2;

if (__misc_state["in run"] && ($effect[Citizen of a Zone].have_effect() == 0)) {
description2.listAppend("Haunted Kitchen: +100% init");
description2.listAppend("Haunted Library/Laundry: +30% item");
description2.listAppend("Batrat/Ninja Snowmen/Frat Battlefield: +50% meat");
task_entries.listAppend(ChecklistEntryMake("__familiar Patriotic Eagle", "familiar.php", ChecklistSubentryMake("Pledge to a zone!", description2), -5).ChecklistEntrySetIDTag("Patriotic Eagle familiar pledge reminder"));
}

}

RegisterResourceGenerationFunction("IOTMPatrioticEagleGenerateResource");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//Everfull Dart Holster via TES
RegisterTaskGenerationFunction("IOTMEverfullDartsGenerateTasks");
void IOTMEverfullDartsGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries)
{
if (!__iotms_usable[$item[everfull dart holster]]) return;

string [int] description;
string url = "inventory.php?ftext=everfull+dart_holster";

if ($effect[everything looks red].have_effect() == 0) {
int dartCooldown = 50;
if (get_property("everfullDartPerks").contains_text("You are less impressed by bullseyes")) {
dartCooldown -= 10;
}
if (get_property("everfullDartPerks").contains_text("Bullseyes do not impress you much")) {
dartCooldown -= 10;
}
description.listAppend(HTMLGenerateSpanFont(`Shoot a bullseye! ({dartCooldown} ELR)`, "red"));
if (lookupItem("everfull dart holster").equipped_amount() == 0) {
description.listAppend(HTMLGenerateSpanFont("Equip the dart holster first.", "red"));
}
else {
description.listAppend(HTMLGenerateSpanFont("Dart holster equipped", "blue"));
}
task_entries.listAppend(ChecklistEntryMake("__item everfull dart holster", url, ChecklistSubentryMake("Everfull Darts free kill available!", "", description), -11));
}
}

RegisterResourceGenerationFunction("IOTMEverfullDartsGenerateResource");
void IOTMEverfullDartsGenerateResource(ChecklistEntry [int] resource_entries)
{
if (!__iotms_usable[$item[everfull dart holster]] || !__misc_state["in run"]) return;

string [int] description;
string url = "inventory.php?ftext=everfull+dart_holster";

int dartSkill = get_property_int("dartsThrown");
if (dartSkill < 401) {
int dartsNeededForNextPerk = floor(sqrt(dartSkill) + 1) ** 2 - dartSkill;
description.listAppend(`Current dart skill: {dartSkill}`);
description.listAppend(`{HTMLGenerateSpanFont(dartsNeededForNextPerk, "blue")} darts needed for next Perk`);

if (lookupItem("everfull dart holster").equipped_amount() == 0) {
description.listAppend(HTMLGenerateSpanFont("Equip the dart holster first.", "red"));
}
else {
description.listAppend(HTMLGenerateSpanFont("Dart holster equipped", "blue"));
}
resource_entries.listAppend(ChecklistEntryMake("__item everfull dart holster", url, ChecklistSubentryMake("🍑🎯 Everfull Dart Holster charging", "", description), 11));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ void addToBothDescriptions(string [int] description1, string [int] description2,
RegisterResourceGenerationFunction("IOTMMayamCalendarGenerateResource");
void IOTMMayamCalendarGenerateResource(ChecklistEntry [int] resource_entries)
{
// Adding this prior to the check if the user has stinkbombs.
if ($item[stuffed yam stinkbomb].available_amount() > 0 )
{
resource_entries.listAppend(ChecklistEntryMake("__item stuffed yam stinkbomb", "", ChecklistSubentryMake(pluralise($item[stuffed yam stinkbomb]), "", "Free run/banish."), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("Haunted doghouse banish"));
}

if (available_amount($item[mayam calendar]) < 1)
return;

Expand Down
34 changes: 34 additions & 0 deletions Source/relay/TourGuide/Items of the Month/2024/Mini Kiwi.ash
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Mini-Kiwi
RegisterResourceGenerationFunction("IOTMMiniKiwiGenerateResource");
void IOTMMiniKiwiGenerateResource(ChecklistEntry [int] resource_entries)
{
if (!lookupFamiliar("Mini Kiwi").familiar_is_usable()) return;

// This familiar sucks. It's really bad. Still, fine to have a tile, I guess.
int miniKiwiCount = $item[mini kiwi].available_amount();
float kiwiWeight = effective_familiar_weight($familiar[Mini Kiwi]) + weight_adjustment();
float kiwiModifier = $item[aviator goggles].available_amount() > 0 ? 0.75 : 0.50;

// Calculating the chance of a kiwi per fight; weight * your modifier
int kiwiChance = to_int(min(kiwiWeight * kiwiModifier,100.0));
boolean kiwiSpiritsBought = get_property_boolean("_miniKiwiIntoxicatingSpiritsBought");
int miniKiwiBikiniCount = $item[mini kiwi bikini].available_amount();

// Tile setup stuff
string [int] description;
string url = "familiar.php"; // Could send to the kwiki mart, but don't care enough.
string header = pluralise(miniKiwiCount, "mini kiwi available", "mini kiwis available");

description.listAppend(`At {to_int(kiwiWeight)} weight, you have a {kiwiChance}% chance of a mini kiwi each fight.`);

if (!kiwiSpiritsBought) {
description.listAppend('|*Consider purchasing mini kiwi intoxicating spirits, for 3 kiwis.');
}

if (miniKiwiBikiniCount < 1 && get_property_int("zeppelinProtestors") < 80) {
description.listAppend('|*Consider purchasing mini kiwi bikinis, for the Zeppelin sleaze test.');
}

resource_entries.listAppend(ChecklistEntryMake("__familiar mini kiwi", url, ChecklistSubentryMake(header, "", description), 10));

}
Loading

0 comments on commit 173ff7c

Please sign in to comment.