landsandboat/scripts/commands/godmode.lua
2026-02-20 18:42:33 -07:00

133 lines
5.1 KiB
Lua

-----------------------------------
-- func: godmode
-- desc: Toggles god mode on the player, granting them several special abilities.
-- Pass variable of 1 to command to enable a 'soft' god mode.
-----------------------------------
---@type TCommand
local commandObj = {}
commandObj.cmdprops =
{
permission = 1,
parameters = 'i'
}
local godModeOn = function(player)
-- Add bonus effects to the player..
player:addStatusEffect(xi.effect.MAX_HP_BOOST, { power = 1000, origin = player })
player:addStatusEffect(xi.effect.MAX_MP_BOOST, { power = 1000, origin = player })
player:addStatusEffect(xi.effect.MIGHTY_STRIKES, { power = 1, origin = player })
player:addStatusEffect(xi.effect.HUNDRED_FISTS, { power = 1, origin = player })
player:addStatusEffect(xi.effect.CHAINSPELL, { power = 1, origin = player })
player:addStatusEffect(xi.effect.PERFECT_DODGE, { power = 1, origin = player })
player:addStatusEffect(xi.effect.INVINCIBLE, { power = 1, origin = player })
player:addStatusEffect(xi.effect.ELEMENTAL_SFORZO, { power = 1, origin = player })
player:addStatusEffect(xi.effect.MANAFONT, { power = 1, origin = player })
player:addStatusEffect(xi.effect.REGAIN, { power = 300, origin = player })
player:addStatusEffect(xi.effect.REFRESH, { power = 99, origin = player })
player:addStatusEffect(xi.effect.REGEN, { power = 99, origin = player })
-- Add bonus mods to the player..
player:addMod(xi.mod.RACC, 2500)
player:addMod(xi.mod.RATT, 2500)
player:addMod(xi.mod.ACC, 2500)
player:addMod(xi.mod.ATT, 2500)
player:addMod(xi.mod.MATT, 2500)
player:addMod(xi.mod.MACC, 2500)
player:addMod(xi.mod.RDEF, 2500)
player:addMod(xi.mod.DEF, 2500)
player:addMod(xi.mod.MDEF, 2500)
-- Heal the player from the new buffs..
player:addHP(50000)
player:setMP(50000)
end
local godModeOff = function(player)
-- Remove bonus effects..
player:delStatusEffect(xi.effect.MAX_HP_BOOST)
player:delStatusEffect(xi.effect.MAX_MP_BOOST)
player:delStatusEffect(xi.effect.MIGHTY_STRIKES)
player:delStatusEffect(xi.effect.HUNDRED_FISTS)
player:delStatusEffect(xi.effect.CHAINSPELL)
player:delStatusEffect(xi.effect.PERFECT_DODGE)
player:delStatusEffect(xi.effect.INVINCIBLE)
player:delStatusEffect(xi.effect.ELEMENTAL_SFORZO)
player:delStatusEffect(xi.effect.MANAFONT)
player:delStatusEffect(xi.effect.REGAIN)
player:delStatusEffect(xi.effect.REFRESH)
player:delStatusEffect(xi.effect.REGEN)
-- Remove bonus mods..
player:delMod(xi.mod.RACC, 2500)
player:delMod(xi.mod.RATT, 2500)
player:delMod(xi.mod.ACC, 2500)
player:delMod(xi.mod.ATT, 2500)
player:delMod(xi.mod.MATT, 2500)
player:delMod(xi.mod.MACC, 2500)
player:delMod(xi.mod.RDEF, 2500)
player:delMod(xi.mod.DEF, 2500)
player:delMod(xi.mod.MDEF, 2500)
end
local godModeTierOneOn = function(player)
-- Add bonus effects to the player..
player:addStatusEffect(xi.effect.MAX_HP_BOOST, { power = 200, origin = player })
player:addStatusEffect(xi.effect.REGAIN, { power = 50, origin = player })
player:addStatusEffect(xi.effect.REFRESH, { power = 999, origin = player })
player:addStatusEffect(xi.effect.REGEN, { power = 999, origin = player })
player:addStatusEffect(xi.effect.CHAINSPELL, { power = 1, origin = player })
player:addStatusEffect(xi.effect.MANAFONT, { power = 1, origin = player })
-- Heal the player from the new buffs..
player:addHP(50000)
player:setMP(50000)
end
local godModeTierOneOff = function(player)
-- Remove bonus effects..
player:delStatusEffect(xi.effect.MAX_HP_BOOST)
player:delStatusEffect(xi.effect.REGAIN)
player:delStatusEffect(xi.effect.REFRESH)
player:delStatusEffect(xi.effect.REGEN)
player:delStatusEffect(xi.effect.CHAINSPELL)
player:delStatusEffect(xi.effect.MANAFONT)
end
commandObj.onTrigger = function(player, tier)
local mode = utils.clamp(tier or 0, 0, 2)
local state = player:getCharVar('GodMode')
if mode == 0 and state == 0 then
player:setCharVar('GodMode', 1)
godModeOn(player)
player:printToPlayer('God Mode enabled.')
elseif mode == 0 and state == 1 then
player:setCharVar('GodMode', 0)
godModeOff(player)
player:printToPlayer('God Mode disabled.')
elseif mode == 0 and state == 2 then
player:setCharVar('GodMode', 1)
godModeTierOneOff(player)
godModeOn(player)
player:printToPlayer('God Mode enabled.')
end
-- Enables a toned down version of god mode
if mode == 1 and state == 0 then
player:setCharVar('GodMode', 2)
godModeTierOneOn(player)
player:printToPlayer('God Mode Tier 1 enabled.')
elseif mode == 1 and state == 2 then
player:setCharVar('GodMode', 0)
godModeTierOneOff(player)
player:printToPlayer('God Mode Tier 1 disabled.')
elseif mode == 1 and state == 1 then
player:setCharVar('GodMode', 2)
godModeOff(player)
godModeTierOneOn(player)
player:printToPlayer('God Mode Tier 1 enabled.')
end
end
return commandObj