« Module:Weapon » : différence entre les versions

De Inkipédia
(Annulation des modifications 5950 de Fxfxfx0 (discussion))
Balise : Annulation
(Annulation des modifications 6036 de Fxfxfx0 (discussion))
 
(21 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
local p = {}
local p = {}
local gameShortened = require("Module:GameShortened")
local gameShortened = require("Module:GameShortened")
-- Translation tables for sub, special, and main weapons
local subWeaponTranslations = {
    ["Sub weapons"] = "Armes secondaires",
    ["Sub weapon"] = "Arme secondaire",
    ["Splat Bomb"] = "Bombe splash",
    ["Suction Bomb"] = "Bombe gluante",
    ["Burst Bomb"] = "Bombe ballon",
    ["Seeker"] = "Traqueur",
    ["Curling Bomb"] = "Bombe curling",
    ["Autobomb"] = "Bombe robot",
    ["Ink Mine"] = "Mine",
    ["Disruptor"] = "Fiole toxique",
    ["Toxic Mist"] = "Brume toxique",
    ["Point Sensor"] = "Détecteur",
    ["Splash Wall"] = "Mur d'encre",
    ["Sprinkler"] = "Fontaine",
    ["Squid Beakon"] = "Balise de saut",
    ["Fizzy Bomb"] = "Bombe soda",
    ["Torpedo"] = "Bentorpille",
    ["Angle Shooter"] = "Ricocheur",
    ["Smallfry"] = "Salmioche (personnage)|Salmioche",
}
local specialWeaponTranslations = {
    ["Special weapons"] = "Armes spéciales",
    ["Special weapon"] = "Arme spéciale",
    ["Bomb Rush"] = "Bombardement",
    ["Bubbler"] = "Bouclier",
    ["Echolocator"] = "Sonar",
    ["Inkstrike"] = "Missile tornade",
    ["Inkzooka"] = "Lance-tornades",
    ["Killer Wail"] = "Haut-perceur",
    ["Kraken"] = "Kraken",
    ["Tenta Missiles"] = "Multi-missile",
    ["Sting Ray"] = "Pigmalance",
    ["Inkjet"] = "Chromo-jet",
    ["Splashdown"] = "Choc chromatique",
    ["Ink Armor"] = "Armure d'encre",
    ["Bomb Launcher"] = "Lance-bombes",
    ["Splat-Bomb Launcher"] = "Lance-bombes splash",
    ["Suction-Bomb Launcher"] = "Lance-bombes gluantes",
    ["Curling-Bomb Launcher"] = "Lance-bombes curling",
    ["Autobomb Launcher"] = "Lance-bombes robots",
    ["Burst-Bomb Launcher"] = "Lance-bombes ballons",
    ["Ink Storm"] = "Pluie d'encre",
    ["Baller"] = "Chromo-sphère",
    ["Bubble Blower"] = "Lance-bulles",
    ["Booyah Bomb"] = "Jolizator",
    ["Ultra Stamp"] = "Ultra-tamponneur",
    ["Trizooka"] = "Lance-rafales",
    ["Big Bubbler"] = "Super bouclier",
    ["Crab Tank"] = "Crabe d'assaut",
    ["Killer Wail 5.1"] = "Haut-perceur 5.1",
    ["Zipcaster"] = "Super Mollusque",
    ["Ink Vac"] = "Aspirencre",
    ["Triple Inkstrike"] = "Trimissile tornade",
    ["Tacticooler"] = "Districool",
    ["Wave Breaker"] = "Sonar paf",
    ["Reefslider"] = "Cavasquale",
    ["Kraken Royale"] = "Kraken royal",
    ["Super Chump"] = "Multi-leurres",
    ["Triple Splashdown"] = "Triple choc chromatique",
    ["Splattercolor Screen"] = "Barrière barbouillée",
    ["?"] = gameShort == "S3" and "Salmon_Run_Next_Wave#Rotation_Aléatoire|Aléatoire" or "Salmon_Run#Rotation_Aléatoire|Aléatoire",
    ["??"] = gameShort == "S3" and "Salmon_Run_Next_Wave#Rotation_Aléatoire|Spéciale" or "Salmon_Run#Rotation_spéciale_armes_de_m_ours|Spéciale"
}
local mainWeaponTranslations = {
["Main"] = "Principale",
["Sub"] = "Secondaire",
["Special"] = "Spéciale",
["Shooter"] = "Lanceur",
["Blaster"] = "Blaster",
["Roller"] = "Rouleau",
["Brush"] = "Pinceau",
["Charger"] = "Fusil",
["Slosher"] = "Seau",
["Splatling"] = "Badigeonneur",
["Dualie"] = "Arme double",
["Brella"] = "Para-encre",
["Stringer"] = "Transperceur",
["Splatana"] = "Éclatana",
--Lanceurs
["Splattershot Jr."] = "Liquidateur Jr.",
["Custom Splattershot Jr."] = "Liquidateur Sr.",
["Kensa Splattershot Jr."] = "Liquidateur Jr. K",
["Sploosh-o-matic"] = "Marqueur lourd",
["Neo Sploosh-o-matic"] = "Marqueur lourd Néo",
["Sploosh-o-matic 7"] = "Marqueur lourd 7",
["Splash-o-matic"] = "Marqueur léger",
["Neo Splash-o-matic"] = "Marqueur léger Néo",
["Aerospray"] = "Aérogun",
["Aerospray MG"] = "Aérogun",
["Aerospray RG"] = "Aérogun premium",
["Aerospray PG"] = "Aérogun select",
["Splattershot"] = "Liquidateur",
["Tentatek Splattershot"] = "Liquidateur griffé",
["Wasabi Splattershot"] = "Liquidateur Wasabi",
["Kensa Splattershot"] = "Liquidateur K",
["Hero Shot Replica"] = "Lanceur héroïque (réplique)",
["Octo Shot Replica"] = "Lanceur Octaling (réplique)",
["Order Shot Replica"] = "Lanceur d'Ordre (réplique)",
[".52 Gal"] = "Calibre 2000",
[".52 Gal Deco"] = "Calibre 2000 chic",
["Kensa .52 Gal"] = "Calibre 2000 K",
["N-ZAP"] = "N-ZAP",
["N-ZAP '85"] = "N-ZAP 85",
["N-ZAP '89"] = "N-ZAP 89",
["N-ZAP '83"] = "N-ZAP 83",
["Dual Squelcher"] = "Nettoyeur duo",
["Custom Dual Squelcher"] = "Nettoyeur duo modifié",
["Splattershot Pro"] = "Liquidateur pro",
["Forge Splattershot Pro"] = "Liquidateur pro griffé",
["Berry Splattershot Pro"] = "Liquidateur pro Framboise",
["Kensa Splattershot Pro"] = "Liquidateur pro K",
[".96 Gal"] = "Calibre 3000",
[".96 Gal Deco"] = "Calibre 3000 chic",
["Jet Squelcher"] = "Nettoyeur XL",
["Custom Jet Squelcher"] = "Nettoyeur XL modifié",
["Splattershot Nova"] = "Lanceur spatial",
["Annaki Splattershot Nova"] = "Lanceur spatial Aroz",
--Arroseurs
["L-3 Nozzlenose"] = "Arroseur léger",
["L-3 Nozzlenose D"] = "Arroseur léger Cétacé",
["Kensa L-3 Nozzlenose"] = "Arroseur léger K",
["H-3 Nozzlenose"] = "Arroseur lourd",
["H-3 Nozzlenose D"] = "Arroseur lourd Cétacé",
["Cherry H-3 Nozzlenose"] = "Arroseur lourd Cerise",
["Squeezer"] = "Compresseur",
["Foil Squeezer"] = "Compresseur alu",
--Blasters
["Blaster"] = "Éclablaster",
["Custom Blaster"] = "Éclablaster modifié",
["Hero Blaster Replica"] = "Blaster héroique (réplique)",
["Range Blaster"] = "Éclablaster XL",
["Custom Range Blaster"] = "Éclablaster XL griffé",
["Grim Range Blaster"] = "Éclablaster Nox",
["Luna Blaster"] = "Proxiblaster",
["Luna Blaster Neo"] = "Proxiblaster Néo",
["Kensa Luna Blaster"] = "Proxiblaster K",
["Order Blaster Replica"] = "Blaster d'Ordre (réplique)",
["Clash Blaster"] = "Rafablaster",
["Clash Blaster Neo"] = "Rafablaster Néo",
["Rapid Blaster"] = "Turboblaster",
["Rapid Blaster Deco"] = "Turboblaster chic",
["Kensa Rapid Blaster"] = "Turboblaster K",
["Rapid Blaster Pro"] = "Turboblaster pro",
["Rapid Blaster Pro Deco"] = "Turboblaster pro chic",
["S-BLAST '92"] = "S-Blaster '92",
["S-BLAST '91"] = "S-Blaster '91",
--Armes doubles
["Dapple Dualies"] = "Double moucheteur",
["Dapple Dualies Nouveau"] = "Double moucheteur nuancé",
["Clear Dapple Dualies"] = "Double moucheteur dépoli",
["Splat Dualies"] = "Double encreur",
["Enperry Splat Dualies"] = "Double encreur griffé",
["Kensa Splat Dualies"] = "Double encreur K",
["Hero Dualie Replicas"] = "D. encreur héroïque (réplique)",
["Order Dualie Replicas"] = "Arme double d'Ordre (réplique)",
["Glooga Dualies"] = "Double Kelvin 525",
["Glooga Dualies Deco"] = "Double Kelvin 525 chic",
["Kensa Glooga Dualies"] = "Double Kelvin 525 K",
["Dualie Squelchers"] = "Double nettoyeur",
["Custom Dualie Squelchers"] = "Double nettoyeur modifié",
["Dark Tetra Dualies"] = "Double voltigeur noir",
["Light Tetra Dualies"] = "Double voltigeur blanc",
["Douser Dualies FF"] = "Double ignifugeur",
["Custom Douser Dualies FF"] = "Double ignifugeur modifié",
--Rouleaux
["Splat Roller"] = "Rouleau",
["Krak-On Splat Roller"] = "Rouleau griffé",
["CoroCoro Splat Roller"] = "Rouleau CoroCoro",
["Kensa Splat Roller"] = "Rouleau K",
["Hero Roller Replica"] = "Rouleau héroïque (réplique)",
["Order Roller Replica"] = "Rouleau d'Ordre (réplique)",
["Carbon Roller"] = "Rouleau carbone",
["Carbon Roller Deco"] = "Rouleau carbone chic",
["Dynamo Roller"] = "Dynamo-rouleau",
["Gold Dynamo Roller"] = "Dynamo-rouleau tesla",
["Tempered Dynamo Roller"] = "Dynamo-rouleau trempé",
["Kensa Dynamo Roller"] = "Dynamo-rouleau K",
["Flingza Roller"] = "Flexi-rouleau",
["Foil Flingza Roller"] = "Flexi-rouleau alu",
["Big Swig Roller"] = "Rouleau large",
["Big Swig Roller Express"] = "Rouleau large Xpress",
--Pinceaux
["Inkbrush"] = "Épinceau",
["Inkbrush Nouveau"] = "Épinceau nuancé",
["Permanent Inkbrush"] = "Épinceau permanent",
["Octobrush"] = "Épinceau brosse",
["Octobrush Nouveau"] = "Épinceau brosse nuancé",
["Kensa Octobrush"] = "Épinceau brosse K",
["Herobrush Replica"] = "Épinceau héroïque (réplique)",
["Orderbrush Replica"] = "Pinceau d'Ordre (réplique)",
["Painbrush"] = "Épinceau écaïe",
["Painbrush Nouveau"] = "Épinceau écaïe nuancé",
--Fusils
["Splat Charger"] = "Concentraceur",
["Kelp Splat Charger"] = "Concentraceur W",
["Bento Splat Charger"] = "Concentraceur Bento",
["Firefin Splat Charger"] = "Concentraceur griffé",
["Kensa Charger"] = "Concentraceur K",
["Z+F Splat Charger"] = "Concentraceur E+F",
["Hero Charger Replica"] = "Conc. héroïque (réplique)",
["Order Charger Replica"] = "Fusil d'Ordre (réplique)",
["Splatterscope"] = "Concentraceur zoom",
["Kelp Splatterscope"] = "Concentraceur zoom W",
["Bento Splatterscope"] = "Concentraceur zoom Bento",
["Firefin Splatterscope"] = "Concentraceur zoom griffé",
["Kensa Splatterscope"] = "Concentraceur zoom K",
["Z+F Splatterscope"] = "Concentraceur zoom E+F",
["Squiffer"] = "Décap'express",
["Classic Squiffer"] = "Décap'express Alpha",
["New Squiffer"] = "Décap'express Bêta",
["Fresh Squiffer"] = "Décap'express Gamma",
["E-liter"] = "Extraceur",
["E-liter 3K"] = "Extraceur",
["Custom E-liter 3K"] = "Extraceur zoom modifié",
["E-liter 4K"] = "Extraceur +",
["Custom E-liter 4K"] = "Extraceur + modifié",
["E-liter Scope"] = "Extraceur zoom",
["E-liter 3K Scope"] = "Extraceur zoom",
["Custom E-liter 3K Scope"] = "Extraceur zoom modifié",
["E-liter 4K Scope"] = "Extraceur + zoom",
["Custom E-liter 4K Scope"] = "Extraceur + zoom modifié",
["Bamboozler 14"] = "Bimbambouk",
["Bamboozler 14 Mk I"] = "Bimbamboum Mk I",
["Bamboozler 14 Mk II"] = "Bimbamboum Mk II",
["Bamboozler 14 Mk III"] = "Bimbamboum Mk III",
["Goo Tuber"] = "Détubeur",
["Custom Goo Tuber"] = "Détubeur modifié",
["Snipewriter 5H"] = "Crayon X - 5H",
["Snipewriter 5B"] = "Crayon X - 5B",
--Seaux
["Slosher"] = "Seauceur",
["Slosher Deco"] = "Seauceur chic",
["Soda Slosher"] = "Seauceur Diabolo",
["Hero Slosher Replica"] = "Seauceur héroïque",
["Order Slosher Replica"] = "Seau d'Ordre ('éplique)",
["Tri-Slosher"] = "Dépoteur",
["Tri-Slosher Nouveau"] = "Dépoteur nuancé",
["Sloshing Machine"] = "Encrifugeur",
["Sloshing Machine Neo"] = "Encrifugeur Néo",
["Kensa Sloshing Machine"] = "Encrifugeur K",
["Bloblobber"] = "Bassineur",
["Bloblobber Deco"] = "Bassineur chic",
["Explosher"] = "Détoneur",
["Custom Explosher"] = "Détoneur modifié",
["Dread Wringer"] = "Seau S-Horreur",
["Dread Wringer D"] = "Seau S-Horreur Cétacé",
--Badigeonneurs
["Heavy Splatling"] = "Badigeonneur",
["Mini Splatling"] = "Badigeonneur XS",
["Zink Mini Splatling"] = "Badigeonneur XS griffé",
["Refurbished Mini Splatling"] = "Badigeonneur XS révisé",
["Kensa Mini Splatling"] = "Badigeonneur XS K",
["Heavy Splatling"] = "Badigeonneur",
["Heavy Splatling Deco"] = "Badigeonneur chic",
["Heavy Splatling Remix"] = "Badigeonneur Disco",
["Hero Splatling Replica"] = "Badigeon. héroïque (réplique)",
["Order Splatling Replica"] = "Badigeonneur d'Ordre (réplique)",
["Hydra Splatling"] = "Exteinteur",
["Custom Hydra Splatling"] = "Exteinteur modifié",
["Ballpoint Splatling"] = "Badigeonneur stylo",
["Ballpoint Splatling Nouveau"] = "Badigeonneur style nuancé",
["Nautilus"] = "Nautilus",
["Nautilus 47"] = "Nautilus 47",
["Nautilus 79"] = "Nautilus 79",
["Heavy Edit Splatling"] = "Correcteur",
["Heavy Edit Splatling Nouveau"] = "Correcteur nuancé",
--Para-encres
["Splat Brella"] = "Para-encre",
["Sorella Brella"] = "Para-encre Sorella",
["Hero Brella Replica"] = "Para-encre héroïque (réplique)",
["Order Brella Replica"] = "Para-encre d'Ordre (réplique)",
["Tenta Brella"] = "Para-encre XL",
["Tenta Sorella Brella"] = "Para-encre XL Sorella",
["Tenta Camo Brella"] = "Para-encre XL treillis",
["Undercover Brella"] = "Para-encre espion",
["Undercover Sorella Brella"] = "Para-encre espion Sorella",
["Kensa Undercover Brella"] = "Para-encre espion K",
["Recycled Brella 24 Mk I"] = "Para-encre Ré-gen 24 Mk I",
["Recycled Brella 24 Mk II"] = "Para-encre Ré-gen 24 Mk II",
--Transperceur
["Tri-Stringer"] = "Trisperceur",
["Inkline Tri-Stringer"] = "Trisperceur Abysma",
["Order Stringer Replica"] = "Transperceur d'Ordre (réplique)",
["REEF-LUX 450"] = "Coralux 450",
["REEF-LUX 450 Deco"] = "Coralux 450 griffé",
["Wellstring V"] = "Multisperceur V",
["Multisperceur V"] = "Multisperceur V modifié",
--Éclatana
["Splatana Wiper"] = "Éclatana Doto",
["Splatana Wiper Deco"] = "Éclatana Doto chic",
["Splatana Stamper"] = "Éclatana d'estampe",
["Splatana Stamper Nouveau"] = "Éclatana d'estampe nuancé",
["Order Splatana Replica"] = "Éclatana d'Ordre (réplique)",
["Mint Decavitator"] = "Sabrifrice menthe",
["Charcoal Decavitator"] = "Sabrifrice charbon",
--Armes rares
["Grizzco Blaster"] = "Blaster M. Ours SA",
["Grizzco Brella"] = "Para-encre M. Ours SA",
["Grizzco Charger"] = "Fusil M. Ours SA",
["Grizzco Slosher"] = "Seau M. Ours SA",
["Grizzco Stringer"] = "Transperceur M. Ours SA",
["Grizzco Splatana"] = "Éclatana M. Ours SA",
["Grizzco Dualies"] = "Arme double M. Ours SA",
["Grizzco Roller"] = "Rouleau M. Ours SA",
["Unarmed"] = "List des missions sans armes",
}


-- Local function for switch-like behavior to get full name
-- Local function for switch-like behavior to get full name
Ligne 21 : Ligne 347 :
-- Local function for switch-like behavior to get link
-- Local function for switch-like behavior to get link
local function getLink(name, gameShort)
local function getLink(name, gameShort)
-- If name starts with Bomb Rush
    -- Check if the name matches a translated sub weapon
if name:find("^Bomb Rush") then
    local translatedSubWeapon = subWeaponTranslations[name]
         return "Bomb Rush"
    if translatedSubWeapon then
end
         return translatedSubWeapon
    end


     local case_table = {
    -- Check if the name matches a translated special weapon
         ["Bomb Launcher"] = "Splat-Bomb Launcher",
     local translatedSpecialWeapon = specialWeaponTranslations[name]
        ["Smallfry"] = "Smallfry (character)|Smallfry",
    if translatedSpecialWeapon then
         ["Unarmed"] = "List of unarmed missions",
         return translatedSpecialWeapon
        ["?"] = gameShort == "S3" and "Salmon_Run_Next_Wave#Wildcard_rotation|Random" or "Salmon_Run#Wildcard_rotation|Random",
    end
        ["??"] = gameShort == "S3" and "Salmon_Run_Next_Wave#Wildcard_rotation|Random Rare" or "Salmon_Run#Rare_weapon-only_rotation|Random Rare"
 
     }
    -- Check if the name matches a translated main weapon
     return case_table[name] or name
    local translatedMainWeapon = mainWeaponTranslations[name]
    if translatedMainWeapon then
        return translatedMainWeapon
    end
 
    -- If name starts with Bomb Rush, return generic translation
    if name:find("^Bomb Rush") then
         return "Bombardement"
    end
 
     -- Default to returning the original name if no translation is found
     return name
end
end


Ligne 41 : Ligne 379 :


function p.main(frame)
function p.main(frame)
-- Extract args from frame
    -- Extract args from frame
     local parentArgs = frame:getParent().args
     local parentArgs = frame:getParent().args
     local icononly = parentArgs['icononly'] or parentArgs[4] == "icononly" or parentArgs[5] == "icononly" or false
     local icononly = parentArgs['icononly'] or parentArgs[4] == "icononly" or parentArgs[5] == "icononly" or false
Ligne 54 : Ligne 392 :
         icononly = icononly,
         icononly = icononly,
         size = size,
         size = size,
         variant = extractArg(parentArgs, 'var', nil, "")
         variant = extractArg(parentArgs, 'var', nil, ""),
        sub = extractArg(parentArgs, 'sub', nil, ""),
        special = extractArg(parentArgs, 'special', nil, "")
     }
     }


