1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-20 19:57:46 +00:00

AoE rewrite and bug fixes

Rewrote aoe checks for cone and line aoes and added minimum distance values
Added height checks for commands
Fixed combo effects repeating for every target hit by AoE attacks
Fixed teleport sometimes not raising (I think)
Fixed gear checks in some command scripts
This commit is contained in:
yogurt 2018-07-02 00:45:06 -05:00
parent 8c5375f609
commit cf30eef39e
34 changed files with 483 additions and 330 deletions

View file

@ -409,5 +409,37 @@ namespace FFXIVClassic.Common
return dx * dx + dy * dy + dz * dz;
}
//Distance of just the x and z valeus, ignoring y
public static float XZDistanceSquared(Vector3 lhs, Vector3 rhs)
{
return XZDistanceSquared(lhs.X, lhs.Z, rhs.X, rhs.Z);
}
public static float XZDistance(Vector3 lhs, Vector3 rhs)
{
return XZDistance(lhs.X, lhs.Z, rhs.X, rhs.Z);
}
public static float XZDistance(float x, float z, float x2, float z2)
{
if (x == x2 && z == z2)
return 0.0f;
return (float)Math.Sqrt(XZDistanceSquared(x, z, x2, z2));
}
public static float XZDistanceSquared(float x, float z, float x2, float z2)
{
if (x == x2 && z == z2)
return 0.0f;
// todo: mz maths is shit
var dx = x - x2;
var dz = z - z2;
return dx * dx + dz * dz;
}
}
}

View file

@ -105,17 +105,17 @@ namespace FFXIVClassic.Common
return newVec;
}
public bool IsWithinCircle(Vector3 centre, float radius)
public bool IsWithinCircle(Vector3 center, float maxRadius, float minRadius)
{
if (this.X == centre.X && this.Z == centre.Z)
if (this.X == center.X && this.Z == center.Z)
return true;
float diffX = centre.X - this.X;
float diffZ = centre.Z - this.Z;
float diffX = center.X - this.X;
float diffZ = center.Z - this.Z;
float distance = (float)Math.Sqrt((diffX * diffX) + (diffZ * diffZ));
float distance = Utils.XZDistance(center.X, center.Z, X, Z);
return distance < radius;
return distance <= maxRadius && distance >= minRadius;
}
public bool IsWithinBox(Vector3 upperLeftCorner, Vector3 lowerRightCorner)
@ -127,5 +127,19 @@ namespace FFXIVClassic.Common
lowerRightCorner.Y >= this.Y &&
lowerRightCorner.Z >= this.Z;
}
//Checks if this vector is in a cone, note it doesn't check for distance
public bool IsWithinCone(Vector3 coneCenter, float coneRotation, float coneAngle)
{
float angleToTarget = GetAngle(coneCenter, this);
float halfAngleOfAoe = (float) (coneAngle * Math.PI / 2);
float rotationToAdd = coneRotation + halfAngleOfAoe;
//This is the angle relative to the lower angle of the cone
angleToTarget = (angleToTarget + rotationToAdd - (0.5f * (float)Math.PI)) % (2 * (float) Math.PI);
//If the relative angle is less than the total angle of the cone, the target is inside the cone
return angleToTarget >= 0 && angleToTarget <= (coneAngle * Math.PI);
}
}
}

View file

@ -2258,7 +2258,7 @@ namespace FFXIVClassic_Map_Server
int count = 0;
conn.Open();
var query = ("SELECT `id`, name, classJob, lvl, requirements, mainTarget, validTarget, aoeType, aoeRange, aoeTarget, basePotency, numHits, positionBonus, procRequirement, `range`, statusId, statusDuration, statusChance, " +
var query = ("SELECT `id`, name, classJob, lvl, requirements, mainTarget, validTarget, aoeType, aoeRange, aoeMinRange, aoeConeAngle, aoeRotateAngle, aoeTarget, basePotency, numHits, positionBonus, procRequirement, `range`, minRange, rangeHeight, rangeWidth, statusId, statusDuration, statusChance, " +
"castType, castTime, recastTime, mpCost, tpCost, animationType, effectAnimation, modelAnimation, animationDuration, battleAnimation, validUser, comboId1, comboId2, comboStep, accuracyMod, worldMasterTextId, commandType, actionType, actionProperty FROM server_battle_commands;");
MySqlCommand cmd = new MySqlCommand(query, conn);
@ -2281,7 +2281,10 @@ namespace FFXIVClassic_Map_Server
battleCommand.numHits = reader.GetByte("numHits");
battleCommand.positionBonus = (BattleCommandPositionBonus)reader.GetByte("positionBonus");
battleCommand.procRequirement = (BattleCommandProcRequirement)reader.GetByte("procRequirement");
battleCommand.range = reader.GetInt32("range");
battleCommand.range = reader.GetFloat("range");
battleCommand.minRange = reader.GetFloat("minRange");
battleCommand.rangeHeight = reader.GetInt32("rangeHeight");
battleCommand.rangeWidth = reader.GetInt32("rangeWidth");
battleCommand.statusId = reader.GetUInt32("statusId");
battleCommand.statusDuration = reader.GetUInt32("statusDuration");
battleCommand.statusChance = reader.GetFloat("statusChance");
@ -2295,7 +2298,10 @@ namespace FFXIVClassic_Map_Server
battleCommand.effectAnimation = reader.GetUInt16("effectAnimation");
battleCommand.modelAnimation = reader.GetUInt16("modelAnimation");
battleCommand.animationDurationSeconds = reader.GetUInt16("animationDuration");
battleCommand.aoeRange = reader.GetInt32("aoeRange");
battleCommand.aoeRange = reader.GetFloat("aoeRange");
battleCommand.aoeMinRange = reader.GetFloat("aoeMinRange");
battleCommand.aoeConeAngle = reader.GetFloat("aoeConeAngle");
battleCommand.aoeRotateAngle = reader.GetFloat("aoeRotateAngle");
battleCommand.aoeTarget = (TargetFindAOETarget)reader.GetByte("aoeTarget");
battleCommand.battleAnimation = reader.GetUInt32("battleAnimation");

View file

@ -657,9 +657,7 @@ namespace FFXIVClassic_Map_Server.Actors
var dX = this.positionX - x;
var dY = this.positionZ - z;
var rot2 = Math.Atan2(dY, dX);
var dRot = Math.PI - rot2 + Math.PI / 2;
// pending move, dont need to unset it
@ -668,10 +666,11 @@ namespace FFXIVClassic_Map_Server.Actors
}
// todo: is this legit?
public bool IsFacing(float x, float z, float angle = 40.0f)
public bool IsFacing(float x, float z, float angle = 90.0f)
{
angle = (float)(Math.PI * angle / 180);
return Math.Abs(Vector3.GetAngle(positionX, positionZ, x, z) - rotation) < angle;
var a = Vector3.GetAngle(positionX, positionZ, x, z);
return new Vector3(x, 0, z).IsWithinCone(GetPosAsVector3(), rotation, angle);
}
public bool IsFacing(Actor target, float angle = 40.0f)

View file

@ -828,7 +828,7 @@ namespace FFXIVClassic_Map_Server.Actors
//TP gained on an attack is usually 100 * delay.
//Store TP seems to add .1% per point.
double weaponDelay = GetMod(Modifier.AttackDelay) / 1000.0;
var storeTPPercent = 1 + (GetMod(Modifier.StoreTP) * 0.1);
var storeTPPercent = 1 + (GetMod(Modifier.StoreTP) * 0.001);
AddTP((int)(weaponDelay * 100 * storeTPPercent));
}
}
@ -1106,7 +1106,7 @@ namespace FFXIVClassic_Map_Server.Actors
}
//Now that we know if we hit the target we can check if the combo continues
if (this is Player player && command.commandType == CommandType.WeaponSkill)
if (this is Player player)
if (command.isCombo && hitTarget)
player.SetCombos(command.comboNextCommandId);
else
@ -1122,7 +1122,7 @@ namespace FFXIVClassic_Map_Server.Actors
public List<Character> GetPartyMembersInRange(uint range)
{
TargetFind targetFind = new TargetFind(this);
targetFind.SetAOEType(ValidTarget.PartyMember, TargetFindAOEType.Circle, TargetFindAOETarget.Self, range);
targetFind.SetAOEType(ValidTarget.PartyMember, TargetFindAOEType.Circle, TargetFindAOETarget.Self, range, 0, 10, 0, 0);
targetFind.FindWithinArea(this, ValidTarget.PartyMember, TargetFindAOETarget.Self);
return targetFind.GetTargets();
}

View file

