add ion's fix for BattleActionX10Packet crashing client

- add blizzara spell lua
This commit is contained in:
Tahir Akhlaq
2017-08-26 06:47:07 +01:00
parent 9024f3fad6
commit 1ae15df64c
9 changed files with 33 additions and 27 deletions

View File

@@ -354,7 +354,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
return false;
// hit everything within zone or within aoe region
if (extents == 255.0f || aoeType == TargetFindAOEType.Circle && target.GetPosAsVector3().IsWithinCircle(targetPosition, extents))
if (extents == 255.0f || aoeType == TargetFindAOEType.Circle && target.GetPosAsVector3().IsWithinCircle(targetPosition ?? target.GetPosAsVector3(), extents))
return true;
if (aoeType == TargetFindAOEType.Cone && IsWithinCone(target, withPet))

View File

@@ -25,18 +25,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
// todo: handle raise etc
if (tick >= despawnTime)
{
if (owner.currentSubState == SetActorStatePacket.SUB_STATE_PLAYER)
{
// todo: mark for zoning and remove after main loop
owner.Spawn(Program.Tick);
//Server.GetWorldManager().DoZoneChange(((Player)owner), 244, null, 0, 15, -160.048f, 0, -165.737f, 0.0f);
}
else
{
owner.ChangeState(SetActorStatePacket.MAIN_STATE_PASSIVE);
// todo: fadeout animation and crap
//owner.zone.DespawnActor(owner);
}
owner.Spawn(Program.Tick);
return true;
}
return false;

View File

@@ -32,8 +32,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
// todo: Azia can fix, check the recast time and send error
OnStart();
}
if (interrupt || errorPacket != null)
else if (interrupt || errorPacket != null)
{
if (owner is Player && errorPacket != null)
((Player)owner).QueuePacket(errorPacket);
@@ -50,7 +49,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
if (returnCode != 0)
{
interrupt = true;
errorPacket = BattleActionX01Packet.BuildPacket(owner.actorId, owner.actorId, owner.actorId, 0, 0, (ushort)(returnCode == -1 ? 32539 : returnCode), spell.id, 0, 1);
errorPacket = BattleActionX01Packet.BuildPacket(owner.actorId, owner.actorId, owner.actorId, 0, 0, (ushort)(returnCode == -1 ? 32558 : returnCode), spell.id, 0, 1);
}
else
{
@@ -120,9 +119,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
action.amount = (ushort)lua.LuaEngine.CallLuaAbilityFunction(owner, spell, "spells", "onSpellFinish", owner, chara, spell, action);
actions[i++] = action;
packets.Add(BattleActionX01Packet.BuildPacket(chara.actorId, owner.actorId, action.targetId, spell.battleAnimation, action.effectId, action.worldMasterTextId, spell.id, action.amount, action.param));
//packets.Add(BattleActionX01Packet.BuildPacket(chara.actorId, owner.actorId, action.targetId, spell.battleAnimation, action.effectId, action.worldMasterTextId, spell.id, action.amount, action.param));
}
//packets.Add(BattleActionX10Packet.BuildPacket(player.actorId, owner.actorId, spell.battleAnimation, spell.id, actions));
packets.Add(BattleActionX10Packet.BuildPacket(owner.target.actorId, owner.actorId, spell.battleAnimation, spell.id, actions));
owner.zone.BroadcastPacketsAroundActor(owner, packets);
}

View File

@@ -14,7 +14,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
protected Character target;
protected bool canInterrupt;
protected bool interrupt;
protected bool interrupt = false;
protected DateTime startTime;

View File

@@ -30,8 +30,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
// todo: Azia can fix, check the recast time and send error
OnStart();
}
if (interrupt || errorPacket != null)
else if (interrupt || errorPacket != null)
{
if (owner is Player && errorPacket != null)
((Player)owner).QueuePacket(errorPacket);
@@ -48,7 +47,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
if (returnCode != 0)
{
interrupt = true;
errorPacket = BattleActionX01Packet.BuildPacket(owner.actorId, owner.actorId, owner.actorId, 0, 0, (ushort)returnCode, skill.id, 0, 1);
errorPacket = BattleActionX01Packet.BuildPacket(owner.actorId, owner.actorId, owner.actorId, 0, 0, (ushort)(returnCode == -1 ? 32558 : returnCode), skill.id, 0, 1);
}
else
{
@@ -112,9 +111,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
action.amount = (ushort)lua.LuaEngine.CallLuaAbilityFunction(owner, skill, "skills", "onSkillFinish", owner, target, skill, action);
actions[i++] = action;
packets.Add(BattleActionX01Packet.BuildPacket(chara.actorId, owner.actorId, action.targetId, skill.battleAnimation, action.effectId, action.worldMasterTextId, skill.id, action.amount, action.param));
//packets.Add(BattleActionX01Packet.BuildPacket(chara.actorId, owner.actorId, action.targetId, skill.battleAnimation, action.effectId, action.worldMasterTextId, skill.id, action.amount, action.param));
}
//packets.Add(BattleActionX10Packet.BuildPacket(player.actorId, owner.actorId, spell.battleAnimation, spell.id, actions));
packets.Add(BattleActionX10Packet.BuildPacket(owner.target.actorId, owner.actorId, skill.battleAnimation, skill.id, actions));
owner.zone.BroadcastPacketsAroundActor(owner, packets);
}