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
2 changes: 1 addition & 1 deletion scripts/actions/mobskills/tackle.lua
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action)

params.baseDamage = mob:getWeaponDmg()
params.numHits = 1
params.fTP = { 2.7, 2.7, 2.7 } -- TODO: Capture fTPs
params.fTP = { 1.5, 1.5, 1.5 } -- TODO: Capture fTPs
params.attackType = xi.attackType.PHYSICAL
params.damageType = xi.damageType.BLUNT
params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1
Expand Down
13 changes: 11 additions & 2 deletions scripts/enum/mob_skill.lua
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,13 @@ xi.mobSkill =
HEALING_BREEZE = 287,

ENTANGLE_DRAIN = 299,

HEAD_BUTT_1 = 300,
DREAM_FLOWER_1 = 301,
WILD_OATS_1 = 302,
-- HUNDRED_FISTS = 303,

PHOTOSYNTHESIS_1 = 304,
LEAF_DAGGER_1 = 305,
SCREAM_1 = 306,
SUBSTITUTE = 307,
FROGKICK_1 = 308,
SPORE_1 = 309,
Expand All @@ -193,7 +197,12 @@ xi.mobSkill =
LEAFSTORM = 331,
ENTANGLE = 332,

POWER_ATTACK_1 = 338,
HI_FREQ_FIELD_1 = 339,
RHINO_ATTACK_1 = 340,
RHINO_GUARD_1 = 341,
VULCANIAN_IMPACT_1 = 342, -- COP Bombs
SPOIL_1 = 343,

VELOCIOUS_BLADE = 347, -- Mammet-800

Expand Down
116 changes: 0 additions & 116 deletions scripts/mixins/families/maat.lua

This file was deleted.

2 changes: 1 addition & 1 deletion scripts/zones/Chamber_of_Oracles/IDs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ zones[xi.zone.CHAMBER_OF_ORACLES] =
mob =
{
CENTURIO_V_III = GetFirstID('Centurio_V-III'),
MAAT = GetFirstID('Maat'),
MAAT = GetFirstID('Maat_sam'),
NANAA_MIHGO = GetFirstID('Nanaa_Mihgo'),
SECUTOR_XI_XXXII = GetFirstID('Secutor_XI-XXXII'),
},
Expand Down
21 changes: 0 additions & 21 deletions scripts/zones/Chamber_of_Oracles/mobs/Maat.lua

This file was deleted.

182 changes: 182 additions & 0 deletions scripts/zones/Chamber_of_Oracles/mobs/Maat_drg.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
-----------------------------------
-- Area: Chamber of Oracles
-- Mob: Maat (Dragoon)
-- Genkai 5 Fight
-----------------------------------
local ID = zones[xi.zone.CHAMBER_OF_ORACLES]
-----------------------------------
---@type TMobEntity
local entity = {}

local function tauntPlayer(player, mob)
mob:messageText(mob, ID.text.YOU_DECIDED_TO_SHOW_UP)
mob:setLocalVar('initialTaunt', 1)
end

entity.onMobInitialize = function(mob)
xi.pet.setMobPet(mob, 1, 'Maats_Wyvern')

mob:addListener('TAKE_DAMAGE', 'MAAT_TAKE_DAMAGE', function(mobArg, damage, attacker, attackType, damageType)
if damage >= 250 then
mobArg:messageText(mobArg, ID.text.THAT_LL_HURT_IN_THE_MORNING)
end

if damage >= 500 then
mobArg:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 200)
end
end)
end

entity.onMobSpawn = function(mob)
mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 150)
mob:setUnkillable(true)
mob:setBaseSpeed(60)

-- Reset mob.
xi.combat.behavior.enableAllActions(mob)
mob:setLocalVar('[2hour]HPP', math.random(75, 80))
mob:setLocalVar('[2hour]Used', 0)
mob:setLocalVar('initialTaunt', 0)
mob:setLocalVar('enrageTime', 0)
mob:setLocalVar('alreadyEnraged', 0)
end