Ligne 64 : Ligne 404 :
     local gameShort = gameShortened.getGame(args.game)
     local gameShort = gameShortened.getGame(args.game)


     -- Construct the file name using getFullName()
    -- Get translated names if available
    local translatedSub = getLink(args.sub, gameShort)
    local translatedSpecial = getLink(args.special, gameShort)
    local translatedMain = getLink(args.name, gameShort)
 
     -- Construct the file name using getFullName() without translation
     local fileName = string.format("%s_Weapon_%s_%s%s.png", gameShort, args.category, getFullName(args.name), (args.variant and args.variant ~= "" and ("_" .. args.variant) or ""))
     local fileName = string.format("%s_Weapon_%s_%s%s.png", gameShort, args.category, getFullName(args.name), (args.variant and args.variant ~= "" and ("_" .. args.variant) or ""))


Ligne 71 : Ligne 416 :


     if not args.icononly then
     if not args.icononly then
         -- Add textual representation
         -- Add textual representation with translated main, sub, and special names
         output = output .. " [[" .. getLink(args.name, gameShort) .. "]]"
         output = output .. " [[" .. translatedMain .. "]]"
        if args.sub and args.sub ~= "" then
            output = output .. " [[" .. translatedSub .. "]]"
        end
        if args.special and args.special ~= "" then
            output = output .. " [[" .. translatedSpecial .. "]]"
        end
     end
     end



