internal override void OnUserShout(Rooms.RoomUser User, string Message) { if (ButterflyEnvironment.GetRandomNumber(0, 10) >= 5) { GetRoomUser().Chat(null, LanguageLocale.GetValue("onusershout"), true); // shout nag } }
public static Point HandleMovement(Point newCoordinate, MovementState state) { Point coordinate = new Point(newCoordinate.X, newCoordinate.Y); switch (state) { case MovementState.random: switch (ButterflyEnvironment.GetRandomNumber(1, 4)) { case 1: HandleMovement(ref coordinate, MovementState.up); break; case 2: HandleMovement(ref coordinate, MovementState.down); break; case 3: HandleMovement(ref coordinate, MovementState.left); break; case 4: HandleMovement(ref coordinate, MovementState.right); break; } break; case MovementState.leftright: if (ButterflyEnvironment.GetRandomNumber(0, 1) == 1) { HandleMovement(ref coordinate, MovementState.left); break; } else { HandleMovement(ref coordinate, MovementState.right); break; } case MovementState.updown: if (ButterflyEnvironment.GetRandomNumber(0, 1) == 1) { HandleMovement(ref coordinate, MovementState.up); break; } else { HandleMovement(ref coordinate, MovementState.down); break; } case MovementState.up: case MovementState.right: case MovementState.down: case MovementState.left: HandleMovement(ref coordinate, state); break; } return(coordinate); }
public void onTeleportRoomUserEnter(RoomUser User, Item Item) { IEnumerable <Item> banzaiTeleports2 = banzaiTeleports.Values.Where(p => p.Id != Item.Id); int count = banzaiTeleports2.Count(); if (count == 0) { return; } int countID = ButterflyEnvironment.GetRandomNumber(0, count - 1); Item BanzaiItem2 = banzaiTeleports2.ElementAt(countID); if (BanzaiItem2 == null) { return; } if (BanzaiItem2.InteractingUser != 0) { return; } User.IsWalking = false; User.CanWalk = false; BanzaiItem2.InteractingUser = User.UserId; BanzaiItem2.ReqUpdate(2); Item.ExtraData = "1"; Item.UpdateState(false, true); Item.ReqUpdate(2); }
internal Item GeneratePresent() { int count = gifts.Count; int countID = ButterflyEnvironment.GetRandomNumber(0, count); int countAmount = 0; if (count == 0) { return(null); } foreach (Item item in gifts.Values) { if (item == null) { continue; } if (countAmount == countID) { return(item); } countAmount++; } return(null); }
//internal Pet GeneratePetFromRow(DataRow Row, uint PetID) //{ // if (Row == null) // return null; // return new Pet(PetID, (uint)Row["user_id"], (uint)Row["room_id"], (string)Row["name"], (uint)Row["type"], (string)Row["race"], (string)Row["color"], (int)Row["expirience"], (int)Row["energy"], (int)Row["nutrition"], (int)Row["respect"], (double)Row["createstamp"], (int)Row["x"], (int)Row["y"], (double)Row["z"]); //} //internal uint GenerateItemId() //{ // //uint i = 0; // //using (DatabaseClient dbClient = ButterflyEnvironment.GetDatabase().GetClient()) // //{ // // i = mCacheID++; // // dbClient.runFastQuery("UPDATE item_id_generator SET id_generator = '" + mCacheID + "' LIMIT 1"); // //} // return mCacheID++; //} internal EcotronReward GetRandomEcotronReward() { uint Level = 1; if (ButterflyEnvironment.GetRandomNumber(1, 2000) == 2000) { Level = 5; } else if (ButterflyEnvironment.GetRandomNumber(1, 200) == 200) { Level = 4; } else if (ButterflyEnvironment.GetRandomNumber(1, 40) == 40) { Level = 3; } else if (ButterflyEnvironment.GetRandomNumber(1, 4) == 4) { Level = 2; } List <EcotronReward> PossibleRewards = GetEcotronRewardsForLevel(Level); if (PossibleRewards != null && PossibleRewards.Count >= 1) { return(PossibleRewards[ButterflyEnvironment.GetRandomNumber(0, (PossibleRewards.Count - 1))]); } else { return(new EcotronReward(0, 1479, 0)); // eco lamp two :D } }
private void TeleportUser(RoomUser user) { if (user == null) { return; } if (this.items.Count > 1) { Item roomItem = this.items[ButterflyEnvironment.GetRandomNumber(0, this.items.Count - 1)]; if (roomItem == null) { return; } if (roomItem.Coordinate != user.Coordinate) { this.gamemap.TeleportToItem(user, roomItem); } } else if (this.items.Count == 1) { this.gamemap.TeleportToItem(user, Enumerable.First <Item>((IEnumerable <Item>) this.items)); } ResetAnimation(user); return; }
public void PetEnergy(bool addEnergy) { if (this.Energy >= 100) { return; } int randomUsage = ButterflyEnvironment.GetRandomNumber(4, 15); if (!addEnergy) { this.Energy -= randomUsage; if (this.Energy < 0) { this.Energy = 1; randomUsage = 1; } } else { this.Energy = (this.Energy + randomUsage) % 100; } if (DBState != DatabaseUpdateState.NeedsInsert) { DBState = DatabaseUpdateState.NeedsUpdate; } }
private void Cac(RoomUser Bot, Room Room, RoomUser User) { int Dmg = ButterflyEnvironment.GetRandomNumber(this.WeaponCac.DmgMin, this.WeaponCac.DmgMax); if (!User.IsBot) { RolePlayer Rp = User.Roleplayer; if (Rp != null) { Rp.Hit(User, Dmg, Room); } } else { if (User.BotData.RoleBot != null) { User.BotData.RoleBot.Hit(User, Dmg, Room, Bot.VirtualId, User.BotData.RoleBot.Config.TeamId); } } int WeaponEanble = this.WeaponCac.Enable; Bot.ApplyEffect(WeaponEanble, true); Bot.TimerResetEffect = this.WeaponCac.FreezeTime + 1; if (Bot.FreezeEndCounter <= this.WeaponCac.FreezeTime + 1) { Bot.Freeze = true; Bot.FreezeEndCounter = this.WeaponCac.FreezeTime + 1; } }
public static int HandleRotation(int oldRotation, RotationState state) { int rotation = oldRotation; switch (state) { case RotationState.clocwise: HandleClockwiseRotation(ref rotation); return(rotation); case RotationState.counterClockwise: HandleCounterClockwiseRotation(ref rotation); return(rotation); case RotationState.random: if (ButterflyEnvironment.GetRandomNumber(0, 1) == 1) { HandleClockwiseRotation(ref rotation); } else { HandleCounterClockwiseRotation(ref rotation); } return(rotation); default: return(rotation); } }
private void Pan(RoomUser Bot, Room Room) { MovementDirection movement = MovementManagement.GetMovementByDirection(Bot.RotBody); int WeaponEanble = this.WeaponGun.Enable; Bot.ApplyEffect(WeaponEanble, true); Bot.TimerResetEffect = this.WeaponGun.FreezeTime + 1; if (Bot.FreezeEndCounter <= this.WeaponGun.FreezeTime) { Bot.Freeze = true; Bot.FreezeEndCounter = this.WeaponGun.FreezeTime; } for (int i = 0; i < this.WeaponGun.FreezeTime; i++) { if (this.GunCharger <= 0) { return; } this.GunCharger--; int Dmg = ButterflyEnvironment.GetRandomNumber(this.WeaponGun.DmgMin, this.WeaponGun.DmgMax); Room.GetProjectileManager().AddProjectile(Bot.VirtualId, Bot.SetX, Bot.SetY, Bot.SetZ, movement, Dmg, this.WeaponGun.Distance, this.Config.TeamId); } }
internal override void OnTimerTick() { if (SpeechTimer <= 0) { if (GetBotData() != null) { if (GetBotData().RandomSpeech.Count > 0) { RandomSpeech Speech = GetBotData().GetRandomSpeech(); GetRoomUser().Chat(null, Speech.Message, Speech.Shout); } } SpeechTimer = ButterflyEnvironment.GetRandomNumber(0, 150); } else { SpeechTimer--; } if (ActionTimer <= 0) { Point nextCoord = GetRoom().GetGameMap().getRandomWalkableSquare(); //int randomX = ButterflyEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeX); //int randomY = ButterflyEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeY); GetRoomUser().MoveTo(nextCoord.X, nextCoord.Y); ActionTimer = ButterflyEnvironment.GetRandomNumber(0, 30); } else { ActionTimer--; } }
internal Point getRandomWalkableSquare() { List <Point> walkableSquares = new List <Point>(); for (int y = 0; y < mGameMap.GetUpperBound(1) - 1; y++) { for (int x = 0; x < mGameMap.GetUpperBound(0) - 1; x++) { if (mStaticModel.DoorX != x && mStaticModel.DoorY != y && mGameMap[x, y] == 1) { walkableSquares.Add(new Point(x, y)); } } } int RandomNumber = ButterflyEnvironment.GetRandomNumber(0, walkableSquares.Count); int i = 0; foreach (Point coord in walkableSquares) { if (i == RandomNumber) { return(coord); } i++; } return(new Point(0, 0)); }
public int GetRandomGuide() { if (this.GuidesCount == 0) { return(0); } List <int> List = new List <int>(); foreach (KeyValuePair <int, bool> entry in this.GuidesOnDuty) { if (entry.Value) { continue; } List.Add(entry.Key); } if (List.Count == 0) { return(0); } int RandomId = List[ButterflyEnvironment.GetRandomNumber(0, List.Count - 1)]; this.GuidesOnDuty[RandomId] = true; return(RandomId); }
public void Handle(RoomUser user, Item TriggerItem) { if (this.NameBot == "" || this.items.Count == 0) { return; } Room room = handler.GetRoom(); RoomUser Bot = room.GetRoomUserManager().GetBotOrPetByName(this.NameBot); if (Bot == null) { return; } Item roomItem = this.items[ButterflyEnvironment.GetRandomNumber(0, this.items.Count - 1)]; if (roomItem == null) { return; } if (roomItem.Coordinate != Bot.Coordinate) { this.gamemap.TeleportToItem(Bot, roomItem); } }
public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params) { if (Session.GetHabbo() == null) { return; } if (Room.RpRoom) { return; } int Nombre = ButterflyEnvironment.GetRandomNumber(1, 3); Habbo Habbo = Session.GetHabbo(); if (Nombre != 1) //Gagné bravo +1Point { Habbo.Mazo += 1; if (Habbo.MazoHighScore < Habbo.Mazo) { //SQL sauvegarde le score UserRoom.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("cmd.mazo.newscore", Session.Langue), Habbo.Mazo)); Habbo.MazoHighScore = Habbo.Mazo; using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("UPDATE users SET mazoscore = '" + Habbo.MazoHighScore + "' WHERE id = " + Habbo.Id); } else { UserRoom.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("cmd.mazo.win", Session.Langue), Habbo.Mazo)); } UserRoom.ApplyEffect(566, true); UserRoom.TimerResetEffect = 4; } else //Perdu remise à zero { //Mettre l'enable if (Habbo.Mazo > 0) { UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("cmd.mazo.bigloose", Session.Langue)); } else { UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("cmd.mazo.loose", Session.Langue)); } Habbo.Mazo = 0; UserRoom.ApplyEffect(567, true); UserRoom.TimerResetEffect = 4; } using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("UPDATE users SET mazo = '" + Habbo.Mazo + "' WHERE id = " + Habbo.Id); }
public static Point HandleMovementDir(int X, int Y, MovementDirection state) { Point newPoint = new Point(X, Y); switch (state) { case MovementDirection.up: case MovementDirection.down: case MovementDirection.left: case MovementDirection.right: case MovementDirection.downright: case MovementDirection.downleft: case MovementDirection.upright: case MovementDirection.upleft: { HandleMovementDir(ref newPoint, state); break; } case MovementDirection.random: { switch (ButterflyEnvironment.GetRandomNumber(1, 4)) { case 1: { HandleMovementDir(ref newPoint, MovementDirection.up); break; } case 2: { HandleMovementDir(ref newPoint, MovementDirection.down); break; } case 3: { HandleMovementDir(ref newPoint, MovementDirection.left); break; } case 4: { HandleMovementDir(ref newPoint, MovementDirection.right); break; } } break; } } return(newPoint); }
public Point getRandomWalkableSquare(int x, int y) { int rx = ButterflyEnvironment.GetRandomNumber(x - 5, x + 5); int ry = ButterflyEnvironment.GetRandomNumber(y - 5, y + 5); if (this.Model.DoorX == rx || this.Model.DoorY == ry || !this.CanWalk(rx, ry)) { return(new Point(x, y)); } return(new Point(rx, ry)); }
internal override void OnTimerTick() { if (GetBotData() == null) { return; } if (SpeechTimer <= 0) { if (GetBotData().RandomSpeech.Count > 0) { RandomSpeech Speech = GetBotData().GetRandomSpeech(); GetRoomUser().Chat(null, Speech.Message, Speech.Shout); } SpeechTimer = ButterflyEnvironment.GetRandomNumber(10, 300); } else { SpeechTimer--; } if (ActionTimer <= 0) { switch (GetBotData().WalkingMode.ToLower()) { default: case "stand": // (8) Why is my life so boring? break; case "freeroam": Point nextCoord = GetRoom().GetGameMap().getRandomWalkableSquare(); GetRoomUser().MoveTo(nextCoord.X, nextCoord.Y); break; case "specified_range": Point nextCoord2 = GetRoom().GetGameMap().getRandomWalkableSquare(); GetRoomUser().MoveTo(nextCoord2.X, nextCoord2.Y); break; } ActionTimer = ButterflyEnvironment.GetRandomNumber(1, 30); } else { ActionTimer--; } }
public override void OnTimerTick() { if (this.GetBotData() == null) { return; } if (this.SpeechTimer <= 0) { if (this.GetBotData().RandomSpeech.Count > 0 && this.GetBotData().AutomaticChat) { this.GetRoomUser().OnChat(this.GetBotData().GetRandomSpeech(), 2, false); } this.SpeechTimer = this.GetBotData().SpeakingInterval * 2; } else { this.SpeechTimer--; } if (this.ActionTimer <= 0) { if (this.GetBotData().WalkingEnabled&& this.GetBotData().FollowUser == 0) { Point randomWalkableSquare = this.GetRoom().GetGameMap().getRandomWalkableSquare(this.GetBotData().X, this.GetBotData().Y); this.GetRoomUser().MoveTo(randomWalkableSquare.X, randomWalkableSquare.Y); } this.ActionTimer = ButterflyEnvironment.GetRandomNumber(10, 60); } else { this.ActionTimer--; } if (this.GetBotData().FollowUser != 0) { RoomUser user = this.GetRoom().GetRoomUserManager().GetRoomUserByVirtualId(this.GetBotData().FollowUser); if (user == null) { this.GetBotData().FollowUser = 0; } else { if (!Gamemap.TilesTouching(this.GetRoomUser().X, this.GetRoomUser().Y, user.X, user.Y)) { this.GetRoomUser().MoveTo(user.X, user.Y, true); } } } }
public RoleBot(RPEnemy EnemyConfig) { this.SetConfig(EnemyConfig); this.Dead = false; this.AggroVirtuelId = 0; this.AggroTimer = 0; this.ResetBot = false; this.ResetBotTimer = 0; this.HitCount = 0; this.Dodge = false; this.DodgeTimer = 0; this.GunCharger = 6; this.GunLoadTimer = 0; this.DodgeStartCount = ButterflyEnvironment.GetRandomNumber(2, 4); this.ActionTimer = ButterflyEnvironment.GetRandomNumber(10, 30); }
internal RoomAdvertisement GetRandomRoomAdvertisement() { if (RoomAdvertisements.Count <= 0) { return(null); } while (true) { int RndId = ButterflyEnvironment.GetRandomNumber(0, (RoomAdvertisements.Count - 1)); if (RoomAdvertisements[RndId] != null && !RoomAdvertisements[RndId].ExceededLimit) { return(RoomAdvertisements[RndId]); } } }
public GenericBot(int VirtualId) { this.SpeechTimer = ButterflyEnvironment.GetRandomNumber(10, 40); this.ActionTimer = ButterflyEnvironment.GetRandomNumber(10, 30); }
public static void OpenLegendBox(GameClient Session, Item Present, Room Room) { CatalogPage Page = null; int PageId = 0; string BadgeCode = ""; string LotType = ""; int ForceItem = 0; if (ButterflyEnvironment.GetRandomNumber(1, 100) == 100) //Legendaire { PageId = 14514; LotType = "Légendaire"; } else if (ButterflyEnvironment.GetRandomNumber(1, 100) == 100) //Royal { PageId = 584545; LotType = "Royal"; ForceItem = 37951979; } else if (ButterflyEnvironment.GetRandomNumber(1, 50) == 50) //Royal { PageId = 584545; LotType = "Royal"; ForceItem = 70223722; } else if (ButterflyEnvironment.GetRandomNumber(1, 15) == 15) //Ultra rare { PageId = 84641; LotType = "Ultra"; } else if (ButterflyEnvironment.GetRandomNumber(1, 5) == 5) //Royal { PageId = 584545; LotType = "Royal"; ForceItem = 52394359; } else { PageId = 98747; LotType = "Extra"; } int PageBadgeId = 841878; CatalogPage PageBadge = null; ButterflyEnvironment.GetGame().GetCatalog().TryGetPage(PageBadgeId, out PageBadge); if (PageBadge == null) { return; } foreach (KeyValuePair <int, CatalogItem> Item in PageBadge.Items.OrderBy(a => Guid.NewGuid()).ToList()) { if (Session.GetHabbo().GetBadgeComponent().HasBadge(Item.Value.Badge)) { continue; } BadgeCode = Item.Value.Badge; break; } ButterflyEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page); if (Page == null) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.error", Session.Langue)); return; } ItemData LotData = null; if (ForceItem == 0) { LotData = Page.Items.ElementAt(ButterflyEnvironment.GetRandomNumber(0, Page.Items.Count - 1)).Value.Data; } else { LotData = Page.GetItem(ForceItem).Data; } if (LotData == null) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.error", Session.Langue)); return; } int Credits = ButterflyEnvironment.GetRandomNumber(100, 10000) * 1000; Session.GetHabbo().Credits += Credits; Session.GetHabbo().UpdateCreditsBalance(); int WinWin = ButterflyEnvironment.GetRandomNumber(100, 1000); Session.GetHabbo().AchievementPoints += WinWin; using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { queryreactor.RunQuery("UPDATE user_stats SET AchievementScore = AchievementScore + '" + WinWin + "' WHERE id = '" + Session.GetHabbo().Id + "'"); } Session.SendPacket(new AchievementScoreComposer(Session.GetHabbo().AchievementPoints)); RoomUser roomUserByHabbo = Room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id); if (roomUserByHabbo != null) { Session.SendPacket(new UserChangeComposer(roomUserByHabbo, true)); Room.SendPacket(new UserChangeComposer(roomUserByHabbo, false)); } if (!string.IsNullOrEmpty(BadgeCode)) { Session.GetHabbo().GetBadgeComponent().GiveBadge(BadgeCode, true); Session.SendPacket(new ReceiveBadgeComposer(BadgeCode)); } if (roomUserByHabbo != null) { roomUserByHabbo.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("item.legendboxlot", Session.Langue), Credits, WinWin, BadgeCode, LotType)); } Room.GetRoomItemHandler().RemoveFurniture(Session, Present.Id); using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { queryreactor.SetQuery("UPDATE items SET base_item = @baseid WHERE id = " + Present.Id); queryreactor.AddParameter("baseid", LotData.Id); queryreactor.RunQuery(); } string FurniType = Present.GetBaseItem().Type.ToString().ToLower(); Present.BaseItem = LotData.Id; Present.ResetBaseItem(); bool ItemIsInRoom = true; if (Present.Data.Type == 's') { if (!Room.GetRoomItemHandler().SetFloorItem(Session, Present, Present.GetX, Present.GetY, Present.Rotation, true, false, true)) { using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = @itemId LIMIT 1"); dbClient.AddParameter("itemId", Present.Id); dbClient.RunQuery(); } ItemIsInRoom = false; } } else { using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = @itemId LIMIT 1"); dbClient.AddParameter("itemId", Present.Id); dbClient.RunQuery(); } ItemIsInRoom = false; } Session.SendPacket(new OpenGiftComposer(Present.Data, Present.ExtraData, Present, ItemIsInRoom)); if (!ItemIsInRoom) { Session.GetHabbo().GetInventoryComponent().TryAddItem(Present); } }
public void ExecutePile(Point coordinate, RoomUser user, Item item) { if (!this.actionStacks.ContainsKey(coordinate)) { return; } if (this.WiredUsed.ContainsKey(coordinate)) { if (this.WiredUsed[coordinate].Contains(user)) { return; } else { this.WiredUsed[coordinate].Add(user); } } else { this.WiredUsed.TryAdd(coordinate, new List <RoomUser>() { user }); } if (this.conditionStacks.ContainsKey(coordinate)) { List <Item> ConditionStack = this.conditionStacks[coordinate]; int CycleCountCdt = 0; foreach (Item roomItem in ConditionStack.ToArray()) { CycleCountCdt++; if (CycleCountCdt > 20) { break; } if (roomItem == null || roomItem.WiredHandler == null) { continue; } if (!((IWiredCondition)roomItem.WiredHandler).AllowsExecution(user, item)) { return; } } } List <Item> ActionStack = (List <Item>) this.actionStacks[coordinate]; if (this.SpecialRandom.Contains(coordinate)) { int CountAct = ActionStack.Count - 1; int RdnWired = ButterflyEnvironment.GetRandomNumber(0, CountAct); Item ActRand = ActionStack[RdnWired]; ((IWiredEffect)ActRand.WiredHandler).Handle(user, item); } else if (this.SpecialUnseen.ContainsKey(coordinate)) { int CountAct = ActionStack.Count - 1; int NextWired = this.SpecialUnseen[coordinate]; if (NextWired > CountAct) { NextWired = 0; this.SpecialUnseen[coordinate] = 0; } this.SpecialUnseen[coordinate]++; Item ActNext = ActionStack[NextWired]; if (ActNext != null && ActNext.WiredHandler != null) { ((IWiredEffect)ActNext.WiredHandler).Handle(user, item); } } else { int CycleCount = 0; foreach (Item roomItem in ActionStack.ToArray()) { CycleCount++; if (CycleCount > 20) { break; } if (roomItem != null && roomItem.WiredHandler != null) { ((IWiredEffect)roomItem.WiredHandler).Handle(user, item); } } } }
public override void OnUserSay(RoomUser User, string Message) { RoomUser roomUser = this.GetRoomUser(); if (roomUser.PetData.DBState != DatabaseUpdateState.NeedsInsert) { roomUser.PetData.DBState = DatabaseUpdateState.NeedsUpdate; } if (roomUser.PetData.OwnerId != User.GetClient().GetHabbo().Id) { return; } if (!Message.ToLower().StartsWith(roomUser.PetData.Name.ToLower() + " ")) { return; } if (Message.ToLower().Equals(roomUser.PetData.Name.ToLower())) { roomUser.SetRot(Rotation.Calculate(roomUser.X, roomUser.Y, User.X, User.Y), false); } else { string input = Message.Substring(roomUser.PetData.Name.ToLower().Length + 1); int randomNumber = ButterflyEnvironment.GetRandomNumber(1, 8); if (roomUser.PetData.Energy > 10 && randomNumber < 6) { this.RemovePetStatus(); switch (ButterflyEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(input)) { case 0: //Libre this.RemovePetStatus(); Point randomWalkableSquare = this.GetRoom().GetGameMap().getRandomWalkableSquare(this.GetBotData().X, this.GetBotData().Y); roomUser.MoveTo(randomWalkableSquare.X, randomWalkableSquare.Y); roomUser.PetData.AddExpirience(10); break; case 1: //Assis this.RemovePetStatus(); roomUser.PetData.AddExpirience(10); roomUser.SetStatus("sit", TextHandling.GetString(roomUser.Z)); roomUser.IsSit = true; roomUser.UpdateNeeded = true; this.ActionTimer = 25; this.EnergyTimer = 10; break; case 2: //Couché this.RemovePetStatus(); roomUser.SetStatus("lay", TextHandling.GetString(roomUser.Z)); roomUser.IsLay = true; roomUser.UpdateNeeded = true; roomUser.PetData.AddExpirience(10); this.ActionTimer = 30; this.EnergyTimer = 5; break; case 3: this.RemovePetStatus(); int pX = User.X; int pY = User.Y; this.ActionTimer = 30; if (User.RotBody == 4) { pY = User.Y + 1; } else if (User.RotBody == 0) { pY = User.Y - 1; } else if (User.RotBody == 6) { pX = User.X - 1; } else if (User.RotBody == 2) { pX = User.X + 1; } else if (User.RotBody == 3) { pX = User.X + 1; pY = User.Y + 1; } else if (User.RotBody == 1) { pX = User.X + 1; pY = User.Y - 1; } else if (User.RotBody == 7) { pX = User.X - 1; pY = User.Y - 1; } else if (User.RotBody == 5) { pX = User.X - 1; pY = User.Y + 1; } roomUser.PetData.AddExpirience(10); roomUser.MoveTo(pX, pY); break; case 4: //demande this.RemovePetStatus(); roomUser.PetData.AddExpirience(10); roomUser.SetRot(Rotation.Calculate(roomUser.X, roomUser.Y, User.X, User.Y), false); roomUser.SetStatus("beg", TextHandling.GetString(roomUser.Z)); roomUser.UpdateNeeded = true; this.ActionTimer = 25; this.EnergyTimer = 10; break; case 5: this.RemovePetStatus(); roomUser.SetStatus("ded", TextHandling.GetString(roomUser.Z)); roomUser.UpdateNeeded = true; roomUser.PetData.AddExpirience(10); this.SpeechTimer = 45; this.ActionTimer = 30; break; case 6: break; case 7: break; case 8: break; case 9: this.RemovePetStatus(); roomUser.SetStatus("jmp", TextHandling.GetString(roomUser.Z)); roomUser.UpdateNeeded = true; roomUser.PetData.AddExpirience(10); this.EnergyTimer = 5; this.SpeechTimer = 10; this.ActionTimer = 5; break; case 10: break; case 11: break; case 12: break; case 13: //Panier ? this.RemovePetStatus(); roomUser.OnChat("ZzzZZZzzzzZzz", 0, false); roomUser.SetStatus("lay", TextHandling.GetString(roomUser.Z)); roomUser.IsLay = true; roomUser.UpdateNeeded = true; roomUser.PetData.AddExpirience(10); this.EnergyTimer = 5; this.SpeechTimer = 30; this.ActionTimer = 45; break; case 14: break; case 15: break; case 16: break; case 17: break; case 18: break; case 19: break; case 20: break; default: string[] strArray = ButterflyEnvironment.GetLanguageManager().TryGetValue("pet.unknowncommand", roomUser.mRoom.RoomData.Langue).Split(new char[1] { ',' }); Random random = new Random(); roomUser.OnChat(strArray[random.Next(0, strArray.Length - 1)], 0, false); break; } roomUser.PetData.PetEnergy(false); roomUser.PetData.PetEnergy(false); } else { this.RemovePetStatus(); if (!roomUser.mRoom.RoomMutePets) { if (roomUser.PetData.Energy < 10) { string[] strArray = ButterflyEnvironment.GetLanguageManager().TryGetValue("pet.tired", roomUser.mRoom.RoomData.Langue).Split(new char[1] { ',' }); Random random = new Random(); roomUser.OnChat(strArray[random.Next(0, strArray.Length - 1)], 0, false); roomUser.SetStatus("lay", TextHandling.GetString(roomUser.Z)); roomUser.IsLay = true; this.SpeechTimer = 50; this.ActionTimer = 45; this.EnergyTimer = 5; } else { string[] strArray = ButterflyEnvironment.GetLanguageManager().TryGetValue("pet.lazy", roomUser.mRoom.RoomData.Langue).Split(new char[1] { ',' }); Random random = new Random(); roomUser.OnChat(strArray[random.Next(0, strArray.Length - 1)], 0, false); roomUser.PetData.PetEnergy(false); } } } } }
public override void OnTimerTick() { /*if (this.SpeechTimer <= 0) * { * RoomUser roomUser = this.GetRoomUser(); * * if (roomUser.PetData.DBState != DatabaseUpdateState.NeedsInsert) * roomUser.PetData.DBState = DatabaseUpdateState.NeedsUpdate; * * /*if (roomUser != null) * { * if (!roomUser.mRoom.RoomMutePets) * { * Random random = new Random(); * this.RemovePetStatus(); * string[] strArray = ButterflyEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("speech.pet" + roomUser.PetData.Type); * string str = strArray[random.Next(0, strArray.Length - 1)]; * * if (!string.IsNullOrEmpty(str)) * { * if (str.Length != 3) * roomUser.OnChat(str, 0, false); * else * roomUser.SetStatus(str, TextHandling.GetString(roomUser.Z)); * } * } * } * this.SpeechTimer = ButterflyEnvironment.GetRandomNumber(20, 120); * } * else * this.SpeechTimer--;*/ if (this.ActionTimer <= 0) { try { this.RemovePetStatus(); this.ActionTimer = ButterflyEnvironment.GetRandomNumber(10, 60); if (!this.GetRoomUser().RidingHorse&& this.GetRoomUser().PetData.Type != 16) { this.RemovePetStatus(); Point randomWalkableSquare = this.GetRoom().GetGameMap().getRandomWalkableSquare(this.GetBotData().X, this.GetBotData().Y); this.GetRoomUser().MoveTo(randomWalkableSquare.X, randomWalkableSquare.Y); } } catch (Exception ex) { Logging.HandleException(ex, "PetBot.OnTimerTick"); } } else { --this.ActionTimer; } if (this.EnergyTimer <= 0) { this.RemovePetStatus(); this.GetRoomUser().PetData.PetEnergy(true); this.EnergyTimer = ButterflyEnvironment.GetRandomNumber(30, 120); } else { --this.EnergyTimer; } if (this.GetBotData().FollowUser != 0) { RoomUser user = this.GetRoom().GetRoomUserManager().GetRoomUserByVirtualId(this.GetBotData().FollowUser); if (user == null) { this.GetBotData().FollowUser = 0; } else { if (!Gamemap.TilesTouching(this.GetRoomUser().X, this.GetRoomUser().Y, user.X, user.Y)) { this.GetRoomUser().MoveTo(user.X, user.Y, true); } } } }
internal RandomSpeech GetRandomSpeech() { return(RandomSpeech[ButterflyEnvironment.GetRandomNumber(0, (RandomSpeech.Count - 1))]); }
public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params) { if (Params.Length != 2) { return; } if (!Room.RpRoom || !Room.Pvp) { return; } RolePlayer Rp = UserRoom.Roleplayer; if (Rp == null) { return; } if (Rp.Dead || !Rp.PvpEnable || Rp.SendPrison || UserRoom.Freeze) { return; } int WeaponEanble = Rp.WeaponCac.Enable; UserRoom.ApplyEffect(WeaponEanble, true); UserRoom.TimerResetEffect = Rp.WeaponCac.FreezeTime + 1; if (UserRoom.FreezeEndCounter <= Rp.WeaponCac.FreezeTime) { UserRoom.Freeze = true; UserRoom.FreezeEndCounter = Rp.WeaponCac.FreezeTime; } RoomUser TargetRoomUser = Room.GetRoomUserManager().GetRoomUserByHabbo(Params[1].ToString()); if (TargetRoomUser == null) { RoomUser BotOrPet = Room.GetRoomUserManager().GetBotOrPetByName(Params[1].ToString()); if (BotOrPet == null || BotOrPet.BotData == null || BotOrPet.BotData.RoleBot == null) { return; } if (BotOrPet.BotData.RoleBot.Dead) { return; } if (Math.Abs(BotOrPet.X - UserRoom.X) >= 2 || Math.Abs(BotOrPet.Y - UserRoom.Y) >= 2) { return; } int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponCac.DmgMin, Rp.WeaponCac.DmgMax); BotOrPet.BotData.RoleBot.Hit(BotOrPet, Dmg, Room, UserRoom.VirtualId, -1); } else { RolePlayer RpTwo = TargetRoomUser.Roleplayer; if (RpTwo == null || (!RpTwo.PvpEnable && RpTwo.AggroTimer <= 0)) { return; } if (TargetRoomUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id) { return; } if (RpTwo.Dead || RpTwo.SendPrison) { return; } if (Math.Abs(TargetRoomUser.X - UserRoom.X) >= 2 || Math.Abs(TargetRoomUser.Y - UserRoom.Y) >= 2) { return; } int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponCac.DmgMin, Rp.WeaponCac.DmgMax); Rp.AggroTimer = 30; RpTwo.Hit(TargetRoomUser, Dmg, Room); } }
public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params) { if (!Room.RpRoom || !Room.Pvp || UserRoom.Freeze) { return; } RolePlayer Rp = UserRoom.Roleplayer; if (Rp == null) { return; } if (Rp.Dead || !Rp.PvpEnable || Rp.SendPrison) { return; } if (Rp.Munition <= 0) { UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.munitionnotfound", Session.Langue)); return; } if (Rp.GunLoad <= 0) { UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.reloadweapon", Session.Langue)); return; } MovementDirection movement = MovementManagement.GetMovementByDirection(UserRoom.RotBody); int WeaponEanble = Rp.WeaponGun.Enable; UserRoom.ApplyEffect(WeaponEanble, true); UserRoom.TimerResetEffect = Rp.WeaponGun.FreezeTime + 1; Rp.AggroTimer = 30; if (UserRoom.FreezeEndCounter <= Rp.WeaponGun.FreezeTime) { UserRoom.Freeze = true; UserRoom.FreezeEndCounter = Rp.WeaponGun.FreezeTime; } for (int i = 0; i < Rp.WeaponGun.FreezeTime; i++) { if (Rp.Munition <= 0 || Rp.GunLoad <= 0) { break; } Rp.Munition--; Rp.GunLoad--; int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponGun.DmgMin, Rp.WeaponGun.DmgMax); Room.GetProjectileManager().AddProjectile(UserRoom.VirtualId, UserRoom.SetX, UserRoom.SetY, UserRoom.SetZ, movement, Dmg, Rp.WeaponGun.Distance); } Rp.SendUpdate(); }
internal void ProcessUpdates() { this.UpdateCounter--; if (this.UpdateCounter <= 0 || IsTrans) { this.UpdateNeeded = false; this.UpdateCounter = 0; RoomUser User = null; RoomUser User2 = null; switch (GetBaseItem().InteractionType) { case InteractionType.onewaygate: User = null; if (InteractingUser > 0) { User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser); //GetRoom().FreeSqareForUsers(mX, mY); } if (User != null && User.X == mX && User.Y == mY) { ExtraData = "1"; User.MoveTo(SquareBehind); ReqUpdate(1, false); UpdateState(false, true); } else if (User != null && User.Coordinate == SquareBehind) { User.UnlockWalking(); ExtraData = "0"; InteractingUser = 0; UpdateState(false, true); } else if (ExtraData == "1") { ExtraData = "0"; UpdateState(false, true); } if (User == null) { InteractingUser = 0; } break; case InteractionType.teleport: User = null; User2 = null; bool keepDoorOpen = false; bool showTeleEffect = false; // Do we have a primary user that wants to go somewhere? if (InteractingUser > 0) { User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser); // Is this user okay? if (User != null) { // Is he in the tele? if (User.Coordinate == Coordinate) { //Remove the user from the square User.AllowOverride = false; if (TeleHandler.IsTeleLinked(Id, mRoom)) { showTeleEffect = true; if (true) { // Woop! No more delay. uint TeleId = TeleHandler.GetLinkedTele(Id, mRoom); uint RoomId = TeleHandler.GetTeleRoomId(TeleId, mRoom); // Do we need to tele to the same room or gtf to another? if (RoomId == this.RoomId) { RoomItem Item = GetRoom().GetRoomItemHandler().GetItem(TeleId); if (Item == null) { User.UnlockWalking(); } else { // Set pos User.SetPos(Item.GetX, Item.GetY, Item.GetZ); User.SetRot(Item.Rot, false); // Force tele effect update (dirty) Item.ExtraData = "2"; Item.UpdateState(false, true); // Set secondary interacting user Item.InteractingUser2 = InteractingUser; } } else { // Let's run the teleport delegate to take futher care of this.. WHY DARIO?! if (!User.IsBot && User != null && User.GetClient() != null && User.GetClient().GetHabbo() != null && User.GetClient().GetMessageHandler() != null) { User.GetClient().GetHabbo().IsTeleporting = true; User.GetClient().GetHabbo().TeleportingRoomID = RoomId; User.GetClient().GetHabbo().TeleporterId = TeleId; User.GetClient().GetMessageHandler().PrepareRoomForUser(RoomId, ""); } //ButterflyEnvironment.GetGame().GetRoomManager().AddTeleAction(new TeleUserData(User.GetClient().GetMessageHandler(), User.GetClient().GetHabbo(), RoomId, TeleId)); } // We're done with this tele. We have another one to bother. InteractingUser = 0; } else { // We're linked, but there's a delay, so decrease the delay and wait it out. //User.TeleDelay--; } } else { // This tele is not linked, so let's gtfo. User.UnlockWalking(); InteractingUser = 0; } } // Is he in front of the tele? else if (User.Coordinate == SquareInFront) { User.AllowOverride = true; // Open the door keepDoorOpen = true; // Lock his walking. We're taking control over him. Allow overriding so he can get in the tele. if (User.IsWalking && (User.GoalX != mX || User.GoalY != mY)) { User.ClearMovement(true); } User.CanWalk = false; User.AllowOverride = true; // Move into the tele User.MoveTo(Coordinate.X, Coordinate.Y, true); } // Not even near, do nothing and move on for the next user. else { InteractingUser = 0; } } else { // Invalid user, do nothing and move on for the next user. InteractingUser = 0; } } // Do we have a secondary user that wants to get out of the tele? if (InteractingUser2 > 0) { User2 = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser2); // Is this user okay? if (User2 != null) { // If so, open the door, unlock the user's walking, and try to push him out in the right direction. We're done with him! keepDoorOpen = true; User2.UnlockWalking(); User2.MoveTo(SquareInFront); } // This is a one time thing, whether the user's valid or not. InteractingUser2 = 0; } // Set the new item state, by priority if (keepDoorOpen) { if (ExtraData != "1") { ExtraData = "1"; UpdateState(false, true); } } else if (showTeleEffect) { if (ExtraData != "2") { ExtraData = "2"; UpdateState(false, true); } } else { if (ExtraData != "0") { ExtraData = "0"; UpdateState(false, true); } } // We're constantly going! ReqUpdate(1, false); break; case InteractionType.bottle: ExtraData = ButterflyEnvironment.GetRandomNumber(0, 7).ToString(); UpdateState(); break; case InteractionType.dice: ExtraData = ButterflyEnvironment.GetRandomNumber(1, 6).ToString(); UpdateState(); break; case InteractionType.habbowheel: ExtraData = ButterflyEnvironment.GetRandomNumber(1, 10).ToString(); UpdateState(); break; case InteractionType.loveshuffler: if (ExtraData == "0") { ExtraData = ButterflyEnvironment.GetRandomNumber(1, 4).ToString(); ReqUpdate(20, false); } else if (ExtraData != "-1") { ExtraData = "-1"; } UpdateState(false, true); break; case InteractionType.alert: if (this.ExtraData == "1") { this.ExtraData = "0"; this.UpdateState(false, true); } break; case InteractionType.vendingmachine: if (this.ExtraData == "1") { User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser); if (User != null) { User.UnlockWalking(); int randomDrink = GetBaseItem().VendingIds[ButterflyEnvironment.GetRandomNumber(0, (GetBaseItem().VendingIds.Count - 1))]; User.CarryItem(randomDrink); } this.InteractingUser = 0; this.ExtraData = "0"; UpdateState(false, true); } break; case InteractionType.scoreboard: { if (string.IsNullOrEmpty(ExtraData)) { break; } int seconds = 0; try { seconds = int.Parse(ExtraData); } catch { } if (seconds > 0) { if (interactionCountHelper == 1) { seconds--; interactionCountHelper = 0; ExtraData = seconds.ToString(); UpdateState(); } else { interactionCountHelper++; } UpdateCounter = 1; } else { UpdateCounter = 0; } break; } case InteractionType.banzaicounter: { if (string.IsNullOrEmpty(ExtraData)) { break; } int seconds = 0; try { seconds = int.Parse(ExtraData); } catch { } if (seconds > 0) { if (interactionCountHelper == 1) { seconds--; interactionCountHelper = 0; ExtraData = seconds.ToString(); UpdateState(); } else { interactionCountHelper++; } UpdateCounter = 1; } else { UpdateCounter = 0; GetRoom().GetBanzai().BanzaiEnd(); } break; } case InteractionType.banzaitele: { ExtraData = string.Empty; UpdateState(); break; } /* * 3 = Red 1 * 4 = Red 2 * 5 = Red 3 * * 6 = Green 1 * 7 = Green 2 * 8 = Green 3 * * 9 = Blue 1 * 10= Blue 2 * 11= Blue 3 * * 12= Yellow 1 * 13= Yellow 2 * 14= Yellow 3 */ case InteractionType.banzaifloor: { if (value == 3) { if (interactionCountHelper == 1) { interactionCountHelper = 0; switch (team) { case Team.blue: { ExtraData = "11"; break; } case Team.green: { ExtraData = "8"; break; } case Team.red: { ExtraData = "5"; break; } case Team.yellow: { ExtraData = "14"; break; } } } else { ExtraData = ""; interactionCountHelper++; } UpdateState(); interactionCount++; if (interactionCount < 16) { UpdateCounter = 1; } else { UpdateCounter = 0; } } break; } case InteractionType.banzaipuck: { if (interactionCount > 4) { interactionCount++; UpdateCounter = 1; } else { interactionCount = 0; UpdateCounter = 0; } break; } case InteractionType.freezetile: { if (InteractingUser > 0) { ExtraData = "11000"; UpdateState(false, true); GetRoom().GetFreeze().onFreezeTiles(this, freezePowerUp, InteractingUser); InteractingUser = 0; interactionCountHelper = 0; } break; } case InteractionType.freezetimer: { if (string.IsNullOrEmpty(ExtraData)) { break; } if (!GetRoom().GetFreeze().GameIsStarted) { GetRoom().GetFreeze().StartGame(); } int seconds = 0; try { seconds = int.Parse(ExtraData); } catch { } if (seconds > 0) { if (interactionCountHelper == 1) { seconds--; interactionCountHelper = 0; ExtraData = seconds.ToString(); UpdateState(); } else { interactionCountHelper++; } UpdateCounter = 1; } else { UpdateNeeded = false; GetRoom().GetFreeze().StopGame(); } break; } } } }