Template:Disambiguation/doc: Difference between revisions
From Melvor Idle
(Updated to include Thieving NPCs) |
(Updated to omit headers with no results. Now also supports the template: {{EquipmentTableFromList}}) |
||
Line 7: | Line 7: | ||
This may result in some duplicates between Icons and Shop Purchases, such as Iron Sieve which is both an Item and Purchase. | This may result in some duplicates between Icons and Shop Purchases, such as Iron Sieve which is both an Item and Purchase. | ||
<syntaxhighlight lang="javascript" line> | <syntaxhighlight lang="javascript" line> | ||
let searchTerm = ' | // Settings // | ||
let searchTerm = 'Ancient'; // The proper capitalization of the Search Term | |||
let returnEquipmentTemplate = false; // returns a template for {{EquipmentTableFromList}} instead | |||
// End of Settings // | |||
let lcSearchTerm = searchTerm.toLowerCase(); | let lcSearchTerm = searchTerm.toLowerCase(); | ||
const search = (obj) => obj.name?.toLowerCase().includes(lcSearchTerm); | const search = (obj) => obj.name?.toLowerCase().includes(lcSearchTerm); | ||
const wikiIcon = (obj, icon, extras | const wikiIcon = (obj, icon, extras) => { | ||
let results = [`{{ | if (!returnEquipmentTemplate) | ||
game.items.equipment.filter(x => search(x)) | return `*${obj.namespace?.includes('TotH') ? '{{TotH}}' : obj.namespace?.includes('AoD') ? '{{AoD}}' : ''}{{${icon}|${obj.name}${extras}}}`; | ||
else | |||
game.items.filter(x => x.validSlots === undefined && !(x instanceof OpenableItem) && !(x instanceof BoneItem) && !(x instanceof FoodItem) && search(x)) | return obj.name; | ||
} | |||
game.items.openables.filter(x => search(x)) | const pushResults = (obj) => { | ||
if (obj.arr.length > 0 && !returnEquipmentTemplate && obj.header !== '') | |||
game.items.bones.filter(x => search(x)) | results.push(obj.header); | ||
obj.arr.forEach(item => results.push(wikiIcon(item, obj.iconType, obj.extras || ''))); | |||
game.items.food.filter(x => search(x)) | } | ||
let results = []; | |||
game. | if (returnEquipmentTemplate) results.push(`{{V|${gameVersion.substr(1)}}}\n\n{{EquipmentTableFromList`); | ||
game. | if (!returnEquipmentTemplate) results.push(`{{V|${gameVersion.substr(1)}}}{{Disam}}\n`, `'''${searchTerm}''' may refer to:`); | ||
game.slayerAreas. | pushResults({arr: game.items.equipment.filter(x => search(x)), header: '===Equipment===', iconType: 'ItemIcon'}); | ||
game.dungeons.filter(x => search(x)) | pushResults({arr: game.items.filter(x => x.validSlots === undefined && !(x instanceof OpenableItem) && !(x instanceof BoneItem) && !(x instanceof FoodItem) && search(x)), header: '===Items===', iconType: 'ItemIcon'}); | ||
pushResults({arr: game.items.openables.filter(x => search(x)), header: '===Openables===', iconType: 'ItemIcon'}); | |||
game.standardSpells. | pushResults({arr: game.items.bones.filter(x => search(x)), header: '===Bones===', iconType: 'ItemIcon'}); | ||
game.ancientSpells. | pushResults({arr: game.items.food.filter(x => search(x)), header: '===Food===', iconType: 'ItemIcon'}); | ||
game.archaicSpells. | pushResults({arr: game.items.food.filter(x => search(x)), header: '===Food===', iconType: 'ItemIcon'}); | ||
game.curseSpells. | pushResults({arr: game.monsters.filter(x => search(x)), header: '===Combat===', iconType: 'MonsterIcon'}); | ||
game.auroraSpells.filter(x => search(x)) | pushResults({arr: [...game.combatAreas.allObjects, ...game.combatAreas.allObjects, ...game.slayerAreas.allObjects, ...game.dungeons.allObjects].filter(x => search(x)), header: '', iconType: 'ZoneIcon'}); | ||
pushResults({arr: [...game.standardSpells.allObjects, ...game.ancientSpells.allObjects, ...game.archaicSpells.allObjects, ...game.curseSpells.allObjects, ...game.auroraSpells.allObjects].filter(x => search(x)), header: '===Spells===', iconType: 'SpellIcon'}); | |||
game.shop.purchases.filter(x => search(x)) | pushResults({arr: game.shop.purchases.filter(x => search(x)), header: '===Purchases===', iconType: 'UpgradeIcon'}); | ||
pushResults({arr: game.prayers.filter(x => search(x)), header: '===Prayers===', iconType: 'PrayerIcon'}); | |||
game.prayers.filter(x => search(x)) | pushResults({arr: [...game.township.buildings.allObjects, ...game.township.seasons.allObjects, ...game.township.biomes.allObjects, ...game.township.resources.allObjects].filter(x => search(x)), header: '===Township===', iconType: 'TownshipIcon'}); | ||
pushResults({arr: game.skills.filter(x => search(x)), header: '===Others===', iconType: 'Skill'}); | |||
game.township.buildings. | pushResults({arr: game.pets.filter(x => search(x)), header: '', iconType: 'PetIcon'}); | ||
game.township.seasons. | pushResults({arr: game.astrology.actions.filter(x => search(x)), header: '', iconType: 'ConstellationIcon'}); | ||
game.township.biomes. | pushResults({arr: game.agility.actions.filter(x => search(x)), header: '', iconType: 'AgilityIcon'}); | ||
game.township.resources.filter(x => search(x)) | pushResults({arr: game.skills.filter(x => search(x)), header: '', iconType: 'Icon', extras: '|type=thieving'}); | ||
game.skills.filter(x => search(x)) | |||
game.pets.filter(x => search(x)) | |||
game.astrology.actions.filter(x => search(x)) | |||
game.agility.actions.filter(x => search(x)) | |||
game. | |||
if (cloudManager.hasAoDEntitlementAndIsEnabled) | if (cloudManager.hasAoDEntitlementAndIsEnabled) | ||
game.cartography.worldMaps.getObjectByID('melvorAoD:Melvor').pointsOfInterest.filter(x => search(x)) | pushResults({arr: game.cartography.worldMaps.getObjectByID('melvorAoD:Melvor').pointsOfInterest.filter(x => search(x)), header: '', iconType: 'POIIcon'}); | ||
let outputString = ``; | let outputString = ``; | ||
results.forEach((str) => { outputString += `${str}\n` }); | results.forEach((str, i) => { outputString += (returnEquipmentTemplate ? i > 0 ? `|${str}` : `${str}` : `${str}\n`) }); | ||
console.log(outputString); | if (returnEquipmentTemplate) outputString += '}}'; | ||
copy(outputString);console.log(outputString); | |||
notifyPlayer(game.attack, `Copied results for ${searchTerm} to clipboard`, 'success', 0) | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 08:02, 30 May 2024
Template that is used on Disambiguation pages. These are pages that are created to differentiate between multiple other pages with the same or a similar name.
An example of this would be Siren
The below script will search all current Icon Templates in v1.2.2 (except for Synergies, Spellbooks and Currencies) for the given searchTerm
then output an array of the results in valid Icon Template format with expansion icons.
This may result in some duplicates between Icons and Shop Purchases, such as Iron Sieve which is both an Item and Purchase.
// Settings //
let searchTerm = 'Ancient'; // The proper capitalization of the Search Term
let returnEquipmentTemplate = false; // returns a template for {{EquipmentTableFromList}} instead
// End of Settings //
let lcSearchTerm = searchTerm.toLowerCase();
const search = (obj) => obj.name?.toLowerCase().includes(lcSearchTerm);
const wikiIcon = (obj, icon, extras) => {
if (!returnEquipmentTemplate)
return `*${obj.namespace?.includes('TotH') ? '{{TotH}}' : obj.namespace?.includes('AoD') ? '{{AoD}}' : ''}{{${icon}|${obj.name}${extras}}}`;
else
return obj.name;
}
const pushResults = (obj) => {
if (obj.arr.length > 0 && !returnEquipmentTemplate && obj.header !== '')
results.push(obj.header);
obj.arr.forEach(item => results.push(wikiIcon(item, obj.iconType, obj.extras || '')));
}
let results = [];
if (returnEquipmentTemplate) results.push(`{{V|${gameVersion.substr(1)}}}\n\n{{EquipmentTableFromList`);
if (!returnEquipmentTemplate) results.push(`{{V|${gameVersion.substr(1)}}}{{Disam}}\n`, `'''${searchTerm}''' may refer to:`);
pushResults({arr: game.items.equipment.filter(x => search(x)), header: '===Equipment===', iconType: 'ItemIcon'});
pushResults({arr: game.items.filter(x => x.validSlots === undefined && !(x instanceof OpenableItem) && !(x instanceof BoneItem) && !(x instanceof FoodItem) && search(x)), header: '===Items===', iconType: 'ItemIcon'});
pushResults({arr: game.items.openables.filter(x => search(x)), header: '===Openables===', iconType: 'ItemIcon'});
pushResults({arr: game.items.bones.filter(x => search(x)), header: '===Bones===', iconType: 'ItemIcon'});
pushResults({arr: game.items.food.filter(x => search(x)), header: '===Food===', iconType: 'ItemIcon'});
pushResults({arr: game.items.food.filter(x => search(x)), header: '===Food===', iconType: 'ItemIcon'});
pushResults({arr: game.monsters.filter(x => search(x)), header: '===Combat===', iconType: 'MonsterIcon'});
pushResults({arr: [...game.combatAreas.allObjects, ...game.combatAreas.allObjects, ...game.slayerAreas.allObjects, ...game.dungeons.allObjects].filter(x => search(x)), header: '', iconType: 'ZoneIcon'});
pushResults({arr: [...game.standardSpells.allObjects, ...game.ancientSpells.allObjects, ...game.archaicSpells.allObjects, ...game.curseSpells.allObjects, ...game.auroraSpells.allObjects].filter(x => search(x)), header: '===Spells===', iconType: 'SpellIcon'});
pushResults({arr: game.shop.purchases.filter(x => search(x)), header: '===Purchases===', iconType: 'UpgradeIcon'});
pushResults({arr: game.prayers.filter(x => search(x)), header: '===Prayers===', iconType: 'PrayerIcon'});
pushResults({arr: [...game.township.buildings.allObjects, ...game.township.seasons.allObjects, ...game.township.biomes.allObjects, ...game.township.resources.allObjects].filter(x => search(x)), header: '===Township===', iconType: 'TownshipIcon'});
pushResults({arr: game.skills.filter(x => search(x)), header: '===Others===', iconType: 'Skill'});
pushResults({arr: game.pets.filter(x => search(x)), header: '', iconType: 'PetIcon'});
pushResults({arr: game.astrology.actions.filter(x => search(x)), header: '', iconType: 'ConstellationIcon'});
pushResults({arr: game.agility.actions.filter(x => search(x)), header: '', iconType: 'AgilityIcon'});
pushResults({arr: game.skills.filter(x => search(x)), header: '', iconType: 'Icon', extras: '|type=thieving'});
if (cloudManager.hasAoDEntitlementAndIsEnabled)
pushResults({arr: game.cartography.worldMaps.getObjectByID('melvorAoD:Melvor').pointsOfInterest.filter(x => search(x)), header: '', iconType: 'POIIcon'});
let outputString = ``;
results.forEach((str, i) => { outputString += (returnEquipmentTemplate ? i > 0 ? `|${str}` : `${str}` : `${str}\n`) });
if (returnEquipmentTemplate) outputString += '}}';
copy(outputString);console.log(outputString);
notifyPlayer(game.attack, `Copied results for ${searchTerm} to clipboard`, 'success', 0)