Dernière version du 23 juin 2024 à 12:47

Displays an inline weapon icon with a text link.

Usage

{{Weapon|<game>|<name>|<size>|<icononly>}}

Parameters

Parameter Type Status Description
game Unnamed Required The game that the ability belongs to. Must be one of the following:
  • S for Splatoon
  • S2 for Splatoon 2
  • S3 for Splatoon 3
category Unnamed Required The type of weapon. Must be one of the following:
  • Main
  • Sub
  • Special
name Unnamed Required The English name of the weapon.
  • For Bomb Rush, specify the bomb type after "Bomb Rush", with or without parentheses like Bomb Rush Burst Bomb or Bomb Rush (Burst Bomb).
  • For random weapons in Salmon Run, simply use a question mark: ? for the green random weapon and ?? for the yellow random weapon.
size Unnamed Optional The pixel width for the icon. The default size is 24.
icononly Unnamed Optional If present, the text label will be omitted.
var Named Optional If present, the variant name will be appended to the file name, to choose between different variants of the same weapon's icons.

Examples

Markup

* {{Weapon|S|Special|Bomb Rush}}
* {{Weapon|S|Special|Bomb Rush (Seeker)|48}}
* {{Weapon|S2|Main|Splattershot|icononly}}
* {{Weapon|S2|Main|Splattershot|48|icononly}}
* {{Weapon|S2|Main|?}}
* {{Weapon|S2|Main|??}}
* {{Weapon|S3|Main|?}}
* {{Weapon|S3|Main|??}}
* {{Weapon|S3|Main|Splattershot|icononly}}
* {{Weapon|S3|Main|Splattershot|48|icononly}}
* {{Weapon|S|Sub|Splat Bomb|icononly}}
* {{Weapon|S2|Sub|Splat Bomb|icononly}}
* {{Weapon|S3|Sub|Splat Bomb|icononly}}
* {{Weapon|S|Special|Bomb Rush Splat Bomb|icononly}}
* {{Weapon|S|Special|Killer Wail}} 
* {{Weapon|S3|Main|Hero Shot Replica|var=2D Current|icononly}}

