Skip to content

Commit 54c82bb

Browse files
committed
Khimaira Audit
Audits the HNM Khimaira
1 parent b89ca28 commit 54c82bb

10 files changed

Lines changed: 160 additions & 14 deletions

File tree

scripts/actions/mobskills/fossilizing_breath.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
-- Description: Petrifies targets within a fan-shaped area.
44
-- Type: Breath
55
-- Ignores Shadows
6-
-- Range: Unknown cone
6+
-- Range: 15.0 yalms
77
-----------------------------------
88
---@type TMobSkill
99
local mobskillObject = {}

scripts/actions/mobskills/fulmination.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action)
2727

2828
-- TODO: Capture power/durations
2929
xi.mobskills.mobStatusEffectMove(mob, target, xi.effect.PARALYSIS, 40, 0, 60)
30-
xi.mobskills.mobStatusEffectMove(mob, target, xi.effect.STUN, 1, 0, 4)
30+
xi.mobskills.mobStatusEffectMove(mob, target, xi.effect.STUN, 1, 0, math.random(6, 10))
3131
end
3232

3333
return info.damage
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-----------------------------------
2+
-- Khimaira Roar (Emote)
3+
-- Description: Khimaira roars at the sky.
4+
-----------------------------------
5+
---@type TMobSkill
6+
local mobskillObject = {}
7+
8+
mobskillObject.onMobSkillCheck = function(target, mob, skill)
9+
return 0
10+
end
11+
12+
mobskillObject.onMobWeaponSkill = function(mob, target, skill, action)
13+
skill:setMsg(xi.msg.basic.NONE)
14+
15+
return 0
16+
end
17+
18+
return mobskillObject

scripts/actions/mobskills/thunderstrike.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action)
2525
if xi.mobskills.processDamage(mob, target, skill, action, info) then
2626
target:takeDamage(info.damage, mob, info.attackType, info.damageType)
2727

28-
xi.mobskills.mobStatusEffectMove(mob, target, xi.effect.STUN, 1, 0, 4) -- TODO: Capture duration
28+
xi.mobskills.mobStatusEffectMove(mob, target, xi.effect.STUN, 1, 0, math.random(6, 10))
2929
end
3030

3131
return info.damage

scripts/enum/mob_skill.lua

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,6 +1065,16 @@ xi.mobSkill =
10651065

10661066
-- HUNDRED_FISTS = 2020,
10671067

1068+
TENEBROUS_MIST = 2022,
1069+
THUNDERSTRIKE = 2023,
1070+
TOURBILLION = 2024,
1071+
DREADSTORM = 2025,
1072+
FOSSILIZING_BREATH = 2026,
1073+
PLAGUE_SWIPE = 2027,
1074+
FULMINATION = 2028,
1075+
1076+
KHIMAIRA_ROAR = 2030,
1077+
10681078
DAZE = 2066,
10691079
KNOCKOUT = 2067,
10701080

scripts/zones/Caedarva_Mire/mobs/Khimaira.lua

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,102 @@ mixins =
1010
---@type TMobEntity
1111
local entity = {}
1212

