/// <summary> /// Attacks the victim /// </summary> internal void TryAttack() { Vector2D VictimPOS = new Vector2D(_Victim.X, _Victim.Y); Vector2D MyPOS = new Vector2D(GetRoomUser().X, GetRoomUser().Y); #region Conditions if (_Victim == null) { _Victim = null; FollowPlayer(GetRoomUser().FollowingOwner); return; } if (_Victim.IsAsleep) { _Victim = null; Shout("Dammnit, hes asleep.."); FollowPlayer(GetRoomUser().FollowingOwner); return; } if (_Victim.GetClient() != null) { if (_Victim.GetClient().GetRoleplay().Dead) { _Victim = null; FollowPlayer(GetRoomUser().FollowingOwner); return; } } if (!InSameRoom(_Victim)) { _Victim = null; FollowPlayer(GetRoomUser().FollowingOwner); return; } #endregion #region Following Cooldown if (CurCoolDown > 0) { if (CurWalkInterval > 0) { RunRandomly(); CurWalkInterval--; } else { CurWalkInterval = WalkInterval; } CurCoolDown--; return; } else { if (CurFollowInterval > FollowInterval) { CurFollowInterval--; return; } else { CurFollowInterval++; FollowPlayer(_Victim); } } #endregion #region Lands Attack if (RoleplayManager.BotWithinAttackDistance(GetRoomUser(), _Victim)) { uint victimroom = 0; uint petroom = 0; if (_Victim.GetClient() != null) { if (_Victim.GetClient().GetHabbo() != null) { victimroom = _Victim.GetClient().GetHabbo().CurrentRoomId; petroom = GetRoom().RoomId; if (petroom != 0) { if (victimroom != petroom) { _Victim = null; FollowPlayer(GetRoomUser().FollowingOwner); return; } } } } CurCoolDown = CoolDown; ExecuteAttack(_Victim); RunRandomly(); return; } #endregion #region Misses Attack if (RoleplayManager.Distance(MyPOS, VictimPOS) >= 1 && RoleplayManager.Distance(MyPOS, VictimPOS) <= 2 && _Victim.IsWalking) { // Miss FollowInterval -= Difficulty_IncrementNum; AttackMisc(_Victim, 0, false, true); } #endregion #region Pursues Attack if (RoleplayManager.Distance(MyPOS, VictimPOS) >= 5) { if (CurFollowInterval > FollowInterval) { CurFollowInterval--; return; } else { CurFollowInterval++; FollowPlayer(_Victim); } return; // Don't even bother } #endregion }
/// <summary> /// Attacks the victim /// </summary> internal void TryAttack(object StateInfo) { try { if (GetRoomUser() == null || GetRoom() == null || _AttackTimer == null || _Victim == null || _Victim.RoomId != GetRoom().RoomId) { _Victim = null; return; } if (GetBotData().CoolDown != null) { return; } GameClient Session = _Victim.GetClient(); if (Session == null || Session.GetHabbo() == null || Session.GetRoleplay() == null || Session.GetHabbo().CurrentRoom == null) { _AttackTimer.Change(2000, 2000); _Victim = null; return; } Vector2D VictimPOS = new Vector2D(_Victim.X, _Victim.Y); Vector2D MyPOS = new Vector2D(GetRoomUser().X, GetRoomUser().Y); if (RoleplayManager.BotWithinAttackDistance(GetRoomUser(), _Victim)) { int ExtraDamage = (new Random()).Next(5, 15); int Damage = GetBotData().strength + ExtraDamage; // Kill this punk if (Session.GetRoleplay().CurHealth - Damage <= 0) { GetRoomUser().Chat(null, "*Da um soco em " + _Victim.GetUserName() + ", nocauteando-o*", true, 1); Session.GetRoleplay().CurHealth = 120; Session.GetRoleplay().Energy = 120; Session.GetRoleplay().Hunger = 0; Session.GetRoleplay().UpdateStats++; // Tell this n***a he got f****d up by our bot Session.SendNotif("Você foi nocauteado pelo BOT-" + GetBotData().Name); _Victim = null; // SEND THIS N***A BACK TO HIS SHIT HOLE Session.GetMessageHandler().PrepareRoomForUser(Plus.GetGame().MafiaWars.GraveYardID, ""); // Get next victim init LookForVictim(); _AttackTimer.Change(1000, 1000); return; } GetRoomUser().Chat(null, "*Bate em " + _Victim.GetUserName() + ", causando " + Damage + " dano*", true, 1); RoleplayManager.Shout(Session, "*[" + Session.GetRoleplay().CurHealth + "/" + Session.GetRoleplay().MaxHealth + "]*"); Session.GetRoleplay().CurHealth -= Damage; Session.GetRoleplay().UpdateStats++; GetBotData().ApplyCooldown(); _AttackTimer.Change(1000, 1000); return; } if (RoleplayManager.Distance(MyPOS, VictimPOS) >= 1 && RoleplayManager.Distance(MyPOS, VictimPOS) <= 2) { // Miss GetRoomUser().Chat(null, "*Tenta bater em " + _Victim.GetUserName() + " mas erra*", true, 1); GetBotData().ApplyCooldown(2000); _AttackTimer.Change(1000, 1000); return; } if (RoleplayManager.Distance(MyPOS, VictimPOS) >= 5) { _AttackTimer.Change(1000, 1000); return; // Don't even bother } } catch { } }