@ -104,7 +104,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
public byte numHits; //amount of hits in the skill
public BattleCommandPositionBonus positionBonus; //bonus for front/flank/rear
public BattleCommandProcRequirement procRequirement;//if the skill requires a block/parry/evade before using
public int range; //max distance to use skill
public float range; //maximum distance to target to be able to use this skill
public float minRange; //Minimum distance to target to be able to use this skill
public uint statusId; //id of statuseffect that the skill might inflict
public uint statusDuration; //duration of statuseffect in milliseconds
@ -121,7 +122,12 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
public ushort animationDurationSeconds;
public uint battleAnimation;
public ushort worldMasterTextId;
public int aoeRange; //size of aoe effect. (how will this work for box aoes?)
public float aoeRange; //Radius for circle and cone aoes, length for box aoes
public float aoeMinRange; //Minimum range of aoe effect for things like Lunar Dynamo or Arrow Helix
public float aoeConeAngle; //Angle of aoe cones
public float aoeRotateAngle; //Amount aoes are rotated about the target position (usually the user's position)
public float rangeHeight; //Total height a skill can be used against target above or below user
public float rangeWidth; //Width of box aoes
public int[] comboNextCommandId = new int[2]; //next two skills in a combo
public short comboStep; //Where in a combo string this skill is
public CommandType commandType;
@ -130,12 +136,13 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
public byte statusTier; //tier of status to put on target
public ulong statusMagnitude = 0; //magnitude of status to put on target
public double statusMagnitude = 0; //magnitude of status to put on target
public ushort basePotency; //damage variable
public float enmityModifier; //multiples by damage done to get final enmity
public float accuracyModifier; //modifies accuracy
public float bonusCritRate; //extra crit rate
public bool isCombo;
public bool comboEffectAdded = false; //If the combo effect is added to multiple hiteffects it plays multiple times, so this keeps track of that
public bool isRanged = false;
public bool actionCrit; //Whether any actions were critical hits, used for Excruciate
@ -193,11 +200,11 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
if (aoeType == TargetFindAOEType.Box)
{
targetFind.SetAOEBox(validTarget, aoeTarget, range, aoeRange);
targetFind.SetAOEBox(validTarget, aoeTarget, aoeRange, rangeWidth, aoeRotateAngle);
}
else
{
targetFind.SetAOEType(validTarget, aoeType, aoeTarget, range, aoeRange);
targetFind.SetAOEType(validTarget, aoeType, aoeTarget, aoeRange, aoeMinRange, rangeHeight, aoeRotateAngle, aoeConeAngle);
}
/*

View file

@ -127,7 +127,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
return AddStatusEffect(se, owner);
}
public bool AddStatusEffect(uint id, byte tier, UInt64 magnitude)
public bool AddStatusEffect(uint id, byte tier, double magnitude)
{
var se = Server.GetWorldManager().GetStatusEffect(id);
@ -137,7 +137,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
return AddStatusEffect(se, owner);
}
public bool AddStatusEffect(uint id, byte tier, UInt64 magnitude, uint duration, int tickMs = 3000)
public bool AddStatusEffect(uint id, byte tier, double magnitude, uint duration, int tickMs = 3000)
{
var se = Server.GetWorldManager().GetStatusEffect(id);
if (se != null)

View file

@ -240,7 +240,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers
var targetPos = new Vector3(owner.target.positionX, owner.target.positionY, owner.target.positionZ);
var distance = Utils.Distance(owner.positionX, owner.positionY, owner.positionZ, targetPos.X, targetPos.Y, targetPos.Z);
if (distance > owner.GetAttackRange() - 0.2f || owner.aiContainer.CanFollowPath())
if (distance > owner.GetAttackRange() - 0.2f && owner.aiContainer.CanFollowPath())
{
if (CanMoveForward(distance))
{

View file

@ -70,13 +70,19 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
class TargetFind
{
private Character owner;
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 ValidTarget validTarget;
private TargetFindAOETarget aoeTarget;
private TargetFindAOEType aoeType;
private Vector3 targetPosition;
private float maxDistance;
private Vector3 aoeTargetPosition; //This is the center of circle an cone AOEs and the position where line aoes come out
private float aoeTargetRotation; //This is the direction the aoe target is facing
private float maxDistance; //Radius for circle and cone AOEs, length for line AOEs
private float minDistance; //Minimum distance to that target must be to be able to be hit
private float width; //Width of line AOEs
private float height; //All AoEs are boxes or cylinders. Height is usually 10y regardless of maxDistance, but some commands have different values. Height is total height, so targets can be at most half this distance away on Y axis
private float aoeRotateAngle; //This is the angle that cones and line aoes are rotated about aoeTargetPosition for skills that come out of a side other than the front
private float coneAngle; //The angle of the cone itself in Pi Radians
private float param;
private List<Character> targets;
@ -92,8 +98,14 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
this.validTarget = ValidTarget.Enemy;
this.aoeType = TargetFindAOEType.None;
this.aoeTarget = TargetFindAOETarget.Target;
this.targetPosition = null;
this.aoeTargetPosition = null;
this.aoeTargetRotation = 0;
this.maxDistance = 0.0f;
this.minDistance = 0.0f;
this.width = 0.0f;
this.height = 0.0f;
this.aoeRotateAngle = 0.0f;
this.coneAngle = 0.0f;
this.param = 0.0f;
this.targets = new List<Character>();
}
@ -117,12 +129,16 @@ 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)
/// </param>
/// <param name="param"> param in degrees of cone (todo: probably use radians and forget converting at runtime) </param>
public void SetAOEType(ValidTarget validTarget, TargetFindAOEType aoeType, TargetFindAOETarget aoeTarget, float maxDistance = -1.0f, float param = -1.0f)
public void SetAOEType(ValidTarget validTarget, TargetFindAOEType aoeType, TargetFindAOETarget aoeTarget, float maxDistance, float minDistance, float height, float aoeRotate, float coneAngle, float param = 0.0f)
{
this.validTarget = validTarget;
this.aoeType = aoeType;
this.maxDistance = maxDistance != -1.0f ? maxDistance : 0.0f;
this.param = param != -1.0f ? param : 0.0f;
this.maxDistance = maxDistance;
this.minDistance = minDistance;
this.param = param;
this.height = height;
this.aoeRotateAngle = aoeRotate;
this.coneAngle = coneAngle;
}
/// <summary>
@ -132,15 +148,16 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
/// <param name="aoeTarget"></param>
/// <param name="length"></param>
/// <param name="width"></param>
public void SetAOEBox(ValidTarget validTarget, TargetFindAOETarget aoeTarget, float length, float width)
public void SetAOEBox(ValidTarget validTarget, TargetFindAOETarget aoeTarget, float length, float width, float aoeRotateAngle)
{
this.validTarget = validTarget;
this.aoeType = TargetFindAOEType.Box;
this.aoeTarget = aoeTarget;
this.aoeRotateAngle = aoeRotateAngle;
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.maxDistance = width;
this.maxDistance = length;
this.width = width;
}
/// <summary>
@ -163,9 +180,15 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
validTarget = flags;
// are we creating aoe circles around target or self
if (aoeTarget == TargetFindAOETarget.Self)
this.targetPosition = owner.GetPosAsVector3();
{
this.aoeTargetPosition = owner.GetPosAsVector3();
this.aoeTargetRotation = owner.rotation + (float) (aoeRotateAngle * Math.PI);
}
else
this.targetPosition = target.GetPosAsVector3();
{
this.aoeTargetPosition = target.GetPosAsVector3();
this.aoeTargetRotation = target.rotation + (float) (aoeRotateAngle * Math.PI);
}
masterTarget = TryGetMasterTarget(target) ?? target;
@ -179,66 +202,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
{
AddAllInRange(target, withPet);
}
/*
if (aoeType != TargetFindAOEType.None)
{
if (IsPlayer(owner))
{
if (masterTarget is Player)
{
findType = TargetFindCharacterType.PlayerToPlayer;
if (masterTarget.currentParty != null)
{
if ((validTarget & (ValidTarget.Ally | ValidTarget.PartyMember)) != 0)
AddAllInAlliance(masterTarget, withPet);
else
AddAllInParty(masterTarget, withPet);
}
else
{
AddTarget(masterTarget, withPet);
}
}
else
{
findType = TargetFindCharacterType.PlayerToBattleNpc;
AddAllBattleNpcs(masterTarget, false);
}
}
else
{
// todo: this needs checking..
if (masterTarget is Player || owner.allegiance == CharacterTargetingAllegiance.Player)
findType = TargetFindCharacterType.BattleNpcToPlayer;
else
findType = TargetFindCharacterType.BattleNpcToBattleNpc;
// todo: configurable pet aoe buff
if (findType == TargetFindCharacterType.BattleNpcToBattleNpc && TryGetMasterTarget(target) != null)
withPet = true;
// todo: does ffxiv have call for help flag?
//if ((findFlags & ValidTarget.HitAll) != 0)
//{
// AddAllInZone(masterTarget, withPet);
//}
AddAllInAlliance(target, withPet);
if (findType == TargetFindCharacterType.BattleNpcToPlayer)
{
if (owner.allegiance == CharacterTargetingAllegiance.Player)
AddAllInZone(masterTarget, withPet);
else
AddAllInHateList();
}
}
}*/
if (targets.Count > 8)
targets.RemoveRange(8, targets.Count - 8);
//if (targets.Count > 8)
//targets.RemoveRange(8, targets.Count - 8);
//Curaga starts with lowest health players, so the targets are definitely sorted at least for some abilities
//Other aoe abilities might be sorted by distance?
@ -252,28 +218,33 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
/// </summary>
private bool IsWithinBox(Character target, bool withPet)
{
if (aoeTarget == TargetFindAOETarget.Self)
targetPosition = owner.GetPosAsVector3();
else
targetPosition = target.GetPosAsVector3();
Vector3 vec = target.GetPosAsVector3() - aoeTargetPosition;
Vector3 relativePos = new Vector3();
var myPos = owner.GetPosAsVector3();
var angle = Vector3.GetAngle(myPos, targetPosition);
//Get target's position relative to owner's position where owner's front is facing positive z axis
relativePos.X = (float)(vec.X * Math.Cos(aoeTargetRotation) - vec.Z * Math.Sin(aoeTargetRotation));
relativePos.Z = (float)(vec.X * Math.Sin(aoeTargetRotation) + vec.Z * Math.Cos(aoeTargetRotation));
// todo: actually check this works..
var myCorner = myPos.NewHorizontalVector(angle, maxDistance);
var myCorner2 = myPos.NewHorizontalVector(angle, -maxDistance);
float halfHeight = height / 2;
float halfWidth = width / 2;
var targetCorner = targetPosition.NewHorizontalVector(angle, maxDistance);
var targetCorner2 = targetPosition.NewHorizontalVector(angle, -maxDistance);
Vector3 closeBottomLeft = new Vector3(-halfWidth, -halfHeight, minDistance);
Vector3 farTopRight = new Vector3(halfWidth, halfHeight, maxDistance);
return target.GetPosAsVector3().IsWithinBox(targetCorner2, myCorner);
return relativePos.IsWithinBox(closeBottomLeft, farTopRight);
}
private bool IsWithinCone(Character target, bool withPet)
{
// todo: make this actual cone
return owner.IsFacing(target, param) && Utils.Distance(owner.positionX, owner.positionY, owner.positionZ, target.positionX, target.positionY, target.positionZ) < maxDistance;
double distance = Utils.XZDistance(aoeTargetPosition, target.GetPosAsVector3());
//Make sure target is within the correct range first
if (!IsWithinCircle(target))
return false;
//This might not be 100% right or the most optimal way to do this
//Get between taget's position and our position
return target.GetPosAsVector3().IsWithinCone(aoeTargetPosition, aoeTargetRotation, coneAngle);
}
private void AddTarget(Character target, bool withPet)
@ -364,10 +335,15 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
if ((validTarget & ValidTarget.NPC) == 0 && target.isStatic)
return false;
//This skill can't be used on corpses and target is dead, return false
if ((validTarget & ValidTarget.Corpse) == 0 && target.IsDead())
return false;
//This skill must be used on Allies and target is not an ally, return false
if ((validTarget & ValidTarget.Ally) != 0 && target.allegiance != owner.allegiance)
return false;
//This skill can't be used on players and target is a player, return false
//Do we need a player flag? Ally/Enemy flags probably serve the same purpose
//if ((validTarget & ValidTarget.Player) == 0 && target is Player)
@ -404,7 +380,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
if (!ignoreAOE)
{
// hit everything within zone or within aoe region
if (param == -1.0f || aoeType == TargetFindAOEType.Circle && !IsWithinCircle(target, param))
if (param == -1.0f || aoeType == TargetFindAOEType.Circle && !IsWithinCircle(target))
return false;
if (aoeType == TargetFindAOEType.Cone && !IsWithinCone(target, withPet))
@ -419,16 +395,10 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
return true;
}
private bool IsWithinCircle(Character target, float maxDistance)
private bool IsWithinCircle(Character target)
{
// todo: make y diff modifiable?
//if (Math.Abs(owner.positionX - target.positionY) > 6.0f)
// return false;
if (this.targetPosition == null)
this.targetPosition = aoeTarget == TargetFindAOETarget.Self ? owner.GetPosAsVector3() : masterTarget.GetPosAsVector3();
return target.GetPosAsVector3().IsWithinCircle(targetPosition, maxDistance);
//Check if XZ is in circle and that y difference isn't larger than half height
return target.GetPosAsVector3().IsWithinCircle(aoeTargetPosition, maxDistance, minDistance) && Math.Abs(owner.positionY - target.positionY) <= (height / 2);
}
private bool IsPlayer(Character target)

View file

