Module:Sandbox/Hubianzhen/BTD6 rewards: Difference between revisions
Jump to navigation
Jump to search
Hubianzhen (talk | contribs) No edit summary |
Hubianzhen (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local cg = mw.ext.cargo | local cg = mw.ext.cargo | ||
local heroes = { | |||
Quincy = 'QuincyPortrait.png|x20px|link=Quincy (BTD6)|Quincy]] Quincy', | |||
Gwendolin = 'GwendolinPortrait.png|x20px|link=Gwendolin (BTD6)|Gwendolin]] Gwendolin', | |||
StrikerJones = 'StrikerJonesPortrait.png|x20px|link=Striker Jones (BTD6)|Striker Jones]] Striker Jones', | |||
ObynGreenfoot = 'ObynGreenFoot.png|x20px|link=Obyn Greenfoot (BTD6)|Obyn Greenfoot]] Obyn Greenfoot', | |||
CaptainChurchill = 'CaptainChurchillPortrait.png|x20px|link=Captain Churchill (BTD6)|Captain Churchill]] Captain Churchill', | |||
Benjamin = 'BenjaminPortrait.png|x20px|link=Benjamin (BTD6)|Benjamin]] Benjamin', | |||
Ezili = 'EziliPortrait.png|x20px|link=Ezili (BTD6)|Ezili]] Ezili', | |||
PatFusty = 'PatFustyPortrait.png|x20px|link=Pat Fusty (BTD6)|Pat Fusty]] Pat Fusty', | |||
Adora = 'AdoraPortrait.png|x20px|link=Adora (BTD6)|Adora]] Adora', | |||
AdmiralBrickell = 'AdmiralBrickellPortrait.png|x20px|link=Admiral Brickell (BTD6)|Admiral Brickell]] Admiral Brickell', | |||
Etienne = 'EtiennePortrait.png|x20px|link=Etienne (BTD6)|Etienne]] Etienne', | |||
Sauda = 'SaudaPortrait.png|x20px|link=Sauda (BTD6)|Sauda]] Sauda', | |||
Psi = 'PsiPortrait.png|x20px|link=Psi (BTD6)|Psi]] Psi', | |||
Geraldo = 'GeraldoPortrait.png|x20px|link=Geraldo (BTD6)|Geraldo]] Geraldo', | |||
Corvus = 'CorvusPortrait.png|x20px|link=Corvus (BTD6)|Corvus]] Corvus', | |||
Rosalia = 'RosaliaPortrait.png|x20px|link=Rosalia (BTD6)|Rosalia]] Rosalia' | |||
} | |||
local hero_skins = { | |||
["Cyber Quincy"]='QuincyCyberPortrait.png|x20px|link=Cyber Quincy (BTD6)|Cyber Quincy]] Cyber Quincy', | |||
["Scientist Gwendolin"]='GwendolinPortrait (scientist).png|x20px|link=Scientist Gwendolin (BTD6)|Scientist Gwendolin]] Scientist Gwendolin', | |||
["Sentai Captain Churchill"]='SentaiChurchillLVL1.png|x20px|link=Sentai Churchill (BTD6)|Sentai Churchill]] Sentai Churchill', | |||
["Biker Bones"]='BikerBonesPortrait.png|x20px|link=Biker Bones (BTD6)|Biker Bones]] Biker Bones', | |||
ObynOceanGuardian='OceanObynPortraitsLvl1.png|x20px|link=Ocean Guardian (BTD6)|Ocean Guardian]] Ocean Guardian', | |||
BenJammin='BenJamminPortrait.png|x20px|link=Benjammin DJ (BTD6)|Benjammin DJ]] Benjammin DJ', | |||
SmudgeCatt='SmudgeCattPortraitLvl1.png|x20px|link=Smudge Catt (BTD6)|Smudge Catt]] Smudge Catt', | |||
FustyTheSnowman='FustyTheSnowmanPortrait.png|x20px|link=Fusty the Snowman (BTD6)|Fusty the Snowman]] Fusty the Snowman', | |||
["Wolfpack Quincy"]='WolfpackQuincyPortrait.png|x20px|link=Wolfpack Quincy|Wolfpack Quincy]] Wolfpack Quincy', | |||
JoanOfArcAdora='JoanOfArcPortrait.png|x20px|link=Joan of Arc Adora|Joan of Arc Adora]] Joan of Arc Adora', | |||
CircusGwendolin='CircusGwendolinPortrait.png|x20px|link=Harlegwen|Harlegwen]] Harlegwen', | |||
["Octo Jones"]='OctoJonesPortrait.png|x20px|link=Octojones|Octojones]] Octojones', | |||
DreadPirateBrickell='DreadPirateBrickellPortrait.png|x20px|link=Dread Pirate Brickell|Dread Pirate Brickell]] Dread Pirate Brickell', | |||
MoltenObyn='MountainObynPortraitsLvl1.png|x20px|link=Mountain Guardian|Mountain Guardian]] Mountain Guardian', | |||
SushiBento='SushiBentoPortrait.png|x20px|link=Sushi Bento|Sushi Bento]] Sushi Bento', | |||
ETnEtienne='ETnPortrait.png|x20px|link=ETn|ETn]] ETn', | |||
VikingSauda='VikingSaudaPortrait.png|x20px|link=Viking Sauda|Viking Sauda]] Viking Sauda', | |||
Galaxili='GalaxiliPortraitLvl1.png|x20px|link=Galaxili|Galaxili]] Galaxili', | |||
Psimbals='PsimbalsPortrait.png|x20px|link=Psimbals|Psimbals]] Psimbals', | |||
Voidora='VoidoraPortrait.png|x20px|link=Voidora|Voidora]] Voidora', | |||
["Sleigh Captain Churchill"]='SleighChurchillLV1.png|x20px|link=Sleigh Churchill (BTD6)|Sleigh Churchill]] Sleigh Churchill', | |||
KaijuPat='KaijuPatPortrait.png|x20px|link=Kaiju Pat|Kaiju Pat]] Kaiju Pat', | |||
JiangshiSauda='JiangshiSaudaPortrait.png|x20px|link=Jiangshi Sauda|Jiangshi Sauda]] Jiangshi Sauda', | |||
LifeguardBrickell='LifeguardBrickellPortrait.png|x20px|link=Lifeguard Brickell|Lifeguard Brickell]] Lifeguard Brickell', | |||
BookWyrmEtienne='BookWyrmEtiennePortrait.png|x20px|link=Book Wyrm|Book Wyrm]] Book Wyrm', | |||
GeraldoGentlemanGadgeteer='GadgeteerGeraldoPortrait.png|x20px|link=Gentlemonkey Gadgeteer|Gentlemonkey Gadgeteer]] Gentlemonkey Gadgeteer', | |||
DreamstatePsi = 'PsiDreamstatePortrait.png|x20px|link=Dreamstate Psi|Dreamstate Psi]] Dreamstate Psi', | |||
} | |||
local powers = { | |||
SuperMonkeyStorm = 'SuperMonkeyStormIcon.png|x20px|link=Super Monkey Storm (BTD6)|Super Monkey Storm', | |||
MonkeyBoost = 'MonkeyBoostIcon.png|x20px|link=Monkey Boost (BTD6)|Monkey Boost', | |||
Thrive = 'ThriveIcon.png|x20px|link=Thrive', | |||
DartTime = 'DartTimeIcon.png|x20px|link=Time Stop', | |||
CashDrop = 'CashDropIcon.png|x20px|link=Cash Drop (BTD6)|Cash Drop', | |||
BananaFarmer = 'BananaFarmerIcon.png|x20px|link=Banana Farmer (BTD6)|Banana Farmer', | |||
PortableLake = 'PortableLakeIcon.png|x20px|link=Portable Lake (BTD6)|Portable Lake', | |||
Pontoon = 'PontoonIcon.png|x20px|link=Pontoon (BTD6)|Pontoon', | |||
RoadSpikes = 'HotSpikesIcon.png|x20px|link=Road Spikes (BTD6)|Road Spikes', | |||
MoabMine = 'MoabMineIcon.png|x20px|link=MOAB Mine', | |||
CamoTrap = 'CamoTrapIcon.png|x20px|link=Camo Trap', | |||
GlueTrap = 'GlueTrapIcon.png|x20px|link=Glue Trap', | |||
TechBot = 'TechbotIcon.png|x20px|link=Tech Bot', | |||
EnergisingTotem = 'EnergisingTotemIcon.png|x20px|link=Energizing Totem', | |||
BattleCat = 'BattleCatIcon.png|x20px|link=Battle Cat!' | |||
} | |||
local extras = { | |||
BigBloonsMode = 'BigBloonModeIcon.png|x20px|link=Extra#Big Bloons]][[Extra#Big Bloons|Big Bloons]]', | |||
SmallBloonsMode = 'SmallBloonModeIcon.png|x20px|link=Extra#Small Bloons]][[Extra#Small Bloons|Small Bloons]]', | |||
BigTowersMode = 'BigMonkeysModeIcon.png|x20px|link=Extra#Big Monkey Towers]][[Extra#Big Monkey Towers|Big Monkey Towers]]', | |||
SmallTowersMode = 'SmallMonkeysModeIcon.png|x20px|link=Extra#Small Monkey Towers]][[Extra#Small Monkey Towers|Small Monkey Towers]]', | |||
SmallBossesMode = 'SmallBossModeIcon.png|x20px|link=Extra#Small Bosses]][[Extra#Small Bosses|Small Bosses]]' | |||
} | |||
local tower_names = { | local tower_names = { | ||
| Line 30: | Line 105: | ||
local towers = { | local towers = { | ||
DartMonkey = '-DartMonkey.png|x20px|link=Dart Monkey (BTD6)]] Dart Monkey', | DartMonkey = '000-DartMonkey.png|x20px|link=Dart Monkey (BTD6)]] Dart Monkey', | ||
BoomerangMonkey = '-BoomerangMonkey.png|x20px|link=Boomerang Monkey (BTD6)]] Boomerang Monkey', | BoomerangMonkey = '000-BoomerangMonkey.png|x20px|link=Boomerang Monkey (BTD6)]] Boomerang Monkey', | ||
BombShooter = '-BombShooter.png|x20px|link=Bomb Shooter (BTD6)]] Bomb Shooter', | BombShooter = '000-BombShooter.png|x20px|link=Bomb Shooter (BTD6)]] Bomb Shooter', | ||
TackShooter = '-TackShooter.png|x20px|link=Tack Shooter (BTD6)]] Tack Shooter', | TackShooter = '000-TackShooter.png|x20px|link=Tack Shooter (BTD6)]] Tack Shooter', | ||
IceMonkey = '-IceMonkey.png|x20px|link=Ice Monkey (BTD6)]] Ice Monkey', | IceMonkey = '000-IceMonkey.png|x20px|link=Ice Monkey (BTD6)]] Ice Monkey', | ||
GlueGunner = '-GlueGunner.png|x20px|link=Glue Gunner (BTD6)]] Glue Gunner', | GlueGunner = '000-GlueGunner.png|x20px|link=Glue Gunner (BTD6)]] Glue Gunner', | ||
SniperMonkey = '-SniperMonkey.png|x20px|link=Sniper Monkey (BTD6)]] Sniper Monkey', | SniperMonkey = '000-SniperMonkey.png|x20px|link=Sniper Monkey (BTD6)]] Sniper Monkey', | ||
MonkeySub = '-MonkeySub.png|x20px|link=Monkey Sub (BTD6)]] Monkey Sub', | MonkeySub = '000-MonkeySub.png|x20px|link=Monkey Sub (BTD6)]] Monkey Sub', | ||
MonkeyBuccaneer = '-MonkeyBuccaneer.png|x20px|link=Monkey Buccaneer (BTD6)]] Monkey Buccaneer', | MonkeyBuccaneer = '000-MonkeyBuccaneer.png|x20px|link=Monkey Buccaneer (BTD6)]] Monkey Buccaneer', | ||
MonkeyAce = '-MonkeyAce.png|x20px|link=Monkey Ace (BTD6)]] Monkey Ace', | MonkeyAce = '000-MonkeyAce.png|x20px|link=Monkey Ace (BTD6)]] Monkey Ace', | ||
HeliPilot = '-HeliPilot.png|x20px|link=Heli Pilot (BTD6)]] Heli Pilot', | HeliPilot = '000-HeliPilot.png|x20px|link=Heli Pilot (BTD6)]] Heli Pilot', | ||
MortarMonkey = '-MortarMonkey.png|x20px|link=Mortar Monkey (BTD6)]] Mortar Monkey', | MortarMonkey = '000-MortarMonkey.png|x20px|link=Mortar Monkey (BTD6)]] Mortar Monkey', | ||
DartlingGunner = '-DartlingGunner.png|x20px|link=Dartling Gunner (BTD6)]] Dartling Gunner', | DartlingGunner = '000-DartlingGunner.png|x20px|link=Dartling Gunner (BTD6)]] Dartling Gunner', | ||
WizardMonkey = '-WIzard.png|x20px|link=Wizard Monkey (BTD6)]] Wizard Monkey', | WizardMonkey = '000-WIzard.png|x20px|link=Wizard Monkey (BTD6)]] Wizard Monkey', | ||
SuperMonkey = '-SuperMonkey.png|x20px|link=Super Monkey (BTD6)]] Super Monkey', | SuperMonkey = '000-SuperMonkey.png|x20px|link=Super Monkey (BTD6)]] Super Monkey', | ||
NinjaMonkey = '-NinjaMonkey.png|x20px|link=Ninja Monkey (BTD6)]] Ninja Monkey', | NinjaMonkey = '000-NinjaMonkey.png|x20px|link=Ninja Monkey (BTD6)]] Ninja Monkey', | ||
Alchemist = '-Alchemist.png|x20px|link=Alchemist (BTD6)]] Alchemist', | Alchemist = '000-Alchemist.png|x20px|link=Alchemist (BTD6)]] Alchemist', | ||
Druid = '-Druid.png|x20px|link=Druid (BTD6)]] Druid', | Druid = '000-Druid.png|x20px|link=Druid (BTD6)]] Druid', | ||
Mermonkey = '-Mermonkey.png|x20px|link=Mermonkey (BTD6)]] Mermonkey', | Mermonkey = '000-Mermonkey.png|x20px|link=Mermonkey (BTD6)]] Mermonkey', | ||
BananaFarm = '-BananaFarm.png|x20px|link=Banana Farm (BTD6)]] Banana Farm', | BananaFarm = '000-BananaFarm.png|x20px|link=Banana Farm (BTD6)]] Banana Farm', | ||
SpikeFactory = '-SpikeFactory.png|x20px|link=Spike Factory (BTD6)]] Spike Factory', | SpikeFactory = '000-SpikeFactory.png|x20px|link=Spike Factory (BTD6)]] Spike Factory', | ||
MonkeyVillage = '-MonkeyVillage.png|x20px|link=Monkey Village (BTD6)]] Monkey Village', | MonkeyVillage = '000-MonkeyVillage.png|x20px|link=Monkey Village (BTD6)]] Monkey Village', | ||
EngineerMonkey = '-EngineerMonkey.png|x20px|link=Engineer Monkey (BTD6)]] Engineer Monkey', | EngineerMonkey = '000-EngineerMonkey.png|x20px|link=Engineer Monkey (BTD6)]] Engineer Monkey', | ||
BeastHandler = '-BeastHandler.png|x20px|link=Beast Handler (BTD6)]] Beast Handler' | BeastHandler = '000-BeastHandler.png|x20px|link=Beast Handler (BTD6)]] Beast Handler' | ||
} | } | ||
| Line 84: | Line 159: | ||
local reward_for_type = { | local reward_for_type = { | ||
['MonkeyMoney'] = function(value) | |||
return string.format('[[File:BTD6 BloonjaminsIcon.png|x20px|link=Monkey Money]] %s', value) | |||
end, | |||
['KnowledgePoints'] = function(value) | |||
return string.format('[[File:BTD6 KnowledgeIcon.png|x20px|link=Monkey Knowledge Point|Monkey Knowledge Points]] %s', value) | |||
end, | |||
['InstaRank'] = function(value) | |||
return string.format('[[File:BTD6 LvlHolder.png|x20px|link=Level]] %s', value) | |||
end, | |||
['FullTowerUnlock'] = function(value) | ['FullTowerUnlock'] = function(value) | ||
return string.format('[[File:BTD6 %s', towers[value]) | return string.format('[[File:BTD6 %s', towers[value]) | ||
end, | |||
['RandomPower'] = function(value) | |||
local delimiter = string.find(value, ',') | |||
return string.format('[[File:BTD6 PowersIcon.png|x20px|link=Power|Powers]] "%s" power ×%s', string.sub(value, 1, delimiter - 1), string.sub(value, delimiter + 1, string.len(value))) | |||
end, | |||
['Trophy'] = function(value) | |||
return string.format('[[File:BTD6 TrophyIcon.png|x20px|link=Trophy (BTD6)|Trophies]] %s', value) | |||
end, | |||
['RacesPass'] = function(value) | |||
return string.format('[[File:BTD6 RacePassIconSmall.png|x20px|link=Race Pass]] %s', value) | |||
end, | |||
['CollectionEvent'] = function(value) | |||
return string.format('[[File:BTD6 EventTotemLootIcon.png|x20px|link=Collection Event (BTD6)|Collection Rewards]] %s', value) | |||
end, | |||
['Hero'] = function(value) | |||
return string.format('[[File:BTD6 %s', heroes[value]) | |||
end, | |||
['HeroSkin'] = function(value) | |||
return string.format('[[File:BTD6 %s', hero_skins[value]) | |||
end, | |||
['Power'] = function(value) | |||
local delimiter = string.find(value, ',') | |||
if delimiter ~= nil then | |||
return string.format('[[File:BTD6 %s]] ×%s', | |||
powers[string.sub(value, 1, delimiter - 1)], | |||
string.sub(value, delimiter + 1, string.len(value))) | |||
else | |||
return string.format('[[File:BTD6 %s]] ×1', powers[value]) | |||
end | |||
end, | end, | ||
| Line 156: | Line 278: | ||
end, | end, | ||
['BigBloonsMode'] = function(value) return '[[File:BTD6 BigBloonModeIcon.png|x20px|link=Extra#Big Bloons|Big Bloons]] Big Bloons' end, | |||
['SmallBloonsMode'] = function(value) return '[[File:BTD6 SmallBloonModeIcon.png|x20px|link=Extra#Small Bloons|Small Bloons]] Small Bloons' end, | |||
['BigTowersMode'] = function(value) return '[[File:BTD6 BigMonkeysModeIcon.png|x20px|link=Extra#Big Monkey Towers|Big Monkey Towers]] Big Monkey Towers' end, | |||
['SmallTowersMode'] = function(value) return '[[File:BTD6 SmallMonkeysModeIcon.png|x20px|link=Extra#Small Monkey Towers|Small Monkey Towers]] Small Monkey Towers' end, | |||
['SmallBossesMode'] = function(value) return '[[File:BTD6 SmallBossModeIcon.png|x20px|link=Extra#Small Bosses|Small Bosses]] Small Bosses' end, | |||
['DoubleCashMode'] = function(value) return '[[File:BTD6 DoubleCashModeShop.png|x20px|link=Double Cash Mode (BTD6)|Double Cash Mode]] Double Cash Mode' end, | |||
['FastTrack'] = function(value) return '[[File:BTD6 FastTrackIconSmall.png|x20px|link=Fast Track Mode]] Fast Track Mode' end, | |||
['MapEditorUnlock'] = function(value) return 'Map Editor unlocked' end, | |||
['TrophyStoreItem'] = function(value) | |||
local result = cg.query('btd6_cosmetic_items', '_pageName, name, shortname, image', { | |||
where = string.format('id = "%s"', value) | |||
}) | |||
return string.format('[[File:%s|x20px|link=%s|%s]] %s', result[1].image, result[1]._pageName, result[1].name, result[1].shortname) | |||
end | |||
} | } | ||
function p.parse(text) | function p.parse(text, source) | ||
local reward_text = {} | local reward_text = {} | ||
| Line 167: | Line 304: | ||
if delimiter ~= nil then | if delimiter ~= nil then | ||
table.insert(reward_text, reward_for_type[string.sub(reward, 1, delimiter - 1)](string.sub(reward, delimiter + 1, string.len(reward)))) | table.insert(reward_text, reward_for_type[string.sub(reward, 1, delimiter - 1)](string.sub(reward, delimiter + 1, string.len(reward)))) | ||
if string.sub(reward, 1, delimiter - 1) == 'TrophyStoreItem' and source ~= nil then | |||
cg.store('btd6_cosmetic_sources', { | cg.store('btd6_cosmetic_sources', { | ||
name = source, | name = source, | ||
item = string.sub(reward, delimiter + 1, string.len(reward)) | item = string.sub(reward, delimiter + 1, string.len(reward)) | ||
}) | }) | ||
end | end | ||
else | else | ||
| Line 183: | Line 320: | ||
function p.main(frame) | function p.main(frame) | ||
return p.parse(frame.args[1]) | return p.parse(frame.args[1], frame.args['source']) | ||
end | end | ||
return p | return p | ||
Revision as of 17:06, 24 February 2025
Documentation for this module may be created at Module:Sandbox/Hubianzhen/BTD6 rewards/doc
local p = {}
local cg = mw.ext.cargo
local heroes = {
Quincy = 'QuincyPortrait.png|x20px|link=Quincy (BTD6)|Quincy]] Quincy',
Gwendolin = 'GwendolinPortrait.png|x20px|link=Gwendolin (BTD6)|Gwendolin]] Gwendolin',
StrikerJones = 'StrikerJonesPortrait.png|x20px|link=Striker Jones (BTD6)|Striker Jones]] Striker Jones',
ObynGreenfoot = 'ObynGreenFoot.png|x20px|link=Obyn Greenfoot (BTD6)|Obyn Greenfoot]] Obyn Greenfoot',
CaptainChurchill = 'CaptainChurchillPortrait.png|x20px|link=Captain Churchill (BTD6)|Captain Churchill]] Captain Churchill',
Benjamin = 'BenjaminPortrait.png|x20px|link=Benjamin (BTD6)|Benjamin]] Benjamin',
Ezili = 'EziliPortrait.png|x20px|link=Ezili (BTD6)|Ezili]] Ezili',
PatFusty = 'PatFustyPortrait.png|x20px|link=Pat Fusty (BTD6)|Pat Fusty]] Pat Fusty',
Adora = 'AdoraPortrait.png|x20px|link=Adora (BTD6)|Adora]] Adora',
AdmiralBrickell = 'AdmiralBrickellPortrait.png|x20px|link=Admiral Brickell (BTD6)|Admiral Brickell]] Admiral Brickell',
Etienne = 'EtiennePortrait.png|x20px|link=Etienne (BTD6)|Etienne]] Etienne',
Sauda = 'SaudaPortrait.png|x20px|link=Sauda (BTD6)|Sauda]] Sauda',
Psi = 'PsiPortrait.png|x20px|link=Psi (BTD6)|Psi]] Psi',
Geraldo = 'GeraldoPortrait.png|x20px|link=Geraldo (BTD6)|Geraldo]] Geraldo',
Corvus = 'CorvusPortrait.png|x20px|link=Corvus (BTD6)|Corvus]] Corvus',
Rosalia = 'RosaliaPortrait.png|x20px|link=Rosalia (BTD6)|Rosalia]] Rosalia'
}
local hero_skins = {
["Cyber Quincy"]='QuincyCyberPortrait.png|x20px|link=Cyber Quincy (BTD6)|Cyber Quincy]] Cyber Quincy',
["Scientist Gwendolin"]='GwendolinPortrait (scientist).png|x20px|link=Scientist Gwendolin (BTD6)|Scientist Gwendolin]] Scientist Gwendolin',
["Sentai Captain Churchill"]='SentaiChurchillLVL1.png|x20px|link=Sentai Churchill (BTD6)|Sentai Churchill]] Sentai Churchill',
["Biker Bones"]='BikerBonesPortrait.png|x20px|link=Biker Bones (BTD6)|Biker Bones]] Biker Bones',
ObynOceanGuardian='OceanObynPortraitsLvl1.png|x20px|link=Ocean Guardian (BTD6)|Ocean Guardian]] Ocean Guardian',
BenJammin='BenJamminPortrait.png|x20px|link=Benjammin DJ (BTD6)|Benjammin DJ]] Benjammin DJ',
SmudgeCatt='SmudgeCattPortraitLvl1.png|x20px|link=Smudge Catt (BTD6)|Smudge Catt]] Smudge Catt',
FustyTheSnowman='FustyTheSnowmanPortrait.png|x20px|link=Fusty the Snowman (BTD6)|Fusty the Snowman]] Fusty the Snowman',
["Wolfpack Quincy"]='WolfpackQuincyPortrait.png|x20px|link=Wolfpack Quincy|Wolfpack Quincy]] Wolfpack Quincy',
JoanOfArcAdora='JoanOfArcPortrait.png|x20px|link=Joan of Arc Adora|Joan of Arc Adora]] Joan of Arc Adora',
CircusGwendolin='CircusGwendolinPortrait.png|x20px|link=Harlegwen|Harlegwen]] Harlegwen',
["Octo Jones"]='OctoJonesPortrait.png|x20px|link=Octojones|Octojones]] Octojones',
DreadPirateBrickell='DreadPirateBrickellPortrait.png|x20px|link=Dread Pirate Brickell|Dread Pirate Brickell]] Dread Pirate Brickell',
MoltenObyn='MountainObynPortraitsLvl1.png|x20px|link=Mountain Guardian|Mountain Guardian]] Mountain Guardian',
SushiBento='SushiBentoPortrait.png|x20px|link=Sushi Bento|Sushi Bento]] Sushi Bento',
ETnEtienne='ETnPortrait.png|x20px|link=ETn|ETn]] ETn',
VikingSauda='VikingSaudaPortrait.png|x20px|link=Viking Sauda|Viking Sauda]] Viking Sauda',
Galaxili='GalaxiliPortraitLvl1.png|x20px|link=Galaxili|Galaxili]] Galaxili',
Psimbals='PsimbalsPortrait.png|x20px|link=Psimbals|Psimbals]] Psimbals',
Voidora='VoidoraPortrait.png|x20px|link=Voidora|Voidora]] Voidora',
["Sleigh Captain Churchill"]='SleighChurchillLV1.png|x20px|link=Sleigh Churchill (BTD6)|Sleigh Churchill]] Sleigh Churchill',
KaijuPat='KaijuPatPortrait.png|x20px|link=Kaiju Pat|Kaiju Pat]] Kaiju Pat',
JiangshiSauda='JiangshiSaudaPortrait.png|x20px|link=Jiangshi Sauda|Jiangshi Sauda]] Jiangshi Sauda',
LifeguardBrickell='LifeguardBrickellPortrait.png|x20px|link=Lifeguard Brickell|Lifeguard Brickell]] Lifeguard Brickell',
BookWyrmEtienne='BookWyrmEtiennePortrait.png|x20px|link=Book Wyrm|Book Wyrm]] Book Wyrm',
GeraldoGentlemanGadgeteer='GadgeteerGeraldoPortrait.png|x20px|link=Gentlemonkey Gadgeteer|Gentlemonkey Gadgeteer]] Gentlemonkey Gadgeteer',
DreamstatePsi = 'PsiDreamstatePortrait.png|x20px|link=Dreamstate Psi|Dreamstate Psi]] Dreamstate Psi',
}
local powers = {
SuperMonkeyStorm = 'SuperMonkeyStormIcon.png|x20px|link=Super Monkey Storm (BTD6)|Super Monkey Storm',
MonkeyBoost = 'MonkeyBoostIcon.png|x20px|link=Monkey Boost (BTD6)|Monkey Boost',
Thrive = 'ThriveIcon.png|x20px|link=Thrive',
DartTime = 'DartTimeIcon.png|x20px|link=Time Stop',
CashDrop = 'CashDropIcon.png|x20px|link=Cash Drop (BTD6)|Cash Drop',
BananaFarmer = 'BananaFarmerIcon.png|x20px|link=Banana Farmer (BTD6)|Banana Farmer',
PortableLake = 'PortableLakeIcon.png|x20px|link=Portable Lake (BTD6)|Portable Lake',
Pontoon = 'PontoonIcon.png|x20px|link=Pontoon (BTD6)|Pontoon',
RoadSpikes = 'HotSpikesIcon.png|x20px|link=Road Spikes (BTD6)|Road Spikes',
MoabMine = 'MoabMineIcon.png|x20px|link=MOAB Mine',
CamoTrap = 'CamoTrapIcon.png|x20px|link=Camo Trap',
GlueTrap = 'GlueTrapIcon.png|x20px|link=Glue Trap',
TechBot = 'TechbotIcon.png|x20px|link=Tech Bot',
EnergisingTotem = 'EnergisingTotemIcon.png|x20px|link=Energizing Totem',
BattleCat = 'BattleCatIcon.png|x20px|link=Battle Cat!'
}
local extras = {
BigBloonsMode = 'BigBloonModeIcon.png|x20px|link=Extra#Big Bloons]][[Extra#Big Bloons|Big Bloons]]',
SmallBloonsMode = 'SmallBloonModeIcon.png|x20px|link=Extra#Small Bloons]][[Extra#Small Bloons|Small Bloons]]',
BigTowersMode = 'BigMonkeysModeIcon.png|x20px|link=Extra#Big Monkey Towers]][[Extra#Big Monkey Towers|Big Monkey Towers]]',
SmallTowersMode = 'SmallMonkeysModeIcon.png|x20px|link=Extra#Small Monkey Towers]][[Extra#Small Monkey Towers|Small Monkey Towers]]',
SmallBossesMode = 'SmallBossModeIcon.png|x20px|link=Extra#Small Bosses]][[Extra#Small Bosses|Small Bosses]]'
}
local tower_names = {
DartMonkey = 'Dart Monkey',
BoomerangMonkey = 'Boomerang Monkey',
BombShooter = 'Bomb Shooter',
TackShooter = 'Tack Shooter',
IceMonkey = 'Ice Monkey',
GlueGunner = 'Glue Gunner',
SniperMonkey = 'Sniper Monkey',
MonkeySub = 'Monkey Sub',
MonkeyBuccaneer = 'Monkey Buccaneer',
MonkeyAce = 'Monkey Ace',
HeliPilot = 'Heli Pilot',
MortarMonkey = 'Mortar Monkey',
DartlingGunner = 'Dartling Gunner',
WizardMonkey = 'Wizard Monkey',
SuperMonkey = 'Super Monkey',
NinjaMonkey = 'Ninja Monkey',
Alchemist = 'Alchemist',
Druid = 'Druid',
Mermonkey = 'Mermonkey',
BananaFarm = 'Banana Farm',
SpikeFactory = 'Spike Factory',
MonkeyVillage = 'Monkey Village',
EngineerMonkey = 'Engineer Monkey',
BeastHandler = 'Beast Handler'
}
local towers = {
DartMonkey = '000-DartMonkey.png|x20px|link=Dart Monkey (BTD6)]] Dart Monkey',
BoomerangMonkey = '000-BoomerangMonkey.png|x20px|link=Boomerang Monkey (BTD6)]] Boomerang Monkey',
BombShooter = '000-BombShooter.png|x20px|link=Bomb Shooter (BTD6)]] Bomb Shooter',
TackShooter = '000-TackShooter.png|x20px|link=Tack Shooter (BTD6)]] Tack Shooter',
IceMonkey = '000-IceMonkey.png|x20px|link=Ice Monkey (BTD6)]] Ice Monkey',
GlueGunner = '000-GlueGunner.png|x20px|link=Glue Gunner (BTD6)]] Glue Gunner',
SniperMonkey = '000-SniperMonkey.png|x20px|link=Sniper Monkey (BTD6)]] Sniper Monkey',
MonkeySub = '000-MonkeySub.png|x20px|link=Monkey Sub (BTD6)]] Monkey Sub',
MonkeyBuccaneer = '000-MonkeyBuccaneer.png|x20px|link=Monkey Buccaneer (BTD6)]] Monkey Buccaneer',
MonkeyAce = '000-MonkeyAce.png|x20px|link=Monkey Ace (BTD6)]] Monkey Ace',
HeliPilot = '000-HeliPilot.png|x20px|link=Heli Pilot (BTD6)]] Heli Pilot',
MortarMonkey = '000-MortarMonkey.png|x20px|link=Mortar Monkey (BTD6)]] Mortar Monkey',
DartlingGunner = '000-DartlingGunner.png|x20px|link=Dartling Gunner (BTD6)]] Dartling Gunner',
WizardMonkey = '000-WIzard.png|x20px|link=Wizard Monkey (BTD6)]] Wizard Monkey',
SuperMonkey = '000-SuperMonkey.png|x20px|link=Super Monkey (BTD6)]] Super Monkey',
NinjaMonkey = '000-NinjaMonkey.png|x20px|link=Ninja Monkey (BTD6)]] Ninja Monkey',
Alchemist = '000-Alchemist.png|x20px|link=Alchemist (BTD6)]] Alchemist',
Druid = '000-Druid.png|x20px|link=Druid (BTD6)]] Druid',
Mermonkey = '000-Mermonkey.png|x20px|link=Mermonkey (BTD6)]] Mermonkey',
BananaFarm = '000-BananaFarm.png|x20px|link=Banana Farm (BTD6)]] Banana Farm',
SpikeFactory = '000-SpikeFactory.png|x20px|link=Spike Factory (BTD6)]] Spike Factory',
MonkeyVillage = '000-MonkeyVillage.png|x20px|link=Monkey Village (BTD6)]] Monkey Village',
EngineerMonkey = '000-EngineerMonkey.png|x20px|link=Engineer Monkey (BTD6)]] Engineer Monkey',
BeastHandler = '000-BeastHandler.png|x20px|link=Beast Handler (BTD6)]] Beast Handler'
}
local insta_towers = {
DartMonkey = '-DartMonkeyInsta.png|x20px|link=Dart Monkey (BTD6)',
BoomerangMonkey = '-BoomerangMonkeyInsta.png|x20px|link=Boomerang Monkey (BTD6)',
BombShooter = '-BombShooterInsta.png|x20px|link=Bomb Shooter (BTD6)',
TackShooter = '-TackShooterInsta.png|x20px|link=Tack Shooter (BTD6)',
IceMonkey = '-IceMonkeyInsta.png|x20px|link=Ice Monkey (BTD6)',
GlueGunner = '-GlueGunnerInsta.png|x20px|link=Glue Gunner (BTD6)',
SniperMonkey = '-SniperMonkeyInsta.png|x20px|link=Sniper Monkey (BTD6)',
MonkeySub = '-MonkeySubInsta.png|x20px|link=Monkey Sub (BTD6)',
MonkeyBuccaneer = '-MonkeyBuccaneerInsta.png|x20px|link=Monkey Buccaneer (BTD6)',
MonkeyAce = '-MonkeyAceInsta.png|x20px|link=Monkey Ace (BTD6)',
HeliPilot = '-HeliPilotInsta.png|x20px|link=Heli Pilot (BTD6)',
MortarMonkey = '-MortarMonkeyInsta.png|x20px|link=Mortar Monkey (BTD6)',
DartlingGunner = '-DartlingGunnerInsta.png|x20px|link=Dartling Gunner (BTD6)',
WizardMonkey = '-WIzardInsta.png|x20px|link=Wizard Monkey (BTD6)',
SuperMonkey = '-SuperMonkeyInsta.png|x20px|link=Super Monkey (BTD6)',
NinjaMonkey = '-NinjaMonkeyInsta.png|x20px|link=Ninja Monkey (BTD6)',
Alchemist = '-AlchemistInsta.png|x20px|link=Alchemist (BTD6)',
Druid = '-DruidInsta.png|x20px|link=Druid (BTD6)',
Mermonkey = '-MermonkeyInsta.png|x20px|link=Mermonkey (BTD6)',
BananaFarm = '-BananaFarmInsta.png|x20px|link=Banana Farm (BTD6)',
SpikeFactory = '-SpikeFactoryInsta.png|x20px|link=Spike Factory (BTD6)',
MonkeyVillage = '-MonkeyVillageInsta.png|x20px|link=Monkey Village (BTD6)',
EngineerMonkey = '-EngineerMonkeyInsta.png|x20px|link=Engineer Monkey (BTD6)',
BeastHandler = '-BeastHandlerInsta.png|x20px|link=Beast Handler (BTD6)'
}
local reward_for_type = {
['MonkeyMoney'] = function(value)
return string.format('[[File:BTD6 BloonjaminsIcon.png|x20px|link=Monkey Money]] %s', value)
end,
['KnowledgePoints'] = function(value)
return string.format('[[File:BTD6 KnowledgeIcon.png|x20px|link=Monkey Knowledge Point|Monkey Knowledge Points]] %s', value)
end,
['InstaRank'] = function(value)
return string.format('[[File:BTD6 LvlHolder.png|x20px|link=Level]] %s', value)
end,
['FullTowerUnlock'] = function(value)
return string.format('[[File:BTD6 %s', towers[value])
end,
['RandomPower'] = function(value)
local delimiter = string.find(value, ',')
return string.format('[[File:BTD6 PowersIcon.png|x20px|link=Power|Powers]] "%s" power ×%s', string.sub(value, 1, delimiter - 1), string.sub(value, delimiter + 1, string.len(value)))
end,
['Trophy'] = function(value)
return string.format('[[File:BTD6 TrophyIcon.png|x20px|link=Trophy (BTD6)|Trophies]] %s', value)
end,
['RacesPass'] = function(value)
return string.format('[[File:BTD6 RacePassIconSmall.png|x20px|link=Race Pass]] %s', value)
end,
['CollectionEvent'] = function(value)
return string.format('[[File:BTD6 EventTotemLootIcon.png|x20px|link=Collection Event (BTD6)|Collection Rewards]] %s', value)
end,
['Hero'] = function(value)
return string.format('[[File:BTD6 %s', heroes[value])
end,
['HeroSkin'] = function(value)
return string.format('[[File:BTD6 %s', hero_skins[value])
end,
['Power'] = function(value)
local delimiter = string.find(value, ',')
if delimiter ~= nil then
return string.format('[[File:BTD6 %s]] ×%s',
powers[string.sub(value, 1, delimiter - 1)],
string.sub(value, delimiter + 1, string.len(value)))
else
return string.format('[[File:BTD6 %s]] ×1', powers[value])
end
end,
['InstaMonkey'] = function(value)
local delimiter = string.find(value, ',')
local top = tonumber(string.sub(value, delimiter + 1, delimiter + 1))
local mid = tonumber(string.sub(value, delimiter + 2, delimiter + 2))
local btm = tonumber(string.sub(value, delimiter + 3, delimiter + 3))
local tower = string.sub(value, 1, delimiter - 1)
--[[ Insta-towers:
If both paths equal, the order is:
Middle, Top, Bottom
exceptions:
Dart middle then bottom (t1 and t2)
Bucc middle then bottom (t2)
can be volatile, so keeping an eye on those changes
]]--
-- Middle
if mid >= top and mid >= btm then
top, btm = 0, 0
-- Top
elseif top >= mid and top >= btm then
if top == btm and (tower ~= "DartMonkey" or (tower ~= "MonkeyBuccaneer" and top == 2)) then top, mid = 0, 0
else
mid, btm = 0, 0
end
-- Bottom
else
top, mid = 0, 0
end
return string.format('[[File:BTD6 %s%s%s%s]] %s-%s-%s',
tostring(top), tostring(mid), tostring(btm), insta_towers[tower],
string.sub(value, delimiter + 1, delimiter + 1), string.sub(value, delimiter + 2, delimiter + 2), string.sub(value, delimiter + 3, delimiter + 3)
)
end,
['RandomInstaMonkey'] = function(value)
local values = {}
for v in string.gmatch(value, '([^,]+)') do
table.insert(values, v)
end
local tier = values[1]
local amt = values[2]
local tower = tower_names[values[3]]
-- tier 0
if values[1] == "0" then
if #values == 3 then
-- random tier 0 of a specific tower
return string.format('[[File:BTD6 InstaRandomTier1.png|x20px|Tier 0 %s Insta Monkey|link=Insta Monkey]] %s ×%s', tower, tower, amt)
else
-- random tier 0
return string.format('[[File:BTD6 InstaRandomTier1.png|x20px|Tier 0 Insta Monkey|link=Insta Monkey]] ×%s', amt)
end
else
if #values == 3 then
-- random tier X of a specific tower
return string.format('[[File:BTD6 InstaRandomTier%s.png|x20px|Tier %s %s Insta Monkey|link=Insta Monkey]] %s ×%s', tier, tier, tower, tower, amt)
else
-- random tier X
return string.format('[[File:BTD6 InstaRandomTier%s.png|x20px|Tier %s Insta Monkey|link=Insta Monkey]] ×%s', tier, tier, amt)
end
end
end,
['BigBloonsMode'] = function(value) return '[[File:BTD6 BigBloonModeIcon.png|x20px|link=Extra#Big Bloons|Big Bloons]] Big Bloons' end,
['SmallBloonsMode'] = function(value) return '[[File:BTD6 SmallBloonModeIcon.png|x20px|link=Extra#Small Bloons|Small Bloons]] Small Bloons' end,
['BigTowersMode'] = function(value) return '[[File:BTD6 BigMonkeysModeIcon.png|x20px|link=Extra#Big Monkey Towers|Big Monkey Towers]] Big Monkey Towers' end,
['SmallTowersMode'] = function(value) return '[[File:BTD6 SmallMonkeysModeIcon.png|x20px|link=Extra#Small Monkey Towers|Small Monkey Towers]] Small Monkey Towers' end,
['SmallBossesMode'] = function(value) return '[[File:BTD6 SmallBossModeIcon.png|x20px|link=Extra#Small Bosses|Small Bosses]] Small Bosses' end,
['DoubleCashMode'] = function(value) return '[[File:BTD6 DoubleCashModeShop.png|x20px|link=Double Cash Mode (BTD6)|Double Cash Mode]] Double Cash Mode' end,
['FastTrack'] = function(value) return '[[File:BTD6 FastTrackIconSmall.png|x20px|link=Fast Track Mode]] Fast Track Mode' end,
['MapEditorUnlock'] = function(value) return 'Map Editor unlocked' end,
['TrophyStoreItem'] = function(value)
local result = cg.query('btd6_cosmetic_items', '_pageName, name, shortname, image', {
where = string.format('id = "%s"', value)
})
return string.format('[[File:%s|x20px|link=%s|%s]] %s', result[1].image, result[1]._pageName, result[1].name, result[1].shortname)
end
}
function p.parse(text, source)
local reward_text = {}
-- split text by '#'
for reward in string.gmatch(text, '([^#]+)') do
-- split reward by ':'
local delimiter = string.find(reward, ':')
if delimiter ~= nil then
table.insert(reward_text, reward_for_type[string.sub(reward, 1, delimiter - 1)](string.sub(reward, delimiter + 1, string.len(reward))))
if string.sub(reward, 1, delimiter - 1) == 'TrophyStoreItem' and source ~= nil then
cg.store('btd6_cosmetic_sources', {
name = source,
item = string.sub(reward, delimiter + 1, string.len(reward))
})
end
else
table.insert(reward_text, reward_for_type[reward]())
end
end
return table.concat(reward_text, ', ')
end
function p.main(frame)
return p.parse(frame.args[1], frame.args['source'])
end
return p