// ==UserScript== // @name TW Quests+ // @namespace Johnny // @author Johnny // @version 1.1 // @description Detailed list of quest lines for The West Classic // @match https://classic.the-west.net/game.php* // @grant none // @downloadURL none // ==/UserScript== window.QuestsPlus = { quests: [{ group: 'Introduction', lvl: 1, quests: [{ employer: 'barkeeper', title: 'Introduction', req: {txt: ['None']}, rew: {txt: ['1 XP']}, },{ employer: 'barkeeper', title: 'Clothing', req: {item: [['Gray rags', 'body/mini/tatter_grey', 1]]}, rew: {item: [['Whiskey', 'yield/whiskey', 1]]} },{ employer: 'sheriff', title: 'Bottle exchange', req: {item: [['Whiskey', 'yield/whiskey', 1]]}, rew: {item: [['Empty bottle', 'yield/empty_bottle', 1]], txt: ['$5']}, },{ employer: 'barkeeper', title: 'Pick tobacco leaves', req: {item: [['Tobacco', 'yield/tabacco', 1]]}, rew: {txt: ['+3 skill points', '$10']}, },{ employer: 'barkeeper', title: 'Raise Vigor', req: {img: ['img.php?type=skill_box&subtype=punch:normal:normal&value=2']}, rew: {txt: ['3 XP']}, },{ employer: 'barkeeper', title: 'Fresh sugar', req: {item: [['Sugar', 'yield/sugar', 1]]}, rew: {txt: ['$5']}, },{ employer: 'barkeeper', title: 'Experience', req: {item: [['Cotton', 'yield/cotton', 1]]}, rew: {txt: ['$8']}, },{ employer: 'barkeeper', title: 'Advancing levels', req: {txt: ['Level 2']}, rew: {txt: ['$15']}, },{ employer: 'barkeeper', title: 'Wages', req: {txt: ['$40']}, rew: {item: [['Gray cap', 'head/slouch_cap_grey', 1]]}, },{ employer: 'barkeeper', title: 'The bouncer', req: {txt: ['Beat The double-faced Jules (duel)']}, rew: {txt: ['$60']}, }] },{ group: 'Manhunt', lvl: 2, quests: [{ employer: 'sheriff', title: 'The search', req: {item: [['Poster', 'yield/poster', 2]]}, rew: {item: [['Broken clay jug', 'right_arm/mini/clayjug', 1]]}, },{ employer: 'sheriff', title: 'The petty henchman', req: {txt: ['Beat Sidekick (duel)']}, rew: {txt: ['30 XP']}, },{ employer: 'sheriff', title: 'The search (Part 2)', req: {item: [['Newspaper *The Western Star*', 'yield/newspaper', 3]]}, rew: {txt: ['35 XP']}, },{ employer: 'sheriff', title: 'The mean henchman', req: {txt: ['Beat Henchman (duel)']}, rew: {item: [['Handcuffs', 'yield/nippers', 1]]}, }] },{ group: 'Erik\'s Flight', lvl: 3, quests: [{ employer: 'lady', title: 'Rascality', req: {item: [['Ham', 'yield/ham', 1]]}, rew: {txt: ['20 XP']}, },{ employer: 'lady', title: 'Cotton', req: {item: [['Cotton', 'yield/cotton', 2]]}, rew: {txt: ['25 XP']}, },{ employer: 'lady', title: 'Field work', req: {item: [['Grain', 'yield/cereals', 2]]}, rew: {txt: ['30 XP']}, },{ employer: 'lady', title: 'Erik', req: {item: [['Poster', 'yield/poster', 3]]}, rew: {txt: ['20 XP'], item: [['Red Poncho', 'body/mini/poncho_red', 1]]}, }] },{ group: 'Fire heart', lvl: 5, quests: [{ employer: 'indian', title: 'Tobacco', req: {item: [['Tobacco', 'yield/tabacco', 4]]}, rew: {txt: ['10 XP']}, },{ employer: 'indian', title: 'Raven feather', req: {item: [['Raven feather', 'yield/feather', 1]]}, rew: {txt: ['15 XP']}, },{ employer: 'indian', title: 'Beans', req: {item: [['Beans', 'yield/beans', 3]]}, rew: {txt: ['20 XP']}, },{ employer: 'indian', title: 'Sugar', req: {item: [['Sugar', 'yield/sugar', 5]]}, rew: {txt: ['25 XP']}, },{ employer: 'indian', title: 'Turkey', req: {item: [['Turkey', 'yield/turkey', 1]]}, rew: {txt: ['30 XP']}, },{ employer: 'indian', title: 'The last ingredient', req: {txt: ['One of your hairs']}, rew: {txt: ['+4 Skill points towards health']}, },{ employer: 'indian', title: 'Just a dream?', req: {item: [['Berries', 'yield/berrys', 5]]}, rew: {txt: ['4 days premium More Energy', '40 XP']}, }] },{ group: 'The cattle herd', lvl: 8, quests: [{ employer: 'sheriff', title: 'Repair fences', req: {item: [['Hammer', 'yield/hammer', 1]]}, rew: {txt: ['1 skill point towards Repairing']}, },{ employer: 'sheriff', title: 'The donkey', req: {item: [['Donkey', 'animal/donkey', 1]]}, rew: {txt: ['60 XP']}, },{ employer: 'sheriff', title: 'Corn for the donkey', req: {item: [['Corn', 'yield/corn', 3]]}, rew: {txt: ['20 XP']}, },{ employer: 'sheriff', title: 'The herd', req: {item: [['T-Bone-Steak', 'yield/beef', 2]]}, rew: {txt: ['90 XP']}, },{ employer: 'sheriff', title: 'Branding', req: {item: [['Horn of a cow', 'yield/horn', 1]]}, rew: {txt: ['$75']}, },{ employer: 'sheriff', title: 'barbed wire', req: {item: [['barbed wire', 'yield/fence', 2]]}, rew: {item: [['Brown cotton shoes', 'foot/light_brown', 1]]}, }], },{ group: 'Henry\'s Birthday', lvl: 11, quests: [{ employer: 'lady', title: 'Back pain', req: {item: [['Wool', 'yield/shearings', 3]]}, rew: {txt: ['$50']}, },{ employer: 'indian', title: 'Moccasins', req: {item: [['Leather', 'yield/leather', 2]]}, rew: {txt: ['$50']}, },{ employer: 'sheriff', title: 'Union flag', req: {item: [['Union flag', 'yield/flag_north', 1]]}, rew: {txt: ['180 XP']}, },{ employer: 'barkeeper', title: 'Another gift', req: {txt: ['None']}, rew: {item: [['Gray bowler hat', 'head/bowler_grey', 1]]}, }], },{ group: 'Waupee\'s Grandfather', lvl: 14, quests: [{ employer: 'indian', title: 'Green smoke', req: {img: ['img.php?type=skill_box&subtype=tough:normal:normal&value=9']}, rew: {txt: ['45 XP']}, },{ employer: 'indian', title: 'The golden hawk', req: {item: [['Leather', 'yield/leather', 3], ['Trout', 'yield/trout', 3]]}, rew: {txt: ['60 XP']}, },{ employer: 'indian', title: 'The Thievery', req: {item: [['Golden Falk', 'yield/falcon', 1]]}, rew: {txt: ['70 XP', 'Able to reuse skills and attributes']}, },{ employer: 'barkeeper', title: 'Re-Thievery', req: {txt: ['Beat Thief (duel)']}, rew: {txt: ['50 XP', '$30']}, },{ employer: 'lady', title: 'Re-Thievery', req: {item: [['Blue bandana', 'neck/band_blue', 1]], txt: ['$170']}, rew: {item: [['Golden Falk', 'yield/falcon', 1]]}, }], },{ group: 'Duel tactics', lvl: 15, quests: [{ employer: 'sheriff', title: 'Paddy the bulldog', req: {txt: ['Beat Paddy (duel)']}, rew: {txt: ['50 XP']}, },{ employer: 'sheriff', title: 'Matthew the Snake', req: {txt: ['Beat Matthew (duel)']}, rew: {txt: ['4 days Dueling Premium', '30 XP']}, }], },{ group: 'Unforgiven', lvl: 15, quests: [{ employer: 'barkeeper', title: 'The rowdy', req: {item: [['Fool\'s gold', 'yield/copper_pyrites', 1]]}, rew: {txt: ['50 XP']}, },{ employer: 'barkeeper', title: 'The right outfit', req: {item: [['Black headband', 'head/band_black', 1]]}, rew: {txt: ['40 XP']}, },{ employer: 'barkeeper', title: 'Gathering in the forest', req: {item: [['Wood', 'yield/planks', 1]]}, rew: {txt: ['30 XP']}, },{ employer: 'barkeeper', title: '3 henchmen', req: {txt: ['Beat Henchman (duel)']}, rew: {txt: ['60 XP']}, },{ employer: 'lady', title: '3 henchmen', req: {item: [['Berries', 'yield/berrys', 3]], txt: ['$200']}, rew: {txt: ['50 XP']}, },{ employer: 'barkeeper', title: 'Gathering in the forest', req: {item: [['Wood', 'yield/planks', 8]]}, rew: {txt: ['25 XP']}, },{ employer: 'barkeeper', title: 'Unforgiven', req: {txt: ['Beat Unforgiven (duel)']}, rew: {item: [['Green shirt', 'body/mini/shirt_green', 1]]} }], },{ group: 'Optimization of profits ', lvl: 18, quests: [{ employer: 'lady', title: 'Starvation wages', req: {item: [['Newspaper *The Western Star*', 'yield/newspaper', 1]]}, rew: {txt: ['20 XP', '3 days premium Higher income']}, },{ employer: 'lady', title: 'Easy money', req: {item: [['Newspaper *The Western Star*', 'yield/newspaper', 3]]}, rew: {txt: ['60 XP']}, }] },{ group: 'Well organized', lvl: 18, quests: [{ employer: 'barkeeper', title: 'Juicy steaks', req: {item: [['T-Bone-Steak', 'yield/beef', 5]]}, rew: {txt: ['50 XP', '7 days premium Automation']}, },{ employer: 'barkeeper', title: 'Trimmings', req: {item: [['Grain', 'yield/cereals', 3], ['Beans', 'yield/beans', 3], ['Corn', 'yield/corn', 3], ['Glass of water', 'yield/water', 3]]}, rew: {txt: ['200 XP']}, }], },{ group: 'Gemstones', lvl: 20, quests: [{ employer: 'lady', title: 'Precious rocks on chains', req: {item: [['Blue Indian necklace', 'neck/indian_chain_blue', 1], ['Green Indian necklace', 'neck/indian_chain_green', 1]]}, rew: {txt: ['20 XP']}, },{ employer: 'lady', title: 'Precious rocks from the water', req: {item: [['Gemstones', 'yield/gems', 2]]}, rew: {txt: ['25 XP']}, },{ employer: 'lady', title: 'Precious rocks from the ground', req: {txt: ['Beat Cemetery watchman (duel)']}, rew: {txt: ['30 XP']}, },{ employer: 'lady', title: 'Precious rocks from the grave', req: {item: [['Spade', 'yield/spade', 1]]}, rew: {item: [['Metal cross', 'neck/cross_bronze', 1]], txt: ['35 XP']}, }], },{ group: 'Bob', lvl: 23, quests: [{ employer: 'barkeeper', title: 'Hard work', req: {item: [['Glass of water', 'yield/water', 1]]}, rew: {txt: ['$50']}, },{ employer: 'barkeeper', title: 'Wood supply', req: {item: [['Wood', 'yield/planks', 10]]}, rew: {txt: ['$350']}, },{ employer: 'barkeeper', title: 'Disassembly', req: {txt: ['Beat Indian (duel)']}, rew: {txt: ['60 XP']}, },{ employer: 'barkeeper', title: 'Granite mining', req: {item: [['Granite blocks', 'yield/stone', 5]]}, rew: {txt: ['$300']}, },{ employer: 'barkeeper', title: 'Bridge construction', req: {item: [['Sledge hammer', 'yield/sledgehammer', 1]]}, rew: {txt: ['60 XP']}, },{ employer: 'barkeeper', title: 'The railroad station', req: {item: [['Train ticket', 'yield/ticket', 1]]}, rew: {item: [['Gray work shoes', 'foot/working_grey', 1]]}, }], },{ group: 'The decision', lvl: 25, quests: [{ employer: 'sheriff', title: 'Breaking in horses', req: {item: [['Horseshoe', 'yield/horseshoe', 4]]}, rew: {txt: ['60 XP']}, },{ employer: 'sheriff', title: 'Break a leg!', req: {item: [['Coal', 'yield/coal', 5]]}, rew: {txt: ['80 XP']}, },{ employer: 'sheriff', title: 'fat loot', req: {item: [['Beaver skin', 'yield/beaver', 5]]}, rew: {txt: ['$500']}, },{ employer: 'indian', title: 'Sabotage', req: {item: [['Beaver trap', 'yield/trap', 5]]}, rew: {txt: ['100 XP'], item: [['Calumet', 'yield/pipe', 1]]}, }], },{ group: 'Clothes make the man', lvl: 27, quests: [{ employer: 'lady', title: 'Roll of cloth', req: {item: [['Roll of cloth', 'yield/fabric', 1]]}, rew: {txt: ['$22']}, },{ employer: 'lady', title: 'Buttons', req: {item: [['Horn of a cow', 'yield/horn', 1]]}, rew: {txt: ['$78']}, },{ employer: 'lady', title: 'Brooch', req: {item: [['Roll with wire', 'yield/string', 1]]}, rew: {txt: ['2 skill points towards Fine motor skills']}, },{ employer: 'lady', title: 'Stage fright', req: {item: [['Glass of water', 'yield/water', 1]]}, rew: {txt: ['40 XP']}, },{ employer: 'barkeeper', title: 'Beer', req: {txt: ['$20']}, rew: {item: [['Beer', 'yield/beer', 1], ['Beer', 'yield/beer', 1]]}, },{ employer: 'lady', title: 'Good deal', req: {item: [['Beer', 'yield/beer', 2]]}, rew: {item: [['Yellow checkered shirt', 'body/mini/plaid_shirt_yellow', 1]]}, }], },{ group: 'Wild horses', lvl: 30, quests: [{ employer: 'sheriff', title: 'John is hungry', req: {item: [['Warm meal', 'yield/meal', 2]]}, rew: {txt: ['$20']}, },{ employer: 'sheriff', title: 'A lot of wood', req: {item: [['Wood', 'yield/planks', 24]]}, rew: {txt: ['$300']}, },{ employer: 'sheriff', title: 'Catching horses', req: {item: [['Lasso', 'yield/rope', 5]]}, rew: {txt: ['140 XP', '$150']}, },{ employer: 'sheriff', title: 'Horse thief', req: {txt: ['Beat Horse Thief (duel)']}, rew: {item: [['Mustang', 'animal/mustang', 1]]}, }], },{ group: 'The hunt', lvl: 33, quests: [{ employer: 'indian', title: 'Turkey hunt', req: {item: [['Turkey', 'yield/turkey', 2]]}, rew: {txt: ['60 XP']}, },{ employer: 'indian', title: 'Catching salmon', req: {item: [['Salmon', 'yield/grund', 3]]}, rew: {txt: ['60 XP']}, },{ employer: 'indian', title: 'Coyote hunt', req: {item: [['Coyote tooth', 'yield/coyote', 1]]}, rew: {txt: ['60 XP']}, },{ employer: 'indian', title: 'Buffalo hunt', req: {item: [['Buffalo skin', 'yield/buffalo', 1]]}, rew: {txt: ['120 XP'], item: [['Gold Indian necklace', 'neck/indian_chain_fine', 1]]}, }], },{ group: 'The Dalton clan', lvl: 36, quests: [{ employer: 'sheriff', title: 'Tool box', req: {item: [['Tool box', 'yield/toolbox', 1]]}, rew: {txt: ['80 XP']}, },{ employer: 'sheriff', title: 'Dynamite', req: {item: [['Dynamite', 'yield/dynamite', 2]]}, rew: {txt: ['120 XP']}, },{ employer: 'sheriff', title: 'Ambush at the bridge', req: {item: [['Train ticket', 'yield/ticket', 1]]}, rew: {txt: ['150 XP']}, },{ employer: 'sheriff', title: 'Lots of coffins', req: {item: [['Planer', 'yield/slicer', 2]]}, rew: {txt: ['$500']}, }], },{ group: 'Three Rivers', lvl: 39, quests: [{ employer: 'indian', title: 'poacher', req: {txt: ['Beat poacher (duel)']}, rew: {txt: ['70 XP']}, },{ employer: 'indian', title: 'Beaver traps', req: {item: [['Beaver trap', 'yield/trap', 2]]}, rew: {txt: ['90 XP']}, },{ employer: 'indian', title: 'Gold search', req: {item: [['Map', 'yield/map', 1]]}, rew: {txt: ['110 XP']}, },{ employer: 'indian', title: 'Gold Mining', req: {item: [['Fool\'s gold', 'yield/copper_pyrites', 15]]}, rew: {txt: ['150 XP']}, },{ employer: 'indian', title: 'Decision 1: Gold trade', req: {item: [['Roll of cloth', 'yield/fabric', 3]]}, rew: {txt: ['$800']}, },{ employer: 'lady', title: 'Decision 2: Offer', req: {txt: ['None']}, rew: {txt: ['$1400']}, },{ employer: 'lady', title: 'Decision 2: Commercialization', req: {item: [['Flag', 'yield/flag', 5]]}, rew: {txt: ['$700']}, }], },{ group: 'Henry Walker\'s Special', lvl: 42, quests: [{ employer: 'barkeeper', title: 'Flavor diversity', req: {item: [['Berries', 'yield/berrys', 5], ['Glass of water', 'yield/water', 4], ['Sugar', 'yield/sugar', 3]]}, rew: {txt: ['200 XP']}, },{ employer: 'barkeeper', title: 'The salt in the soup', req: {item: [['Cigars', 'yield/cigar', 1]]}, rew: {txt: ['100 XP']}, },{ employer: 'barkeeper', title: 'Filtering booze', req: {item: [['Coal', 'yield/coal', 1]]}, rew: {txt: ['+3 skill points towards Toughness', '$200']}, }], },{ group: 'Transporting prisoners', lvl: 45, quests: [{ employer: 'sheriff', title: 'Handcuffs', req: {item: [['Handcuffs', 'yield/nippers', 1]]}, rew: {txt: ['50 XP']}, },{ employer: 'sheriff', title: 'Coachman with strange habits', req: {item: [['Brown cotton shoes', 'foot/light_brown', 1]]}, rew: {txt: ['$200']}, },{ employer: 'sheriff', title: 'Speech is silver', req: {item: [['Silver', 'yield/silver', 3]]}, rew: {txt: ['150 XP']}, },{ employer: 'lady', title: 'Decision 1: Eavesdropping', req: {item: [['Roll with wire', 'yield/string', 5]]}, rew: {txt: ['$500']}, },{ employer: 'lady', title: 'Decision 1: Blackmail', req: {txt: ['$1000']}, rew: {txt: ['$3000']}, },{ employer: 'sheriff', title: 'Decision 2: Rescue mission', req: {txt: ['Beat Prison guard (duel)']}, rew: {txt: ['500 XP']}, }], },{ group: 'Kate\'s wedding band', lvl: 46, quests: [{ employer: 'sheriff', title: 'The unknown thief.', req: {item: [['Kate\'s ring', 'yield/kates_ring', 1]]}, rew: {txt: ['800 XP']}, },{ employer: 'sheriff', title: 'The thief', req: {txt: ['Beat Thief (duel)']}, rew: {txt: ['$1200', '600 XP']}, },{ employer: 'sheriff', title: 'Silver mining', req: {item: [['Silver', 'yield/silver', 5]]}, rew: {txt: ['300 XP']}, },{ employer: 'sheriff', title: 'The dealer', req: {txt: ['Beat Dealer (duel)']}, rew: {item: [['Kate\'s ring', 'yield/kates_ring', 1]], txt: ['$1500']}, }] },{ group: 'John moves out', lvl: 49, quests: [{ employer: 'sheriff', title: 'Hotel Mama', req: {item: [['Granite blocks', 'yield/stone', 4]]}, rew: {txt: ['200 XP'], item: [['Corn', 'yield/corn', 1]]}, },{ employer: 'sheriff', title: 'There is much to do', req: {item: [['Saw', 'yield/saw', 1]]}, rew: {txt: ['100 XP'], item: [['Corn', 'yield/corn', 1]]}, },{ employer: 'sheriff', title: 'Online', req: {item: [['Roll with wire', 'yield/string', 1]]}, rew: {txt: ['150 XP'], item: [['Berries', 'yield/berrys', 1]]}, },{ employer: 'sheriff', title: 'The way to a man\'s heart is through his stomach.', req: {item: [['Jug', 'yield/pitcher', 1]]}, rew: {txt: ['100 XP'], item: [['Warm meal', 'yield/meal', 1], ['Turkey', 'yield/turkey', 1]]}, },{ employer: 'sheriff', title: 'Progress', req: {item: [['Tool box', 'yield/toolbox', 1]]}, rew: {item: [['Machete', 'right_arm/mini/machete', 1], ['Pepperbox revolver', 'right_arm/mini/pepperbox', 1]]}, },{ employer: 'sheriff', title: 'A note', req: {txt: ['Beat Burglar (duel)']}, rew: {item: [['Piece of a note (Part 2)', 'yield/paper2', 1]]}, }] }], windowName: 'QuestsPlus', init: function() { QuestsPlus.addCss(); QuestsPlus.addMenuButton(); }, addCss: function() { let css = '\ #menu_quests_plus a { background: url("data:image/png;base64,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"); cursor: pointer; } \ #window_' + QuestsPlus.windowName + '_content { overflow-y: auto; } \ #window_' + QuestsPlus.windowName + '_content .questlog_header { cursor: pointer; position: relative; width: 669px; line-height: 21px; padding: 4px 6px; } \ #window_' + QuestsPlus.windowName + '_content .questlog_header span { font-weight: normal; padding-left: 10px; } \ #window_' + QuestsPlus.windowName + '_content .questlog_header img { position: absolute; top: 2px; right: 3px; padding: 0; } \ #window_' + QuestsPlus.windowName + '_content table { display: none; border-spacing: 0; border-collapse: collapse; width: 683px; border-right: 1px solid #666; } \ #window_' + QuestsPlus.windowName + '_content td, #window_' + QuestsPlus.windowName + '_content th { padding: 4px 6px; background-image: url(../images/border/table/bright.png); border-bottom: 1px solid #666; border-left: 1px solid #666; line-height: 20px; vertical-align: middle; text-align: center; } \ #window_' + QuestsPlus.windowName + '_content td:nth-of-type(2) { text-align: left; } \ #window_' + QuestsPlus.windowName + '_content th { background-image: url(../images/border/table/dark.png); } \ #window_' + QuestsPlus.windowName + '_content .bag_item { display: inline-block; margin: 0 auto; float: none; width: 47px; height: 47px; background-size: cover; position: relative; } \ #window_' + QuestsPlus.windowName + '_content .bag_item img { width: 47px; height: 47px; } \ #window_' + QuestsPlus.windowName + '_content .bag_item .count { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAATCAMAAAC0hZ1zAAAAwFBMVEUAAACvr69wcHBeXl6Li4tSUlJmZmZfX1+Dg4N7e3t1dXViYmI5OTlJSUlCQkKHh4d9fX0nJydUVFSOjo59fX18fHxGRkY2NjaOjo5wcHBnZ2dVVVWysrKTk5Nqampvb29tbW06OjpnZ2dzc3M2NjY9PT16enp3d3eEhIR9fX0vLy9cXFxxcXFlZWUzMzMyMjJRUVFNTU1GRkYZGRmBgYFVVVUrKysnJycjIyNiYmJYWFhJSUlCQkIfHx+enp6Ojo5EkFSAAAAAHnRSTlMABgbRz87Ny25uG/n49PTz8/PQx8fHx8dubm5tGxtpsIjwAAABPUlEQVQoz1WRh27DMAxEmWane29RlqzYimzHMzvt//9VTzaKpk8UAfLAowARUe/l/nrH9TxirbWdR5G19ubx7YzA5yDOTRjghFmIjBsE+1SOZ5gbbDfVegkWHuRsuYRe5MMzmurNsUyVUAghWCIj0rzIy3d6KKsySrCNOZHQpGRWMmHnyifS4UowC4ERSIK7QEflF6SyAJXwph0SJWrJLvNi24GbBCzbKbhrt/Cib7TOoDVJJYy1W5EKA8EKnuh3OvoC6MaLhv/AKICsdeIOrdi+BtEBGyyReutIGdPu+Qcs2DZrOi8Ozove89cUpZrX5pbGTbETSbewA76s42+xeaZJ3qQczUHkX5HoCIWNv+JF9Uq9/r5IbRzXEHFqCwWkq6qPH/0YhVkATHDCujrezQj0JqNLA040czWcYu4HGJBFQzh8ViwAAAAASUVORK5CYII="); width: 28px; height: 19px; position: absolute; bottom: -5px; left: -6px; color: #fff; font-weight: bold; } \ '; let style = document.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css; document.getElementsByTagName('head')[0].appendChild(style); }, addMenuButton: function() { let button = document.createElement('li'); button.id = 'menu_quests_plus'; let buttonLink = document.createElement('a'); buttonLink.onclick = QuestsPlus.openWindow; buttonLink.innerHTML = 'Quests+'; button.appendChild(buttonLink); let saloonMenu = document.getElementById('menu_saloon'); saloonMenu.parentNode.insertBefore(button, saloonMenu.nextSibling); }, openWindow: function() { if (!AjaxWindow.windows[QuestsPlus.windowName]) { let win = new Element('div', { 'id': 'window_' + QuestsPlus.windowName, 'class': 'window' }); AjaxWindow.windows[QuestsPlus.windowName] = win; let html = '\
\

