mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
filled out abilities table (todo: range needs correcting)
- changed target find stuff to use windower's (need to check it actually works..)
This commit is contained in:
parent
ebd295bfa4
commit
86bf0eec81
@ -1844,8 +1844,8 @@ namespace FFXIVClassic_Map_Server
|
|||||||
{
|
{
|
||||||
conn.Open();
|
conn.Open();
|
||||||
|
|
||||||
var query = ("SELECT `id`, name, classJob, lvl, requirements, validTarget, aoeTarget, aoeType, `range`, characterFind, statusDuration, " +
|
var query = ("SELECT `id`, name, classJob, lvl, requirements, validTarget, aoeType, numHits, positionBonus, procRequirement, `range`, buffDuration, debuffDuration, " +
|
||||||
"castTime, recastTime, mpCost, tpCost, animationType, effectAnimation, modelAnimation, animationDuration, positionBonus, procRequirement FROM abilities;");
|
"castType, castTime, recastTime, mpCost, tpCost, animationType, effectAnimation, modelAnimation, animationDuration FROM abilities;");
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(query, conn);
|
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||||
|
|
||||||
@ -1860,22 +1860,23 @@ namespace FFXIVClassic_Map_Server
|
|||||||
ability.job = reader.GetByte(2);
|
ability.job = reader.GetByte(2);
|
||||||
ability.level = reader.GetByte(3);
|
ability.level = reader.GetByte(3);
|
||||||
ability.requirements = (AbilityRequirements)reader.GetUInt16(4);
|
ability.requirements = (AbilityRequirements)reader.GetUInt16(4);
|
||||||
ability.validTarget = (TargetFindFlags)reader.GetByte(5);
|
ability.validTarget = (ValidTarget)reader.GetByte(5);
|
||||||
ability.aoeTarget = (TargetFindAOETarget)reader.GetByte(6);
|
ability.aoeType = (TargetFindAOEType)reader.GetByte(6);
|
||||||
ability.aoeType = (TargetFindAOEType)reader.GetByte(7);
|
ability.numHits = reader.GetByte(7);
|
||||||
ability.range = reader.GetInt32(8);
|
ability.positionBonus = (AbilityPositionBonus)reader.GetByte(8);
|
||||||
ability.characterFind = (TargetFindCharacterType)reader.GetByte(9);
|
ability.procRequirement = (AbilityProcRequirement)reader.GetByte(9);
|
||||||
ability.statusDurationSeconds = reader.GetUInt32(10);
|
ability.range = reader.GetInt32(10);
|
||||||
ability.castTimeSeconds = reader.GetUInt32(11);
|
ability.debuffDurationSeconds = reader.GetUInt32(11);
|
||||||
ability.recastTimeSeconds = reader.GetUInt32(12);
|
ability.buffDurationSeconds = reader.GetUInt32(12);
|
||||||
ability.mpCost = reader.GetUInt16(13);
|
ability.castType = reader.GetByte(13);
|
||||||
ability.tpCost = reader.GetUInt16(14);
|
ability.castTimeSeconds = reader.GetUInt32(14);
|
||||||
ability.animationType = reader.GetByte(15);
|
ability.recastTimeSeconds = reader.GetUInt32(15);
|
||||||
ability.effectAnimation = reader.GetUInt16(16);
|
ability.mpCost = reader.GetUInt16(16);
|
||||||
ability.modelAnimation = reader.GetUInt16(17);
|
ability.tpCost = reader.GetUInt16(17);
|
||||||
ability.animationDurationSeconds = reader.GetUInt16(18);
|
ability.animationType = reader.GetByte(18);
|
||||||
ability.positionBonus = (AbilityPositionBonus)reader.GetByte(19);
|
ability.effectAnimation = reader.GetUInt16(19);
|
||||||
ability.procRequirement = (AbilityProcRequirement)reader.GetByte(20);
|
ability.modelAnimation = reader.GetUInt16(20);
|
||||||
|
ability.animationDurationSeconds = reader.GetUInt16(21);
|
||||||
|
|
||||||
abilities.Add(id, ability);
|
abilities.Add(id, ability);
|
||||||
}
|
}
|
||||||
|
@ -47,12 +47,15 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
public byte job;
|
public byte job;
|
||||||
public byte level;
|
public byte level;
|
||||||
public AbilityRequirements requirements;
|
public AbilityRequirements requirements;
|
||||||
public TargetFindFlags validTarget;
|
public ValidTarget validTarget;
|
||||||
public TargetFindAOETarget aoeTarget;
|
|
||||||
public TargetFindAOEType aoeType;
|
public TargetFindAOEType aoeType;
|
||||||
|
public byte numHits;
|
||||||
|
public AbilityPositionBonus positionBonus;
|
||||||
|
public AbilityProcRequirement procRequirement;
|
||||||
public int range;
|
public int range;
|
||||||
public TargetFindCharacterType characterFind;
|
public uint debuffDurationSeconds;
|
||||||
public uint statusDurationSeconds;
|
public uint buffDurationSeconds;
|
||||||
|
public byte castType;
|
||||||
public uint castTimeSeconds;
|
public uint castTimeSeconds;
|
||||||
public uint recastTimeSeconds;
|
public uint recastTimeSeconds;
|
||||||
public ushort mpCost;
|
public ushort mpCost;
|
||||||
@ -62,8 +65,6 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
public ushort modelAnimation;
|
public ushort modelAnimation;
|
||||||
public ushort animationDurationSeconds;
|
public ushort animationDurationSeconds;
|
||||||
|
|
||||||
public AbilityPositionBonus positionBonus;
|
|
||||||
public AbilityProcRequirement procRequirement;
|
|
||||||
|
|
||||||
public TargetFind targetFind;
|
public TargetFind targetFind;
|
||||||
|
|
||||||
@ -93,7 +94,15 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
{
|
{
|
||||||
// todo: set box length..
|
// todo: set box length..
|
||||||
targetFind = new TargetFind(user);
|
targetFind = new TargetFind(user);
|
||||||
targetFind.SetAOEType(aoeTarget, aoeType, aoeType == TargetFindAOEType.Box ? range / 2 : range, 40);
|
if (aoeType == TargetFindAOEType.Box)
|
||||||
|
{
|
||||||
|
// todo: read box width from sql
|
||||||
|
targetFind.SetAOEBox(validTarget, range, 3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
targetFind.SetAOEType(validTarget, aoeType, range, 40);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,20 +13,21 @@ using FFXIVClassic_Map_Server.packets.send.actor;
|
|||||||
|
|
||||||
namespace FFXIVClassic_Map_Server.actors.chara.ai
|
namespace FFXIVClassic_Map_Server.actors.chara.ai
|
||||||
{
|
{
|
||||||
/// <summary> todo: what even do i summarise this as? </summary>
|
// https://github.com/Windower/POLUtils/blob/master/PlayOnline.FFXI/Enums.cs
|
||||||
enum TargetFindFlags : byte
|
[Flags]
|
||||||
|
public enum ValidTarget : ushort
|
||||||
{
|
{
|
||||||
None = 0x00,
|
None = 0x00,
|
||||||
/// <summary> Able to target <see cref="Player"/>s even if not in target's party </summary>
|
Self = 0x01,
|
||||||
HitAll = 0x01,
|
Player = 0x02,
|
||||||
/// <summary> Able to target all <see cref="Player"/>s in target's party/alliance </summary>
|
PartyMember = 0x04,
|
||||||
Alliance = 0x02,
|
Ally = 0x08,
|
||||||
/// <summary> Able to target any <see cref="Pet"/> in target's party/alliance </summary>
|
NPC = 0x10,
|
||||||
Pets = 0x04,
|
Enemy = 0x20,
|
||||||
/// <summary> Target all in zone, regardless of distance </summary>
|
Unknown = 0x40,
|
||||||
ZoneWide = 0x08,
|
Object = 0x60,
|
||||||
/// <summary> Able to target dead <see cref="Player"/>s </summary>
|
CorpseOnly = 0x80,
|
||||||
Dead = 0x10,
|
Corpse = 0x9D // CorpseOnly + NPC + Ally + Partymember + Self
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Targeting from/to different entity types </summary>
|
/// <summary> Targeting from/to different entity types </summary>
|
||||||
@ -71,9 +72,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
private Character target;
|
private Character target;
|
||||||
private Character masterTarget; // if target is a pet, this is the owner
|
private Character masterTarget; // if target is a pet, this is the owner
|
||||||
private TargetFindCharacterType findType;
|
private TargetFindCharacterType findType;
|
||||||
private TargetFindFlags findFlags;
|
private ValidTarget validTarget;
|
||||||
private TargetFindAOEType aoeType;
|
private TargetFindAOEType aoeType;
|
||||||
private TargetFindAOETarget aoeTarget;
|
|
||||||
private Vector3 targetPosition;
|
private Vector3 targetPosition;
|
||||||
private float extents;
|
private float extents;
|
||||||
private float angle;
|
private float angle;
|
||||||
@ -89,9 +89,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
{
|
{
|
||||||
this.target = null;
|
this.target = null;
|
||||||
this.findType = TargetFindCharacterType.None;
|
this.findType = TargetFindCharacterType.None;
|
||||||
this.findFlags = TargetFindFlags.None;
|
this.validTarget = ValidTarget.None;
|
||||||
this.aoeType = TargetFindAOEType.None;
|
this.aoeType = TargetFindAOEType.None;
|
||||||
this.aoeTarget = TargetFindAOETarget.Self;
|
|
||||||
this.targetPosition = null;
|
this.targetPosition = null;
|
||||||
this.extents = 0.0f;
|
this.extents = 0.0f;
|
||||||
this.angle = 0.0f;
|
this.angle = 0.0f;
|
||||||
@ -117,20 +116,30 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
/// <see cref="TargetFindAOEType.Box"/> - width of box / 2 (todo: set box length not just between user and target)
|
/// <see cref="TargetFindAOEType.Box"/> - width of box / 2 (todo: set box length not just between user and target)
|
||||||
/// </param>
|
/// </param>
|
||||||
/// <param name="angle"> Angle in radians of cone </param>
|
/// <param name="angle"> Angle in radians of cone </param>
|
||||||
public void SetAOEType(TargetFindAOETarget aoeTarget, TargetFindAOEType aoeType, float extents = -1.0f, float angle = -1.0f)
|
public void SetAOEType(ValidTarget validTarget, TargetFindAOEType aoeType, float extents = -1.0f, float angle = -1.0f)
|
||||||
{
|
{
|
||||||
this.aoeTarget = TargetFindAOETarget.Target;
|
this.validTarget = validTarget;
|
||||||
this.aoeType = aoeType;
|
this.aoeType = aoeType;
|
||||||
this.extents = extents != -1.0f ? extents : 0.0f;
|
this.extents = extents != -1.0f ? extents : 0.0f;
|
||||||
this.angle = angle != -1.0f ? angle : 0.0f;
|
this.angle = angle != -1.0f ? angle : 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetAOEBox(ValidTarget validTarget, float length, float width)
|
||||||
|
{
|
||||||
|
this.validTarget = validTarget;
|
||||||
|
this.aoeType = TargetFindAOEType.Box;
|
||||||
|
float x = owner.positionX - (float)Math.Cos(owner.rotation + (float)(Math.PI / 2)) * (length);
|
||||||
|
float z = owner.positionZ + (float)Math.Sin(owner.rotation + (float)(Math.PI / 2)) * (length);
|
||||||
|
this.targetPosition = new Vector3(x, owner.positionY, z);
|
||||||
|
this.extents = width;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Find and try to add a single target to target list
|
/// Find and try to add a single target to target list
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void FindTarget(Character target, TargetFindFlags flags)
|
public void FindTarget(Character target, ValidTarget flags)
|
||||||
{
|
{
|
||||||
findFlags = flags;
|
validTarget = flags;
|
||||||
this.target = null;
|
this.target = null;
|
||||||
// todo: maybe this should only be set if successfully added?
|
// todo: maybe this should only be set if successfully added?
|
||||||
this.targetPosition = target.GetPosAsVector3();
|
this.targetPosition = target.GetPosAsVector3();
|
||||||
@ -141,12 +150,12 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
/// <para> Call SetAOEType before calling this </para>
|
/// <para> Call SetAOEType before calling this </para>
|
||||||
/// Find targets within area set by <see cref="SetAOEType"/>
|
/// Find targets within area set by <see cref="SetAOEType"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void FindWithinArea(Character target, TargetFindFlags flags)
|
public void FindWithinArea(Character target, ValidTarget flags)
|
||||||
{
|
{
|
||||||
findFlags = flags;
|
validTarget = flags;
|
||||||
// todo: maybe we should keep a snapshot which is only updated on each tick for consistency
|
// todo: maybe we should keep a snapshot which is only updated on each tick for consistency
|
||||||
// are we creating aoe circles around target or self
|
// are we creating aoe circles around target or self
|
||||||
if ((aoeType & TargetFindAOEType.Circle) != 0 && aoeTarget != TargetFindAOETarget.Self)
|
if ((aoeType & TargetFindAOEType.Circle) != 0 && validTarget != ValidTarget.Self)
|
||||||
this.targetPosition = owner.GetPosAsVector3();
|
this.targetPosition = owner.GetPosAsVector3();
|
||||||
else
|
else
|
||||||
this.targetPosition = target.GetPosAsVector3();
|
this.targetPosition = target.GetPosAsVector3();
|
||||||
@ -157,7 +166,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
this.target = target;
|
this.target = target;
|
||||||
|
|
||||||
// todo: this is stupid
|
// todo: this is stupid
|
||||||
bool withPet = (flags & TargetFindFlags.Pets) != 0 || masterTarget.allegiance != owner.allegiance;
|
bool withPet = (flags & ValidTarget.Ally) != 0 || masterTarget.allegiance != owner.allegiance;
|
||||||
|
|
||||||
if (IsPlayer(owner))
|
if (IsPlayer(owner))
|
||||||
{
|
{
|
||||||
@ -168,7 +177,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
// todo: handle player parties
|
// todo: handle player parties
|
||||||
if (masterTarget.currentParty != null)
|
if (masterTarget.currentParty != null)
|
||||||
{
|
{
|
||||||
if ((findFlags & TargetFindFlags.Alliance) != 0)
|
if ((validTarget & ValidTarget.Ally) != 0)
|
||||||
AddAllInAlliance(masterTarget, withPet);
|
AddAllInAlliance(masterTarget, withPet);
|
||||||
else
|
else
|
||||||
AddAllInParty(masterTarget, withPet);
|
AddAllInParty(masterTarget, withPet);
|
||||||
@ -197,7 +206,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
withPet = true;
|
withPet = true;
|
||||||
|
|
||||||
// todo: does ffxiv have call for help flag?
|
// todo: does ffxiv have call for help flag?
|
||||||
//if ((findFlags & TargetFindFlags.HitAll) != 0)
|
//if ((findFlags & ValidTarget.HitAll) != 0)
|
||||||
//{
|
//{
|
||||||
// AddAllInZone(masterTarget, withPet);
|
// AddAllInZone(masterTarget, withPet);
|
||||||
//}
|
//}
|
||||||
@ -276,7 +285,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
private void AddAllBattleNpcs(Character target, bool withPet)
|
private void AddAllBattleNpcs(Character target, bool withPet)
|
||||||
{
|
{
|
||||||
// 70 is client render distance so we'll go with that
|
// 70 is client render distance so we'll go with that
|
||||||
var actors = (findFlags & TargetFindFlags.ZoneWide) != 0 ? owner.zone.GetAllActors<BattleNpc>() : owner.zone.GetActorsAroundActor<BattleNpc>(owner, 70);
|
var actors = owner.zone.GetActorsAroundActor<BattleNpc>(owner, (int)extents);
|
||||||
|
|
||||||
// todo: should we look for Characters instead in case player is charmed by BattleNpc
|
// todo: should we look for Characters instead in case player is charmed by BattleNpc
|
||||||
foreach (BattleNpc actor in actors)
|
foreach (BattleNpc actor in actors)
|
||||||
@ -313,7 +322,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// cant target dead
|
// cant target dead
|
||||||
if ((findFlags & TargetFindFlags.Dead) == 0 && target.IsDead())
|
if ((validTarget & ValidTarget.Corpse) == 0 && target.IsDead())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
bool targetingPlayer = target is Player;
|
bool targetingPlayer = target is Player;
|
||||||
@ -323,11 +332,11 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
if (/*target.isZoning || owner.isZoning || */target.zone != owner.zone || targetingPlayer && ((Player)target).playerSession.isUpdatesLocked)
|
if (/*target.isZoning || owner.isZoning || */target.zone != owner.zone || targetingPlayer && ((Player)target).playerSession.isUpdatesLocked)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (aoeTarget == TargetFindAOETarget.Self && aoeType != TargetFindAOEType.None && owner != target)
|
if (validTarget == ValidTarget.Self && aoeType != TargetFindAOEType.None && owner != target)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// hit everything within zone or within aoe region
|
// hit everything within zone or within aoe region
|
||||||
if ((findFlags & TargetFindFlags.ZoneWide) != 0 || aoeType == TargetFindAOEType.Circle && target.GetPosAsVector3().IsWithinCircle(targetPosition, extents))
|
if (extents == 255.0f || aoeType == TargetFindAOEType.Circle && target.GetPosAsVector3().IsWithinCircle(targetPosition, extents))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (aoeType == TargetFindAOEType.Cone && IsWithinCone(target, withPet))
|
if (aoeType == TargetFindAOEType.Cone && IsWithinCone(target, withPet))
|
||||||
@ -374,25 +383,25 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Character GetValidTarget(Character target, TargetFindFlags findFlags)
|
public Character GetValidTarget(Character target, ValidTarget findFlags)
|
||||||
{
|
{
|
||||||
if (target == null || target.currentSubState == SetActorStatePacket.SUB_STATE_PLAYER && ((Player)target).playerSession.isUpdatesLocked)
|
if (target == null || target.currentSubState == SetActorStatePacket.SUB_STATE_PLAYER && ((Player)target).playerSession.isUpdatesLocked)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
if ((findFlags & TargetFindFlags.Pets) != 0)
|
if ((findFlags & ValidTarget.Ally) != 0)
|
||||||
{
|
{
|
||||||
return owner.pet;
|
return owner.pet;
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo: this is beyond retarded
|
// todo: this is beyond retarded
|
||||||
var oldFlags = this.findFlags;
|
var oldFlags = this.validTarget;
|
||||||
this.findFlags = findFlags;
|
this.validTarget = findFlags;
|
||||||
if (CanTarget(target, false, true))
|
if (CanTarget(target, false, true))
|
||||||
{
|
{
|
||||||
this.findFlags = oldFlags;
|
this.validTarget = oldFlags;
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
this.findFlags = oldFlags;
|
this.validTarget = oldFlags;
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers
|
|||||||
{
|
{
|
||||||
// pathfind if too far otherwise jump to target
|
// pathfind if too far otherwise jump to target
|
||||||
owner.aiContainer.pathFind.SetPathFlags(distance > 5 ? PathFindFlags.None : PathFindFlags.IgnoreNav );
|
owner.aiContainer.pathFind.SetPathFlags(distance > 5 ? PathFindFlags.None : PathFindFlags.IgnoreNav );
|
||||||
owner.aiContainer.pathFind.PreparePath(targetPos, 1.2f, 5);
|
owner.aiContainer.pathFind.PreparePath(targetPos, 1.5f, 5);
|
||||||
}
|
}
|
||||||
owner.aiContainer.pathFind.FollowPath();
|
owner.aiContainer.pathFind.FollowPath();
|
||||||
if (!owner.aiContainer.pathFind.IsFollowingPath())
|
if (!owner.aiContainer.pathFind.IsFollowingPath())
|
||||||
|
@ -21,6 +21,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.utils
|
|||||||
}
|
}
|
||||||
((BattleNpc)defender).hateContainer.UpdateHate(attacker, damage);
|
((BattleNpc)defender).hateContainer.UpdateHate(attacker, damage);
|
||||||
}
|
}
|
||||||
|
defender.DelHP((short)damage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
-- MySQL dump 10.13 Distrib 5.7.10, for Win64 (x86_64)
|
-- MySQL dump 10.13 Distrib 5.7.18, for Win64 (x86_64)
|
||||||
--
|
--
|
||||||
-- Host: localhost Database: ffxiv_database
|
-- Host: localhost Database: ffxiv_server
|
||||||
-- ------------------------------------------------------
|
-- ------------------------------------------------------
|
||||||
-- Server version 5.7.10-log
|
-- Server version 5.7.18-log
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
@ -29,11 +29,14 @@ CREATE TABLE `abilities` (
|
|||||||
`lvl` tinyint(3) unsigned NOT NULL,
|
`lvl` tinyint(3) unsigned NOT NULL,
|
||||||
`requirements` smallint(5) unsigned NOT NULL,
|
`requirements` smallint(5) unsigned NOT NULL,
|
||||||
`validTarget` tinyint(3) unsigned NOT NULL,
|
`validTarget` tinyint(3) unsigned NOT NULL,
|
||||||
`aoeTarget` tinyint(3) unsigned NOT NULL,
|
|
||||||
`aoeType` tinyint(3) unsigned NOT NULL,
|
`aoeType` tinyint(3) unsigned NOT NULL,
|
||||||
|
`numHits` tinyint(3) unsigned NOT NULL,
|
||||||
|
`positionBonus` tinyint(3) unsigned NOT NULL,
|
||||||
|
`procRequirement` tinyint(3) unsigned NOT NULL,
|
||||||
`range` int(10) unsigned NOT NULL,
|
`range` int(10) unsigned NOT NULL,
|
||||||
`characterFind` tinyint(3) unsigned NOT NULL,
|
`buffDuration` int(10) unsigned NOT NULL,
|
||||||
`statusDuration` int(10) unsigned NOT NULL,
|
`debuffDuration` int(10) unsigned NOT NULL,
|
||||||
|
`castType` tinyint(3) unsigned NOT NULL,
|
||||||
`castTime` int(10) unsigned NOT NULL,
|
`castTime` int(10) unsigned NOT NULL,
|
||||||
`recastTime` int(10) unsigned NOT NULL,
|
`recastTime` int(10) unsigned NOT NULL,
|
||||||
`mpCost` smallint(5) unsigned NOT NULL,
|
`mpCost` smallint(5) unsigned NOT NULL,
|
||||||
@ -42,8 +45,6 @@ CREATE TABLE `abilities` (
|
|||||||
`effectAnimation` smallint(5) unsigned NOT NULL,
|
`effectAnimation` smallint(5) unsigned NOT NULL,
|
||||||
`modelAnimation` smallint(5) unsigned NOT NULL,
|
`modelAnimation` smallint(5) unsigned NOT NULL,
|
||||||
`animationDuration` smallint(5) unsigned NOT NULL,
|
`animationDuration` smallint(5) unsigned NOT NULL,
|
||||||
`positionBonus` tinyint(3) unsigned NOT NULL,
|
|
||||||
`procRequirement` tinyint(3) unsigned NOT NULL,
|
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
@ -54,8 +55,151 @@ CREATE TABLE `abilities` (
|
|||||||
|
|
||||||
LOCK TABLES `abilities` WRITE;
|
LOCK TABLES `abilities` WRITE;
|
||||||
/*!40000 ALTER TABLE `abilities` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `abilities` DISABLE KEYS */;
|
||||||
|
set autocommit=0;
|
||||||
|
INSERT INTO `abilities` VALUES (27100,'second_wind',2,6,3,1,0,1,0,0,5,0,0,0,0,45,0,0,14,519,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27101,'blindside',2,14,3,1,0,1,0,0,5,0,60,0,0,60,0,0,14,635,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27102,'taunt',2,42,4,32,0,1,0,0,5,5,0,0,0,60,0,0,14,517,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27103,'featherfoot',2,2,3,1,0,1,0,0,5,0,30,0,0,60,0,0,14,535,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27104,'fists_of_fire',2,34,4,1,0,1,0,0,5,0,0,0,0,10,0,0,14,684,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27105,'fists_of_earth',2,22,4,1,0,1,0,0,5,0,0,0,0,10,0,0,14,685,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27106,'hundred_fists',15,50,0,0,0,1,0,0,5,0,0,0,0,900,0,0,14,712,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27107,'spinning_heel',15,35,0,0,0,1,0,0,5,0,0,0,0,120,0,0,14,718,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27108,'shoulder_tackle',15,30,0,0,0,1,0,0,5,0,0,0,0,60,0,0,18,1048,205,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27109,'fists_of_wind',15,40,0,0,0,1,0,0,5,0,0,0,0,10,0,0,14,720,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27110,'pummel',2,1,1,32,0,1,1,0,5,0,0,0,0,10,0,1000,18,1027,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27111,'concussive_blow',2,10,1,32,0,1,4,0,5,30,0,0,0,30,0,1500,18,20,3,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27112,'simian_thrash',2,50,4,32,0,1,0,0,5,0,0,0,0,80,0,2000,18,1003,202,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27113,'aura_pulse',2,38,4,32,1,1,0,0,5,30,0,0,0,40,0,1500,18,66,203,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27114,'pounce',2,4,4,32,0,1,2,0,5,10,0,0,0,20,0,1500,18,8,3,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27115,'demolish',2,30,1,32,0,1,0,0,5,0,0,0,0,30,0,1500,18,1028,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27116,'howling_fist',2,46,4,32,0,1,4,0,5,0,0,0,0,80,0,3000,18,1029,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27117,'sucker_punch',2,26,1,32,0,1,4,0,5,0,0,0,0,15,0,1000,18,73,3,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27118,'dragon_kick',15,45,0,0,0,1,0,0,5,0,0,0,0,60,0,2000,18,1041,204,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27119,'haymaker',2,18,4,32,0,1,0,1,5,0,0,0,0,5,0,250,18,23,201,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27140,'sentinel',3,22,3,1,0,1,0,0,5,0,15,0,0,90,0,0,14,526,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27141,'aegis_boon',3,6,8,1,0,1,0,0,5,0,30,0,0,60,0,0,14,583,21,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27142,'rampart',3,2,3,1,0,1,0,2,5,0,60,0,0,120,0,0,14,536,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27143,'tempered_will',3,42,8,1,0,1,0,0,5,0,20,0,0,180,0,0,14,515,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27144,'outmaneuver',3,34,8,1,0,1,0,0,5,0,30,0,0,90,0,0,14,512,21,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27145,'flash',3,14,3,32,0,1,0,0,5,0,0,0,0,30,0,0,14,696,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27146,'cover',16,30,0,0,0,1,0,0,5,0,15,0,0,60,0,0,14,1,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27147,'divine_veil',16,35,0,0,0,1,0,0,5,0,20,0,0,60,0,0,14,713,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27148,'hallowed_ground',16,50,0,0,0,1,0,0,5,0,0,0,0,900,0,0,14,709,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27149,'holy_succor',16,40,0,0,0,1,0,0,15,0,0,0,2,10,100,0,1,701,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27151,'flat_blade',3,26,1,32,0,1,0,0,5,0,0,0,0,10,0,1500,18,1024,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27152,'savage_blade',3,10,1,32,0,1,0,0,5,0,0,0,0,30,0,1000,18,1025,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27153,'goring_blade',3,50,8,32,0,1,2,0,5,30,0,0,0,60,0,3000,18,1026,301,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27154,'riot_blade',3,30,8,32,0,1,2,0,5,30,0,0,0,80,0,2000,18,75,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27155,'rage_of_halone',3,46,8,32,0,1,0,0,5,0,0,0,0,20,0,1500,18,1008,302,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27156,'shield_bash',3,18,17,32,0,1,0,0,5,5,0,0,0,30,0,250,18,5,26,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27157,'war_drum',3,38,24,32,1,1,0,2,5,0,0,0,0,60,0,500,14,502,21,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27158,'phalanx',3,4,8,1,0,1,0,0,5,0,0,0,0,5,0,250,18,32,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27159,'spirits_within',16,45,0,0,0,1,0,0,5,0,0,0,0,60,0,3000,18,1044,304,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27180,'provoke',4,14,3,32,0,1,0,0,5,0,0,0,0,30,0,0,14,600,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27181,'foresight',4,2,3,1,0,1,0,0,5,0,30,0,0,60,0,0,14,545,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27182,'bloodbath',4,6,3,1,0,1,0,0,5,0,30,0,0,60,0,0,14,581,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27183,'berserk',4,22,32,1,0,1,0,0,5,0,0,0,0,10,0,0,14,682,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27184,'rampage',4,34,32,1,0,1,0,0,5,0,0,0,0,10,0,0,14,546,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27185,'enduring_march',4,42,32,1,0,1,0,0,5,0,20,0,0,180,0,0,14,539,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27186,'vengeance',17,30,0,1,0,1,0,0,5,0,0,0,0,150,0,0,14,714,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27187,'antagonize',17,35,0,1,0,1,0,0,5,0,0,0,0,120,0,0,14,715,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27188,'collusion',17,40,0,4,0,1,0,0,5,0,0,0,0,90,0,0,14,711,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27189,'mighty_strikes',17,50,0,1,0,1,0,0,5,0,0,0,0,900,0,0,14,716,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27190,'heavy_swing',4,1,1,32,0,1,1,0,5,0,0,0,0,10,0,1000,18,14,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27191,'skull_sunder',4,10,1,32,0,1,0,0,5,0,0,0,0,30,0,1500,18,43,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27192,'steel_cyclone',17,45,0,32,1,1,0,0,5,0,0,0,0,30,0,2000,18,1040,404,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27193,'brutal_swing',4,4,1,32,0,1,4,0,5,0,0,0,0,20,0,1500,18,15,3,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27194,'maim',4,26,1,32,0,1,0,0,5,0,0,0,0,30,0,1500,18,88,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27195,'godsbane',4,50,32,32,0,1,0,0,5,0,0,0,0,60,0,3000,18,1014,402,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27196,'path_of_the_storm',4,38,32,32,0,1,2,0,5,0,0,0,0,30,0,1500,18,44,401,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27197,'whirlwind',4,46,32,32,1,1,0,0,5,0,0,0,0,80,0,3000,18,1015,403,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27198,'fracture',4,18,32,32,0,1,0,4,5,8,0,0,0,40,0,500,18,42,3,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27199,'overpower',4,30,1,32,2,1,0,4,5,0,0,0,0,5,0,250,18,89,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27220,'hawks_eye',7,6,3,1,0,1,0,0,5,0,15,0,0,90,0,0,14,516,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27221,'quelling_strikes',7,22,3,1,0,1,0,0,5,30,0,0,0,60,0,0,14,614,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27222,'decoy',7,2,3,1,0,1,0,0,15,0,60,0,0,90,100,0,14,565,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27223,'chameleon',7,42,3,1,0,1,0,0,5,0,0,0,0,180,0,0,14,504,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27224,'barrage',7,34,64,1,0,1,0,0,5,0,60,0,0,90,0,0,14,683,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27225,'raging_strikes',7,14,64,1,0,1,0,0,5,0,0,0,0,10,0,0,14,632,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27226,'swiftsong',7,26,64,1,1,1,0,0,15,0,180,0,0,10,100,0,1,150,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27227,'battle_voice',18,50,0,1,1,1,0,0,5,0,0,0,0,900,0,0,14,721,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27228,'heavy_shot',7,1,1,32,0,1,0,0,5,0,0,0,0,10,0,1000,18,1036,4,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27229,'leaden_arrow',7,10,1,32,0,1,0,0,5,30,0,0,0,30,0,1500,18,1035,4,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27230,'wide_volley',7,50,64,32,1,1,0,0,5,0,0,0,0,80,0,2000,18,18,703,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27231,'quick_nock',7,38,64,32,2,1,0,0,5,0,0,0,0,180,0,1000,18,1017,702,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27232,'rain_of_death',18,45,0,32,1,1,0,0,5,0,0,0,0,30,0,3000,18,1037,704,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27233,'piercing_arrow',7,4,1,32,0,1,0,0,5,0,0,0,0,20,0,1000,18,1038,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27234,'gloom_arrow',7,30,1,32,0,1,0,0,5,30,0,0,0,10,0,1000,18,1039,4,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27235,'bloodletter',7,46,64,32,0,1,0,0,5,30,0,0,0,80,0,1500,18,53,701,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27236,'shadowbind',7,18,64,32,0,1,0,0,5,30,0,0,0,40,0,250,18,17,4,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27237,'ballad_of_magi',18,30,0,1,1,1,0,0,15,0,0,0,3,10,100,0,1,709,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27238,'paeon_of_war',18,40,0,1,1,1,0,0,15,0,0,0,3,10,50,1000,1,710,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27239,'minuet_of_rigor',18,35,0,1,1,1,0,0,15,0,0,0,3,10,100,0,1,711,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27258,'refill',7,1,0,1,0,1,0,0,5,0,0,0,0,0,0,0,0,0,0,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27259,'light_shot',7,1,0,32,0,1,0,0,5,0,0,0,0,0,0,0,0,0,0,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27260,'invigorate',8,14,3,1,0,1,0,0,5,0,30,0,0,90,0,0,14,575,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27261,'power_surge',8,34,128,1,0,1,0,0,5,0,0,0,0,10,0,0,14,686,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27262,'life_surge',8,22,128,1,0,1,0,0,5,0,0,0,0,15,0,250,14,687,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27263,'dread_spike',8,42,128,1,0,1,0,0,5,0,0,0,0,120,0,0,14,686,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27264,'blood_for_blood',8,6,3,1,0,1,0,0,5,0,0,0,0,60,0,0,14,689,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27265,'keen_flurry',8,26,3,1,0,1,0,0,5,0,0,0,0,90,0,0,14,569,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27266,'jump',19,30,0,32,0,1,0,0,5,0,0,0,0,60,0,0,18,1045,804,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27267,'elusive_jump',19,40,0,1,0,1,0,0,5,0,0,0,0,180,0,0,18,1046,806,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27268,'dragonfire_dive',19,50,0,32,1,1,0,0,5,0,0,0,0,900,0,0,18,1045,804,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27269,'true_thrust',8,1,1,32,0,1,1,0,5,0,0,0,0,10,0,1000,18,1030,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27270,'leg_sweep',8,30,1,32,1,1,0,0,5,8,0,0,0,30,0,1000,18,37,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27271,'doom_spike',8,46,128,32,3,1,0,0,5,0,0,0,0,60,0,3000,18,83,801,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27272,'disembowel',19,35,0,32,0,1,0,0,5,0,0,0,0,30,0,750,18,1042,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27273,'heavy_thrust',8,10,1,32,0,1,0,0,5,4,0,0,0,20,0,1500,18,1031,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27274,'vorpal_thrust',8,2,1,32,0,1,2,0,5,0,0,0,0,20,0,1500,18,1032,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27275,'impulse_drive',8,18,1,32,0,1,4,0,5,0,0,0,0,30,0,1500,18,1033,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27276,'chaos_thrust',8,50,128,32,0,1,0,0,5,0,0,0,0,80,0,3000,18,40,802,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27277,'ring_of_talons',19,45,0,32,1,1,0,0,5,0,0,0,0,60,0,2000,18,1009,803,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27278,'feint',8,4,1,32,0,1,0,8,5,0,0,0,0,10,0,250,18,39,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27279,'full_thrust',8,38,128,32,0,1,0,8,5,0,0,0,0,30,0,250,18,1034,801,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27300,'dark_seal',22,14,3,1,0,1,0,0,5,0,30,0,0,90,0,0,14,518,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27301,'resonance',22,22,3,1,0,1,0,0,5,0,30,0,0,90,0,0,14,669,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27302,'excruciate',22,38,256,1,0,1,0,0,5,0,30,0,0,90,0,0,14,694,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27303,'necrogenesis',22,6,3,1,0,1,0,0,5,0,30,0,0,90,0,0,14,695,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27304,'parsimony',22,2,256,1,0,1,0,0,5,0,30,0,0,90,0,0,14,568,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27305,'convert',26,30,0,1,0,1,0,0,5,0,0,0,0,450,0,0,14,724,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27306,'sleep',22,42,256,32,0,1,0,0,15,60,0,0,3,0,75,0,1,651,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27307,'sanguine_rite',22,30,3,1,0,1,0,0,15,0,20,0,0,60,120,0,1,152,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27308,'blizzard',22,4,256,32,0,1,0,0,15,30,0,0,3,10,90,0,1,502,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27309,'blizzara',22,26,256,32,1,1,0,0,15,30,0,0,0,40,150,0,1,506,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27310,'fire',22,10,3,32,1,1,0,0,15,0,0,0,3,8,105,0,1,501,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27311,'fira',22,34,3,32,1,1,0,0,15,0,0,0,5,16,180,0,1,504,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27312,'firaga',22,50,256,32,1,1,0,0,15,0,0,0,8,7,255,0,1,700,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27313,'thunder',22,1,3,32,0,1,0,0,15,0,0,0,2,6,75,0,1,503,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27314,'thundara',22,18,256,32,0,1,0,0,15,4,0,0,0,30,135,0,1,508,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27315,'thundaga',22,46,256,32,0,1,0,0,15,0,0,0,5,45,195,0,1,509,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27316,'burst',26,50,0,32,0,1,0,0,15,0,0,0,4,900,90,0,1,705,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27317,'sleepga',26,45,0,32,1,1,0,0,15,0,0,0,4,0,100,0,1,704,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27318,'flare',26,40,0,32,1,1,0,0,15,0,0,0,8,120,200,0,1,706,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27319,'freeze',26,35,0,32,0,1,0,0,15,0,0,0,5,120,120,0,1,707,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27340,'sacred_prism',23,34,3,1,0,1,0,0,5,0,60,0,0,90,0,0,14,690,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27341,'shroud_of_saints',23,38,512,1,0,1,0,0,5,0,20,0,0,180,0,0,14,691,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27342,'cleric_stance',23,10,512,1,0,1,0,0,5,0,0,0,0,30,0,0,14,692,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27343,'blissful_mind',23,14,512,1,0,1,0,0,5,0,0,0,0,30,0,0,14,693,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27344,'presence_of_mind',27,30,0,1,0,1,0,0,5,0,0,0,0,300,0,0,14,722,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27345,'benediction',27,50,0,1,1,1,0,0,5,0,0,0,0,900,0,0,14,723,2,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27346,'cure',23,2,3,2,0,1,0,0,15,0,0,0,2,5,40,0,1,101,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27347,'cura',23,30,512,2,0,1,0,0,15,0,0,0,2,5,100,0,1,103,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27348,'curaga',23,46,512,4,1,1,0,0,15,0,0,0,3,10,150,0,1,146,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27349,'raise',23,18,512,2,0,1,0,0,15,0,0,0,10,300,150,0,1,148,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27350,'stoneskin',23,26,3,2,0,1,0,0,15,0,300,0,3,30,50,0,1,133,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27351,'protect',23,6,3,4,1,1,0,0,15,0,300,0,3,30,80,0,1,1085,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27352,'repose',23,50,0,32,0,1,0,0,15,0,0,0,3,0,80,0,1,151,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27353,'aero',23,4,3,32,0,1,0,0,15,0,0,0,3,6,75,0,1,510,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27354,'aerora',23,42,512,32,1,1,0,0,15,0,0,0,4,20,150,0,1,511,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27355,'stone',23,1,3,32,0,1,0,0,15,0,0,0,2,6,75,0,1,513,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27356,'stonera',23,22,512,32,1,1,0,0,15,0,0,0,3,30,150,0,1,514,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27357,'esuna',27,40,0,2,0,1,0,0,15,0,0,0,2,10,40,0,1,702,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27358,'regen',27,35,0,2,0,1,0,0,15,0,0,0,2,5,20,0,1,703,1,2);
|
||||||
|
INSERT INTO `abilities` VALUES (27359,'holy',27,45,0,32,1,1,0,0,15,0,0,0,0,300,100,0,1,708,1,2);
|
||||||
/*!40000 ALTER TABLE `abilities` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `abilities` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
commit;
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
@ -66,4 +210,4 @@ UNLOCK TABLES;
|
|||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
-- Dump completed on 2016-06-07 22:54:44
|
-- Dump completed on 2017-08-22 19:57:25
|
||||||
|
Loading…
Reference in New Issue
Block a user