Code: Select all
public void OnStartup()
{
Events.PlayerMeleeActionCallback.Start(OnPlayerMeleeAction);
}
public IObjectTimerTrigger CreateTimer(int interval, int count, string method, string id)
{
IObjectTimerTrigger trig = (IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
trig.SetIntervalTime(interval);
trig.SetRepeatCount(count);
trig.SetScriptMethod(method);
trig.CustomId = id;
trig.Trigger();
return trig;
}
IPlayer hitPlayer;
public void OnPlayerMeleeAction(IPlayer killerPlayer, PlayerMeleeHitArg[] args)
{
foreach (PlayerMeleeHitArg arg in args)
{
IObject hitObject = arg.HitObject;
hitPlayer = hitObject as IPlayer;
}
if (hitPlayer != null)
{
if (killerPlayer.IsMeleeAttacking || killerPlayer.IsJumpAttacking &&
killerPlayer.CurrentWeaponDrawn == WeaponItemType.Melee &&
killerPlayer.CurrentMeleeWeapon.WeaponItem == WeaponItem.KATANA)
{
for (int i = 0; i <= 6; i++)
Game.PlayEffect("BLD", new Vector2(hitPlayer.GetWorldPosition().X - 10,
hitPlayer.GetWorldPosition().Y + (10 - i)));
killerPlayer.SetWorldPosition(new Vector2(hitPlayer.GetWorldPosition().X +
(hitPlayer.FacingDirection == -1 ? 17 : -17),
killerPlayer.GetWorldPosition().Y));
for (int i = 0; i <= 6; i++)
Game.PlayEffect("BLD", new Vector2(hitPlayer.GetWorldPosition().X + 10,
hitPlayer.GetWorldPosition().Y + 10 - i));
hitPlayer.SetHealth(hitPlayer.GetMaxHealth());
CreateTimer(1500, 1, "PlayAnimation", hitPlayer.Name);
}
}
}
public void PlayAnimation(TriggerArgs args)
{
hitPlayer.SetHealth(1);
for (int i = 0; i <= 2; i++)
Game.PlayEffect("BLD", new Vector2(hitPlayer.GetWorldPosition().X,
hitPlayer.GetWorldPosition().Y + 8));
CreateTimer(2000, 1, "KillPlayer", hitPlayer.Name);
}
public void KillPlayer(TriggerArgs args)
{
hitPlayer.Gib();
hitPlayer = null;
}