Output


local p = {}
local gameShortened = require("Module:GameShortened")

-- Translation tables for sub, special, and main weapons
local subWeaponTranslations = {
    ["Sub weapons"] = "Armes secondaires",
    ["Sub weapon"] = "Arme secondaire",
    ["Splat Bomb"] = "Bombe splash",
    ["Suction Bomb"] = "Bombe gluante",
    ["Burst Bomb"] = "Bombe ballon",
    ["Seeker"] = "Traqueur",
    ["Curling Bomb"] = "Bombe curling",
    ["Autobomb"] = "Bombe robot",
    ["Ink Mine"] = "Mine",
    ["Disruptor"] = "Fiole toxique",
    ["Toxic Mist"] = "Brume toxique",
    ["Point Sensor"] = "Détecteur",
    ["Splash Wall"] = "Mur d'encre",
    ["Sprinkler"] = "Fontaine",
    ["Squid Beakon"] = "Balise de saut",
    ["Fizzy Bomb"] = "Bombe soda",
    ["Torpedo"] = "Bentorpille",
    ["Angle Shooter"] = "Ricocheur",
    ["Smallfry"] = "Salmioche (personnage)|Salmioche",
}

local specialWeaponTranslations = {
    ["Special weapons"] = "Armes spéciales",
    ["Special weapon"] = "Arme spéciale",
    ["Bomb Rush"] = "Bombardement",
    ["Bubbler"] = "Bouclier",
    ["Echolocator"] = "Sonar",
    ["Inkstrike"] = "Missile tornade",
    ["Inkzooka"] = "Lance-tornades",
    ["Killer Wail"] = "Haut-perceur",
    ["Kraken"] = "Kraken",
    ["Tenta Missiles"] = "Multi-missile",
    ["Sting Ray"] = "Pigmalance",
    ["Inkjet"] = "Chromo-jet",
    ["Splashdown"] = "Choc chromatique",
    ["Ink Armor"] = "Armure d'encre",
    ["Bomb Launcher"] = "Lance-bombes",
    ["Splat-Bomb Launcher"] = "Lance-bombes splash",
    ["Suction-Bomb Launcher"] = "Lance-bombes gluantes",
    ["Curling-Bomb Launcher"] = "Lance-bombes curling",
    ["Autobomb Launcher"] = "Lance-bombes robots",
    ["Burst-Bomb Launcher"] = "Lance-bombes ballons",
    ["Ink Storm"] = "Pluie d'encre",
    ["Baller"] = "Chromo-sphère",
    ["Bubble Blower"] = "Lance-bulles",
    ["Booyah Bomb"] = "Jolizator",
    ["Ultra Stamp"] = "Ultra-tamponneur",
    ["Trizooka"] = "Lance-rafales",
    ["Big Bubbler"] = "Super bouclier",
    ["Crab Tank"] = "Crabe d'assaut",
    ["Killer Wail 5.1"] = "Haut-perceur 5.1",
    ["Zipcaster"] = "Super Mollusque",
    ["Ink Vac"] = "Aspirencre",
    ["Triple Inkstrike"] = "Trimissile tornade",
    ["Tacticooler"] = "Districool",
    ["Wave Breaker"] = "Sonar paf",
    ["Reefslider"] = "Cavasquale",
    ["Kraken Royale"] = "Kraken royal",
    ["Super Chump"] = "Multi-leurres",
    ["Triple Splashdown"] = "Triple choc chromatique",
    ["Splattercolor Screen"] = "Barrière barbouillée",
    ["?"] = gameShort == "S3" and "Salmon_Run_Next_Wave#Rotation_Aléatoire|Aléatoire" or "Salmon_Run#Rotation_Aléatoire|Aléatoire",
    ["??"] = gameShort == "S3" and "Salmon_Run_Next_Wave#Rotation_Aléatoire|Spéciale" or "Salmon_Run#Rotation_spéciale_armes_de_m_ours|Spéciale"
}

