mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
add ion's fix for BattleActionX10Packet crashing client
- add blizzara spell lua
This commit is contained in:
parent
9024f3fad6
commit
1ae15df64c
@ -78,7 +78,7 @@ namespace FFXIVClassic.Common
|
|||||||
|
|
||||||
public static float GetAngle(float x, float z, float x2, float z2)
|
public static float GetAngle(float x, float z, float x2, float z2)
|
||||||
{
|
{
|
||||||
var angle = (float)Math.Atan((z2 - z) / (x2 - x));
|
var angle = (float)(Math.Atan((z2 - z) / (x2 - x)) * - Math.PI);
|
||||||
return x > x2 ? angle + (float)Math.PI : angle;
|
return x > x2 ? angle + (float)Math.PI : angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -354,7 +354,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// hit everything within zone or within aoe region
|
// 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;
|
return true;
|
||||||
|
|
||||||
if (aoeType == TargetFindAOEType.Cone && IsWithinCone(target, withPet))
|
if (aoeType == TargetFindAOEType.Cone && IsWithinCone(target, withPet))
|
||||||
|
@ -25,18 +25,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
|
|||||||
// todo: handle raise etc
|
// todo: handle raise etc
|
||||||
if (tick >= despawnTime)
|
if (tick >= despawnTime)
|
||||||
{
|
{
|
||||||
if (owner.currentSubState == SetActorStatePacket.SUB_STATE_PLAYER)
|
owner.Spawn(Program.Tick);
|
||||||
{
|
|
||||||
// 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);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -32,8 +32,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
|
|||||||
// todo: Azia can fix, check the recast time and send error
|
// todo: Azia can fix, check the recast time and send error
|
||||||
OnStart();
|
OnStart();
|
||||||
}
|
}
|
||||||
|
else if (interrupt || errorPacket != null)
|
||||||
if (interrupt || errorPacket != null)
|
|
||||||
{
|
{
|
||||||
if (owner is Player && errorPacket != null)
|
if (owner is Player && errorPacket != null)
|
||||||
((Player)owner).QueuePacket(errorPacket);
|
((Player)owner).QueuePacket(errorPacket);
|
||||||
@ -50,7 +49,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
|
|||||||
if (returnCode != 0)
|
if (returnCode != 0)
|
||||||
{
|
{
|
||||||
interrupt = true;
|
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
|
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);
|
action.amount = (ushort)lua.LuaEngine.CallLuaAbilityFunction(owner, spell, "spells", "onSpellFinish", owner, chara, spell, action);
|
||||||
actions[i++] = 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);
|
owner.zone.BroadcastPacketsAroundActor(owner, packets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
|
|||||||
protected Character target;
|
protected Character target;
|
||||||
|
|
||||||
protected bool canInterrupt;
|
protected bool canInterrupt;
|
||||||
protected bool interrupt;
|
protected bool interrupt = false;
|
||||||
|
|
||||||
protected DateTime startTime;
|
protected DateTime startTime;
|
||||||
|
|
||||||
|
@ -30,8 +30,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
|
|||||||
// todo: Azia can fix, check the recast time and send error
|
// todo: Azia can fix, check the recast time and send error
|
||||||
OnStart();
|
OnStart();
|
||||||
}
|
}
|
||||||
|
else if (interrupt || errorPacket != null)
|
||||||
if (interrupt || errorPacket != null)
|
|
||||||
{
|
{
|
||||||
if (owner is Player && errorPacket != null)
|
if (owner is Player && errorPacket != null)
|
||||||
((Player)owner).QueuePacket(errorPacket);
|
((Player)owner).QueuePacket(errorPacket);
|
||||||
@ -48,7 +47,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
|
|||||||
if (returnCode != 0)
|
if (returnCode != 0)
|
||||||
{
|
{
|
||||||
interrupt = true;
|
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
|
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);
|
action.amount = (ushort)lua.LuaEngine.CallLuaAbilityFunction(owner, skill, "skills", "onSkillFinish", owner, target, skill, action);
|
||||||
actions[i++] = 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);
|
owner.zone.BroadcastPacketsAroundActor(owner, packets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle
|
|||||||
binWriter.Write((UInt16)commandId);
|
binWriter.Write((UInt16)commandId);
|
||||||
binWriter.Write((UInt16)0x810); //?
|
binWriter.Write((UInt16)0x810); //?
|
||||||
|
|
||||||
binWriter.Seek(0x20, SeekOrigin.Begin);
|
//binWriter.Seek(0x20, SeekOrigin.Begin);
|
||||||
foreach (BattleAction action in actionList)
|
foreach (BattleAction action in actionList)
|
||||||
binWriter.Write((UInt32)action.targetId);
|
binWriter.Write((UInt32)action.targetId);
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ require ("global")
|
|||||||
|
|
||||||
function onEventStarted(player, equipAbilityWidget, triggername, slot, ability, unkown, arg1, arg2, arg3, arg4, arg5, arg6)
|
function onEventStarted(player, equipAbilityWidget, triggername, slot, ability, unkown, arg1, arg2, arg3, arg4, arg5, arg6)
|
||||||
if ability then
|
if ability then
|
||||||
player:EquipAbility(slot, ability);
|
player:EquipAbility(slot, ability, 1);
|
||||||
end
|
end
|
||||||
player:endEvent();
|
player:endEvent();
|
||||||
end
|
end
|
19
data/scripts/spells/blizzara.lua
Normal file
19
data/scripts/spells/blizzara.lua
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
function onSpellPrepare(caster, target, spell)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSpellStart(caster, target, spell)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSpellFinish(caster, target, spell, action)
|
||||||
|
local damage = math.random(10, 100);
|
||||||
|
print("fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuckkk")
|
||||||
|
|
||||||
|
action.param = damage;
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.AddBaseHate(caster);
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
Loading…
Reference in New Issue
Block a user