13+
entity.spawnPoints =
14+
{
15+
{ x = 574.944, y = -20.250, z = 398.044 },
16+
{ x = 575.081, y = -20.212, z = 401.917 },
17+
{ x = 575.150, y = -20.193, z = 403.854 },
18+
{ x = 575.061, y = -20.024, z = 407.646 },
19+
{ x = 574.860, y = -19.789, z = 411.398 },
20+
{ x = 574.437, y = -19.764, z = 413.376 },
21+
{ x = 573.270, y = -19.806, z = 417.435 },
22+
{ x = 574.290, y = -19.406, z = 420.032 },
23+
{ x = 577.499, y = -18.565, z = 421.169 },
24+
{ x = 578.716, y = -18.258, z = 420.995 },
25+
{ x = 579.607, y = -18.103, z = 417.676 },
26+
{ x = 579.958, y = -18.266, z = 414.169 },
27+
{ x = 579.595, y = -18.665, z = 412.226 },
28+
{ x = 578.869, y = -19.463, z = 408.341 },
29+
{ x = 586.698, y = -17.777, z = 404.160 },
30+
{ x = 587.057, y = -17.693, z = 406.042 },
31+
{ x = 586.263, y = -17.534, z = 408.917 },
32+
{ x = 585.373, y = -17.456, z = 411.840 },
33+
{ x = 584.688, y = -17.619, z = 413.423 },
34+
{ x = 583.317, y = -17.946, z = 416.588 },
35+
{ x = 585.758, y = -17.501, z = 416.037 },
36+
{ x = 588.960, y = -16.903, z = 414.743 },
37+
{ x = 590.375, y = -16.657, z = 414.253 },
38+
{ x = 593.206, y = -16.164, z = 413.272 },
39+
{ x = 593.708, y = -16.131, z = 411.042 },
40+
{ x = 593.377, y = -16.228, z = 409.615 },
41+
{ x = 593.064, y = -16.349, z = 406.841 },
42+
{ x = 593.448, y = -16.318, z = 404.230 },
43+
{ x = 593.640, y = -16.302, z = 402.924 },
44+
{ x = 594.297, y = -16.220, z = 399.705 },
45+
{ x = 595.293, y = -16.128, z = 396.851 },
46+
{ x = 597.986, y = -15.990, z = 395.816 },
47+
{ x = 599.332, y = -15.921, z = 395.298 },
48+
{ x = 601.327, y = -15.944, z = 396.589 },
49+
{ x = 610.253, y = -15.740, z = 396.727 },
50+
{ x = 611.305, y = -15.711, z = 397.986 },
51+
{ x = 613.410, y = -15.652, z = 400.505 },
52+
{ x = 613.496, y = -15.615, z = 403.029 },
53+
{ x = 613.338, y = -15.598, z = 404.292 },
54+
{ x = 611.835, y = -15.628, z = 405.258 },
55+
{ x = 602.027, y = -15.916, z = 405.037 },
56+
{ x = 601.369, y = -15.900, z = 406.213 },
57+
{ x = 601.264, y = -15.800, z = 409.571 },
58+
{ x = 602.410, y = -15.722, z = 411.917 },
59+
{ x = 604.808, y = -15.665, z = 413.252 },
60+
{ x = 606.333, y = -15.641, z = 413.605 },
61+
{ x = 610.690, y = -15.612, z = 413.052 },
62+
{ x = 610.845, y = -15.621, z = 412.200 },
63+
{ x = 606.722, y = -15.664, z = 411.476 },
64+
{ x = 598.476, y = -15.750, z = 410.028 },
65+
}
66+
67+
entity.onMobInitialize = function(mob)
68+
xi.mob.updateNMSpawnPoint(mob)
69+
70+
mob:addImmunity(xi.immunity.PETRIFY)
71+
mob:addImmunity(xi.immunity.LIGHT_SLEEP)
72+
mob:addImmunity(xi.immunity.DARK_SLEEP)
73+
mob:addImmunity(xi.immunity.TERROR)
74+
mob:addImmunity(xi.immunity.PLAGUE)
75+
76+
mob:setMobMod(xi.mobMod.GIL_MIN, 30000)
77+
mob:setMobMod(xi.mobMod.GIL_MAX, 30000)
78+
end
79+
80+
entity.onMobRoam = function(mob)
81+
if mob:isFollowingPath() then
82+
return
83+
end
84+
85+
local currentTime = GetSystemTime()
86+
87+
if currentTime < mob:getLocalVar('roarTimer') then
88+
return
89+
end
90+
91+
mob:useMobAbility(xi.mobSkill.KHIMAIRA_ROAR)
92+
mob:setLocalVar('roarTimer', currentTime + math.random(150, 210))
93+
end
94+
1395
entity.onMobSpawn = function(mob)
1496
mob:setMobMod(xi.mobMod.NO_MOVE, 0)
1597
mob:setMobMod(xi.mobMod.AOE_HIT_ALL, 1)
98+
99+
mob:setMobMod(xi.mobMod.WEAPON_BONUS, 53) -- 140 total weapon damage.
100+
mob:setMod(xi.mod.ATT, 681) -- 740 total attack.
101+
mob:setMod(xi.mod.DEF, 520) -- 570 total defense.
102+
mob:setMod(xi.mod.STORETP, 80) -- 10 hits to 1000 TP.
103+
104+
mob:setMod(xi.mod.UDMGBREATH, -5000)
105+
mob:setMod(xi.mod.UDMGMAGIC, -2500)
106+
107+
mob:setMod(xi.mod.CURSE_MEVA, 1000)
108+
mob:setLocalVar('roarTimer', GetSystemTime() + math.random(150, 210))
16109
end
17110

