diff --git a/FFXIVClassic Map Server/actors/chara/Character.cs b/FFXIVClassic Map Server/actors/chara/Character.cs index 4959a655..4cde4926 100644 --- a/FFXIVClassic Map Server/actors/chara/Character.cs +++ b/FFXIVClassic Map Server/actors/chara/Character.cs @@ -393,7 +393,7 @@ namespace FFXIVClassic_Map_Server.Actors if ((updateFlags & ActorUpdateFlags.SubState) != 0) { - //packets.Add(SetActorSubStatePacket.BuildPacket(actorId, currentSubState)); + packets.Add(SetActorSubStatePacket.BuildPacket(actorId, currentSubState)); //packets.Add(CommandResultX00Packet.BuildPacket(actorId, 0x72000062, 0)); //packets.Add(CommandResultX01Packet.BuildPacket(actorId, 0x7C000062, 21001, new CommandResult(actorId, 0, 1))); @@ -614,7 +614,7 @@ namespace FFXIVClassic_Map_Server.Actors public void SetMP(uint mp) { - charaWork.parameterSave.mpMax = (short)mp; + charaWork.parameterSave.mp = (short)mp; if (mp > charaWork.parameterSave.mpMax) SetMaxMP(mp); diff --git a/FFXIVClassic Map Server/actors/chara/ai/utils/BattleUtils.cs b/FFXIVClassic Map Server/actors/chara/ai/utils/BattleUtils.cs index 9fddd194..fe3c929a 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/utils/BattleUtils.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/utils/BattleUtils.cs @@ -464,6 +464,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.utils FinishActionStatus(caster, target, skill, action, actionContainer); break; default: + action.effectId = (uint) HitEffect.AnimationEffectType; actionContainer.AddAction(action); break; } diff --git a/FFXIVClassic Map Server/packets/send/Actor/battle/CommandResult.cs b/FFXIVClassic Map Server/packets/send/Actor/battle/CommandResult.cs index bf710540..03200739 100644 --- a/FFXIVClassic Map Server/packets/send/Actor/battle/CommandResult.cs +++ b/FFXIVClassic Map Server/packets/send/Actor/battle/CommandResult.cs @@ -24,6 +24,8 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle MagicEffectType = 48 << 24, //This places the number on the user regardless of the target this hit effect is for, used for things like bloodbath SelfHealType = 72 << 24, + //Plays the effect animation with no text or additional effects. Unsure if there are any flags. Used for things like Convert + AnimationEffectType = 96 << 24, //Each Type has it's own set of flags. These should be split into their own enums, //but for now just keep them all under HitEffect so we don't have to change anything. diff --git a/data/scripts/commands/EsunaMagic.lua b/data/scripts/commands/EsunaMagic.lua new file mode 100644 index 00000000..a349c17a --- /dev/null +++ b/data/scripts/commands/EsunaMagic.lua @@ -0,0 +1,5 @@ +function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8) + player.Cast(command.actorId, targetActor); + + player:endEvent(); +end \ No newline at end of file diff --git a/data/scripts/commands/magic/esuna.lua b/data/scripts/commands/magic/esuna.lua new file mode 100644 index 00000000..b20972dd --- /dev/null +++ b/data/scripts/commands/magic/esuna.lua @@ -0,0 +1,22 @@ +require("global"); +require("magic"); +require("battleutils"); + +function onMagicPrepare(caster, target, spell) + if not target.statusEffects.HasStatusEffectsByFlag(StatusEffectFlags.LoseOnDeath) then + return -1 + end + + return 0; +end; + +function onMagicStart(caster, target, spell) + return 0; +end; + +function onSkillFinish(caster, target, skill, action, actionContainer) + + removeEffect = target.statusEffects.GetRandomEffectByFlag(StatusEffectFlags.LoseOnDeath) + + target.statusEffects.RemoveStatusEffect(removeEffect, actionContainer, 30331); +end; \ No newline at end of file