The Skillchain (Renkei) system is one of the most defining mechanics of FFXI combat. By coordinating Weapon Skills (WS) with party members or your Trust NPCs, you can trigger massive additional damage and open a window for Magic Bursts.
How to Use This Calculator
Every Weapon Skill in Vana'diel has one or more "attributes" or properties (like Liquefaction, Fusion, etc.). To create a Skillchain, you must use a WS that acts as an "Opener," followed by a WS that acts as a "Closer" within a short time window (usually 3-5 seconds after the first WS animation ends).
Select the primary property of your first weapon skill and the second weapon skill above to see if they link. If the combination is valid, the calculator will display the resulting effect and which elemental magic can burst on it.
Skillchain Levels Explained
Skillchains are categorized by levels, which determine the visual effect and the potential damage multiplier.
Level
Name
Magic Burst Elements
Level 1
Liquefaction, Impaction, Detonation, Scission, etc.
Single Element (e.g., Fire for Liquefaction)
Level 2
Fusion, Fragmentation, Distortion, Gravitation
Two Elements (e.g., Fire & Light for Fusion)
Level 3
Light, Darkness
Four Elements
Level 4
Double Light, Double Darkness
Four Elements (Higher Dmg)
Common Combinations Cheat Sheet
Distortion (Lv2): Transfixion → Scission
Fusion (Lv2): Liquefaction → Impaction
Fragmentation (Lv2): Induration → Reverberation
Gravitation (Lv2): Detonation → Compression
Light (Lv3): Fusion → Fragmentation
Darkness (Lv3): Fragmentation → Gravitation
Magic Bursting
Once a Skillchain occurs, a "Magic Burst" window opens. Mages must cast a spell of the matching element during this window. Use the calculator above to ensure your Black Mage or Scholar knows exactly which element to cast (e.g., if the result is Fusion, cast Fire or Light).
function calculateSkillchain() {
var opener = document.getElementById('openerProp').value;
var closer = document.getElementById('closerProp').value;
var resultContainer = document.getElementById('result-container');
var resName = document.getElementById('resName');
var resLevel = document.getElementById('resLevel');
var resElements = document.getElementById('resElements');
// Clear previous results
resElements.innerHTML = ";
resName.innerText = '-';
resLevel.innerText = '-';
if (!opener || !closer) {
resultContainer.style.display = 'block';
resName.innerText = "Please select both properties.";
resLevel.innerText = "N/A";
return;
}
// SC Logic Map
// Key format: Opener_Closer
var scMap = {
// Level 1 -> Level 2
"Transfixion_Scission": "Distortion",
"Scission_Liquefaction": "Liquefaction", // L1 Result
"Liquefaction_Impaction": "Fusion",
"Impaction_Detonation": "Detonation", // L1 Result
"Detonation_Compression": "Gravitation",
"Compression_Transfixion": "Transfixion", // L1 Result
"Induration_Reverberation": "Fragmentation",
"Reverberation_Induration": "Induration", // L1 Result
// Level 2 -> Level 3
"Gravitation_Distortion": "Darkness",
"Distortion_Fusion": "Light",
"Fusion_Fragmentation": "Light",
"Fragmentation_Gravitation": "Darkness",
// Level 2 -> Level 2 (Specific circular paths or self-chains often fail or revert,
// but standard chart implies L2->L3 is the goal. Some L2->L2 exist in specific contexts
// but for standard calculation we prioritize the L3 upgrades.)
// Level 3 -> Level 4 (Ultimate Weapons)
"Light_Light": "Double Light",
"Darkness_Darkness": "Double Darkness"
};
// Specific handling for complex L1 interactions that don't make L2
// Standard priority list for L1->L1:
// Liquefaction > Impaction = Fusion
// Induration > Reverberation = Fragmentation
// Detonation > Compression = Gravitation
// Transfixion > Scission = Distortion
// Scission > Liquefaction = Liquefaction
// Impaction > Detonation = Detonation
// Compression > Transfixion = Transfixion
// Reverberation > Induration = Induration
// Let's check the map
var resultSC = scMap[opener + "_" + closer];
// If no direct map found, check generic property priorities for L2/L3 interactions
// that might not be explicitly listed above but follow the logic rules.
if (!resultSC) {
// Generic Logic for L2/L3 openers
if (opener === "Light" && closer === "Light") resultSC = "Double Light";
if (opener === "Darkness" && closer === "Darkness") resultSC = "Double Darkness";
// L2 + L2 Logic (if not in map)
if (opener === "Fusion" && closer === "Fragmentation") resultSC = "Light"; // Already in map
if (opener === "Fragmentation" && closer === "Gravitation") resultSC = "Darkness"; // Already in map
}
if (!resultSC) {
resName.innerText = "No Skillchain";
resLevel.innerText = "None";
resultContainer.style.display = 'block';
resultContainer.style.borderLeftColor = "#e74c3c";
return;
}
// Determine Level and Elements based on Result Name
var scData = getSCData(resultSC);
// Display Results
resultContainer.style.display = 'block';
resName.innerText = resultSC;
resLevel.innerText = scData.level;
// Color coding border based on element
var colorMap = {
"Fire": "#e74c3c", "Ice": "#3498db", "Wind": "#2ecc71", "Earth": "#e67e22",
"Thunder": "#9b59b6", "Water": "#34495e", "Light": "#f1c40f", "Dark": "#2c3e50"
};
// Use first element color for border
if(scData.elements.length > 0) {
resultContainer.style.borderLeftColor = colorMap[scData.elements[0]] || "#bdc3c7";
}
// Render Badges
for (var i = 0; i < scData.elements.length; i++) {
var el = scData.elements[i];
var badge = document.createElement('div');
badge.className = 'element-badge el-' + el;
badge.innerText = el;
resElements.appendChild(badge);
}
}
function getSCData(scName) {
var data = { level: "", elements: [] };
switch(scName) {
// Level 1
case "Liquefaction":
data.level = "Level 1";
data.elements = ["Fire"];
break;
case "Impaction":
data.level = "Level 1";
data.elements = ["Thunder"];
break;
case "Detonation":
data.level = "Level 1";
data.elements = ["Wind"];
break;
case "Scission":
data.level = "Level 1";
data.elements = ["Earth"];
break;
case "Reverberation":
data.level = "Level 1";
data.elements = ["Water"];
break;
case "Induration":
data.level = "Level 1";
data.elements = ["Ice"];
break;
case "Transfixion":
data.level = "Level 1";
data.elements = ["Light"];
break;
case "Compression":
data.level = "Level 1";
data.elements = ["Dark"];
break;
// Level 2
case "Fusion":
data.level = "Level 2";
data.elements = ["Fire", "Light"];
break;
case "Fragmentation":
data.level = "Level 2";
data.elements = ["Wind", "Thunder"];
break;
case "Distortion":
data.level = "Level 2";
data.elements = ["Ice", "Water"];
break;
case "Gravitation":
data.level = "Level 2";
data.elements = ["Dark", "Earth"];
break;
// Level 3
case "Light":
data.level = "Level 3";
data.elements = ["Fire", "Wind", "Thunder", "Light"];
break;
case "Darkness":
data.level = "Level 3";
data.elements = ["Earth", "Water", "Ice", "Dark"];
break;
// Level 4
case "Double Light":
data.level = "Level 4 (Radiance)";
data.elements = ["Fire", "Wind", "Thunder", "Light"];
break;
case "Double Darkness":
data.level = "Level 4 (Umbra)";
data.elements = ["Earth", "Water", "Ice", "Dark"];
break;
}
return data;
}