1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-02 12:45:33 +00:00
Commit graph

13356 commits

Author SHA1 Message Date
Andrei Kortunov
cd81f81fb6 Initialize variables to avoid GCC warnings 2019-12-22 10:44:14 +04:00
David Cernat
ca9cd90a4d Add OpenMW commits up to 20 Dec 2019
# Conflicts:
#	apps/openmw/mwworld/scene.cpp
2019-12-20 15:43:50 +02:00
Andrei Kortunov
30a18c2a66
Merge pull request #2625 from Capostrophic/sneaking
[Regression] Attempt to fix idle state reset again
2019-12-20 14:32:22 +04:00
Assumeru
dfbe0021a5 Change rescaling to be more inline with vanilla (fixes #5214) (#2635)
* move rescaling to loadData

* clamp on save
2019-12-18 19:37:45 +03:00
David Cernat
2249450b0e [Client] Fix inability for actors to talk to players caused by 4118b20608 2019-12-15 11:50:15 +02:00
David Cernat
9763f6f9c5 [Client] Fix infinite activation loops caused by 48aba76ce9 2019-12-15 07:23:37 +02:00
Andrei Kortunov
97ee4bc349 Improve equipment logic (bug #5223) 2019-12-14 22:30:27 +04:00
David Cernat
bc093c8596 [General] Implement OnObjectHit packet, part 2
ObjectHit is now also sent when local actors succeed or fail in hitting other actors with melee attacks, with the packet including the success state of their attack.

It is also sent when creatures hit a non-actor object.
2019-12-13 14:00:51 +02:00
David Cernat
96049befe9 [Client] Add and use getObjectFromPtr() method in ObjectList 2019-12-13 13:07:21 +02:00
Capostrophic
483b37bb3f Disallow resting if the fall height hasn't been reset (bug #4802) 2019-12-12 15:26:02 +03:00
Andrei Kortunov
3d9c42e8ee Cap reputation values (bug #5226) 2019-12-11 08:47:46 +04:00
David Cernat
2973cc4f4d [General] Implement OnObjectHit packet, part 1
ObjectHit is now sent when an NPC hits a non-actor object.
2019-12-08 16:14:01 +02:00
David Cernat
eeb77f80d2 [Client] Send ConsoleCommand packets when console is used 2019-12-07 10:11:45 +02:00
David Cernat
4b27f8986b [Client] Synchronize positions for actors during death animations
This needs some improvements, because:

1) Sometimes the cell authority sends the death animation too late and a different one gets played on the other clients
2) There is probably a simpler check that can be done for position changes during a death animation.
2019-12-06 21:04:42 +02:00
David Cernat
7dd03798e7 [Client] Don't update already initialized but deleted LocalActors 2019-12-06 16:12:29 +02:00
David Cernat
c253950dd7 [Client] Don't play dying words for NPCs loaded up as dead from server 2019-12-06 14:50:10 +02:00
David Cernat
2af811be40 [Client] Use proper log message when receiving ActorDeath packets 2019-12-06 12:43:41 +02:00
David Cernat
1950748dae [Client] Always use autoEquip on newly initialized LocalActors
Previously, it was possible for a Container packet to clear all equipment slots for an actor without the actor's authority then sending an equipment packet to correct that, due to packet loss or sudden disconnection, leading to actors not wearing any equipment as soon as they acquired a new authority.

This ensures that newly initialized LocalActors will now autoEquip.
2019-12-06 12:21:30 +02:00
David Cernat
cd444f8707 [Client] Send actor equipment after Container packet causes autoEquip
Previously, a Container packet with a SET action for an actor would clear their entire InventoryStore, also clearing all of their equipment slots. The actor's authority would then autoEquip new equipment for the actor, but that new equipment would not actually get sent to the other players. As a result, they would see the actor fighting with hand-to-hand attacks, while also not actually wearing anything despite being rendered as wearing the same clothes and armor as before.

This commit makes the actor's authority resend the actor's equipment as soon as the Container packet has caused the autoEquip to happen.
2019-12-06 11:40:07 +02:00
David Cernat
f43ba7fba2 [Client] Don't initialize disabled or deleted actors as LocalActors 2019-12-05 20:27:48 +02:00
David Cernat
980edac942 [General] Rename PlayerTeam into PlayerAlly
Considering that you can be allies with someone without being allied to their allies, changing the name makes the system more intuitive.
2019-12-05 19:15:11 +02:00
Andrei Kortunov
43330f1dd1
Merge pull request #2626 from akortunov/master
Reset holstered shield before rebuilding an NPC animation
2019-12-05 17:37:21 +04:00
Andrei Kortunov
d66b81d7f7 Reset holstered shield before rebuilding an NPC animation 2019-12-05 17:35:32 +04:00
David Cernat
a383b7b612 [General] Include death animations in ActorDeath packets 2019-12-05 13:27:55 +02:00
David Cernat
ecf00af548 [General] Implement WorldDestinationOverride packet, part 1
Destinations for doors with cell transitions are now overridden.
2019-12-04 16:43:56 +02:00
David Cernat
154a9ce5a6 [General] Fix declarations hiding class members, part 2 2019-12-04 10:17:33 +02:00
David Cernat
270867a397 [Client] Ensure mwmp::Main is initialized before GUIController cleanup
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.
2019-12-04 08:39:33 +02:00
David Cernat
5b4db83d61 [Client] Once again allow beds to be used even if waiting is disallowed
This had been broken by rest-related commits in OpenMW.
2019-12-03 23:55:55 +02:00
David Cernat
c4950f1beb [Client] Implement PlayerTeam packet, part 2
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.
2019-12-03 22:40:02 +02:00
Capostrophic
86c8fe386b Fix idle state reset 2019-12-03 20:50:57 +03:00
David Cernat
3a52f7dcf5 [Client] Add isTeamMember() method to MechanicsHelper 2019-12-03 17:04:49 +02:00
David Cernat
68f524b822 [Client] Use more succinct methods for PlayerPtr in MechanicsHelper 2019-12-03 14:12:40 +02:00
David Cernat
21c8821d05 [General] Ignore carriage returns in resources/version file 2019-12-03 13:21:10 +02:00
David Cernat
3aaf64a984 [Client] Only send DoorState packets for logged in players
This prevents problems with content that uses scripted doors in the area players are spawned in before they log in.
2019-12-03 12:23:05 +02:00
David Cernat
5ca2c83b02 [Client] Fix additional resurrection problems caused by 6450d84473 2019-12-03 11:42:56 +02:00
Andrei Kortunov
eec82f676a
Merge pull request #2602 from elsid/clang_tidy
Fix clang-tidy issues
2019-12-03 08:27:43 +04:00
David Cernat
eeb3e4f938 [Client] Reset friendly hits when summoning a creature 2019-12-02 23:29:36 +02:00
David Cernat
9792a5256f [General] Use different compromise for summoning
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.
2019-12-02 20:48:52 +02:00
David Cernat
753e310dd4 [General] Implement PlayerTeam packet 2019-12-02 19:08:03 +02:00
David Cernat
385ef55848 [Client] Avoid crashes by only using inventory listeners in loaded cells
Previously, receiving a Container packet about an actor with a previously initialized listener who was currently located in an unloaded cell crashed the game.
2019-12-02 09:37:10 +02:00
David Cernat
a54bc364ba [Client] Fix code conflict with OpenMW in OpRemoveSpell correctly 2019-12-02 00:27:33 +02:00
David Cernat
9d6f3fdd09 Add OpenMW commits up to 1 Dec 2019
# Conflicts:
#	CMakeLists.txt
#	apps/openmw/mwscript/aiextensions.cpp
#	apps/openmw/mwscript/statsextensions.cpp
2019-12-01 23:52:42 +02:00
David Cernat
d9502d84a9 [Client] Disable clientside handling of summoned creature graveyards 2019-12-01 20:22:04 +02:00
David Cernat
446c22723e [General] Set default values for some variables in BasePlayer 2019-12-01 18:42:56 +02:00
David Cernat
1283d5d487 [General] Synchronize TCL state for players
Additionally, only purge temporary levitation effect for DedicatedPlayers if one has been added.
2019-12-01 18:13:24 +02:00
David Cernat
7120f41cfa [Client] Add creatures to summoner's creature map when they are missing
Additionally, adjust logging related to summons.
2019-12-01 15:02:04 +02:00
David Cernat
985d1f17e0 [Client] Use correct magnitude for active effect created for summons 2019-12-01 14:58:06 +02:00
David Cernat
d78bdefc01 [General] Include effect and spell ID for summons in ObjectSpawn packets 2019-12-01 13:31:11 +02:00
Capostrophic
e7f6ab1ae2 Avoid using getPtr for object search in scripting (bug #5220) 2019-12-01 14:09:59 +03:00
Andrei Kortunov
058bbf4b0f
Merge pull request #2620 from elsid/fix_cage_door_rotation
Rotate door object using direct rotation order once
2019-12-01 09:54:38 +04:00
David Cernat
5575242299 [Client] Don't allow players to attack while in persuasion dialogue 2019-11-30 20:05:20 +02:00
David Cernat
64c94346b6 [Client] Always send attack starts by actors immediately
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.
2019-11-30 15:50:05 +02:00
elsid
3cfd5fca4e
Rotate door object using direct rotation order once
Instead of rotating using inverse and then applying the direct rotation.
To properly update object in navigator.
2019-11-30 14:09:00 +01:00
David Cernat
ed7fe859dd [Client] Set attackingOrSpell state instantly after Attack/Cast packets
It is no longer necessary to wait for the Actors::update() loop to set dedicated players and actors to their new states.
2019-11-30 15:03:51 +02:00
David Cernat
c702eab93c [Client] Fix declarations hiding class members 2019-11-30 12:51:48 +02:00
David Cernat
56c3ef71ae [Client] Send ObjectDelete packets when picking up items once again
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.
2019-11-30 08:13:22 +02:00
David Cernat
7acf6865b9 [Client] Don't clear spells for dying actors 2019-11-29 19:49:17 +02:00
David Cernat
23d410f473 [General] Implement body part records for RecordDynamic packet 2019-11-29 14:06:17 +02:00
David Cernat
0dae3074a6 [Client] Add missing comment related to spellcast animation 2019-11-29 14:02:52 +02:00
David Cernat
b3747839c0 [General] Add hasRace to record overrides in RecordsDynamic packet 2019-11-29 13:28:07 +02:00
David Cernat
16662d772b [General] Synchronize death animations for players 2019-11-29 12:52:47 +02:00
Andrei Kortunov
1b98fe4395 Fix GCC9 warnings about implicit declarations 2019-11-29 12:41:23 +04:00
David Cernat
140c1c9c12 [General] Use hard synchronization for melee attack animations
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.
2019-11-29 10:39:57 +02:00
David Cernat
a385fcdd87 [Client] Fix crash caused by setting instant state for null localCast 2019-11-28 20:28:55 +02:00
David Cernat
5a46b40e1a [Client] Stop switching drawstates when receiving ActorAttack packets
Previously, some of the spammier ActorAttack packets were overriding spellcasting animations with weapon attack animations.
2019-11-28 19:53:34 +02:00
David Cernat
ef944aa050 [Client] Remove unused redeclarations of localActors & dedicatedActors 2019-11-28 13:00:20 +02:00
David Cernat
06b4a4f97c [Client] Don't tie spellcasting for dedicated players/actors to anim end
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.
2019-11-28 10:34:34 +02:00
David Cernat
7815c8bdaf [Client] Queue sending of Cast packet from CastSpell::cast() 2019-11-28 09:40:22 +02:00
Andrei Kortunov
407a737fe4
Merge pull request #2611 from Capostrophic/effect
[Regression] Make sure instant FX abilities get detected when they're supposed to
2019-11-28 08:20:39 +04:00
David Cernat
b74e3a7e2e [Client] Include spellIds in Cast packets again, fixing problem from 190c404b38 2019-11-28 00:11:51 +02:00
Bret Curtis
62b9f1a2f7
Merge pull request #2610 from akortunov/warnfix2
Fix some build warnings
2019-11-27 21:24:44 +01:00
Capostrophic
77f076ff11 Make sure instant FX abilities get detected when supposed 2019-11-27 17:15:48 +03:00
David Cernat
bbf9f20053 [Client] Stop sending WorldKillCount packets or incrementing local kills
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.
2019-11-27 11:21:29 +02:00
Capostrophic
0adc2df65f Make SameFaction work (bug #5213) 2019-11-23 14:47:50 +03:00
Capostrophic
eed92c824e Make sure hand-to-hand shortcut is not saved 2019-11-20 19:57:21 +03:00
David Cernat
0c98c5d09e Add OpenMW commits up to 19 Nov 2019
# Conflicts:
#	apps/openmw/mwmechanics/aipursue.cpp
#	apps/openmw/mwmechanics/summoning.cpp
2019-11-19 17:16:48 +02:00
Andrei Kortunov
d0643d266a Do not use fallthrough in switches 2019-11-19 16:10:18 +04:00
Andrei Kortunov
73f43ba750 Do not use screen fading during game loading if there is no current cell (bug #5211) 2019-11-18 22:24:19 +04:00
Andrei Kortunov
4118b20608 Allow ActionOpen and ActionTalk only for player (bug #5210 2019-11-18 12:41:11 +04:00
Alexei Dobrohotov
4208f10e81
Merge pull request #2600 from akortunov/master
Take in account caster's race height when launch magic bolt
2019-11-17 21:04:55 +03:00
elsid
f156c9522e
Avoid virtual call in SoundManager dtor 2019-11-17 18:50:11 +01:00
elsid
8083df4567
Avoid virtual call in Animation dtor 2019-11-17 18:50:11 +01:00
elsid
b4794e8ca5
Avoid virtual call in OpenAL_Output dtor
/home/elsid/dev/openmw/apps/openmw/mwsound/openal_output.cpp:1492:5: warning: Call to virtual function during destruction [clang-analyzer-optin.cplusplus.VirtualCall]
    deinit();
    ^
/home/elsid/dev/openmw/apps/openmw/mwsound/openal_output.cpp:1492:5: note: This destructor of an object of type '~OpenAL_Output' has not returned when the virtual method was called
/home/elsid/dev/openmw/apps/openmw/mwsound/openal_output.cpp:1492:5: note: Call to virtual function during destruction
2019-11-17 18:50:11 +01:00
elsid
b55f5ab648
Avoid virtual call in WindowManager ctor
/home/elsid/dev/openmw/apps/openmw/mwgui/windowmanagerimp.cpp:244:9: warning: Call to virtual function during construction [clang-analyzer-optin.cplusplus.VirtualCall]
        loadUserFonts();
        ^
/home/elsid/dev/openmw/apps/openmw/mwgui/windowmanagerimp.cpp:244:9: note: This constructor of an object of type 'WindowManager' has not returned when the virtual method was called
/home/elsid/dev/openmw/apps/openmw/mwgui/windowmanagerimp.cpp:244:9: note: Call to virtual function during construction
2019-11-17 18:50:11 +01:00
elsid
cf01df31be
Remove unused variable initialization
/home/elsid/dev/openmw/apps/openmw/mwrender/animation.cpp:518:28: warning: Value stored to 'material' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
            osg::Material* material = static_cast<osg::Material*>(stateset->getAttribute(osg::StateAttribute::MATERIAL));
                           ^
/home/elsid/dev/openmw/apps/openmw/mwrender/animation.cpp:518:28: note: Value stored to 'material' during its initialization is never read
2019-11-17 18:50:11 +01:00
Andrei Kortunov
6861d9d5e5
Merge pull request #2510 from elsid/ai_open_door
Open door when it is on the way to a next path point (bug #5073)
2019-11-17 21:21:22 +04:00
Andrei Kortunov
d1e0fa575e Take in account caster's race height when launch magic bolt (bug #5209) 2019-11-17 16:37:38 +04:00
Andrei Kortunov
6554130f6f
Merge pull request #2594 from Capostrophic/summonsummon
Minor summoned creature cleanup fixes
2019-11-17 10:47:07 +04:00
Andrei Kortunov
8dbbe42f21 Add missing isNpc() check (bug #5206) 2019-11-17 09:17:03 +04:00
Andrei Kortunov
b21dc17538 Attempt to shut up CoverityScan warnings about tainted values 2019-11-14 18:28:38 +04:00
Andrei Kortunov
3970baeb84 Fix possible usage of destroyed variable 2019-11-13 15:46:49 +04:00
Andrei Kortunov
5561eb5415 Do not discard division reminder 2019-11-13 15:18:18 +04:00
Andrei Kortunov
5c6ca82c45 Clamp fallback value from config 2019-11-13 15:10:19 +04:00
Andrei Kortunov
ca2a524a5f Avoid null pointer dereference 2019-11-13 14:50:42 +04:00
Andrei Kortunov
af41e9acc1 Initialize variables to avoid undefined values 2019-11-13 14:47:29 +04:00
Capostrophic
120b7dcd2f Clean up summoned creatures when corpses are disposed 2019-11-12 21:44:46 +03:00
David Cernat
1d8668305c [Client] Send PlayerSpellbook packet when contracting or curing disease 2019-11-12 17:44:38 +02:00
Capostrophic
1097c2cfc4 Minor summoned creature cleanup fixes 2019-11-12 17:50:06 +03:00
Capostrophic
9c78e8cc56 Make sure movement not controlled by animation has valid velocity
Fixes erroneously always normalized movement speed in first person
2019-11-12 17:33:44 +03:00
Alexei Dobrohotov
a1ed0144e1
Merge pull request #2590 from akortunov/guifixes
UI textures scaling corrections
2019-11-10 13:53:27 +03:00