18111
entity.onMobFight = function(mob, target)
@@ -51,6 +144,30 @@ entity.onMobFight = function(mob, target)
51144
end
52145
end
53146

147+
entity.onMobMobskillChoose = function(mob, target, skillId)
148+
local skillList =
149+
{
150+
xi.mobSkill.TENEBROUS_MIST,
151+
xi.mobSkill.THUNDERSTRIKE,
152+
xi.mobSkill.TOURBILLION,
153+
xi.mobSkill.DREADSTORM,
154+
}
155+
156+
if target:isInfront(mob, 128) then
157+
table.insert(skillList, xi.mobSkill.FOSSILIZING_BREATH)
158+
end
159+
160+
if target:isBehind(mob) then
161+
table.insert(skillList, xi.mobSkill.PLAGUE_SWIPE)
162+
end
163+
164+
if mob:getHPP() <= 37 then
165+
table.insert(skillList, xi.mobSkill.FULMINATION)
166+
end
167+
168+
return skillList[math.random(1, #skillList)]
169+
end
170+
54171
entity.onMobDisengage = function(mob)
55172
mob:setMobMod(xi.mobMod.NO_MOVE, 0)
56173
end
@@ -63,6 +180,7 @@ end
63180

64181
entity.onMobDespawn = function(mob)
65182
mob:setRespawnTime(math.random(48, 72) * 3600) -- 48 to 72 hours, in 1-hour increments
183+
xi.mob.updateNMSpawnPoint(mob)
66184
end
67185

68186
return entity

sql/mob_groups.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4581,7 +4581,7 @@ INSERT INTO `mob_groups` VALUES (55,3331,79,'Ravin_Raven',0,128,2078,0,0,0,NULL)
45814581
INSERT INTO `mob_groups` VALUES (56,2349,79,'Lamia_No27',0,128,0,0,0,0,NULL);
45824582
INSERT INTO `mob_groups` VALUES (57,2752,79,'Moshdahn',0,128,0,25000,0,0,NULL);
45834583
INSERT INTO `mob_groups` VALUES (58,3704,79,'Soulflayer',300,0,2030,0,0,0,NULL);
4584-
INSERT INTO `mob_groups` VALUES (59,2220,79,'Khimaira',0,128,1437,72000,0,0,NULL);
4584+
INSERT INTO `mob_groups` VALUES (59,2220,79,'Khimaira',0,128,1437,76000,0,0,NULL);
45854585
INSERT INTO `mob_groups` VALUES (60,4221,79,'Verdelet',0,128,2578,22000,0,0,NULL);
45864586
INSERT INTO `mob_groups` VALUES (61,4063,79,'Tyger',0,128,2508,48000,0,0,NULL);
45874587
INSERT INTO `mob_groups` VALUES (62,2489,79,'Mahjlaef_the_Paintorn',0,128,1576,37000,0,0,NULL);

sql/mob_pools.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2275,7 +2275,7 @@ INSERT INTO `mob_pools` VALUES (2216,'Khadem_Quemquoma','Khadem_Quemquoma',460,0
22752275
INSERT INTO `mob_pools` VALUES (2217,'Khalamari','Khalamari',325,0x0000100200000000000000000000000000000000,1,1,6,240,100,0,0,0,0,2,0,0,1,135,0,0,0,0,0,802,269,3,16);
22762276
INSERT INTO `mob_pools` VALUES (2218,'Khalkotaur','Khalkotaur',217,0x0000500500000000000000000000000000000000,1,2,1,240,100,0,1,1,0,2,0,0,0,133,0,0,0,0,0,922,240,2,13);
22772277
INSERT INTO `mob_pools` VALUES (2219,'Kharon','Kharon',416,0x0000DE0600000000000000000000000000000000,8,8,3,240,100,0,0,0,0,2,0,32,0,157,0,0,220,0,0,868,89,2,13);
2278-
INSERT INTO `mob_pools` VALUES (2220,'Khimaira','Khimaira',67,0x00000D0700000000000000000000000000000000,1,1,7,320,125,1024,1,1,0,2,6150,0,73,645,0,0,0,0,0,168,168,2,34);
2278+
INSERT INTO `mob_pools` VALUES (2220,'Khimaira','Khimaira',67,0x00000D0700000000000000000000000000000000,1,1,7,210,100,1024,1,1,0,2,6150,0,73,645,0,0,0,0,0,168,168,2,34);
22792279
INSERT INTO `mob_pools` VALUES (2221,'Khimaira_13','Khimaira_13',67,0x00000D0700000000000000000000000000000000,1,1,7,320,100,1024,1,1,0,16,6144,0,1,667,0,0,0,0,0,779,168,1,30);
22802280
INSERT INTO `mob_pools` VALUES (2222,'Khimaira_14X','Khimaira_14X',67,0x00000D0700000000000000000000000000000000,1,1,7,320,100,1024,1,1,0,0,6144,0,1,155,0,0,0,0,0,168,168,1,30);
22812281
INSERT INTO `mob_pools` VALUES (2223,'Khromasoul_Bhurborlor','Khromasoul_Bhurborlor',163,0x0000A80600000000000000000000000000000000,7,7,2,230,100,0,1,1,1,2,6144,32,1161,157,4,0,4,0,0,308,308,2,20);

sql/mob_resistances.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ INSERT INTO `mob_resistances` VALUES (164,'Hydra',0,0,0,-1250,0,0,0,0,0,0,0,0,0,
206206
INSERT INTO `mob_resistances` VALUES (165,'Imp',0,2500,0,0,0,0,0,0,0,0,0,0,0,-1,-1,2,-1,-1,-1,-2,6,-1,-1,2,-1,-1,-2,6,6);
207207
INSERT INTO `mob_resistances` VALUES (166,'Imp - Jakko',0,2500,0,0,0,0,0,0,0,0,0,0,0,-1,-1,2,-1,-1,-1,-2,6,-1,-1,2,-1,-1,-2,6,6);
208208
INSERT INTO `mob_resistances` VALUES (167,'Karakul',0,0,0,0,0,0,0,0,0,0,0,0,0,-1,1,-1,1,-2,-2,-1,-1,1,1,-1,1,-2,-1,-1,-1);
209-
INSERT INTO `mob_resistances` VALUES (168,'Khimaira',0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,5,4,6,1,4,1,1,1,5,4,1,4,1,1);
209+
INSERT INTO `mob_resistances` VALUES (168,'Khimaira',0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,8,7,9,5,7,5,1,1,5,4,1,4,1,1);
210210
INSERT INTO `mob_resistances` VALUES (169,'Kindred',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2,0,0,0,0,0,0,-2,0,0);
211211
INSERT INTO `mob_resistances` VALUES (170,'Ladybug',0,2500,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,4,4,4,0,0,0,0,4,4);
212212
INSERT INTO `mob_resistances` VALUES (171,'Lamiae',0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-2,-1,-1,-2,3,-2,2,-2,-2,-1,-1,3,-2,2,2);

sql/mob_skills.sql

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2050,15 +2050,15 @@ INSERT INTO `mob_skills` VALUES (2016,124,'dark_shot',0,0.0,22.0,2000,0,4,4,0,0,
20502050
-- INSERT INTO `mob_skills` VALUES (2019,1763,'.',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0);
20512051
-- INSERT INTO `mob_skills` VALUES (2020,436,'hundred_fists',0,0.0,7.0,2000,0,1,4,0,0,0,0,0);
20522052
INSERT INTO `mob_skills` VALUES (2021,438,'eraser',0,0.0,7.0,2000,0,16,4,0,0,0,0,0);
2053-
INSERT INTO `mob_skills` VALUES (2022,1367,'tenebrous_mist',1,0.0,13.0,2000,1500,4,0,0,0,0,0,0);
2054-
INSERT INTO `mob_skills` VALUES (2023,1368,'thunderstrike',1,0.0,13.0,2000,1500,4,0,0,0,0,0,0);
2055-
INSERT INTO `mob_skills` VALUES (2024,1371,'tourbillion',1,0.0,18.0,2000,1500,4,0,0,0,0,0,0);
2056-
INSERT INTO `mob_skills` VALUES (2025,1369,'dreadstorm',1,0.0,13.0,2000,1500,4,0,0,0,0,0,0);
2057-
INSERT INTO `mob_skills` VALUES (2026,1381,'fossilizing_breath',4,0.0,12.0,2000,1500,4,0,0,0,0,0,0);
2058-
INSERT INTO `mob_skills` VALUES (2027,1382,'plague_swipe',4,0.0,12.0,2000,1500,4,0,0,0,0,0,0);
2059-
INSERT INTO `mob_skills` VALUES (2028,1386,'fulmination',1,0.0,32.0,2000,3000,4,0,0,0,0,0,0);
2053+
INSERT INTO `mob_skills` VALUES (2022,1367,'tenebrous_mist',1,0.0,14.0,2000,1600,4,0,0,0,0,0,0);
2054+
INSERT INTO `mob_skills` VALUES (2023,1368,'thunderstrike',2,0.0,7.0,2000,1200,4,0,0,0,0,0,0);
2055+
INSERT INTO `mob_skills` VALUES (2024,1371,'tourbillion',2,10.0,14.0,2000,1600,4,0,0,0,0,0,0);
2056+
INSERT INTO `mob_skills` VALUES (2025,1369,'dreadstorm',1,0.0,10.0,2000,2000,4,0,0,0,0,0,0);
2057+
INSERT INTO `mob_skills` VALUES (2026,1381,'fossilizing_breath',4,0.0,15.0,2000,2400,4,0,0,0,0,0,0);
2058+
INSERT INTO `mob_skills` VALUES (2027,1382,'plague_swipe',2,0.0,7.0,2000,800,4,0,0,0,0,0,0);
2059+
INSERT INTO `mob_skills` VALUES (2028,1386,'fulmination',1,0.0,30.0,2000,3000,4,0,0,0,0,0,0);
20602060
-- INSERT INTO `mob_skills` VALUES (2029,1773,'.',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0);
2061-
-- INSERT INTO `mob_skills` VALUES (2030,1774,'.',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0);
2061+
INSERT INTO `mob_skills` VALUES (2030,1370,'khimaira_roar',0,0.0,7.0,2000,0,1,0,0,0,0,0,0);
20622062
INSERT INTO `mob_skills` VALUES (2031,433,'reactive_shield',0,0.0,7.0,2000,0,16,4,0,0,0,0,0);
20632063
INSERT INTO `mob_skills` VALUES (2032,1383,'roller_chain',1,0.0,10.0,2000,1500,4,0,0,0,0,0,0);
20642064
INSERT INTO `mob_skills` VALUES (2033,1384,'choke_chain',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0);

0 commit comments

Comments
 (0)