Commit Graph

1080 Commits (301fff7fe56efc132ad60f800fe93449e2dff333)

Author SHA1 Message Date
David Cernat 301fff7fe5 [Client] Always allow spellcasting from dedicated players and actors 5 years ago
David Cernat 81e2e48561 [Client] Fix item magic casting synchronization for spell scrolls
Previously, spell scrolls were used up before their IDs could be included in attacks packets supposed to be sent for them.
5 years ago
David Cernat 50714599d9 [Client] Spawn at exterior 0, -7 by default 6 years ago
David Cernat 7d221509cd [Client] Move item magic hook to correct location
Previously, synchronization for strike enchantments was partially broken because it triggered the sending of ITEM_MAGIC attack packets, which are only supposed to be sent when a spell is cast from a magical inventory item.
6 years ago
David Cernat a083439139 Merge pull request #469 from davidcernat/master while resolving conflicts
# Conflicts:
#	apps/openmw/main.cpp
#	apps/openmw/mwbase/world.hpp
#	apps/openmw/mwdialogue/dialoguemanagerimp.cpp
#	apps/openmw/mwmechanics/actors.cpp
#	apps/openmw/mwscript/dialogueextensions.cpp
#	apps/openmw/mwworld/worldimp.hpp
6 years ago
Andrei Kortunov a08048da4e Avoid dereference after null check 6 years ago
Andrei Kortunov 75835c8326 Prevent NPC from chosing farther pathgrid node 6 years ago
David Cernat 7136329a94 [Client] Add World::updatePtrsWithRefId() method
This makes it possible to "reload" the Ptrs in active cells when changes happen to the ESM record that they are based on. In practice, the old Ptrs are deleted, their RefNums and MpNums are blanked out, and new Ptrs are created that use the same RefNum and MpNum as before.

The above has required me to also add a method called setRefNum() to CellRef to allow setting a RefNum on the fly.

There may be a more elegant implementation available for updatePtrsWithRefIds(), but it requires additional research.
6 years ago
Capostrophic f7887ab05f
Fix MSVC C4456 warning: declaration of 'stats' hides previous local declaration 6 years ago
David Cernat 4e78642273 [Client] Add getModifiableStore() to MWWorld 6 years ago
David Cernat 74fa1d0f01 [Client] Fix manual setting of inertial force
Actors who are on the ground have their inertial force ignored, so they are now made to not be regarded as being on the ground in World::setInertialForce()
6 years ago
David Cernat 36ac2d9de4 [Client] Set packetOrigin for all ObjectList packets sent 6 years ago
David Cernat 892d71ce71 [General] Reimplement weather synchronization to allow soft transitions
Although weather sync was added by Koncord to the rewrite in fd721143e2 in a way that used surprisingly few lines of code, it relied on the server requesting weather states every second from authority players and sending them to non-authority players, while also allowing only very sudden weather transitions across regions, i.e. if there was one player in the Ascadian Isles who had stormy weather, and another player with clear weather in the Bitter Coast Region walked across to the Ascadian Isles, that player was instantly made to have stormy weather with no kind of transition at all.

My approach solves both of those problems. It solves the packet spam by only sending weather updates to the server when weather changes happen or when there are new arrivals to a weather authority's region, and it allows for both sudden weather transitions when players teleport to a region and for soft, gradual transitions when players walk across to a region. It is inspired by my previous actor sync, and uses a WorldRegionAuthority packet to set players as region authorities in a similar way to how ActorAuthority sets players as cell AI authorities. Weather changes are created only by the region authority for a given region, and weather packets are also only sent by that authority.

However, it should be noted that gradual weather transitions are used by default in this implementation. To use sudden weather transitions, the serverside Lua scripts need to forward WorldWeather packets with the forceWeather boolean set to true. That is, however, already handled by our default Lua scripts in situations where it makes sense.
6 years ago
David Cernat 6cb5ac6e63 Merge pull request #457 from OpenMW/master while resolving conflicts
Conflicts:
	CMakeLists.txt
	apps/openmw/engine.cpp
	apps/openmw/main.cpp
	apps/openmw/mwgui/windowmanagerimp.cpp
	apps/openmw/mwmechanics/character.cpp
	components/CMakeLists.txt
