landsandboat/scripts/data/entity_correlation.lua
Xaver-DaRed 1218a14533 Implement ecosystem damage multipliers
Circle effects. Blue spell ecosystem properties, etc...
2026-07-05 00:59:26 +02:00

83 lines
5.5 KiB
Lua

-----------------------------------
-- Monster correlation system
-- https://wiki-ffo-jp.translate.goog/html/5472.html?_x_tr_sl=ja&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=sc
-----------------------------------
xi = xi or {}
xi.data = xi.data or {}
xi.data.entityCorrelation = xi.data.entityCorrelation or {}
local column =
{
STRONG_AGAINST = 1,
WEAK_AGAINST = 2,
KILLER_MOD = 3,
DAMAGE_MULTIPLIER_MOD = 4,
DAMAGE_REDUCTION_MOD = 5,
}
xi.data.entityCorrelation.dataTable =
{
-- Aquan > Amorph > Bird
[xi.ecosystem.AQUAN ] = { xi.ecosystem.AMORPH, xi.ecosystem.BIRD, xi.mod.AQUAN_KILLER, 0, 0 },
[xi.ecosystem.AMORPH ] = { xi.ecosystem.BIRD, xi.ecosystem.AQUAN, xi.mod.AMORPH_KILLER, 0, 0 },
[xi.ecosystem.BIRD ] = { xi.ecosystem.AQUAN, xi.ecosystem.AMORPH, xi.mod.BIRD_KILLER, 0, 0 },
-- Beast > Lizard > Vermin > Plantoid
[xi.ecosystem.BEAST ] = { xi.ecosystem.LIZARD, xi.ecosystem.PLANTOID, xi.mod.BEAST_KILLER, 0, 0 },
[xi.ecosystem.LIZARD ] = { xi.ecosystem.VERMIN, xi.ecosystem.BEAST, xi.mod.LIZARD_KILLER, 0, 0 },
[xi.ecosystem.VERMIN ] = { xi.ecosystem.PLANTOID, xi.ecosystem.LIZARD, xi.mod.VERMIN_KILLER, 0, 0 },
[xi.ecosystem.PLANTOID ] = { xi.ecosystem.BEAST, xi.ecosystem.VERMIN, xi.mod.PLANTOID_KILLER, 0, 0 },
-- Arcana <=> Undead
[xi.ecosystem.ARCANA ] = { xi.ecosystem.UNDEAD, xi.ecosystem.UNDEAD, xi.mod.ARCANA_KILLER, xi.mod.ARCANA_DMG_MULTIPLIER, xi.mod.ARCANA_RES_MULTIPLIER },
[xi.ecosystem.UNDEAD ] = { xi.ecosystem.ARCANA, xi.ecosystem.ARCANA, xi.mod.UNDEAD_KILLER, xi.mod.UNDEAD_DMG_MULTIPLIER, xi.mod.UNDEAD_RES_MULTIPLIER },
-- Demon <=> Dragon
[xi.ecosystem.DEMON ] = { xi.ecosystem.DRAGON, xi.ecosystem.DRAGON, xi.mod.DEMON_KILLER, xi.mod.DEMON_DMG_MULTIPLIER, xi.mod.DEMON_RES_MULTIPLIER },
[xi.ecosystem.DRAGON ] = { xi.ecosystem.DEMON, xi.ecosystem.DEMON, xi.mod.DRAGON_KILLER, xi.mod.DRAGON_DMG_MULTIPLIER, xi.mod.DRAGON_RES_MULTIPLIER },
-- Others.
[xi.ecosystem.UNCLASSIFIED ] = { nil, nil, 0, 0, 0 },
[xi.ecosystem.ARCHAIC_MACHINE] = { nil, nil, 0, 0, 0 },
[xi.ecosystem.BEASTMEN ] = { nil, nil, 0, 0, 0 },
[xi.ecosystem.ELEMENTAL ] = { nil, nil, 0, 0, 0 },
[xi.ecosystem.EMPTY ] = { nil, nil, xi.mod.EMPTY_KILLER, 0, 0 },
[xi.ecosystem.HUMANOID ] = { nil, nil, xi.mod.HUMANOID_KILLER, 0, 0 },
[xi.ecosystem.LUMINIAN ] = { nil, nil, xi.mod.LUMINIAN_KILLER, 0, 0 },
[xi.ecosystem.LUMINION ] = { nil, nil, xi.mod.LUMINION_KILLER, 0, 0 },
[xi.ecosystem.SUPREME_BEINGS ] = { nil, nil, 0, 0, 0 },
[xi.ecosystem.VORAGEAN ] = { nil, nil, 0, 0, 0 },
[xi.ecosystem.STRUCTURES ] = { nil, nil, 0, 0, 0 },
[xi.ecosystem.WEAPONS ] = { nil, nil, 0, 0, 0 },
}
xi.data.entityCorrelation.getEcosystemStrongAgainst = function(checkedEcosystem)
local ecosystem = xi.data.entityCorrelation.dataTable[checkedEcosystem][column.STRONG_AGAINST]
return ecosystem
end
xi.data.entityCorrelation.getEcosystemWeakAgainst = function(checkedEcosystem)
local ecosystem = xi.data.entityCorrelation.dataTable[checkedEcosystem][column.WEAK_AGAINST]
return ecosystem
end
xi.data.entityCorrelation.getEcosystemKillerMod = function(checkedEcosystem)
local modifier = xi.data.entityCorrelation.dataTable[checkedEcosystem][column.KILLER_MOD] or 0
return modifier
end
xi.data.entityCorrelation.getEcosystemDamageMultiplierMod = function(checkedEcosystem)
local modifier = xi.data.entityCorrelation.dataTable[checkedEcosystem][column.DAMAGE_MULTIPLIER_MOD] or 0
return modifier
end
xi.data.entityCorrelation.getEcosystemDamageReductionMod = function(checkedEcosystem)
local modifier = xi.data.entityCorrelation.dataTable[checkedEcosystem][column.DAMAGE_REDUCTION_MOD] or 0
return modifier
end