Previously, certain errors early in the program's execution – such as an attempt to use two different packet processors for the same packet ID – would not be displayed because of a crash when attempting to get an uninitialized mwmp::Main in the Engine's destructor.
When determining actors siding with someone, also check the team members of DedicatedPlayers, not just those of the LocalPlayer.
Don't set players as each other's hitAttemptActor if they are team members.
Don't run startCombat() for DedicatedPlayers who get attacked.
Revert 9502d84a9cb99028f76f7fd2e05f9193ca66561 because the creature graveyard solves more problems than it causes. Only have the authority of a cell send deletion packets when a summon despawns.
Summoning is one of the least multiplayer-friendly systems in OpenMW and really needs to be redone serverside.
Previously, receiving a Container packet about an actor with a previously initialized listener who was currently located in an unloaded cell crashed the game.
Previously, creatures with fast attack animations would have their attack updated right after being started, which happened so quickly that it prevented the attack start from actually being sent by the client.
When fixing problems with ObjectActivate in 49fa35a516, I mistakenly made it so the picking up of items no longer also sent ObjectDelete packets. That is now fixed.
Previously, each client chose its own attack animations for DedicatedPlayers and DedicatedActors based on the direction they were walking in, which however led to desyncs for players with "Always Use Best Attack" enabled and for creatures which pick their attack animations randomly.
When Koncord implemented spellcasting, he made it so only the act of initiating a spellcast was synchronized, leaving it to other clients to actually cast a spell for a dedicated player or actor once their spellcasting animation was over. This had led to a lot of desyncs and has always been inconsistent with the handling of attacks, so I've belatedly gone ahead and prevented the end of a spellcasting animation from having any effect for dedicated players and actors, making them cast a spell when an appropriate Cast packet is received from them instead.
Additionally, the logged messages in MechanicsHelper's handling of attacking and casting have been moved around slightly.
This means the server scripts are now required to send a WorldKillCount packet as a reply to ActorDeath packets sent by clients. This gives the server full control over which kills are counted, while also solving the previous problem of kills being counted only for actors that had finished their death animations.