entity.onMobRoam = function(mob)
if mob:getLocalVar('initialTaunt') == 1 then
return
end

local battlefield = mob:getBattlefield()
if not battlefield then
return
end

local players = battlefield:getPlayers()
if not players[1] then
return
end

if players[1]:checkDistance(mob) >= 8 then
return
end

tauntPlayer(players[1], mob)
end

entity.onMobEngage = function(mob, target)
mob:setLocalVar('enrageTime', GetSystemTime() + 300)

if mob:getLocalVar('initialTaunt') == 1 then
return
end

tauntPlayer(target, mob)
end

entity.onMobFight = function(mob, target)
-- Early return: No battlefield.
local battlefield = mob:getBattlefield()
if not battlefield then
return
end

-- Early return: No player.
local players = battlefield:getPlayers()
if not players[1] then
return
end

-- Early return: Battle is over.
if battlefield:getStatus() == xi.battlefield.status.WON then
return
end

-- Win condition.
local petId = mob:getID() + 1
local pet = GetMobByID(petId)
local mobHPP = mob:getHPP()

if
mobHPP < 20 and
players[1]:isAlive()
then
xi.combat.behavior.disableAllActions(mob)
xi.combat.behavior.disableAllActions(pet)
mob:showText(mob, ID.text.YOUVE_COME_A_LONG_WAY)
players[1]:addTitle(xi.title.MAAT_MASHER)
players[1]:disengage()
battlefield:win()
return
end

-- Early return: Mob is busy.
if xi.combat.behavior.isEntityBusy(mob) then
return
end

-- 2 Hour.
if
mob:getLocalVar('[2hour]Used') == 0 and
mobHPP < mob:getLocalVar('[2hour]HPP')
then
mob:setLocalVar('[2hour]Used', 1)
mob:useMobAbility(xi.mobSkill.CALL_WYVERN_MAAT)
return
end

-- Midfight rage.
if
mob:getLocalVar('alreadyEnraged') == 0 and
GetSystemTime() >= mob:getLocalVar('enrageTime')
then
mob:setLocalVar('alreadyEnraged', 1)
mob:showText(mob, ID.text.LOOKS_LIKE_YOU_WERENT_READY)
mob:setMod(xi.mod.REGAIN, 3000)
end
end

entity.onMobMobskillChoose = function(mob, target, skillId)
if mob:getLocalVar('alreadyEnraged') == 1 then
return xi.mobSkill.ASURAN_FISTS_MAAT
end

local tpTable =
{
xi.mobSkill.COMBO_MAAT,
xi.mobSkill.TACKLE_MAAT,
xi.mobSkill.ONE_ILM_PUNCH_MAAT,
xi.mobSkill.BACKHAND_BLOW_MAAT,
xi.mobSkill.SPINNING_ATTACK_MAAT,
xi.mobSkill.HOWLING_FIST_MAAT,
xi.mobSkill.DRAGON_KICK_MAAT,
}

return tpTable[math.random(1, #tpTable)]
end

entity.onMobWeaponSkill = function(mob, target, skill, action)
if skill:getID() == xi.mobSkill.CALL_WYVERN_MAAT then
mob:showText(mob, ID.text.NOW_THAT_IM_WARMED_UP)
return
end

if mob:getLocalVar('alreadyEnraged') == 1 then
return
end

local messageTable =
{
[1] = ID.text.TEACH_YOU_TO_RESPECT_ELDERS,
[2] = ID.text.TAKE_THAT_YOU_WHIPPERSNAPPER,
}

mob:showText(mob, messageTable[math.random(1, #messageTable)])
end

entity.onMobDisengage = function(mob)
if mob:getLocalVar('alreadyEnraged') == 0 then
mob:showText(mob, ID.text.LOOKS_LIKE_YOU_WERENT_READY)
end
end

return entity
Loading
Loading