@ -47,7 +47,20 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
}
else
{
//owner.LookAt(target);
if (!skill.IsInstantCast())
{
float castTime = skill.castTimeMs;
// command casting duration
if (owner is Player)
{
// todo: modify spellSpeed based on modifiers and stuff
((Player)owner).SendStartCastbar(skill.id, Utils.UnixTimeStampUTC(DateTime.Now.AddMilliseconds(castTime)));
}
owner.SendChant(0xf, 0x0);
//You ready [skill] (6F000002: BLM, 6F000003: WHM, 0x6F000008: BRD)
owner.DoBattleAction(skill.id, (uint)0x6F000000 | skill.castType, new BattleAction(target.actorId, 30126, 1, 0, 1));
}
}
}
@ -66,7 +79,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
// todo: check weapon delay/haste etc and use that
var actualCastTime = skill.castTimeMs;
if ((tick - startTime).Milliseconds >= skill.castTimeMs)
if ((tick - startTime).TotalMilliseconds >= skill.castTimeMs)
{
OnComplete();
return true;
@ -88,6 +101,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
public override void OnComplete()
{
owner.LookAt(target);
bool hitTarget = false;
skill.targetFind.FindWithinArea(target, skill.validTarget, skill.aoeTarget);
@ -130,6 +144,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
public override void Cleanup()
{
owner.SendChant(0, 0);
owner.aiContainer.UpdateLastActionTime(skill.animationDurationSeconds);
}
}

View file

@ -104,7 +104,6 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
//List<BattleAction> actions = new List<BattleAction>();
BattleActionContainer actions = new BattleActionContainer();
target.SetMod((uint) Modifier.MinimumHpLock, 0);
var i = 0;
for (int hitNum = 0; hitNum < 1 /* owner.GetMod((uint) Modifier.HitCount)*/; hitNum++)
@ -123,7 +122,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
BattleAction error = null;// new BattleAction(0, null, 0, 0);
//owner.DoActions(null, actions.GetList(), ref error);
//owner.OnAttack(this, actions[0], ref errorResult);
owner.DoBattleAction(22104, 0x19001000, actions.GetList());
var anim = (uint)(17 << 24 | 1 << 12);
owner.DoBattleAction(22104, anim, actions.GetList());
}
public override void TryInterrupt()
@ -161,6 +161,11 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
{
return false;
}
if (!owner.IsFacing(target))
{
return false;
}
// todo: shouldnt need to check if owner is dead since all states would be cleared
if (owner.IsDead() || target.IsDead())
{
@ -179,7 +184,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
{
if (owner is Player)
{
((Player)owner).SendGameMessage(Server.GetWorldManager().GetActor(), 32539, 0x20);
//The target is too far away
((Player)owner).SendGameMessage(Server.GetWorldManager().GetActor(), 32537, 0x20);
}
return false;
}

View file

@ -61,18 +61,21 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
// todo: check within attack range
float[] baseCastDuration = { 1.0f, 0.25f };
//There are no positional spells, so just check onCombo, need to check first because certain spells change aoe type/accuracy
//If owner is a player and the spell being used is part of the current combo
if (owner is Player p && p.GetClass() == spell.job)
{
if (spell.comboStep == 1 || ((p.playerWork.comboNextCommandId[0] == spell.id || p.playerWork.comboNextCommandId[1] == spell.id)))
{
lua.LuaEngine.CallLuaBattleCommandFunction(owner, spell, "magic", "onCombo", owner, target, spell);
spell.isCombo = true;
}
}
//Check combo stuff here because combos can impact spell cast times
float spellSpeed = spell.castTimeMs;
//There are no positional spells, so just check onCombo, need to check first because certain spells change aoe type/accuracy
//If owner is a player and the spell being used is part of the current combo
if (spell.comboStep == 1 || ((owner is Player p) && (p.playerWork.comboNextCommandId[0] == spell.id || p.playerWork.comboNextCommandId[1] == spell.id)))
{
lua.LuaEngine.CallLuaBattleCommandFunction(owner, spell, "magic", "onCombo", owner, target, spell);
spell.isCombo = true;
}
if (!spell.IsInstantCast())
{
// command casting duration

View file

@ -46,7 +46,6 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
}
else
{
owner.LookAt(target);
hitDirection = owner.GetHitDirection(target);
//Do positionals and combo effects first because these can influence accuracy and amount of targets/numhits, which influence the rest of the steps
@ -76,6 +75,21 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
skill.isCombo = true;
}
}
if (!skill.IsInstantCast())
{
float castTime = skill.castTimeMs;
// command casting duration
if (owner is Player)
{
// todo: modify spellSpeed based on modifiers and stuff
((Player)owner).SendStartCastbar(skill.id, Utils.UnixTimeStampUTC(DateTime.Now.AddMilliseconds(castTime)));
}
owner.SendChant(0xf, 0x0);
//You ready [skill] (6F000002: BLM, 6F000003: WHM, 0x6F000008: BRD)
owner.DoBattleAction(skill.id, (uint)0x6F000000 | skill.castType, new BattleAction(target.actorId, 30126, 1, 0, 1));
}
}
}
}
@ -95,7 +109,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
// todo: check weapon delay/haste etc and use that
var actualCastTime = skill.castTimeMs;
if ((tick - startTime).Milliseconds >= skill.castTimeMs)
if ((tick - startTime).TotalMilliseconds >= skill.castTimeMs)
{
OnComplete();
return true;
@ -117,6 +131,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
public override void OnComplete()
{
owner.LookAt(target);
skill.targetFind.FindWithinArea(target, skill.validTarget, skill.aoeTarget);
isCompleted = true;

View file

@ -542,8 +542,11 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.utils
hitEffect |= HitTypeEffects[hitType];
//For combos that land, add the combo effect
if (skill != null && skill.isCombo && hitType > HitType.Evade && hitType != HitType.Evade)
if (skill != null && skill.isCombo && hitType > HitType.Evade && hitType != HitType.Evade && !skill.comboEffectAdded)
{
hitEffect |= (HitEffect)(skill.comboStep << 15);
skill.comboEffectAdded = true;
}
//if attack hit the target, take into account protective status effects
if (hitType >= HitType.Parry)
@ -581,8 +584,11 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.utils
hitEffect |= HitTypeEffects[hitType];
if (skill != null && skill.isCombo)
if (skill != null && skill.isCombo && !skill.comboEffectAdded)
{
hitEffect |= (HitEffect)(skill.comboStep << 15);
skill.comboEffectAdded = true;
}
//if attack hit the target, take into account protective status effects
if (hitType >= HitType.Block)

View file

@ -2124,6 +2124,7 @@ namespace FFXIVClassic_Map_Server.Actors
public override bool CanCast(Character target, BattleCommand spell)
{
//Might want to do these with a BattleAction instead to be consistent with the rest of command stuff
if (GetHotbarTimer(spell.id) > Utils.UnixTimeStampUTC())
{
// todo: this needs confirming
@ -2137,12 +2138,30 @@ namespace FFXIVClassic_Map_Server.Actors
SendGameMessage(Server.GetWorldManager().GetActor(), 32511, 0x20, (uint)spell.id);
return false;
}
if (Utils.Distance(positionX, positionY, positionZ, target.positionX, target.positionY, target.positionZ) > spell.range)
if (Utils.XZDistance(positionX, positionZ, target.positionX, target.positionZ) > spell.range)
{
// The target is out of range.
// The target is too far away.
SendGameMessage(Server.GetWorldManager().GetActor(), 32539, 0x20, (uint)spell.id);
return false;
}
if (Utils.XZDistance(positionX, positionZ, target.positionX, target.positionZ) < spell.minRange)
{
// The target is too close.
SendGameMessage(Server.GetWorldManager().GetActor(), 32538, 0x20, (uint)spell.id);
return false;
}
if (target.positionY - positionY > (spell.rangeHeight / 2))
{
// The target is too far above you.
SendGameMessage(Server.GetWorldManager().GetActor(), 32540, 0x20, (uint)spell.id);
return false;
}
if (positionY - target.positionY > (spell.rangeHeight / 2))
{
// The target is too far below you.
SendGameMessage(Server.GetWorldManager().GetActor(), 32541, 0x20, (uint)spell.id);
return false;
}
if (!IsValidTarget(target, spell.mainTarget) || !spell.IsValidMainTarget(this, target))
{
// error packet is set in IsValidTarget
@ -2169,13 +2188,38 @@ namespace FFXIVClassic_Map_Server.Actors
return false;
}
if (Utils.Distance(positionX, positionY, positionZ, target.positionX, target.positionY, target.positionZ) > skill.range)
//Original game checked height difference before horizontal distance
if (target.positionY - positionY > (skill.rangeHeight / 2))
{
// The target is out of range.
SendGameMessage(Server.GetWorldManager().GetActor(), 32539, 0x20, (uint)skill.id);
// The target is too far above you.
SendGameMessage(Server.GetWorldManager().GetActor(), 32540, 0x20, (uint)skill.id);
return false;
}
if (positionY - target.positionY > (skill.rangeHeight / 2))
{
// The target is too far below you.
SendGameMessage(Server.GetWorldManager().GetActor(), 32541, 0x20, (uint)skill.id);
return false;
}
var targetDist = Utils.XZDistance(positionX, positionZ, target.positionX, target.positionZ);
if (targetDist > skill.range)
{
// The target is out of range.
SendGameMessage(Server.GetWorldManager().GetActor(), 32537, 0x20, (uint)skill.id);
return false;
}
if (targetDist < skill.minRange)
{
// The target is too close.
SendGameMessage(Server.GetWorldManager().GetActor(), 32538, 0x20, (uint)skill.id);
return false;
}
if (!IsValidTarget(target, skill.validTarget) || !skill.IsValidMainTarget(this, target))
{
// error packet is set in IsValidTarget
@ -2379,7 +2423,8 @@ namespace FFXIVClassic_Map_Server.Actors
//If we're starting or continuing a combo chain, add the status effect and combo cost bonus
if (comboIds[0] != 0)
{
StatusEffect comboEffect = new StatusEffect(this, (uint) StatusEffectId.Combo, 1, 0, 13);
StatusEffect comboEffect = new StatusEffect(this, Server.GetWorldManager().GetStatusEffect((uint) StatusEffectId.Combo));
comboEffect.SetDuration(13);
comboEffect.SetOverwritable(1);
statusEffects.AddStatusEffect(comboEffect, this, true);
playerWork.comboCostBonusRate = 1;
@ -2469,5 +2514,12 @@ namespace FFXIVClassic_Map_Server.Actors
}
}
}
public bool HasItemEquippedInSlot(uint itemId, ushort slot)
{
var equippedItem = equipment.GetItemAtSlot(slot);
return equippedItem != null && equippedItem.itemId == itemId;
}
}
}

View file

@ -32,8 +32,8 @@ namespace FFXIVClassic_Map_Server.packets.send.actor
binWriter.Write((byte)breakage);
binWriter.Write((byte)(((leftChant & 0xF) << 4) | (rightChant & 0xF)));
binWriter.Write((byte)(guard & 0xF));
binWriter.Write((byte)((wasteStat & 0xF) << 4));
binWriter.Write((byte)(statMode & 0xF));
binWriter.Write((byte)(wasteStat));
binWriter.Write((byte)(statMode));
binWriter.Write((byte)0);
binWriter.Write((UInt16)(idleAnimationId&0xFFFF));
}

View file

@ -107,14 +107,14 @@ function onEventStarted(player, actor, triggerName, isTeleport)
if (destination ~= nil) then
randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5);
rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]);
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
--bandaid fix for returning while dead, missing things like weakness and the heal number
if (player:GetHP() == 0) then
player:SetHP(player.GetMaxHP());
player:ChangeState(0);
player:PlayAnimation(0x01000066);
end
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
end
end
end

View file

@ -11,7 +11,7 @@ end;
function onSkillFinish(caster, target, skill, action, actionContainer)
--8032701: Fighter's Gauntlets: Reduces Collusion cooldown by 10 seconds
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8032701 then
if caster.HasItemEquippedInSlot(8032701, 13) then
skill.recastTimeMs = skill.recastTimeMs - 10000;
end

View file

@ -13,7 +13,7 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
--This is for the "Cover" effect the caster receives.
local coverTier = 1
--8032701: Gallant Surcoat: Enhances Cover
if caster.GetEquipment().GetItemAtSlot(10).itemId == 8032701 then
if caster.HasItemEquippedInSlot(8032701, 10) then
coverTier = 2;
end

View file

@ -9,5 +9,9 @@ function onAbilityStart(caster, target, skill)
return 0;
end;
function onSkillFinish(caster, target, skill, action)
function onSkillFinish(caster, target, skill, action, actionContainer)
action.amount = skill.basePotency;
--DoAction handles rates, buffs, dealing damage
action.DoAction(caster, target, skill, actionContainer);
end;

View file

@ -11,7 +11,7 @@ end;
function onSkillFinish(caster, target, skill, action, actionContainer)
--8051401: Gallant Cuisses
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8051401 then
if caster.HasItemEquippedInSlot(8051401, 12) then
ability.statusTier = 2;
end

View file

@ -15,7 +15,7 @@ function onAbilityStart(caster, target, ability)
local magnitude = 100;
--8032704: Drachen Mail
if caster.GetEquipment().GetItemAtSlot(10).itemId == 8032704 then
if caster.HasItemEquippedInSlot(8032704, 10) then
magnitude = 120;
end

View file

@ -9,7 +9,7 @@ end;
function onAbilityStart(caster, target, ability)
--8032703: Fighter's Cuirass: Enhances Vengeance
if caster.GetEquipment().GetItemAtSlot(13).itemId == 8032703 then
if caster.HasItemEquippedInSlot(8032703, 10) then
skill.statusTier = 2;
end

View file

@ -0,0 +1,18 @@
require("global");
properties = {
permissions = 0,
parameters = "ss",
description =
[[
Sets a modifier of player
!setmod <modId> <modVal> |
]],
}
function onTrigger(player, argc, modId, modVal)
local sender = "[setmod] ";
local mod = tonumber(modId)
local val = tonumber(modVal)
player:SetMod(mod, val);
end;

View file

@ -14,14 +14,11 @@ function onTrigger(player, argc, state)
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[setstate] ";
max = tonumber(state) or 0;
for s = 0, max do
if player and player.target then
player.target:ChangeState(s);
wait(0.8);
player:SendMessage(0x20, "", "state: "..s);
end;
end
local s = tonumber(state);
local actor = GetWorldManager():GetActorInWorld(player.currentTarget) or nil;
if player and actor then
actor:ChangeState(s);
wait(0.8);
player:SendMessage(0x20, "", "state: "..s);
end;
end;

