public override void Handle(GameClient client) { if (this.Field1 == 0x77F20036) { client.EnterInn(); return; } for (int i = 0; i < client.GetLocalWorld().encounters.Count; i++) { Monster monster = client.GetLocalWorld().encounters[i].GetMonsterByID(this.Field1); if (monster != null) { if (monster.IsDead()) { monster.Die(); client.GetLocalWorld().encounters[i].RemoveMonster(monster); } else { monster.Pain(18 + RandomHelper.Next(8)); if (monster.IsDead()) { monster.Die(); client.GetLocalWorld().encounters[i].RemoveMonster(monster); } } break; } } }
public override void Handle(GameClient client) { if (this.Id != 0x000A) throw new NotImplementedException(); // a hackish way to get client.BnetClient in context -- pretends games has only one client in. when we're done with implementing bnet completely, will get this sorted out. /raist client.BnetClient = Core.Games.GameManager.AvailableGames[(ulong)this.Field2].Clients.FirstOrDefault(); if (client.BnetClient != null) { client.Toon = client.BnetClient.CurrentToon; client.BnetClient.InGameClient = client; } client.SendMessageNow(new VersionsMessage() { Id = 0x000D, SNOPackHash = this.SNOPackHash, ProtocolHash = GameMessage.ImplementedProtocolHash, Version = "0.3.0.7333", }); client.SendMessage(new ConnectionEstablishedMessage() { Id = 0x002E, Field0 = 0x00000000, Field1 = 0x4BB91A16, Field2 = this.SNOPackHash, }); client.SendMessage(new GameSetupMessage() { Id = 0x002F, Field0 = 0x00000077, }); client.SendMessage(new SavePointInfoMessage() { Id = 0x0045, snoLevelArea = -1, }); client.SendMessage(new HearthPortalInfoMessage() { Id = 0x0046, snoLevelArea = -1, Field1 = -1, }); client.SendMessage(new ActTransitionMessage() { Id = 0x00A8, Field0 = 0x00000000, Field1 = true, }); client.GameUniverse.EnterPlayer(client); client.FlushOutgoingBuffer(); client.GetLocalWorld().SendEncounters(client); client.FlushOutgoingBuffer(); }