Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
-----------------------------------
-- Global file for additional effects (damage)
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_hit_rate')
require('scripts/globals/spells/damage_spell')
-----------------------------------
xi = xi or {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
-----------------------------------
-- Global file for additional effects (Status Effects)
-----------------------------------
require('scripts/globals/combat/magic_hit_rate')
require('scripts/combat/magic_hit_rate')
-----------------------------------
xi = xi or {}
xi.combat = xi.combat or {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
-----------------------------------
-- Global file for mobskills that apply status effects.
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_hit_rate')
require('scripts/combat/magic_hit_rate')
-----------------------------------
xi = xi or {}
xi.combat = xi.combat or {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
xi = xi or {}
xi.combat = xi.combat or {}
xi.combat.abilityAoE = xi.combat.abilityAoE or {}
-----------------------------------

---Calculate ability AoE type and radius based on caster modifiers.
-- Calculate ability AoE type and radius based on caster modifiers.
-- Used in core.
---@param caster CBaseEntity
---@param ability CAbility
---@return [xi.aoeType, number]
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
xi = xi or {}
xi.combat = xi.combat or {}
xi.combat.magicAoE = xi.combat.magicAoE or {}
-----------------------------------

---Return total song radius after factoring String equipment bonus
---@param caster CBaseEntity
Expand Down Expand Up @@ -61,7 +62,8 @@ local calculateMobAoE = function(baseType, baseRadius)
return { baseType, baseRadius }
end

---Calculate spell AoE type and radius based on caster modifiers.
-- Calculate spell AoE type and radius based on caster modifiers.
-- Used in core.
---@param caster CBaseEntity
---@param spell CSpell
---@return [xi.magic.aoe, number]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
-----------------------------------
xi = xi or {}
xi.combat = xi.combat or {}
xi.combat.tp = xi.combat.tp or {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
-----------------------------------
-- Global file for magic based skills magic hit rate.
-----------------------------------
require('scripts/globals/combat/magic_burst')
-- NOTE: Remove dependency to magic burst by feeding if its a magic burst directly. Then move file to scripts/combat/basic.
-----------------------------------
xi = xi or {}
xi.combat = xi.combat or {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@

-- 4 - Add them all, and final operations/considerations.
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
-----------------------------------
xi = xi or {}
xi.combat = xi.combat or {}
xi.combat.physical = xi.combat.physical or {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
-----------------------------------
-- Global file for skillchain calculations.
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_hit_rate')
require('scripts/combat/magic_hit_rate')
require('scripts/globals/spells/damage_spell')
-----------------------------------
xi = xi or {}
Expand Down
2 changes: 0 additions & 2 deletions scripts/globals/ability.lua
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
-----------------------------------
-- ABILITIES
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
-----------------------------------
xi = xi or {}
xi.ability = xi.ability or {}
-----------------------------------
Expand Down
1 change: 0 additions & 1 deletion scripts/globals/additional_effects.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
-- This global is intended to handle additional effects from item sources of:
-- melee attacks, ranged attacks, auto-spikes
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/magic') -- For resist functions
require('scripts/globals/teleports') -- For warp weapon proc.
-----------------------------------
Expand Down
4 changes: 0 additions & 4 deletions scripts/globals/bluemagic.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
-- Blue Magic utilities
-- Used for Blue Magic spells.
-----------------------------------
require('scripts/globals/combat/physical_utilities')
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_burst')
require('scripts/globals/combat/magic_hit_rate')
require('scripts/globals/magic')
require('scripts/globals/mobskills')
require('scripts/globals/spells/damage_spell')
Expand Down
1 change: 0 additions & 1 deletion scripts/globals/job_utils/corsair.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
-----------------------------------
-- Corsair Job Utilities
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/spells/damage_spell')
-----------------------------------
xi = xi or {}
Expand Down
3 changes: 0 additions & 3 deletions scripts/globals/job_utils/dragoon.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@
-- Dragoon Job Utilities
-----------------------------------
require('scripts/globals/ability')
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_burst')
require('scripts/globals/combat/magic_hit_rate')
require('scripts/globals/spells/damage_spell')
require('scripts/globals/weaponskills')
-----------------------------------
Expand Down
2 changes: 0 additions & 2 deletions scripts/globals/job_utils/ninja.lua
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
-----------------------------------
-- Ninja Job Utilities
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
-----------------------------------
xi = xi or {}
xi.job_utils = xi.job_utils or {}
xi.job_utils.ninja = xi.job_utils.ninja or {}
Expand Down
3 changes: 0 additions & 3 deletions scripts/globals/job_utils/rune_fencer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@
-- Rune Fencer Job Utilities
-----------------------------------
require('scripts/globals/ability')
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_burst')
require('scripts/globals/combat/magic_hit_rate')
require('scripts/globals/spells/damage_spell')
require('scripts/globals/weaponskills')
-----------------------------------
Expand Down
1 change: 0 additions & 1 deletion scripts/globals/job_utils/summoner.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
-- Summoner Job Utilities
-----------------------------------
require('scripts/globals/ability')
require('scripts/globals/combat/tp')
-----------------------------------
xi = xi or {}
xi.job_utils = xi.job_utils or {}
Expand Down
4 changes: 2 additions & 2 deletions scripts/globals/magic.lua
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_hit_rate')
-----------------------------------
require('scripts/globals/spells/damage_spell')
-----------------------------------
xi = xi or {}
xi.magic = xi.magic or {}
-----------------------------------

-----------------------------------
-- getCurePower returns the caster's cure power
Expand Down
3 changes: 0 additions & 3 deletions scripts/globals/mobskills.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
-- What is known is that they roughly follow player Weaponskill calculations (pDIF, dMOD, ratio, etc) so this is what
-- this set of functions emulates.
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_burst')
require('scripts/globals/combat/magic_hit_rate')
require('scripts/globals/magic')
require('scripts/globals/spells/damage_spell')
-----------------------------------
Expand Down
2 changes: 0 additions & 2 deletions scripts/globals/spells/absorb_spell.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
-- Absorb Spell Utilities
-- Drain, Aspir, Absorb-TP, Absorb-STAT, Absorb-Attri
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_hit_rate')
require('scripts/globals/spells/damage_spell')
-----------------------------------
xi = xi or {}
Expand Down
4 changes: 0 additions & 4 deletions scripts/globals/spells/damage_spell.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
-- Damage Spell Utilities
-- Used for spells that deal direct damage. (Black, White, Dark and Ninjutsu)
-----------------------------------
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/combat/magic_burst')
require('scripts/globals/combat/magic_hit_rate')
-----------------------------------
xi = xi or {}
xi.spells = xi.spells or {}
xi.spells.damage = xi.spells.damage or {}
Expand Down
3 changes: 0 additions & 3 deletions scripts/globals/spells/enfeebling_song.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@
-- Enfeebling Song Utilities
-- Used for songs that deal negative status effects upon targets.
-----------------------------------
require('scripts/globals/combat/magic_burst')
require('scripts/globals/combat/magic_hit_rate')
-----------------------------------
xi = xi or {}
xi.spells = xi.spells or {}
xi.spells.enfeebling = xi.spells.enfeebling or {}
Expand Down
3 changes: 0 additions & 3 deletions scripts/globals/spells/enfeebling_spell.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@
-- Enfeebling Spell Utilities
-- Used for spells that deal negative status effects upon targets.
-----------------------------------
require('scripts/globals/combat/magic_burst')
require('scripts/globals/combat/magic_hit_rate')
-----------------------------------
xi = xi or {}
xi.spells = xi.spells or {}
xi.spells.enfeebling = xi.spells.enfeebling or {}
Expand Down
2 changes: 0 additions & 2 deletions scripts/globals/weaponskills.lua
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
-- performance of the actual WS (rand numbers, etc)
-----------------------------------
require('scripts/globals/ability')
require('scripts/globals/combat/physical_utilities')
require('scripts/globals/combat/damage_multipliers')
require('scripts/globals/magic')
require('scripts/globals/spells/damage_spell')
-----------------------------------
Expand Down
55 changes: 16 additions & 39 deletions src/map/lua/luautils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -382,53 +382,30 @@ void init(IPP mapIPP, bool isRunningInCI)
CLuaItem::Register();
CLuaItemPuppet::Register();

// Load global enums
for (const auto& entry : sorted_directory_iterator<std::filesystem::directory_iterator>("./scripts/enum"))
{
if (entry.extension() == ".lua")
{
const auto relative_path_string = entry.relative_path().generic_string();

ShowTrace("Loading enum script %s", relative_path_string);

const auto result = lua.safe_script_file(relative_path_string);
if (!result.valid())
{
const sol::error err = result;
ShowError(err.what());
}
}
}
// Load global scripts in the defined order. Directories are walked recursively.
// Already loaded files are skipped therefore it is safe to load childrens first (i.e. combat/basic/ before combat/)
const std::vector<std::string> globalScriptDirs{
"./scripts/enum",
"./scripts/utils",
"./scripts/data",
"./scripts/combat/basic",
"./scripts/combat",
};

// Load global utilities
for (const auto& entry : sorted_directory_iterator<std::filesystem::directory_iterator>("./scripts/utils"))
std::set<std::filesystem::path> loadedScripts;
for (const auto& dir : globalScriptDirs)
{
if (entry.extension() == ".lua")
for (const auto& entry : sorted_directory_iterator<std::filesystem::recursive_directory_iterator>(dir))
{
const auto relative_path_string = entry.relative_path().generic_string();

ShowTrace("Loading utility script %s", relative_path_string);

const auto result = lua.safe_script_file(relative_path_string);
if (!result.valid())
if (entry.extension() != ".lua" || !loadedScripts.insert(entry).second)
{
const sol::error err = result;
ShowError(err.what());
continue;
}
}
}

// Load global data
for (const auto& entry : sorted_directory_iterator<std::filesystem::directory_iterator>("./scripts/data"))
{
if (entry.extension() == ".lua")
{
const auto relative_path_string = entry.relative_path().generic_string();

ShowTrace("Loading data script %s", relative_path_string);

const auto result = lua.safe_script_file(relative_path_string);
if (!result.valid())
ShowTrace("Loading global script %s", relative_path_string);
if (const auto result = lua.safe_script_file(relative_path_string); !result.valid())
{
const sol::error err = result;
ShowError(err.what());
Expand Down