local mainWeaponTranslations = {
["Main"] = "Principale",
["Sub"] = "Secondaire",
["Special"] = "Spéciale",

["Shooter"] = "Lanceur",
["Blaster"] = "Blaster",
["Roller"] = "Rouleau",
["Brush"] = "Pinceau",
["Charger"] = "Fusil",
["Slosher"] = "Seau",
["Splatling"] = "Badigeonneur",
["Dualie"] = "Arme double",
["Brella"] = "Para-encre",
["Stringer"] = "Transperceur",
["Splatana"] = "Éclatana",

--Lanceurs
["Splattershot Jr."] = "Liquidateur Jr.",
["Custom Splattershot Jr."] = "Liquidateur Sr.",
["Kensa Splattershot Jr."] = "Liquidateur Jr. K",
["Sploosh-o-matic"] = "Marqueur lourd",
["Neo Sploosh-o-matic"] = "Marqueur lourd Néo",
["Sploosh-o-matic 7"] = "Marqueur lourd 7",
["Splash-o-matic"] = "Marqueur léger",
["Neo Splash-o-matic"] = "Marqueur léger Néo",
["Aerospray"] = "Aérogun",
["Aerospray MG"] = "Aérogun",
["Aerospray RG"] = "Aérogun premium",
["Aerospray PG"] = "Aérogun select",
["Splattershot"] = "Liquidateur",
["Tentatek Splattershot"] = "Liquidateur griffé",
["Wasabi Splattershot"] = "Liquidateur Wasabi",
["Kensa Splattershot"] = "Liquidateur K",
["Hero Shot Replica"] = "Lanceur héroïque (réplique)",
["Octo Shot Replica"] = "Lanceur Octaling (réplique)",
["Order Shot Replica"] = "Lanceur d'Ordre (réplique)",
[".52 Gal"] = "Calibre 2000",
[".52 Gal Deco"] = "Calibre 2000 chic",
["Kensa .52 Gal"] = "Calibre 2000 K",
["N-ZAP"] = "N-ZAP",
["N-ZAP '85"] = "N-ZAP 85",
["N-ZAP '89"] = "N-ZAP 89",
["N-ZAP '83"] = "N-ZAP 83",
["Dual Squelcher"] = "Nettoyeur duo",
["Custom Dual Squelcher"] = "Nettoyeur duo modifié",
["Splattershot Pro"] = "Liquidateur pro",
["Forge Splattershot Pro"] = "Liquidateur pro griffé",
["Berry Splattershot Pro"] = "Liquidateur pro Framboise",
["Kensa Splattershot Pro"] = "Liquidateur pro K",
[".96 Gal"] = "Calibre 3000",
[".96 Gal Deco"] = "Calibre 3000 chic",
["Jet Squelcher"] = "Nettoyeur XL",
["Custom Jet Squelcher"] = "Nettoyeur XL modifié",
["Splattershot Nova"] = "Lanceur spatial",
["Annaki Splattershot Nova"] = "Lanceur spatial Aroz",

--Arroseurs
["L-3 Nozzlenose"] = "Arroseur léger",
["L-3 Nozzlenose D"] = "Arroseur léger Cétacé",
["Kensa L-3 Nozzlenose"] = "Arroseur léger K",
["H-3 Nozzlenose"] = "Arroseur lourd",
["H-3 Nozzlenose D"] = "Arroseur lourd Cétacé",
["Cherry H-3 Nozzlenose"] = "Arroseur lourd Cerise",
["Squeezer"] = "Compresseur",
["Foil Squeezer"] = "Compresseur alu",

--Blasters
["Blaster"] = "Éclablaster",
["Custom Blaster"] = "Éclablaster modifié",
["Hero Blaster Replica"] = "Blaster héroique (réplique)",
["Range Blaster"] = "Éclablaster XL",
["Custom Range Blaster"] = "Éclablaster XL griffé",
["Grim Range Blaster"] = "Éclablaster Nox",
["Luna Blaster"] = "Proxiblaster",
["Luna Blaster Neo"] = "Proxiblaster Néo",
["Kensa Luna Blaster"] = "Proxiblaster K",
["Order Blaster Replica"] = "Blaster d'Ordre (réplique)",
["Clash Blaster"] = "Rafablaster",
["Clash Blaster Neo"] = "Rafablaster Néo",
["Rapid Blaster"] = "Turboblaster",
["Rapid Blaster Deco"] = "Turboblaster chic",
["Kensa Rapid Blaster"] = "Turboblaster K",
["Rapid Blaster Pro"] = "Turboblaster pro",
["Rapid Blaster Pro Deco"] = "Turboblaster pro chic",
["S-BLAST '92"] = "S-Blaster '92",
["S-BLAST '91"] = "S-Blaster '91",

--Armes doubles
["Dapple Dualies"] = "Double moucheteur",
["Dapple Dualies Nouveau"] = "Double moucheteur nuancé",
["Clear Dapple Dualies"] = "Double moucheteur dépoli",
["Splat Dualies"] = "Double encreur",
["Enperry Splat Dualies"] = "Double encreur griffé",
["Kensa Splat Dualies"] = "Double encreur K",
["Hero Dualie Replicas"] = "D. encreur héroïque (réplique)",
["Order Dualie Replicas"] = "Arme double d'Ordre (réplique)",
["Glooga Dualies"] = "Double Kelvin 525",
["Glooga Dualies Deco"] = "Double Kelvin 525 chic",
["Kensa Glooga Dualies"] = "Double Kelvin 525 K",
["Dualie Squelchers"] = "Double nettoyeur",
["Custom Dualie Squelchers"] = "Double nettoyeur modifié",
["Dark Tetra Dualies"] = "Double voltigeur noir",
["Light Tetra Dualies"] = "Double voltigeur blanc",
["Douser Dualies FF"] = "Double ignifugeur",
["Custom Douser Dualies FF"] = "Double ignifugeur modifié",

--Rouleaux
["Splat Roller"] = "Rouleau",
["Krak-On Splat Roller"] = "Rouleau griffé",
["CoroCoro Splat Roller"] = "Rouleau CoroCoro",
["Kensa Splat Roller"] = "Rouleau K",
["Hero Roller Replica"] = "Rouleau héroïque (réplique)",
["Order Roller Replica"] = "Rouleau d'Ordre (réplique)",
["Carbon Roller"] = "Rouleau carbone",
["Carbon Roller Deco"] = "Rouleau carbone chic",
["Dynamo Roller"] = "Dynamo-rouleau",
["Gold Dynamo Roller"] = "Dynamo-rouleau tesla",
["Tempered Dynamo Roller"] = "Dynamo-rouleau trempé",
["Kensa Dynamo Roller"] = "Dynamo-rouleau K",
["Flingza Roller"] = "Flexi-rouleau",
["Foil Flingza Roller"] = "Flexi-rouleau alu",
["Big Swig Roller"] = "Rouleau large",
["Big Swig Roller Express"] = "Rouleau large Xpress",

--Pinceaux
["Inkbrush"] = "Épinceau",
["Inkbrush Nouveau"] = "Épinceau nuancé",
["Permanent Inkbrush"] = "Épinceau permanent",
["Octobrush"] = "Épinceau brosse",
["Octobrush Nouveau"] = "Épinceau brosse nuancé",
["Kensa Octobrush"] = "Épinceau brosse K",
["Herobrush Replica"] = "Épinceau héroïque (réplique)",
["Orderbrush Replica"] = "Pinceau d'Ordre (réplique)",
["Painbrush"] = "Épinceau écaïe",
["Painbrush Nouveau"] = "Épinceau écaïe nuancé",

--Fusils
["Splat Charger"] = "Concentraceur",
["Kelp Splat Charger"] = "Concentraceur W",
["Bento Splat Charger"] = "Concentraceur Bento",
["Firefin Splat Charger"] = "Concentraceur griffé",
["Kensa Charger"] = "Concentraceur K",
["Z+F Splat Charger"] = "Concentraceur E+F",
["Hero Charger Replica"] = "Conc. héroïque (réplique)",
["Order Charger Replica"] = "Fusil d'Ordre (réplique)",
["Splatterscope"] = "Concentraceur zoom",
["Kelp Splatterscope"] = "Concentraceur zoom W",
["Bento Splatterscope"] = "Concentraceur zoom Bento",
["Firefin Splatterscope"] = "Concentraceur zoom griffé",
["Kensa Splatterscope"] = "Concentraceur zoom K",
["Z+F Splatterscope"] = "Concentraceur zoom E+F",
["Squiffer"] = "Décap'express",
["Classic Squiffer"] = "Décap'express Alpha",
["New Squiffer"] = "Décap'express Bêta",
["Fresh Squiffer"] = "Décap'express Gamma",
["E-liter"] = "Extraceur",
["E-liter 3K"] = "Extraceur",
["Custom E-liter 3K"] = "Extraceur zoom modifié",
["E-liter 4K"] = "Extraceur +",
["Custom E-liter 4K"] = "Extraceur + modifié",
["E-liter Scope"] = "Extraceur zoom",
["E-liter 3K Scope"] = "Extraceur zoom",
["Custom E-liter 3K Scope"] = "Extraceur zoom modifié",
["E-liter 4K Scope"] = "Extraceur + zoom",
["Custom E-liter 4K Scope"] = "Extraceur + zoom modifié",
["Bamboozler 14"] = "Bimbambouk",
["Bamboozler 14 Mk I"] = "Bimbamboum Mk I",
["Bamboozler 14 Mk II"] = "Bimbamboum Mk II",
["Bamboozler 14 Mk III"] = "Bimbamboum Mk III",
["Goo Tuber"] = "Détubeur",
["Custom Goo Tuber"] = "Détubeur modifié",
["Snipewriter 5H"] = "Crayon X - 5H",
["Snipewriter 5B"] = "Crayon X - 5B",

--Seaux
["Slosher"] = "Seauceur",
["Slosher Deco"] = "Seauceur chic",
["Soda Slosher"] = "Seauceur Diabolo",
["Hero Slosher Replica"] = "Seauceur héroïque",
["Order Slosher Replica"] = "Seau d'Ordre ('éplique)",
["Tri-Slosher"] = "Dépoteur",
["Tri-Slosher Nouveau"] = "Dépoteur nuancé",
["Sloshing Machine"] = "Encrifugeur",
["Sloshing Machine Neo"] = "Encrifugeur Néo",
["Kensa Sloshing Machine"] = "Encrifugeur K",
["Bloblobber"] = "Bassineur",
["Bloblobber Deco"] = "Bassineur chic",
["Explosher"] = "Détoneur",
["Custom Explosher"] = "Détoneur modifié",
["Dread Wringer"] = "Seau S-Horreur",
["Dread Wringer D"] = "Seau S-Horreur Cétacé",

--Badigeonneurs
["Heavy Splatling"] = "Badigeonneur",
["Mini Splatling"] = "Badigeonneur XS",
["Zink Mini Splatling"] = "Badigeonneur XS griffé",
["Refurbished Mini Splatling"] = "Badigeonneur XS révisé",
["Kensa Mini Splatling"] = "Badigeonneur XS K",
["Heavy Splatling"] = "Badigeonneur",
["Heavy Splatling Deco"] = "Badigeonneur chic",
["Heavy Splatling Remix"] = "Badigeonneur Disco",
["Hero Splatling Replica"] = "Badigeon. héroïque (réplique)",
["Order Splatling Replica"] = "Badigeonneur d'Ordre (réplique)",
["Hydra Splatling"] = "Exteinteur",
["Custom Hydra Splatling"] = "Exteinteur modifié",
["Ballpoint Splatling"] = "Badigeonneur stylo",
["Ballpoint Splatling Nouveau"] = "Badigeonneur style nuancé",
["Nautilus"] = "Nautilus",
["Nautilus 47"] = "Nautilus 47",
["Nautilus 79"] = "Nautilus 79",
["Heavy Edit Splatling"] = "Correcteur",
["Heavy Edit Splatling Nouveau"] = "Correcteur nuancé",

--Para-encres
["Splat Brella"] = "Para-encre",
["Sorella Brella"] = "Para-encre Sorella",
["Hero Brella Replica"] = "Para-encre héroïque (réplique)",
["Order Brella Replica"] = "Para-encre d'Ordre (réplique)",
["Tenta Brella"] = "Para-encre XL",
["Tenta Sorella Brella"] = "Para-encre XL Sorella",
["Tenta Camo Brella"] = "Para-encre XL treillis",
["Undercover Brella"] = "Para-encre espion",
["Undercover Sorella Brella"] = "Para-encre espion Sorella",
["Kensa Undercover Brella"] = "Para-encre espion K",
["Recycled Brella 24 Mk I"] = "Para-encre Ré-gen 24 Mk I",
["Recycled Brella 24 Mk II"] = "Para-encre Ré-gen 24 Mk II",

--Transperceur
["Tri-Stringer"] = "Trisperceur",
["Inkline Tri-Stringer"] = "Trisperceur Abysma",
["Order Stringer Replica"] = "Transperceur d'Ordre (réplique)",
["REEF-LUX 450"] = "Coralux 450",
["REEF-LUX 450 Deco"] = "Coralux 450 griffé",
["Wellstring V"] = "Multisperceur V",
["Multisperceur V"] = "Multisperceur V modifié",

--Éclatana
["Splatana Wiper"] = "Éclatana Doto",
["Splatana Wiper Deco"] = "Éclatana Doto chic",
["Splatana Stamper"] = "Éclatana d'estampe",
["Splatana Stamper Nouveau"] = "Éclatana d'estampe nuancé",
["Order Splatana Replica"] = "Éclatana d'Ordre (réplique)",
["Mint Decavitator"] = "Sabrifrice menthe",
["Charcoal Decavitator"] = "Sabrifrice charbon",

--Armes rares
["Grizzco Blaster"] = "Blaster M. Ours SA",
["Grizzco Brella"] = "Para-encre M. Ours SA",
["Grizzco Charger"] = "Fusil M. Ours SA",
["Grizzco Slosher"] = "Seau M. Ours SA",
["Grizzco Stringer"] = "Transperceur M. Ours SA",
["Grizzco Splatana"] = "Éclatana M. Ours SA",
["Grizzco Dualies"] = "Arme double M. Ours SA",
["Grizzco Roller"] = "Rouleau M. Ours SA",

["Unarmed"] = "List des missions sans armes",
}