6 years ago
David Cernat 6c1173d598 [Client] Rename searchPtrViaRefIndex into searchPtrViaUniqueIndex 6 years ago
David Cernat 09da24f1ea [General] Rename all instances of refNumIndex into refNum
This creates symmetry with mpNum and should cause less confusion in the future.
6 years ago
Andrei Kortunov 3d1daaebab Rework manual spellcasting (e.g. via scripts) 6 years ago
David Cernat 0f30e21312 [Client] Add searchPtrViaRefIndex method to World to easily find objects 6 years ago
Capostrophic d09c327b20 Update changelog 6 years ago
Capostrophic 14d3b213a1
Fix double call of addContainerScripts on player in moveObject (fixes #4490) 6 years ago
David Cernat a236ffc4be Merge pull request #456 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	README.md
#	apps/openmw/mwgui/quickkeysmenu.cpp
#	apps/openmw/mwmechanics/actors.cpp
#	apps/openmw/mwmechanics/combat.cpp
6 years ago
Andrei Kortunov 7dff8d8fe2 Check cell for null 6 years ago
Marc Zinnschlag 7be069fcd2 Merged pull request #1743 6 years ago
Miloslav Číž 477e1437d2 Resolve conflicts 6 years ago
Andrei Kortunov 49ba00a3ec Add NPC validation to esmstore (bug #2772) 6 years ago
Miloslav Číž d629c30fdb
Merge branch 'master' into screenshot360 6 years ago
Miloslav Číž c3d7ee5a9e Resolve merge conflicts 6 years ago
Miloslav Číž db8aaa74d6 Start cell border debug drawing 6 years ago
David Cernat 2a3c74bfcc Merge pull request #447 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
6 years ago
Andrei Kortunov bde1d07d4e Use hitboxes and focused object for touch spells (bug #3374) 6 years ago
Andrei Kortunov 4666a6a0ab Use default hit formula as fallback 6 years ago
Andrei Kortunov 9e5d577a71 Aim from center of attacker to center of target 6 years ago
Andrei Kortunov ab433102a4 Increase hit distance for player by halfExtents 6 years ago
Marc Zinnschlag 2ab31b0c18 Merged pull request #1723 6 years ago
David Cernat c20a0c72c5 Merge pull request #442 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
6 years ago
elsid dba79f4d4d
Fix warnings: catching polymorphic type by value
openmw/apps/openmw/mwworld/worldimp.cpp: In member function ‘virtual bool MWWorld::World::findExteriorPosition(const string&, ESM::Position&)’:
openmw/apps/openmw/mwworld/worldimp.cpp:2650:25: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=]
             catch (std::invalid_argument)
                         ^~~~~~~~~~~~~~~~
openmw/apps/openmw/mwworld/worldimp.cpp:2654:25: warning: catching polymorphic type ‘class std::out_of_range’ by value [-Wcatch-value=]
             catch (std::out_of_range)
                         ^~~~~~~~~~~~

openmw/components/widgets/numericeditbox.cpp: In member function ‘void Gui::NumericEditBox::onEditTextChange(MyGUI::EditBox*)’:
openmw/components/widgets/numericeditbox.cpp:41:21: warning: catching polymorphic type ‘class std::invalid_argument’ by value [-Wcatch-value=]
         catch (std::invalid_argument)
                     ^~~~~~~~~~~~~~~~
openmw/components/widgets/numericeditbox.cpp:45:21: warning: catching polymorphic type ‘class std::out_of_range’ by value [-Wcatch-value=]
         catch (std::out_of_range)
                     ^~~~~~~~~~~~
6 years ago
Andrei Kortunov 24863f620b RotateWorld: rotate around world axis (bug #4426) 6 years ago
David Cernat 669d4d3d7e
Merge pull request #440 from OpenMW/master
Add OpenMW commits up to 27 May 2018
6 years ago
scrawl cfdf99f601
Revert "Merged pull request #1573"
This reverts commit 7324bd368f, reversing
changes made to 810e4416f6.
6 years ago
scrawl 99ffaafe30
Revert "Merge pull request #1701 from akortunov/standfix"
This reverts commit da47fc79f5, reversing
changes made to 7324bd368f.
6 years ago
David Cernat c8ec77875c [Client] Update old comments for changes made by tes3mp 6 years ago
David Cernat 3b5fb9cd6b [General] Make it possible to set year via WorldTime 6 years ago
David Cernat 4acf93b7db [General] Make it possible to set days passed via WorldTime 6 years ago
David Cernat 74c2a0b311
Merge pull request #438 from OpenMW/master
Add OpenMW commits up to 24 May 2018
6 years ago
Bret Curtis da47fc79f5
Merge pull request #1701 from akortunov/standfix
Do not apply queue movement for standing actors
6 years ago
Marc Zinnschlag 7324bd368f Merged pull request #1573 6 years ago
David Cernat 8d36d0d945 [General] Make it possible to change world's time scale via WorldTime 6 years ago
Capostrophic 867a5938ca Don't reset sneaking camera offset while in GUI (fixes #4420) 6 years ago
David Cernat 78234f9071 [General] Rename Event into ObjectList & WorldObject into BaseObject 6 years ago
Andrei Kortunov 3636cf2015 Do not apply queue movement for standing actors 6 years ago