62 lines
No EOL
1.8 KiB
C#
62 lines
No EOL
1.8 KiB
C#
using System.Threading.Tasks;
|
|
using WingsEmu.Game._Guri;
|
|
using WingsEmu.Game._Guri.Event;
|
|
using WingsEmu.Game.Characters;
|
|
using WingsEmu.Game.Managers;
|
|
using WingsEmu.Game.Networking;
|
|
using WingsEmu.Game.RainbowBattle;
|
|
using WingsEmu.Game.RainbowBattle.Event;
|
|
|
|
namespace WingsEmu.Plugins.BasicImplementations.Guri;
|
|
|
|
public class RainbowBattleUnfreezeGuriHandler : IGuriHandler
|
|
{
|
|
private readonly IDelayManager _delayManager;
|
|
|
|
public RainbowBattleUnfreezeGuriHandler(IDelayManager delayManager) => _delayManager = delayManager;
|
|
|
|
public long GuriEffectId => 505;
|
|
|
|
public async Task ExecuteAsync(IClientSession session, GuriEvent e)
|
|
{
|
|
if (!await _delayManager.CanPerformAction(session.PlayerEntity, DelayedActionType.RainbowBattleUnfreeze))
|
|
{
|
|
return;
|
|
}
|
|
|
|
await _delayManager.CompleteAction(session.PlayerEntity, DelayedActionType.RainbowBattleUnfreeze);
|
|
|
|
RainbowBattleParty rainbowBattleParty = session.PlayerEntity.RainbowBattleComponent.RainbowBattleParty;
|
|
if (rainbowBattleParty?.MapInstance == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
long characterId = e.Data;
|
|
if (characterId == session.PlayerEntity.Id)
|
|
{
|
|
return;
|
|
}
|
|
|
|
IPlayerEntity target = rainbowBattleParty.MapInstance.GetCharacterById(characterId);
|
|
if (target?.RainbowBattleComponent.RainbowBattleParty == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (!target.RainbowBattleComponent.IsFrozen)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (target.RainbowBattleComponent.Team != session.PlayerEntity.RainbowBattleComponent.Team)
|
|
{
|
|
return;
|
|
}
|
|
|
|
await target.Session.EmitEventAsync(new RainbowBattleUnfreezeEvent
|
|
{
|
|
Unfreezer = session.PlayerEntity
|
|
});
|
|
}
|
|
} |