protected override void OnHandle(IPacket packet, ClientWorldState worldState) { PerformAbilityPacket incomingPacket = (PerformAbilityPacket)packet; ClientCharacter mobileToUpdate = (ClientCharacter)worldState.GetCharacter(incomingPacket.CharacterId); if (mobileToUpdate == null) { worldState.MissingCharacters.Add(incomingPacket.CharacterId); return; } worldState.PerformAbility(incomingPacket.AbilityUsed, mobileToUpdate); }
protected override void OnHandle(IPacket packet, NetState netState, ServerWorldState worldState) { PerformAbilityPacket incomingPacket = (PerformAbilityPacket)packet; ServerCharacter mobileToUpdate = (ServerCharacter)worldState.GetCharacter(netState.WorldId); if (mobileToUpdate != null) { if (worldState.PerformAbility(incomingPacket.AbilityUsed, mobileToUpdate)) { foreach (int characterId in worldState.GetMapCharacters(mobileToUpdate.CurrentMapId)) { if (characterId == mobileToUpdate.Id) { continue; } ServerCharacter characterToUpdate = ((ServerCharacter)worldState.GetCharacter(characterId)); NetState clientSendTo = characterToUpdate.Owner; clientSendTo.Send(incomingPacket); } } } }
internal void PerformAbility(ClientCharacter playerCharacter, CharacterPowerIdentity abilityId) { performAbilityPacket = new PerformAbilityPacket(playerCharacter.Id, abilityId); //Packets are sent on Update to reduce Spam }