1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 23:49:55 +00:00
Commit graph

2985 commits

Author SHA1 Message Date
Andrei Kortunov
00ab552184 Add more settings to water reflections in exteriors (feature #4859) 2019-03-02 14:26:14 +04:00
Andrei Kortunov
8df8bd3f37 Use C++11-style loops in the GUI instead of iterators 2019-03-02 13:27:59 +04:00
Bret Curtis
735bcf17c2 Merge branch 'boost-gcd-deprecation' into 'master'
Fix boost deprecation warning

See merge request OpenMW/openmw!66
2019-02-26 18:02:01 +00:00
AnyOldName3
cd4303da23 Add preprocessor check to determine which common_factor header to use. 2019-02-26 17:03:07 +00:00
Capostrophic
216e1ab16f Always include <memory> for smart pointers in MWGui 2019-02-25 18:50:51 +03:00
Capostrophic
8ecd0b82a4 Replace Boost format and replace_all where possible 2019-02-24 03:20:20 +03:00
Bret Curtis
d4564a9be7
Merge pull request #2180 from akortunov/includes
Remove redundant includes
2019-02-24 01:14:16 +01:00
Andrei Kortunov
fcdb0c16bf Update jail state once instead of for every single hour 2019-02-23 09:17:06 +04:00
Andrei Kortunov
3032b177a1 Remove redundant includes 2019-02-23 08:02:12 +04:00
Capostrophic
58788de7c4 Get rid of Boost.Array 2019-02-22 23:16:34 +03:00
Bret Curtis
212f097b3c
Merge pull request #2172 from akortunov/pvs_fix
Fix some issues, found by PVS-Studio
2019-02-22 15:01:37 +01:00
Bret Curtis
55fc04e462
Merge pull request #2175 from Capostrophic/includes
Include cleanup
2019-02-22 14:56:20 +01:00
Capostrophic
c03ed4cd50 Include cleanup 2019-02-19 18:40:33 +03:00
Andrei Kortunov
9de0c9045a Fix API usage errors 2019-02-17 14:29:39 +04:00
Andrei Kortunov
dc6ef15571 Simplify loop in the addSkills() 2019-02-17 14:29:39 +04:00
Andrei Kortunov
ad9412a117 Remove some redundant checks 2019-02-17 14:29:36 +04:00
Andrei Kortunov
18a59df050 Throw exceptions by value instead of reference 2019-02-17 10:24:25 +04:00
AnyOldName3
89d4d3be08 Fix boost deprecation warning 2019-02-13 14:49:36 +00:00
Capostrophic
e9c6c11418 Fix hiding three-tab (Cyrillic) topic index 2019-02-08 10:53:50 +03:00
Andrei Kortunov
8580a58ba0 Optimize HUD update (do not do unnecessary work) 2019-01-25 21:15:29 +04:00
David Cernat
f481c85e07 [Client] Use ADD before REMOVE for PlayerInventory in repair/recharge
Previously, when recharging or repairing an item, the client sent a PlayerInventory packet to the server with the old version of the item that was supposed to be removed and then it sent a PlayerInventory packet with the new version of the item that was supposed to be added.

Unfortunately, the current CoreScripts make it so custom items using generated IDs have their records deleted when they are completely removed from the world, however briefly, even if they are added back immediately afterwards. In practice, this meant that – before this commit – recharging or repairing a custom item led to its removal from the player inventory stored on the server, followed by the deletion of its record, followed by its readdition to the inventory (but with the record staying deleted). Logging out and logging back in immediately prevented the player from receiving the item anymore because of its now non-existent record.
2019-01-11 13:08:26 +02:00
Andrei Kortunov
0937f02598 Get rid of unnecessary string streams 2019-01-07 21:08:16 +04:00
David Cernat
906d2a837d [Client] Send PlayerInventory packets when recharging items w/ soulgems 2018-12-30 11:58:33 +02:00
Ilya Zhuravlev
1bdec2399f Make sure CopyFramebufferToTextureCallback is only called once and not every frame 2018-12-25 11:56:24 -05:00
Ilya Zhuravlev
8e7c01b561 loadingscreen: Fix UaF in loading screen.
When the CopyFramebufferToTextureCallback callback is called, in its operator() it resets setInitialDrawCallback by providing a NULL pointer.
However, this causes the callback to get deleted. In turn, the "this" pointer is invalidated.
When execution returns to DrawCallback::run, it accesses a _nestedCallback member of deleted "this" which is UB.
2018-12-24 14:18:26 -05:00
Andrei Kortunov
a53333c3d5 Native animated containers support (feature #4730) 2018-12-13 23:11:16 +04:00
David Cernat
afd17e5a48 [Client] Don't finish drag & drop that is supposed to be unsuccessful
This prevents items from vanishing when your attempt to drop them in a full container is denied.
2018-12-06 18:11:52 +02:00
Bret Curtis
a21792657a
Merge pull request #2034 from akortunov/guifixes
Improve GUI cleanup
2018-11-15 07:31:57 +01:00
Andrei Kortunov
5e071e3eb0 Add a missing check if mPtr is empty (bug #4715) 2018-11-13 10:32:23 +04:00
Andrei Kortunov
71f1a53090 Improve tooltips cleanup (bug #4714) 2018-11-13 10:00:12 +04:00
Andrei Kortunov
d2613e35a2 Fix some Clang 7 warnings 2018-11-09 19:42:59 +04:00
Bret Curtis
3cd59d4a89
Merge pull request #1993 from akortunov/loadingbar
Center progress bar when there are active messageboxes
2018-10-28 14:43:33 +01:00
Andrei Kortunov
6e05853478 Center progress bar when there are active messageboxes (bug #4691) 2018-10-28 14:40:48 +04:00
Marc Zinnschlag
9dd0d641bc Merged pull request #1931 2018-10-28 11:02:33 +01:00
Capostrophic
19ce1abcdf Fix selected weapon HUD durability percentage 2018-10-26 12:53:15 +03:00
Andrei Kortunov
e7de6b974a Optimize actors processing
1. Do not update physics and animations for actors outside processing range (bug #4647)
2. Do not render such actors
3. Add transparency to actors near processing border, so they will not pop up suddenly
2018-10-25 22:52:59 +04:00
Capostrophic
c3e8d536cd Implement getNormalizedEnchantmentCharge() method and use it 2018-10-25 16:16:07 +03:00
Capostrophic
54bd7b2dcf Implement getItemNormalizedHealth() method and use it 2018-10-25 15:45:31 +03:00
Capostrophic
67de61e1fb Avoid item condition and charge zero divisions 2018-10-24 19:06:55 +03:00
David Cernat
d9dd7073cf [General] Send certain packets only when logged in
Previously, client mods adding packet-sending scripts to the spawn area made clients send the associated packets as soon as they inputted their character name when joining a server using those mods. This made the clients either get disconnected for not replying to a handshake first, or it made them get kicked for sending object packets that are disallowed for players who are not logged in.

To fix this, LocalPlayer's hasFinishedCharGen() has been replaced with isLoggedIn(), because the former was already returning true when players inputted their names.
2018-10-13 15:36:13 +03:00
Marc Zinnschlag
b30e309532 Merged pull request #1967 2018-10-13 11:15:45 +02:00
Andrei Kortunov
dad0b78901 Avoid overflow when handling output characters (bug #4676) 2018-10-12 20:41:03 +04:00
Capostrophic
47b1b0ac39 Re-fix water reflections while making a no-GUI screenshot 2018-10-10 22:44:26 +03:00
Marc Zinnschlag
2d87d1d9d2 Merged pull request #1959 2018-10-10 15:05:29 +02:00
Andrei Kortunov
e06f0b797a Replace all NULLs to nullptr 2018-10-09 10:21:12 +04:00
Capostrophic
09aecb955c getSkill usage cleanup (bug #4671) 2018-10-08 17:06:30 +03:00
Capostrophic
674e33170b Fix quick key system regressions (bug #4662) 2018-09-30 21:16:02 +03:00
Marc Zinnschlag
0e06a25f21 Merged pull request #1935 2018-09-25 12:11:20 +02:00
Sergey Fukanchik
44bcd9b25f Fix tab characters 2018-09-23 02:46:29 +03:00
Sergey Fukanchik
c50ee22772 Wrap up World::canRest() implementation by moving enemiesNearby() from InputManager::rest() to World::canRest(). 2018-09-23 01:52:56 +03:00
Andrei Kortunov
b3fd173e00 Check if current weapon has health at all in HUD (bug #4648) 2018-09-22 06:51:56 +04:00
Marc Zinnschlag
7be9f2ca45 Merged pull request #1891 2018-09-21 11:38:19 +02:00
Andrei Kortunov
bdd9eba2b8 Use C++ limits instead of C ones 2018-09-20 16:02:26 +04:00
Andrei Kortunov
276b7830a9 Mass potion creation (feature #4642) 2018-09-20 15:45:14 +04:00
Marc Zinnschlag
82d37dda20 Merged pull request #1927 2018-09-20 13:31:41 +02:00
Andrei Kortunov
6d0e6ab012 Use book font by default in the text formatter 2018-09-17 22:24:21 +04:00
Andrei Kortunov
dda02bd696 Do not use book fonts for dialogue window 2018-09-17 19:56:36 +04:00
Andrei Kortunov
70ed8fd1a9 Use constants instead of widely used magic numbers (task #4645) 2018-09-17 19:22:50 +04:00
Marc Zinnschlag
06b2a23e74 Merged pull request #1768 2018-09-17 12:10:21 +02:00
Bret Curtis
6035636e29
Merge pull request #1915 from akortunov/enterfix
Disable repeating for Accept GUI action
2018-09-14 15:17:47 +02:00
Marc Zinnschlag
252ed9bd4b Merged pull request #1914 2018-09-13 11:53:21 +02:00
Capostrophic
664c630ac0 Don't make sTo strings static references 2018-09-12 16:36:03 +03:00
Andrei Kortunov
e300a16b24 Use field for columns count instead of out integer 2018-09-12 14:31:01 +04:00
Andrei Kortunov
7a986f38da Support for user-defined TrueType fonts 2018-09-12 14:31:01 +04:00
Andrei Kortunov
c9c0230d2a Scale journal fonts separately from common ones 2018-09-12 14:31:01 +04:00
Andrei Kortunov
f89393fd62 Validate 'ttf resolution' option value 2018-09-12 14:31:01 +04:00
Andrei Kortunov
adbaeb7cca Improve GUI scaling (bug #3288) 2018-09-12 14:31:01 +04:00
Marc Zinnschlag
6100e34051 Merged pull request #1912 2018-09-12 12:04:49 +02:00
Andrei Kortunov
9918212a1e Set focus to Close button when opening the container window (bug #4333) 2018-09-11 11:22:26 +04:00
Andrei Kortunov
c2c24a76a4 Handle MyGUI exceptions inside destructors 2018-09-11 11:11:27 +04:00
Andrei Kortunov
269ef7a559 Disable repeating for ENTER key in GUI 2018-09-10 12:55:00 +04:00
Andrei Kortunov
33a66b778f Disable repeating for Accept action in keyboard navigation (bug #4260) 2018-09-09 23:10:09 +04:00
Capostrophic
702868255a Use sTo GMST in spellmaking menu (feature #4636) 2018-09-09 13:56:58 +03:00
Marc Zinnschlag
ef72024e2c Merged pull request #1902 2018-09-01 11:01:05 +02:00
Capostrophic
b673cdf70e Grant Enchant experience even if recharging fails (bug #4622) 2018-08-30 23:52:33 +03:00
Capostrophic
7ef6fa9f61 Remove deprecated GMST get* functions 2018-08-29 18:38:12 +03:00
Marc Zinnschlag
21d414187f Merged pull request #1896 2018-08-29 12:05:50 +02:00
David Cernat
3bd8aa82fe [General] Reduce inventory-sending hooks to just 2 in ContainerStore
Whenever an item is added to or removed from the player's ContainerStore, that player sends a PlayerInventory packet with just that addition or removal.

This eliminates all the unnecessary packet spam related to oversized PlayerInventory packets that had existed in one form or another since the initial implementation of inventory sync in 1b259e2d33

Additionally, move booleans from BasePlayer to LocalPlayer when they are only needed on the client, and make the usage of the isReceivingQuickKeys boolean consistent with the new isReceivingInventory boolean by having them both in the processors of their associated packets.
2018-08-28 05:01:52 +03:00
Andrei Kortunov
8fa6c6f726 Update pinned windows in-game (bug #4560) 2018-08-27 09:44:04 +04:00
Sophie Kirschner
a1e076a37e Merge branch 'master' into pineapple/fix-video-incomplete-type-2
Resolve merge issues related to CHANGELOG.md

* master:
  Optimize skinning (task #4605)
  Update changelog
  Update some comments
  Set the OpenAL source offset after setting the buffer
  Make Move and MoveWorld console commands move actors standing on moving object (bug #2274)
  Adding Changelog entry
  Allow messageboxes arguments to have newline characters (bug #3836)
  Check for impact immediately when launch a projectile (bug #3059)
  Fix gold count calculation in pickupObject (bug #4604)
  Correct special case soundgen comparisons
  Move "land" check earlier
  Fixes #3681
  Play landing sound manually and ignore land soundgen textkeys (bug #2256)
  Make some more optimizations to actor processing loops
  Fix freeze in getActorsSidingWith
  Addiong missing "to" word
  Adding common problems that were previous on the site FAQ
  Treat <> and << operators as < and  >< and >> as > in scripts
  stage1: priorities for event music and other minor improvements to the music system

# Conflicts:
#	CHANGELOG.md
2018-08-26 12:05:02 +03:00
Sophie Kirschner
dd01c4d224 Fix: 'sizeof' to an incomplete type 'Video::VideoPlayer'
Alternate solution to same problem reported in https://github.com/OpenMW/openmw/pull/1888
2018-08-25 11:53:43 +03:00
Capostrophic
3f76f1d3ed Fix gold count calculation in pickupObject (bug #4604) 2018-08-22 22:35:22 +03:00
David Cernat
03832f933b [Client] Send only individual items in PlayerInventory packets
For a long time, whenever a PlayerInventory packet was sent, it contained all the items in the player's inventory, because that's how Koncord originally implemented it and I always had too many other priorities to go back and rework it.

From now on, clients only send PlayerInventory packet with the one item added or removed, with the single exception being trading with merchants, where the entire inventory is still sent for the time being.
2018-08-21 10:10:06 +03:00
David Cernat
45b011452e [Client] Combine methods for sending spell packets into a single one 2018-08-21 01:20:30 +03:00
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
2018-08-20 14:08:44 +03:00
Marc Zinnschlag
088463ebe6 Merged pull request #1868 2018-08-17 09:37:49 +02:00
Capostrophic
372697489b Fix Equip command infinite loop (bug #3072) 2018-08-17 02:52:18 +03:00
Andrei Kortunov
5a4d0cec3a Use new logging system for game itself 2018-08-14 23:05:43 +04:00
Andrei Kortunov
9dfd775bf2 Implement GetPCTraveling console command 2018-08-13 08:30:50 +04:00
David Cernat
8df08c7d10 [General] Implement PlayerItemUse packet
Players can no longer unilaterally use items on themselves in their inventory. When they try to use an item, they send a PlayerItemUse packet to the server with the item's details. A serverside script can then check the item and either send the packet back to make the item use go through or drop it.
2018-08-09 18:25:20 +03:00
Marc Zinnschlag
fe19d8ff35 Merged pull request #1857 2018-08-09 13:52:51 +02:00
Andrei Kortunov
6202b4eca9 Do not touch GUI modes when taking screenshots (bug #4528) 2018-08-08 22:10:53 +04:00
Capostrophic
e9e9c0dd6b Fix guild guide fast travelling to exteriors time 2018-08-08 12:46:36 +03:00
Capostrophic
bcd9cc4baa Check the actor cell instead of the destination cell in fast travel price logic 2018-08-08 02:07:48 +03:00
Marc Zinnschlag
b75b5d139a Merged pull request #1845 2018-08-05 12:28:38 +02:00
Capostrophic
7087bad580 Use special behavior for all topics with reserved names (bug #4557) 2018-08-05 12:39:53 +03:00
Andrei Kortunov
b0f2e00e7f Make forcegreeting a non-op for non-actor objects (bug #4553) 2018-08-05 09:31:45 +04:00
Marc Zinnschlag
452a706047 Merged pull request #1837 2018-08-04 10:26:44 +02:00
Andrei Kortunov
eeffe2e557 Check if item model exists inside drag and drop functions 2018-08-03 16:42:43 +04:00
Marc Zinnschlag
eb5f558f6f Merged pull request #1839 2018-08-03 12:53:55 +02:00
Capostrophic
3ac030d75a
Handle explicit calls before handling quotes 2018-08-02 09:49:53 +03:00
Capostrophic
fa6c205e5d Make tab autocompletion work with explicit reference calls 2018-08-02 03:24:31 +03:00
Andrei Kortunov
12144de8ed Initialize missing variables 2018-08-01 20:18:37 +04:00
Andrei Kortunov
c0bed0fde2 Handle case when index < 0 2018-08-01 20:17:59 +04:00
Andrei Kortunov
a08048da4e Avoid dereference after null check 2018-08-01 19:30:30 +04:00
Capostrophic
ab29f9e13f Add permanent barter disposition change option (feature #3103) 2018-08-01 17:31:35 +03:00
Andrei Kortunov
0f2c3ecb17 Rescale player avatar (bug #4539) 2018-07-30 17:41:43 +04:00
David Cernat
b57807407a [General] Implement RecordDynamic packet, part 1
Spell, potion, enchantment, creature, NPC, armor, book, clothing, miscellaneous and weapon record data can now be sent in a RecordDynamic packet. Additionally, the packets include data related to associated magical effects (for spells, potions and enchantments), data related to default inventory contents (for creatures and NPCs) and data related to body parts affected (for armor and clothing).

The server now has associated script functions for setting most of the details of the above, with the main exception being individual creature and NPC stats.

Records can either be created entirely from scratch or can use an existing record (set via the baseId variable) as a starting point for their values. In the latter case, only the values that are specifically set override the starting values. Creature and NPC records also have an inventoryBaseId that can be used on top of the baseId to base their inventories on another existing record.

The client's RecordHelper class has been heavily expanded to allow for the above mentioned functionality.

When players create spells, potions and enchantments as part of regular gameplay, they send RecordDynamic packets that provide the server with the complete details of the records that should be created. When they create enchantments, they also provide the server with armor, book, clothing and weapon records corresponding to the items they've enchanted.

This functionality added by this packet was originally supposed to be exclusive to the rewrite, but I've gone ahead and tried to provide it for the pre-rewrite in a way that can mostly be reused for the rewrite.
2018-07-30 10:56:26 +03:00
Capostrophic
9c8e284ead Fix quick key activation delay code (regression #4536) 2018-07-29 12:52:29 +03:00
David Cernat
d93b67ef21 [General] Sync soul refIds for items and add related script functions 2018-07-26 22:37:04 +03:00
Capostrophic
cac2bc768e
Fix NPC "can't teach more" message (bug #4494) 2018-07-25 12:34:33 +03:00
David Cernat
8fbed1f808 [General] Remove custom data from PlayerSpellbook packet
It has never made sense to have custom spell data in PlayerSpellbook packets, so it has been removed.
2018-07-24 20:58:55 +03:00
David Cernat
36ac2d9de4 [Client] Set packetOrigin for all ObjectList packets sent 2018-07-23 01:39:43 +03:00
David Cernat
63a86f145d [Client] Record type of each InterpreterContext for later checking 2018-07-23 00:46:07 +03:00
David Cernat
2189ea1a63 [Client] Clean up sending of Container packets 2018-07-22 16:43:27 +03:00
David Cernat
21d5bb4d4e
Merge pull request #460 from OpenMW/master
Add 0.7.0 commits up to 20 Jul 2018
2018-07-21 05:59:57 +03:00
David Cernat
b6db570d9c [Client] Display uniqueIndexes in a less confusing way in console 2018-07-19 11:57:06 +03:00
Andrei Kortunov
edd5769022 Show magic items count in spells window (feature #4509) 2018-07-16 14:11:03 +04:00
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
2018-07-14 03:57:05 +03:00
David Cernat
09da24f1ea [General] Rename all instances of refNumIndex into refNum
This creates symmetry with mpNum and should cause less confusion in the future.
2018-07-13 04:12:03 +03:00
Marc Zinnschlag
ee759effce Merged pull request #1798 2018-07-11 10:06:30 +02:00
Andrei Kortunov
c77c50e92b Make Equip console command to bypass most of restrictions (bug #4460) 2018-07-11 00:06:21 +04:00
David Cernat
4d4bced929 [Client] Allow singleplayer-only saves in main menu during multiplayer 2018-07-09 22:53:18 +03:00
terrabyte25
48296a7452
Update trainingwindow.cpp 2018-07-09 23:13:52 +04:00
David Cernat
6ff7fa525e [Client] Disable autosaving when waiting 2018-07-08 23:04:30 +03:00
Capostrophic
bded697f07
Make Goodbye block using hyperlinks 2018-07-06 19:38:36 +03:00
David Cernat
c2411982d2 [Client] Log object refNumIndexes and mpNums in a consistent way 2018-07-04 21:54:11 +03:00
David Cernat
7775780ad7 [Cllient] Update multiplayer code for handling quick keys 2018-07-04 05:56:10 +03:00
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
2018-07-04 01:52:29 +03:00
Thunderforge
7cbc4eeb49 Adding missing override keywords
Prevents compiler warnings such as this:

```
/Users/Will/CLionProjects/OpenMW/apps/openmw/mwgui/windowbase.hpp:65:22: warning: 'onOpen' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
        virtual void onOpen();
                     ^
/Users/Will/CLionProjects/OpenMW/apps/openmw/mwgui/windowbase.hpp:38:22: note: overridden virtual function is here
        virtual void onOpen() {}
                     ^
```
2018-07-01 19:17:50 -05:00
Finbar Crago
5d9035c6b2 [Fixes #4482] Missing HandToHand on key quick key 0 (introduced in MR !11 for issue #4480)
because apparently i can't count to ten...
2018-07-01 13:46:23 +10:00
Finbar Crago
09c9bd34c3 cleanup more unnecessary struct keywords... 2018-06-30 12:43:50 +10:00
Finbar Crago
596be205c1 cleanup unnecessary struct keywords... 2018-06-29 23:43:51 +10:00
Finbar Crago
2722ca50fb fix QuickKeysMenu crash on reopening window after item drop + pickup [see: !11#note_85086570] 2018-06-29 23:32:05 +10:00
Finbar Crago
ed71656ea6 fix updateActivatedQuickKey() crash
keyboard numbers don't start at zero...
2018-06-29 01:58:57 +10:00
Finbar Crago
24d5fb09da fix crash on simultaneous key presses 2018-06-28 22:55:02 +10:00
Finbar Crago
80a3f0a0d4 switch mSelectedIndex/mActivatedIndex int to mSelected/mActivated keyData pointers 2018-06-28 17:02:25 +10:00
Finbar Crago
335e2c5897 add keyData struct + general cleanup 2018-06-28 13:27:08 +10:00
David Cernat
b81ca18316 [Client] Don't clear container Ptrs when disposing of corpses
The reason for this is that only the server should be determine whether a corpse can be disposed of or not.
2018-06-28 01:45:15 +03:00
Finbar Crago
cac6d59140 Merge branch 'master' into fix_quickkey_segfalt 2018-06-27 12:58:43 +10:00
Finbar Crago
43c9fd4cec check MWWorld::Ptr != NULL for MWGui ItemPtr tooltips 2018-06-26 13:41:53 +10:00
Finbar Crago
186ec8c50f rm ContainerStore/refItem 2018-06-26 13:35:04 +10:00
Marc Zinnschlag
705b2dca0e Merged pull request #1777 2018-06-25 11:58:12 +02:00
Finbar Crago
46c6abcf54 add string vectors for name/id in QuickKeysMenu for item lookups 2018-06-25 16:02:28 +10:00
Andrei Kortunov
441463327c Validate map size 2018-06-25 09:57:40 +04:00
Capostrophic
35b0546737 Consider <p> tag when discarding post-EOL tag text (regression #4473) 2018-06-23 14:27:40 +03:00
Finbar Crago
da4c55d5ad prevent segfalt in QuickKeysMenu when item has been removed from player inventory
added a MWWorld::ContainerStore to hold item copies which are then used to find
real items with findReplacement().

(storing the RefId could be a better solution but would probably leave tooltips broken...)
2018-06-23 17:51:32 +10:00
David Cernat
fd05beef94 [Client] Don't delete disposed of corpses on client
Clients should instead await a server reply approving the deletion.
2018-06-20 02:01:19 +03:00
Miloslav Číž
d629c30fdb
Merge branch 'master' into screenshot360 2018-06-13 21:16:28 +02:00
Andrei Kortunov
61c968d550 Ignore broken items when search for replacement (bug #4453) 2018-06-13 18:39:02 +04:00
Capostrophic
1c8a20a54a Set ok button focus in settings window by default (fixes #4368) 2018-06-12 19:45:43 +03:00
Bret Curtis
7310e3c8c2
Merge pull request #1748 from akortunov/bookfix
Do not show any book text after last <BR> tag
2018-06-11 17:08:26 +02:00
Andrei Kortunov
66a46ff03c Do not show any book text after last <BR> tag. 2018-06-11 11:22:56 +04:00
Capostrophic
d43766d3c9 Make WakeUpPC interrupt waiting if it was supposed to be (fixes #3629) 2018-06-10 18:42:18 +03:00
David Cernat
2a3c74bfcc Merge pull request #447 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
2018-06-08 06:01:00 +03:00
Capostrophic
1a354f88ac Make choices trigger goodbye if Goodbye is used (fixes #3897) 2018-06-07 22:09:55 +03:00
Capostrophic
191cc76378 Consider faction ownerships in item stolen checks (fixes #4293) 2018-06-03 10:22:20 +03:00
David Cernat
669d4d3d7e
Merge pull request #440 from OpenMW/master
Add OpenMW commits up to 27 May 2018
2018-05-27 16:10:16 +03:00
Andrei Kortunov
1abff5365b Capitalize enchanted items names again in spells window 2018-05-24 13:03:47 +04:00
Andrei Kortunov
afae398b5c Use utf8 lowercase function for journal index to avoid code duplication 2018-05-24 12:53:06 +04:00
Andrei Kortunov
b5374029e5 Implement case-insensitive search in spell window 2018-05-24 12:39:00 +04:00
Andrei Kortunov
9ac752ea70 Implement filtering in the spells window 2018-05-24 10:48:46 +04:00
David Cernat
031a80ed5a [Client] Don't advance time when waiting, traveling, training or jailed 2018-05-23 05:49:51 +03:00
David Cernat
1e749938fb
Merge pull request #426 from OpenMW/master
Add OpenMW commits up to 15 May 2018
2018-05-15 21:01:33 +03:00
Bret Curtis
c75d774356
Merge pull request #1692 from akortunov/playsound
Prevent PlaySound overlapping
2018-05-15 19:03:01 +02:00
David Cernat
9b9dd4abaf
Merge pull request #425 from OpenMW/master
Add OpenMW commits up to 13 May 2018
2018-05-13 19:27:34 +03:00
David Cernat
78234f9071 [General] Rename Event into ObjectList & WorldObject into BaseObject 2018-05-13 00:42:24 +03:00
David Cernat
6bf3a0be1e [General] Rename WorldPackets into ObjectPackets for clarity 2018-05-12 19:40:00 +03:00
David Cernat
57b791ea2a [Client] Show selected object's refNum & mpNum in console window title
This allows for much easier debugging of all objects and actors.
2018-05-11 00:46:24 +03:00
David Cernat
32d71de2f5 Update MapWindow every frame, not just when it's open (bug #4279) 2018-05-09 07:33:45 +03:00
David Cernat
715012f087 [General] Implement sending of image data for map tiles in PlayerMap 2018-05-08 05:57:04 +03:00
Andrei Kortunov
4872edc5ed Prevent PlaySound overlapping 2018-05-01 16:24:32 +04:00
David Cernat
02eef933fd
Merge pull request #411 from OpenMW/master
Add OpenMW commits up to 19 Apr 2018
2018-04-21 17:00:55 +03:00
scrawl
5d1b40c5ea
Merge pull request #1678 2018-04-19 12:18:24 +00:00
David Cernat
57070b7f5c [Client] Disable automatic transition to other chargen menus from OpenMW
Previously, after finishing the TES3MP chargen once, mCreationStage was set to 4 in OpenMW, which in turn made it impossible to go through only specific chargen menus again as the result of the relevant TES3MP script function (tes3mp.SetCharGenStage(pid, startStage, endStage) in 0.6.3, player:setCharGenStages(startStage, endStage) in 0.7). In other words, trying to allow a player to just choose their class again made it so the player started at that menu and went through all the other subsequent menus as well, i.e. the player went through the class, birthsign and review menus.
2018-04-19 13:47:42 +03:00
Capostrophic
8617d0603b Display a message if a spell the player tries to use via a quick key is missing (fixes #4391) 2018-04-18 19:10:46 +03:00
David Cernat
9e5ddeac50
Merge pull request #408 from OpenMW/master
Add OpenMW commits up to 18 Apr 2018
2018-04-18 18:05:09 +03:00
tri4ng1e
d310d36ea3
[Fix] Some PVS-Studio and cppcheck fixes 2018-04-18 12:36:10 +00:00
tri4ng1e
d4d1703bcf
Some PVS-Studio and cppcheck fixes
cppcheck:
[apps/esmtool/record.cpp:697]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/esmtool/record.cpp:1126]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/esmtool/record.cpp:1138]: (performance) Prefer prefix ++/-- operators for non-primitive types.
[apps/niftest/niftest.cpp:36]: (performance) Function parameter 'filename' should be passed by reference.
[apps/niftest/niftest.cpp:41]: (performance) Function parameter 'filename' should be passed by reference.
[apps/opencs/model/prefs/boolsetting.cpp:25]: (warning) Possible leak in public function. The pointer 'mWidget' is not deallocated before it is allocated.
[apps/opencs/model/prefs/shortcuteventhandler.cpp:52]: (warning) Return value of std::remove() ignored. Elements remain in container.
[apps/openmw/mwstate/quicksavemanager.cpp:5]: (performance) Variable 'mSaveName' is assigned in constructor body. Consider performing initialization in initialization list.

PVS-Studio:
apps/opencs/model/filter/parser.cpp  582  warn  V560 A part of conditional expression is always true: allowPredefined.
apps/opencs/view/world/referencecreator.cpp  67  warn  V547 Expression '!errors.empty()' is always false.
apps/opencs/view/world/referencecreator.cpp  74  warn  V547 Expression '!errors.empty()' is always false.
apps/opencs/view/doc/loader.cpp  170  warn  V560 A part of conditional expression is always true: !completed.
apps/opencs/view/doc/loader.cpp  170  warn  V560 A part of conditional expression is always true: !error.empty().
apps/opencs/model/tools/pathgridcheck.cpp  32  err  V517 The use of 'if (A) {...} else if (A) {...}' pattern was detected. There is a probability of logical error presence. Check lines: 32, 34.
apps/opencs/model/world/refidadapterimp.cpp  1376  err  V547 Expression 'subColIndex < 3' is always true.

apps/openmw/mwgui/widgets.hpp  318  warn  V703 It is odd that the 'mEnableRepeat' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:318, MyGUI_ScrollBar.h:179.
apps/openmw/mwgui/widgets.hpp  319  warn  V703 It is odd that the 'mRepeatTriggerTime' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:319, MyGUI_ScrollBar.h:180.
apps/openmw/mwgui/widgets.hpp  320  warn  V703 It is odd that the 'mRepeatStepTime' field in derived class 'MWScrollBar' overwrites field in base class 'ScrollBar'. Check lines: widgets.hpp:320, MyGUI_ScrollBar.h:181
apps/openmw/mwmechanics/actors.cpp  1425  warn  V547 Expression '!detected' is always true.
apps/openmw/mwmechanics/character.cpp  2155  err  V547 Expression 'mode == 0' is always true.
apps/openmw/mwmechanics/character.cpp  1192  warn  V592 The expression was enclosed by parentheses twice: ((expression)). One pair of parentheses is unnecessary or misprint is present.
apps/openmw/mwmechanics/character.cpp  521  warn  V560 A part of conditional expression is always true: (idle == mIdleState).
apps/openmw/mwmechanics/pathfinding.cpp  317  err  V547 Expression 'mPath.size() >= 2' is always true.
apps/openmw/mwscript/interpretercontext.cpp  409  warn  V560 A part of conditional expression is always false: rank > 9.
apps/openmw/mwgui/windowbase.cpp  28  warn  V560 A part of conditional expression is always true: !visible.
apps/openmw/mwgui/journalwindow.cpp  561  warn  V547 Expression '!mAllQuests' is always false.
apps/openmw/mwgui/referenceinterface.cpp  18  warn  V571 Recurring check. The '!mPtr.isEmpty()' condition was already verified in line 16.
apps/openmw/mwworld/scene.cpp  463  warn  V547 Expression 'adjustPlayerPos' is always true.
apps/openmw/mwworld/worldimp.cpp  409  err  V766 An item with the same key '"sCompanionShare"' has already been added.
apps/openmw/mwworld/cellstore.cpp  691  warn  V519 The 'state.mWaterLevel' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 689, 691.
apps/openmw/mwworld/weather.cpp  1125  warn  V519 The 'mResult.mParticleEffect' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1123, 1125.
apps/openmw/mwworld/weather.cpp  1137  warn  V519 The 'mResult.mParticleEffect' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1135, 1137.

apps/wizard/unshield/unshieldworker.cpp  475  warn  V728 An excessive check can be simplified. The '(A && B) || (!A && !B)' expression is equivalent to the 'bool(A) == bool(B)' expression.
apps/wizard/installationpage.cpp  163  warn  V735 Possibly an incorrect HTML. The "</p" closing tag was encountered, while the "</span" tag was expected.

components/fontloader/fontloader.cpp  427  err  V547 Expression 'i == 1' is always true.
components/nifosg/nifloader.cpp  282  warn  V519 The 'created' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 278, 282.
components/esm/loadregn.cpp  119  err  V586 The 'clear' function is called twice for deallocation of the same resource. Check lines: 112, 119.
components/esm/cellref.cpp  178  warn  V581 The conditional expressions of the 'if' statements situated alongside each other are identical. Check lines: 175, 178.
components/esmterrain/storage.cpp  235  warn  V560 A part of conditional expression is always true: colStart == 0.
components/esmterrain/storage.cpp  237  warn  V560 A part of conditional expression is always true: rowStart == 0.
2018-04-18 12:36:10 +00:00
David Cernat
17678ee60f
Merge pull request #407 from OpenMW/master
Add OpenMW commits up to 17 Apr 2018
2018-04-17 15:25:28 +03:00
Andrei Kortunov
174b3d2249 Reset an inventory filter after reload or a new game start (bug #4392) 2018-04-13 09:19:49 +04:00
David Cernat
fa652964fd
Merge pull request #403 from OpenMW/master
Add OpenMW commits up to 9 Apr 2018
2018-04-10 06:43:24 +03:00
scrawl
35300c04cd
Merge pull request #1671 2018-04-09 20:23:35 +00:00
Capostrophic
cddc0914c8 Option to charge for all companions travelling (fixes #4064) 2018-04-09 19:19:50 +03:00
David Cernat
d8b48f6cf4 [Client] Remove redundant container methods from CellController 2018-04-01 07:11:43 +03:00
David Cernat
ac82124a5d Merge pull request #395 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/actors.cpp
2018-03-29 07:28:30 +03:00
David Cernat
5f6ddcfc59 [General] Rework container sync to prevent item duping
A main priority in TES3MP development is to avoid making major changes to OpenMW code, so as to avoid merge conflicts in the future. Whenever avoiding potential conflicts seems especially difficult for the proper implementation of a particular multiplayer feature, that multiplayer feature is often put off until later or partially implemented with the intent of being revisited in the future.

Container sync is the perfect example. Previously, the OpenMW code for container actions was kept exactly as it was, with clients unilaterally accepting their own container changes as per singleplayer-specific code, with only the addition that clients sent container packets every time they made a change in a container, packets which were then forwarded unquestioningly by the server to other players. This meant that two players clicking on the same item in a container at the same time both managed to take it, thus duplicating the item.

Immediately after the packets were already forwarded, server scripts were able to check for incorrect changes, such as the removal of more items than should have existed in a container, but they had to send their own packets that attempted to fix what had already been accepted on the initial client and then forwarded to all clients, which was quite onerous in some scenarios, such as when a player on a slow connection immediately dropped items in the world after taking them from a container (which is why the default TES3MP serverside scripts made no attempt at sending corrective packets at all, preferring to expect the matter to be solved in a later C++ implementation).

This commit fixes item duping in containers by preventing container actions from initially running on clients and by ending the automatic forwarding of container packets by the server. Instead, clients now send container packets that act as requests for container actions, and serverside scripts have to forward these requests themselves. In other words, without a matching Container event in the server's Lua scripts, players are completely unable to affect containers for themselves or for others.

To forward a received Container packet, the following line must be used in a Container event in the Lua scripts:

tes3mp.SendContainer(true, true)

When an invalid action count is used in a container request, the serverside scripts can amend it using the following new function:

tes3mp.SetReceivedContainerItemActionCount(objectIndex, itemIndex, actionCount)

Thus, the serverside scripts are able to allow only container actions that are correct based on their own recorded contents for that container.

The OpenMW code allowing unilateral container actions in mwgui/container.cpp is now prevented from executing. When a player's container request is returned to them, code in mwmp/WorldEvent.cpp simulates those container actions instead.
2018-03-26 19:27:36 +03:00
David Cernat
bb15ee9215 [Client] Make it possible to get ContainerWindow from elsewhere in code 2018-03-24 09:00:15 +02:00
scrawl
edb57306b6
Merge pull request #1628 2018-03-16 23:25:29 +00:00
elsid
a26483ab26 Fix memory leak
There is no delete for TextFormat objects in PageDisplay destructor.
2018-03-13 21:32:59 +03:00
Andrei Kortunov
e0aa5e8e79 Prevent overlapping for journal and books scrolling 2018-03-11 16:19:37 +04:00
David Cernat
b7c6261e16 Merge pull request #392 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
2018-03-09 21:07:46 +02:00
scrawl
e81faf5f2f
Add an option to disable GUI keyboard navigation (Bug #4333) 2018-03-08 23:39:35 +00:00
scrawl
870c658500
Remove missing souls, remove some runaway exceptions (Fixes #4111) 2018-03-08 23:38:04 +00:00
scrawl
bf78c18296
Merge pull request #1624 2018-03-07 18:12:32 +00:00
Capostrophic
3b922d810a Don't use floating point arithmetics for formatted count (Bug #4346) 2018-03-07 15:36:10 +03:00
Capostrophic
60a663ef58 Account for all possible count values in getCountString (Bug #4346) 2018-03-06 16:50:38 +03:00
David Cernat
c18d07827d [Client] Hide difficulty widget because it has no use in multiplayer 2018-03-01 09:31:21 +02:00
David Cernat
9e10eb9c84
Merge pull request #389 from OpenMW/master
Add OpenMW commits up to 24 Feb 2018
2018-02-25 22:05:32 +02:00
David Cernat
03266d7648 [Client] Prevent guards from arresting players who are currently jailed 2018-02-25 21:33:04 +02:00