Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,14 @@ void IOTMBloodCubicZirconiaGenerateTasks(ChecklistEntry [int] task_entries, Chec
else if (bczRefracts >= 13) {
description.listAppend(HTMLGenerateSpanFont("Next Refract costs " + refractCost + " mys. EXPENSIVE!", "red") + "");
}
if (lookupItem("monodent of the sea").equipped_amount() == 0)
{
description.listAppend(HTMLGenerateSpanFont("Seadent not equipped", "red"));
}
else if (lookupItem("monodent of the sea").equipped_amount() > 0)
{
description.listAppend(HTMLGenerateSpanFont("Seadent FLEESH ok!", "blue"));
}
if (bczBullets < 13) {
description.listAppend("Next Bullet costs " + HTMLGenerateSpanFont(bulletCost + "", "red") + " mox");
}
Expand Down Expand Up @@ -85,4 +93,14 @@ void IOTMBloodCubicZirconiaGenerateResource(ChecklistEntry [int] resource_entrie
description.listAppend("Next Pheromone costs " + HTMLGenerateSpanFont(pheromoneCost + "", "brown") + " mox");

resource_entries.listAppend(ChecklistEntryMake("__item blood cubic zirconia", url, ChecklistSubentryMake(HTMLGenerateSpanFont("BCZ: Blood Cubic Zirconia skills", "brown"), description), 11).ChecklistEntrySetIDTag("bcz important skills"));



int pheromoneBlasts = get_property_int("markYourTerritoryCharges");
if (pheromoneBlasts > 0)
{
string [int] description2;
description2.listAppend("Instakill no items/meat");
resource_entries.listAppend(ChecklistEntryMake("__skill mark your territory", "", ChecklistSubentryMake(pluralise(pheromoneBlasts, "BCZ pheromone", "BCZ pheromones"), "", description2), 0).ChecklistEntrySetCombinationTag("banish").ChecklistEntrySetIDTag("BCZ pheromone banish"));
}
}
22 changes: 22 additions & 0 deletions Source/relay/TourGuide/Items of the Month/2025/Shrunken Head.ash
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//shrunken head
RegisterTaskGenerationFunction("IOTMShrunkenHeadGenerateTasks");
void IOTMShrunkenHeadGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries)
{
if ($item[shrunken head].available_amount() == 0) return;
string url = "inventory.php?ftext=shrunken+head";
string [int] description;

if (lookupItem("shrunken head").equipped_amount() > 0)
{
description.listAppend("Targets:");
description.listAppend("Baa sheep 25%");
description.listAppend("Banshee librarian 10%");
description.listAppend("Mountain man 40%");
description.listAppend("Pygmy janitor 20%");
description.listAppend("Pygmy bowler 40%");
description.listAppend("Nook skeleton 20%");
description.listAppend("Smut orc 10%");
description.listAppend("Dairy goat 40%");
task_entries.listAppend(ChecklistEntryMake("__item shrunken head", url, ChecklistSubentryMake(HTMLGenerateSpanFont("Shrunken head equipped", "blue"), description), -11).ChecklistEntrySetIDTag("shrunken head"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void IOTMSkeletonOfCrimboPastGenerateTasks(ChecklistEntry [int] task_entries, Ch

int fightKnucklebones = get_property_int("_knuckleboneDrops");
int restKnucklebones = get_property_int("_knuckleboneRests");
int totalKnucklebonesLeft = clampi(100 - (fightKnucklebones + restKnucklebones), 0, 100);
int totalKnucklebonesLeft = clampi(100 - (fightKnucklebones), 0, 100);
description.listAppend(5 - restKnucklebones + " rest knucklebones available.");

if (totalKnucklebonesLeft == 0 && my_familiar() == lookupFamiliar("skeleton of crimbo past")) {
Expand All @@ -29,7 +29,7 @@ void IOTMSkeletonOfCrimboPastGenerateResource(ChecklistEntry [int] resource_entr

int fightKnucklebones = get_property_int("_knuckleboneDrops");
int restKnucklebones = get_property_int("_knuckleboneRests");
int totalKnucklebonesLeft = clampi(100 - (fightKnucklebones + restKnucklebones), 0, 100);
int totalKnucklebonesLeft = clampi(100 - (fightKnucklebones), 0, 100);

description.listAppend(5 - restKnucklebones + " rest knucklebones available.");

Expand All @@ -38,6 +38,13 @@ void IOTMSkeletonOfCrimboPastGenerateResource(ChecklistEntry [int] resource_entr
}
else if (totalKnucklebonesLeft > 0) {
title = (HTMLGenerateSpanFont(totalKnucklebonesLeft + " knucklebone drops left", "green"));
description.listAppend("90% - skeleton");
description.listAppend("70% - orc / pirate");
description.listAppend("50% - dude / elf / hobo");
description.listAppend("30% - beast / demon / goblin / humanoid / undead");
description.listAppend("20% - fish / penguin / weird");
description.listAppend("10% - construct / bug");
description.listAppend("0% - constellation / elemental / hippy / horror / mer-kin / plant / slime");
}
resource_entries.listAppend(ChecklistEntryMake("__familiar skeleton of crimbo past", url, ChecklistSubentryMake(title, description), 11));
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
//legendary seal-clubbing club
RegisterTaskGenerationFunction("IOTMLegendaryClubGenerateTasks");
void IOTMLegendaryClubGenerateTasks(ChecklistEntry [int] task_entries, ChecklistEntry [int] optional_task_entries, ChecklistEntry [int] future_task_entries)
{
if ($item[legendary seal-clubbing club].available_amount() == 0) return;
string url = "inventory.php?ftext=legendary+seal-clubbing+club";
string [int] description;
string title;

{ int nextWeekTurn = get_property_int("clubEmNextWeekMonsterTurn") + 8;
int nextWeekTimer = (nextWeekTurn - total_turns_played());

string image_name = get_property("clubEmNextWeekMonster");
string [int] description;
string [int] warnings;

// Adding a few warnings for the sake of it
boolean [string] holidayTracker = getHolidaysToday();

if (holidayTracker["El Dia de Los Muertos Borrachos"] == true || holidayTracker["Feast of Boris"] == true) {
warnings[1] = 'Be careful -- Borrachos & Feast of Boris wanderers can show up instead of your Legendary club wanderer!';
}

if (nextWeekTurn <= total_turns_played() && (image_name != ""))
{
description.listAppend(HTMLGenerateSpanFont("Wandering monster", "orange"));

// Only show warnings if it's right about to happen
foreach i, warning in warnings {
description.listAppend(HTMLGenerateSpanFont("|* ➾ "+warning, "red"));
}
task_entries.listAppend(ChecklistEntryMake("__monster " + image_name, "", ChecklistSubentryMake("Legendary club: " + get_property("clubEmNextWeekMonster") + HTMLGenerateSpanFont(" now", "red"), "", description), -11));
}
else if (nextWeekTurn -1 == total_turns_played() && (image_name != ""))
{
description.listAppend(HTMLGenerateSpanFont("Wandering monster", "orange"));
task_entries.listAppend(ChecklistEntryMake("__monster " + image_name, "", ChecklistSubentryMake("Legendary club: " + get_property("clubEmNextWeekMonster") + HTMLGenerateSpanFont(" in 1 more adv", "blue"), "", description), -11));
}
else if (image_name != "")
{
description.listAppend(nextWeekTimer + " advs until Next Week fight.");
optional_task_entries.listAppend(ChecklistEntryMake("__monster " + image_name, "", ChecklistSubentryMake("Legendary club: " + get_property("clubEmNextWeekMonster") + "", "", description), 10));
}
}

if (lookupItem("legendary seal-clubbing club").equipped_amount() > 0)
{
int clubBattlefieldsLeft = clampi(5 - get_property_int("_clubEmBattlefieldUsed"), 0, 5);
int clubNextWeeksLeft = clampi(5 - get_property_int("_clubEmNextWeekUsed"), 0, 5);
int clubBackwardsLeft = clampi(5 - get_property_int("_clubEmTimeUsed"), 0, 5);

if (clubBattlefieldsLeft == 0) {
description.listAppend(HTMLGenerateSpanFont("No Battlefield Clubs left.", "red"));
} else {
description.listAppend(clubBattlefieldsLeft + " Battlefield Clubs. Weird Saber Force.");
}
if (clubNextWeeksLeft == 0) {
description.listAppend(HTMLGenerateSpanFont("No Next Week Clubs left.", "red"));
} else {
description.listAppend(clubNextWeeksLeft + " Next Week Clubs. 7-turn Wanderer.");
}
if (clubBackwardsLeft == 0) {
description.listAppend(HTMLGenerateSpanFont("No Backwards Clubs left.", "red"));
} else {
description.listAppend(clubBackwardsLeft + " Backwards Clubs. Free kill NO ITEMS.");
}
task_entries.listAppend(ChecklistEntryMake("__item legendary seal-clubbing club", url, ChecklistSubentryMake(HTMLGenerateSpanFont("Legendary seal-clubbing club skills", "orange"), description), -11).ChecklistEntrySetIDTag("LSSC skills"));
}
}

RegisterResourceGenerationFunction("IOTMLegendaryClubGenerateResource");
void IOTMLegendaryClubGenerateResource(ChecklistEntry [int] resource_entries)
{
if ($item[legendary seal-clubbing club].available_amount() == 0) return;
string url = "inventory.php?ftext=legendary+seal-clubbing+club";
string [int] description;
string title;

int clubBattlefieldsLeft = clampi(5 - get_property_int("_clubEmBattlefieldUsed"), 0, 5);
int clubNextWeeksLeft = clampi(5 - get_property_int("_clubEmNextWeekUsed"), 0, 5);
int clubBackwardsLeft = clampi(5 - get_property_int("_clubEmTimeUsed"), 0, 5);

if (clubBattlefieldsLeft == 0) {
description.listAppend(HTMLGenerateSpanFont("No Battlefield Clubs left.", "red"));
} else {
description.listAppend(clubBattlefieldsLeft + " Battlefield Clubs. Weird Saber Force.");
}
if (clubNextWeeksLeft == 0) {
description.listAppend(HTMLGenerateSpanFont("No Next Week Clubs left.", "red"));
} else {
description.listAppend(clubNextWeeksLeft + " Next Week Clubs. 7-turn Wanderer.");
}
if (clubBackwardsLeft == 0) {
description.listAppend(HTMLGenerateSpanFont("No Backwards Clubs left.", "red"));
} else {
description.listAppend(clubBackwardsLeft + " Backwards Clubs. Free kill NO ITEMS.");
}

resource_entries.listAppend(ChecklistEntryMake("__item legendary seal-clubbing club", url, ChecklistSubentryMake(HTMLGenerateSpanFont("Legendary seal-clubbing club skills", "orange"), description), 1).ChecklistEntrySetIDTag("LSSC skills"));
}
Loading