-- Local function for switch-like behavior to get full name
local function getFullName(name)
    local case_table = {
        ["Bomb Rush"] = "Bomb Rush Splat Bomb",
        ["Bomb Rush (Burst Bomb)"] = "Bomb Rush Burst Bomb",
        ["Bomb Rush (Splat Bomb)"] = "Bomb Rush Splat Bomb",
        ["Bomb Rush (Suction Bomb)"] = "Bomb Rush Suction Bomb",
        ["Bomb Rush (Seeker)"] = "Bomb Rush Seeker",
        ["Bomb Launcher"] = "Splat-Bomb Launcher",
        ["Hero Gear"] = "Hero Shot Level 1",
        ["?"] = "Random",
        ["??"] = "Random 2",
        ["Unknown"] = "Not Found"
    }
    return case_table[name] or name
end

-- Local function for switch-like behavior to get link
local function getLink(name, gameShort)
    -- Check if the name matches a translated sub weapon
    local translatedSubWeapon = subWeaponTranslations[name]
    if translatedSubWeapon then
        return translatedSubWeapon
    end

    -- Check if the name matches a translated special weapon
    local translatedSpecialWeapon = specialWeaponTranslations[name]
    if translatedSpecialWeapon then
        return translatedSpecialWeapon
    end

    -- Check if the name matches a translated main weapon
    local translatedMainWeapon = mainWeaponTranslations[name]
    if translatedMainWeapon then
        return translatedMainWeapon
    end

    -- If name starts with Bomb Rush, return generic translation
    if name:find("^Bomb Rush") then
        return "Bombardement"
    end

    -- Default to returning the original name if no translation is found
    return name