View file

@ -14,8 +14,7 @@ function onMagicStart(caster, target, skill)
--8032705: Choral Shirt: Enhances Ballad of Magi
--With Choral Shirt, Ballad gives 26 mp a tick. It could be a flat 6 or multiply by 1.3
--Because minuet seemed like a normal addition I'm assuming this is too
local shirt = caster.GetEquipment().GetItemAtSlot(10);
if shirt and shirt.itemId == 8032705 then
if caster.HasItemEquippedInSlot(8032705, 10) then
mpPerTick = mpPerTick + 6;
end

View file

@ -13,7 +13,7 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
action.amount = skill.basePotency;
--8071401: Gallant Gauntlets: Enhances Holy Succor
if caster.GetEquipment().GetItemAtSlot(13).itemId == 8071401 then
if caster.HasItemEquippedInSlot(8071401, 13) then
action.amount = action.amount * 1.10;
end

View file

@ -14,8 +14,7 @@ function onMagicStart(caster, target, skill)
--8071405: Choral Ringbands: Enhances Minuet of Rigor
--With Choral Tights, Minuet gives 60 ACC/MACC at 50. Unsure what it is at lower levels (ie if it's a flat added 25 MP or a multiplier)
--Assuming it's a flat 25 because that makes more sense than multiplying by 1.714
local gloves = caster.GetEquipment().GetItemAtSlot(13);
if gloves and gloves.itemId == 8071405 then
if caster.HasItemEquippedInSlot(8071405, 13) then
acc = acc + 25;
end

View file

@ -12,8 +12,7 @@ function onMagicStart(caster, target, skill)
local tpPerTick = 50;
--8051405: Choral Tights: Enhances Paeon Of War
local pants = caster.GetEquipment().GetItemAtSlot(12);
if pants and pants.itemId == 8051405 then
if caster.HasItemEquippedInSlot(8051405, 12) then
tpPerTick = 60;
end

View file

@ -17,7 +17,8 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
local slope = 0.625;
local intercept = -110;
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8051406 then
--8051406: Healer's Culottes: Enhances Regen
if caster.HasItemEquippedInSlot(8051406, 14) then
--I don't know if the numbers in that thread are completely correct because the AF Regen table has 3 1555s in a row.
--If we assume that AF boots multiply both static parts of the regenTick equation by 1.25, we get a decently close match to actual numbers
slope = slope * 1.25;
@ -26,7 +27,6 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
local regenTick = (slope * caster.GetMod(modifiersGlobal.MagicEnhancePotency)) + intercept) + 1;
spell.statusMagnitude = regenTick;
--DoAction handles rates, buffs, dealing damage

View file

@ -1,14 +0,0 @@
require("global");
require("weaponskill");
function onSkillPrepare(caster, target, skill)
return 0;
end;
function onSkillStart(caster, target, skill)
return 0;
end;
function onSkillFinish(caster, target, skill, action)
return weaponskill.onSkillFinish(caster, target, skill, action);
end;

View file

@ -81,7 +81,8 @@ modifiersGlobal =
Regain = 70, --TP regen, should be -90 out of combat, Invigorate sets to 100+ depending on traits
RegenDown = 71, --Damage over time effects. Separate from normal Regen because of how they are displayed in game
Stoneskin = 72, --Nullifies damage
MinimumTpLock = 73
MinimumTpLock = 73, --Don't let TP fall below this, used in openings
KnockbackImmune = 74 --Immune to knockback effects when above 0
}
mobModifiersGlobal =

View file

@ -28,6 +28,16 @@ function getDistanceBetweenActors(actor1, actor2)
return math.sqrt(dx * dx + dy * dy + dz *dz);
end
function getXZDistanceBetweenActors(actor1, actor2)
local pos1 = actor1:GetPos();
local pos2 = actor2:GetPos();
local dx = pos1[0] - pos2[0];
local dz = pos1[2] - pos2[2];
return math.sqrt(dx * dx + dz *dz);
end
function math.Clamp(val, lower, upper)
if lower > upper then lower, upper = upper, lower end -- swap if boundaries supplied the wrong way
return math.max(lower, math.min(upper, val))

View file

