public bool CanGameAction(GameActionTypeEnum actionType)
{
if (CurrentAction != null && CurrentAction.Type == GameActionTypeEnum.MAP_MOVEMENT)
CurrentAction = null;
switch (actionType)
{
case GameActionTypeEnum.FIGHT_AGGRESSION:
return ((CurrentAction == null || CurrentAction.IsFinished)
|| CurrentAction.Type == GameActionTypeEnum.MAP_MOVEMENT)
&& !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_ASSAULT)
&& !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_CANT_BE_ASSAULT);
case GameActionTypeEnum.SKILL_USE:
return ((CurrentAction == null || CurrentAction.IsFinished)
|| CurrentAction.Type == GameActionTypeEnum.MAP_MOVEMENT)
&& !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_USE_IO)
&& !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE);
case GameActionTypeEnum.CHALLENGE_REQUEST:
return (CurrentAction == null || CurrentAction.IsFinished)
&& HasGameAction(GameActionTypeEnum.MAP)
&& !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_CANT_BE_CHALLENGE)
&& !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_CHALLENGE)
&& !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE);
case GameActionTypeEnum.CHALLENGE_ACCEPT:
return CurrentAction != null
&& CurrentAction.Type == GameActionTypeEnum.CHALLENGE_REQUEST
&& ((GameChallengeRequestAction)CurrentAction).Entity.Id != Id;
case GameActionTypeEnum.CHALLENGE_DECLINE:
return CurrentAction != null
&& CurrentAction.Type == GameActionTypeEnum.CHALLENGE_REQUEST;
case GameActionTypeEnum.EXCHANGE:
return (CurrentAction == null || CurrentAction.IsFinished)
&& !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_CANT_EXCHANGE)
&& !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_EXCHANGE)
&& !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE);
case GameActionTypeEnum.MAP_MOVEMENT:
return (CurrentAction == null || CurrentAction.IsFinished)
&& !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE);
case GameActionTypeEnum.FIGHT_WEAPON_USE:
case GameActionTypeEnum.FIGHT_SPELL_LAUNCH:
return (CurrentAction == null || CurrentAction.IsFinished)
&& HasGameAction(GameActionTypeEnum.FIGHT);
case GameActionTypeEnum.MAP_TELEPORT:
return (CurrentAction == null || CurrentAction.IsFinished);
case GameActionTypeEnum.NPC_DIALOG:
return (CurrentAction == null || CurrentAction.IsFinished)
&& !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_SPEAK_NPC);
case GameActionTypeEnum.FIGHT_JOIN:
case GameActionTypeEnum.FIGHT:
return (CurrentAction == null || CurrentAction.IsFinished)
&& !HasEntityRestriction(EntityRestrictionEnum.RESTRICTION_IS_TOMBESTONE)
&& !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_ASSAULT);
case GameActionTypeEnum.TAXCOLLECTOR_AGGRESSION:
return (CurrentAction == null || CurrentAction.IsFinished)
&& !HasPlayerRestriction(PlayerRestrictionEnum.RESTRICTION_CANT_INTERACT_WITH_TAX_COLLECTOR);
}
return CurrentAction == null || CurrentAction.IsFinished;
}