end

local function extractArg(args, namedKey, positionalIndex, defaultValue)
    return args[namedKey] or args[positionalIndex] or defaultValue
end

function p.main(frame)
    -- Extract args from frame
    local parentArgs = frame:getParent().args
    local icononly = parentArgs['icononly'] or parentArgs[4] == "icononly" or parentArgs[5] == "icononly" or false
    local size = parentArgs['size'] or 
                 (parentArgs[4] ~= "icononly" and parentArgs[4]) or 
                 (parentArgs[5] ~= "icononly" and parentArgs[5]) or "24"

    local args = {
        game = extractArg(parentArgs, 'game', 1, ""),
        category = extractArg(parentArgs, 'category', 2, ""),
        name = extractArg(parentArgs, 'name', 3, ""),
        icononly = icononly,
        size = size,
        variant = extractArg(parentArgs, 'var', nil, ""),
        sub = extractArg(parentArgs, 'sub', nil, ""),
        special = extractArg(parentArgs, 'special', nil, "")
    }

    return p.getWeapon(args)
end

-- Main function
function p.getWeapon(args)
    local gameShort = gameShortened.getGame(args.game)

    -- Get translated names if available
    local translatedSub = getLink(args.sub, gameShort)
    local translatedSpecial = getLink(args.special, gameShort)
    local translatedMain = getLink(args.name, gameShort)

    -- Construct the file name using getFullName() without translation
    local fileName = string.format("%s_Weapon_%s_%s%s.png", gameShort, args.category, getFullName(args.name), (args.variant and args.variant ~= "" and ("_" .. args.variant) or ""))

    -- Construct the output
    local output = string.format('[[File:%s|%spx|link=%s]]', fileName, args.size or 24, getLink(args.name, gameShort))

    if not args.icononly then
        -- Add textual representation with translated main, sub, and special names
        output = output .. " [[" .. translatedMain .. "]]"
        if args.sub and args.sub ~= "" then
            output = output .. " [[" .. translatedSub .. "]]"
        end
        if args.special and args.special ~= "" then
            output = output .. " [[" .. translatedSpecial .. "]]"
        end
    end

    return output
end

return p