@ -31,14 +31,20 @@ CREATE TABLE `server_battle_commands` (
`mainTarget` tinyint(3) unsigned NOT NULL,
`validTarget` tinyint(3) unsigned NOT NULL,
`aoeType` tinyint(3) unsigned NOT NULL,
`aoeRange` int(10) NOT NULL DEFAULT '0',
`aoeRange` float NOT NULL DEFAULT '0',
`aoeMinRange` float NOT NULL DEFAULT '0',
`aoeConeAngle` float NOT NULL DEFAULT '0',
`aoeRotateAngle` float NOT NULL DEFAULT '0',
`aoeTarget` tinyint(3) NOT NULL,
`basePotency` smallint(5) 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,
`minRange` int(10) unsigned NOT NULL DEFAULT '0',
`bestRange` int(10) unsigned NOT NULL DEFAULT '0',
`rangeHeight` int(10) unsigned NOT NULL DEFAULT '10',
`rangeWidth` int(10) unsigned NOT NULL DEFAULT '2',
`statusId` int(10) NOT NULL,
`statusDuration` int(10) unsigned NOT NULL,
`statusChance` float NOT NULL DEFAULT '0.5',
@ -73,148 +79,157 @@ CREATE TABLE `server_battle_commands` (
LOCK TABLES `server_battle_commands` WRITE;
/*!40000 ALTER TABLE `server_battle_commands` DISABLE KEYS */;
set autocommit=0;
INSERT INTO `server_battle_commands` VALUES (27100,'second_wind',2,6,3,1,1,0,0,0,100,1,0,0,0,0,0,0,0,0,0,45,0,0,14,519,2,3,234889735,0,0,0,0,0,30320,3,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27101,'blindside',2,14,3,1,1,0,0,0,100,1,0,0,0,0,223237,60,1,0,0,60,0,0,14,635,2,3,234889851,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27102,'taunt',2,42,4,32,32,0,0,0,100,1,0,0,25,0,223073,5,1,0,0,60,0,0,14,517,2,3,234889733,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27103,'featherfoot',2,2,3,1,1,0,0,0,100,1,0,0,0,0,223075,30,1,0,0,60,0,0,14,535,2,3,234889751,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27104,'fists_of_fire',2,34,4,1,1,0,0,0,100,1,0,0,0,0,223209,4294967295,1,0,0,10,0,0,14,684,2,3,234889900,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27105,'fists_of_earth',2,22,4,1,1,0,0,0,100,1,0,0,0,0,223210,4294967295,1,0,0,10,0,0,14,685,2,3,234889901,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27106,'hundred_fists',15,50,0,1,1,0,0,0,100,1,0,0,0,0,223244,15,1,0,0,900,0,0,14,712,2,3,234889928,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27107,'spinning_heel',15,35,0,1,1,0,0,0,100,1,0,0,0,0,223245,20,1,0,0,120,0,0,14,718,2,3,234889934,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27108,'shoulder_tackle',15,30,0,32,32,0,0,0,100,1,0,0,15,0,223015,10,0.75,0,0,60,0,0,18,1048,205,3,302830616,0,0,0,0,0,30301,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27109,'fists_of_wind',15,40,0,1,1,0,0,0,100,1,0,0,0,0,223211,4294967295,1,0,0,10,0,0,14,720,2,3,234889936,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27110,'pummel',2,1,1,32,32,0,0,0,100,1,1,0,5,0,0,0,0,0,0,10,0,1000,18,1027,1,3,301995011,0,27111,27113,1,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27111,'concussive_blow',2,10,1,32,32,0,0,0,100,1,4,0,5,0,223007,30,0,0,0,30,0,1500,18,20,3,3,302002196,0,27112,0,2,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27112,'simian_thrash',2,50,4,32,32,0,0,0,100,9,0,0,5,0,0,0,0,0,0,80,0,2000,18,1003,202,3,302818283,0,0,0,3,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27113,'aura_pulse',2,38,4,32,32,1,8,1,100,1,0,0,5,0,223003,30,0,0,0,40,0,1500,18,66,203,3,302821442,0,0,0,2,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27114,'pounce',2,4,4,32,32,0,0,0,100,1,2,0,5,0,223015,10,0,0,0,20,0,1500,18,8,3,3,302002184,0,27115,27117,1,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27115,'demolish',2,30,1,32,32,0,0,0,100,1,0,0,5,0,0,0,0,0,0,30,0,1500,18,1028,2,3,301999108,0,27116,0,2,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27116,'howling_fist',2,46,4,32,32,0,0,0,100,1,4,0,5,0,0,0,0,0,0,80,0,3000,18,1029,2,3,301999109,0,0,0,3,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27117,'sucker_punch',2,26,1,32,32,0,0,0,100,1,4,0,5,0,0,0,0,0,0,15,0,1000,18,73,3,3,302002249,0,0,0,3,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27118,'dragon_kick',15,45,0,32,32,0,0,0,100,1,0,0,5,0,223013,10,0,0,0,60,0,2000,18,1041,204,3,302826513,0,0,0,0,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27119,'haymaker',2,18,4,32,32,0,0,0,100,1,0,2,5,0,223015,10,0.75,0,0,5,0,250,18,23,201,3,302813207,0,0,0,0,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27140,'sentinel',3,22,3,1,1,0,0,0,100,1,0,0,0,0,223062,15,1,0,0,90,0,0,14,526,2,3,234889742,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27141,'aegis_boon',3,6,8,1,1,0,0,0,100,1,0,0,0,0,223058,30,1,0,0,60,0,0,14,583,21,3,234967623,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27142,'rampart',3,2,3,1,5,0,8,1,100,1,0,0,0,0,223064,60,1,0,0,120,0,0,14,536,2,3,234889752,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27143,'tempered_will',3,42,8,1,1,0,0,0,100,1,0,0,0,0,223068,20,1,0,0,180,0,0,14,515,2,3,234889731,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27144,'outmaneuver',3,34,8,1,1,0,0,0,100,1,0,0,0,0,223236,30,1,0,0,90,0,0,14,512,21,3,234967552,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27145,'flash',3,14,3,32,32,0,8,0,100,1,0,0,25,0,223007,10,0,0,0,30,0,0,14,696,2,3,234889912,0,0,0,0,0,30101,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27146,'cover',16,30,0,12,12,0,0,0,100,1,0,0,15,0,223173,15,1,0,0,60,0,0,14,725,2,3,234889941,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27147,'divine_veil',16,35,0,1,1,0,0,0,100,1,0,0,0,0,223248,20,1,0,0,60,0,0,14,713,2,3,234889929,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27148,'hallowed_ground',16,50,0,1,1,0,0,0,100,1,0,0,0,0,223249,20,1,0,0,900,0,0,14,709,2,3,234889925,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27149,'holy_succor',16,40,0,9,9,0,0,0,100,1,0,0,15,0,0,0,0,3,2000,10,100,0,1,701,1,3,16782013,0,0,0,0,0,30328,3,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27150,'fast_blade',3,1,1,32,32,0,0,0,100,1,1,0,5,0,0,0,0,0,0,10,0,1000,18,1023,1,3,301995007,0,27151,27152,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27151,'flat_blade',3,26,1,32,32,0,0,0,100,1,0,0,5,0,0,0,0,0,0,10,0,1500,18,1024,2,3,301999104,0,0,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27152,'savage_blade',3,10,1,32,32,0,0,0,100,1,0,0,5,0,0,0,0,0,0,30,0,1000,18,1025,1,3,301995009,0,27153,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27153,'goring_blade',3,50,8,32,32,0,0,0,100,1,2,0,5,0,223206,30,0,0,0,60,0,3000,18,1026,301,3,303223810,0,0,0,3,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27154,'riot_blade',3,30,8,32,32,0,0,0,100,1,2,0,15,0,223038,30,0,0,0,80,0,2000,18,75,2,3,301998155,0,27155,0,1,0,30301,2,1,1,1);
INSERT INTO `server_battle_commands` VALUES (27155,'rage_of_halone',3,46,8,32,32,0,0,0,100,5,0,0,5,0,0,0,0,0,0,20,0,1500,18,1008,302,3,303227888,0,0,0,2,-40,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27156,'shield_bash',3,18,17,32,32,0,0,0,100,1,0,0,5,0,223015,5,0.75,0,0,30,0,250,18,5,26,3,302096389,0,0,0,0,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27157,'war_drum',3,38,24,32,32,1,8,0,100,1,0,4,5,0,0,0,0,0,0,60,0,500,14,502,21,3,234967542,0,0,0,0,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27158,'phalanx',3,4,8,32,32,0,0,0,100,1,0,4,5,0,0,0,0,0,0,5,0,250,18,32,1,3,301994016,0,27159,0,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27159,'spirits_within',16,45,0,32,32,0,0,0,100,1,0,0,5,0,0,0,0,0,0,60,0,3000,18,1044,304,3,303236116,0,0,0,2,50,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27180,'provoke',4,14,3,32,32,0,0,0,100,1,0,0,25,0,223034,30,0,0,0,30,0,0,14,600,2,3,234889816,0,0,0,0,0,30101,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27181,'foresight',4,2,3,1,1,0,0,0,100,1,0,0,0,0,223083,30,1,0,0,60,0,0,14,545,2,3,234889761,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27182,'bloodbath',4,6,3,1,1,0,0,0,100,1,0,0,0,0,223081,30,1,0,0,60,0,0,14,581,2,3,234889797,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27183,'berserk',4,22,32,1,1,0,0,0,100,1,0,0,0,0,223207,4294967295,1,0,0,10,0,0,14,682,2,3,234889898,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27184,'rampage',4,34,32,1,1,0,0,0,100,1,0,0,0,0,223208,4294967295,1,0,0,10,0,0,14,546,2,3,234889762,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27185,'enduring_march',4,42,32,1,1,0,0,0,100,1,0,0,0,0,223078,20,1,0,0,180,0,0,14,539,2,3,234889755,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27186,'vengeance',17,30,0,1,1,0,0,0,100,1,0,0,0,0,223250,15,1,0,0,150,0,0,14,714,2,3,234889930,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27187,'antagonize',17,35,0,1,1,0,0,0,100,1,0,0,0,0,223251,15,1,0,0,120,0,0,14,715,2,3,234889931,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27188,'collusion',17,40,0,12,12,0,0,0,100,1,0,0,15,0,223097,15,1,0,0,90,0,0,14,711,2,3,234889927,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27189,'mighty_strikes',17,50,0,1,1,0,0,0,100,1,0,0,0,0,223252,15,1,0,0,900,0,0,14,716,2,3,234889932,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27190,'heavy_swing',4,1,1,32,32,0,0,0,100,1,1,0,5,0,0,0,0,0,0,10,0,1000,18,14,1,3,301993998,0,27191,0,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27191,'skull_sunder',4,10,1,32,32,0,0,0,100,1,0,0,5,0,0,0,0,0,0,30,0,1500,18,43,1,3,301994027,0,27192,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27192,'steel_cyclone',17,45,0,32,32,1,8,0,100,1,0,0,5,0,223015,3,0,0,0,30,0,2000,18,1040,404,3,303645712,0,0,0,3,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27193,'brutal_swing',4,4,1,32,32,0,0,0,100,1,4,0,5,0,0,0,0,0,0,20,0,1500,18,15,3,3,302002191,0,27194,0,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27194,'maim',4,26,1,32,32,0,0,0,100,1,0,0,5,0,0,0,0,0,0,30,0,1500,18,88,1,3,301994072,0,27195,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27195,'godsbane',4,50,32,32,32,0,0,0,100,3,0,0,5,0,0,0,0,0,0,60,0,3000,18,1014,402,3,303637494,0,0,0,3,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27196,'path_of_the_storm',4,38,32,32,32,0,0,0,100,1,2,0,5,0,228021,30,0,0,0,30,0,1500,18,44,401,3,303632428,0,27197,0,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27197,'whirlwind',4,46,32,32,32,1,8,0,100,1,0,0,5,0,0,0,0,0,0,80,0,3000,18,1015,403,3,303641591,0,0,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27198,'fracture',4,18,32,32,32,0,0,0,100,1,0,3,5,0,223013,8,0.75,0,0,40,0,500,18,42,3,3,302002218,0,0,0,0,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27199,'overpower',4,30,1,32,32,2,0,0,100,1,0,3,5,0,0,0,0,0,0,5,0,250,18,89,1,3,301994073,0,0,0,0,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27220,'hawks_eye',7,6,3,1,1,0,0,0,100,1,0,0,0,0,223106,15,1,0,0,90,0,0,14,516,2,3,234889732,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27221,'quelling_strike',7,22,3,1,1,0,0,0,100,1,0,0,0,0,223104,30,1,0,0,60,0,0,14,614,2,3,234889830,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27222,'decoy',7,2,3,1,1,0,0,0,100,1,0,0,0,0,223108,60,1,0,0,90,100,0,14,565,2,3,234889781,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27223,'chameleon',7,42,3,1,1,0,0,0,100,1,0,0,0,0,0,0,0,0,0,180,0,0,14,504,2,3,234889720,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27224,'barrage',7,34,64,1,1,0,0,0,100,1,0,0,0,0,223220,60,1,0,0,90,0,0,14,683,2,3,234889899,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27225,'raging_strike',7,14,64,1,1,0,0,0,100,1,0,0,0,0,223221,4294967295,1,0,0,10,0,0,14,632,2,3,234889848,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27226,'swiftsong',7,26,64,1,5,1,20,0,100,1,0,0,0,0,223224,180,1,0,0,10,100,0,1,150,1,3,16781462,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27227,'battle_voice',18,50,0,1,5,1,20,0,100,1,0,0,0,0,223029,60,1,0,0,900,0,0,14,721,2,3,234889937,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27228,'heavy_shot',7,1,1,32,32,0,0,0,100,1,0,0,25,8,0,0,0,0,0,10,0,1000,18,1036,4,3,302007308,0,27229,27231,1,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27229,'leaden_arrow',7,10,1,32,32,0,0,0,100,1,0,0,25,0,228021,30,0.75,0,0,30,0,1500,18,1035,4,3,302007307,0,27230,0,2,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27230,'wide_volley',7,50,64,32,32,1,8,0,100,1,0,0,25,0,0,0,0,0,0,80,0,2000,18,18,703,3,304869394,0,0,0,3,-20,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27231,'quick_nock',7,38,64,32,32,2,0,0,100,1,0,0,10,0,0,0,0,0,0,180,0,1000,18,1017,702,3,304866297,0,27232,0,2,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27232,'rain_of_death',18,45,0,32,32,1,8,0,100,1,0,0,25,0,223015,5,0.75,0,0,30,0,3000,18,1037,704,3,304874509,0,0,0,3,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27233,'piercing_arrow',7,4,1,32,32,0,0,0,100,1,0,0,25,8,0,0,0,0,0,20,0,1000,18,1038,1,3,301995022,0,27234,27236,1,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27234,'gloom_arrow',7,30,1,32,32,0,0,0,100,1,0,0,25,0,223007,30,0,0,0,10,0,1000,18,1039,4,3,302007311,0,27235,0,2,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27235,'bloodletter',7,46,64,32,32,0,0,0,100,1,0,0,25,0,223241,30,0.75,0,0,80,0,1500,18,53,701,3,304861237,0,0,0,3,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27236,'shadowbind',7,18,64,32,32,0,0,0,100,1,0,0,25,0,228011,15,0.9,0,0,40,0,250,18,17,4,3,302006289,0,0,0,2,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27237,'ballad_of_magi',18,30,0,1,5,1,20,0,100,1,0,0,0,0,223254,180,1,8,3000,10,100,0,1,709,1,3,16782021,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27238,'paeon_of_war',18,40,0,1,5,1,20,0,100,1,0,0,0,0,223255,180,1,8,3000,10,50,1000,1,710,1,3,16782022,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27239,'minuet_of_rigor',18,35,0,1,5,1,20,0,100,1,0,0,0,0,223256,180,1,8,3000,10,100,0,1,711,1,3,16782023,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27258,'refill',7,1,0,1,1,0,0,0,100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,32613,3,0,0,0);
INSERT INTO `server_battle_commands` VALUES (27259,'light_shot',7,1,0,32,32,0,0,0,100,1,0,0,25,0,0,0,0,0,0,0,0,0,17,0,1,3,285216768,0,0,0,0,0,30301,3,1,0,1);
INSERT INTO `server_battle_commands` VALUES (27260,'invigorate',8,14,3,1,1,0,0,0,100,1,0,0,0,0,223094,30,1,0,0,90,0,0,14,575,2,3,234889791,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27261,'power_surge',8,34,128,1,1,0,0,0,100,1,0,0,0,0,223212,60,1,0,0,10,0,0,14,686,2,3,234889902,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27262,'life_surge',8,22,128,1,1,0,0,0,100,1,0,0,0,0,223215,180,1,0,0,15,0,250,14,687,2,3,234889903,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27263,'dread_spike',8,42,128,1,1,0,0,0,100,1,0,0,0,0,223218,30,1,0,0,120,0,0,14,686,2,3,234889902,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27264,'blood_for_blood',8,6,3,1,1,0,0,0,100,1,0,0,0,0,223219,60,1,0,0,60,0,0,14,689,2,3,234889905,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27265,'keen_flurry',8,26,3,1,1,0,0,0,100,1,0,0,0,0,223091,30,1,0,0,90,0,0,14,569,2,3,234889785,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27266,'jump',19,30,0,32,32,0,0,0,100,1,0,0,25,0,0,0,0,0,0,60,0,0,18,1045,804,3,305284117,0,0,0,0,0,30301,3,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27267,'elusive_jump',19,40,0,1,1,0,0,0,100,1,0,0,0,0,0,0,0,0,0,180,0,0,18,1046,806,3,305292310,0,0,0,0,0,30101,3,0,0,0);
INSERT INTO `server_battle_commands` VALUES (27268,'dragonfire_dive',19,50,0,32,32,1,0,0,100,1,0,0,25,0,0,0,0,0,0,900,0,0,18,1045,804,3,305284117,0,0,0,0,0,30301,3,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27269,'true_thrust',8,1,1,32,32,0,0,0,100,1,1,0,5,0,0,0,0,0,0,10,0,1000,18,1030,2,3,301999110,0,27270,27273,1,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27270,'leg_sweep',8,30,1,32,32,1,0,0,100,1,0,0,5,0,223015,8,0,0,0,30,0,1000,18,37,1,3,301994021,0,27271,0,2,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27271,'doom_spike',8,46,128,32,32,3,0,0,100,1,0,0,5,0,0,0,0,0,0,60,0,3000,18,83,801,3,305270867,0,0,0,3,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27272,'disembowel',19,35,0,32,32,0,0,0,100,1,0,0,5,0,223005,15,0.75,0,0,30,0,750,18,1042,2,3,301999122,0,0,0,0,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27273,'heavy_thrust',8,10,1,32,32,0,0,0,100,1,0,0,5,0,223015,4,0.75,0,0,20,0,1500,18,1031,1,3,301995015,0,0,0,0,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27274,'vorpal_thrust',8,2,1,32,32,0,0,0,100,1,2,0,5,0,0,0,0,0,0,20,0,1500,18,1032,2,3,301999112,0,27275,0,1,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27275,'impulse_drive',8,18,1,32,32,0,0,0,100,1,4,0,5,0,0,0,0,0,0,30,0,1500,18,1033,2,3,301999113,0,27276,27277,2,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27276,'chaos_thrust',8,50,128,32,32,0,0,0,100,6,0,0,5,0,0,0,0,0,0,80,0,3000,18,40,802,3,305274920,0,0,0,3,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27277,'ring_of_talons',19,45,0,32,32,1,8,1,100,1,0,0,5,0,0,0,0,0,0,60,0,2000,18,1009,803,3,305279985,0,0,0,3,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27278,'feint',8,4,1,32,32,0,0,0,100,1,0,1,5,0,0,0,0,0,0,10,0,250,18,39,2,3,301998119,0,27272,0,1,100,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27279,'full_thrust',8,38,128,32,32,0,0,0,100,1,0,1,5,0,0,0,0,0,0,30,0,250,18,1034,801,3,305271818,0,0,0,0,50,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27300,'dark_seal',22,14,3,1,1,0,0,0,100,1,0,0,0,0,223229,30,1,0,0,90,0,0,14,518,2,3,234889734,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27301,'resonance',22,22,3,1,1,0,0,0,100,1,0,0,0,0,223230,30,1,0,0,90,0,0,14,669,2,3,234889885,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27302,'excruciate',22,38,256,1,1,0,0,0,100,1,0,0,0,0,223231,30,1,0,0,90,0,0,14,694,2,3,234889910,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27303,'necrogenesis',22,6,3,1,1,0,0,0,100,1,0,0,0,0,223232,30,1,0,0,90,0,0,14,695,2,3,234889911,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27304,'parsimony',22,2,256,1,1,0,0,0,100,1,0,0,0,0,223233,30,1,0,0,90,0,0,14,568,2,3,234889784,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27305,'convert',26,30,0,1,1,0,0,0,100,1,0,0,0,0,0,0,0,0,0,450,0,0,14,724,2,3,234889940,0,0,0,0,0,30101,3,0,0,0);
INSERT INTO `server_battle_commands` VALUES (27306,'sleep',22,42,256,32,32,0,0,0,100,1,0,0,25,0,228001,60,0.9,2,3000,0,75,0,1,651,1,3,16781963,0,0,0,0,0,30328,4,4,12,0);
INSERT INTO `server_battle_commands` VALUES (27307,'sanguine_rite',22,30,3,1,1,0,0,0,100,1,0,0,0,0,223234,20,1,0,0,60,120,0,1,152,1,3,16781464,0,0,0,0,0,30328,4,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27308,'blizzard',22,4,256,32,32,0,0,0,100,1,0,0,25,0,228021,30,0.75,2,3000,10,90,0,1,502,1,3,16781814,0,0,0,0,0,30301,4,2,6,0);
INSERT INTO `server_battle_commands` VALUES (27309,'blizzara',22,26,256,32,32,1,0,0,100,1,0,0,25,0,228011,30,0.75,0,0,40,150,0,1,506,1,3,16781818,0,0,0,0,0,30301,4,2,6,0);
INSERT INTO `server_battle_commands` VALUES (27310,'fire',22,10,3,32,32,1,0,0,100,1,0,0,25,0,0,0,0,2,3000,8,105,0,1,501,1,3,16781813,0,27311,0,1,0,30301,4,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27311,'fira',22,34,3,32,32,1,0,0,100,1,0,0,25,0,0,0,0,2,5000,16,180,0,1,504,1,3,16781816,0,27312,0,2,0,30301,4,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27312,'firaga',22,50,256,32,32,1,0,0,100,1,0,0,25,0,0,0,0,2,8000,7,255,0,1,700,1,3,16782012,0,0,0,3,0,30301,4,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27313,'thunder',22,1,3,32,32,0,0,0,100,1,0,0,25,0,0,0,0,2,2000,6,75,0,1,503,1,3,16781815,0,27314,0,1,0,30301,4,2,9,0);
INSERT INTO `server_battle_commands` VALUES (27314,'thundara',22,18,256,32,32,0,0,0,100,1,0,0,25,0,223015,4,0.75,0,0,30,135,0,1,508,1,3,16781820,0,27315,27316,2,0,30301,4,2,9,0);
INSERT INTO `server_battle_commands` VALUES (27315,'thundaga',22,46,256,32,32,0,0,0,100,1,0,0,25,0,0,0,0,2,5000,45,195,0,1,509,1,3,16781821,0,0,0,3,0,30301,4,2,9,0);
INSERT INTO `server_battle_commands` VALUES (27316,'burst',26,50,0,32,32,0,0,0,100,1,0,0,25,0,0,0,0,2,4000,900,90,0,1,705,1,3,16782017,0,0,0,3,0,30301,4,2,9,0);
INSERT INTO `server_battle_commands` VALUES (27317,'sleepga',26,45,0,32,32,1,8,0,100,1,0,0,25,0,228001,60,0.9,2,4000,0,100,0,1,704,1,3,16782016,0,0,0,0,0,30328,4,4,12,0);
INSERT INTO `server_battle_commands` VALUES (27318,'flare',26,40,0,1,32,1,8,1,100,1,0,0,25,0,223262,30,0.75,2,8000,120,200,0,1,706,1,3,16782018,0,0,0,0,0,30301,4,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27319,'freeze',26,35,0,32,32,0,0,0,100,1,0,0,25,0,0,0,0,2,5000,120,120,0,1,707,1,3,16782019,0,0,0,0,0,30301,4,2,6,0);
INSERT INTO `server_battle_commands` VALUES (27340,'sacred_prism',23,34,3,1,1,0,0,0,100,1,0,0,0,0,223225,60,1,0,0,90,0,0,14,690,2,3,234889906,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27341,'shroud_of_saints',23,38,512,1,1,0,0,0,100,1,0,0,0,0,223226,20,1,0,0,180,0,0,14,691,2,3,234889907,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27342,'cleric_stance',23,10,512,1,1,0,0,0,100,1,0,0,0,0,223227,4294967295,1,0,0,30,0,0,14,692,2,3,234889908,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27343,'blissful_mind',23,14,512,1,1,0,0,0,100,1,0,0,0,0,223228,4294967295,1,0,0,30,0,0,14,693,2,3,234889909,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27344,'presence_of_mind',27,30,0,1,1,0,0,0,100,1,0,0,0,0,223116,30,1,0,0,300,0,0,14,722,2,3,234889938,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27345,'benediction',27,50,0,1,5,1,20,1,100,1,0,0,0,0,0,0,0,0,0,900,0,0,14,723,2,3,234889939,0,0,0,0,0,30320,3,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27346,'cure',23,2,3,9,9,0,0,0,100,1,0,0,25,0,0,0,0,3,2000,5,40,0,1,101,1,3,16781413,0,0,0,0,0,30320,4,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27347,'cura',23,30,512,9,9,0,0,0,100,1,0,0,25,0,0,0,0,3,2000,5,100,0,1,103,1,3,16781415,0,0,0,0,0,30320,4,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27348,'curaga',23,46,512,5,5,1,15,0,100,1,0,0,25,0,0,0,0,3,3000,10,150,0,1,146,1,3,16781458,0,0,0,0,0,30320,4,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27349,'raise',23,18,512,130,130,0,0,0,100,1,0,0,25,0,0,0,0,3,10000,300,150,0,1,148,1,3,16781460,0,0,0,0,0,30101,4,4,11,0);
INSERT INTO `server_battle_commands` VALUES (27350,'stoneskin',23,26,3,9,9,0,0,0,100,1,0,0,25,0,223133,300,1,3,3000,30,50,0,1,133,1,3,16781445,0,0,0,0,0,30328,4,4,8,0);
INSERT INTO `server_battle_commands` VALUES (27351,'protect',23,6,3,5,5,1,20,0,100,1,0,0,25,0,223129,300,1,3,3000,30,80,0,1,1085,1,3,16782397,0,0,0,0,0,30328,4,4,11,0);
INSERT INTO `server_battle_commands` VALUES (27352,'repose',23,50,0,32,32,0,0,0,100,1,0,0,25,0,228001,60,0.9,3,3000,0,80,0,1,151,1,3,16781463,0,0,0,0,0,30328,4,4,10,0);
INSERT INTO `server_battle_commands` VALUES (27353,'aero',23,4,3,32,32,0,0,0,100,1,0,0,25,0,223235,20,0.75,3,3000,6,75,0,1,510,1,3,16781822,0,27354,0,1,0,30301,4,2,7,0);
INSERT INTO `server_battle_commands` VALUES (27354,'aerora',23,42,512,32,32,1,0,0,100,1,0,0,25,0,0,0,0,3,4000,20,150,0,1,511,1,3,16781823,0,0,0,2,0,30301,4,2,7,0);
INSERT INTO `server_battle_commands` VALUES (27355,'stone',23,1,3,32,32,0,0,0,100,1,0,0,25,0,223243,10,0.75,3,2000,6,75,0,1,513,1,3,16781825,0,27356,0,1,0,30301,4,2,8,0);
INSERT INTO `server_battle_commands` VALUES (27356,'stonera',23,22,512,32,32,1,0,0,100,1,0,0,25,0,228021,30,0.75,3,3000,30,150,0,1,514,1,3,16781826,0,0,0,2,0,30301,4,2,8,0);
INSERT INTO `server_battle_commands` VALUES (27357,'esuna',27,40,0,9,9,0,0,0,100,1,0,0,25,0,0,0,0,3,2000,10,40,0,1,702,1,3,16782014,0,0,0,0,0,30329,4,0,13,0);
INSERT INTO `server_battle_commands` VALUES (27358,'regen',27,35,0,9,9,0,0,0,100,1,0,0,25,0,223180,45,1,3,2000,5,20,0,1,703,1,3,16782015,0,0,0,0,0,30328,4,4,13,0);
INSERT INTO `server_battle_commands` VALUES (27359,'holy',27,45,0,1,32,1,8,1,100,1,0,0,25,0,228011,10,0.9,0,0,300,100,0,1,708,1,3,16782020,0,0,0,0,0,30301,4,2,11,0);
INSERT INTO `server_battle_commands` VALUES (23456,'breath_of_the_lion',0,1,0,1,32,2,12,0,0.5,0,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,1,3,318771200,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (23457,'voice_of_the_lion',0,1,0,1,32,3,20,0,0,0,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,2,3,318775296,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (23458,'breath_of_the_dragon',0,1,0,1,32,2,12,0,0.666667,0.25,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,3,3,318779392,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (23459,'voice_of_the_dragon',0,1,0,1,32,1,22,15,2,0,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,4,3,318783488,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (23460,'breath_of_the_ram',0,1,0,1,32,2,12,0,0.666667,-0.25,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,5,3,318787584,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (23461,'voice_of_the_ram',0,1,0,1,32,1,10,0,2,0,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,6,3,318791680,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (23462,'dissent_of_the_bat',0,1,0,1,32,2,16,0,0.66667,0,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,7,3,318795776,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (23463,'chaotic_chorus',0,1,0,1,32,1,16,0,2,0,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,8,3,318799872,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (23464,'the_scorpions_sting',0,1,0,1,32,2,12,0,0.5,1,1,100,1,0,0,0,0,0,10,2,0,0,0,11,3500,10,0,0,19,0,9,3,318803968,0,0,0,3,0,30301,2,2,9,1);
INSERT INTO `server_battle_commands` VALUES (27100,'second_wind',2,6,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,0,0,0,0,0,45,0,0,14,519,2,3,234889735,0,0,0,0,0,30320,3,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27101,'blindside',2,14,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223237,60,1,0,0,60,0,0,14,635,2,3,234889851,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27102,'taunt',2,42,4,32,32,0,0,0,0,0,0,100,1,0,0,15,0,0,10,2,223073,5,1,0,0,60,0,0,14,517,2,3,234889733,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27103,'featherfoot',2,2,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223075,30,1,0,0,60,0,0,14,535,2,3,234889751,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27104,'fists_of_fire',2,34,4,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223209,4294967295,1,0,0,10,0,0,14,684,2,3,234889900,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27105,'fists_of_earth',2,22,4,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223210,4294967295,1,0,0,10,0,0,14,685,2,3,234889901,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27106,'hundred_fists',15,50,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223244,15,1,0,0,900,0,0,14,712,2,3,234889928,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27107,'spinning_heel',15,35,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223245,20,1,0,0,120,0,0,14,718,2,3,234889934,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27108,'shoulder_tackle',15,30,0,32,32,0,0,0,0,0,0,100,1,0,0,15,0,0,10,2,223015,10,0.75,0,0,60,0,0,18,1048,205,3,302830616,0,0,0,0,0,30301,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27109,'fists_of_wind',15,40,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223211,4294967295,1,0,0,10,0,0,14,720,2,3,234889936,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27110,'pummel',2,1,1,32,32,0,0,0,0,0,0,100,1,1,0,5,0,0,10,2,0,0,0,0,0,10,0,1000,18,1027,1,3,301995011,0,27111,27113,1,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27111,'concussive_blow',2,10,1,32,32,0,0,0,0,0,0,100,1,4,0,5,0,0,10,2,223007,30,0,0,0,30,0,1500,18,20,3,3,302002196,0,27112,0,2,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27112,'simian_thrash',2,50,4,32,32,0,0,0,0,0,0,100,9,0,0,5,0,0,10,2,0,0,0,0,0,80,0,2000,18,1003,202,3,302818283,0,0,0,3,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27113,'aura_pulse',2,38,4,32,32,1,8,0,0,0,1,100,1,0,0,5,0,0,10,2,223003,30,0,0,0,40,0,1500,18,66,203,3,302821442,0,0,0,2,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27114,'pounce',2,4,4,32,32,0,0,0,0,0,0,100,1,2,0,5,0,0,10,2,223015,10,0,0,0,20,0,1500,18,8,3,3,302002184,0,27115,27117,1,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27115,'demolish',2,30,1,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,0,0,0,0,0,30,0,1500,18,1028,2,3,301999108,0,27116,0,2,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27116,'howling_fist',2,46,4,32,32,0,0,0,0,0,0,100,1,4,0,5,0,0,10,2,0,0,0,0,0,80,0,3000,18,1029,2,3,301999109,0,0,0,3,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27117,'sucker_punch',2,26,1,32,32,0,0,0,0,0,0,100,1,4,0,5,0,0,10,2,0,0,0,0,0,15,0,1000,18,73,3,3,302002249,0,0,0,3,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27118,'dragon_kick',15,45,0,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,223013,10,0,0,0,60,0,2000,18,1041,204,3,302826513,0,0,0,0,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27119,'haymaker',2,18,4,32,32,0,0,0,0,0,0,100,1,0,2,5,0,0,10,2,223015,10,0.75,0,0,5,0,250,18,23,201,3,302813207,0,0,0,0,0,30301,2,1,3,0);
INSERT INTO `server_battle_commands` VALUES (27140,'sentinel',3,22,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223062,15,1,0,0,90,0,0,14,526,2,3,234889742,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27141,'aegis_boon',3,6,8,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223058,30,1,0,0,60,0,0,14,583,21,3,234967623,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27142,'rampart',3,2,3,1,5,0,8,0,0,0,1,100,1,0,0,0,0,0,10,2,223064,60,1,0,0,120,0,0,14,536,2,3,234889752,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27143,'tempered_will',3,42,8,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223068,20,1,0,0,180,0,0,14,515,2,3,234889731,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27144,'outmaneuver',3,34,8,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223236,30,1,0,0,90,0,0,14,512,21,3,234967552,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27145,'flash',3,14,3,32,32,0,8,0,0,0,0,100,1,0,0,15,0,0,10,2,223007,10,0,0,0,30,0,0,14,696,2,3,234889912,0,0,0,0,0,30101,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27146,'cover',16,30,0,12,12,0,0,0,0,0,0,100,1,0,0,15,0,0,10,2,223173,15,1,0,0,60,0,0,14,725,2,3,234889941,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27147,'divine_veil',16,35,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223248,20,1,0,0,60,0,0,14,713,2,3,234889929,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27148,'hallowed_ground',16,50,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223249,20,1,0,0,900,0,0,14,709,2,3,234889925,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27149,'holy_succor',16,40,0,9,9,0,0,0,0,0,0,100,1,0,0,15,0,0,10,2,0,0,0,3,2000,10,100,0,1,701,1,3,16782013,0,0,0,0,0,30328,3,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27150,'fast_blade',3,1,1,32,32,0,0,0,0,0,0,100,1,1,0,5,0,0,10,2,0,0,0,0,0,10,0,1000,18,1023,1,3,301995007,0,27151,27152,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27151,'flat_blade',3,26,1,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,0,0,0,0,0,10,0,1500,18,1024,2,3,301999104,0,0,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27152,'savage_blade',3,10,1,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,0,0,0,0,0,30,0,1000,18,1025,1,3,301995009,0,27153,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27153,'goring_blade',3,50,8,32,32,0,0,0,0,0,0,100,1,2,0,5,0,0,10,2,223206,30,0,0,0,60,0,3000,18,1026,301,3,303223810,0,0,0,3,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27154,'riot_blade',3,30,8,32,32,0,0,0,0,0,0,100,1,2,0,15,0,0,10,2,223038,30,0,0,0,80,0,2000,18,75,2,3,301998155,0,27155,0,1,0,30301,2,1,1,1);
INSERT INTO `server_battle_commands` VALUES (27155,'rage_of_halone',3,46,8,32,32,0,0,0,0,0,0,100,5,0,0,5,0,0,10,2,0,0,0,0,0,20,0,1500,18,1008,302,3,303227888,0,0,0,2,-40,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27156,'shield_bash',3,18,17,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,223015,5,0.75,0,0,30,0,250,18,5,26,3,302096389,0,0,0,0,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27157,'war_drum',3,38,24,32,32,1,8,0,0,0,1,100,1,0,4,5,0,0,10,2,0,0,0,0,0,60,0,500,14,502,21,3,234967542,0,0,0,0,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27158,'phalanx',3,4,8,32,32,0,0,0,0,0,0,100,1,0,4,5,0,0,10,2,0,0,0,0,0,5,0,250,18,32,1,3,301994016,0,27159,0,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27159,'spirits_within',16,45,0,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,0,0,0,0,0,60,0,3000,18,1044,304,3,303236116,0,0,0,2,50,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27180,'provoke',4,14,3,32,32,0,0,0,0,0,0,100,1,0,0,15,0,0,10,2,223034,30,0,0,0,30,0,0,14,600,2,3,234889816,0,0,0,0,0,30101,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27181,'foresight',4,2,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223083,30,1,0,0,60,0,0,14,545,2,3,234889761,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27182,'bloodbath',4,6,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223081,30,1,0,0,60,0,0,14,581,2,3,234889797,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27183,'berserk',4,22,32,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223207,4294967295,1,0,0,10,0,0,14,682,2,3,234889898,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27184,'rampage',4,34,32,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223208,4294967295,1,0,0,10,0,0,14,546,2,3,234889762,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27185,'enduring_march',4,42,32,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223078,20,1,0,0,180,0,0,14,539,2,3,234889755,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27186,'vengeance',17,30,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223250,15,1,0,0,150,0,0,14,714,2,3,234889930,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27187,'antagonize',17,35,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223251,15,1,0,0,120,0,0,14,715,2,3,234889931,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27188,'collusion',17,40,0,12,12,0,0,0,0,0,0,100,1,0,0,15,0,0,10,2,223097,15,1,0,0,90,0,0,14,711,2,3,234889927,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27189,'mighty_strikes',17,50,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223252,15,1,0,0,900,0,0,14,716,2,3,234889932,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27190,'heavy_swing',4,1,1,32,32,0,0,0,0,0,0,100,1,1,0,5,0,0,10,2,0,0,0,0,0,10,0,1000,18,14,1,3,301993998,0,27191,0,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27191,'skull_sunder',4,10,1,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,0,0,0,0,0,30,0,1500,18,43,1,3,301994027,0,27192,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27192,'steel_cyclone',17,45,0,32,32,1,8,0,0,0,1,100,1,0,0,5,0,0,10,2,223015,3,0,0,0,30,0,2000,18,1040,404,3,303645712,0,0,0,3,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27193,'brutal_swing',4,4,1,32,32,0,0,0,0,0,0,100,1,4,0,5,0,0,10,2,0,0,0,0,0,20,0,1500,18,15,3,3,302002191,0,27194,0,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27194,'maim',4,26,1,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,0,0,0,0,0,30,0,1500,18,88,1,3,301994072,0,27195,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27195,'godsbane',4,50,32,32,32,0,0,0,0,0,0,100,3,0,0,5,0,0,10,2,0,0,0,0,0,60,0,3000,18,1014,402,3,303637494,0,0,0,3,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27196,'path_of_the_storm',4,38,32,32,32,0,0,0,0,0,0,100,1,2,0,5,0,0,10,2,228021,30,0,0,0,30,0,1500,18,44,401,3,303632428,0,27197,0,1,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27197,'whirlwind',4,46,32,32,32,1,8,0,0,0,1,100,1,0,0,5,0,0,10,2,0,0,0,0,0,80,0,3000,18,1015,403,3,303641591,0,0,0,2,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27198,'fracture',4,18,32,32,32,0,0,0,0,0,0,100,1,0,3,5,0,0,10,2,223013,8,0.75,0,0,40,0,500,18,42,3,3,302002218,0,0,0,0,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27199,'overpower',4,30,1,32,32,2,8,0,0.5,0,1,100,1,0,3,8,0,0,10,2,0,0,0,0,0,5,0,250,18,89,1,3,301994073,0,0,0,0,0,30301,2,1,1,0);
INSERT INTO `server_battle_commands` VALUES (27220,'hawks_eye',7,6,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223106,15,1,0,0,90,0,0,14,516,2,3,234889732,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27221,'quelling_strike',7,22,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223104,30,1,0,0,60,0,0,14,614,2,3,234889830,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27222,'decoy',7,2,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223108,60,1,0,0,90,100,0,14,565,2,3,234889781,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27223,'chameleon',7,42,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,0,0,0,0,0,180,0,0,14,504,2,3,234889720,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27224,'barrage',7,34,64,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223220,60,1,0,0,90,0,0,14,683,2,3,234889899,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27225,'raging_strike',7,14,64,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223221,4294967295,1,0,0,10,0,0,14,632,2,3,234889848,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27226,'swiftsong',7,26,64,1,5,1,20,0,0,0,1,100,1,0,0,0,0,0,10,2,223224,180,1,0,0,10,100,0,1,150,1,3,16781462,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27227,'battle_voice',18,50,0,1,5,1,20,0,0,0,1,100,1,0,0,0,0,0,10,2,223029,60,1,0,0,900,0,0,14,721,2,3,234889937,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27228,'heavy_shot',7,1,1,32,32,0,0,0,0,0,0,100,1,0,0,20,0,8,10,2,0,0,0,0,0,10,0,1000,18,1036,4,3,302007308,0,27229,27231,1,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27229,'leaden_arrow',7,10,1,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,228021,30,0.75,0,0,30,0,1500,18,1035,4,3,302007307,0,27230,0,2,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27230,'wide_volley',7,50,64,32,32,1,8,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,0,0,80,0,2000,18,18,703,3,304869394,0,0,0,3,-20,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27231,'quick_nock',7,38,64,32,32,2,10,0,0.5,0,1,100,1,0,0,10,0,0,10,2,0,0,0,0,0,180,0,1000,18,1017,702,3,304866297,0,27232,0,2,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27232,'rain_of_death',18,45,0,32,32,1,8,0,0,0,0,100,1,0,0,20,0,0,10,2,223015,5,0.75,0,0,30,0,3000,18,1037,704,3,304874509,0,0,0,3,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27233,'piercing_arrow',7,4,1,32,32,0,0,0,0,0,0,100,1,0,0,20,0,8,10,2,0,0,0,0,0,20,0,1000,18,1038,1,3,301995022,0,27234,27236,1,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27234,'gloom_arrow',7,30,1,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,223007,30,0,0,0,10,0,1000,18,1039,4,3,302007311,0,27235,0,2,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27235,'bloodletter',7,46,64,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,223241,30,0.75,0,0,80,0,1500,18,53,701,3,304861237,0,0,0,3,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27236,'shadowbind',7,18,64,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,228011,15,0.9,0,0,40,0,250,18,17,4,3,302006289,0,0,0,2,0,30301,2,1,4,1);
INSERT INTO `server_battle_commands` VALUES (27237,'ballad_of_magi',18,30,0,1,5,1,20,0,0,0,1,100,1,0,0,0,0,0,10,2,223254,180,1,8,3000,10,100,0,1,709,1,3,16782021,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27238,'paeon_of_war',18,40,0,1,5,1,20,0,0,0,1,100,1,0,0,0,0,0,10,2,223255,180,1,8,3000,10,50,1000,1,710,1,3,16782022,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27239,'minuet_of_rigor',18,35,0,1,5,1,20,0,0,0,1,100,1,0,0,0,0,0,10,2,223256,180,1,8,3000,10,100,0,1,711,1,3,16782023,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27258,'refill',7,1,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,32613,3,0,0,0);
INSERT INTO `server_battle_commands` VALUES (27259,'light_shot',7,1,0,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,0,0,0,0,0,17,0,1,3,285216768,0,0,0,0,0,30301,3,1,0,1);
INSERT INTO `server_battle_commands` VALUES (27260,'invigorate',8,14,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223094,30,1,0,0,90,0,0,14,575,2,3,234889791,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27261,'power_surge',8,34,128,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223212,60,1,0,0,10,0,0,14,686,2,3,234889902,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27262,'life_surge',8,22,128,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223215,180,1,0,0,15,0,250,14,687,2,3,234889903,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27263,'dread_spike',8,42,128,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223218,30,1,0,0,120,0,0,14,686,2,3,234889902,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27264,'blood_for_blood',8,6,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223219,60,1,0,0,60,0,0,14,689,2,3,234889905,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27265,'keen_flurry',8,26,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223091,30,1,0,0,90,0,0,14,569,2,3,234889785,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27266,'jump',19,30,0,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,0,0,60,0,0,18,1045,804,3,305284117,0,0,0,0,0,30301,3,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27267,'elusive_jump',19,40,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,0,0,0,0,0,180,0,0,18,1046,806,3,305292310,0,0,0,0,0,30101,3,0,0,0);
INSERT INTO `server_battle_commands` VALUES (27268,'dragonfire_dive',19,50,0,32,32,1,4,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,0,0,900,0,0,18,1045,804,3,305284117,0,0,0,0,0,30301,3,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27269,'true_thrust',8,1,1,32,32,0,0,0,0,0,0,100,1,1,0,5,0,0,10,2,0,0,0,0,0,10,0,1000,18,1030,2,3,301999110,0,27270,27273,1,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27270,'leg_sweep',8,30,1,32,32,2,8,0,0.5,0,1,100,1,0,0,5,0,0,10,2,223015,8,0,0,0,30,0,1000,18,37,1,3,301994021,0,27271,0,2,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27271,'doom_spike',8,46,128,32,32,3,5,0,0,0,1,100,1,0,0,5,0,0,10,2,0,0,0,0,0,60,0,3000,18,83,801,3,305270867,0,0,0,3,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27272,'disembowel',19,35,0,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,223005,15,0.75,0,0,30,0,750,18,1042,2,3,301999122,0,0,0,0,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27273,'heavy_thrust',8,10,1,32,32,0,0,0,0,0,0,100,1,0,0,5,0,0,10,2,223015,4,0.75,0,0,20,0,1500,18,1031,1,3,301995015,0,0,0,0,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27274,'vorpal_thrust',8,2,1,32,32,0,0,0,0,0,0,100,1,2,0,5,0,0,10,2,0,0,0,0,0,20,0,1500,18,1032,2,3,301999112,0,27275,0,1,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27275,'impulse_drive',8,18,1,32,32,0,0,0,0,0,0,100,1,4,0,5,0,0,10,2,0,0,0,0,0,30,0,1500,18,1033,2,3,301999113,0,27276,27277,2,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27276,'chaos_thrust',8,50,128,32,32,0,0,0,0,0,0,100,6,0,0,5,0,0,10,2,0,0,0,0,0,80,0,3000,18,40,802,3,305274920,0,0,0,3,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27277,'ring_of_talons',19,45,0,32,32,1,8,0,0,0,1,100,1,0,0,5,0,0,10,2,0,0,0,0,0,60,0,2000,18,1009,803,3,305279985,0,0,0,3,0,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27278,'feint',8,4,1,32,32,0,0,0,0,0,0,100,1,0,1,5,0,0,10,2,0,0,0,0,0,10,0,250,18,39,2,3,301998119,0,27272,0,1,100,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27279,'full_thrust',8,38,128,32,32,0,0,0,0,0,0,100,1,0,1,5,0,0,10,2,0,0,0,0,0,30,0,250,18,1034,801,3,305271818,0,0,0,0,50,30301,2,1,2,0);
INSERT INTO `server_battle_commands` VALUES (27300,'dark_seal',22,14,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223229,30,1,0,0,90,0,0,14,518,2,3,234889734,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27301,'resonance',22,22,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223230,30,1,0,0,90,0,0,14,669,2,3,234889885,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27302,'excruciate',22,38,256,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223231,30,1,0,0,90,0,0,14,694,2,3,234889910,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27303,'necrogenesis',22,6,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223232,30,1,0,0,90,0,0,14,695,2,3,234889911,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27304,'parsimony',22,2,256,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223233,30,1,0,0,90,0,0,14,568,2,3,234889784,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27305,'convert',26,30,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,0,0,0,0,0,450,0,0,14,724,2,3,234889940,0,0,0,0,0,30101,3,0,0,0);
INSERT INTO `server_battle_commands` VALUES (27306,'sleep',22,42,256,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,228001,60,0.9,2,3000,0,75,0,1,651,1,3,16781963,0,0,0,0,0,30328,4,4,12,0);
INSERT INTO `server_battle_commands` VALUES (27307,'sanguine_rite',22,30,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223234,20,1,0,0,60,120,0,1,152,1,3,16781464,0,0,0,0,0,30328,4,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27308,'blizzard',22,4,256,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,228021,30,0.75,2,3000,10,90,0,1,502,1,3,16781814,0,0,0,0,0,30301,4,2,6,0);
INSERT INTO `server_battle_commands` VALUES (27309,'blizzara',22,26,256,32,32,1,8,0,0,0,0,100,1,0,0,20,0,0,10,2,228011,30,0.75,0,0,40,150,0,1,506,1,3,16781818,0,0,0,0,0,30301,4,2,6,0);
INSERT INTO `server_battle_commands` VALUES (27310,'fire',22,10,3,32,32,1,8,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,2,3000,8,105,0,1,501,1,3,16781813,0,27311,0,1,0,30301,4,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27311,'fira',22,34,3,32,32,1,8,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,2,5000,16,180,0,1,504,1,3,16781816,0,27312,0,2,0,30301,4,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27312,'firaga',22,50,256,32,32,1,8,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,2,8000,7,255,0,1,700,1,3,16782012,0,0,0,3,0,30301,4,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27313,'thunder',22,1,3,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,2,2000,6,75,0,1,503,1,3,16781815,0,27314,0,1,0,30301,4,2,9,0);
INSERT INTO `server_battle_commands` VALUES (27314,'thundara',22,18,256,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,223015,4,0.75,0,0,30,135,0,1,508,1,3,16781820,0,27315,27316,2,0,30301,4,2,9,0);
INSERT INTO `server_battle_commands` VALUES (27315,'thundaga',22,46,256,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,2,5000,45,195,0,1,509,1,3,16781821,0,0,0,3,0,30301,4,2,9,0);
INSERT INTO `server_battle_commands` VALUES (27316,'burst',26,50,0,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,2,4000,900,90,0,1,705,1,3,16782017,0,0,0,3,0,30301,4,2,9,0);
INSERT INTO `server_battle_commands` VALUES (27317,'sleepga',26,45,0,32,32,1,8,0,0,0,0,100,1,0,0,20,0,0,10,2,228001,60,0.9,2,4000,0,100,0,1,704,1,3,16782016,0,0,0,0,0,30328,4,4,12,0);
INSERT INTO `server_battle_commands` VALUES (27318,'flare',26,40,0,1,32,1,8,0,0,0,1,100,1,0,0,20,0,0,10,2,223262,30,0.75,2,8000,120,200,0,1,706,1,3,16782018,0,0,0,0,0,30301,4,2,5,0);
INSERT INTO `server_battle_commands` VALUES (27319,'freeze',26,35,0,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,2,5000,120,120,0,1,707,1,3,16782019,0,0,0,0,0,30301,4,2,6,0);
INSERT INTO `server_battle_commands` VALUES (27340,'sacred_prism',23,34,3,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223225,60,1,0,0,90,0,0,14,690,2,3,234889906,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27341,'shroud_of_saints',23,38,512,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223226,20,1,0,0,180,0,0,14,691,2,3,234889907,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27342,'cleric_stance',23,10,512,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223227,4294967295,1,0,0,30,0,0,14,692,2,3,234889908,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27343,'blissful_mind',23,14,512,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223228,4294967295,1,0,0,30,0,0,14,693,2,3,234889909,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27344,'presence_of_mind',27,30,0,1,1,0,0,0,0,0,0,100,1,0,0,0,0,0,10,2,223116,30,1,0,0,300,0,0,14,722,2,3,234889938,0,0,0,0,0,30328,3,4,0,0);
INSERT INTO `server_battle_commands` VALUES (27345,'benediction',27,50,0,1,5,1,20,0,0,0,1,100,1,0,0,0,0,0,10,2,0,0,0,0,0,900,0,0,14,723,2,3,234889939,0,0,0,0,0,30320,3,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27346,'cure',23,2,3,9,9,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,3,2000,5,40,0,1,101,1,3,16781413,0,0,0,0,0,30320,4,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27347,'cura',23,30,512,9,9,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,3,2000,5,100,0,1,103,1,3,16781415,0,0,0,0,0,30320,4,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27348,'curaga',23,46,512,5,5,1,15,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,3,3000,10,150,0,1,146,1,3,16781458,0,0,0,0,0,30320,4,3,13,0);
INSERT INTO `server_battle_commands` VALUES (27349,'raise',23,18,512,130,130,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,3,10000,300,150,0,1,148,1,3,16781460,0,0,0,0,0,30101,4,4,11,0);
INSERT INTO `server_battle_commands` VALUES (27350,'stoneskin',23,26,3,9,9,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,223133,300,1,3,3000,30,50,0,1,133,1,3,16781445,0,0,0,0,0,30328,4,4,8,0);
INSERT INTO `server_battle_commands` VALUES (27351,'protect',23,6,3,5,5,1,20,0,0,0,0,100,1,0,0,20,0,0,10,2,223129,300,1,3,3000,30,80,0,1,1085,1,3,16782397,0,0,0,0,0,30328,4,4,11,0);
INSERT INTO `server_battle_commands` VALUES (27352,'repose',23,50,0,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,228001,60,0.9,3,3000,0,80,0,1,151,1,3,16781463,0,0,0,0,0,30328,4,4,10,0);
INSERT INTO `server_battle_commands` VALUES (27353,'aero',23,4,3,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,223235,20,0.75,3,3000,6,75,0,1,510,1,3,16781822,0,27354,0,1,0,30301,4,2,7,0);
INSERT INTO `server_battle_commands` VALUES (27354,'aerora',23,42,512,32,32,1,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,3,4000,20,150,0,1,511,1,3,16781823,0,0,0,2,0,30301,4,2,7,0);
INSERT INTO `server_battle_commands` VALUES (27355,'stone',23,1,3,32,32,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,223243,10,0.75,3,2000,6,75,0,1,513,1,3,16781825,0,27356,0,1,0,30301,4,2,8,0);
INSERT INTO `server_battle_commands` VALUES (27356,'stonera',23,22,512,32,32,1,0,0,0,0,0,100,1,0,0,20,0,0,10,2,228021,30,0.75,3,3000,30,150,0,1,514,1,3,16781826,0,0,0,2,0,30301,4,2,8,0);
INSERT INTO `server_battle_commands` VALUES (27357,'esuna',27,40,0,9,9,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,0,0,0,3,2000,10,40,0,1,702,1,3,16782014,0,0,0,0,0,30329,4,0,13,0);
INSERT INTO `server_battle_commands` VALUES (27358,'regen',27,35,0,9,9,0,0,0,0,0,0,100,1,0,0,20,0,0,10,2,223180,45,1,3,2000,5,20,0,1,703,1,3,16782015,0,0,0,0,0,30328,4,4,13,0);
INSERT INTO `server_battle_commands` VALUES (27359,'holy',27,45,0,1,32,1,8,0,0,0,1,100,1,0,0,0,0,0,10,2,228011,10,0.9,0,0,300,100,0,1,708,1,3,16782020,0,0,0,0,0,30301,4,2,11,0);
/*!40000 ALTER TABLE `server_battle_commands` ENABLE KEYS */;
UNLOCK TABLES;
commit;
@ -228,4 +243,4 @@ commit;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2018-05-31 11:16:20
-- Dump completed on 2018-07-02 0:22:43