Quests+

\ \
\
\ '; win.setHTML(html); win.bringToTop(); win.injectInside('windows'); win.centerLeft(); let win_title = $('window_' + QuestsPlus.windowName + '_title'); win_title.addEvent('dblclick', function () { win.centerLeft(); win.setStyle('top', 133); }); win.makeDraggable({ handle: win_title, onStart: function () { }, onComplete: function () { }.bind(AjaxWindow) }); win.addEvent('mousedown', win.bringToTop.bind(win, [])); win_title.addEvent('mousedown', win.bringToTop.bind(win, [])); let win_content = $('window_' + QuestsPlus.windowName + '_content'); QuestsPlus.clear(win_content); win_content.appendChild(QuestsPlus.getQuests()); } else { AjaxWindow.maximize(QuestsPlus.windowName); AjaxWindow.windows[QuestsPlus.windowName].bringToTop(); } }, getQuests: function() { let div = document.createElement('div'); for (let group of QuestsPlus.quests) { let wrap = document.createElement('div'); wrap.className = 'wrap'; let header = document.createElement('div'); header.className = 'questlog_header'; header.innerHTML = group.group + ' - Level ' + group.lvl + ' (Quests: ' + group.quests.length + ') '; header.addEventListener('click', function() { let plus = 'https://classic.the-west.net/img.php?type=button&subtype=normal&value=plus'; let minus = 'https://classic.the-west.net/img.php?type=button&subtype=normal&value=minus'; let toggle = this.querySelector('.toggle'); toggle.src = (toggle.src === plus ? minus : plus); let table = this.parentNode.querySelector('table'); table.style.display = (table.style.display === 'table' ? 'none' : 'table'); }, false); wrap.appendChild(header); let th = document.createElement('tr'); th.innerHTML = '\ Employer \ Title \ Requirement \ Reward \ '; let table = document.createElement('table'); table.appendChild(th); for (let quest of group.quests) { let tr = document.createElement('tr'); let tdEmployer = document.createElement('td'); tdEmployer.innerHTML = ''; tr.appendChild(tdEmployer); let tdTitle = document.createElement('td'); tdTitle.textContent = quest.title; tr.appendChild(tdTitle); let tdReq = document.createElement('td'); tdReq.appendChild(QuestsPlus.format(quest.req)); tr.appendChild(tdReq); let tdRew = document.createElement('td'); tdRew.appendChild(QuestsPlus.format(quest.rew)); tr.appendChild(tdRew); table.appendChild(tr); } wrap.appendChild(table); div.appendChild(wrap); } return div; }, format: function(data) { let div = document.createElement('div'); if (data.txt) { for (let txt of data.txt) { let el = document.createElement('div'); el.textContent = txt; div.appendChild(el); } } if (data.img) { for (let img of data.img) { let el = document.createElement('img'); el.src = img; div.appendChild(el); } } if (data.item) { for (let item of data.item) { let item_div = document.createElement('div'); item_div.className = 'bag_item'; let item_img = document.createElement('img'); item_img.src = 'images/items/' + item[1] + '.png'; item_div.appendChild(item_img); item_div.addMousePopup(new MousePopup(item[0], 250, {opacity: 0.9})); if (item[2] > 1) { let count_div = document.createElement('div'); count_div.className = 'count'; count_div.textContent = item[2]; item_div.appendChild(count_div); } div.appendChild(item_div); } } return div; }, clear: function(el) { while (el.firstChild) el.removeChild(el.firstChild); }, }; QuestsPlus.init();